diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-04-04 00:33:24 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-04-04 00:33:24 +0200 |
commit | 9099ac39cf4a7e853730d819c8c1ec1932ba81aa (patch) | |
tree | 0b9835c3ee4a0cab6f4032b82c0880dc53bad7d4 /doc/translations | |
parent | bd016c8c4d51febb6b4da52a22ff7357ac400daa (diff) |
i18n: Sync translations with Weblate
Diffstat (limited to 'doc/translations')
-rw-r--r-- | doc/translations/es.po | 178 | ||||
-rw-r--r-- | doc/translations/fr.po | 956 | ||||
-rw-r--r-- | doc/translations/zh_CN.po | 31621 |
3 files changed, 30593 insertions, 2162 deletions
diff --git a/doc/translations/es.po b/doc/translations/es.po index faa87d0327..b85284ee31 100644 --- a/doc/translations/es.po +++ b/doc/translations/es.po @@ -47,12 +47,13 @@ # Dariem Lázaro García López <dariemgl@gmail.com>, 2023. # Adrian Migueles <adrianmigueles14@gmail.com>, 2023. # Joinner Medina <devjoi2018@gmail.com>, 2023. +# Denis Anfruns <daanfruns@gmail.com>, 2023. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2023-03-12 20:08+0000\n" -"Last-Translator: Joinner Medina <devjoi2018@gmail.com>\n" +"PO-Revision-Date: 2023-03-26 03:46+0000\n" +"Last-Translator: Denis Anfruns <daanfruns@gmail.com>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/es/>\n" "Language: es\n" @@ -60,7 +61,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.16.2-dev\n" +"X-Generator: Weblate 4.17-dev\n" msgid "Description" msgstr "Descripción" @@ -180,27 +181,6 @@ msgid "GDScript exports" msgstr "Exportaciones de Scripts GD" msgid "" -"Returns a [Color] constructed from red ([param r8]), green ([param g8]), " -"blue ([param b8]), and optionally alpha ([param a8]) integer channels, each " -"divided by [code]255.0[/code] for their final value.\n" -"[codeblock]\n" -"var red = Color8(255, 0, 0) # Same as Color(1, 0, 0).\n" -"var dark_blue = Color8(0, 0, 51) # Same as Color(0, 0, 0.2).\n" -"var my_color = Color8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, 0.4).\n" -"[/codeblock]" -msgstr "" -"Devuelve un [Color] construido a partir de rojo ([param r8]), verde ([param " -"g8]), azul ([param b8]) y opcionalmente alfa ([param a8]), cada uno dividido " -"por [code]255.0[/code] para obtener su valor final.\n" -"[codeblock]\n" -"var red = Color8(255, 0, 0) # Igual que Color(1, " -"0, 0)\n" -"var dark_blue = Color8(0, 0, 51) # Igual que Color(0, 0, " -"0.2).\n" -"var my_color = Color8(306, 255, 0, 102) # Igual que Color(1.2, 1, 0, 0.4).\n" -"[/codeblock]" - -msgid "" "Asserts that the [param condition] is [code]true[/code]. If the [param " "condition] is [code]false[/code], an error is generated. When running from " "the editor, the running project will also be paused until you resume it. " @@ -296,6 +276,56 @@ msgstr "" "instancia de objeto. Puede ser útil para deserializar datos." msgid "" +"Returns an array of dictionaries representing the current call stack. See " +"also [method print_stack].\n" +"[codeblock]\n" +"func _ready():\n" +" foo()\n" +"\n" +"func foo():\n" +" bar()\n" +"\n" +"func bar():\n" +" print(get_stack())\n" +"[/codeblock]\n" +"Starting from [code]_ready()[/code], [code]bar()[/code] would print:\n" +"[codeblock]\n" +"[{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, " +"source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]\n" +"[/codeblock]\n" +"[b]Note:[/b] This function only works if the running instance is connected " +"to a debugging server (i.e. an editor instance). [method get_stack] will not " +"work in projects exported in release mode, or in projects exported in debug " +"mode if not connected to a debugging server.\n" +"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing " +"so will return an empty array." +msgstr "" +"Devuelve un array de diccionarios que representan la pila de llamadas " +"actual. Véase también [method print_stack].\n" +"[codeblock]\n" +"func _ready():\n" +" foo()\n" +"\n" +"func foo():\n" +" bar()\n" +"\n" +"func bar():\n" +" print(get_stack())\n" +"[/codeblock]\n" +"Empezando desde [code]_ready()[/code],[code]bar()[/code] esto imprimirá:\n" +"[codeblock]\n" +"[{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, " +"source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]\n" +"[/codeblock]\n" +"[b]Nota:[/b] Esta función sólo funciona si la instancia en ejecución está " +"conectada a un servidor de depuración (i.e. una instancia de editor). " +"[method get_stack] no funcionará en proyectos exportados en modo release, o " +"en proyectos exportados en modo depuración si no se está conectado a un " +"servidor de depuración.\n" +"[b]Nota:[/b] La llamada a esta función desde un [Thread] no está soportada. " +"Si lo hace, devolverá un array vacío." + +msgid "" "Returns an array with the given range. [method range] can be called in three " "ways:\n" "[code]range(n: int)[/code]: Starts from 0, increases by steps of 1, and " @@ -4815,19 +4845,6 @@ msgstr "" "Las capas de renderización en las que este [CanvasItem] responde a los nodos " "[Light2D]." -msgid "The material applied to textures on this [CanvasItem]." -msgstr "El material aplicado a las texturas en este [CanvasItem]." - -msgid "The color applied to textures on this [CanvasItem]." -msgstr "El color aplicado a las texturas en este [CanvasItem]." - -msgid "" -"The color applied to textures on this [CanvasItem]. This is not inherited by " -"children [CanvasItem]s." -msgstr "" -"El color aplicado a las texturas en este [CanvasItem]. Esto no es heredado " -"por los hijos de [CanvasItem]." - msgid "If [code]true[/code], the object draws behind its parent." msgstr "Si [code]true[/code], el objeto se dibuja detrás de su padre." @@ -5296,9 +5313,6 @@ msgstr "Establece la [Transform2D] del propietario de la forma dada." msgid "Base node for collision objects." msgstr "Nodo base para objetos de colisión." -msgid "Defines a 2D collision polygon." -msgstr "Define un polígono de colisión en 2D." - msgid "Collision build mode. Use one of the [enum BuildMode] constants." msgstr "" "Modo de construcción de colisión. Use una de las constantes de [enum " @@ -5316,37 +5330,9 @@ msgstr "" "altos harán la forma más gruesa, y funcionará mejor para los colisionadores " "que entran en el polígono a alta velocidad." -msgid "Collisions will include the polygon and its contained area." -msgstr "Las colisiones incluirán el polígono y su área de contención." - -msgid "Collisions will only include the polygon edges." -msgstr "Las colisiones sólo incluirán los bordes del polígono." - -msgid "" -"Length that the resulting collision extends in either direction " -"perpendicular to its polygon." -msgstr "" -"Longitud que la colisión resultante se extiende en cualquier dirección " -"perpendicular a su polígono." - msgid "If [code]true[/code], no collision will be produced." msgstr "Si [code]true[/code], no se producirá ninguna colisión." -msgid "" -"Array of vertices which define the polygon.\n" -"[b]Note:[/b] The returned value is a copy of the original. Methods which " -"mutate the size or properties of the return value will not impact the " -"original polygon. To change properties of the polygon, assign it to a " -"temporary variable and make changes before reassigning the [code]polygon[/" -"code] member." -msgstr "" -"Conjunto de vértices que definen el polígono.\n" -"[b]Nota:[/b] El valor devuelto es una copia del original. Los métodos que " -"mutan el tamaño o las propiedades del valor de retorno no afectarán al " -"polígono original. Para cambiar las propiedades del polígono, asígnalo a una " -"variable temporal y haz los cambios antes de reasignar el miembro " -"[code]polygon[/code]." - msgid "Node that represents collision shape data in 2D space." msgstr "" "Nodo que representa los datos de la forma de colisión en el espacio 2D." @@ -5940,17 +5926,11 @@ msgstr "[StyleBox] que se utiliza cuando se pulsa el [ColorPickerButton]." msgid "Colored rectangle." msgstr "Rectángulo coloreado." -msgid "" -"The array of points that make up the [ConcavePolygonShape2D]'s line segments." -msgstr "" -"El array de puntos que forman los segmentos de línea de un " -"[ConcavePolygonShape2D]." - -msgid "Returns the faces (an array of triangles)." -msgstr "Devuelve las caras (un array de triángulos)." +msgid "Returns the value of the specified parameter." +msgstr "Devuelve el valor del parámetro especificado." -msgid "Sets the faces (an array of triangles)." -msgstr "Establece las caras (un array de triángulos)." +msgid "Sets the value of the specified parameter." +msgstr "Establece el valor del parámetro especificado." msgid "" "The speed with which the swing or twist will take place.\n" @@ -9738,15 +9718,9 @@ msgstr "" msgid "Returns the value of the specified flag." msgstr "Devuelve el valor de la flag especificada." -msgid "Returns the value of the specified parameter." -msgstr "Devuelve el valor del parámetro especificado." - msgid "If [code]true[/code], enables the specified flag." msgstr "Si [code]true[/code], activa la flag especificada." -msgid "Sets the value of the specified parameter." -msgstr "Establece el valor del parámetro especificado." - msgid "" "The speed with which the rotation across the axis perpendicular to the hinge " "gets corrected." @@ -11788,16 +11762,6 @@ msgstr "" msgid "Placeholder for the root [Node] of a [PackedScene]." msgstr "Marcador de posición para la raíz [Node] de una [PackedScene]." -msgid "Integer built-in type." -msgstr "Tipo entero interno." - -msgid "" -"Cast a [bool] value to an integer value, [code]int(true)[/code] will be " -"equals to 1 and [code]int(false)[/code] will be equals to 0." -msgstr "" -"Transforma un valor [bool] a un valor entero, [code]int(true)[/code] será " -"igual a 1 y [code]int(false)[/code] será igual a 0." - msgid "Internet protocol (IP) support functions such as DNS resolution." msgstr "" "Funciones de soporte del protocolo de Internet (IP) como la resolución del " @@ -15321,27 +15285,6 @@ msgid "Sets which physics layers the area will monitor." msgstr "Establece qué capas de la física monitoreará el área." msgid "" -"Sets the function to call when any body/area enters or exits the area. This " -"callback will be called for any object interacting with the area, and takes " -"five parameters:\n" -"1: [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED], depending on " -"whether the object entered or exited the area.\n" -"2: [RID] of the object that entered/exited the area.\n" -"3: Instance ID of the object that entered/exited the area.\n" -"4: The shape index of the object that entered/exited the area.\n" -"5: The shape index of the area where the object entered/exited." -msgstr "" -"Establece la función de llamar cuando cualquier cuerpo/área entra o sale del " -"área. Esta llamada será llamada para cualquier objeto que interactúe con el " -"área, y toma cinco parámetros:\n" -"1: [constant AREA_BODY_ADDED] o [constant AREA_BODY_REMOVED], dependiendo de " -"si el objeto entró o salió del área.\n" -"2: [RID] del objeto que entró/salió del área.\n" -"3: ID del objeto que entró/salió del área.\n" -"4: El índice de forma del objeto que entró/salió del área.\n" -"5: El índice de forma del área donde el objeto entró/salió del área." - -msgid "" "Sets the value for an area parameter. A list of available parameters is on " "the [enum AreaParameter] constants." msgstr "" @@ -21580,11 +21523,6 @@ msgstr "" "acepte cualquier nueva conexión pendiente (por ejemplo, cuando todos tus " "jugadores se han conectado)." -msgid "Helper to manage undo/redo operations in the editor or custom tools." -msgstr "" -"Ayudante para gestionar las operaciones de deshacer/rehacer en el editor o " -"las herramientas personalizadas." - msgid "" "Gets the version. Every time a new action is committed, the [UndoRedo]'s " "version number is increased automatically.\n" diff --git a/doc/translations/fr.po b/doc/translations/fr.po index 4404b5feeb..5c764f41a4 100644 --- a/doc/translations/fr.po +++ b/doc/translations/fr.po @@ -36,7 +36,7 @@ # Toquey SiGauses <meiyo40@gmail.com>, 2021. # GABRIELLE Damien <damiengabrielle@gmail.com>, 2021. # Julien Vanelian <julienvanelian@hotmail.com>, 2021. -# Perrier Mathis <mathis.perrier73@gmail.com>, 2021, 2022. +# Perrier Mathis <mathis.perrier73@gmail.com>, 2021, 2022, 2023. # Blackiris <divjvc@free.fr>, 2021, 2022. # AndyNekena <andy.nekena@gmail.com>, 2021. # Legorel <Legorel412@gmail.com>, 2021, 2022. @@ -66,13 +66,15 @@ # Dricom Dragon <dev@jovian-hersemeule.eu>, 2023. # t8y <contact@t3y.eu>, 2023. # GuruWP <guruwp@protonmail.com>, 2023. +# Paul Cordellier <cordellierp@gmail.com>, 2023. +# Alexis Robin <arobin9999@gmail.com>, 2023. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2023-03-08 00:26+0000\n" -"Last-Translator: GuruWP <guruwp@protonmail.com>\n" +"PO-Revision-Date: 2023-04-03 15:09+0000\n" +"Last-Translator: Paul Cordellier <cordellierp@gmail.com>\n" "Language-Team: French <https://hosted.weblate.org/projects/godot-engine/" "godot-class-reference/fr/>\n" "Language: fr\n" @@ -80,7 +82,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.16.2-dev\n" +"X-Generator: Weblate 4.17-dev\n" msgid "Description" msgstr "Description" @@ -201,27 +203,6 @@ msgid "GDScript exports" msgstr "Exports GDScript" msgid "" -"Returns a [Color] constructed from red ([param r8]), green ([param g8]), " -"blue ([param b8]), and optionally alpha ([param a8]) integer channels, each " -"divided by [code]255.0[/code] for their final value.\n" -"[codeblock]\n" -"var red = Color8(255, 0, 0) # Same as Color(1, 0, 0).\n" -"var dark_blue = Color8(0, 0, 51) # Same as Color(0, 0, 0.2).\n" -"var my_color = Color8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, 0.4).\n" -"[/codeblock]" -msgstr "" -"Retourne une [Color] construite à partir des niveaux de rouge ([param r8]), " -"de vert ([param g8]), de bleu ([param b8]) et éventuellement de transparence " -"(ou alpha : [param a8]). Chaque niveau est représenté par un entier qui sera " -"divisé par [code]255.0[/code] pour obtenir la valeur de l'attribut associé.\n" -"[codeblock]\n" -"var red = Color8(255, 0, 0) # Meme effet que Color(1, 0, 0).\n" -"var dark_blue = Color8(0, 0, 51) # Meme effet que Color(0, 0, 0.2).\n" -"var my_color = Color8(306, 255, 0, 102) # Meme effet que Color(1.2, 1, 0, " -"0.4).\n" -"[/codeblock]" - -msgid "" "Asserts that the [param condition] is [code]true[/code]. If the [param " "condition] is [code]false[/code], an error is generated. When running from " "the editor, the running project will also be paused until you resume it. " @@ -291,6 +272,37 @@ msgstr "" "[/codeblock]" msgid "" +"Converts [param what] to [param type] in the best way possible. The [param " +"type] uses the [enum Variant.Type] values.\n" +"[codeblock]\n" +"var a = [4, 2.5, 1.2]\n" +"print(a is Array) # Prints true\n" +"\n" +"var b = convert(a, TYPE_PACKED_BYTE_ARRAY)\n" +"print(b) # Prints [4, 2, 1]\n" +"print(b is Array) # Prints false\n" +"[/codeblock]" +msgstr "" +"Convertit [param what] en [param type] de la meilleure façon possible. Le " +"[param type] utilise les valeurs de [enum Variant.Type].\n" +"[codeblock]\n" +"var a = [4, 2.5, 1.2]\n" +"print(a is Array) # Affiche true\n" +"\n" +"var b = convert(a, TYPE_PACKED_BYTE_ARRAY)\n" +"print(b) # Affiche [4, 2, 1]\n" +"print(b is Array) # Affiche false\n" +"[/codeblock]" + +msgid "" +"Converts a [param dictionary] (created with [method inst_to_dict]) back to " +"an Object instance. Can be useful for deserializing." +msgstr "" +"Convertit un [param dictionary] (créé précédemment avec [method " +"inst_to_dict]) à nouveau en une instance d'Objet. Utile pour la dé-" +"sérialisation." + +msgid "" "Returns an array of dictionaries representing the current call stack. See " "also [method print_stack].\n" "[codeblock]\n" @@ -378,6 +390,336 @@ msgstr "" "[/codeblock]" msgid "" +"Returns [code]true[/code] if [param value] is an instance of [param type]. " +"The [param type] value must be one of the following:\n" +"- A constant from the [enum Variant.Type] enumeration, for example [constant " +"TYPE_INT].\n" +"- An [Object]-derived class which exists in [ClassDB], for example [Node].\n" +"- A [Script] (you can use any class, including inner one).\n" +"Unlike the right operand of the [code]is[/code] operator, [param type] can " +"be a non-constant value. The [code]is[/code] operator supports more features " +"(such as typed arrays) and is more performant. Use the operator instead of " +"this method if you do not need dynamic type checking.\n" +"Examples:\n" +"[codeblock]\n" +"print(is_instance_of(a, TYPE_INT))\n" +"print(is_instance_of(a, Node))\n" +"print(is_instance_of(a, MyClass))\n" +"print(is_instance_of(a, MyClass.InnerClass))\n" +"[/codeblock]\n" +"[b]Note:[/b] If [param value] and/or [param type] are freed objects (see " +"[method @GlobalScope.is_instance_valid]), or [param type] is not one of the " +"above options, this method will raise an runtime error.\n" +"See also [method @GlobalScope.typeof], [method type_exists], [method Array." +"is_same_typed] (and other [Array] methods)." +msgstr "" +"Renvoie [code]true[/code] si [param value] est une instance de [param type]. " +"La valeur de [param type] doit être l'une des suivantes :\n" +"- Une constante de l'énumération [enum Variant.Type], par exemple [constant " +"TYPE_INT].\n" +"- Une classe dérivée de [Object] qui existe dans [ClassDB], par exemple " +"[Node].\n" +"- Un [Script] (vous pouvez utiliser n'importe quelle classe, y compris une " +"classe interne).\n" +"Contrairement à l'opérande droit de l'opérateur [code]is[/code], [param " +"type] peut être une valeur non constante. L'opérateur [code]is[/code] prend " +"en charge davantage de fonctionnalités (telles que les tableaux typés) et " +"est plus performant. Utilisez l'opérateur au lieu de cette méthode si vous " +"n'avez pas besoin d'une vérification dynamique des types.\n" +"Exemples :\n" +"[bloc de code]\n" +"print(is_instance_of(a, TYPE_INT))\n" +"print(is_instance_of(a, Node))\n" +"print(is_instance_of(a, MyClass))\n" +"print(is_instance_of(a, MyClass.InnerClass))\n" +"[/codeblock]\n" +"[b]Note :[/b] Si [param value] et/ou [param type] sont des objets libérés " +"(voir [method @GlobalScope.is_instance_valid]), ou si [param type] n'est pas " +"l'une des options ci-dessus, cette méthode lèvera une erreur d'exécution.\n" +"Voir aussi [method @GlobalScope.typeof], [method type_exists], [method Array." +"is_same_typed] (et autres méthodes [Array])." + +msgid "" +"Returns the length of the given Variant [param var]. The length can be the " +"character count of a [String], the element count of any array type or the " +"size of a [Dictionary]. For every other Variant type, a run-time error is " +"generated and execution is stopped.\n" +"[codeblock]\n" +"a = [1, 2, 3, 4]\n" +"len(a) # Returns 4\n" +"\n" +"b = \"Hello!\"\n" +"len(b) # Returns 6\n" +"[/codeblock]" +msgstr "" +"Renvoie la longueur du Variant [param var]. La longueur peut être le nombre " +"de caractères d'une [String], le nombre d'éléments de n'importe quel type de " +"tableau ou la taille de [Dictionary]. Pour tout autre type de Variant, une " +"erreur d’exécution est générée et l’exécution est interrompue.\n" +"[codeblock]\n" +"a = [1, 2, 3, 4]\n" +"len(a) # Renvoie 4\n" +"\n" +"B = \"Hello!\"\n" +"len(a) # Renvoie 6\n" +"[/codeblock]" + +msgid "" +"Returns a [Resource] from the filesystem located at the absolute [param " +"path]. Unless it's already referenced elsewhere (such as in another script " +"or in the scene), the resource is loaded from disk on function call, which " +"might cause a slight delay, especially when loading large scenes. To avoid " +"unnecessary delays when loading something multiple times, either store the " +"resource in a variable or use [method preload].\n" +"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource " +"in the FileSystem dock and choosing \"Copy Path\", or by dragging the file " +"from the FileSystem dock into the current script.\n" +"[codeblock]\n" +"# Load a scene called \"main\" located in the root of the project directory " +"and cache it in a variable.\n" +"var main = load(\"res://main.tscn\") # main will contain a PackedScene " +"resource.\n" +"[/codeblock]\n" +"[b]Important:[/b] The path must be absolute. A relative path will always " +"return [code]null[/code].\n" +"This function is a simplified version of [method ResourceLoader.load], which " +"can be used for more advanced scenarios.\n" +"[b]Note:[/b] Files have to be imported into the engine first to load them " +"using this function. If you want to load [Image]s at run-time, you may use " +"[method Image.load]. If you want to import audio files, you can use the " +"snippet described in [member AudioStreamMP3.data]." +msgstr "" +"Retourne une [Resource] depuis le système de fichiers localisé au chemin " +"absolu [param path]. Sauf si cela est déjà référencé autre part (comme dans " +"un autre script ou dans une scène), la ressource est chargée depuis le " +"disque sur un appel de fonction, qui peut causé un petit délai, en " +"particulier pendant le chargement de larges scènes. Pour éviter des délais " +"inutiles lorsque vous chargez quelque chose plusieurs fois, vous pouvez " +"stocker la ressource dans une variable ou utiliser [method preload].\n" +"[b]Note :[/b] Les chemins des ressources peuvent être obtenus en faisant un " +"clic droit sur une ressource dans la barre d'outils du système de fichiers " +"et en choisissant \"Copier le chemin\", ou en déplaçant le fichier du " +"système de fichiers vers le script actuel.\n" +"[codeblock]\n" +"# Charge une scène appelée \"main\" située dans la racine du répertoire du " +"projet et la stocke dans une variable.\n" +"var main = load(\"res://main.tscn\") # main contiendra une ressource " +"PackedScene.\n" +"[/codeblock]\n" +"[b]Important :[/b] Le chemin doit être absolu. Un chemin relatif retournera " +"toujours [code]null[/code].\n" +"Cette fonction est une version simplifiée de [method ResourceLoader.load], " +"qui peut être utilisée pour des scénarios plus avancés.\n" +"[b]Note :[/b] Les fichiers doivent être importés dans le moteur de jeu en " +"premier pour qu'ils soient chargés en utilisant cette fonction. Si vous " +"voulez importer des [Image]s au run-time vous pouvez utiliser [method Image." +"load]. Si vous voulez importer des fichiers audio, vous pouvez utiliser " +"l'extrait décrit dans [member AudioStreamMP3.data]." + +msgid "" +"Returns a [Resource] from the filesystem located at [param path]. During run-" +"time, the resource is loaded when the script is being parsed. This function " +"effectively acts as a reference to that resource. Note that this function " +"requires [param path] to be a constant [String]. If you want to load a " +"resource from a dynamic/variable path, use [method load].\n" +"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource " +"in the Assets Panel and choosing \"Copy Path\", or by dragging the file from " +"the FileSystem dock into the current script.\n" +"[codeblock]\n" +"# Create instance of a scene.\n" +"var diamond = preload(\"res://diamond.tscn\").instantiate()\n" +"[/codeblock]" +msgstr "" +"Retourne la [Resource] localisée à [param path] dans le système de fichiers. " +"Pendant le run-time, la ressource est chargée lors de la lecture initiale du " +"script. Cette fonction agit efficacement comme une référence à cette " +"ressource. Notez que cette méthode nécessite que [param path] soit un " +"[String] constant. Si vous voulez charger une ressource depuis un chemin " +"variable/dynamique, utilisez [method load].\n" +"[b]Note:[/b] Les chemins des ressources peuvent être obtenus en cliquant " +"avec le bouton droit sur la ressource dans la fenêtre des Assets puis en " +"choisissant \"Copier le chemin\", ou en faisant glisser le fichier depuis la " +"fenêtre \"Système de fichiers\" vers le script courant.\n" +"[codeblock]\n" +"# Instancie une scène.\n" +"var diamant = preload(\"res://diamant.tscn\").instantiate()\n" +"[/codeblock]" + +msgid "" +"Like [method @GlobalScope.print], but includes the current stack frame when " +"running with the debugger turned on.\n" +"The output in the console may look like the following:\n" +"[codeblock]\n" +"Test print\n" +"At: res://test.gd:15:_process()\n" +"[/codeblock]\n" +"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing " +"so will instead print the thread ID." +msgstr "" +"Comme [method @GlobalScope.print], mais inclus l'image de la pile actuelle " +"quand le débogueur est activé.\n" +"La sortie dans la console ressemblerait à ceci :\n" +"[codeblock]\n" +"Test print\n" +"At: res://test.gd:15:_process()\n" +"[/codeblock]\n" +"[b]Note : [/b] Appeler cette fonction depuis un [Thread] n'est pas supporté. " +"Le faire imprimerait alors l'ID du thread." + +msgid "" +"Prints a stack trace at the current code location. See also [method " +"get_stack].\n" +"The output in the console may look like the following:\n" +"[codeblock]\n" +"Frame 0 - res://test.gd:16 in function '_process'\n" +"[/codeblock]\n" +"[b]Note:[/b] This function only works if the running instance is connected " +"to a debugging server (i.e. an editor instance). [method print_stack] will " +"not work in projects exported in release mode, or in projects exported in " +"debug mode if not connected to a debugging server.\n" +"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing " +"so will instead print the thread ID." +msgstr "" +"Affiche une trace d'appels à l'endroit actuel du code. Voir également " +"[method get_stack].\n" +"Le résultat dans le terminal pourrait ressembler à ci-dessous :\n" +"[codeblock]\n" +"Frame 0 - res://test.gd:16 in function '_process'\n" +"[/codeblock]\n" +"[b]Note :[/b] Cette fonction fonctionne uniquement si l'instance en cours " +"d’exécution est connectée à un serveur de débogage (par ex. une instance " +"d'éditeur). [method print_stack] ne fonctionnera pas dans les projets " +"exportés en mode publication, ou dans des projets exportés en mode débogage " +"s'il n'est pas connecté à un serveur de débogage.\n" +"[b]Note :[/b] Appeler cette fonction depuis un [Thread] n'est pas supporté. " +"Le faire ainsi écrira à la place l'ID du fil d'exécution." + +msgid "" +"Returns an array with the given range. [method range] can be called in three " +"ways:\n" +"[code]range(n: int)[/code]: Starts from 0, increases by steps of 1, and " +"stops [i]before[/i] [code]n[/code]. The argument [code]n[/code] is " +"[b]exclusive[/b].\n" +"[code]range(b: int, n: int)[/code]: Starts from [code]b[/code], increases by " +"steps of 1, and stops [i]before[/i] [code]n[/code]. The arguments [code]b[/" +"code] and [code]n[/code] are [b]inclusive[/b] and [b]exclusive[/b], " +"respectively.\n" +"[code]range(b: int, n: int, s: int)[/code]: Starts from [code]b[/code], " +"increases/decreases by steps of [code]s[/code], and stops [i]before[/i] " +"[code]n[/code]. The arguments [code]b[/code] and [code]n[/code] are " +"[b]inclusive[/b] and [b]exclusive[/b], respectively. The argument [code]s[/" +"code] [b]can[/b] be negative, but not [code]0[/code]. If [code]s[/code] is " +"[code]0[/code], an error message is printed.\n" +"[method range] converts all arguments to [int] before processing.\n" +"[b]Note:[/b] Returns an empty array if no value meets the value constraint " +"(e.g. [code]range(2, 5, -1)[/code] or [code]range(5, 5, 1)[/code]).\n" +"Examples:\n" +"[codeblock]\n" +"print(range(4)) # Prints [0, 1, 2, 3]\n" +"print(range(2, 5)) # Prints [2, 3, 4]\n" +"print(range(0, 6, 2)) # Prints [0, 2, 4]\n" +"print(range(4, 1, -1)) # Prints [4, 3, 2]\n" +"[/codeblock]\n" +"To iterate over an [Array] backwards, use:\n" +"[codeblock]\n" +"var array = [3, 6, 9]\n" +"for i in range(array.size(), 0, -1):\n" +" print(array[i - 1])\n" +"[/codeblock]\n" +"Output:\n" +"[codeblock]\n" +"9\n" +"6\n" +"3\n" +"[/codeblock]\n" +"To iterate over [float], convert them in the loop.\n" +"[codeblock]\n" +"for i in range (3, 0, -1):\n" +" print(i / 10.0)\n" +"[/codeblock]\n" +"Output:\n" +"[codeblock]\n" +"0.3\n" +"0.2\n" +"0.1\n" +"[/codeblock]" +msgstr "" +"Retourne un tableau avec l'intervalle donnée. [method range] peut être " +"appelé de trois façons :\n" +"[code]range(n: int)[/code] : Commence à 0, augmente par étape de 1, et " +"s'arrête [i]avant[/i] [code]n[/code]. L'argument [code]n[/code] est " +"[b]exclusif[/b].\n" +"[code]range(b: int, n: int)[/code]: Commence à [code]b[/code], augmente par " +"étape de 1, et s'arrête [i]avant[/i] [code]n[/code]. L'argument [code]b[/" +"code] est [b]inclusif[/b], et [code]n[/code] est [b]exclusif[/b], " +"respectivement.\n" +"[code]range(b: int, n: int, s: int)[/code] : Commence à [code]b[/code], " +"augmente/diminue par étape de [code]s[/code], et s'arrête [i]avant[/i] " +"[code]n[/code]. Les arguments [code]b[/code] et [code]n[/code] sont " +"[b]inclusifs[/b], et [code]n[/code] est [b]exclusif[/b]. L'argument [code]s[/" +"code] [b]peut[/b] être négatif, mais pas [code]0[/code]. Si [code]s[/code] " +"est [code]0[/code], un message d'erreur est affiché.\n" +"[method range] convertit tous les arguments en [int] avant le traitement.\n" +"[b]Note :[/b] Retourne un tableau vide si aucune valeur ne respecte les " +"contraintes (par ex. [code]range(2, 5, -1)[/code] ou [code]range(5, 5, 1)[/" +"code]).\n" +"Exemples :\n" +"[codeblock]\n" +"print(range(4)) # Affiche [0, 1, 2, 3]\n" +"print(range(2, 5)) # Affiche [2, 3, 4]\n" +"print(range(0, 6, 2)) # Affiche [0, 2, 4]\n" +"print(range(4, 1, -1)) # Affiche [4, 3, 2]\n" +"[/codeblock]\n" +"Pour parcourir un [Array] à l'envers, utilisez :\n" +"[codeblock]\n" +"var array = [3, 6, 9]\n" +"for i in range(array.size(), 0, -1):\n" +" print(array[i - 1])\n" +"[/codeblock]\n" +"En sortie :\n" +"[codeblock]\n" +"9\n" +"6\n" +"3\n" +"[/codeblock]\n" +"Pour itérer sur un [float], convertissez les dans la boucle.\n" +"[codeblock]\n" +"for i in range (3, 0, -1):\n" +" print(i / 10.0)\n" +"[/codeblock]\n" +"En sortie :\n" +"[codeblock]\n" +"0.3\n" +"0.2\n" +"0.1\n" +"[/codeblock]" + +msgid "" +"Returns [code]true[/code] if the given [Object]-derived class exists in " +"[ClassDB]. Note that [Variant] data types are not registered in [ClassDB].\n" +"[codeblock]\n" +"type_exists(\"Sprite2D\") # Returns true\n" +"type_exists(\"NonExistentClass\") # Returns false\n" +"[/codeblock]" +msgstr "" +"Renvoie [code]true[/code] si la classe dérivée [Object] donnée existe dans " +"[ClassDB]. Notez que les types de données [Variant] ne sont pas enregistrés " +"dans [ClassDB].\n" +"[codeblock]\n" +"type_exists(\"Sprite2D\") # Retourne true\n" +"type_exists(\"NonExistentClass\") # Retourne false\n" +"[/codeblock]" + +msgid "" +"Constant that represents how many times the diameter of a circle fits around " +"its perimeter. This is equivalent to [code]TAU / 2[/code], or 180 degrees in " +"rotations." +msgstr "" +"Constante qui représente le nombre de fois que le diamètre d'un cercle " +"correspond à son périmètre. Elle équivaut à [code]TAU / 2[/code], soit 180 " +"degrés de rotation." + +msgid "" "The circle constant, the circumference of the unit circle in radians. This " "is equivalent to [code]PI * 2[/code], or 360 degrees in rotations." msgstr "" @@ -385,6 +727,205 @@ msgstr "" "radians. C'est l'équivalent de [code]PI * 2[/code] ou de 360 degrés en " "rotation." +msgid "" +"\"Not a Number\", an invalid floating-point value. [constant NAN] has " +"special properties, including that it is not equal to itself ([code]NAN == " +"NAN[/code] returns [code]false[/code]). It is output by some invalid " +"operations, such as dividing floating-point [code]0.0[/code] by [code]0.0[/" +"code].\n" +"[b]Warning:[/b] \"Not a Number\" is only a concept with floating-point " +"numbers, and has no equivalent for integers. Dividing an integer [code]0[/" +"code] by [code]0[/code] will not result in [constant NAN] and will result in " +"a run-time error instead." +msgstr "" +"\"Not a Number\" (n'est pas un nombre), un nombre flottant (nombre à " +"virgule) invalide. [constant NAN] a des propriétés particulières, notamment " +"le fait qu'elle n'est pas égale à elle-même ([code]NAN == NAN[/code] " +"retourne [code]false[/code]). Elle est produite par certaines opérations " +"invalides, comme la division d'un flottant [code]0.0[/code] par [code]0.0[/" +"code].\n" +"[b]Attention:[/b] \"Not a Number\" est seulement un concept spécifique aux " +"flottants. (et aux problèmes de précision de ces nombres), et n'a pas " +"d'équivalent pour les nombres entiers. La division d'un entier [code]0[/" +"code] par [code]0[/code] ne résultera pas en [constant NAN] mais entraînera " +"directement une erreur d'exécution." + +msgid "" +"Define a new category for the following exported properties. This helps to " +"organize properties in the Inspector dock.\n" +"See also [constant PROPERTY_USAGE_CATEGORY].\n" +"[codeblock]\n" +"@export_category(\"Statistics\")\n" +"@export var hp = 30\n" +"@export var speed = 1.25\n" +"[/codeblock]\n" +"[b]Note:[/b] Categories in the Inspector dock's list usually divide " +"properties coming from different classes (Node, Node2D, Sprite, etc.). For " +"better clarity, it's recommended to use [annotation @export_group] and " +"[annotation @export_subgroup], instead." +msgstr "" +"Définir une nouvelle catégorie pour les propriétés exportées suivantes. Cela " +"permet d'organiser les propriétés dans l'Inspector Dock.\n" +"Voir aussi [constante PROPERTY_USAGE_CATEGORY].\n" +"[codeblock]\n" +"@export_category(\"Statistics\")\n" +"@export var hp = 30\n" +"@export var speed = 1.25\n" +"[/codeblock]\n" +"[b]Note:[/b] Les catégories dans la liste de l'Inspector Dock divisent " +"généralement les propriétés provenant de différentes classes (Node, Node2D, " +"Sprite, etc.). Pour plus de clarté, il est recommandé d'utiliser plutôt " +"[annotation @export_group] et [annotation @export_subgroup]." + +msgid "" +"Export a [Color] property without allowing its transparency ([member Color." +"a]) to be edited.\n" +"See also [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n" +"[codeblock]\n" +"@export_color_no_alpha var dye_color: Color\n" +"[/codeblock]" +msgstr "" +"Exporter une propriété [Color] sans permettre l'édition de sa transparence " +"([membre Color.a]).\n" +"Voir aussi [constante PROPERTY_HINT_COLOR_NO_ALPHA].\n" +"[codeblock]\n" +"@export_color_no_alpha var dye_color: Color\n" +"[/codeblock]" + +msgid "" +"Export a [String] property as a path to a directory. The path will be " +"limited to the project folder and its subfolders. See [annotation " +"@export_global_dir] to allow picking from the entire filesystem.\n" +"See also [constant PROPERTY_HINT_DIR].\n" +"[codeblock]\n" +"@export_dir var sprite_folder_path: String\n" +"[/codeblock]" +msgstr "" +"Exporte une propriété [String] en tant que chemin d'accès à un répertoire. " +"Le chemin sera limité au dossier du projet et à ses sous-dossiers. Voir " +"[annotation @export_global_dir] pour permettre de choisir dans l'ensemble du " +"système de fichiers.\n" +"Voir aussi [constante PROPERTY_HINT_DIR].\n" +"[codeblock]\n" +"@export_dir var sprite_folder_path: String\n" +"[/codeblock]" + +msgid "" +"Export a floating-point property with an easing editor widget. Additional " +"hints can be provided to adjust the behavior of the widget. " +"[code]\"attenuation\"[/code] flips the curve, which makes it more intuitive " +"for editing attenuation properties. [code]\"positive_only\"[/code] limits " +"values to only be greater than or equal to zero.\n" +"See also [constant PROPERTY_HINT_EXP_EASING].\n" +"[codeblock]\n" +"@export_exp_easing var transition_speed\n" +"@export_exp_easing(\"attenuation\") var fading_attenuation\n" +"@export_exp_easing(\"positive_only\") var effect_power\n" +"[/codeblock]" +msgstr "" +"Exporte une propriété nombre à virgule avec un widget d'éditeur de courbe. " +"Des aides additionnelles peuvent être ajoutées pour ajuster le comportement " +"de ce widget. [code]\"attenuation\"[/code] retourne la courbe, ce qui la " +"rend plus intuitive pour éditer des propriétés d'atténuation. " +"[code]\"positive_only\"[/code] oblige les valeurs à être supérieures ou " +"égales à zéro.\n" +"Voir aussi [constant PROPERTY_HINT_EXP_EASING].\n" +"[codeblock]\n" +"@export_exp_easing var transition_speed\n" +"@export_exp_easing(\"attenuation\") var fading_attenuation\n" +"@export_exp_easing(\"positive_only\") var effect_power\n" +"[/codeblock]" + +msgid "" +"Export an integer property as a bit flag field for 2D render layers. The " +"widget in the Inspector dock will use the layer names defined in [member " +"ProjectSettings.layer_names/2d_render/layer_1].\n" +"See also [constant PROPERTY_HINT_LAYERS_2D_RENDER].\n" +"[codeblock]\n" +"@export_flags_2d_render var render_layers: int\n" +"[/codeblock]" +msgstr "" +"Exporte une propriété entière en tant qu'un champ drapeau bit pour le " +"calques de rendu 2D. Le widget dans la barre d'outils de l'Inspecteur " +"utilisera les noms des calques définis dans [member ProjectSettings." +"layer_names/2d_render/layer_1].\n" +"Voir également [constant PROPERTY_HINT_LAYERS_2D_RENDER].\n" +"[codeblock]\n" +"@export_flags_2d_render var render_layers: int\n" +"[/codeblock]" + +msgid "" +"Export a [String] property with a large [TextEdit] widget instead of a " +"[LineEdit]. This adds support for multiline content and makes it easier to " +"edit large amount of text stored in the property.\n" +"See also [constant PROPERTY_HINT_MULTILINE_TEXT].\n" +"[codeblock]\n" +"@export_multiline var character_biography\n" +"[/codeblock]" +msgstr "" +"Exporte une propriété [String] avec un widget [TextEdit] large à la place " +"d'un [LineEdit]. Cela ajoute du support pour un contenu multi-ligne et rend " +"plus facile l'édition de beaucoup de texte stocké dans la propriété.\n" +"Voir également [constant PROPERTY_HINT_MULTILINE_TEXT].\n" +"[codeblock]\n" +"@export_multiline var character_biography\n" +"[/codeblock]" + +msgid "" +"Export a [NodePath] property with a filter for allowed node types.\n" +"See also [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n" +"[codeblock]\n" +"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n" +"[/codeblock]" +msgstr "" +"Exporte une propriété [NodePath] avec un filtre pour les types de nœud " +"autorisés.\n" +"Voir également [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n" +"[codeblock]\n" +"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n" +"[/codeblock]" + +msgid "" +"Export a [String] property with a placeholder text displayed in the editor " +"widget when no value is present.\n" +"See also [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n" +"[codeblock]\n" +"@export_placeholder(\"Name in lowercase\") var character_id: String\n" +"[/codeblock]" +msgstr "" +"Exporte une propriété [String] avec un emplacement réservé de texte affiché " +"dans le widget d'éditeur widget quand aucune valeur n'est présente.\n" +"Voir également [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n" +"[codeblock]\n" +"@export_placeholder(\"Nom en minuscule\") var id_personnage: String\n" +"[/codeblock]" + +msgid "" +"Mark the following statement to ignore the specified [param warning]. See " +"[url=$DOCS_URL/tutorials/scripting/gdscript/warning_system.html]GDScript " +"warning system[/url].\n" +"[codeblock]\n" +"func test():\n" +" print(\"hello\")\n" +" return\n" +" @warning_ignore(\"unreachable_code\")\n" +" print(\"unreachable\")\n" +"[/codeblock]" +msgstr "" +"Marquez l'instruction suivante pour ignorer le [param warning] spécifié. " +"Voir [url=$DOCS_URL/tutorials/scripting/gdscript/warning_system." +"html]GDScript warning system[/url].\n" +"[codeblock]\n" +"func test():\n" +" print(\"hello\")\n" +" return\n" +" @warning_ignore(\"unreachable_code\")\n" +" print(\"unreachable\")\n" +"[/codeblock]" + +msgid "Global scope constants and functions." +msgstr "Constantes et fonction à portée globale." + msgid "Random number generation" msgstr "Génération de nombres aléatoires" @@ -5168,19 +5709,6 @@ msgid "" msgstr "" "Les calques de rendu où le [CanvasItem] est affecté par les nœuds [Light2D]." -msgid "The material applied to textures on this [CanvasItem]." -msgstr "Le matériau appliqué aux textures de ce [CanvasItem]." - -msgid "The color applied to textures on this [CanvasItem]." -msgstr "La couleur appliquée aux textures de ce [CanvasItem]." - -msgid "" -"The color applied to textures on this [CanvasItem]. This is not inherited by " -"children [CanvasItem]s." -msgstr "" -"La couleur appliquée aux textures sur ce [CanvasItem]. Cela n'est pas hérité " -"pour les [CanvasItem] enfants." - msgid "If [code]true[/code], the object draws behind its parent." msgstr "Si [code]true[/code], l'objet est affiché derrière son parent." @@ -5742,9 +6270,6 @@ msgstr "" msgid "Base node for collision objects." msgstr "Nœud de base pour les objets de collision." -msgid "Defines a 2D collision polygon." -msgstr "Définit un polygone de collision 2D." - msgid "Collision build mode. Use one of the [enum BuildMode] constants." msgstr "" "Le mode d'assemblage. Utilisez l'une des constantes de [enum BuildMode]." @@ -5773,37 +6298,9 @@ msgstr "" "plus élevées rendront la forme plus épaisse, et fonctionneront mieux pour " "les objets entrant en collision quand ils vont à une vitesse élevée." -msgid "Collisions will include the polygon and its contained area." -msgstr "Les collisions comprendront ce polygone et sa zone englobante." - -msgid "Collisions will only include the polygon edges." -msgstr "Les collisions n'incluront que les bords du polygone." - -msgid "" -"Length that the resulting collision extends in either direction " -"perpendicular to its polygon." -msgstr "" -"La longueur que la collision résultante s'étend dans la direction " -"perpendiculaire à son polygone." - msgid "If [code]true[/code], no collision will be produced." msgstr "Si [code]true[/code], aucune collision ne sera produite." -msgid "" -"Array of vertices which define the polygon.\n" -"[b]Note:[/b] The returned value is a copy of the original. Methods which " -"mutate the size or properties of the return value will not impact the " -"original polygon. To change properties of the polygon, assign it to a " -"temporary variable and make changes before reassigning the [code]polygon[/" -"code] member." -msgstr "" -"Un tableau de sommets qui définissent le polygone.\n" -"[b]Note :[/b] La valeur retournée est une copie de l'original. Les méthodes " -"qui modifie la taille ou les propriétés de la valeur de retour n'affecteront " -"pas le polygone d'origine. Pour modifier les propriétés du polygone, " -"assignez-le à une variable temporaire et faites des changements avant de le " -"réassigner au membre [code]polygon[/code]." - msgid "Node that represents collision shape data in 2D space." msgstr "" "Le nœud qui représente les données de forme de collision dans l'espace 2D." @@ -5909,6 +6406,10 @@ msgstr "Couleur beige." msgid "Bisque color." msgstr "Couleur bisque." +msgid "Black color. In GDScript, this is the default value of any color." +msgstr "" +"Couleur noire. Dans GDScript, c'est la valeur par défaut de chaque couleur." + msgid "Blue color." msgstr "Couleur bleue." @@ -5918,6 +6419,9 @@ msgstr "Couleur bleu violet." msgid "Brown color." msgstr "Couleur marron." +msgid "Burlywood color." +msgstr "Couleur bois dur." + msgid "Cadet blue color." msgstr "Couleur bleu cadet." @@ -6484,21 +6988,15 @@ msgstr "" "Affiche un rectangle rempli de la couleur [member color]. Si vous devez " "seulement afficher la bordure, utilisez plutôt un [ReferenceRect]." -msgid "" -"The array of points that make up the [ConcavePolygonShape2D]'s line segments." -msgstr "" -"Le tableau des points qui composent les segments de ligne de " -"[ConcavePolygonShape2D]." - -msgid "Returns the faces (an array of triangles)." -msgstr "Retourne les faces (un tableau de triangles)." - -msgid "Sets the faces (an array of triangles)." -msgstr "Définit les faces (un tableau de triangles)." - msgid "A twist joint between two 3D PhysicsBodies." msgstr "Une articulation de torsion entre deux PhysicsBodies 3D." +msgid "Returns the value of the specified parameter." +msgstr "Retourne la valeur du paramètre donné." + +msgid "Sets the value of the specified parameter." +msgstr "Définit une valeur pour le paramètre spécifié." + msgid "" "The speed with which the swing or twist will take place.\n" "The higher, the faster." @@ -6799,6 +7297,32 @@ msgid "Sent when the node loses focus." msgstr "Envoyé lorsque le nœud perd le focus." msgid "" +"Sent when the node needs to refresh its theme items. This happens in one of " +"the following cases:\n" +"- The [member theme] property is changed on this node or any of its " +"ancestors.\n" +"- The [member theme_type_variation] property is changed on this node.\n" +"- One of the node's theme property overrides is changed.\n" +"- The node enters the scene tree.\n" +"[b]Note:[/b] As an optimization, this notification won't be sent from " +"changes that occur while this node is outside of the scene tree. Instead, " +"all of the theme item updates can be applied at once when the node enters " +"the scene tree." +msgstr "" +"Envoyé si le nœud a besoin de rafraîchir ses éléments de thème. Cela se " +"passe dans l'un des cas suivants :\n" +"- La propriété [member theme] est changée sur ce nœud ou sur un de ses " +"ancêtres.\n" +"- La propriété [member theme_type_variation] est changée sur ce nœud.\n" +"- Une des surcharges d'une propriété de thème est changée pour ce nœud.\n" +"- Le nœud entre la hiérarchie de la scène.\n" +"[b]Note :[/b] Pour plus d'optimisation, cette notification ne sera pas " +"envoyée pour les changements qui se passent pendant que ce nœud est en " +"dehors de la hiérarchie de la scène. À la place, toues les mises à jour " +"d'éléments de thème peuvent être appliqués dès que le nœud entre dans la " +"hiérarchie de la scène." + +msgid "" "Sent when this node is inside a [ScrollContainer] which has begun being " "scrolled." msgstr "" @@ -7125,17 +7649,6 @@ msgstr "" "membres [code]anchor_*[/code], comme [member anchor_left]. Pour modifier les " "4 ancres à la fois, utilisez [method set_anchors_preset]." -msgid "" -"The polygon's list of vertices. Can be in either clockwise or " -"counterclockwise order. Only set this property with convex hull points, use " -"[method set_point_cloud] to generate a convex hull shape from concave shape " -"points." -msgstr "" -"La liste des sommets du polygone. Peut être dans le sens horaire ou dans le " -"sens anti-horaire. Ne définissez cette propriété qu'avec des points d'une " -"forme convexe, et utilisez [method set_point_cloud] pour générer une forme " -"convexe à partir de points d'une forme concave." - msgid "The list of 3D points forming the convex polygon shape." msgstr "La liste des points 3D formant le polygone convexe." @@ -8910,8 +9423,29 @@ msgstr "" msgid "Removes a custom type added by [method add_custom_type]." msgstr "Supprime un type personnalisé ajouté par [method add_custom_type]." +msgid "Removes an import plugin registered by [method add_import_plugin]." +msgstr "Supprime un plugin importé inscrit par [method add_import_plugin]." + msgid "Removes an inspector plugin registered by [method add_import_plugin]" -msgstr "Supprime un type personnalisé ajouté par [method add_custom_type]" +msgstr "Supprime un plugin d'inspecteur inscrit par [method add_import_plugin]" + +msgid "Removes a gizmo plugin registered by [method add_node_3d_gizmo_plugin]." +msgstr "" +"Supprime un plugin manipulateur ajouté par [method add_node_3d_gizmo_plugin]." + +msgid "" +"Removes a resource conversion plugin registered by [method " +"add_resource_conversion_plugin]." +msgstr "" +"Supprime un plugin de conversion de ressource inscrit par [method " +"add_resource_conversion_plugin]." + +msgid "" +"Removes a scene format importer registered by [method " +"add_scene_format_importer_plugin]." +msgstr "" +"Supprime un importeur de format scène inscrit par [method " +"add_scene_format_importer_plugin]." msgid "" "Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/" @@ -9328,6 +9862,13 @@ msgstr "" "l'appel \"faire\" (et non pas l'appel \"annuler\" !)." msgid "" +"Emitted when the version of any history has changed as a result of undo or " +"redo call." +msgstr "" +"Émis quand la version de n'importe quel historique a changé à cause d'un " +"appel d'annulation ou de retour en arrière." + +msgid "" "Fetches new changes from the remote, but doesn't write changes to the " "current working directory. Equivalent to [code]git fetch[/code]." msgstr "" @@ -10539,15 +11080,9 @@ msgstr "Une articulation de torsion entre deux corps 3D." msgid "Returns the value of the specified flag." msgstr "Retourne la valeur de l'option donnée." -msgid "Returns the value of the specified parameter." -msgstr "Retourne la valeur du paramètre donné." - msgid "If [code]true[/code], enables the specified flag." msgstr "Si [code]true[/code], active le drapeau spécifié." -msgid "Sets the value of the specified parameter." -msgstr "Définit une valeur pour le paramètre spécifié." - msgid "" "The minimum rotation. Only active if [member angular_limit/enable] is " "[code]true[/code]." @@ -11736,16 +12271,6 @@ msgstr "" msgid "Placeholder for the root [Node] of a [PackedScene]." msgstr "Le nœud fictif pour le [Node] racine de la [PackedScene]." -msgid "Integer built-in type." -msgstr "Type intégré d'entier." - -msgid "" -"Cast a [bool] value to an integer value, [code]int(true)[/code] will be " -"equals to 1 and [code]int(false)[/code] will be equals to 0." -msgstr "" -"Transformer un [bool] en une valeur entière, [code]int(true)[/code] donnera " -"1 et [code]int(false)[/code] donnera 0." - msgid "Internet protocol (IP) support functions such as DNS resolution." msgstr "" "Le protocole internet (IP) supporte des fonctionnalités comme la résolution " @@ -12008,6 +12533,13 @@ msgstr "Le nœud attaché à la première extrémité (A) du joint." msgid "The node attached to the second side (B) of the joint." msgstr "Le nœud attaché à la seconde extrémité (B) du joint." +msgid "" +"Attempts to parse the [param json_string] provided and returns the parsed " +"data. Returns [code]null[/code] if parse failed." +msgstr "" +"Essaie de parser le [param json_string] fourni et retourne les données " +"parsées. Retourne [code]null[/code] si l'analyse du string a échouée." + msgid "Limits the lines of text the node shows on screen." msgstr "Limite le nombre de lignes de texte que le nœud affiche à l'écran." @@ -14944,7 +15476,7 @@ msgstr "" "Active ou désactive l'envoi de paquets de diffusion (par exemple " "[code]set_dest_address(\"255.255.255.255\", 4343)[/code]. Cette option est " "désactivée par défaut.\n" -"[b]Note :[/b] Certains appareils Android peuvent nécessiter la permission " +"[b]Note :[/b] Certains appareils Android peuvent nécessiter la permission " "[code]CHANGE_WIFI_MULTICAST_STATE[/code] et cette option pour être activée " "pour recevoir aussi des paquets de diffusion." @@ -14960,6 +15492,75 @@ msgstr "" "d'envoyer des paquets à une adresse de diffusion (par exemple " "[code]255.255.255[/code])." +msgid "" +"Waits for a packet to arrive on the bound address. See [method bind].\n" +"[b]Note:[/b] [method wait] can't be interrupted once it has been called. " +"This can be worked around by allowing the other party to send a specific " +"\"death pill\" packet like this:\n" +"[codeblocks]\n" +"[gdscript]\n" +"socket = PacketPeerUDP.new()\n" +"# Server\n" +"socket.set_dest_address(\"127.0.0.1\", 789)\n" +"socket.put_packet(\"Time to stop\".to_ascii())\n" +"\n" +"# Client\n" +"while socket.wait() == OK:\n" +" var data = socket.get_packet().get_string_from_ascii()\n" +" if data == \"Time to stop\":\n" +" return\n" +"[/gdscript]\n" +"[csharp]\n" +"var socket = new PacketPeerUDP();\n" +"// Server\n" +"socket.SetDestAddress(\"127.0.0.1\", 789);\n" +"socket.PutPacket(\"Time to stop\".ToAscii());\n" +"\n" +"// Client\n" +"while (socket.Wait() == OK)\n" +"{\n" +" string data = socket.GetPacket().GetStringFromASCII();\n" +" if (data == \"Time to stop\")\n" +" {\n" +" return;\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Attend qu'un paquet arrive sur l'adresse attachée. Voir [method bind].\n" +"[b]Note :[/b] [method wait] ne peut pas être interrompu une fois appelé. " +"Nous pouvons contourner cela en autorisant l'autre partie à envoyer un " +"paquet \"death pill\" comme cela :\n" +"[codeblock]\n" +"# Serveur\n" +"socket.set_dest_address(\"127.0.0.1\", 789)\n" +"socket.put_packet(\"Time to stop\".to_ascii())\n" +"\n" +"# Client\n" +"while socket.wait() == OK:\n" +" var data = socket.get_packet().get_string_from_ascii()\n" +" if data == \"Time to stop\":\n" +" return\n" +"[/gdscript]\n" +"[csharp]\n" +"var socket = new PacketPeerUDP();\n" +"// Serveur\n" +"socket.SetDestAddress(\"127.0.0.1\", 789);\n" +"socket.PutPacket(\"Time to stop\".ToAscii());\n" +"\n" +"// Client\n" +"while (socket.Wait() == OK)\n" +"{\n" +" string data = socket.GetPacket().GetStringFromASCII();\n" +" if (data == \"Time to stop\")\n" +" {\n" +" return;\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Provides an opaque background for [Control] children." msgstr "Fournis un arrière-plan opaque pour le [Control] enfant." @@ -14993,6 +15594,21 @@ msgstr "" msgid "The style of [PanelContainer]'s background." msgstr "Le style de l'arrière-plan de [PanelContainer]." +msgid "A [Material] used with [Sky] to draw a background texture." +msgstr "" +"Un [Material] utilisé avec [Sky] utilisé pour dessiner une texture d'arrière-" +"plan." + +msgid "" +"A boolean value to determine if the background texture should be filtered or " +"not." +msgstr "" +"Une valeur booléenne pour déterminer si la texture de l'arrière-plan doit " +"être filtrée ou pas." + +msgid "[Texture2D] to be applied to the [PanoramaSkyMaterial]." +msgstr "La [Texture2D] à appliquer au [PanoramaSkyMaterial]." + msgid "The base position offset for all [ParallaxLayer] children." msgstr "" "Le décalage de la position de base pour tous les enfants du [ParallaxLayer]." @@ -17812,13 +18428,6 @@ msgstr "" "Marque l'objet donné pour être supprimé, l'appel [method Object.free] se " "fera après la trame actuelle." -msgid "" -"If [code]true[/code], the application automatically accepts quitting.\n" -"For mobile platforms, see [member quit_on_go_back]." -msgstr "" -"Si [code]true[/code], l'application accepte automatiquement de se fermer.\n" -"Pour les plateformes mobiles, voir [method set_quit_on_go_back]." - msgid "The current scene." msgstr "La scène actuelle." @@ -18990,6 +19599,52 @@ msgstr "" "définie et que vous ne l'avez pas fournie pour le premier sommet, cette " "information peut ne jamais être utilisée." +msgid "Used to indicate a disabled custom channel." +msgstr "Utilisé pour indiquer un canal personnalisé désactivé." + +msgid "Each individual vertex can be influenced by up to 8 bone weights." +msgstr "" +"Chaque somment individuel peut être influencé uniquement par 8 poids d'os." + +msgid "Virtual method which can be overridden to clear any local caches." +msgstr "" +"Méthode virtuelle qui peut être surchargée pour nettoyer certains caches " +"locaux." + +msgid "" +"Virtual method which can be overridden to return syntax highlighting data.\n" +"See [method get_line_syntax_highlighting] for more details." +msgstr "" +"Méthode virtuelle qui peut être surchargée pour retourner des données de " +"syntaxe.\n" +"Voir [method get_line_syntax_highlighting] pour plus de détails." + +msgid "Virtual method which can be overridden to update any local caches." +msgstr "" +"Méthode virtuelle qui peut être surchargée pour mettre à jour les caches " +"locaux." + +msgid "Returns the associated [TextEdit] node." +msgstr "Retourne le nœud associé [TextEdit]." + +msgid "If set to [code]true[/code], italic or oblique font is preferred." +msgstr "" +"Si définit à [code]true[/code], les polices en italique ou oblique sont " +"préférées." + +msgid "" +"Array of font family names to search, first matching font found is used." +msgstr "" +"Tableau de noms de familles de polices à chercher, la première police " +"correspondante est utilisée." + +msgid "" +"Preferred font stretch amount, compared to a normal width. A percentage " +"value between [code]50%[/code] and [code]200%[/code]." +msgstr "" +"Valeur préférée de l'étirement de la police, comparée une largeur normale. " +"Une valeur de pourcentage entre [code]50%[/code] et [code]200%[/code]." + msgid "" "Simple tabs control, similar to [TabContainer] but is only in charge of " "drawing tabs, not interacting with children." @@ -19001,6 +19656,9 @@ msgstr "" msgid "Adds a new tab." msgstr "Ajoute un nouvel onglet." +msgid "Clears all tabs." +msgstr "Efface tous les onglets." + msgid "Moves the scroll view to make the tab visible." msgstr "Déplace la vue de défilement pour rendre l'onglet visible." @@ -19015,12 +19673,64 @@ msgstr "" msgid "Returns the previously active tab index." msgstr "Retourne l'index de l'onglet précédemment actif." +msgid "" +"Returns the [Texture2D] for the right button of the tab at index [param " +"tab_idx] or [code]null[/code] if the button has no [Texture2D]." +msgstr "" +"Retourne la [Texture2D] pour le bouton droit de l'onglet à l'index [param " +"tab_idx] ou [code]null[/code] si le bouton n'a pas de [Texture2D]." + +msgid "" +"Returns the [Texture2D] for the tab at index [param tab_idx] or [code]null[/" +"code] if the tab has no [Texture2D]." +msgstr "" +"Retourne la [Texture2D] pour l'onglet à l'index [param tab_idx] ou " +"[code]null[/code] si l'onglet n'a pas de [Texture2D]." + +msgid "" +"Returns the index of the tab at local coordinates [param point]. Returns " +"[code]-1[/code] if the point is outside the control boundaries or if there's " +"no tab at the queried position." +msgstr "" +"Retourne l'index de l'onglet aux coordonnées locales [param point]. Retourne " +"[code]-1[/code] si le point est en dehors des limites de contrôle ou s'il " +"n'y a pas d'onglet à la position demandée." + msgid "Returns the number of hidden tabs offsetted to the left." msgstr "Retourne le nombre d'onglets cachés décalés vers la gauche." msgid "Returns tab [Rect2] with local position and size." msgstr "Retourne l'onglet [Rect2] avec la position et la taille locales." +msgid "" +"Returns [code]true[/code] if the tab at index [param tab_idx] is hidden." +msgstr "" +"Retourne [code]true[/code] si l'onglet à l'index [param tab_idx] est masqué." + +msgid "Moves a tab from [param from] to [param to]." +msgstr "Déplace un onglet de [param from] à [param to]." + +msgid "Removes the tab at index [param tab_idx]." +msgstr "Retire l'onglet à l'index [param tab_idx]." + +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 " +"clickable (See [signal tab_button_pressed]). Giving it a [code]null[/code] " +"value will hide the button." +msgstr "" +"Définit un [param icon] pour le bouton de l'onglet à l'index [param tab_idx] " +"(qui se trouve à droite, avant de bouton de fermeture), le rendant visible " +"et cliquable (voir [signal tab_button_pressed]). Lui donner une valeur " +"[code]null[/code] cachera le bouton." + +msgid "" +"If [param disabled] is [code]true[/code], disables the tab at index [param " +"tab_idx], making it non-interactable." +msgstr "" +"Si [param disabled] est [code]true[/code], désactive l'onglet à l'index " +"[param tab_idx], le rendant non-interactif." + msgid "Select tab at index [code]tab_idx[/code]." msgstr "Sélectionne l'onglet à l'index [code]tab_idx[/code]." @@ -20246,11 +20956,6 @@ msgstr "" "connexions [PacketPeerUDP] acceptées avec [method take_connection] (les " "pairs distantes ne seront pas notifiés)." -msgid "Helper to manage undo/redo operations in the editor or custom tools." -msgstr "" -"Un aide pour gérer les opérations d'annulation/refaire dans l'éditeur ou les " -"outils personnalisés." - msgid "" "Gets the version. Every time a new action is committed, the [UndoRedo]'s " "version number is increased automatically.\n" @@ -20614,13 +21319,6 @@ msgstr "" "Retourne un nouveau vecteur avec tous les composants arrondis à la valeur " "inférieur (vers -infini)." -msgid "" -"Returns [code]true[/code] if the vector is normalized, [code]false[/code] " -"otherwise." -msgstr "" -"Retourne [code]true[/code] si le vecteur est normalisé, et [code]false[/" -"code] sinon." - msgid "Returns the length (magnitude) of this vector." msgstr "Retourne la longueur (magnitude) de ce vecteur." diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po index 4ffb3f53cc..5633338520 100644 --- a/doc/translations/zh_CN.po +++ b/doc/translations/zh_CN.po @@ -24,7 +24,7 @@ # zzh <zzh12581@icloud.com>, 2021. # longhjues <longhjues@gmail.com>, 2021. # 800Coins <jj4156@163.com>, 2021. -# qjyqjyqjyqjy <qjyqjyqjyqjy@sina.com.cn>, 2021. +# qjyqjyqjyqjy <qjyqjyqjyqjy@sina.com.cn>, 2021, 2023. # mzzhao <13030224963@163.com>, 2021. # Baiyuan Qiu <1061688677@qq.com>, 2021. # CZM <605557370@qq.com>, 2021. @@ -71,11 +71,14 @@ # ZHANG JIANFEI <3468144728@qq.com>, 2023. # tjw123hh <tjw123hh@outlook.com>, 2023. # miaoqvmiao <miaoqvmiaomqm@outlook.com>, 2023. +# Wisdom Salee <whoruifinethanku@gmail.com>, 2023. +# mengyu <1093697597@qq.com>, 2023. +# long li <2361520824@qq.com>, 2023. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2023-03-14 11:31+0000\n" +"PO-Revision-Date: 2023-04-03 18:21+0000\n" "Last-Translator: 风青山 <idleman@yeah.net>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/" "godot-engine/godot-class-reference/zh_Hans/>\n" @@ -84,7 +87,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Weblate 4.16.2-dev\n" +"X-Generator: Weblate 4.17-dev\n" msgid "Description" msgstr "描述" @@ -144,13 +147,13 @@ msgid "Default" msgstr "默认" msgid "Setter" -msgstr "Setter" +msgstr "设值函数" msgid "value" msgstr "值" msgid "Getter" -msgstr "Getter" +msgstr "取值函数" msgid "" "This method should typically be overridden by the user to have any effect." @@ -193,25 +196,6 @@ msgid "GDScript exports" msgstr "GDScript的导出" msgid "" -"Returns a [Color] constructed from red ([param r8]), green ([param g8]), " -"blue ([param b8]), and optionally alpha ([param a8]) integer channels, each " -"divided by [code]255.0[/code] for their final value.\n" -"[codeblock]\n" -"var red = Color8(255, 0, 0) # Same as Color(1, 0, 0).\n" -"var dark_blue = Color8(0, 0, 51) # Same as Color(0, 0, 0.2).\n" -"var my_color = Color8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, 0.4).\n" -"[/codeblock]" -msgstr "" -"返回一个由整数红([param r8])、绿([param g8])、蓝([param b8])和可选的 " -"Alpha([param a8])通道构造的 [Color],每个通道的最终值都会除以 [code]255.0[/" -"code]。\n" -"[codeblock]\n" -"var red = Color8(255, 0, 0) # 与 Color(1, 0, 0) 相同\n" -"var dark_blue = Color8(0, 0, 51) # 与 Color(0, 0, 0.2) 相同。\n" -"var my_color = Color8(306, 255, 0, 102) # 与 Color(1.2, 1, 0, 0.4) 相同。\n" -"[/codeblock]" - -msgid "" "Asserts that the [param condition] is [code]true[/code]. If the [param " "condition] is [code]false[/code], an error is generated. When running from " "the editor, the running project will also be paused until you resume it. " @@ -722,6 +706,26 @@ msgstr "" "行时错误。" msgid "" +"Mark the following property as exported (editable in the Inspector dock and " +"saved to disk). To control the type of the exported property, use the type " +"hint notation.\n" +"[codeblock]\n" +"@export var string = \"\"\n" +"@export var int_number = 5\n" +"@export var float_number: float = 5\n" +"@export var image: Image\n" +"[/codeblock]" +msgstr "" +"将以下属性标记为导出的(可在检查器窗口中进行编辑并保存到磁盘)。使用类型提示" +"控制导出属性的类型。\n" +"[codeblock]\n" +"@export var string = \"\"\n" +"@export var int_number = 5\n" +"@export var float_number: float = 5\n" +"@export var image : Image\n" +"[/codeblock]" + +msgid "" "Define a new category for the following exported properties. This helps to " "organize properties in the Inspector dock.\n" "See also [constant PROPERTY_USAGE_CATEGORY].\n" @@ -747,6 +751,20 @@ msgstr "" "[annotation @export_subgroup]。" msgid "" +"Export a [Color] property without allowing its transparency ([member Color." +"a]) to be edited.\n" +"See also [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n" +"[codeblock]\n" +"@export_color_no_alpha var dye_color: Color\n" +"[/codeblock]" +msgstr "" +"导出一个 [Color] 属性,不允许编辑其透明度 ([member Color.a])。\n" +"另请参阅 [constant PROPERTY_HINT_COLOR_NO_ALPHA] 。\n" +"[codeblock]\n" +"@export_color_no_alpha var dye_color: Color\n" +"[/codeblock]" + +msgid "" "Export a [String] property as a path to a directory. The path will be " "limited to the project folder and its subfolders. See [annotation " "@export_global_dir] to allow picking from the entire filesystem.\n" @@ -912,7 +930,7 @@ msgid "" "@export_flags_2d_navigation var navigation_layers: int\n" "[/codeblock]" msgstr "" -"将整数属性导出为 2D 导航层的位标志字段。检查器停靠栏中的小部件,将使用在 " +"将整数属性导出为 2D 导航层的位标志字段。检查器停靠面板中的小部件,将使用在 " "[member ProjectSettings.layer_names/2d_navigation/layer_1] 中定义的层名称。\n" "另请参见 [constant PROPERTY_HINT_LAYERS_2D_NAVIGATION]。\n" "[codeblock]\n" @@ -944,7 +962,7 @@ msgid "" "@export_flags_2d_render var render_layers: int\n" "[/codeblock]" msgstr "" -"将整数属性导出为 2D 渲染层的位标志字段。检查器停靠栏中的小工具将使用在 " +"将整数属性导出为 2D 渲染层的位标志字段。检查器停靠面板中的小工具将使用在 " "[member ProjectSettings.layer_names/2d_render/layer_1] 中定义的层名称。\n" "另请参见 [constant PROPERTY_HINT_LAYERS_2D_RENDER]。\n" "[codeblock]\n" @@ -1037,54 +1055,6 @@ msgstr "" "[/codeblock]" msgid "" -"Define a new group for the following exported properties. This helps to " -"organize properties in the Inspector dock. Groups can be added with an " -"optional [param prefix], which would make group to only consider properties " -"that have this prefix. The grouping will break on the first property that " -"doesn't have a prefix. The prefix is also removed from the property's name " -"in the Inspector dock.\n" -"If no [param prefix] is provided, the every following property is added to " -"the group. The group ends when then next group or category is defined. You " -"can also force end a group by using this annotation with empty strings for " -"parameters, [code]@export_group(\"\", \"\")[/code].\n" -"Groups cannot be nested, use [annotation @export_subgroup] to add subgroups " -"within groups.\n" -"See also [constant PROPERTY_USAGE_GROUP].\n" -"[codeblock]\n" -"@export_group(\"Racer Properties\")\n" -"@export var nickname = \"Nick\"\n" -"@export var age = 26\n" -"\n" -"@export_group(\"Car Properties\", \"car_\")\n" -"@export var car_label = \"Speedy\"\n" -"@export var car_number = 3\n" -"\n" -"@export_group(\"\", \"\")\n" -"@export var ungrouped_number = 3\n" -"[/codeblock]" -msgstr "" -"为以下导出的属性定义一个新分组。这有助于在检查器面板中组织属性。添加新分组时" -"可以选择性地提供 [param prefix] ,分组将仅考虑具有此前缀的属性。分组将在第一" -"个没有该前缀的属性处结束。前缀也将从检查器面板中的属性名称中移除。\n" -"如果未提供 [param prefix],以下每个属性都将添加到分组中。当定义下一个分组或类" -"别时,该分组结束。你还可以通过将此注解与空字符串的参数一起使用来强制结束组," -"[code]@export_group(\"\", \"\")[/code]。\n" -"分组不能嵌套,使用 [annotation @export_subgroup] 在组内添加子分组。\n" -"另见 [constant PROPERTY_USAGE_GROUP]。\n" -"[codeblock]\n" -"@export_group(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" -"\n" -"@export_group(\"Prefixed Properties\", \"prefix_\")\n" -"@export var prefix_number = 3\n" -"@export var prefix_string = \"\"\n" -"\n" -"@export_group(\"\", \"\")\n" -"@export var ungrouped_number = 3\n" -"[/codeblock]" - -msgid "" "Export a [String] property with a large [TextEdit] widget instead of a " "[LineEdit]. This adds support for multiline content and makes it easier to " "edit large amount of text stored in the property.\n" @@ -2250,29 +2220,6 @@ msgstr "" "PI + 5 * TAU, weight)[/code] 则会顺时针插值。" msgid "" -"Linearly interpolates between two values by the factor defined in [param " -"weight]. To perform interpolation, [param weight] should be between " -"[code]0.0[/code] and [code]1.0[/code] (inclusive). However, values outside " -"this range are allowed and can be used to perform [i]extrapolation[/i]. If " -"this is not desired, use [method clampf] on the result of this function.\n" -"[codeblock]\n" -"lerp(0, 4, 0.75) # Returns 3.0\n" -"[/codeblock]\n" -"See also [method inverse_lerp] which performs the reverse of this operation. " -"To perform eased interpolation with [method lerp], combine it with [method " -"ease] or [method smoothstep]." -msgstr "" -"通过 [param weight] 中定义的因子在两个值之间进行线性插值。要执行插值,[param " -"weight] 应介于 [code]0.0[/code] 和 [code]1.0[/code] 之间(包含)。但是,超出" -"此范围的值是允许的,并可用于执行 [i]外推 [/i]。如果不需要,请对此函数的结果使" -"用 [method clampf]。\n" -"[codeblock]\n" -"lerp(0, 4, 0.75) # 返回 3.0\n" -"[/codeblock]\n" -"另请参阅执行本操作的逆运算的 [method inverse_lerp]。要使用 [method lerp] 执行" -"缓动插值,请将其与 [method ease] 或 [method smoothstep] 结合使用。" - -msgid "" "Converts from linear energy to decibels (audio). This can be used to " "implement volume sliders that behave as expected (since volume isn't " "linear).\n" @@ -2299,26 +2246,6 @@ msgstr "" "[/codeblock]" msgid "" -"Returns the natural logarithm of [param x]. This is the amount of time " -"needed to reach a certain level of continuous growth.\n" -"[b]Note:[/b] This is not the same as the \"log\" function on most " -"calculators, which uses a base 10 logarithm.\n" -"[codeblock]\n" -"log(10) # Returns 2.302585\n" -"[/codeblock]\n" -"[b]Note:[/b] The logarithm of [code]0[/code] returns [code]-inf[/code], " -"while negative values return [code]-nan[/code]." -msgstr "" -"返回 [param x] 的自然对数。这是持续增长到一定程度所需的时间。\n" -"[b]注意:[/b]这个函数与大多数计算器上的对数“log”函数不同,他们适用的底数是 " -"10。\n" -"[codeblock]\n" -"log(10) # 返回 2.302585\n" -"[/codeblock]\n" -"[b]注意:[/b][code]0[/code] 的对数返回 [code]-inf[/code],负值返回 [code]-" -"nan[/code]。" - -msgid "" "Returns the maximum of the given numeric values. This function can take any " "number of arguments.\n" "[codeblock]\n" @@ -3101,40 +3028,6 @@ msgstr "" "[method Vector3i.sign]、[method Vector4.sign]、或 [method Vector4i.sign]。" msgid "" -"Returns [code]-1.0[/code] if [param x] is negative, [code]1.0[/code] if " -"[param x] is positive, and [code]0.0[/code] if [param x] is zero.\n" -"[codeblock]\n" -"sign(-6.5) # Returns -1.0\n" -"sign(0.0) # Returns 0.0\n" -"sign(6.5) # Returns 1.0\n" -"[/codeblock]" -msgstr "" -"如果 [param x] 为负,则返回 [code]-1.0[/code];如果 [param x] 为正,则返回 " -"[code]1.0[/code];如果 [param x] 为零,则返回 [code]0.0[/code]。\n" -"[codeblock]\n" -"sign(-6.5) # 返回 -1.0\n" -"sign(0.0) # 返回 0.0\n" -"sign(6.5) # 返回 1.0\n" -"[/codeblock]" - -msgid "" -"Returns [code]-1[/code] if [param x] is negative, [code]1[/code] if [param " -"x] is positive, and [code]0[/code] if if [param x] is zero.\n" -"[codeblock]\n" -"sign(-6) # Returns -1\n" -"sign(0) # Returns 0\n" -"sign(6) # Returns 1\n" -"[/codeblock]" -msgstr "" -"如果 [param x] 为负,则返回 [code]-1[/code];如果 [param x] 为正,则返回 " -"[code]1[/code];如果 [param x] 为零,则返回 [code]0[/code]。\n" -"[codeblock]\n" -"sign(-6) # 返回 -1\n" -"sign(0) # 返回 0\n" -"sign(6) # 返回 1\n" -"[/codeblock]" - -msgid "" "Returns the sine of angle [param angle_rad] in radians.\n" "[codeblock]\n" "sin(0.523599) # Returns 0.5\n" @@ -3241,39 +3134,6 @@ msgstr "" "[method Vector4i.snapped]。" msgid "" -"Returns the multiple of [param step] that is the closest to [param x]. This " -"can also be used to round a floating point number to an arbitrary number of " -"decimals.\n" -"A type-safe version of [method snapped], returning a [float].\n" -"[codeblock]\n" -"snapped(32.0, 2.5) # Returns 32.5\n" -"snapped(3.14159, 0.01) # Returns 3.14\n" -"[/codeblock]" -msgstr "" -"返回最接近 [param x] 的 [param step] 的倍数。也可用于将浮点数四舍五入为任意的" -"小数位数。\n" -"[method snapped] 的类型安全版本,返回一个 [float]。\n" -"[codeblock]\n" -"snapped(32.0, 2.5) # 返回 32.5\n" -"snapped(3.14159, 0.01) # 返回 3.14\n" -"[/codeblock]" - -msgid "" -"Returns the multiple of [param step] that is the closest to [param x].\n" -"A type-safe version of [method snapped], returning an [int].\n" -"[codeblock]\n" -"snapped(53, 16) # Returns 48\n" -"snapped(4096, 100) # Returns 4100\n" -"[/codeblock]" -msgstr "" -"返回最接近 [param x] 的 [param step] 的倍数。\n" -"[method snapped] 的类型安全版本,返回一个 [int]。\n" -"[codeblock]\n" -"snapped(53, 16) # 返回 48\n" -"snapped(4096, 100) # 返回 4100\n" -"[/codeblock]" - -msgid "" "Returns the square root of [param x], where [param x] is a non-negative " "number.\n" "[codeblock]\n" @@ -5557,9 +5417,7 @@ msgstr "高等向量数学" msgid "" "Constructs a default-initialized [AABB] with default (zero) values of " "[member position] and [member size]." -msgstr "" -"使用 [member position] 和 [member size] 的默认值(零)构造一个默认初始化的 " -"[AABB]。" +msgstr "默认构造 [AABB],[member position] 和 [member size] 均为默认值(零)。" msgid "Constructs an [AABB] as a copy of the given [AABB]." msgstr "构造给定 [AABB] 的副本。" @@ -5700,6 +5558,20 @@ msgid "Returns [code]true[/code] if the [AABB] is on both sides of a plane." msgstr "该 [AABB] 同时位于指定平面的两边时,返回 [code]true[/code]。" msgid "" +"Returns the point of intersection of the given ray with this [AABB] or " +"[code]null[/code] if there is no intersection. Ray length is infinite." +msgstr "" +"返回给定的射线与该 [AABB] 的交点,如果不相交则返回 [code]null[/code]。射线无" +"限长。" + +msgid "" +"Returns the point of intersection between [param from] and [param to] with " +"this [AABB] or [code]null[/code] if there is no intersection." +msgstr "" +"如果没有交点,则返回 [code]null[/code],否则返回 [param from] 和 [param to] " +"与此 [AABB] 的交点。" + +msgid "" "Returns [code]true[/code] if this [AABB] and [param aabb] are approximately " "equal, by calling [method @GlobalScope.is_equal_approx] on each component." msgstr "" @@ -5735,15 +5607,6 @@ msgstr "" "如果大小为负,可以用 [method abs] 修正。" msgid "" -"Returns [code]true[/code] if the vectors are not equal.\n" -"[b]Note:[/b] Due to floating-point precision errors, consider using [method " -"is_equal_approx] instead, which is more reliable." -msgstr "" -"如果向量不相等,则返回 [code]true[/code]。\n" -"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" -"靠。" - -msgid "" "Inversely transforms (multiplies) the [AABB] by the given [Transform3D] " "transformation matrix." msgstr "通过给定的 [Transform3D] 变换矩阵对该 [AABB] 进行逆变换(相乘)。" @@ -8478,7 +8341,7 @@ msgstr "" "[code]null[/code]。" msgid "Returns the list of stored library keys." -msgstr "返回存储的库的键的列表。" +msgstr "返回存储库的键名列表。" msgid "Returns the list of stored animation keys." msgstr "返回存储的动画键列表。" @@ -9858,6 +9721,96 @@ msgstr "" msgid "A generic array datatype." msgstr "通用数组数据类型。" +msgid "" +"A generic array that can contain several elements of any type, accessible by " +"a numerical index starting at 0. Negative indices can be used to count from " +"the back, like in Python (-1 is the last element, -2 is the second to last, " +"etc.).\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = [\"One\", 2, 3, \"Four\"]\n" +"print(array[0]) # One.\n" +"print(array[2]) # 3.\n" +"print(array[-1]) # Four.\n" +"array[2] = \"Three\"\n" +"print(array[-2]) # Three.\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array{\"One\", 2, 3, \"Four\"};\n" +"GD.Print(array[0]); // One.\n" +"GD.Print(array[2]); // 3.\n" +"GD.Print(array[array.Count - 1]); // Four.\n" +"array[2] = \"Three\";\n" +"GD.Print(array[array.Count - 2]); // Three.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Arrays can be concatenated using the [code]+[/code] operator:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array1 = [\"One\", 2]\n" +"var array2 = [3, \"Four\"]\n" +"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// Array concatenation is not possible with C# arrays, but is with Godot." +"Collections.Array.\n" +"var array1 = new Godot.Collections.Array{\"One\", 2};\n" +"var array2 = new Godot.Collections.Array{3, \"Four\"};\n" +"GD.Print(array1 + array2); // Prints [One, 2, 3, Four]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Concatenating with the [code]+=[/code] operator will create a " +"new array, which has a cost. If you want to append another array to an " +"existing array, [method append_array] is more efficient.\n" +"[b]Note:[/b] Arrays are always passed by reference. To get a copy of an " +"array that can be modified independently of the original array, use [method " +"duplicate].\n" +"[b]Note:[/b] Erasing elements while iterating over arrays is [b]not[/b] " +"supported and will result in unpredictable behavior." +msgstr "" +"通用数组,可以包含任意类型的多个元素,可以通过从 0 开始的数字索引进行访问。负" +"数索引可以用来从后面数起,就像在 Python 中一样(-1 是最后一个元素、-2 是倒数" +"第二,以此类推)。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = [\"One\", 2, 3, \"Four\"]\n" +"print(array[0]) # One。\n" +"print(array[2]) # 3。\n" +"print(array[-1]) # Four。\n" +"array[2] = \"Three\"\n" +"print(array[-2]) # Three。\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array{\"One\", 2, 3, \"Four\"};\n" +"GD.Print(array[0]); // One。\n" +"GD.Print(array[2]); // 3。\n" +"GD.Print(array[array.Count - 1]); // Four。\n" +"array[2] = \"Three\";\n" +"GD.Print(array[array.Count - 2]); // Three。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"可以使用 [code]+[/code] 运算符连接数组:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array1 = [\"One\", 2]\n" +"var array2 = [3, \"Four\"]\n" +"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// C# 数组无法进行数组串联,但 Godot.Collections.Array 可以。\n" +"var array1 = new Godot.Collections.Array{\"One\", 2};\n" +"var array2 = new Godot.Collections.Array{3, \"Four\"};\n" +"GD.Print(array1 + array2); // Prints [One, 2, 3, Four]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]用 [code]+=[/code] 操作符串联将创建一个新的数组,这是有代价的。" +"如果要将另一个数组追加到现有的数组中,[method append_array] 会更有效。\n" +"[b]注意:[/b]数组总是通过引用来传递。要获得一个可以独立于原始数组而被修改的数" +"组的副本,请使用 [method duplicate]。\n" +"[b]注意:[/b][b]不[/b]支持在遍历数组时擦除元素,这将导致不可预知的行为。" + msgid "Constructs an empty [Array]." msgstr "构造空的 [Array]。" @@ -10804,6 +10757,18 @@ msgstr "" "回 [code]false[/code]。" msgid "" +"Returns a reference to the element of type [Variant] at the specified " +"location. Arrays start at index 0. [param index] can be a zero or positive " +"value to start from the beginning, or a negative value to start from the " +"end. Out-of-bounds array access causes a run-time error, which will result " +"in an error being printed and the project execution pausing if run from the " +"editor." +msgstr "" +"该函数返回指定位置的 [Variant] 类型元素的引用。数组从索引0开始。 [param " +"index] 可以是一个从头开始的零或正值,也可以是一个从末尾开始的负值。访问越界的" +"数组会导致运行时错误,这将导致在编辑器中运行时打印错误并暂停项目执行。" + +msgid "" "[Mesh] type that provides utility for constructing a surface from arrays." msgstr "[Mesh] 网格类型,提供了用于从数组构造表面的工具。" @@ -11391,6 +11356,13 @@ msgstr "" "使距离更长,通过第 4 点也比通过第 2 点“更容易”。" msgid "" +"Returns the capacity of the structure backing the points, useful in " +"conjunction with [method reserve_space]." +msgstr "" +"该函数返回支持点的数据结构的容量,可以与 [method reserve_space] 方法一起使" +"用。" + +msgid "" "Returns an array with the IDs of the points that form the connection with " "the given point.\n" "[codeblocks]\n" @@ -11913,11 +11885,98 @@ msgstr "" "[PackedVector3Array],并打印一条错误消息。" msgid "" +"Reserves space internally for [param num_nodes] points. Useful if you're " +"adding a known large number of points at once, such as points on a grid. New " +"capacity must be greater or equals to old capacity." +msgstr "" +"该函数为 [param num_nodes] 个点内部预留空间。如果您一次添加了大量已知数量的" +"点,例如网格上的点,则此函数很有用。新的容量必须大于或等于旧的容量。" + +msgid "" "A* (or \"A-Star\") pathfinding tailored to find the shortest paths on 2D " "grids." msgstr "A*(或“A 星”)寻路,为寻找 2D 网格上的最短路径定制。" msgid "" +"Compared to [AStar2D] you don't need to manually create points or connect " +"them together. It also supports multiple type of heuristics and modes for " +"diagonal movement. This class also provides a jumping mode which is faster " +"to calculate than without it in the [AStar2D] class.\n" +"In contrast to [AStar2D], you only need set the [member size] of the grid, " +"optionally set the [member cell_size] and then call the [method update] " +"method:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar_grid = AStarGrid2D.new()\n" +"astar_grid.size = Vector2i(32, 32)\n" +"astar_grid.cell_size = Vector2(16, 16)\n" +"astar_grid.update()\n" +"print(astar_grid.get_id_path(Vector2i(0, 0), Vector2i(3, 4))) # prints (0, " +"0), (1, 1), (2, 2), (3, 3), (3, 4)\n" +"print(astar_grid.get_point_path(Vector2i(0, 0), Vector2i(3, 4))) # prints " +"(0, 0), (16, 16), (32, 32), (48, 48), (48, 64)\n" +"[/gdscript]\n" +"[csharp]\n" +"AStarGrid2D astarGrid = new AStarGrid2D();\n" +"astarGrid.Size = new Vector2I(32, 32);\n" +"astarGrid.CellSize = new Vector2I(16, 16);\n" +"astarGrid.Update();\n" +"GD.Print(astarGrid.GetIdPath(Vector2I.Zero, new Vector2I(3, 4))); // prints " +"(0, 0), (1, 1), (2, 2), (3, 3), (3, 4)\n" +"GD.Print(astarGrid.GetPointPath(Vector2I.Zero, new Vector2I(3, 4))); // " +"prints (0, 0), (16, 16), (32, 32), (48, 48), (48, 64)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"与 [AStar2D] 相比,您无需手动创建点或将它们连接在一起。它还支持多种类型的启发" +"式方法和对角线移动模式。该类还提供了跳跃模式,比 [AStar2D] 类中没有它计算更" +"快。\n" +"与 [AStar2D] 不同的是,您只需要设置网格的 [member size],可选择设置 [member " +"cell_size],然后调用 [method update] 方法即可:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar_grid = AStarGrid2D.new()\n" +"astar_grid.size = Vector2i(32, 32)\n" +"astar_grid.cell_size = Vector2(16, 16)\n" +"astar_grid.update()\n" +"print(astar_grid.get_id_path(Vector2i(0, 0), Vector2i(3, 4))) # prints (0, " +"0), (1, 1), (2, 2), (3, 3), (3, 4)\n" +"print(astar_grid.get_point_path(Vector2i(0, 0), Vector2i(3, 4))) # prints " +"(0, 0), (16, 16), (32, 32), (48, 48), (48, 64)\n" +"[/gdscript]\n" +"[csharp]\n" +"AStarGrid2D astarGrid = new AStarGrid2D();\n" +"astarGrid.Size = new Vector2I(32, 32);\n" +"astarGrid.CellSize = new Vector2I(16, 16);\n" +"astarGrid.Update();\n" +"GD.Print(astarGrid.GetIdPath(Vector2I.Zero, new Vector2I(3, 4))); // prints " +"(0, 0), (1, 1), (2, 2), (3, 3), (3, 4)\n" +"GD.Print(astarGrid.GetPointPath(Vector2I.Zero, new Vector2I(3, 4))); // " +"prints (0, 0), (16, 16), (32, 32), (48, 48), (48, 64)\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Called when computing the cost between two connected points.\n" +"Note that this function is hidden in the default [code]AStarGrid2D[/code] " +"class." +msgstr "" +"当计算两个连接点之间的代价时调用该函数。\n" +"请注意,该函数在默认的 [code]AStarGrid2D[/code] 类中是隐藏的。" + +msgid "" +"Called when estimating the cost between a point and the path's ending " +"point.\n" +"Note that this function is hidden in the default [code]AStarGrid2D[/code] " +"class." +msgstr "" +"当估算一个点和路径结束点之间的代价时,调用该函数。\n" +"请注意,该函数在默认的 [code]AStarGrid2D[/code] 类中是隐藏的。" + +msgid "Clears the grid and sets the [member size] to [constant Vector2i.ZERO]." +msgstr "清空网格并将 [member size] 设置为 [constant Vector2i.ZERO]。" + +msgid "" "Returns an array with the IDs of the points that form the path found by " "AStar2D between the given points. The array is ordered from the starting " "point to the ending point of the path." @@ -11926,6 +11985,18 @@ msgstr "" "路径的起点到终点排序。" 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]。" @@ -11970,9 +12041,179 @@ msgstr "" "路段的总成本时,[param weight_scale] 要乘以 [method _compute_cost] 的结果。\n" "[b]注意:[/b]调用该函数后不需要调用 [method update]。" +msgid "" +"Updates the internal state of the grid according to the parameters to " +"prepare it to search the path. Needs to be called if parameters like [member " +"size], [member cell_size] or [member offset] are changed. [method is_dirty] " +"will return [code]true[/code] if this is the case and this needs to be " +"called." +msgstr "" +"根据参数更新网格的内部状态,以准备搜索路径。如果更改了诸如 [member size]、" +"[member cell_size] 或 [member offset] 等参数,就需要调用它。如果是这种情况," +"[method is_dirty] 将返回 [code]true[/code],需要调用此方法。" + +msgid "" +"The size of the point cell which will be applied to calculate the resulting " +"point position returned by [method get_point_path]. If changed, [method " +"update] needs to be called before finding the next path." +msgstr "" +"要用于计算由 [method get_point_path] 返回的结果点位置的点单元的大小。如果更改" +"了这个值,在查找下一个路径之前需要调用 [method update]。" + +msgid "" +"The default [enum Heuristic] which will be used to calculate the cost " +"between two points if [method _compute_cost] was not overridden." +msgstr "" +"默认 [enum Heuristic],用于在没有覆盖 [method _compute_cost] 时计算两点之间的" +"消耗。" + +msgid "" +"The default [enum Heuristic] which will be used to calculate the cost " +"between the point and the end point if [method _estimate_cost] was not " +"overridden." +msgstr "" +"默认 [enum Heuristic],用于在没有覆盖 [method _estimate_cost] 时计算该点和终" +"点之间的消耗。" + +msgid "" +"A specific [enum DiagonalMode] mode which will force the path to avoid or " +"accept the specified diagonals." +msgstr "特定的 [enum DiagonalMode],会强制路径避免或接受特定的对角线。" + +msgid "" +"Enables or disables jumping to skip up the intermediate points and speeds up " +"the searching algorithm.\n" +"[b]Note:[/b] Currently, toggling it on disables the consideration of weight " +"scaling in pathfinding." +msgstr "" +"启用或禁用跳跃,以跳过中间点并加快搜索算法的速度。\n" +"[b]注意:[/b] 目前,打开它会在寻路过程中忽略权重缩放。" + +msgid "" +"The offset of the grid which will be applied to calculate the resulting " +"point position returned by [method get_point_path]. If changed, [method " +"update] needs to be called before finding the next path." +msgstr "" +"栅格的偏移量,将被应用以计算 [method get_point_path] 返回的结果点的位置。如果" +"发生变化,需要在查找下一条路径之前调用 [method update]。" + +msgid "" +"The size of the grid (number of cells of size [member cell_size] on each " +"axis). If changed, [method update] needs to be called before finding the " +"next path." +msgstr "" +"栅格的大小(每个轴上大小为 [member cell_size] 的单元格数)。如果发生变化,需" +"要在查找下一条路径之前调用 [method update]。" + +msgid "" +"The [url=https://en.wikipedia.org/wiki/Euclidean_distance]Euclidean " +"heuristic[/url] to be used for the pathfinding using the following formula:\n" +"[codeblock]\n" +"dx = abs(to_id.x - from_id.x)\n" +"dy = abs(to_id.y - from_id.y)\n" +"result = sqrt(dx * dx + dy * dy)\n" +"[/codeblock]\n" +"[b]Note:[/b] This is also the internal heuristic used in [AStar3D] and " +"[AStar2D] by default (with the inclusion of possible z-axis coordinate)." +msgstr "" +"[url=https://zh.wikipedia.org/wiki/" +"%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%97%E8%B7%9D%E7%A6%BB]欧几里德启发式算法[/" +"url]将被用于寻路,使用的公式如下:\n" +"[codeblock]\n" +"dx = abs(to_id.x - from_id.x)\n" +"dy = abs(to_id.y - from_id.y)\n" +"result = sqrt(dx * dx + dy * dy)\n" +"[/codeblock]\n" +"[b]注意:[/b]这也是 [AStar3D] 和 [AStar2D] 默认使用的内部启发式算法(包括可能" +"的 z 轴坐标)。" + +msgid "" +"The [url=https://en.wikipedia.org/wiki/Taxicab_geometry]Manhattan heuristic[/" +"url] to be used for the pathfinding using the following formula:\n" +"[codeblock]\n" +"dx = abs(to_id.x - from_id.x)\n" +"dy = abs(to_id.y - from_id.y)\n" +"result = dx + dy\n" +"[/codeblock]\n" +"[b]Note:[/b] This heuristic is intended to be used with 4-side orthogonal " +"movements, provided by setting the [member diagonal_mode] to [constant " +"DIAGONAL_MODE_NEVER]." +msgstr "" +"[url=https://zh.wikipedia.org/wiki/" +"%E6%9B%BC%E5%93%88%E9%A0%93%E8%B7%9D%E9%9B%A2]曼哈顿启发式算法[/url]将被用于" +"寻路,使用的公式如下:\n" +"[codeblock]\n" +"dx = abs(to_id.x - from_id.x)\n" +"dy = abs(to_id.y - from_id.y)\n" +"result = dx + dy\n" +"[/codeblock]\n" +"[b]注意:[/b]该启发式算法旨在与 4 边正交运动一起使用,4 边正交运动可通过将 " +"[member diagonal_mode] 设置为 [constant DIAGONAL_MODE_NEVER] 来提供。" + +msgid "" +"The Octile heuristic to be used for the pathfinding using the following " +"formula:\n" +"[codeblock]\n" +"dx = abs(to_id.x - from_id.x)\n" +"dy = abs(to_id.y - from_id.y)\n" +"f = sqrt(2) - 1\n" +"result = (dx < dy) ? f * dx + dy : f * dy + dx;\n" +"[/codeblock]" +msgstr "" +"Octile 启发式算法将被用于寻路,使用的公式如下:\n" +"[codeblock]\n" +"dx = abs(to_id.x - from_id.x)\n" +"dy = abs(to_id.y - from_id.y)\n" +"f = sqrt(2) - 1\n" +"result = (dx < dy) ? f * dx + dy : f * dy + dx;\n" +"[/codeblock]" + +msgid "" +"The [url=https://en.wikipedia.org/wiki/Chebyshev_distance]Chebyshev " +"heuristic[/url] to be used for the pathfinding using the following formula:\n" +"[codeblock]\n" +"dx = abs(to_id.x - from_id.x)\n" +"dy = abs(to_id.y - from_id.y)\n" +"result = max(dx, dy)\n" +"[/codeblock]" +msgstr "" +"[url=https://zh.wikipedia.org/wiki/" +"%E5%88%87%E6%AF%94%E9%9B%AA%E5%A4%AB%E8%B7%9D%E7%A6%BB]切比雪夫启发式算法[/" +"url]将被用于寻路,使用的公式如下:\n" +"[codeblock]\n" +"dx = abs(to_id.x - from_id.x)\n" +"dy = abs(to_id.y - from_id.y)\n" +"result = max(dx, dy)\n" +"[/codeblock]" + msgid "Represents the size of the [enum Heuristic] enum." msgstr "代表 [enum Heuristic] 枚举的大小。" +msgid "" +"The pathfinding algorithm will ignore solid neighbors around the target cell " +"and allow passing using diagonals." +msgstr "该寻路算法将忽略目标单元格周围的实体邻居,并允许沿对角线通过。" + +msgid "" +"The pathfinding algorithm will ignore all diagonals and the way will be " +"always orthogonal." +msgstr "该寻路算法将忽略所有对角线,并且路径始终是正交的。" + +msgid "" +"The pathfinding algorithm will avoid using diagonals if at least two " +"obstacles have been placed around the neighboring cells of the specific path " +"segment." +msgstr "" +"如果在特定路径段的相邻单元格周围放置了至少两个障碍物,则该寻路算法将避免使用" +"对角线。" + +msgid "" +"The pathfinding algorithm will avoid using diagonals if any obstacle has " +"been placed around the neighboring cells of the specific path segment." +msgstr "" +"如果在特定路径段的相邻单元格周围放置了任意障碍物,则该寻路算法将避免使用对角" +"线。" + msgid "Represents the size of the [enum DiagonalMode] enum." msgstr "代表 [enum DiagonalMode] 枚举的大小。" @@ -11980,12 +12221,45 @@ msgid "A texture that crops out part of another Texture2D." msgstr "裁剪其他 Texture2D 的纹理。" msgid "" +"[Texture2D] resource that draws only part of its [member atlas] texture, as " +"defined by the [member region]. An additional [member margin] can also be " +"set, which is useful for small adjustments.\n" +"Multiple [AtlasTexture] resources can be cropped from the same [member " +"atlas]. Packing many smaller textures into a singular large texture helps to " +"optimize video memory costs and render calls.\n" +"[b]Note:[/b] [AtlasTexture] cannot be used in an [AnimatedTexture], and may " +"not tile properly in nodes such as [TextureRect], when inside other " +"[AtlasTexture] resources." +msgstr "" +"[Texture2D] 资源,只绘制其 [member atlas] 纹理中的由 [member region] 所定义的" +"那部分。还可以设置一个额外的 [member margin],这对于小的调整很有用。\n" +"可以从同一个[member atlas]中裁剪出多个 [AtlasTexture] 资源。将许多较小的纹理" +"打包成一个单一的大纹理有助于优化视频内存成本和渲染调用。\n" +"[b]注意:[/b][AtlasTexture] 不能在 [AnimatedTexture] 中使用,并且当在其他 " +"[AtlasTexture] 资源内时,可能无法在 [TextureRect] 等节点中正确平铺。" + +msgid "" "The texture that contains the atlas. Can be any type inheriting from " "[Texture2D], including another [AtlasTexture]." msgstr "" "包含该图集的纹理。可以是任何继承自 [Texture2D] 的类型,包括其他 " "[AtlasTexture]。" +msgid "" +"If [code]true[/code], the area outside of the [member region] is clipped to " +"avoid bleeding of the surrounding texture pixels." +msgstr "" +"如果为 [code]true[/code],则 [member region] 之外的区域将被裁剪以避免周围纹理" +"像素的渗色。" + +msgid "" +"The margin around the [member region]. Useful for small adjustments. If the " +"[member Rect2.size] of this property (\"w\" and \"h\" in the editor) is set, " +"the drawn texture is resized to fit within the margin." +msgstr "" +"围绕 [member region] 的边距。对小的调整很有用。如果设置了该属性(编辑器中" +"的“w”和“h”)的 [member Rect2.size],则绘制的纹理将被调整大小以适合该边距。" + msgid "The region used to draw the [member atlas]." msgstr "用于绘制 [member atlas] 的区域。" @@ -12050,6 +12324,30 @@ msgid "Captures audio from an audio bus in real-time." msgstr "从音频总线上实时捕捉音频。" msgid "" +"AudioEffectCapture is an AudioEffect which copies all audio frames from the " +"attached audio effect bus into its internal ring buffer.\n" +"Application code should consume these audio frames from this ring buffer " +"using [method get_buffer] and process it as needed, for example to capture " +"data from an [AudioStreamMicrophone], implement application-defined effects, " +"or to transmit audio over the network. When capturing audio data from a " +"microphone, the format of the samples will be stereo 32-bit floating point " +"PCM.\n" +"[b]Note:[/b] [member ProjectSettings.audio/driver/enable_input] must be " +"[code]true[/code] for audio input to work. See also that setting's " +"description for caveats related to permissions and operating system privacy " +"settings." +msgstr "" +"AudioEffectCapture 是一种 AudioEffect,可将所有音频帧从附加的音频效果总线复制" +"到其内部的环形缓冲区中。\n" +"应用程序代码应使用 [method get_buffer] 从该环形缓冲区中消耗这些音频帧,并根据" +"需要对其进行处理,例如从 [AudioStreamMicrophone] 捕获数据,实现应用程序定义的" +"效果,或通过网络传输音频。从麦克风捕获音频数据时,样本格式将为立体声 32 位浮" +"点 PCM。\n" +"[b]注意:[/b][member ProjectSettings.audio/driver/enable_input] 必须为 " +"[code]true[/code] 音频输入才能正常工作。另请参阅该设置的说明,了解与权限和操" +"作系统隐私设置相关的注意事项。" + +msgid "" "Returns [code]true[/code] if at least [param frames] audio frames are " "available to read in the internal ring buffer." msgstr "" @@ -12059,6 +12357,16 @@ msgstr "" msgid "Clears the internal ring buffer." msgstr "清除内部环形缓冲区。" +msgid "" +"Gets the next [param frames] audio samples from the internal ring buffer.\n" +"Returns a [PackedVector2Array] containing exactly [param frames] audio " +"samples if available, or an empty [PackedVector2Array] if insufficient data " +"was available." +msgstr "" +"从内部环形缓冲区获取后续 [param frames] 个音频样本。\n" +"如果足够的话,则返回一个恰好包含 [param frames] 个音频样本的 " +"[PackedVector2Array];如果可用数据不足,则返回一个空的 [PackedVector2Array]。" + msgid "Returns the total size of the internal ring buffer in frames." msgstr "返回内部环形缓冲区的总大小,以帧为单位。" @@ -12104,11 +12412,14 @@ msgid "The voice's volume." msgstr "声音的音量。" msgid "The voice's pan level." -msgstr "声音的声相电平。" +msgstr "声音的声像级别。" msgid "The voice's filter rate." msgstr "声音过滤比率。" +msgid "The number of voices in the effect." +msgstr "该效果中的声音数量。" + msgid "The effect's processed signal." msgstr "效果的处理信号。" @@ -12228,7 +12539,7 @@ msgid "" "Pan position for [code]tap1[/code]. Value can range from -1 (fully left) to " "1 (fully right)." msgstr "" -"[code]tap1[/code] 的平移位置。取值范围为 -1(完全向左)到 1(完全向右)。" +"[code]tap1[/code] 的声像位置。取值范围为 -1(完全向左)到 1(完全向右)。" msgid "If [code]true[/code], [code]tap2[/code] will be enabled." msgstr "如果为 [code]true[/code],将启用 [code]tap2[/code]。" @@ -12243,7 +12554,25 @@ msgid "" "Pan position for [code]tap2[/code]. Value can range from -1 (fully left) to " "1 (fully right)." msgstr "" -"[code]tap2[/code] 的平移位置。取值范围为 -1(完全向左)到 1(完全向右)。" +"[code]tap2[/code] 的声像位置。取值范围为 -1(完全向左)到 1(完全向右)。" + +msgid "" +"Adds a distortion audio effect to an Audio bus.\n" +"Modifies the sound to make it distorted." +msgstr "" +"为音频总线添加失真音频效果。\n" +"修改声音,使其失真。" + +msgid "" +"Different types are available: clip, tan, lo-fi (bit crushing), overdrive, " +"or waveshape.\n" +"By distorting the waveform the frequency content changes, which will often " +"make the sound \"crunchy\" or \"abrasive\". For games, it can simulate sound " +"coming from some saturated device or speaker very efficiently." +msgstr "" +"可以使用不同的类型:削波、正切、低保真(位破碎)、过载、波形。\n" +"通过扭曲波形,频率内容会发生变化,这通常会使声音“清脆”或“粗糙”。对于游戏,它" +"可以非常有效地模拟来自某些饱和设备或扬声器的声音。" msgid "Distortion power. Value can range from 0 to 1." msgstr "失真度。值的范围可在 0 到 1 之间。" @@ -12274,6 +12603,21 @@ msgid "" msgstr "数字失真效果,可以切断波形顶部和底部的峰值。" msgid "" +"Low-resolution digital distortion effect (bit depth reduction). You can use " +"it to emulate the sound of early digital audio devices." +msgstr "" +"低分辨率的数字失真效果(位深度减少)。可以使用它来模拟早期数字音频设备的声" +"音。" + +msgid "" +"Emulates the warm distortion produced by a field effect transistor, which is " +"commonly used in solid-state musical instrument amplifiers. The [member " +"drive] property has no effect in this mode." +msgstr "" +"模拟通常用于固态乐器放大器的场效应晶体管产生的暖失真。[member drive] 属性在该" +"模式下无效。" + +msgid "" "Waveshaper distortions are used mainly by electronic musicians to achieve an " "extra-abrasive sound." msgstr "波形变形失真主要是电子音乐人为了获得格外粗糙的声音而使用的。" @@ -12516,14 +12860,14 @@ msgstr "" "的频率。" msgid "Adds a panner audio effect to an audio bus. Pans sound left or right." -msgstr "向音频总线添加一个声相器音频效果。向左或向右平移声音。" +msgstr "向音频总线添加一个声像器音频效果。向左或向右声像移动声音。" msgid "" "Determines how much of an audio signal is sent to the left and right buses." msgstr "决定向左右总线发送的音频信号量。" msgid "Pan position. Value can range from -1 (fully left) to 1 (fully right)." -msgstr "平移位置。值的范围可以从 -1(完全左)到1(完全右)。" +msgstr "声像位置。值的范围可以从 -1(完全左)到1(完全右)。" msgid "" "Adds a phaser audio effect to an audio bus.\n" @@ -12772,7 +13116,15 @@ msgstr "用最大值作为幅度。" msgid "" "An audio effect that can be used to adjust the intensity of stereo panning." -msgstr "一种可用于调整立体声声相强度的音频效果。" +msgstr "一种可用于调整立体声声像强度的音频效果。" + +msgid "" +"Values greater than 1.0 increase intensity of any panning on audio passing " +"through this effect, whereas values less than 1.0 will decrease the panning " +"intensity. A value of 0.0 will downmix audio to mono." +msgstr "" +"大于 1.0 的值会增加通过该效果的音频的任何声像强度,而小于 1.0 的值会降低声像" +"强度。值为 0.0 会将音频缩混为单声道。" msgid "Overrides the location sounds are heard from." msgstr "覆盖听到声音的位置。" @@ -12893,12 +13245,38 @@ msgid "Returns the name of the bus with the index [param bus_idx]." msgstr "返回索引为 [param bus_idx] 的总线的名称。" msgid "" +"Returns the peak volume of the left speaker at bus index [param bus_idx] and " +"channel index [param channel]." +msgstr "" +"返回总线索引为 [param bus_idx] 且通道索引为 [param channel] 处的左扬声器的峰" +"值音量。" + +msgid "" +"Returns the peak volume of the right speaker at bus index [param bus_idx] " +"and channel index [param channel]." +msgstr "" +"返回总线索引为 [param bus_idx] 且通道索引为 [param channel] 处的右扬声器的峰" +"值音量。" + +msgid "" "Returns the name of the bus that the bus at index [param bus_idx] sends to." msgstr "返回索引为 [param bus_idx] 的总线的发送目标总线的名称。" msgid "Returns the volume of the bus at index [param bus_idx] in dB." msgstr "返回索引为 [param bus_idx] 的总线的音量,单位为 dB。" +msgid "" +"Returns the names of all audio input devices detected on the system.\n" +"[b]Note:[/b] [member ProjectSettings.audio/driver/enable_input] must be " +"[code]true[/code] for audio input to work. See also that setting's " +"description for caveats related to permissions and operating system privacy " +"settings." +msgstr "" +"返回系统中检测到的所有音频输入设备的名称。\n" +"[b]注意:[/b][member ProjectSettings.audio/driver/enable_input] 必须为 " +"[code]true[/code] 音频输入才能正常工作。另请参阅该设置的说明,了解与权限和操" +"作系统隐私设置相关的注意事项。" + msgid "Returns the sample rate at the output of the [AudioServer]." msgstr "返回 [AudioServer] 输出的采样率。" @@ -13066,10 +13444,34 @@ msgstr "" "用。在 [code]AudioStreamRandomPitch::instantiate_playback[/code] 的源文件中可" "以找到这方面的示例。" +msgid "" +"Returns true if this audio stream only supports monophonic playback, or " +"false if the audio stream supports polyphony." +msgstr "" +"如果该音频流仅支持单声道播放,则返回 true;如果音频流支持复调,则返回 false。" + msgid "Audio stream that generates sounds procedurally." msgstr "使用程序生成声音的音频流。" msgid "" +"This audio stream does not play back sounds, but expects a script to " +"generate audio data for it instead. See also " +"[AudioStreamGeneratorPlayback].\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 "" +"该音频流不播放声音,但需要脚本为其生成音频数据。另见 " +"[AudioStreamGeneratorPlayback]。\n" +"另请参阅 [AudioEffectSpectrumAnalyzer] 以执行实时音频频谱分析。\n" +"[b]注意:[/b]由于性能限制,最好从 C# 或通过 GDExtension 编译的语言中使用此" +"类。如果仍想使从 GDScript 中使用此类,请考虑使用较低的 [member mix_rate],例" +"如 11,025 Hz 或 22,050 Hz。" + +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 in increased CPU usage and more risk for audio cracking if the CPU " @@ -13130,9 +13532,44 @@ msgstr "" "返回能够推送到音频采样数据缓冲区而不使其溢出的帧数。如果结果为 [code]0[/" "code],则缓冲区已满。" +msgid "" +"Pushes several audio data frames to the buffer. This is usually more " +"efficient than [method push_frame] in C# and compiled languages via " +"GDExtension, but [method push_buffer] may be [i]less[/i] efficient in " +"GDScript." +msgstr "" +"将多个音频数据帧推送到缓冲区。这通常比 C# 中的以及通过 GDExtension 编译的语言" +"中的 [method push_frame] 效率更高,但在 GDScript 中的 [method push_buffer] 的" +"效率可能[i]更低[/i]。" + +msgid "" +"Pushes a single audio data frame to the buffer. This is usually less " +"efficient than [method push_buffer] in C# and compiled languages via " +"GDExtension, but [method push_frame] may be [i]more[/i] efficient in " +"GDScript." +msgstr "" +"将单个音频数据帧推送到缓冲区。这通常比 C# 中的以及通过 GDExtension 编译的语言" +"中的 [method push_buffer] 效率更低,但在 GDScript 中的 [method push_frame] 的" +"效率可能[i]更高[/i]。" + msgid "Plays real-time audio input data." msgstr "播放实时音频输入数据。" +msgid "" +"When used directly in an [AudioStreamPlayer] node, [AudioStreamMicrophone] " +"plays back microphone input in real-time. This can be used in conjunction " +"with [AudioEffectCapture] to process the data or save it.\n" +"[b]Note:[/b] [member ProjectSettings.audio/driver/enable_input] must be " +"[code]true[/code] for audio input to work. See also that setting's " +"description for caveats related to permissions and operating system privacy " +"settings." +msgstr "" +"当直接在 [AudioStreamPlayer] 节点中使用时,[AudioStreamMicrophone] 会实时播放" +"麦克风的输入。这可以配合 [AudioEffectCapture] 使用,以处理数据或保存数据。\n" +"[b]注意:[/b][member ProjectSettings.audio/driver/enable_input] 必须为 " +"[code]true[/code] 音频输入才能正常工作。另请参阅该设置的说明,了解与权限和操" +"作系统隐私设置相关的注意事项。" + msgid "MP3 audio stream driver." msgstr "MP3 音频流驱动程序。" @@ -13202,6 +13639,13 @@ msgstr "包含用于这个流的原始 Ogg 数据。" msgid "Meta class for playing back audio." msgstr "播放音频的元类。" +msgid "" +"Can play, loop, pause a scroll through audio. See [AudioStream] and " +"[AudioStreamOggVorbis] for usage." +msgstr "" +"可以播放、循环播放、暂停滚动播放音频。有关用法,请参阅 [AudioStream] 和 " +"[AudioStreamOggVorbis]。" + msgid "Playback instance for [AudioStreamPolyphonic]." msgstr "[AudioStreamPolyphonic] 的播放实例。" @@ -13220,12 +13664,58 @@ msgstr "" "get_stream_playback] 方法获取播放实例。" msgid "" +"Return true whether the stream associated with an integer ID is still " +"playing. Check [method play_stream] for information on when this ID becomes " +"invalid." +msgstr "" +"与整数 ID 关联的流仍在播放时返回 true。请检查 [method play_stream] 以获取有关" +"此 ID 何时失效的信息。" + +msgid "" +"Play an [AudioStream] at a given offset, volume and pitch scale. Playback " +"starts immediately.\n" +"The return value is an unique integer ID that is associated to this playback " +"stream and which can be used to control it.\n" +"This ID becomes invalid when the stream ends (if it does not loop), when the " +"[AudioStreamPlaybackPolyphonic] is stopped, or when [method stop_stream] is " +"called.\n" +"This function returns [constant INVALID_ID] if the amount of streams " +"currently playing equals [member AudioStreamPolyphonic.polyphony]. If you " +"need a higher amount of maximum polyphony, raise this value." +msgstr "" +"以给定的偏移量、音量和音阶播放 [AudioStream]。播放立即开始。\n" +"返回值是与该播放流关联的唯一整数 ID,可用于控制该播放流。\n" +"当流结束(如果它不循环)、[AudioStreamPlaybackPolyphonic] 停止、或 [method " +"stop_stream] 被调用时,该 ID 将失效。\n" +"如果当前播放的流的数量等于 [member AudioStreamPolyphonic.polyphony],则该函数" +"将返回 [constant INVALID_ID]。如果需要更大的最大复音量,请提高该值。" + +msgid "" +"Change the stream pitch scale. The [param stream] argument is an integer ID " +"returned by [method play_stream]." +msgstr "" +"改变流的音阶。[param stream] 参数是一个由 [method play_stream] 返回的整数 " +"ID。" + +msgid "" +"Change the stream volume (in db). The [param stream] argument is an integer " +"ID returned by [method play_stream]." +msgstr "" +"改变流的音量(单位:db)。[param stream] 参数是一个由 [method play_stream] 返" +"回的整数 ID。" + +msgid "" "Stop a stream. The [param stream] argument is an integer ID returned by " "[method play_stream], which becomes invalid after calling this function." msgstr "" "停止某个流。[param stream] 参数是由 [method play_stream] 返回的整数 ID,在调" "用这个函数后失效。" +msgid "" +"Returned by [method play_stream] in case it could not allocate a stream for " +"playback." +msgstr "无法为播放分配一个流时由 [method play_stream] 返回。" + msgid "Plays back audio non-positionally." msgstr "播放音频,不考虑所处位置。" @@ -13277,6 +13767,12 @@ msgstr "" "行时无法解析,就会回退到 [code]\"Master\"[/code]。" msgid "" +"The maximum number of sounds this node can play at the same time. Playing " +"additional sounds after this value is reached will cut off the oldest sounds." +msgstr "" +"该节点可以同时播放的最大声音数。达到此值后,播放额外的声音将切断最旧的声音。" + +msgid "" "If the audio configuration has more than two speakers, this sets the target " "channels. See [enum MixTarget] constants." msgstr "" @@ -13319,6 +13815,26 @@ msgstr "音频将在第二个声道中播放,通常位于中央。" msgid "Plays positional sound in 2D space." msgstr "在 2D 空间中播放与位置相关的声音。" +msgid "" +"Plays audio that is attenuated with distance to the listener.\n" +"By default, audio is heard from the screen center. This can be changed by " +"adding an [AudioListener2D] node to the scene and enabling it by calling " +"[method AudioListener2D.make_current] on it.\n" +"See also [AudioStreamPlayer] to play a sound non-positionally.\n" +"[b]Note:[/b] Hiding an [AudioStreamPlayer2D] node does not disable its audio " +"output. To temporarily disable an [AudioStreamPlayer2D]'s audio output, set " +"[member volume_db] to a very low value like [code]-100[/code] (which isn't " +"audible to human hearing)." +msgstr "" +"播放随与监听者的距离增大而衰减的音频。\n" +"默认情况下,音频是从屏幕中心收听的。要修改这个位置,可以在场景中添加一个 " +"[AudioListener2D] 节点,并通过调用 [method AudioListener2D.make_current] 将其" +"启用。\n" +"另请参阅 [AudioStreamPlayer] 以非定位的方式播放声音。\n" +"[b]注意:[/b]隐藏 [AudioStreamPlayer2D] 节点并不能禁用其音频输出。要暂时禁用 " +"[AudioStreamPlayer2D] 的音频输出,请将 [member volume_db] 设置为非常低的值," +"如 [code]-100[/code](人的听觉听不到)。" + msgid "Returns the position in the [AudioStream]." msgstr "返回 [AudioStream] 中的位置。" @@ -13345,10 +13861,22 @@ msgstr "" "重定向,使其在特定的音频总线中播放。一个例子是可以用来制作“水域”,将水中播放" "的声音重定向至单独的音频总线,让声音听起来像是在水下播放。" +msgid "The volume is attenuated over distance with this as an exponent." +msgstr "以该属性为指数,将音量随着距离的增加而衰减。" + msgid "Maximum distance from which audio is still hearable." msgstr "音频仍可听到的最大距离。" msgid "" +"Scales the panning strength for this node by multiplying the base [member " +"ProjectSettings.audio/general/2d_panning_strength] with this factor. Higher " +"values will pan audio from left to right more dramatically than lower values." +msgstr "" +"通过将基础 [member ProjectSettings.audio/general/2d_panning_strength] 乘以该" +"因子,来缩放该节点的声像强度。与较低的值相比,较高的值将从左到右更显著地声像" +"移动音频。" + +msgid "" "If [code]true[/code], audio is playing or is queued to be played (see " "[method play])." msgstr "" @@ -13362,10 +13890,58 @@ msgid "Plays positional sound in 3D space." msgstr "在 3D 空间中播放与位置相关的声音。" msgid "" +"Plays audio with positional sound effects, based on the relative position of " +"the audio listener. Positional effects include distance attenuation, " +"directionality, and the Doppler effect. For greater realism, a low-pass " +"filter is applied to distant sounds. This can be disabled by setting [member " +"attenuation_filter_cutoff_hz] to [code]20500[/code].\n" +"By default, audio is heard from the camera position. This can be changed by " +"adding an [AudioListener3D] node to the scene and enabling it by calling " +"[method AudioListener3D.make_current] on it.\n" +"See also [AudioStreamPlayer] to play a sound non-positionally.\n" +"[b]Note:[/b] Hiding an [AudioStreamPlayer3D] node does not disable its audio " +"output. To temporarily disable an [AudioStreamPlayer3D]'s audio output, set " +"[member volume_db] to a very low value like [code]-100[/code] (which isn't " +"audible to human hearing)." +msgstr "" +"根据音频收听者的相对位置播放具有位置音效的音频。位置效应包括距离衰减、方向" +"性、和多普勒效应。为了更逼真,低通滤波器会自动应用于远处的声音。这可以通过将 " +"[member attenuation_filter_cutoff_hz] 设置为 [code]20500[/code] 来禁用。\n" +"默认情况下,音频是从相机的位置听到的,这可以通过在场景中添加一个 " +"[AudioListener3D] 节点,并通过对其调用 [method AudioListener3D.make_current] " +"来启用该节点来改变。\n" +"参阅 [AudioStreamPlayer] 来播放非位置的声音。\n" +"[b]注意:[/b]隐藏一个 [AudioStreamPlayer3D] 节点并不能禁用其音频输出。要暂时" +"禁用 [AudioStreamPlayer3D] 的音频输出,请将 [member volume_db] 设置为一个非常" +"低的值,如 [code]-100[/code](人的听觉听不到)。" + +msgid "" "Returns the [AudioStreamPlayback] object associated with this " "[AudioStreamPlayer3D]." msgstr "返回与这个 [AudioStreamPlayer3D] 相关联的 [AudioStreamPlayback] 对象。" +msgid "" +"Determines which [Area3D] layers affect the sound for reverb and audio bus " +"effects. Areas can be used to redirect [AudioStream]s so that they play in a " +"certain audio bus. An example of how you might use this is making a " +"\"water\" area so that sounds played in the water are redirected through an " +"audio bus to make them sound like they are being played underwater." +msgstr "" +"确定哪些 [Area3D] 层影响混响和音频总线效果的声音。区域可用于重定向 " +"[AudioStream],以便它们在特定音频总线中播放。可以如何使用它的一个示例是制作一" +"个“水”区域,以便在水中播放的声音通过音频总线重定向,使它们听起来像是在水下播" +"放的。" + +msgid "" +"The cutoff frequency of the attenuation low-pass filter, in Hz. A sound " +"above this frequency is attenuated more than a sound below this frequency. " +"To disable this effect, set this to [code]20500[/code] as this frequency is " +"above the human hearing limit." +msgstr "" +"衰减低通滤波器的截止频率,单位为 Hz。高于该频率的声音比低于此频率的声音衰减得" +"更多。要禁用该效果,请将其设置为 [code]20500[/code],因为该频率高于人类听力极" +"限。" + msgid "Amount how much the filter affects the loudness, in decibels." msgstr "滤波器对响度的影响程度,以分贝为单位。" @@ -13374,8 +13950,8 @@ msgid "" "logarithmically, or not be affected by distance, effectively disabling " "attenuation." msgstr "" -"决定音频是否应该得到更安静的距离线性,平方,对数,或不受影响的距离,有效地禁" -"用衰减。" +"决定音频是否应该随着距离,以线性、二次、对数的方式变得更安静,或者不受距离影" +"响,有效地禁用衰减。" msgid "" "If [code]true[/code], audio plays when the AudioStreamPlayer3D node is added " @@ -13397,9 +13973,52 @@ msgstr "" "校验。这是因为音频总线布局可以在设置这个属性后再加载。如果这个给定的名称在运" "行时无法解析,就会回退到 [code]\"Master\"[/code]。" +msgid "Decides in which step the Doppler effect should be calculated." +msgstr "决定应该在哪个步骤计算多普勒效应。" + +msgid "The angle in which the audio reaches a listener unattenuated." +msgstr "音频到达听者而不衰减的角度。" + +msgid "" +"If [code]true[/code], the audio should be attenuated according to the " +"direction of the sound." +msgstr "如果为 [code]true[/code],则音频应该根据声音的方向衰减。" + +msgid "" +"Attenuation factor used if listener is outside of [member " +"emission_angle_degrees] and [member emission_angle_enabled] is set, in " +"decibels." +msgstr "" +"听者在 [member emission_angle_degrees] 之外且 [member " +"emission_angle_enabled] 被设置时使用的衰减系数,单位是分贝。" + msgid "Sets the absolute maximum of the soundlevel, in decibels." msgstr "设置声级的绝对最大值,以分贝为单位。" +msgid "" +"The distance past which the sound can no longer be heard at all. Only has an " +"effect if set to a value greater than [code]0.0[/code]. [member " +"max_distance] works in tandem with [member unit_size]. However, unlike " +"[member unit_size] whose behavior depends on the [member attenuation_model], " +"[member max_distance] always works in a linear fashion. This can be used to " +"prevent the [AudioStreamPlayer3D] from requiring audio mixing when the " +"listener is far away, which saves CPU resources." +msgstr "" +"完全听不到声音的距离。仅当设置为大于 [code]0.0[/code] 的值时才有效。[member " +"max_distance] 与 [member unit_size] 协同工作。但是,与 [member unit_size] 的" +"行为取决于 [member attenuation_model] 不同,[member max_distance] 始终以线性" +"方式工作。这可用于防止 [AudioStreamPlayer3D] 在听者较远时需要混音,从而节省 " +"CPU 资源。" + +msgid "" +"Scales the panning strength for this node by multiplying the base [member " +"ProjectSettings.audio/general/3d_panning_strength] with this factor. Higher " +"values will pan audio from left to right more dramatically than lower values." +msgstr "" +"通过将基础 [member ProjectSettings.audio/general/3d_panning_strength] 乘以该" +"因子,来缩放该节点的声像强度。与较低的值相比,较高的值将从左到右更显著地声像" +"移动音频。" + msgid "The [AudioStream] resource to be played." msgstr "要播放的 [AudioStream] 资源。" @@ -13415,6 +14034,9 @@ msgid "" "over a larger distance." msgstr "衰减效果的系数。更高的值使声音在更远的距离可以听到。" +msgid "The base sound level before attenuation, in decibels." +msgstr "不受衰减影响的基础声级,单位为分贝。" + msgid "Attenuation of loudness according to linear distance." msgstr "根据距离对响度进行线性衰减。" @@ -13444,9 +14066,55 @@ msgstr "在空闲步骤中执行多普勒跟踪。" msgid "Executes doppler tracking in physics step." msgstr "在物理步骤中执行多普勒跟踪。" +msgid "" +"AudioStream that lets the user play custom streams at any time from code, " +"simultaneously using a single player." +msgstr "" +"音频流 AudioStream,允许用户从代码中随时播放自定义流,可以使用单个播放器同时" +"播放。" + +msgid "" +"AudioStream that lets the user play custom streams at any time from code, " +"simultaneously using a single player.\n" +"Playback control is done via the [AudioStreamPlaybackPolyphonic] instance " +"set inside the player, which can be obtained via [method AudioStreamPlayer." +"get_stream_playback], [method AudioStreamPlayer2D.get_stream_playback] or " +"[method AudioStreamPlayer3D.get_stream_playback] methods. Obtaining the " +"playback instance is only valid after the [code]stream[/code] property is " +"set as an [AudioStreamPolyphonic] in those players." +msgstr "" +"AudioStream 允许用户随时通过代码,同时使用单个播放器播放自定义流。\n" +"播放控制是通过播放器内部设置的 [AudioStreamPlaybackPolyphonic] 实例完成的,可" +"以通过 [method AudioStreamPlayer.get_stream_playback]、[method " +"AudioStreamPlayer2D.get_stream_playback] 或 [method AudioStreamPlayer3D." +"get_stream_playback] 方法获取该实例。只有在这些播放器中将 [code]stream[/" +"code] 属性设置为 [AudioStreamPolyphonic] 后,才能获取该播放实例。" + +msgid "Maximum amount of simultaneous streams that can be played." +msgstr "可以同时播放的流的最大数量。" + +msgid "Wraps a pool of audio streams with pitch and volume shifting." +msgstr "用音高和音量偏移,包装一个音频流池。" + +msgid "" +"Picks a random AudioStream from the pool, depending on the playback mode, " +"and applies random pitch shifting and volume shifting during playback." +msgstr "" +"根据播放模式,从池中随机选择一个 AudioStream,并在播放期间应用随机音高偏移和" +"音量偏移。" + +msgid "" +"Insert a stream at the specified index. If the index is less than zero, the " +"insertion occurs at the end of the underlying pool." +msgstr "在指定索引处插入一个流。如果索引小于零,则插入发生在底层池的末尾。" + msgid "Returns the stream at the specified index." msgstr "返回指定索引处的流。" +msgid "" +"Returns the probability weight associated with the stream at the given index." +msgstr "返回与给定索引处的流关联的概率权重。" + msgid "Move a stream from one index to another." msgstr "将流从一个索引移动到另一个索引。" @@ -13457,6 +14125,18 @@ msgid "Set the AudioStream at the specified index." msgstr "设置指定索引处的 AudioStream。" msgid "" +"Set the probability weight of the stream at the specified index. The higher " +"this value, the more likely that the randomizer will choose this stream " +"during random playback modes." +msgstr "" +"设置流在指定索引处的概率权重。该值越高,随机化器在随机播放模式下选择该流的可" +"能性就越大。" + +msgid "" +"Controls how this AudioStreamRandomizer picks which AudioStream to play next." +msgstr "控制该 AudioStreamRandomizer 如何选择下一个要播放的 AudioStream。" + +msgid "" "The intensity of random pitch variation. A value of 1 means no variation." msgstr "随机音高变化的强度。值为 1 表示没有变化。" @@ -13467,10 +14147,47 @@ msgstr "随机音量变化的强度。值为 0 表示没有变化。" msgid "The number of streams in the stream pool." msgstr "流池中流的数量。" +msgid "" +"Pick a stream at random according to the probability weights chosen for each " +"stream, but avoid playing the same stream twice in a row whenever possible. " +"If only 1 sound is present in the pool, the same sound will always play, " +"effectively allowing repeats to occur." +msgstr "" +"根据为每个流选择的概率权重随机挑选一个流,但尽可能避免连续两次播放同一个流。" +"如果池中只有 1 个声音,则将始终播放同一个声音,从而有效地允许重复发生。" + +msgid "" +"Pick a stream at random according to the probability weights chosen for each " +"stream. If only 1 sound is present in the pool, the same sound will always " +"play." +msgstr "" +"根据为每个流选择的概率权重随机挑选一个流。如果池中只有 1 个声音,则将始终播放" +"同一个声音。" + +msgid "" +"Play streams in the order they appear in the stream pool. If only 1 sound is " +"present in the pool, the same sound will always play." +msgstr "" +"按照流池中出现的顺序播放流。如果池中只有 1 个声音,则将始终播放同一个声音。" + msgid "Stores audio data loaded from WAV files." msgstr "存储从 WAV 文件加载的音频数据。" msgid "" +"AudioStreamWAV stores sound samples loaded from WAV files. To play the " +"stored sound, use an [AudioStreamPlayer] (for non-positional audio) or " +"[AudioStreamPlayer2D]/[AudioStreamPlayer3D] (for positional audio). The " +"sound can be looped.\n" +"This class can also be used to store dynamically-generated PCM audio data. " +"See also [AudioStreamGenerator] for procedural audio generation." +msgstr "" +"AudioStreamWAV 存储从 WAV 文件加载的声音样本。要播放存储的声音,请使用 " +"[AudioStreamPlayer](用于非空间定位音频)或 [AudioStreamPlayer2D]/" +"[AudioStreamPlayer3D](用于空间定位音频)。声音可以循环播放。\n" +"这个类还可用于存储动态生成的 PCM 音频数据。另请参阅 [AudioStreamGenerator] 以" +"了解程序化音频生成。" + +msgid "" "Saves the AudioStreamWAV as a WAV file to [param path]. Samples with IMA " "ADPCM format can't be saved.\n" "[b]Note:[/b] A [code].wav[/code] extension is automatically appended to " @@ -13574,6 +14291,14 @@ msgstr "" "音频在 [member loop_begin] 和 [member loop_end] 之间循环数据,仅向后播放。" msgid "" +"Copies a region of the screen (or the whole screen) to a buffer so it can be " +"accessed in your shader scripts using the screen texture (i.e. a uniform " +"sampler with ``hint_screen_texture``)." +msgstr "" +"将屏幕的一个区域(或整个屏幕)复制到一个缓冲区,这样就可以使用屏幕纹理(即带" +"有 ``hint_screen_texture`` 的 uniform 采样器),在着色器脚本中访问它。" + +msgid "" "Node for back-buffering the currently-displayed screen. The region defined " "in the [BackBufferCopy] node is buffered with the content of the screen it " "covers, or the entire screen according to the copy mode set. Use the screen " @@ -13651,11 +14376,53 @@ msgid "" msgstr "如果鼠标已进入按钮,且尚未离开,则返回 [code]true[/code]。" 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 "" +"更改按钮的 [member button_pressed] 状态,而不发出 [signal toggled]。当只想更" +"改按钮的状态而不发送按下的事件时使用(例如,在初始化场景时)。仅当 [member " +"toggle_mode] 为 [code]true[/code] 时才有效。\n" +"[b]注意:[/b]该方法不会取消按下 [member button_group] 中的其他按钮。" + +msgid "" "Determines when the button is considered clicked, one of the [enum " "ActionMode] constants." msgstr "确定按钮何时被认为被点击,是 [enum ActionMode] 常量之一。" msgid "" +"The [ButtonGroup] associated with the button. Not to be confused with node " +"groups." +msgstr "与按钮关联的 [ButtonGroup]。不要与节点组混淆。" + +msgid "" +"Binary mask to choose which mouse buttons this button will respond to.\n" +"To allow both left-click and right-click, use [code]MOUSE_BUTTON_MASK_LEFT | " +"MOUSE_BUTTON_MASK_RIGHT[/code]." +msgstr "" +"二进制掩码,用于选择该按钮将响应哪些鼠标按钮。\n" +"要同时允许左键单击和右键单击,请使用 [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 "" +"如果为 [code]true[/code],则该按钮的状态为被按下。表示按钮被按下或被切换(如" +"果 [member toggle_mode] 处于活动状态)。仅当 [member toggle_mode] 为 " +"[code]true[/code] 时才有效。\n" +"[b]注意:[/b]设置 [member button_pressed] 将导致 [signal toggled] 被发出。如" +"果想在不发出该信号的情况下更改按下状态,请使用 [method " +"set_pressed_no_signal]。" + +msgid "" "If [code]true[/code], the button is in disabled state and can't be clicked " "or toggled." msgstr "如果为 [code]true[/code],则该按钮处于禁用状态,无法点击或切换。" @@ -13676,6 +14443,16 @@ msgid "[Shortcut] associated to the button." msgstr "与该按钮关联的 [Shortcut]。" 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 "" +"如果为 [code]true[/code] ,则当其快捷方式被激活时,该按钮将高亮一小段时间。如" +"果为 [code]false[/code] 且 [member toggle_mode] 为 [code]false[/code],则该快" +"捷方式将在没有任何视觉反馈的情况下激活。" + +msgid "" "If [code]true[/code], the button will add information about its shortcut in " "the tooltip." msgstr "如果为 [code]true[/code],按钮将在工具提示中添加其快捷方式的信息。" @@ -13700,11 +14477,19 @@ msgid "" "If you need to know the button's pressed state (and [member toggle_mode] is " "active), use [signal toggled] instead." msgstr "" -"当按钮被切换或按下时发出。如果 [member action_mode] 是 [constant " -"ACTION_MODE_BUTTON_PRESS],则在 [signal button_down] 上,否则在 [signal " -"button_up] 上。\n" -"如果您需要知道按钮的按压状态(并且 [member toggle_mode] 是活动的),请使用" -"[signal toggled]代替。" +"当按钮被切换或按下时发出。如果 [member action_mode] 为 [constant " +"ACTION_MODE_BUTTON_PRESS],则在 [signal button_down] 时发出,否则当 [signal " +"button_up] 时发出。\n" +"如果需要知道按钮的按下状态(并且 [member toggle_mode] 处于活动状态),请改用 " +"[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 button_pressed] argument." +msgstr "" +"当按钮刚刚在按下和正常状态之间切换时发出(仅当 [member toggle_mode] 处于活动" +"状态时)。新状态包含在 [param button_pressed] 参数中。" msgid "" "The normal state (i.e. not pressed, not hovered, not toggled and enabled) of " @@ -13759,6 +14544,16 @@ msgid "" msgstr "返回与指定 [enum TextureParam] 关联的 [Texture2D]。" msgid "" +"If [code]true[/code], enables the specified [enum Feature]. Many features " +"that are available in [BaseMaterial3D]s need to be enabled before use. This " +"way the cost for using the feature is only incurred when specified. Features " +"can also be enabled by setting the corresponding member to [code]true[/code]." +msgstr "" +"如果为 [code]true[/code],则启用指定的 [enum Feature]。[BaseMaterial3D] 中的" +"许多功能都需要在使用前启用。这样,仅在指定时才会产生使用该功能的成本。也可以" +"通过将相应的成员设置为 [code]true[/code] 来启用功能。" + +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 " @@ -13772,6 +14567,36 @@ msgstr "" "项见 [enum Flags] 枚举值。" msgid "" +"Sets the texture for the slot specified by [param param]. See [enum " +"TextureParam] for available slots." +msgstr "" +"设置由 [param param] 指定的插槽的纹理。有关可用插槽,请参阅 [enum " +"TextureParam]。" + +msgid "" +"The material's base color.\n" +"[b]Note:[/b] If [member detail_enabled] is [code]true[/code] and a [member " +"detail_albedo] texture is specified, [member albedo_color] will [i]not[/i] " +"modulate the detail texture. This can be used to color partial areas of a " +"material by not specifying an albedo texture and using a transparent [member " +"detail_albedo] texture instead." +msgstr "" +"材质的基础颜色。\n" +"[b]注意:[/b]如果 [member detail_enabled] 为 [code]true[/code] 并且指定了 " +"[member detail_albedo] 纹理,则 [member detail_albedo_color] 将[i]不[/i]会调" +"制细节纹理。这可用于通过不指定反照率纹理并使用透明 [member detail_albedo] 纹" +"理,来为材质的部分区域着色。" + +msgid "" +"Texture to multiply by [member albedo_color]. Used for basic texturing of " +"objects.\n" +"If the texture appears unexpectedly too dark or too bright, check [member " +"albedo_texture_force_srgb]." +msgstr "" +"要乘以 [member albedo_color] 的纹理。用于对象的基本纹理。\n" +"如果纹理意外地显得太暗或太亮,请检查 [member albedo_texture_force_srgb]。" + +msgid "" "If [code]true[/code], forces a conversion of the [member albedo_texture] " "from sRGB color space to linear color space. See also [member " "vertex_color_is_srgb].\n" @@ -13790,6 +14615,17 @@ msgstr "" "albedo_texture_force_srgb] 在不应该的情况下为 [code]false[/code],则纹理会显" "得太亮。" +msgid "" +"Enables multichannel signed distance field rendering shader. Use [member " +"msdf_pixel_range] and [member msdf_outline_size] to configure MSDF " +"parameters." +msgstr "" +"启用多通道有符号距离场渲染着色器。使用 [member msdf_pixel_range] 和 [member " +"msdf_outline_size] 配置 MSDF 参数。" + +msgid "Threshold at which antialiasing will be applied on the alpha channel." +msgstr "将在 Alpha 通道上应用抗锯齿的阈值。" + msgid "The type of alpha antialiasing to apply. See [enum AlphaAntiAliasing]." msgstr "要应用的 Alpha 抗锯齿类型。见 [enum AlphaAntiAliasing]。" @@ -13800,6 +14636,16 @@ msgstr "" "Alpha Hash 的哈希比例。推荐 [code]0[/code] 和 [code]2[/code] 之间的值。" 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 "" +"Alpha 剪刀将丢弃值的阈值。较高的值将导致更多像素被丢弃。如果材质在远处变得太" +"不透明,请尝试增加 [member alpha_scissor_threshold]。如果材质在远处消失,请尝" +"试降低 [member alpha_scissor_threshold]。" + +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 " "texture contains an alpha channel." @@ -13893,6 +14739,27 @@ msgid "" msgstr "背光效果使用的颜色。表示穿过物体的光。" msgid "" +"If [code]true[/code], the backlight effect is enabled. See also [member " +"subsurf_scatter_transmittance_enabled]." +msgstr "" +"如果为 [code]true[/code],则启用背光效果。另请参阅 [member " +"subsurf_scatter_transmittance_enabled]。" + +msgid "" +"Texture used to control the backlight effect per-pixel. Added to [member " +"backlight]." +msgstr "用于控制每像素背光效果的纹理。与 [member backlight] 相加。" + +msgid "" +"If [code]true[/code], the shader will keep the scale set for the mesh. " +"Otherwise, the scale is lost when billboarding. Only applies when [member " +"billboard_mode] is not [constant BILLBOARD_DISABLED]." +msgstr "" +"如果为 [code]true[/code],则着色器将保持为网格设置的缩放。否则,在做公告板时" +"会丢失缩放。仅在 [member billboard_mode] 不为 [constant BILLBOARD_DISABLED] " +"时适用。" + +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 " @@ -13916,7 +14783,28 @@ msgstr "" msgid "" "Sets the strength of the clearcoat effect. Setting to [code]0[/code] looks " "the same as disabling the clearcoat effect." -msgstr "设置清漆效果的强度。设置为 [code]0[/code] 与禁用清漆效果相同。" +msgstr "设置清漆效果的强度。设置为 [code]0[/code] 看起来与禁用清漆效果相同。" + +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 "" +"如果为 [code]true[/code],则启用清漆渲染。将辅助透明通道添加到照明计算中,从" +"而产生一个添加的镜面反射斑点。这使得材质看起来好像它们表面上有一层透明层,该" +"透明层可以是有光泽的也可以是粗糙的。\n" +"[b]注意:[/b]如果材质的 [member shading_mode] 为 [constant " +"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 "" +"设置清漆通道的粗糙度。较高的值会产生较粗糙的清漆,而较低的值会产生更光滑的清" +"漆。" msgid "" "Texture that defines the strength of the clearcoat effect and the glossiness " @@ -13927,6 +14815,13 @@ msgstr "" "道中指定。" 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 "" +"根据三角形是朝向还是背离相机,来确定要剔除三角形的哪一侧。请参阅 [enum " +"CullMode]。" + +msgid "" "Determines when depth rendering takes place. See [enum DepthDrawMode]. See " "also [member transparency]." msgstr "" @@ -13953,6 +14848,25 @@ msgstr "" "[enum BlendMode] 选项。" 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 "" +"如果为 [code]true[/code],启用细节叠加。细节是基于 [member detail_mask] 和 " +"[member detail_albedo] 的 Alpha 通道,在对象表面上混合的第二个纹理。这可用于" +"为对象添加变化,或混合两种不同的反照率/法线纹理。" + +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 "" +"纹理用于指定细节纹理如何与基础纹理混合。[member detail_mask] 可以与 [member " +"detail_albedo] 的 Alpha 通道(如果有)一起使用。" + +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 " @@ -14026,6 +14940,29 @@ msgstr "指定要使用的淡入淡出类型。可以是任何一个 [enum Dista msgid "The emitted light's color. See [member emission_enabled]." msgstr "发出的光的颜色。见 [member emission_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 "" +"如果为 [code]true[/code],则实体会发光。发光会使物体看起来更亮。如果使用 " +"[VoxelGI]、SDFGI、或 [LightmapGI],并且该对象用于烘焙光照,则该对象还可以将光" +"投射到其他对象上。" + +msgid "Multiplier for emitted light. See [member emission_enabled]." +msgstr "发出的光的乘数。请参阅 [member emission_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 "" +"发出的光的亮度,单位是尼特(坎德拉/平方米)。仅在启用 [member " +"ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] 时可" +"用。默认值大致相当于一个室内灯泡。" + msgid "Use [code]UV2[/code] to read from the [member emission_texture]." msgstr "使用 [code]UV2[/code] 从 [member emission_texture] 中读取。" @@ -14042,7 +14979,7 @@ msgstr "纹理,指定某点的表面发光的程度。" msgid "" "If [code]true[/code], the object is rendered at the same size regardless of " "distance." -msgstr "如果为 [code]true[/code],则无论距离远近,对象都以相同的尺寸呈现。" +msgstr "如果为 [code]true[/code],则无论距离远近,对象都以相同的大小渲染。" msgid "" "If [code]true[/code], enables the vertex grow setting. This can be used to " @@ -14071,6 +15008,144 @@ msgstr "" "时有效。" 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 "" +"如果为 [code]true[/code],则使用视差遮挡贴图来表示材质中的深度,而不是简单的" +"偏移贴图(参见 [member heightmap_enabled])。这会产生更令人信服的深度效果,但" +"在 GPU 上的成本要高得多。仅在具有显著视觉差异的材质上启用该功能。" + +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 "" +"如果为 [code]true[/code],则启用高度映射(也称为“视差映射”或“深度映射”)。另" +"见 [member normal_enabled]。高度映射是 GPU 上的一项要求很高的功能,因此它只能" +"用于具有显著视觉差异的材质。\n" +"[b]注意:[/b]如果在同一材质上使用三平面贴图,则不支持高度图。如果 [member " +"uv1_triplanar] 被启用,则 [member heightmap_enabled] 的值将被忽略。" + +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 "" +"如果为 [code]true[/code],则在解释高度图时翻转网格的副法线向量。如果相机移动" +"时高度图效果看起来很奇怪(即使使用合理的 [member heightmap_scale]),请尝试将" +"该属性设置为 [code]true[/code]。" + +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 "" +"如果为 [code]true[/code],则在解释高度图时翻转网格的切线向量。如果相机移动时" +"高度图效果看起来很奇怪(即使使用合理的 [member heightmap_scale]),请尝试将该" +"属性设置为 [code]true[/code]。" + +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 "" +"如果为 [code]true[/code],则将高度图纹理解释为深度图,与较暗的值相比,较亮的" +"值在高度上显得“更低”。\n" +"可以启用该功能以与为 Godot 3.x 编写的某些材质兼容。如果在 Godot 3.x 中使用反" +"转导入选项来反转深度图,则不需要这样做,在这种情况下,[member " +"heightmap_flip_texture] 应该保持为 [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 "" +"当相机靠近材质时用于视差遮挡贴图的层数。较高的值会产生更令人信服的深度效果," +"尤其是在具有陡峭高度变化的材质中。较高的值会显著地增加 GPU 的成本,因此只能在" +"会产生显著视觉差异的材质上增加它。\n" +"[b]注意:[/b]仅当 [member heightmap_deep_parallax] 为 [code]true[/code] 时有" +"效。" + +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 "" +"当相机远离材质时用于视差遮挡贴图的层数。较高的值会产生更令人信服的深度效果," +"尤其是在具有陡峭高度变化的材质中。较高的值会显著地增加 GPU 的成本,因此只能在" +"会产生显著视觉差异的材质上增加它。\n" +"[b]注意:[/b]仅当 [member heightmap_deep_parallax] 为 [code]true[/code] 时有" +"效。" + +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 "" +"用于视差效果的高度图缩放(参见 [member heightmap_enabled])。调整默认值,使最" +"高点(值 = 255)看起来比最低点(值 = 0)高 5 厘米。较高的值会导致更深的外观," +"但可能会导致从倾斜角度查看材质时出现伪影,尤其是在相机移动时。负值可用于反转" +"视差效果,但这与使用 [member heightmap_flip_texture] 反转纹理不同,因为材质也" +"会看起来“更接近”相机。在大多数情况下,[member heightmap_scale] 应保持为正" +"值。\n" +"[b]注意:[/b]如果忽略这个值后高度图效果看起来很奇怪,请尝试调整 [member " +"heightmap_flip_binormal] 和 [member heightmap_flip_tangent]。另请参阅 " +"[member heightmap_texture] 以获取有关创作高度图纹理的建议,因为创作高度图纹理" +"的方式会影响 [member heightmap_scale] 的行为方式。" + +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 "" +"用作高度图的纹理。另见 [member heightmap_enabled]。\n" +"为获得最佳效果,应将纹理归一化(减少 [member heightmap_scale] 以进行补偿)。" +"在 [url=https://gimp.org]GIMP[/url] 中,这可以使用[b]颜色(Colors) > 自动" +"(Auto) > 均衡(Equalize)[/b]来完成。如果纹理只使用其可用范围的一小部分,则" +"视差效果可能看起来很奇怪,尤其是当相机移动时。\n" +"[b]注意:[/b]为了减少内存使用和缩短加载时间,可以使用分辨率较低的高度图纹理," +"因为大多数高度图仅包含低频数据。" + +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 " @@ -14088,6 +15163,24 @@ msgstr "" "间的混合。要改变反射量,请使用[member roughness]。" 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 "" +"调整镜面反射的强度。镜面反射由场景反射和镜面波瓣组成,镜面波瓣是从光源反射的" +"亮点。当设置为 [code]0.0[/code] 时,镜面反射将不可见。这与 [constant " +"SPECULAR_DISABLED] [enum SpecularMode] 不同,因为 [constant " +"SPECULAR_DISABLED] 仅适用于来自光源的镜面反射波瓣。\n" +"[b]注意:[/b]与 [member metallic] 不同,这不是节能的,所以在大多数情况下应将" +"其保留在 [code]0.5[/code]。另见 [member roughness]。" + +msgid "" "Texture used to specify metallic for an object. This is multiplied by " "[member metallic]." msgstr "用于指定对象的金属质感。这个值会与 [member metallic] 相乘。" @@ -14099,14 +15192,19 @@ msgid "" "the red channel, roughness in the blue, and ambient occlusion in the green " "you could reduce the number of textures you use." msgstr "" -"指定存储金属信息的 [member metallic_texture] 的通道。当您在一个纹理中存储多个" -"效果的信息时,这很有用。例如,如果您将金属效果存储在红色通道中,将粗糙度存储" -"在蓝色通道中,将环境遮挡存储在绿色通道中,就可以减少您使用的纹理数量。" +"指定存储金属度信息的 [member metallic_texture] 的通道。当将多个效果的信息存储" +"在单个纹理中时,这很有用。例如,如果在红色通道中存储金属度,在蓝色通道中存储" +"粗糙度,在绿色通道中存储环境遮挡,则可以减少使用的纹理数量。" msgid "The width of the shape outine." msgstr "形状轮廓的宽度。" msgid "" +"The width of the range around the shape between the minimum and maximum " +"representable signed distance." +msgstr "围绕最小和最大可表示有符号距离之间的形状的范围的宽度。" + +msgid "" "If [code]true[/code], depth testing is disabled and the object will be drawn " "in render order." msgstr "如果为 [code]true[/code],深度测试被禁用,对象将按渲染顺序绘制。" @@ -14156,6 +15254,18 @@ msgstr "" "detail_normal]。" msgid "" +"The Occlusion/Roughness/Metallic texture to use. This is a more efficient " +"replacement of [member ao_texture], [member roughness_texture] and [member " +"metallic_texture] in [ORMMaterial3D]. Ambient occlusion is stored in the red " +"channel. Roughness map is stored in the green channel. Metallic map is " +"stored in the blue channel. The alpha channel is ignored." +msgstr "" +"要使用的遮挡/粗糙度/金属纹理。这是对 [ORMMaterial3D] 中 [member ao_texture]、" +"[member roughness_texture]、和 [member metallic_texture] 的更有效替代。环境遮" +"挡被存储在红色通道中。粗糙度贴图被存储在绿色通道中。金属度贴图被存储在蓝色通" +"道中。Alpha 通道将被忽略。" + +msgid "" "The number of horizontal frames in the particle sprite sheet. Only enabled " "when using [constant BILLBOARD_PARTICLES]. See [member billboard_mode]." msgstr "" @@ -14192,14 +15302,46 @@ msgstr "" "一个对象的距离淡出。" msgid "" +"If [code]true[/code], the refraction effect is enabled. Distorts " +"transparency based on light from behind the object." +msgstr "" +"如果为 [code]true[/code],则启用折射效果。根据来自对象后面的光线来扭曲透明" +"度。" + +msgid "The strength of the refraction effect." +msgstr "折射效果的强度。" + +msgid "" "Texture that controls the strength of the refraction per-pixel. Multiplied " "by [member refraction_scale]." msgstr "控制每个像素折射强度的纹理。会与 [member refraction_scale] 相乘。" +msgid "" +"Specifies the channel of the [member refraction_texture] in which the " +"refraction information is stored. This is useful when you store the " +"information for multiple effects in a single texture. For example if you " +"stored refraction in the red channel, roughness in the blue, and ambient " +"occlusion in the green you could reduce the number of textures you use." +msgstr "" +"指定存储折射信息的 [member refraction_texture] 的通道。当将多个效果的信息存储" +"在单个纹理中时,这很有用。例如,如果在红色通道中存储折射,在蓝色通道中存储粗" +"糙度,在绿色通道中存储环境遮挡,则可以减少使用的纹理数量。" + msgid "Sets the strength of the rim lighting effect." msgstr "设置边缘照明效果的强度。" msgid "" +"If [code]true[/code], rim effect is enabled. Rim lighting increases the " +"brightness at glancing angles on an object.\n" +"[b]Note:[/b] Rim lighting is not visible if the material's [member " +"shading_mode] is [constant SHADING_MODE_UNSHADED]." +msgstr "" +"如果为 [code]true[/code],则启用边缘效果。边缘照明会增加物体上掠射角度的亮" +"度。\n" +"[b]注意:[/b]如果材质的 [member shading_mode] 为 [constant " +"SHADING_MODE_UNSHADED],则边缘照明不可见。" + +msgid "" "Texture used to set the strength of the rim lighting effect per-pixel. " "Multiplied by [member rim]." msgstr "纹理用于设置每个像素的边缘光照效果的强度。会与 [member rim] 相乘。" @@ -14226,6 +15368,17 @@ msgid "" msgstr "用于控制每个像素粗糙度的纹理。会与 [member roughness] 相乘。" msgid "" +"Specifies the channel of the [member roughness_texture] in which the " +"roughness 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 "" +"指定存储粗糙度信息的[member roughness_texture]的通道。当将多个效果的信息存储" +"在单个纹理中时,这很有用。例如,如果在红色通道中存储金属度,在蓝色通道中存储" +"粗糙度,在绿色通道中存储环境遮挡,则可以减少使用的纹理数量。" + +msgid "" "Sets whether the shading takes place, per-pixel, per-vertex or unshaded. Per-" "vertex lighting is faster, making it the best choice for mobile " "applications, however it looks considerably worse than per-pixel. Unshaded " @@ -14249,14 +15402,34 @@ msgstr "" "面上很有用。" msgid "" +"The method for rendering the specular blob. See [enum SpecularMode].\n" +"[b]Note:[/b] [member specular_mode] only applies to the specular blob. It " +"does not affect specular reflections from the sky, screen-space reflections, " +"[VoxelGI], SDFGI or [ReflectionProbe]s. To disable reflections from these " +"sources as well, set [member metallic_specular] to [code]0.0[/code] instead." +msgstr "" +"渲染镜面反射斑点的方法。请参阅 [enum SpecularMode]。\n" +"[b]注意:[/b][member specular_mode] 仅适用于镜面反射斑点。它不影响来自天空的" +"镜面反射、屏幕空间反射、[VoxelGI]、SDFGI 或 [ReflectionProbe]。要同时禁用来自" +"这些源的反射,请将 [member metallic_specular] 设置为 [code]0.0[/code]。" + +msgid "" "If [code]true[/code], subsurface scattering is enabled. Emulates light that " "penetrates an object's surface, is scattered, and then emerges." msgstr "" "如果为 [code]true[/code],则启用次表面散射。模拟光线穿透物体表面,被散射,然" "后出现。" +msgid "" +"If [code]true[/code], subsurface scattering will use a special mode " +"optimized for the color and density of human skin, such as boosting the " +"intensity of the red channel in subsurface scattering." +msgstr "" +"如果为 [code]true[/code],则次表面散射将使用针对人类皮肤的颜色和密度进行优化" +"的特殊模式,例如提升次表面散射中红色通道的强度。" + msgid "The strength of the subsurface scattering effect." -msgstr "地下散射效应的强度。" +msgstr "次表面散射效果的强度。" msgid "" "Texture used to control the subsurface scattering strength. Stored in the " @@ -14265,6 +15438,38 @@ msgstr "" "用于控制次表面散射强度的纹理。存储在红色纹理通道中。会与 [member " "subsurf_scatter_strength] 相乘。" +msgid "The intensity of the subsurface scattering transmittance effect." +msgstr "次表面散射透射率效果的强度。" + +msgid "" +"The color to multiply the subsurface scattering transmittance effect with. " +"Ignored if [member subsurf_scatter_skin_mode] is [code]true[/code]." +msgstr "" +"与次表面散射透射率效果相乘的颜色。[member subsurf_scatter_skin_mode] 为 " +"[code]true[/code] 时忽略。" + +msgid "The depth of the subsurface scattering transmittance effect." +msgstr "次表面散射透射率效果的深度。" + +msgid "" +"If [code]true[/code], enables subsurface scattering transmittance. Only " +"effective if [member subsurf_scatter_enabled] is [code]true[/code]. See also " +"[member backlight_enabled]." +msgstr "" +"如果为 [code]true[/code],则启用次表面散射透射率。仅当 [member " +"subsurf_scatter_enabled] 为 [code]true[/code] 时有效。另请参见 [member " +"backlight_enabled]。" + +msgid "" +"The texture to use for multiplying the intensity of the subsurface " +"scattering transmitteance intensity. See also [member " +"subsurf_scatter_texture]. Ignored if [member subsurf_scatter_skin_mode] is " +"[code]true[/code]." +msgstr "" +"用于乘以次表面散射透射率强度的纹理。另请参见 [member " +"subsurf_scatter_texture]。[member subsurf_scatter_skin_mode] 为 [code]true[/" +"code] 时忽略。" + msgid "" "Filter flags for the texture. See [enum TextureFilter] for options.\n" "[b]Note:[/b] [member heightmap_texture] is always sampled with linear " @@ -14273,23 +15478,34 @@ msgid "" "transitions between pixels, resize the heightmap texture in an image editor " "with nearest-neighbor filtering." msgstr "" -"纹理的过滤标志。可选项见 [enum TextureFilter]。\n" +"纹理的过滤标志。有关选项,请参阅 [enum TextureFilter]。\n" "[b]注意:[/b]即便这里选择了最近邻过滤,[member heightmap_texture] 也始终使用" -"线性过滤采样。这是为了确保高度图效果看起来符合预期。如果您需要像素之间的高度" -"过渡更加清晰,请在图像编辑器中使用最近邻过滤调整高度图纹理的大小。" +"线性过滤采样。这是为了确保高度图效果看起来符合预期。如果需要像素之间的高度过" +"渡更加清晰,请在图像编辑器中使用最近邻过滤调整高度图纹理的大小。" msgid "Repeat flags for the texture. See [enum TextureFilter] for options." msgstr "纹理的重复标志。可选项见 [enum TextureFilter]。" msgid "" -"If [code]true[/code], transparency is enabled on the body. Some transparency " -"modes will disable shadow casting. Any transparency mode other than Disabled " -"has a greater performance impact compared to opaque rendering. See also " -"[member blend_mode]." +"If [code]true[/code], enables parts of the shader required for " +"[GPUParticles3D] trails to function. This also requires using a mesh with " +"appropriate skinning, such as [RibbonTrailMesh] or [TubeTrailMesh]. Enabling " +"this feature outside of materials used in [GPUParticles3D] meshes will break " +"material rendering." +msgstr "" +"如果为 [code]true[/code],则启用 [GPUParticles3D] 尾迹所需的部分着色器以发挥" +"作用。这也需要使用具有适当蒙皮的网格,例如 [RibbonTrailMesh] 或 " +"[TubeTrailMesh]。在 [GPUParticles3D] 网格中使用的材质之外启用该功能将破坏材质" +"渲染。" + +msgid "" +"If [code]true[/code], render point size can be changed.\n" +"[b]Note:[/b] This is only effective for objects whose geometry is point-" +"based rather than triangle-based. See also [member point_size]." msgstr "" -"如果为 [code]true[/code],则在实体上启用透明度。一些透明模式将禁用阴影投射。" -"与不透明渲染相比,除了禁用以外的任何透明模式都会对性能产生更大的影响。另见 " -"[member blend_mode]。" +"如果为 [code]true[/code],可以改变渲染点大小。\n" +"[b]注意:[/b]这仅对几何形状基于点而非基于三角形的对象有效。另见 [member " +"point_size]。" msgid "" "How much to offset the [code]UV[/code] coordinates. This amount will be " @@ -14329,6 +15545,43 @@ msgstr "" "合纹理,所以当你试图实现清晰的纹理时,它是不合适的。" msgid "" +"A lower number blends the texture more softly while a higher number blends " +"the texture more sharply.\n" +"[b]Note:[/b] [member uv1_triplanar_sharpness] is clamped between [code]0.0[/" +"code] and [code]150.0[/code] (inclusive) as values outside that range can " +"look broken depending on the mesh." +msgstr "" +"数字越小使纹理混合得越柔和,数字越大使纹理混合得越锐利。\n" +"[b]注意:[/b][member uv1_triplanar_sharpness] 被钳制在 [code]0.0[/code] 和 " +"[code]150.0[/code](包括)之间,因为超出该范围的值可能看起来会破损,具体取决" +"于网格。" + +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]." +msgstr "" +"如果为 [code]true[/code],则 [code]UV[/code] 的三平面映射是在世界空间而不是对" +"象局部空间中计算的。另见 [member uv1_triplanar]。" + +msgid "" +"How much to offset the [code]UV2[/code] coordinates. This amount will be " +"added to [code]UV2[/code] in the vertex function. This can be used to offset " +"a texture. The Z component is used when [member uv2_triplanar] is enabled, " +"but it is not used anywhere else." +msgstr "" +"[code]UV2[/code] 坐标的偏移量。在顶点函数中这个量将被加到 [code]UV2[/code] " +"中。这可以用来偏移纹理。Z 分量仅在启用 [member uv2_triplanar] 时使用,在其他" +"任何地方不会被使用。" + +msgid "" +"How much to scale the [code]UV2[/code] coordinates. This is multiplied by " +"[code]UV2[/code] in the vertex function. The Z component is used when " +"[member uv2_triplanar] is enabled, but it is not used anywhere else." +msgstr "" +"[code]UV2[/code] 坐标的缩放比例。在顶点函数中该属性乘以 [code]UV2[/code]。Z " +"分量仅在启用 [member uv2_triplanar] 时使用,在其他任何地方不会被使用。" + +msgid "" "If [code]true[/code], instead of using [code]UV2[/code] textures will use a " "triplanar texture lookup to determine how to apply textures. Triplanar uses " "the orientation of the object's surface to blend between texture " @@ -14347,6 +15600,40 @@ msgstr "" "要更多的纹理读取,所以它比普通的 UV 纹理处理要慢得多。此外,由于它是在三个轴" "之间混合纹理,所以当你试图实现清晰的纹理时,它是不合适的。" +msgid "" +"A lower number blends the texture more softly while a higher number blends " +"the texture more sharply.\n" +"[b]Note:[/b] [member uv2_triplanar_sharpness] is clamped between [code]0.0[/" +"code] and [code]150.0[/code] (inclusive) as values outside that range can " +"look broken depending on the mesh." +msgstr "" +"数字越小使纹理混合得越柔和,数字越大使纹理混合得越锐利。\n" +"[b]注意:[/b][member uv2_triplanar_sharpness] 被钳制在 [code]0.0[/code] 和 " +"[code]150.0[/code](包括)之间,因为超出该范围的值可能看起来会破损,具体取决" +"于网格。" + +msgid "" +"If [code]true[/code], triplanar mapping for [code]UV2[/code] is calculated " +"in world space rather than object local space. See also [member " +"uv2_triplanar]." +msgstr "" +"如果为 [code]true[/code],则 [code]UV2[/code] 的三平面映射是在世界空间而不是" +"对象局部空间中计算的。另见 [member uv2_triplanar]。" + +msgid "" +"If [code]true[/code], vertex colors are considered to be stored in sRGB " +"color space and are converted to linear color space during rendering. If " +"[code]false[/code], vertex colors are considered to be stored in linear " +"color space and are rendered as-is. See also [member " +"albedo_texture_force_srgb].\n" +"[b]Note:[/b] Only effective when using the Forward+ and Mobile rendering " +"methods, not Compatibility." +msgstr "" +"如果为 [code]true[/code],则顶点颜色被认为使用 sRGB 颜色空间存储,并在渲染期" +"间被转换为线性颜色空间。如果为 [code]false[/code],则顶点颜色被认为使用线性颜" +"色空间存储并按原样渲染。另见 [member albedo_texture_force_srgb]。\n" +"[b]注意:[/b]仅在使用 Forward+ 和移动渲染方式时有效,不支持兼容模式。" + msgid "If [code]true[/code], the vertex color is used as albedo color." msgstr "如果为 [code]true[/code],则使用顶点颜色作为反射率颜色。" @@ -14354,13 +15641,13 @@ msgid "Texture specifying per-pixel color." msgstr "指定每个像素颜色的纹理。" msgid "Texture specifying per-pixel metallic value." -msgstr "指定每个像素金属值的纹理。" +msgstr "指定每个像素金属度值的纹理。" msgid "Texture specifying per-pixel roughness value." msgstr "指定每个像素粗糙度值的纹理。" msgid "Texture specifying per-pixel emission color." -msgstr "指定每个像素发射颜色的纹理。" +msgstr "指定每个像素自发光颜色的纹理。" msgid "Texture specifying per-pixel normal vector." msgstr "指定每个像素法向量的纹理。" @@ -14479,7 +15766,7 @@ msgstr "该材质将不使用透明度。渲染最快。" msgid "" "The material will use the texture's alpha values for transparency. This is " "the slowest to render, and disables shadow casting." -msgstr "该材质将使用纹理的 alpha 值作为透明度。渲染最慢,会禁用阴影投射。" +msgstr "该材质将使用纹理的 Alpha 值作为透明度。渲染最慢,且会禁用阴影投射。" msgid "" "The material will cut off all values below a threshold, the rest will remain " @@ -14487,8 +15774,8 @@ msgid "" "faster to render than alpha blending, but slower than opaque rendering. This " "also supports casting shadows." msgstr "" -"该材质会将低于某个阈值的值截断,其他部分保持不透明。不透明部分在深度预渲染阶" -"段进行渲染。比 Alpha 混合快,但比不透明渲染慢。支持投射阴影。" +"该材质会将所有低于阈值的值截断,其余部分将保持不透明。不透明部分将在深度预通" +"道中渲染。这比 Alpha 混合的渲染速度更快,但比不透明渲染慢。支持投射阴影。" msgid "" "The material will cut off all values below a spatially-deterministic " @@ -14496,8 +15783,8 @@ msgid "" "blending, but slower than opaque rendering. This also supports casting " "shadows. Alpha hashing is suited for hair rendering." msgstr "" -"该材质会将低于某个空间确定性阈值的值截断,其他部分保持不透明。比 Alpha 混合" -"快,但比不透明渲染慢。支持投射阴影。Alpha 哈希适合毛发渲染。" +"该材质会将所有低于空间确定性阈值的值截断,其余部分将保持不透明。这比 Alpha 混" +"合的渲染速度更快,但比不透明渲染慢。支持投射阴影。Alpha 哈希适合毛发渲染。" msgid "" "The material will use the texture's alpha value for transparency, but will " @@ -14505,8 +15792,8 @@ msgid "" "and fragments with an alpha less than 0.1 during the shadow pass. This also " "supports casting shadows." msgstr "" -"该材质将使用纹理的 alpha 值作为透明度,但会在深度预渲染阶段丢弃 alpha 小于 " -"0.99 的片段,在阴影阶段丢弃 alpha 小于 0.1 的片段。支持投射阴影。" +"该材质将使用纹理的 Alpha 值作为透明度,但会在深度预通道阶段丢弃 Alpha 小于 " +"0.99 的片段,并在阴影通道期间丢弃 Alpha 小于 0.1 的片段。支持投射阴影。" msgid "Represents the size of the [enum Transparency] enum." msgstr "代表 [enum Transparency] 枚举的大小。" @@ -14514,7 +15801,19 @@ msgstr "代表 [enum Transparency] 枚举的大小。" msgid "" "The object will not receive shadows. This is the fastest to render, but it " "disables all interactions with lights." -msgstr "该对象不会接受阴影。渲染速度最快,但会禁用与灯光的所有互动。" +msgstr "该对象不会接受阴影。渲染速度最快,但会禁用与灯光的所有交互。" + +msgid "" +"The object will be shaded per pixel. Useful for realistic shading effects." +msgstr "对象将逐像素进行着色。对于逼真的阴影效果很有用。" + +msgid "" +"The object will be shaded per vertex. Useful when you want cheaper shaders " +"and do not care about visual quality. Not implemented yet (this mode will " +"act like [constant SHADING_MODE_PER_PIXEL])." +msgstr "" +"对象将逐顶点进行着色。当想要更便宜的着色器并且不关心视觉质量时很有用。尚未实" +"现(该模式的行为类似于 [constant SHADING_MODE_PER_PIXEL])。" msgid "Represents the size of the [enum ShadingMode] enum." msgstr "代表 [enum ShadingMode] 枚举的大小。" @@ -14561,10 +15860,10 @@ msgstr "代表 [enum Feature] 枚举的大小。" msgid "" "Default blend mode. The color of the object is blended over the background " "based on the object's alpha value." -msgstr "默认的混合模式。根据对象的 Alpha 值,在背景上混合对象的颜色。" +msgstr "默认的混合模式。根据对象的 Alpha 值,将对象的颜色混合到背景上。" msgid "The color of the object is added to the background." -msgstr "对象的颜色被添加到背景中。" +msgstr "对象的颜色被加到背景中。" msgid "The color of the object is subtracted from the background." msgstr "从背景中减去对象的颜色。" @@ -14590,14 +15889,77 @@ msgstr "" "的 Alpha 值会被传递到 AntiAliasing 采样遮罩。" msgid "" +"Default depth draw mode. Depth is drawn only for opaque objects during the " +"opaque prepass (if any) and during the opaque pass." +msgstr "" +"默认的深度绘制模式。在不透明预通道(如果有)和不透明通道期间,仅为不透明对象" +"绘制深度。" + +msgid "" +"Objects will write to depth during the opaque and the transparent passes. " +"Transparent objects that are close to the camera may obscure other " +"transparent objects behind them.\n" +"[b]Note:[/b] This does not influence whether transparent objects are " +"included in the depth prepass or not. For that, see [enum Transparency]." +msgstr "" +"在不透明和透明通道期间,对象将写入深度。靠近相机的透明物体可能会遮挡它们后面" +"的其他透明物体。\n" +"[b]注意:[/b]这不影响透明对象是否包含在深度预通道中。为此,请参阅 [enum " +"Transparency]。" + +msgid "" +"Objects will not write their depth to the depth buffer, even during the " +"depth prepass (if enabled)." +msgstr "" +"对象不会将其深度写入深度缓冲区,即使在深度预通道期间(如果启用)也是如此。" + +msgid "" +"Default cull mode. The back of the object is culled when not visible. Back " +"face triangles will be culled when facing the camera. This results in only " +"the front side of triangles being drawn. For closed-surface meshes, this " +"means that only the exterior of the mesh will be visible." +msgstr "" +"默认剔除模式。对象的背面在不可见时被剔除。面对相机时,背面三角形将被剔除。这" +"导致仅绘制三角形的正面。对于封闭表面网格,这意味着只有网格的外部可见。" + +msgid "" +"Front face triangles will be culled when facing the camera. This results in " +"only the back side of triangles being drawn. For closed-surface meshes, this " +"means that the interior of the mesh will be drawn instead of the exterior." +msgstr "" +"面对相机时,正面三角形将被剔除。这导致仅绘制三角形的背面。对于封闭表面网格," +"这意味着将绘制网格的内部而不是外部。" + +msgid "" "No face culling is performed; both the front face and back face will be " "visible." -msgstr "不进行面剔除;正反面均可见。" +msgstr "不执行面剔除;正反面均可见。" + +msgid "" +"Disables the depth test, so this object is drawn on top of all others drawn " +"before it. This puts the object in the transparent draw pass where it is " +"sorted based on distance to camera. Objects drawn after it in the draw order " +"may cover it. This also disables writing to depth." +msgstr "" +"禁用深度测试,所以这个对象将被绘制到在它之前绘制的所有其他对象之上。这会将对" +"象置于透明绘制通道中,并根据到相机的距离对其进行排序。按照绘制顺序在它之后绘" +"制的对象可能会覆盖它。会禁用深度写入。" msgid "Set [code]ALBEDO[/code] to the per-vertex color specified in the mesh." msgstr "将 [code]ALBEDO[/code] 设置为网格中指定的每顶点颜色。" msgid "" +"Vertex colors are considered to be stored in sRGB color space and are " +"converted to linear color space during rendering. See also [member " +"vertex_color_is_srgb].\n" +"[b]Note:[/b] Only effective when using the Forward+ and Mobile rendering " +"methods." +msgstr "" +"顶点颜色被认为使用 sRGB 颜色空间存储,并在渲染期间转换为线性颜色空间。另见 " +"[member vertex_color_is_srgb]。\n" +"[b]注意:[/b]仅在使用 Forward+ 和移动渲染方式时有效。" + +msgid "" "Uses point size to alter the size of primitive points. Also changes the " "albedo texture lookup to use [code]POINT_COORD[/code] instead of [code]UV[/" "code]." @@ -14636,6 +15998,13 @@ msgid "" "emission_texture]." msgstr "使用 [code]UV2[/code] 坐标从 [member emission_texture] 中查找。" +msgid "" +"Forces the shader to convert albedo from sRGB space to linear space. See " +"also [member albedo_texture_force_srgb]." +msgstr "" +"强制着色器将反照率从 sRGB 空间转换为线性空间。另见 [member " +"albedo_texture_force_srgb]。" + msgid "Disables receiving shadows from other objects." msgstr "禁用从其他对象接收阴影。" @@ -14645,6 +16014,37 @@ msgstr "禁用接收环境光。" msgid "Enables the shadow to opacity feature." msgstr "启用阴影到不透明度功能。" +msgid "" +"Enables the texture to repeat when UV coordinates are outside the 0-1 range. " +"If using one of the linear filtering modes, this can result in artifacts at " +"the edges of a texture when the sampler filters across the edges of the " +"texture." +msgstr "" +"当 UV 坐标超出 0-1 范围时,使纹理能够重复。如果使用其中一种线性过滤模式,则当" +"采样器过滤纹理边缘时,这可能会导致纹理边缘出现伪影。" + +msgid "" +"Invert values read from a depth texture to convert them to height values " +"(heightmap)." +msgstr "反转从深度纹理读取的值以将它们转换为高度值(高度图)。" + +msgid "" +"Enables the skin mode for subsurface scattering which is used to improve the " +"look of subsurface scattering when used for human skin." +msgstr "" +"启用用于次表面散射的皮肤模式,该模式用于改善被用于人体皮肤时的次表面散射的外" +"观。" + +msgid "" +"Enables parts of the shader required for [GPUParticles3D] trails to " +"function. This also requires using a mesh with appropriate skinning, such as " +"[RibbonTrailMesh] or [TubeTrailMesh]. Enabling this feature outside of " +"materials used in [GPUParticles3D] meshes will break material rendering." +msgstr "" +"启用使 [GPUParticles3D] 尾迹生效所需的部分着色器。这也需要使用具有适当蒙皮的" +"网格,例如 [RibbonTrailMesh] 或 [TubeTrailMesh]。在 [GPUParticles3D] 网格中使" +"用的材质之外启用该功能将破坏材质的渲染。" + msgid "Enables multichannel signed distance field rendering shader." msgstr "启用多通道有符号距离场渲染着色器。" @@ -14683,6 +16083,18 @@ 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. 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 "用来读取纹理的红色通道。" @@ -14695,19 +16107,45 @@ msgstr "用来读取纹理的蓝色通道。" msgid "Used to read from the alpha channel of a texture." msgstr "用来读取纹理的 Alpha 通道。" +msgid "" +"Used to read from the linear (non-perceptual) average of the red, green and " +"blue channels of a texture." +msgstr "用于读取纹理的红色、绿色和蓝色通道的线性(非感知)平均值。" + msgid "Adds the emission color to the color from the emission texture." -msgstr "将发射颜色添加到发射纹理的颜色上。" +msgstr "将自发光颜色加到自发光纹理的颜色上。" msgid "Multiplies the emission color by the color from the emission texture." -msgstr "将发射颜色乘以发射纹理的颜色。" +msgstr "将自发光颜色乘以自发光纹理的颜色。" msgid "Do not use distance fade." -msgstr "不要使用距离淡化。" +msgstr "不使用距离淡化。" msgid "" "Smoothly fades the object out based on each pixel's distance from the camera " "using the alpha channel." -msgstr "根据每个像素与相机的距离,使用 Alpha 通道平滑地淡化对象。" +msgstr "根据每个像素与相机的距离,使用 Alpha 通道平滑地淡出对象。" + +msgid "" +"Smoothly fades the object out based on each pixel's distance from the camera " +"using a dithering approach. Dithering discards pixels based on a set pattern " +"to smoothly fade without enabling transparency. On certain hardware, this " +"can be faster than [constant DISTANCE_FADE_PIXEL_ALPHA]." +msgstr "" +"根据每个像素与相机的距离,使用一种抖动方法平滑地淡出对象。抖动会根据设定的模" +"式丢弃像素,在不启用透明的情况下平滑淡化。在某些硬件上,该选项可能比 " +"[constant DISTANCE_FADE_PIXEL_ALPHA] 更快。" + +msgid "" +"Smoothly fades the object out based on the object's distance from the camera " +"using a dithering approach. Dithering discards pixels based on a set pattern " +"to smoothly fade without enabling transparency. On certain hardware, this " +"can be faster than [constant DISTANCE_FADE_PIXEL_ALPHA] and [constant " +"DISTANCE_FADE_PIXEL_DITHER]." +msgstr "" +"根据对象与相机的距离,使用一种抖动方法平滑淡出对象。抖动根据设定的模式丢弃像" +"素,在不启用透明的情况下平滑淡化。在某些硬件上,该选项可能比 [constant " +"DISTANCE_FADE_PIXEL_ALPHA] 和 [constant DISTANCE_FADE_PIXEL_DITHER] 更快。" msgid "3×3 matrix datatype." msgstr "3×3 矩阵数据类型。" @@ -14770,7 +16208,38 @@ msgid "" "invalid." msgstr "" "返回基矩阵的行列式。如果基是均匀缩放的,它的行列式是缩放的平方。\n" -"负的行列式意味着基的比例是负的。负的行列式意味着基不可逆,通常被认为无效。" +"负的行列式意味着基的缩放是负的。负的行列式意味着基不可逆,通常被认为无效。" + +msgid "" +"Constructs a pure rotation Basis matrix from Euler angles in the specified " +"Euler rotation order. By default, use YXZ order (most common). See the [enum " +"EulerOrder] enum for possible values." +msgstr "" +"按照指定的欧拉旋转顺序,从欧拉角中构造一个纯旋转的 Basis 矩阵。默认情况下,使" +"用 YXZ 顺序(最常用)。参见枚举 [enum EulerOrder] 的可能值。" + +msgid "" +"Constructs a pure scale basis matrix with no rotation or shearing. The scale " +"values are set as the diagonal of the matrix, and the other parts of the " +"matrix are zero." +msgstr "" +"构造一个没有旋转或剪切的纯缩放基础矩阵。scale 值被设置为矩阵的对角线,矩阵的" +"其他部分为零。" + +msgid "" +"Returns the basis's rotation in the form of Euler angles. The Euler order " +"depends on the [param order] parameter, by default it uses the YXZ " +"convention: when decomposing, first Z, then X, and Y last. The returned " +"vector contains the rotation angles in the format (X angle, Y angle, Z " +"angle).\n" +"Consider using the [method get_rotation_quaternion] method instead, which " +"returns a [Quaternion] quaternion instead of Euler angles." +msgstr "" +"以欧拉角的形式返回基的旋转。欧拉顺序取决于 [param order] 参数,默认使用 YXZ " +"惯例:分解时,先 Z、再 X、最后 Y。返回的向量包含格式为(X 角、Y 角、Z 角)的" +"旋转角。\n" +"可考虑改用 [method get_rotation_quaternion] 方法,将返回 [Quaternion] 四元数" +"而不是欧拉角。" msgid "" "Returns the basis's rotation in the form of a quaternion. See [method " @@ -14824,6 +16293,13 @@ msgstr "" "的)。这将在矩阵的基上执行 Gram-Schmidt 正交化。" msgid "" +"Introduce an additional rotation around the given axis by [param angle] (in " +"radians). The axis must be a normalized vector." +msgstr "" +"围绕给定轴线引入一个额外的旋转 [param angle](单位为弧度)。该轴必须是一个归" +"一化的向量。" + +msgid "" "Introduce an additional scaling specified by the given 3D scaling factor." msgstr "引入一个由给定的 3D 缩放因子指定的附加缩放。" @@ -14894,6 +16370,14 @@ msgstr "" "[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" "靠。" +msgid "" +"Composes these two basis matrices by multiplying them together. This has the " +"effect of transforming the second basis (the child) by the first basis (the " +"parent)." +msgstr "" +"通过将这两个 basis 矩阵相乘来组合它们。这具有使用第一个 basis(父项)变换第二" +"个 basis(子项)的效果。" + msgid "Transforms (multiplies) the [Vector3] by the given [Basis] matrix." msgstr "使用给定的 [Basis] 矩阵变换(乘)该 [Vector3]。" @@ -14911,6 +16395,14 @@ msgstr "" "[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" "靠。" +msgid "" +"Access basis components using their index. [code]b[0][/code] is equivalent " +"to [code]b.x[/code], [code]b[1][/code] is equivalent to [code]b.y[/code], " +"and [code]b[2][/code] is equivalent to [code]b.z[/code]." +msgstr "" +"使用索引访问基的分量。[code]b[0][/code] 相当于 [code]b.x[/code]、[code]b[1][/" +"code] 相当于 [code]b.y[/code]、[code] b[2][/code] 相当于 [code]b.z[/code]。" + msgid "Boolean matrix." msgstr "布尔矩阵。" @@ -14952,6 +16444,44 @@ msgstr "返回位图在指定位置的值。" msgid "Returns bitmap's dimensions." msgstr "返回位图的尺寸。" +msgid "" +"Returns the number of bitmap elements that are set to [code]true[/code]." +msgstr "返回设置为 [code]true[/code] 的位图元素的数量。" + +msgid "" +"Applies morphological dilation or erosion to the bitmap. If [param pixels] " +"is positive, dilation is applied to the bitmap. If [param pixels] is " +"negative, erosion is applied to the bitmap. [param rect] defines the area " +"where the morphological operation is applied. Pixels located outside the " +"[param rect] are unaffected by [method grow_mask]." +msgstr "" +"对位图进行形态学膨胀或腐蚀操作。如果 [param pixels] 为正,则对位图执行膨胀。" +"如果 [param pixels] 为负,则对位图执行腐蚀。[param rect] 定义进行形态学操作的" +"区域。位于 [param rect]] 之外的像素不会被 [method grow_mask] 影响。" + +msgid "" +"Creates an [Array] of polygons covering a rectangular portion of the bitmap. " +"It uses a marching squares algorithm, followed by Ramer-Douglas-Peucker " +"(RDP) reduction of the number of vertices. Each polygon is described as a " +"[PackedVector2Array] of its vertices.\n" +"To get polygons covering the whole bitmap, pass:\n" +"[codeblock]\n" +"Rect2(Vector2(), get_size())\n" +"[/codeblock]\n" +"[param epsilon] is passed to RDP to control how accurately the polygons " +"cover the bitmap: a lower [param epsilon] corresponds to more points in the " +"polygons." +msgstr "" +"创建一个多边形 [Array],以覆盖位图的矩形部分。它使用行进方块算法,然后使用 " +"Ramer-Douglas-Peucker(RDP)减少顶点数。每个多边形都被描述为其顶点的 " +"[PackedVector2Array]。\n" +"要获取覆盖整个位图的多边形,请传递:\n" +"[codeblock]\n" +"Rect2(Vector2(), get_size())\n" +"[/codeblock]\n" +"[param epsilon] 被传递给 RDP,以控制多边形覆盖位图的准确程度:[param " +"epsilon] 越低,对应的多边形中的点越多。" + msgid "Resizes the image to [param new_size]." msgstr "将该图像的大小修改为 [param new_size]。" @@ -14999,9 +16529,24 @@ msgstr "" "它无法自动计算这些值并会打印一条警告。" msgid "" +"Returns the angle of the bone in the [code]Bone2D[/code] node.\n" +"[b]Note:[/b] This is different from the [code]Bone2D[/code]'s rotation. The " +"bone angle is the rotation of the bone shown by the [code]Bone2D[/code] " +"gizmo, and because [code]Bone2D[/code] bones are based on positions, this " +"can vary from the actual rotation of the [code]Bone2D[/code] node." +msgstr "" +"返回 [code]Bone2D[/code] 节点中骨骼的角度。\n" +"[b]注意:[/b]这与 [code]Bone2D[/code] 的旋转不同。骨骼角度是 [code]Bone2D[/" +"code] 小工具显示的骨骼旋转,因为 [code]Bone2D[/code] 骨骼基于位置,这可能与 " +"[code]Bone2D[/code] 节点的实际旋转不同。" + +msgid "" "Returns the node's index as part of the entire skeleton. See [Skeleton2D]." msgstr "返回节点在整个骨架中的索引号。见 [Skeleton2D]。" +msgid "Returns the length of the bone in the [code]Bone2D[/code] node." +msgstr "返回 [code]Bone2D[/code] 节点中骨骼的长度。" + msgid "" "Returns the node's [member rest] [code]Transform2D[/code] if it doesn't have " "a parent, or its rest pose relative to its parent." @@ -15019,6 +16564,21 @@ msgstr "" "[code]Bone2D[/code] 节点(如果存在)自动计算骨骼角度和长度。如果不存在子节" "点,[code]Bone2D[/code] 将无法自动计算这些值,并将打印一条警告。" +msgid "" +"Sets the bone angle for the [code]Bone2D[/code] node. This is typically set " +"to the rotation from the [code]Bone2D[/code] node to a child [code]Bone2D[/" +"code] node.\n" +"[b]Note:[/b] This is different from the [code]Bone2D[/code]'s rotation. The " +"bone angle is the rotation of the bone shown by the [code]Bone2D[/code] " +"gizmo, and because [code]Bone2D[/code] bones are based on positions, this " +"can vary from the actual rotation of the [code]Bone2D[/code] node." +msgstr "" +"设置 [code]Bone2D[/code] 节点的骨骼角度。这通常设置为从 [code]Bone2D[/code] " +"节点到子 [code]Bone2D[/code] 节点的旋转。\n" +"[b]注意:[/b]这与 [code]Bone2D[/code] 的旋转不同。骨骼角度是 [code]Bone2D[/" +"code] 小工具显示的骨骼旋转,因为 [code]Bone2D[/code] 骨骼基于位置,这可能与 " +"[code]Bone2D[/code] 节点的实际旋转不同。" + msgid "Sets the length of the bone in the [code]Bone2D[/code] node." msgstr "设置该 [code]Bone2D[/code] 节点中骨骼的长度。" @@ -15032,14 +16592,56 @@ msgid "A node that will attach to a bone." msgstr "会附着在骨骼上的节点。" msgid "" +"This node will allow you to select a bone for this node to attach to. The " +"BoneAttachment3D node can copy the transform of the select bone, or can " +"override the transform of the selected bone.\n" +"The BoneAttachment3D node must either be a child of a [Skeleton3D] node or " +"be given an external [Skeleton3D] to use in order to function properly." +msgstr "" +"该节点将允许选择要附加到该节点的骨骼。BoneAttachment3D 节点可以复制所选骨骼的" +"变换,也可以覆盖所选骨骼的变换。\n" +"BoneAttachment3D 节点必须成为 [Skeleton3D] 节点的子节点,或者被赋给一个外部 " +"[Skeleton3D] 才能正常运行。" + +msgid "" +"Returns the [NodePath] to the external [Skeleton3D] node, if one has been " +"set." +msgstr "返回到外部 [Skeleton3D] 节点的 [NodePath](如果已设置)。" + +msgid "" +"Returns whether the BoneAttachment3D node is using an external [Skeleton3D] " +"rather than attempting to use its parent node as the [Skeleton3D]." +msgstr "" +"返回该 BoneAttachment3D 节点是否正在使用外部 [Skeleton3D],而不是尝试将其父节" +"点用作 [Skeleton3D]。" + +msgid "" +"A function that is called automatically when the [Skeleton3D] the " +"BoneAttachment3D node is using has a bone that has changed its pose. This " +"function is where the BoneAttachment3D node updates its position so it is " +"correctly bound when it is [i]not[/i] set to override the bone pose." +msgstr "" +"当该 BoneAttachment3D 节点正在使用的 [Skeleton3D] 中有骨骼已改变其姿势时,自" +"动调用的函数。该函数是 BoneAttachment3D 节点更新其位置的地方,以便在[i]未[/i]" +"设置为覆盖骨骼姿势时正确绑定。" + +msgid "" +"Sets the [NodePath] to the external skeleton that the BoneAttachment3D node " +"should use. See [method set_use_external_skeleton] to enable the external " +"[Skeleton3D] node." +msgstr "" +"设置该 BoneAttachment3D 节点到其应使用的外部骨架的 [NodePath]。请参阅 " +"[method set_use_external_skeleton] 以启用外部 [Skeleton3D] 节点。" + +msgid "" "Sets whether the BoneAttachment3D node will use an extenral [Skeleton3D] " "node rather than attenpting to use its parent node as the [Skeleton3D]. When " "set to [code]true[/code], the BoneAttachment3D node will use the external " "[Skeleton3D] node set in [method set_external_skeleton]." msgstr "" -"设置 BoneAttachment3D 节点是否将使用外部 [Skeleton3D] 节点,而不是尝试使用其" -"父节点作为 [Skeleton3D]。当设置为 [code]true[/code]时,BoneAttachment3D 节点" -"将使用 [method set_external_skeleton] 中设置的外部 [Skeleton3D] 节点。" +"设置该 BoneAttachment3D 节点是否将使用外部 [Skeleton3D] 节点,而不是尝试使用" +"其父节点作为 [Skeleton3D]。当设置为 [code]true[/code]时,BoneAttachment3D 节" +"点将使用 [method set_external_skeleton] 中设置的外部 [Skeleton3D] 节点。" msgid "The index of the attached bone." msgstr "所附着骨骼的索引。" @@ -15047,6 +16649,16 @@ msgstr "所附着骨骼的索引。" msgid "The name of the attached bone." msgstr "所附着骨骼的名称。" +msgid "" +"Whether the BoneAttachment3D node will override the bone pose of the bone it " +"is attached to. When set to [code]true[/code], the BoneAttachment3D node can " +"change the pose of the bone. When set to [code]false[/code], the " +"BoneAttachment3D will always be set to the bone's transform." +msgstr "" +"BoneAttachment3D 节点是否将覆盖它所附着到的骨骼的骨骼姿势。当设置为 " +"[code]true[/code] 时,BoneAttachment3D 节点可以改变骨骼的姿势。当设置为 " +"[code]false[/code] 时,BoneAttachment3D 将始终被设置为骨骼的变换。" + msgid "Bone map for retargeting." msgstr "用于重定向的骨骼映射。" @@ -15064,6 +16676,16 @@ msgid "Retargeting 3D Skeletons" msgstr "重定向 3D 骨架" msgid "" +"Returns a profile bone name having [param skeleton_bone_name]. If not found, " +"an empty [StringName] will be returned.\n" +"In the retargeting process, the returned bone name is the bone name of the " +"target skeleton." +msgstr "" +"返回具有 [param skeleton_bone_name] 的轮廓骨骼名称。如果没有找到,将返回一个" +"空的 [StringName]。\n" +"在重定向过程中,返回的骨骼名称是目标骨架的骨骼名称。" + +msgid "" "Returns a skeleton bone name is mapped to [param profile_bone_name].\n" "In the retargeting process, the returned bone name is the bone name of the " "source skeleton." @@ -15438,6 +17060,35 @@ msgstr "沿 Y 轴插入的额外边缘环的数量。" msgid "Number of extra edge loops inserted along the X axis." msgstr "沿 X 轴插入的额外边缘环的数量。" +msgid "Cuboid shape for use with occlusion culling in [OccluderInstance3D]." +msgstr "与 [OccluderInstance3D] 中的遮挡剔除一起使用的长方体形状。" + +msgid "" +"[BoxOccluder3D] stores a cuboid shape that can be used by the engine's " +"occlusion culling system.\n" +"See [OccluderInstance3D]'s documentation for instructions on setting up " +"occlusion culling." +msgstr "" +"[BoxOccluder3D] 存储一个长方体形状,可供引擎的遮挡剔除系统使用。\n" +"有关设置遮挡剔除的说明,请参阅 [OccluderInstance3D] 的文档。" + +msgid "The box's size in 3D units." +msgstr "以 3D 单位表示的盒子大小。" + +msgid "Box shape resource for 3D collisions." +msgstr "用于 3D 碰撞的盒形资源。" + +msgid "" +"3D box shape to be added as a [i]direct[/i] child of a [PhysicsBody3D] or " +"[Area3D] using a [CollisionShape3D] node.\n" +"[b]Performance:[/b] Being a primitive collision shape, [BoxShape3D] is fast " +"to check collisions against (though not as fast as [SphereShape3D])." +msgstr "" +"使用 [CollisionShape3D] 节点作为 [PhysicsBody3D] 或 [Area3D] 的[i]直接[/i]子" +"节点时,可被添加的 3D 盒状形状。\n" +"[b]性能:[/b]作为一种原始的碰撞形状,[BoxShape3D] 可以快速检测碰撞(尽管不如 " +"[SphereShape3D] 快)。" + msgid "3D Kinematic Character Demo" msgstr "3D 动力学角色演示" @@ -15523,6 +17174,11 @@ msgid "OS Test Demo" msgstr "操作系统测试演示" msgid "" +"Text alignment policy for the button's text, use one of the [enum " +"HorizontalAlignment] constants." +msgstr "按钮文本的文本对齐策略,使用 [enum HorizontalAlignment] 常量之一。" + +msgid "" "When this property is enabled, text that is too large to fit the button is " "clipped, when disabled the Button will always be wide enough to hold the " "text." @@ -15539,6 +17195,24 @@ msgid "Flat buttons don't display decoration." msgstr "平面按钮不显示装饰。" msgid "" +"Button's icon, if text is present the icon will be placed before the text.\n" +"To edit margin and spacing of the icon, use [theme_item h_separation] theme " +"property and [code]content_margin_*[/code] properties of the used " +"[StyleBox]es." +msgstr "" +"按钮的图标,如果文本存在,则图标将被放置在文本之前。\n" +"要编辑图标的边距和间距,请使用 [theme_item h_separation] 主题属性,和所用 " +"[StyleBox] 的 [code]content_margin_*[/code] 属性。" + +msgid "" +"Specifies if the icon should be aligned to the left, right, or center of a " +"button. Uses the same [enum HorizontalAlignment] constants as the text " +"alignment. If centered, text will draw on top of the icon." +msgstr "" +"指定图标应该在按钮上左对齐、右对齐、还是居中。请使用与文本对齐相同的 [enum " +"TextAlign] 常量。如果居中,则文本将被绘制在图标之上。" + +msgid "" "Language code used for line-breaking and text shaping algorithms, if left " "empty current locale is used instead." msgstr "语言代码,用于断行和文本塑形算法,如果留空则使用当前区域设置。" @@ -15549,6 +17223,14 @@ msgstr "该按钮的文本,将显示在按钮的区域内。" msgid "Base text writing direction." msgstr "基础文本书写方向。" +msgid "" +"Sets the clipping behavior when the text exceeds the node's bounding " +"rectangle. See [enum TextServer.OverrunBehavior] for a description of all " +"modes." +msgstr "" +"设置文本超出节点的边界矩形时的裁剪行为。有关所有模式的描述,请参阅 [enum " +"TextServer.OverrunBehavior]。" + msgid "Default text [Color] of the [Button]." msgstr "该 [Button] 的默认文本 [Color]。" @@ -16134,6 +17816,28 @@ msgstr "" "动。" msgid "" +"If [code]true[/code], the camera only moves when reaching the horizontal " +"(left and right) drag margins. If [code]false[/code], the camera moves " +"horizontally regardless of margins." +msgstr "" +"如果为 [code]true[/code],相机仅在到达水平(左或右)拖动边距时移动。如果为 " +"[code]false[/code],则相机水平移动时不考虑边距。" + +msgid "" +"The relative horizontal drag offset of the camera between the right " +"([code]-1[/code]) and left ([code]1[/code]) drag margins.\n" +"[b]Note:[/b] Used to set the initial horizontal drag offset; determine the " +"current offset; or force the current offset. It's not automatically updated " +"when [member drag_horizontal_enabled] is [code]true[/code] or the drag " +"margins are changed." +msgstr "" +"相机在右侧([code]-1[/code])和左侧([code]1[/code])拖动边距之间的相对水平拖" +"动偏移量。\n" +"[b]注意:[/b]用于设置初始水平拖动偏移量;确定当前偏移量;或强制当前偏移量。" +"当 [member drag_horizontal_enabled] 为 [code]true[/code] 或更改拖动边距时,它" +"不会自动更新。" + +msgid "" "Left margin needed to drag the camera. A value of [code]1[/code] makes the " "camera move only when reaching the left edge of the screen." msgstr "" @@ -16163,6 +17867,20 @@ msgstr "" "果为 [code]false[/code],相机会垂直移动而不管边距。" msgid "" +"The relative vertical drag offset of the camera between the bottom " +"([code]-1[/code]) and top ([code]1[/code]) drag margins.\n" +"[b]Note:[/b] Used to set the initial vertical drag offset; determine the " +"current offset; or force the current offset. It's not automatically updated " +"when [member drag_vertical_enabled] is [code]true[/code] or the drag margins " +"are changed." +msgstr "" +"相机在底部([code]-1[/code])和顶部([code]1[/code])拖动边距之间的相对垂直拖" +"动偏移量。\n" +"[b]注意:[/b]用于设置初始垂直拖动偏移量;确定当前偏移量;或强制当前偏移量。" +"当 [member drag_vertical_enabled] 为 [code]true[/code] 或更改拖动边距时,它不" +"会自动更新。" + +msgid "" "If [code]true[/code], draws the camera's drag margin rectangle in the editor." msgstr "如果为 [code]true[/code],在编辑器中绘制相机的拖动边距矩形。" @@ -16182,11 +17900,11 @@ msgid "" "[code]false[/code], the next enabled [Camera2D] in the scene tree will " "become active." msgstr "" -"控制相机是否可以激活。如果为 [code]true[/code],当 [Camera2D]进入场景树并且当" -"前没有活动的相机时,它将成为主相机(参见 [ method Viewport ." +"控制该相机是否可以激活。如果为 [code]true[/code],当该 [Camera2D] 进入场景树" +"并且当前没有活动的相机时,它将成为主相机(参见 [method Viewport." "get_camera_2d])。\n" -"当相机处于活动状态且 [member enabled]被设置为 [code]false[/code],场景树中下" -"一个启用此项的 [Camera2D]将变为活动状态。" +"当该相机当前处于活动状态且 [member enabled] 被设置为 [code]false[/code] 时," +"则场景树中下一个启用的 [Camera2D] 将变为活动状态。" msgid "" "If [code]true[/code], the camera's rendered view is not affected by its " @@ -16217,16 +17935,73 @@ msgstr "" "以把视图推过该极限。" msgid "" +"If [code]true[/code], the camera smoothly stops when reaches its limits.\n" +"This property has no effect if [member position_smoothing_enabled] is " +"[code]false[/code].\n" +"[b]Note:[/b] To immediately update the camera's position to be within limits " +"without smoothing, even with this setting enabled, invoke [method " +"reset_smoothing]." +msgstr "" +"如果为 [code]true[/code],相机会在达到极限时平滑地停止。\n" +"如果 [member position_smoothing_enabled] 为 [code]false[/code],则该属性无" +"效。\n" +"[b]注意:[/b]要立即将相机的位置更新到限制范围内而不进行平滑,即使启用了该设" +"置,也要调用 [method reset_smoothing]。" + +msgid "" "Top scroll limit in pixels. The camera stops moving when reaching this " "value, but [member offset] can push the view past the limit." msgstr "" "顶部滚动极限,单位为像素。相机会在抵达该值时停止移动,但是 [member offset] 可" "以把视图推过该极限。" +msgid "" +"The camera's relative offset. Useful for looking around or camera shake " +"animations. The offsetted camera can go past the limits defined in [member " +"limit_top], [member limit_bottom], [member limit_left] and [member " +"limit_right]." +msgstr "" +"相机的相对偏移量。用于环顾四周或相机抖动动画。偏移的相机可以超过 [member " +"limit_top]、[member limit_bottom]、[member limit_left] 和 [member " +"limit_right] 中定义的限制。" + +msgid "" +"If [code]true[/code], the camera's view smoothly moves towards its target " +"position at [member position_smoothing_speed]." +msgstr "" +"如果为 [code]true[/code],相机的视图会以 [member position_smoothing_speed] 的" +"速度,平滑地移向其目标位置。" + +msgid "" +"Speed in pixels per second of the camera's smoothing effect when [member " +"position_smoothing_enabled] is [code]true[/code]." +msgstr "" +"当 [member position_smoothing_enabled] 为 [code]true[/code] 时,相机平滑效果" +"的速度,单位为每秒像素。" + msgid "The camera's process callback. See [enum Camera2DProcessCallback]." msgstr "该相机的处理回调。见 [enum Camera2DProcessCallback]。" msgid "" +"If [code]true[/code], the camera's view smoothly rotates, via asymptotic " +"smoothing, to align with its target rotation at [member " +"rotation_smoothing_speed].\n" +"[b]Note:[/b] This property has no effect if [member ignore_rotation] is " +"[code]true[/code]." +msgstr "" +"如果为 [code]true[/code],相机的视图会通过渐近平滑的方式平滑地旋转,以 " +"[member rotation_smoothing_speed] 的速度与其目标旋转对齐。\n" +"[b]注意:[/b]如果 [member ignore_rotation] 为 [code]true[/code],则该属性无" +"效。" + +msgid "" +"The angular, asymptotic speed of the camera's rotation smoothing effect when " +"[member rotation_smoothing_enabled] is [code]true[/code]." +msgstr "" +"当 [member rotation_smoothing_enabled] 为 [code]true[/code] 时,相机旋转平滑" +"效果的角度渐近速度。" + +msgid "" "The camera's zoom. A zoom of [code]Vector(2, 2)[/code] doubles the size seen " "in the viewport. A zoom of [code]Vector(0.5, 0.5)[/code] halves the size " "seen in the viewport.\n" @@ -16296,6 +18071,26 @@ msgstr "" "如果这是当前相机,则将其从当前相机中移除。如果 [param enable_next] 为 " "[code]true[/code],则请求使下一个相机(如果有)成为当前相机。" +msgid "Returns the camera's RID from the [RenderingServer]." +msgstr "从 [RenderingServer] 返回该相机的 RID。" + +msgid "" +"Returns the transform of the camera plus the vertical ([member v_offset]) " +"and horizontal ([member h_offset]) offsets; and any other adjustments made " +"to the position and orientation of the camera by subclassed cameras such as " +"[XRCamera3D]." +msgstr "" +"返回该相机的变换,该变换会加上垂直([member v_offset])和水平([member " +"h_offset])偏移;以及 [XRCamera3D] 等子类相机对相机位置和方向所做的任何其他调" +"整。" + +msgid "" +"Returns whether or not the specified layer of the [member cull_mask] is " +"enabled, given a [param layer_number] between 1 and 20." +msgstr "" +"返回是否启用了 [member cull_mask] 的指定层,该层由一个介于 1 和 20 之间的给" +"定 [param layer_number] 指定。" + msgid "" "Returns the camera's frustum planes in world space units as an array of " "[Plane]s in the following order: near, far, left, top, right, bottom. Not to " @@ -16305,6 +18100,38 @@ msgstr "" "left、top、right、bottom。不要与 [member frustum_offset] 混淆。" msgid "" +"Returns the RID of a pyramid shape encompassing the camera's view frustum, " +"ignoring the camera's near plane. The tip of the pyramid represents the " +"position of the camera." +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 " "to become current once it's added." @@ -16335,7 +18162,7 @@ msgid "" "intersection or picking." msgstr "" "返回世界空间中的法线向量,即通过逆相机投影将点投影到 [Viewport] 矩形上的结" -"果。这对于以 (原点, 法线) 的形式投射光线,以进行对象相交或拾取很有用。" +"果。这对于以(原点,法线)的形式投射光线,以进行对象相交或拾取很有用。" msgid "" "Returns a 3D position in world space, that is the result of projecting a " @@ -16346,6 +18173,71 @@ msgstr "" "返回世界空间中的 3D 位置,即通过逆相机投影将点投影到 [Viewport] 矩形上的结" "果。这对于以(原点,法线)的形式投射光线,以进行对象相交或拾取很有用。" +msgid "" +"Based on [param value], enables or disables the specified layer in the " +"[member cull_mask], given a [param layer_number] between 1 and 20." +msgstr "" +"基于 [param value],启用或禁用 [member cull_mask] 中的指定层,该层由一个介于 " +"1 和 20 之间的给定 [param layer_number] 指定。" + +msgid "" +"Sets the camera projection to frustum mode (see [constant " +"PROJECTION_FRUSTUM]), by specifying a [param size], an [param offset], and " +"the [param z_near] and [param z_far] clip planes in world space units. See " +"also [member frustum_offset]." +msgstr "" +"通过指定的以世界空间单位为单位的 [param size]、[param offset]、以及 [param " +"z_near] 和 [param z_far] 裁剪平面,将相机投影设置为视锥模式(参见 [constant " +"PROJECTION_FRUSTUM])。另请参见 [member frustum_offset]。" + +msgid "" +"Sets the camera projection to orthogonal mode (see [constant " +"PROJECTION_ORTHOGONAL]), by specifying a [param size], and the [param " +"z_near] and [param z_far] clip planes in world space units. (As a hint, 2D " +"games often use this projection, with values specified in pixels.)" +msgstr "" +"通过指定的以世界空间单位为单位的 [param size]、以及 [param z_near] 和 [param " +"z_far] 裁剪平面,将相机投影设置为正交模式(参见 [constant " +"PROJECTION_ORTHOGONAL])。(作为提示,2D 游戏经常使用这种投影,其值以像素为单" +"位指定。)" + +msgid "" +"Sets the camera projection to perspective mode (see [constant " +"PROJECTION_PERSPECTIVE]), by specifying a [param fov] (field of view) angle " +"in degrees, and the [param z_near] and [param z_far] clip planes in world " +"space units." +msgstr "" +"通过指定的以度为单位的 [param fov](视野)角度,以及以世界空间单位为单位的 " +"[param z_near] 和 [param z_far] 裁剪平面,将相机投影设置为透视模式(参见 " +"[constant PROJECTION_PERSPECTIVE])。" + +msgid "" +"Returns the 2D coordinate in the [Viewport] rectangle that maps to the given " +"3D point in world space.\n" +"[b]Note:[/b] When using this to position GUI elements over a 3D viewport, " +"use [method is_position_behind] to prevent them from appearing if the 3D " +"point is behind the camera:\n" +"[codeblock]\n" +"# This code block is part of a script that inherits from Node3D.\n" +"# `control` is a reference to a node inheriting from Control.\n" +"control.visible = not get_viewport().get_camera_3d()." +"is_position_behind(global_transform.origin)\n" +"control.position = get_viewport().get_camera_3d()." +"unproject_position(global_transform.origin)\n" +"[/codeblock]" +msgstr "" +"返回映射到世界空间中给定 3D 点的 [Viewport] 矩形中的 2D 坐标。\n" +"[b]注意:[/b]当使用它在 3D 视口上定位 GUI 元素时,如果 3D 点在相机后面,请使" +"用 [method is_position_behind] 来防止它们出现:\n" +"[codeblock]\n" +"# 该代码块是从 Node3D 继承的脚本的一部分。\n" +"# `control` 是对从 Control 继承的节点的引用。\n" +"control.visible = not get_viewport().get_camera_3d()." +"is_position_behind(global_transform.origin)\n" +"control.position = get_viewport().get_camera_3d()." +"unproject_position(global_transform.origin)\n" +"[/codeblock]" + msgid "The [CameraAttributes] to use for this camera." msgstr "该相机所使用的 [CameraAttributes]。" @@ -16412,8 +18304,8 @@ msgid "" "[b]Note:[/b] Only effective if [member projection] is [constant " "PROJECTION_FRUSTUM]." msgstr "" -"相机的机身偏移。可以更改默认值,以创建“倾斜平截头体”效果,如 [url=https://" -"zdoom.org/wiki/Y-shearing]Y-shearing[/url]。\n" +"相机的视锥偏移。可以更改默认值,以创建如 [url=https://zdoom.org/wiki/Y-" +"shearing]Y-shearing[/url] 一样的“倾斜的视锥”效果。\n" "[b]注意:[/b]仅在 [member projection] 为 [constant PROJECTION_FRUSTUM] 时有" "效。" @@ -16430,7 +18322,7 @@ msgstr "" msgid "" "The distance to the near culling boundary for this camera relative to its " "local Z axis." -msgstr "该相机相对于其本地Z轴到近裁边界的距离。" +msgstr "该相机相对于其本地 Z 轴到近裁边界的距离。" msgid "" "The camera's projection mode. In [constant PROJECTION_PERSPECTIVE] mode, " @@ -16446,7 +18338,7 @@ msgid "" "modes." msgstr "" "该相机的大小,单位为米,描述的是完整的宽度或者高度,取决于 [member " -"keep_aspect]。仅适用于正交和平截头体模式。" +"keep_aspect]。仅适用于正交和视锥模式。" msgid "The vertical (Y) offset of the camera viewport." msgstr "相机视口的垂直(Y)偏移量。" @@ -16465,8 +18357,7 @@ msgid "" "Frustum projection. This mode allows adjusting [member frustum_offset] to " "create \"tilted frustum\" effects." msgstr "" -"Frustum 投影。通过该模式可以调整 [member frustum_offset] 来创建“tilted " -"frustum”效果。" +"视锥投影。通过该模式可以调整 [member frustum_offset] 来创建“倾斜的视锥”效果。" msgid "" "Preserves the horizontal aspect ratio; also known as Vert- scaling. This is " @@ -16519,6 +18410,29 @@ msgid "Parent class for camera settings." msgstr "相机设置的父类。" msgid "" +"Controls camera-specific attributes such as depth of field and exposure " +"override.\n" +"When used in a [WorldEnvironment] it provides default settings for exposure, " +"auto-exposure, and depth of field that will be used by all cameras without " +"their own [CameraAttributes], including the editor camera. When used in a " +"[Camera3D] it will override any [CameraAttributes] set in the " +"[WorldEnvironment]. When used in [VoxelGI] or [LightmapGI], only the " +"exposure settings will be used.\n" +"See also [Environment] for general 3D environment settings.\n" +"This is a pure virtual class that is inherited by [CameraAttributesPhysical] " +"and [CameraAttributesPractical]." +msgstr "" +"控制相机的特定属性,如景深和曝光覆盖。\n" +"当在 [WorldEnvironment] 中使用时,它提供了曝光、自动曝光、以及景深的默认设" +"置,这些设置将由所有没有自己的 [CameraAttributes] 的相机使用,包括编辑器相" +"机。当在 [Camera3D] 中使用时,它将覆盖 [WorldEnvironment] 中设置的任何 " +"[CameraAttributes]。当在 [VoxelGI] 或 [LightmapGI] 中使用时,将只会使用曝光设" +"置。\n" +"另请参阅 [Environment] 了解一般的 3D 环境设置。\n" +"这是一个由 [CameraAttributesPhysical] 和 [CameraAttributesPractical] 继承的纯" +"虚类。" + +msgid "" "If [code]true[/code], enables the tonemapping auto exposure mode of the " "scene renderer. If [code]true[/code], the renderer will automatically " "determine the exposure setting to adapt to the scene's illumination and the " @@ -16537,6 +18451,24 @@ msgid "" "camera to perform auto exposure." msgstr "自动曝光效果的速度。影响相机执行自动曝光所需的时间。" +msgid "" +"Multiplier for the exposure amount. A higher value results in a brighter " +"image." +msgstr "曝光量的乘数。较高的值会产生较亮的图像。" + +msgid "" +"Sensitivity of camera sensors, measured in ISO. A higher sensitivity results " +"in a brighter image. Only available when [member ProjectSettings.rendering/" +"lights_and_shadows/use_physical_light_units] is enabled. When [member " +"auto_exposure_enabled] this can be used as a method of exposure " +"compensation, doubling the value will increase the exposure value (measured " +"in EV100) by 1 stop." +msgstr "" +"相机传感器的灵敏度,以 ISO 测量。灵敏度越高,图像越亮。仅在启用 [member " +"ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] 时可" +"用。当 [member auto_exposure_enabled] 启用时,这可以用作曝光补偿的方法,将该" +"值加倍将使曝光值(以 EV100 测量)增加 1 档。" + msgid "Physically-based camera settings." msgstr "基于物理的相机设置。" @@ -16559,22 +18491,179 @@ msgid "" "Mobile rendering methods, not Compatibility." msgstr "" "[CameraAttributesPhysical] 用于根据基于物理的相机的设置来设置渲染设置。它负责" -"曝光、自动曝光和景深。\n" -"当在 [WorldEnvironment] 中使用时,它提供了曝光、自动曝光和景深的默认设置,这" -"些设置将由所有没有自己的 [CameraAttributes] 的相机使用,包括编辑器相机。当在 " -"[Camera3D] 中使用时,它将覆盖 [WorldEnvironment] 中设置的任何 " +"曝光、自动曝光、以及景深。\n" +"当在 [WorldEnvironment] 中使用时,它提供了曝光、自动曝光、以及景深的默认设" +"置,这些设置将由所有没有自己的 [CameraAttributes] 的相机使用,包括编辑器相" +"机。当在 [Camera3D] 中使用时,它将覆盖 [WorldEnvironment] 中设置的任何 " "[CameraAttributes],并将覆盖 [Camera3D] 的 [member Camera3D.far]、[member " -"Camera3D.near]、[member Camera3D.fov] 和 [member Camera3D.keep_aspect] 属性。" -"在 [VoxelGI] 或 [LightmapGI] 中使用时,将只会使用曝光设置。\n" +"Camera3D.near]、[member Camera3D.fov]、以及 [member Camera3D.keep_aspect] 属" +"性。当在 [VoxelGI] 或 [LightmapGI] 中使用时,将只会使用曝光设置。\n" "默认设置适用于室外环境,可在每个设置的文档中找到有关在室内环境中使用的设置的" "提示。\n" -"[b]注意:[/b]景深模糊只支持 Forward+ 和 Mobile 渲染方式,不支持 " -"Compatibility。" +"[b]注意:[/b]景深模糊只支持 Forward+ 和移动渲染方式,不支持兼容模式。" + +msgid "" +"Returns the vertical field of view that corresponds to the [member " +"frustum_focal_length]. This value is calculated internally whenever [member " +"frustum_focal_length] is changed." +msgstr "" +"返回对应于 [member frustum_focal_length] 的垂直视野。每当 [member " +"frustum_focal_length] 发生变化时,该值都会在内部计算。" + +msgid "" +"The maximum luminance (in EV100) used when calculating auto exposure. When " +"calculating scene average luminance, color values will be clamped to at " +"least this value. This limits the auto-exposure from exposing below a " +"certain brightness, resulting in a cut off point where the scene will remain " +"bright." +msgstr "" +"计算自动曝光时使用的最大亮度(单位:EV100)。在计算场景平均亮度时,颜色值将至" +"少被钳制在这个值上。这限制了自动曝光在低于一定的亮度进行曝光时,导致场景将保" +"持明亮的一个截止点。" + +msgid "" +"The minimum luminance luminance (in EV100) used when calculating auto " +"exposure. When calculating scene average luminance, color values will be " +"clamped to at least this value. This limits the auto-exposure from exposing " +"above a certain brightness, resulting in a cut off point where the scene " +"will remain dark." +msgstr "" +"计算自动曝光时使用的最小亮度(单位:EV100)。在计算场景平均亮度时,颜色值将至" +"少被钳制在这个值上。这限制了自动曝光在超过一定的亮度进行曝光时,导致场景将保" +"持黑暗的一个截止点。" + +msgid "" +"Size of the aperture of the camera, measured in f-stops. An f-stop is a " +"unitless ratio between the focal length of the camera and the diameter of " +"the aperture. A high aperture setting will result in a smaller aperture " +"which leads to a dimmer image and sharper focus. A low aperture results in a " +"wide aperture which lets in more light resulting in a brighter, less-focused " +"image. Default is appropriate for outdoors at daytime (i.e. for use with a " +"default [DirectionalLight3D]), for indoor lighting, a value between 2 and 4 " +"is more appropriate.\n" +"Only available when [member ProjectSettings.rendering/lights_and_shadows/" +"use_physical_light_units] is enabled." +msgstr "" +"相机光圈的大小,以 f 档为单位进行测量。f 档是相机焦距与光圈直径之间的一个无单" +"位比率。高光圈设置将产生一个更小的光圈,从而导致更暗的图像和更清晰的焦点。低" +"光圈会产生一个大光圈,让更多的光线进入,从而产生一个更亮、更不聚焦的图像。默" +"认值适用于白天的室外(即与默认 [DirectionalLight3D] 一起使用),对于室内照" +"明,2 到 4 之间的值更合适。\n" +"仅在启用 [member ProjectSettings.rendering/lights_and_shadows/" +"use_physical_light_units] 时可用。" + +msgid "" +"Time for shutter to open and close, measured in seconds. A higher value will " +"let in more light leading to a brighter image, while a lower amount will let " +"in less light leading to a darker image.\n" +"Only available when [member ProjectSettings.rendering/lights_and_shadows/" +"use_physical_light_units] is enabled." +msgstr "" +"快门打开和关闭的时间,单位:秒。较高的值将使更多的光线进入,从而使图像更亮;" +"而较低的值将使更少的光线进入,从而使图像更暗。\n" +"仅在启用 [member ProjectSettings.rendering/lights_and_shadows/" +"use_physical_light_units] 时可用。" + +msgid "" +"Override value for [member Camera3D.far]. Used internally when calculating " +"depth of field. When attached to a [Camera3D] as its [member Camera3D." +"attributes], it will override the [member Camera3D.far] property." +msgstr "" +"覆盖 [member Camera3D.far] 的值。在内部计算景深时使用。当被附加到 [Camera3D] " +"作为其 [member Camera3D.attributes] 时,它将覆盖 [member Camera3D.fov] 属性。" + +msgid "" +"Distance between camera lens and camera aperture, measured in millimeters. " +"Controls field of view and depth of field. A larger focal length will result " +"in a smaller field of view and a narrower depth of field meaning fewer " +"objects will be in focus. A smaller focal length will result in a wider " +"field of view and a larger depth of field meaning more objects will be in " +"focus. When attached to a [Camera3D] as its [member Camera3D.attributes], it " +"will override the [member Camera3D.fov] property and the [member Camera3D." +"keep_aspect] property." +msgstr "" +"相机镜头和相机光圈之间的距离,单位:毫米。控制视野和景深。较大的焦距会导致较" +"小的视野和较窄的景深,这意味着更少的对象将在焦点中。较小的焦距会导致更宽的视" +"野和更大的景深,这意味着更多的物体将在焦点中。当被附加到 [Camera3D] 作为其 " +"[member Camera3D.attributes] 时,它将覆盖 [member Camera3D.fov] 属性和 " +"[member Camera3D.keep_aspect] 属性。" + +msgid "" +"Distance from camera of object that will be in focus, measured in meters. " +"Internally this will be clamped to be at least 1 millimeter larger than " +"[member frustum_focal_length]." +msgstr "" +"将在焦点中的物体与相机的距离,以米为单位进行测量。在内部,这将被钳制为至少比 " +"[member frustum_focal_length] 大 1 毫米。" + +msgid "" +"Override value for [member Camera3D.near]. Used internally when calculating " +"depth of field. When attached to a [Camera3D] as its [member Camera3D." +"attributes], it will override the [member Camera3D.near] property." +msgstr "" +"覆盖 [member Camera3D.near] 的值。在内部计算景深时使用。当被附加到 " +"[Camera3D] 作为其 [member Camera3D.attributes] 时,它将覆盖 [member Camera3D." +"near] 属性。" msgid "Camera settings in an easy to use format." msgstr "相机设置,格式比较易用。" msgid "" +"Controls camera-specific attributes such as auto-exposure, depth of field, " +"and exposure override.\n" +"When used in a [WorldEnvironment] it provides default settings for exposure, " +"auto-exposure, and depth of field that will be used by all cameras without " +"their own [CameraAttributes], including the editor camera. When used in a " +"[Camera3D] it will override any [CameraAttributes] set in the " +"[WorldEnvironment]. When used in [VoxelGI] or [LightmapGI], only the " +"exposure settings will be used." +msgstr "" +"控制相机的特定属性,如自动曝光、景深、以及曝光覆盖。\n" +"当在 [WorldEnvironment] 中使用时,它提供了曝光、自动曝光、以及景深的默认设" +"置,这些设置将由所有没有自己的 [CameraAttributes] 的相机使用,包括编辑器相" +"机。当在 [Camera3D] 中使用时,它将覆盖 [WorldEnvironment] 中设置的任何 " +"[CameraAttributes]。当在 [VoxelGI] 或 [LightmapGI] 中使用时,只会使用曝光设" +"置。" + +msgid "" +"The maximum sensitivity (in ISO) used when calculating auto exposure. When " +"calculating scene average luminance, color values will be clamped to at " +"least this value. This limits the auto-exposure from exposing below a " +"certain brightness, resulting in a cut off point where the scene will remain " +"bright." +msgstr "" +"计算自动曝光时使用的最大感光度(单位:ISO)。在计算场景平均亮度时,颜色值将至" +"少被钳制在这个值上。这限制了自动曝光在低于一定的亮度进行曝光时,导致场景将保" +"持明亮的一个截止点。" + +msgid "" +"The minimum sensitivity (in ISO) used when calculating auto exposure. When " +"calculating scene average luminance, color values will be clamped to at " +"least this value. This limits the auto-exposure from exposing above a " +"certain brightness, resulting in a cut off point where the scene will remain " +"dark." +msgstr "" +"计算自动曝光时使用的最小感光度(单位:ISO)。在计算场景平均亮度时,颜色值将至" +"少被钳制在这个值上。这限制了自动曝光在超过一定的亮度进行曝光时,导致场景将保" +"持黑暗的一个截止点。" + +msgid "" +"Sets the maximum amount of blur. When using physically-based blur amounts, " +"will instead act as a multiplier. High values lead to an increased amount of " +"bluriness, but can be much more expensive to calculate. It is best to keep " +"this as low as possible for a given art style." +msgstr "" +"设置最大模糊量。当使用基于物理的模糊量时,将改为充当一个乘数。高值会导致模糊" +"度增加,但计算起来会更昂贵。对于一个给定的艺术风格,最好将该值保持得尽可能" +"低。" + +msgid "" +"Objects further from the [Camera3D] by this amount will be blurred by the " +"depth of field effect. Measured in meters." +msgstr "" +"距离该 [Camera3D] 比该值远的对象将因景深效果而变得模糊。以米为单位进行测量。" + +msgid "" "Enables depth of field blur for objects further than [member " "dof_blur_far_distance]. Strength of blur is controlled by [member " "dof_blur_amount] and modulated by [member dof_blur_far_transition].\n" @@ -16582,9 +18671,27 @@ msgid "" "Mobile rendering methods, not Compatibility." msgstr "" "为比 [member dof_blur_far_distance] 更远的对象启用景深模糊。模糊强度由 " -"[member dof_blur_amount] 控制,并由 [member dof_blur_far_transition] 调制。\n" -"[b]注意:[/b]景深模糊只支持 Forward+ 和 Mobile 渲染方式,不支持 " -"Compatibility。" +"[member dof_blur_amount] 控制并由 [member dof_blur_far_transition] 调制。\n" +"[b]注意:[/b]景深模糊只支持 Forward+ 和移动渲染方式,不支持兼容模式。" + +msgid "" +"When positive, distance over which (starting from [member " +"dof_blur_far_distance]) blur effect will scale from 0 to [member " +"dof_blur_amount]. When negative, uses physically-based scaling so depth of " +"field effect will scale from 0 at [member dof_blur_far_distance] and will " +"increase in a physically accurate way as objects get further from the " +"[Camera3D]." +msgstr "" +"当为正数时,距离超过该值(从 [member dof_blur_far_distance] 开始)时,模糊效" +"果将从 0 缩放到 [member dof_blur_amount]。当为负数时,使用基于物理的缩放,因" +"此景深效果将在 [member dof_blur_far_distance] 处从 0 开始缩放,并且随着对象远" +"离该 [Camera3D],将以物理上准确的方式增加该效果。" + +msgid "" +"Objects closer from the [Camera3D] by this amount will be blurred by the " +"depth of field effect. Measured in meters." +msgstr "" +"距离该 [Camera3D] 比该值近的对象将因景深效果而变得模糊。以米为单位进行测量。" msgid "" "Enables depth of field blur for objects closer than [member " @@ -16593,11 +18700,21 @@ msgid "" "[b]Note:[/b] Depth of field blur is only supported in the Forward+ and " "Mobile rendering methods, not Compatibility." msgstr "" -"为比 [member dof_blur_near_distance] 更近的物体启用景深模糊。模糊强度由 " -"[member dof_blur_amount] 控制,并由 [member dof_blur_near_transition] 调" -"制。\n" -"[b]注意:[/b]景深模糊只支持 Forward+ 和 Mobile 渲染方式,不支持 " -"Compatibility。" +"为比 [member dof_blur_near_distance] 更近的对象启用景深模糊。模糊强度由 " +"[member dof_blur_amount] 控制并由 [member dof_blur_near_transition] 调制。\n" +"[b]注意:[/b]景深模糊只支持 Forward+ 和移动渲染方式,不支持兼容模式。" + +msgid "" +"When positive, distance over which blur effect will scale from 0 to [member " +"dof_blur_amount], ending at [member dof_blur_near_distance]. When negative, " +"uses physically-based scaling so depth of field effect will scale from 0 at " +"[member dof_blur_near_distance] and will increase in a physically accurate " +"way as objects get closer to the [Camera3D]." +msgstr "" +"当为正数时,距离超过该值且截止到 [member dof_blur_near_distance] 时,模糊效果" +"将从 0 缩放到 [member dof_blur_amount]。当为负数时,使用基于物理的缩放,因此" +"景深效果将在 [member dof_blur_near_distance] 处从 0 开始缩放,并且随着对象靠" +"近该 [Camera3D],将以物理上准确的方式增加该效果。" msgid "" "A camera feed gives you access to a single physical camera attached to your " @@ -16841,6 +18958,48 @@ msgstr "" msgid "Base class of anything 2D." msgstr "所有 2D 对象的基类。" +msgid "" +"Base class of anything 2D. Canvas items are laid out in a tree; children " +"inherit and extend their parent's transform. [CanvasItem] is extended by " +"[Control] for anything GUI-related, and by [Node2D] for anything related to " +"the 2D engine.\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 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. 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 also be hidden, which will also hide its children. It " +"provides many ways to change parameters such as modulation (for itself and " +"its children) and self modulation (only for itself), as well as its blend " +"mode.\n" +"Ultimately, a transform notification can be requested, which will notify the " +"node that its global position changed in case the parent tree changed.\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]." +msgstr "" +"任何 2D 对象的基类。画布项目(Canvas Item)以树状排列;子节点继承并扩展其父节" +"点的变换。[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],隐藏时也会隐藏其子项目。画布项目提供了许多方法来改变" +"参数,如调制(对自己和子项目)、自调制(只对自己)以及混合模式。\n" +"最终,可以请求变换通知,会在父树改变的时通知该节点它的全局位置发生了变化。\n" +"[b]注意:[/b]除非另有说明,所有具有角度参数的方法必须使用[i]弧度[/i]来指定角" +"度。要将度数转换为弧度,请使用 [method @GlobalScope.deg_to_rad]。" + msgid "Viewport and canvas transforms" msgstr "Viewport 和画布变换" @@ -16857,6 +19016,42 @@ msgstr "" "之后)。\n" "对应于 [method Object._notification] 中的 [constant NOTIFICATION_DRAW] 通知。" +msgid "" +"Subsequent drawing commands will be ignored unless they fall within the " +"specified animation slice. This is a faster way to implement animations that " +"loop on background rather than redrawing constantly." +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, then the arc is 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 "使用自定义字体绘制字符串的第一个字符。" @@ -16871,12 +19066,105 @@ msgstr "" "draw_polygon]。" msgid "" +"Draws a colored polygon of any number of points, convex or concave. Unlike " +"[method draw_polygon], a single color must be specified for the whole " +"polygon." +msgstr "" +"绘制一个由任意数量的点组成的彩色多边形,凸形或凹形。与 [method draw_polygon] " +"不同,必须为整个多边形指定一个单一颜色。" + +msgid "" +"Draws a dashed line from a 2D point to another, with a given color and " +"width. See also [method draw_multiline] and [method draw_polyline].\n" +"If [param width] is negative, then a two-point primitives will be drawn " +"instead of a four-point ones. This means that when the CanvasItem is scaled, " +"the line parts will remain thin. If this behavior is not desired, then pass " +"a positive [param width] like [code]1.0[/code]." +msgstr "" +"使用给定的颜色和宽度,从一个 2D 点到另一个点绘制一条虚线。另请参见 [method " +"draw_multiline] 和 [method draw_polyline]。\n" +"如果 [param width] 为负,则将绘制一个两点图元而不是一个四点图元。这意味着当缩" +"放 CanvasItem 时,线条部分将保持细长。如果不需要此行为,请传递一个正的 " +"[param width],如 [code]1.0[/code]。" + +msgid "" +"After submitting all animations slices via [method draw_animation_slice], " +"this function can be used to revert drawing to its default state (all " +"subsequent drawing commands will be visible). If you don't care about this " +"particular use case, usage of this function after submitting the slices is " +"not required." +msgstr "" +"通过 [method draw_animation_slice] 提交所有动画切片后,该函数可以被用来将绘制" +"恢复到其默认状态(所有后续绘制命令都将可见)。如果不关心这个特定用例,则不需" +"要在提交切片后使用该函数。" + +msgid "" +"Draws a textured rectangle region of the font texture with LCD subpixel anti-" +"aliasing at a given position, optionally modulated by a color.\n" +"Texture is drawn using the following blend operation, blend mode of the " +"[CanvasItemMaterial] is ignored:\n" +"[codeblock]\n" +"dst.r = texture.r * modulate.r * modulate.a + dst.r * (1.0 - texture.r * " +"modulate.a);\n" +"dst.g = texture.g * modulate.g * modulate.a + dst.g * (1.0 - texture.g * " +"modulate.a);\n" +"dst.b = texture.b * modulate.b * modulate.a + dst.b * (1.0 - texture.b * " +"modulate.a);\n" +"dst.a = modulate.a + dst.a * (1.0 - modulate.a);\n" +"[/codeblock]" +msgstr "" +"在给定的位置绘制一个带有 LCD 子像素抗锯齿的字体纹理的矩形区域,可以选择用一种" +"颜色来调制。\n" +"纹理是通过以下混合操作绘制的,[CanvasItemMaterial] 的混合模式被忽略:\n" +"[codeblock]\n" +"dst.r = texture.r * modulate.r * modulate.a + dst.r * (1.0 - texture.r * " +"modulate.a);\n" +"dst.g = texture.g * modulate.g * modulate.a + dst.g * (1.0 - texture.g * " +"modulate.a);\n" +"dst.b = texture.b * modulate.b * modulate.a + dst.b * (1.0 - texture.b * " +"modulate.a);\n" +"dst.a = modulate.a + dst.a * (1.0 - modulate.a);\n" +"[/codeblock]" + +msgid "" +"Draws a line from a 2D point to another, with a given color and width. It " +"can be optionally antialiased. See also [method draw_multiline] and [method " +"draw_polyline].\n" +"If [param width] is negative, then a two-point primitive will be drawn " +"instead of a four-point one. This means that when the CanvasItem is scaled, " +"the line will remain thin. If this behavior is not desired, then pass a " +"positive [param width] like [code]1.0[/code]." +msgstr "" +"使用给定的颜色和宽度,从一个 2D 点到另一个点绘制一条直线。它可以选择抗锯齿。" +"另请参阅 [method draw_multiline] 和 [method draw_polyline]。\n" +"如果 [param width] 为负,则将绘制一个两点图元而不是一个四点图元。这意味着当缩" +"放 CanvasItem 时,线条将保持细长。如果不需要此行为,请传递一个正的 [param " +"width],如 [code]1.0[/code]。" + +msgid "" "Draws a [Mesh] in 2D, using the provided texture. See [MeshInstance2D] for " "related documentation." msgstr "" "使用所提供的纹理以 2D 方式绘制一个 [Mesh]。相关文档请参阅 [MeshInstance2D]。" msgid "" +"Draws a textured rectangle region of the multi-channel signed distance field " +"texture at a given position, optionally modulated by a color. See [member " +"FontFile.multichannel_signed_distance_field] for more information and " +"caveats about MSDF font rendering.\n" +"If [param outline] is positive, each alpha channel value of pixel in region " +"is set to maximum value of true distance in the [param outline] radius.\n" +"Value of the [param pixel_range] should the same that was used during " +"distance field texture generation." +msgstr "" +"在给定位置,绘制一条多通道有符号距离场纹理的纹理矩形区域,可以选择用一种颜色" +"来调制。有关 MSDF 字体渲染的更多信息和注意事项,请参阅 [member FontFile." +"multichannel_signed_distance_field]。\n" +"如果 [param outline] 为正,则区域中像素的每个 Alpha 通道值都被设置为 [param " +"outline] 半径内真实距离的最大值。\n" +"[param pixel_range] 的值应该与距离场纹理生成期间使用的值相同。" + +msgid "" "Draws multiple disconnected lines with a uniform [param color]. When drawing " "large amounts of lines, this is faster than using individual [method " "draw_line] calls. To draw interconnected lines, use [method draw_polyline] " @@ -16913,13 +19201,43 @@ msgstr "" "width],如 [code]1.0[/code]。" msgid "" +"Breaks [param text] into lines and draws it using the specified [param font] " +"at the [param pos] (top-left corner). The text will have its color " +"multiplied by [param modulate]. If [param width] is greater than or equal to " +"0, the text will be clipped if it exceeds the specified width." +msgstr "" +"将 [param text] 分成几行,并在 [param pos](左上角)处使用指定的 [param " +"font] 绘制文本。该文本的颜色将乘以 [param modulate]。如果 [param width] 大于" +"等于 0,则当该文本超过指定宽度时将被裁剪。" + +msgid "" +"Breaks [param text] to the lines and draws text outline using the specified " +"[param font] at the [param pos] (top-left corner). The text will have its " +"color multiplied by [param modulate]. If [param width] is greater than or " +"equal to 0, the text will be clipped if it exceeds the specified width." +msgstr "" +"将 [param text] 分成几行,并在 [param pos](左上角)处使用指定的 [param " +"font] 绘制文本轮廓。该文本的颜色将乘以 [param modulate]。如果 [param width] " +"大于等于 0,则当该文本超过指定宽度时将被裁剪。" + +msgid "" "Draws a [MultiMesh] in 2D with the provided texture. See " "[MultiMeshInstance2D] for related documentation." msgstr "" -"用所提供的纹理以 2D 方式绘制 [MultiMesh]。相关文档请参考" +"用所提供的纹理以 2D 方式绘制一个 [MultiMesh]。相关文档请参考 " "[MultiMeshInstance2D]。" msgid "" +"Draws a solid polygon of any number of points, convex or concave. Unlike " +"[method draw_colored_polygon], each point's color can be changed " +"individually. See also [method draw_polyline] and [method " +"draw_polyline_colors]." +msgstr "" +"绘制一个由任意数量的点构成的实心多边形,凸形或凹形。与 [method " +"draw_colored_polygon] 不同,每个点的颜色都可以单独改变。另见 [method " +"draw_polyline] 和 [method draw_polyline_colors]。" + +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 " @@ -16973,6 +19291,32 @@ msgstr "" "draw_polygon]、[method draw_rect]。" msgid "" +"Draws a rectangle. If [param filled] is [code]true[/code], the rectangle " +"will be filled with the [param color] specified. If [param filled] is " +"[code]false[/code], the rectangle will be drawn as a stroke with the [param " +"color] and [param width] specified.\n" +"If [param width] is negative, then two-point primitives will be drawn " +"instead of a four-point ones. This means that when the CanvasItem is scaled, " +"the lines will remain thin. If this behavior is not desired, then pass a " +"positive [param width] like [code]1.0[/code].\n" +"[b]Note:[/b] [param width] is only effective if [param filled] is " +"[code]false[/code].\n" +"[b]Note:[/b] Unfilled rectangles drawn with a negative [param width] may not " +"display perfectly. For example, corners may be missing or brighter due to " +"overlapping lines (for a translucent [param color])." +msgstr "" +"绘制一个矩形。如果 [param filled] 为 [code]true[/code],则矩形将使用指定的 " +"[param color] 填充。如果 [param filled] 为 [code]false[/code],则矩形将被绘制" +"为具有指定的 [param color] 和 [param width] 的笔划。\n" +"如果 [param width] 为负,则将绘制一个两点图元而不是一个四点图元。这意味着当缩" +"放 CanvasItem 时,线条将保持细长。如果不需要此行为,请传递一个正的 [param " +"width],如 [code]1.0[/code]。\n" +"[b]注意:[/b][param width] 只有在 [param filled] 为 [code]false[/code] 时才有" +"效。\n" +"[b]注意:[/b]使用负 [param width] 绘制的未填充矩形可能不会完美显示。例如,由" +"于线条的重叠,角可能会缺失或变亮(对于半透明的 [param color])。" + +msgid "" "Sets a custom transform for drawing via components. Anything drawn " "afterwards will be transformed by this.\n" "[b]Note:[/b] [member FontFile.oversampling] does [i]not[/i] take [param " @@ -17054,6 +19398,16 @@ msgstr "" "[/codeblocks]\n" "另请参阅 [method Font.draw_string]。" +msgid "" +"Draws [param text] outline using the specified [param font] at the [param " +"pos] (bottom-left corner using the baseline of the font). The text will have " +"its color multiplied by [param modulate]. If [param width] is greater than " +"or equal to 0, the text will be clipped if it exceeds the specified width." +msgstr "" +"在 [param pos](左下角使用字体的基线)处使用指定的 [param font] 绘制 [param " +"text] 轮廓。该文本的颜色将乘以 [param modulate]。如果 [param width] 大于等于 " +"0,则当文本超过指定宽度时将被裁剪。" + msgid "Draws a styled rectangle." msgstr "绘制一个样式矩形。" @@ -17087,6 +19441,14 @@ msgstr "" msgid "Returns the [RID] of the [World2D] canvas where this item is in." msgstr "返回此项目所在的 [World2D] 画布的 [RID]。" +msgid "Returns the canvas item RID used by [RenderingServer] for this item." +msgstr "返回 [RenderingServer] 对该项目使用的画布项目 RID。" + +msgid "" +"Returns the transform from the coordinate system of the canvas, this item is " +"in, to the [Viewport]s coordinate system." +msgstr "返回从该项目所在的画布坐标系到 [Viewport] 坐标系的变换。" + msgid "" "Returns the mouse's position in the [CanvasLayer] that this [CanvasItem] is " "in using the coordinate system of the [CanvasLayer]." @@ -17095,16 +19457,47 @@ msgstr "" "的坐标系。" msgid "" +"Returns the global transform matrix of this item, i.e. the combined " +"transform up to the topmost [CanvasItem] node. The topmost item is a " +"[CanvasItem] that either has no parent, has non-[CanvasItem] parent or it " +"has [member top_level] enabled." +msgstr "" +"返回该项目的全局变换矩阵,即到最顶层的 [CanvasItem] 节点的综合变换。最顶层的" +"项目是一个 [CanvasItem],它要么没有父级,要么有非 [CanvasItem] 父级,或者要么" +"它启用了 [member top_level]。" + +msgid "" +"Returns the transform from the local coordinate system of this [CanvasItem] " +"to the [Viewport]s coordinate system." +msgstr "返回从该 [CanvasItem] 的局部坐标系到 [Viewport] 坐标系的变换。" + +msgid "" "Returns the mouse's position in this [CanvasItem] using the local coordinate " "system of this [CanvasItem]." msgstr "返回该 [CanvasItem] 中鼠标的位置,使用该 [CanvasItem] 的局部坐标系。" +msgid "" +"Returns the transform of this [CanvasItem] in global screen coordinates (i." +"e. taking window position into account). Mostly useful for editor plugins.\n" +"Equals to [method get_global_transform] if the window is embedded (see " +"[member Viewport.gui_embed_subwindows])." +msgstr "" +"返回该 [CanvasItem] 在全局屏幕坐标中的变换(即考虑窗口位置)。主要用于编辑器" +"插件。\n" +"如果窗口是嵌入的,则等于 [method get_global_transform](参见 [member " +"Viewport.gui_embed_subwindows])。" + msgid "Returns the transform matrix of this item." msgstr "返回此项目的变换矩阵。" msgid "Returns the viewport's boundaries as a [Rect2]." msgstr "以 [Rect2] 形式返回视口的边界。" +msgid "" +"Returns the transform from the coordinate system of the canvas, this item is " +"in, to the [Viewport]s embedders coordinate system." +msgstr "返回从该项目所在的画布坐标系到 [Viewport] 嵌入坐标系的变换。" + msgid "Returns an individual bit on the rendering visibility layer." msgstr "返回渲染可见层上的某个比特位。" @@ -17121,7 +19514,7 @@ msgstr "" msgid "" "Returns [code]true[/code] if local transform notifications are communicated " "to children." -msgstr "如果将本地变换通知传达给子级,则返回 [code]true[/code]。" +msgstr "如果将局部变换通知传达给子级,则返回 [code]true[/code]。" msgid "" "Returns [code]true[/code] if global transform notifications are communicated " @@ -17138,6 +19531,23 @@ msgstr "" "code],并且其所有上层节点也均可见,则返回 [code]true[/code]。如果任何上层节点" "被隐藏,则该节点在场景树中将不可见,因此也不会进行绘制(见 [method _draw])。" +msgid "Assigns [param screen_point] as this node's new local transform." +msgstr "将 [param screen_point] 指定为该节点的新局部变换。" + +msgid "" +"Transformations issued by [param event]'s inputs are applied in local space " +"instead of global space." +msgstr "[param event] 的输入发出的变换将在局部空间而不是全局空间中应用。" + +msgid "" +"Moves this node to display on top of its siblings.\n" +"Internally, the node is moved to the bottom of parent's children list. The " +"method has no effect on nodes without a parent." +msgstr "" +"移动该节点以显示在其同级节点之上。\n" +"在内部,该节点被移动到父节点的子节点列表的底部。该方法对没有父节点的节点没有" +"影响。" + msgid "" "Queues the [CanvasItem] to redraw. During idle time, if [CanvasItem] is " "visible, [constant NOTIFICATION_DRAW] is sent and [method _draw] is called. " @@ -17165,7 +19575,8 @@ msgstr "" msgid "" "Set/clear individual bits on the rendering visibility layer. This simplifies " "editing this [CanvasItem]'s visibility layer." -msgstr "设置或清除渲染可见层上的单个位。这简化了编辑该 [CanvasItem] 的可见层。" +msgstr "" +"设置或清除渲染可见层上的单个位。这简化了对该 [CanvasItem] 的可见层的编辑。" msgid "" "Show the [CanvasItem] if it's currently hidden. This is equivalent to " @@ -17185,17 +19596,6 @@ msgid "" "The rendering layers in which this [CanvasItem] responds to [Light2D] nodes." msgstr "该 [CanvasItem] 的渲染层,用于响应 [Light2D] 节点。" -msgid "The material applied to textures on this [CanvasItem]." -msgstr "材质,应用于该 [CanvasItem] 的纹理。" - -msgid "The color applied to textures on this [CanvasItem]." -msgstr "颜色,应用于该 [CanvasItem] 的纹理。" - -msgid "" -"The color applied to textures on this [CanvasItem]. This is not inherited by " -"children [CanvasItem]s." -msgstr "颜色,应用于该 [CanvasItem] 的纹理。不会被子级 [CanvasItem] 继承。" - msgid "If [code]true[/code], the object draws behind its parent." msgstr "如果为 [code]true[/code],则对象在其父对象后面绘制。" @@ -17745,8 +20145,8 @@ msgid "" "[b]Performance:[/b] Being a primitive collision shape, [CapsuleShape2D] is " "fast to check collisions against (though not as fast as [CircleShape2D])." msgstr "" -"使用一个 [CollisionShape2D] 节点时,添加为 [PhysicsBody2D] 或 [Area2D] 的[i]" -"直接[/i]子节点的 2D 胶囊形状。在 2D 中,胶囊是两端带有半圆形的矩形。\n" +"使用 [CollisionShape2D] 节点作为 [PhysicsBody2D] 或 [Area2D] 的[i]直接[/i]子" +"节点时,可被添加的 2D 胶囊形状。在 2D 中,胶囊是两端带有半圆形的矩形。\n" "[b]性能:[/b]作为一种原始的碰撞形状,[CapsuleShape2D] 可用于快速检测碰撞(尽" "管没有 [CircleShape2D] 快)。" @@ -17768,8 +20168,8 @@ msgid "" "[CapsuleShape3D] is cheaper to check collisions against compared to " "[CylinderShape3D]." msgstr "" -"使用一个 [CollisionShape3D] 节点,添加为 [PhysicsBody3D] 或 [Area3D] 的[i]直" -"接[/i]子节点的 3D 胶囊形状。在 3D 中,胶囊是两端带有半球的圆柱体。\n" +"使用 [CollisionShape3D] 节点作为 [PhysicsBody3D] 或 [Area3D] 的[i]直接[/i]子" +"节点时,可被添加的 3D 胶囊形状。在 3D 中,胶囊是两端带有半球的圆柱体。\n" "[b]性能:[/b]作为一种原始的碰撞形状,[CapsuleShape3D] 可用于快速检测碰撞(尽" "管没有 [SphereShape3D] 快)。与 [CylinderShape3D] 相比,[CapsuleShape3D] 检测" "碰撞的成本更低。" @@ -17886,47 +20286,6 @@ msgstr "" "的 [member velocity] 相对。" msgid "" -"Returns a [KinematicCollision2D], which contains information about a " -"collision that occurred during the last call to [method move_and_slide]. " -"Since the body can collide several times in a single call to [method " -"move_and_slide], you must specify the index of the collision in the range 0 " -"to ([method get_slide_collision_count] - 1).\n" -"[b]Example usage:[/b]\n" -"[codeblocks]\n" -"[gdscript]\n" -"for i in get_slide_collision_count():\n" -"var collision = get_slide_collision(i)\n" -"print(\"Collided with: \", collision.collider.name)\n" -"[/gdscript]\n" -"[csharp]\n" -"for (int i = 0; i < GetSlideCollisionCount(); i++)\n" -"{\n" -" KinematicCollision2D collision = GetSlideCollision(i);\n" -" GD.Print(\"Collided with: \", (collision.GetCollider() as Node).Name);\n" -"}\n" -"[/csharp]\n" -"[/codeblocks]" -msgstr "" -"返回 [KinematicCollision2D],包含最近一次调用 [method move_and_slide] 时发生" -"的碰撞信息。因为单次调用 [method move_and_slide] 可能发生多次碰撞,所以你必须" -"指定碰撞索引,范围为 0 到 ([method get_slide_collision_count] - 1)。\n" -"[b]用法示例:[/b]\n" -"[codeblocks]\n" -"[gdscript]\n" -"for i in get_slide_collision_count():\n" -"var collision = get_slide_collision(i)\n" -"print(\"碰到了:\", collision.collider.name)\n" -"[/gdscript]\n" -"[csharp]\n" -"for (int i = 0; i < GetSlideCollisionCount(); i++)\n" -"{\n" -" KinematicCollision2D collision = GetSlideCollision(i);\n" -" GD.Print(\"碰到了:\", (collision.GetCollider() as Node).Name);\n" -"}\n" -"[/csharp]\n" -"[/codeblocks]" - -msgid "" "Returns the number of times the body collided and changed direction during " "the last call to [method move_and_slide]." msgstr "" @@ -18060,23 +20419,6 @@ msgstr "" "角度(单位为弧度)。默认值等于 45 度。" msgid "" -"Sets a snapping distance. When set to a value different from [code]0.0[/" -"code], the body is kept attached to slopes when calling [method " -"move_and_slide]. The snapping vector is determined by the given distance " -"along the opposite direction of the [member up_direction].\n" -"As long as the snapping vector is in contact with the ground and the body " -"moves against [member up_direction], the body will remain attached to the " -"surface. Snapping is not applied if the body moves along [member " -"up_direction], so it will be able to detach from the ground when jumping." -msgstr "" -"设置吸附距离。设为非 [code]0.0[/code] 值时,该物体在调用 [method " -"move_and_slide] 时会保持附着到斜坡上。吸附向量会根据给定的距离和 [member " -"up_direction] 反方向决定。\n" -"只要吸附向量与地面有接触,该物体就会逆 [member up_direction] 移动,保持附着到" -"表面。如果该物体是沿着 [member up_direction] 移动的,则不会应用吸附,这样跳跃" -"时就能够不再附着地面。" - -msgid "" "If [code]true[/code], the body will not slide on slopes when calling [method " "move_and_slide] when the body is standing still.\n" "If [code]false[/code], the body will slide on floor's slopes when [member " @@ -18382,13 +20724,14 @@ msgstr "" msgid "" "Controls how an individual character will be displayed in a [RichTextEffect]." -msgstr "控制单个字符在[RichTextEffect]中的显示方式。" +msgstr "控制单个字符在 [RichTextEffect] 中的显示方式。" msgid "" "By setting various properties on this object, you can control how individual " "characters will be displayed in a [RichTextEffect]." msgstr "" -"通过在此对象上设置各种属性,可以控制单个字符在[RichTextEffect]中的显示方式。" +"通过在此对象上设置各种属性,可以控制单个字符在 [RichTextEffect] 中的显示方" +"式。" msgid "BBCode in RichTextLabel" msgstr "RichTextLabel 中的 BBCode" @@ -18400,6 +20743,17 @@ msgid "The color the character will be drawn with." msgstr "绘制字符所用的颜色。" msgid "" +"The time elapsed since the [RichTextLabel] was added to the scene tree (in " +"seconds). Time stops when the [RichTextLabel] is paused (see [member Node." +"process_mode]). Resets when the text in the [RichTextLabel] is changed.\n" +"[b]Note:[/b] Time still passes while the [RichTextLabel] is hidden." +msgstr "" +"自 [RichTextLabel] 被添加到场景树以来经过的时间(单位:秒)。时间在 " +"[RichTextLabel] 暂停时停止(参见 [member Node.process_mode])。在 " +"[RichTextLabel] 中的文本改变时重置。\n" +"[b]注意:[/b]当 [RichTextLabel] 被隐藏时,时间仍在流逝。" + +msgid "" "Contains the arguments passed in the opening BBCode tag. By default, " "arguments are strings; if their contents match a type such as [bool], [int] " "or [float], they will be converted automatically. Color codes in the form " @@ -18440,8 +20794,30 @@ msgid "" msgstr "" "字形标志。详情见 [enum TextServer.GraphemeFlag]。设置此属性不会影响绘制。" +msgid "Font specific glyph index." +msgstr "字体特定字形的索引。" + msgid "The position offset the character will be drawn with (in pixels)." -msgstr "绘制字符的位置偏移量(以像素为单位)。" +msgstr "绘制字符的位置偏移量(单位:像素)。" + +msgid "" +"If [code]true[/code], FX transform is called for outline drawing. Setting " +"this property won't affect drawing." +msgstr "" +"如果为 [code]为true[/code],则调用 FX 变换进行轮廓绘制。设置该属性不会影响绘" +"制。" + +msgid "" +"Absolute character range in the string, corresponding to the glyph. Setting " +"this property won't affect drawing." +msgstr "该字符串中的绝对字符范围,对应于字形。设置该属性不会影响绘制。" + +msgid "" +"The character offset of the glyph, relative to the current [RichTextEffect] " +"custom block. Setting this property won't affect drawing." +msgstr "" +"该字形的字符偏移量,相对于当前 [RichTextEffect] 自定义块。设置该属性不会影响" +"绘制。" msgid "" "If [code]true[/code], the character will be drawn. If [code]false[/code], " @@ -18450,12 +20826,28 @@ msgid "" "their [member color] to [code]Color(1, 1, 1, 0)[/code] instead." msgstr "" "如果为 [code]true[/code],将绘制字符。如果为 [code]false[/code],则隐藏字符。" -"隐藏字符周围的字符将回流以占用隐藏字符的空间。如果不希望这样做,可以将它们的" -"[member color]设置为[code]Color(1, 1, 1, 0)[/code]。" +"隐藏字符周围的字符将回流以占用隐藏字符的空间。如果不希望这样做,可以将它们的 " +"[member color] 设置为[code]Color(1, 1, 1, 0)[/code]。" msgid "Binary choice user interface widget. See also [CheckButton]." msgstr "二项选择用户界面小部件。另请参阅 [CheckButton]。" +msgid "" +"A checkbox allows the user to make a binary choice (choosing only one of two " +"possible options). It's similar to [CheckButton] in functionality, but it " +"has a different appearance. To follow established UX patterns, it's " +"recommended to use CheckBox when toggling it has [b]no[/b] immediate effect " +"on something. For example, it could be used when toggling it will only do " +"something once a confirmation button is pressed.\n" +"See also [BaseButton] which contains common properties and methods " +"associated with this node." +msgstr "" +"允许用户做出二项选择(在两个可能的选项中只选择一个)的勾选框。它在功能上类似" +"于 [CheckButton],但外观不同。为了遵循既定的 UX 模式,建议在切换而[b]不会[/b]" +"立即对某些内容产生影响时使用 CheckBox。例如,切换后只会在按下确认按钮后才执行" +"某些操作时,可以使用它。\n" +"另请参阅 [BaseButton],其中包含与该节点相关的通用属性和方法。" + msgid "The [CheckBox] text's font color." msgstr "该 [CheckBox] 文本的字体颜色。" @@ -18467,8 +20859,8 @@ msgid "" "text color of the checkbox. Disabled, hovered, and pressed states take " "precedence over this color." msgstr "" -"该 [CheckBox] 被聚焦时的文本字体颜色。只取代复选框的正常文本颜色。禁用、悬停" -"和按下状态优先于这个颜色。" +"该 [CheckBox] 被聚焦时的文本字体颜色。只替代该勾选框的正常文本颜色。禁用、悬" +"停和按下状态优先于这个颜色。" msgid "The [CheckBox] text's font color when it's hovered." msgstr "该 [CheckBox] 被悬停时的文本字体颜色。" @@ -18483,13 +20875,13 @@ msgid "The [CheckBox] text's font color when it's pressed." msgstr "该 [CheckBox] 被按下时的文本字体颜色。" msgid "The vertical offset used when rendering the check icons (in pixels)." -msgstr "渲染复选图标时使用的垂直偏移量(单位为像素)。" +msgstr "渲染勾选图标时使用的垂直偏移量(单位:像素)。" msgid "" "The separation between the check icon and the text (in pixels). Negative " "values will be treated as [code]0[/code] when used." msgstr "" -"复选图标与文本之间的间隔(单位为像素)。使用时负值会被视为 [code]0[/code]。" +"勾选图标与文本之间的间隔(单位:像素)。使用时负值会被视为 [code]0[/code]。" msgid "The [Font] to use for the [CheckBox] text." msgstr "该 [CheckBox] 文本所使用的 [Font]。" @@ -18498,38 +20890,37 @@ msgid "Font size of the [CheckBox]'s text." msgstr "该 [CheckBox] 文本的字体大小。" msgid "The check icon to display when the [CheckBox] is checked." -msgstr "选中时显示的图标,该 [CheckBox] 处于选中状态时使用。" +msgstr "勾选图标,该 [CheckBox] 被勾选时显示。" msgid "" "The check icon to display when the [CheckBox] is checked and is disabled." -msgstr "选中时显示的图标,该 [CheckBox] 处于选中且禁用状态时使用。" +msgstr "勾选图标,该 [CheckBox] 被勾选且被禁用时显示。" msgid "" "The check icon to display when the [CheckBox] is configured as a radio " "button and is checked." -msgstr "选中时显示的图标,该 [CheckBox] 被配置为单选按钮并处于选中状态时使用。" +msgstr "勾选图标,该 [CheckBox] 被配置为单选按钮、被勾选时显示。" msgid "" "The check icon to display when the [CheckBox] is configured as a radio " "button, is disabled, and is unchecked." -msgstr "" -"选中时显示的图标,该 [CheckBox] 被配置为单选按钮并处于未选且禁用状态时使用。" +msgstr "勾选图标,该 [CheckBox] 被配置为单选按钮、被禁用且未勾选时显示。" msgid "" "The check icon to display when the [CheckBox] is configured as a radio " "button and is unchecked." -msgstr "选中时显示的图标,该 [CheckBox] 被配置为单选按钮并处于未选状态时使用。" +msgstr "勾选图标,该 [CheckBox] 被配置为单选按钮、未勾选时显示。" msgid "The check icon to display when the [CheckBox] is unchecked." -msgstr "选中时显示的图标,该 [CheckBox] 处于未选状态时使用。" +msgstr "勾选图标,该 [CheckBox] 未勾选时显示。" msgid "" "The check icon to display when the [CheckBox] is unchecked and is disabled." -msgstr "选中时显示的图标,该 [CheckBox] 处于未选状态时使用。" +msgstr "勾选图标,该 [CheckBox] 未勾选且被禁用时显示。" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is disabled." -msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于禁用状态时使用。" +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 被禁用时使用。" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is focused. " @@ -18541,8 +20932,8 @@ msgid "" "visual effect will harm keyboard/controller navigation usability, so this is " "not recommended for accessibility reasons." msgstr "" -"作为背景显示的 [StyleBox],该 [CheckBox] 处于聚焦状态时使用。[code]focus[/" -"code] [StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"作为背景显示的 [StyleBox],该 [CheckBox] 被聚焦时使用。[code]focus[/code] " +"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " "[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" "很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" "意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" @@ -18550,22 +20941,22 @@ msgstr "" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is hovered." -msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于悬停状态时使用。" +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 被悬停时使用。" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is hovered and " "pressed." -msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于悬停且按下状态时使用。" +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 被悬停且被按下时使用。" msgid "The [StyleBox] to display as a background." msgstr "作为背景显示的 [StyleBox]。" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is pressed." -msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于按下状态时使用。" +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 被按下时使用。" msgid "Checkable button. See also [CheckBox]." -msgstr "可复选的按钮。另请参阅 [CheckBox]。" +msgstr "可勾选的按钮。另请参阅 [CheckBox]。" msgid "" "CheckButton is a toggle button displayed as a check field. It's similar to " @@ -18577,11 +20968,11 @@ msgid "" "See also [BaseButton] which contains common properties and methods " "associated with this node." msgstr "" -"CheckButton 是一种开关按钮,以开关字段的形式显示。功能上类似于 [CheckBox],但" -"外观不同。为了实现一致的用户体验模式,建议在开关会[b]立即[/b]产生效果时使用 " -"CheckButton。例如,开关后无需用户按下确认按钮,会立即启用/禁用某个设置时就可" -"以使用。\n" -"另见 [BaseButton],包含该按钮的通用属性和方法。" +"CheckButton 是一种显示为勾选字段的切换按钮。它在功能上类似于 [CheckBox],但外" +"观不同。为了遵循既定的 UX 模式,建议在切换后对某些东西有[b]立即的[/b]效果时使" +"用 CheckButton。例如,如果切换后立即启用/禁用设置而无需用户按下确认按钮时,可" +"以使用它。\n" +"另请参阅 [BaseButton],其中包含与该节点相关的通用属性和方法。" msgid "The [CheckButton] text's font color." msgstr "该 [CheckButton] 的文本字体颜色。" @@ -18594,8 +20985,8 @@ msgid "" "normal text color of the button. Disabled, hovered, and pressed states take " "precedence over this color." msgstr "" -"该 [CheckButton] 被聚焦时的文本字体颜色。仅替换按钮的正常文本颜色。禁用、悬停" -"和按下状态优先于此颜色。" +"该 [CheckButton] 被聚焦时的文本字体颜色。只替代该按钮的正常文本颜色。禁用、悬" +"停和按下状态优先于此颜色。" msgid "The [CheckButton] text's font color when it's hovered." msgstr "该 [CheckButton] 被悬停时的文本字体颜色。" @@ -18610,13 +21001,13 @@ msgid "The [CheckButton] text's font color when it's pressed." msgstr "该 [CheckButton] 被按下时的文本字体颜色。" msgid "The vertical offset used when rendering the toggle icons (in pixels)." -msgstr "渲染切换图标时使用的垂直偏移量(单位为像素)。" +msgstr "渲染切换图标时使用的垂直偏移量(单位:像素)。" msgid "" "The separation between the toggle icon and the text (in pixels). Negative " "values will be treated as [code]0[/code] when used." msgstr "" -"切换图标与文本之间的间隔(单位为像素)。使用时负值会被视为 [code]0[/code]。" +"切换图标与文本之间的间隔(单位:像素)。使用时负值会被视为 [code]0[/code]。" msgid "The [Font] to use for the [CheckButton] text." msgstr "该 [CheckButton] 文本所使用的 [Font]。" @@ -18627,50 +21018,46 @@ msgstr "该 [CheckButton] 文本的字体大小。" msgid "" "The icon to display when the [CheckButton] is checked (for left-to-right " "layouts)." -msgstr "显示的图标,用于该 [CheckButton] 的勾选状态(从左至右布局)。" +msgstr "切换图标,该 [CheckButton] 被勾选时显示(用于从左至右布局)。" msgid "" "The icon to display when the [CheckButton] is checked and disabled (for left-" "to-right layouts)." -msgstr "" -"显示的图标,用于该 [CheckButton] 的勾选且禁用状态(用于从左至右布局)。" +msgstr "切换图标,该 [CheckButton] 被勾选且被禁用时显示(用于从左至右布局)。" msgid "" "The icon to display when the [CheckButton] is checked and disabled (for " "right-to-left layouts)." -msgstr "" -"显示的图标,用于该 [CheckButton] 的勾选且禁用状态(用于从右至左布局)。" +msgstr "切换图标,该 [CheckButton] 被勾选且被禁用时显示(用于从右至左布局)。" msgid "" "The icon to display when the [CheckButton] is checked (for right-to-left " "layouts)." -msgstr "显示的图标,用于该 [CheckButton] 的勾选状态(用于从右至左布局)。" +msgstr "切换图标,该 [CheckButton] 被勾选时显示(用于从右至左布局)。" msgid "" "The icon to display when the [CheckButton] is unchecked (for left-to-right " "layouts)." -msgstr "显示的图标,用于该 [CheckButton] 的未选状态(用于从左至右布局)。" +msgstr "切换图标,该 [CheckButton] 未勾选时显示(用于从左至右布局)。" msgid "" "The icon to display when the [CheckButton] is unchecked and disabled (for " "left-to-right layouts)." -msgstr "" -"显示的图标,用于该 [CheckButton] 的未选且禁用状态(用于从左至右布局)。" +msgstr "切换图标,该 [CheckButton] 未勾选且被禁用时显示(用于从左至右布局)。" msgid "" "The icon to display when the [CheckButton] is unchecked and disabled (for " "right-to-left layouts)." -msgstr "" -"显示的图标,用于该 [CheckButton] 的未选且禁用状态(用于从右至左布局)。" +msgstr "切换图标,该 [CheckButton] 未勾选且被禁用时显示(用于从右至左布局)。" msgid "" "The icon to display when the [CheckButton] is unchecked (for right-to-left " "layouts)." -msgstr "显示的图标,用于该 [CheckButton] 的未选状态(用于从右至左布局)。" +msgstr "切换图标,该 [CheckButton] 未勾选时显示(用于从右至左布局)。" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is disabled." -msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的禁用状态。" +msgstr "作为背景显示的 [StyleBox],该 [CheckButton] 被禁用时使用。" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is focused. " @@ -18682,8 +21069,8 @@ msgid "" "visual effect will harm keyboard/controller navigation usability, so this is " "not recommended for accessibility reasons." msgstr "" -"作为背景显示的 [StyleBox],用于该 [CheckButton] 的聚焦状态。[code]focus[/" -"code] [StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"作为背景显示的 [StyleBox],该 [CheckButton] 被聚焦时使用。[code]focus[/code] " +"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " "[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" "很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" "意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" @@ -18691,16 +21078,16 @@ msgstr "" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is hovered." -msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的悬停状态。" +msgstr "作为背景显示的 [StyleBox],该 [CheckButton] 被悬停时使用。" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is hovered " "and pressed." -msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的悬停且按下状态。" +msgstr "作为背景显示的 [StyleBox],该 [CheckButton] 被悬停且被按下时使用。" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is pressed." -msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的按下状态。" +msgstr "作为背景显示的 [StyleBox],该 [CheckButton] 被按下时使用。" msgid "Circular shape resource for 2D physics." msgstr "用于 2D 物理的圆形资源。" @@ -18714,11 +21101,11 @@ msgid "" "the fastest collision shape to check collisions against, as it only requires " "a distance check with the shape's origin." msgstr "" -"使用 [CollisionShape2D] 节点将 2D 圆形添加为 [PhysicsBody2D] 或 [Area2D] 的一" -"个[i]直接[/i]子节点。这种形状对于为球或小角色建模很有用,并且它与其他物体的碰" -"撞检测速度非常快。\n" +"使用 [CollisionShape2D] 节点作为 [PhysicsBody2D] 或 [Area2D] 的[i]直接[/i]子" +"节点时,可被添加的 2D 圆形。这种形状对于为球或小角色建模很有用,并且它与其他" +"物体的碰撞检测速度非常快。\n" "[b]性能:[/b]作为一种原始的碰撞形状,[CircleShape2D] 是检测碰撞最快的碰撞形" -"状,因为它只需要与形状的原点进行距离检测。" +"状,因为它只需要与该形状的原点进行距离检测。" msgid "The circle's radius." msgstr "圆的半径。" @@ -18740,6 +21127,32 @@ msgid "Returns whether the specified [param class] is available or not." msgstr "返回指定的类 [param class] 是否可用。" msgid "" +"Returns an array with all the keys in [param enum] of [param class] or its " +"ancestry." +msgstr "" +"返回一个数组,其中包含 [param class] 或其祖先的 [param enum] 中的所有键。" + +msgid "Returns an array with all the enums of [param class] or its ancestry." +msgstr "返回一个数组,其中包含 [param class] 或其祖先的所有枚举。" + +msgid "" +"Returns the value of the integer constant [param name] of [param class] or " +"its ancestry. Always returns 0 when the constant could not be found." +msgstr "" +"返回 [param class] 或其父级的整数常量值 [param name]。如果找不到该常量,则总" +"是返回0。" + +msgid "" +"Returns which enum the integer constant [param name] of [param class] or its " +"ancestry belongs to." +msgstr "返回 [param class] 或其祖先的整数常量 [param name] 所属的枚举。" + +msgid "" +"Returns an array with the names all the integer constants of [param class] " +"or its ancestry." +msgstr "返回包含 [param class] 或其父级全部整数常量的名称数组。" + +msgid "" "Returns an array with all the methods of [param class] or its ancestry if " "[param no_inheritance] is [code]false[/code]. Every element of the array is " "a [Dictionary] with the following keys: [code]args[/code], " @@ -18758,6 +21171,10 @@ msgstr "" "称。" msgid "" +"Returns the value of [param property] of [param object] or its ancestry." +msgstr "返回 [param object] 或其父级 [param property] 的属性值。" + +msgid "" "Returns an array with all the properties of [param class] or its ancestry if " "[param no_inheritance] is [code]false[/code]." msgstr "" @@ -18835,6 +21252,26 @@ msgid "Multiline text control intended for editing code." msgstr "多行文本控件,用于代码编辑。" msgid "" +"CodeEdit is a specialized [TextEdit] designed for editing plain text code " +"files. It contains a bunch of features commonly found in code editors such " +"as line numbers, line folding, code completion, indent management and " +"string / comment management.\n" +"[b]Note:[/b] By default [CodeEdit] always use left-to-right text direction " +"to correctly display source code." +msgstr "" +"CodeEdit 是一个专门用于编辑纯文本代码文件的 [TextEdit]。它包含了一些代码编辑" +"器中常见的功能,如行号、折行、代码补全、缩进管理和字符串 / 注释管理。\n" +"[b]注意:[/b] 默认情况下,[CodeEdit] 总是使用从左到右的文本方向来正确显示源代" +"码。" + +msgid "" +"Override this method to define how the selected entry should be inserted. If " +"[param replace] is true, any existing text should be replaced." +msgstr "" +"重写此方法以定义所选条目应如何插入。如果 [param replace] 为真,任何现有的文本" +"都应该被替换。" + +msgid "" "Override this method to define what items in [param candidates] should be " "displayed.\n" "Both [param candidates] and the return is a [Array] of [Dictionary], see " @@ -18975,9 +21412,25 @@ msgstr "获取当前已选定补全项的索引。" msgid "Gets the end key for a string or comment region index." msgstr "获取字符串或注释块索引的结束键。" +msgid "" +"If [param line] [param column] is in a string or comment, returns the end " +"position of the region. If not or no end could be found, both [Vector2] " +"values will be [code]-1[/code]." +msgstr "" +"如果 [param line] [param column] 是在一个字符串或注释中,则返回该区域的结束位" +"置。如果不在或未找到结束位置,则 [Vector2] 的两个值都将是 [code]-1[/code] 。" + msgid "Gets the start key for a string or comment region index." msgstr "获取字符串或注释块索引的开始键。" +msgid "" +"If [param line] [param column] is in a string or comment, returns the start " +"position of the region. If not or no start could be found, both [Vector2] " +"values will be [code]-1[/code]." +msgstr "" +"如果 [param line] [param column] 是在一个字符串或注释中,则返回该区域的起始位" +"置。如果不在或未找到开始位置,则 [Vector2] 的两个值都将是 [code]-1[/code] 。" + msgid "Gets all executing lines." msgstr "获取所有正在执行的行。" @@ -19008,6 +21461,24 @@ msgid "" "Indents selected lines, or in the case of no selection the caret line by one." msgstr "缩进选定的行,或者在没有选择的情况下,将光标行缩进一个。" +msgid "" +"Returns delimiter index if [param line] [param column] is in a comment. If " +"[param column] is not provided, will return delimiter index if the entire " +"[param line] is a comment. Otherwise [code]-1[/code]." +msgstr "" +"如果 [param line] [param column] 在一条注释中,则返回分隔符索引。如果没有提" +"供 [param column],且整个 [param line] 是一条注释,则将返回分隔符索引。否则返" +"回 [code]-1[/code]。" + +msgid "" +"Returns the delimiter index if [param line] [param column] is in a string. " +"If [param column] is not provided, will return the delimiter index if the " +"entire [param line] is a string. Otherwise [code]-1[/code]." +msgstr "" +"如果 [param line] [param column] 在一条字符串中,则返回分隔符索引。如果没有提" +"供 [param column],且整个 [param line] 是一个字符串,则将返回分隔符索引。否则" +"返回 [code]-1[/code]。" + msgid "Returns whether the line at the specified index is bookmarked or not." msgstr "返回指定索引处的行是否添加了书签。" @@ -19056,6 +21527,9 @@ msgstr "将该行设置为断点。" msgid "Sets the line as executing." msgstr "将该行设置为正在执行。" +msgid "Sets the symbol emitted by [signal symbol_validate] as a valid lookup." +msgstr "将 [signal symbol_validate] 发出的符号设置为有效查找。" + msgid "Toggle the folding of the code block at the given line." msgstr "在给定行切换代码块的折叠。" @@ -19156,6 +21630,20 @@ msgstr "" "在提供的列上绘制垂直线。第一个条目被认为是主要的硬参考线,并且被绘制得更显" "眼。" +msgid "" +"Set when a validated word from [signal symbol_validate] is clicked, the " +"[signal symbol_lookup] should be emitted." +msgstr "" +"设置当来自 [signal symbol_validate] 的验证词被点击时,应发出 [signal " +"symbol_lookup]。" + +msgid "" +"Emitted when a breakpoint is added or removed from a line. If the line is " +"moved via backspace a removed is emitted at the old line." +msgstr "" +"在行中添加或移除断点时触发。如果该行通过退格键移动,则在旧行处触发一个移除的" +"信号。" + msgid "Emitted when the user requests code completion." msgstr "当用户请求代码补全时触发。" @@ -19220,12 +21708,27 @@ msgstr "光标的 [Color]。" msgid "[Color] for all icons related to line folding." msgstr "所有与折叠行相关的图标的 [Color]。" +msgid "Sets the background [Color] for the code completion popup." +msgstr "设置代码补全弹出窗口的背景色 [Color]。" + +msgid "" +"Background highlight [Color] for matching text in code completion options." +msgstr "用于匹配代码补全选项中的文本的背景高亮的 [Color]。" + msgid "Font [Color] for the code completion popup." msgstr "代码补全弹出窗口字体的 [Color]。" msgid "[Color] of the scrollbar in the code completion popup." msgstr "代码补全弹出窗口中滚动条的 [Color]。" +msgid "[Color] of the scrollbar in the code completion popup when hovered." +msgstr "代码补全弹出窗口中滚动条在悬停状态的 [Color]。" + +msgid "" +"Background highlight [Color] for the current selected option item in the " +"code completion popup." +msgstr "代码补全弹出窗口中,当前选定选项的背景高亮的 [Color]。" + msgid "Background [Color] of the line containing the caret." msgstr "光标所在行的背景 [Color]。" @@ -19241,6 +21744,9 @@ msgstr "该 [CodeEdit] 文本轮廓的色调。" msgid "Font color for [member TextEdit.placeholder_text]." msgstr "[member TextEdit.placeholder_text] 的字体颜色。" +msgid "Sets the font [Color] when [member TextEdit.editable] is disabled." +msgstr "设置禁用 [member TextEdit.editable] 时的字体 [Color]。" + msgid "" "Sets the [Color] of the selected text. If equal to [code]Color(0, 0, 0, 0)[/" "code], it will be ignored." @@ -19248,13 +21754,36 @@ msgstr "" "设置所选文本的 [Color]。如果等于 [code]Color(0, 0, 0, 0)[/code],则该属性将被" "忽略。" +msgid "" +"[Color] of the main line length guideline, secondary guidelines will have " +"50% alpha applied." +msgstr "主行长度参考线的 [Color],次要参考线将应用 50% 的 Alpha。" + msgid "Sets the [Color] of line numbers." msgstr "设置行号的颜色 [Color]。" +msgid "[Color] of the border around text that matches the search query." +msgstr "与搜索查询匹配的文本周围的边框的 [Color]。" + +msgid "[Color] behind the text that matches the search query." +msgstr "与搜索查询匹配的文本背景的 [Color]。" + msgid "Sets the highlight [Color] of text selections." msgstr "设置文本选择的高亮 [Color] 颜色。" msgid "" +"Sets the highlight [Color] of multiple occurrences. [member TextEdit." +"highlight_all_occurrences] has to be enabled." +msgstr "" +"设置多次出现的高亮的 [Color]。[member TextEdit.highlight_all_occurrences] 必" +"须已被启用。" + +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 then this " "will be cut off." msgstr "代码补全弹出窗口中选项的最大宽度。更长的选项将被切断。" @@ -19352,6 +21881,15 @@ msgstr "" "设置关键字的颜色。\n" "关键字不能包含除“_”之外的任何符号。" +msgid "" +"Sets the color for a member keyword.\n" +"The member keyword cannot contain any symbols except '_'.\n" +"It will not be highlighted if preceded by a '.'." +msgstr "" +"设置成员关键字的颜色。\n" +"成员关键字不能包含除“_”之外的任何符号。\n" +"如果前面有“.”,则不会高亮显示。" + msgid "Removes all color regions." msgstr "移除所有颜色区域。" @@ -19579,9 +22117,17 @@ msgstr "移除形状所有者的所有形状。" msgid "Returns the parent object of the given shape owner." msgstr "返回给定形状所有者的父对象。" +msgid "Returns the [Shape2D] with the given ID from the given shape owner." +msgstr "从给定形状所有者返回具有给定 ID 的 [Shape2D]。" + msgid "Returns the number of shapes the given shape owner contains." msgstr "返回给定形状所有者包含的形状数量。" +msgid "" +"Returns the child index of the [Shape2D] with the given ID from the given " +"shape owner." +msgstr "从给定形状所有者返回具有给定 ID 的 [Shape2D] 的子索引。" + msgid "Returns the shape owner's [Transform2D]." msgstr "返回形状所有者的 [Transform2D]。" @@ -19647,6 +22193,14 @@ msgstr "" "用来防止玩家突破关卡的边界。" msgid "" +"Defines the behavior in physics when [member Node.process_mode] is set to " +"[constant Node.PROCESS_MODE_DISABLED]. See [enum DisableMode] for more " +"details about the different modes." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,定义物理行为。有关不同模式的更多详细信息,请参阅 [enum DisableMode]。" + +msgid "" "If [code]true[/code], this object is pickable. A pickable object can detect " "the mouse pointer entering/leaving, and if the mouse is inside it, report " "input events. Requires at least one [member collision_layer] bit to be set." @@ -19656,6 +22210,53 @@ msgstr "" "collision_layer] 位。" msgid "" +"Emitted when an input event occurs. Requires [member input_pickable] to be " +"[code]true[/code] and at least one [member collision_layer] bit to be set. " +"See [method _input_event] for details." +msgstr "" +"当输入事件发生时发出。要求 [member input_pickable] 为 [code]true[/code] 并且" +"至少设置了一个 [member collision_layer] 位。有关详细信息,请参见 [method " +"_input_event]。" + +msgid "" +"Emitted when the mouse pointer enters any of this object's shapes. Requires " +"[member input_pickable] to be [code]true[/code] and at least one [member " +"collision_layer] bit to be set. Note that moving between different shapes " +"within a single [CollisionObject2D] won't cause this signal to be emitted.\n" +"[b]Note:[/b] Due to the lack of continuous collision detection, this signal " +"may not be emitted in the expected order if the mouse moves fast enough and " +"the [CollisionObject2D]'s area is small. This signal may also not be emitted " +"if another [CollisionObject2D] is overlapping the [CollisionObject2D] in " +"question." +msgstr "" +"当鼠标指针进入该对象的任何形状时发出。要求 [member input_pickable] 为 " +"[code]true[/code] 并且至少设置了一个 [member collision_layer] 位。请注意,在" +"单个 [CollisionObject2D] 中的不同形状之间移动,不会导致发出该信号。\n" +"[b]注意:[/b]由于缺少连续的碰撞检测,如果鼠标移动得足够快并且 " +"[CollisionObject2D] 的区域很小,则该信号可能不会按预期的顺序发出。如果另一个 " +"[CollisionObject2D] 与所讨论的 [CollisionObject2D] 重叠,则也可能不会发出该信" +"号。" + +msgid "" +"Emitted when the mouse pointer exits all this object's shapes. Requires " +"[member input_pickable] to be [code]true[/code] and at least one [member " +"collision_layer] bit to be set. Note that moving between different shapes " +"within a single [CollisionObject2D] won't cause this signal to be emitted.\n" +"[b]Note:[/b] Due to the lack of continuous collision detection, this signal " +"may not be emitted in the expected order if the mouse moves fast enough and " +"the [CollisionObject2D]'s area is small. This signal may also not be emitted " +"if another [CollisionObject2D] is overlapping the [CollisionObject2D] in " +"question." +msgstr "" +"当鼠标指针离开该对象的所有形状时发出。要求 [member input_pickable] 为 " +"[code]true[/code] 并且至少设置了一个 [member collision_layer] 位。请注意,在" +"单个 [CollisionObject2D] 中的不同形状之间移动,不会导致发出该信号。\n" +"[b]注意:[/b]由于缺少连续的碰撞检测,如果鼠标移动得足够快并且 " +"[CollisionObject2D] 的区域很小,则该信号可能不会按预期的顺序发出。如果另一个 " +"[CollisionObject2D] 与所讨论的 [CollisionObject2D] 重叠,则也可能不会发出该信" +"号。" + +msgid "" "Emitted when the mouse pointer enters any of this object's shapes or moves " "from one shape to another. [param shape_idx] is the child index of the newly " "entered [Shape2D]. Requires [member input_pickable] to be [code]true[/code] " @@ -19688,6 +22289,18 @@ msgstr "" msgid "" "When [member Node.process_mode] is set to [constant Node." +"PROCESS_MODE_DISABLED], make the body static. Doesn't affect [Area2D]. " +"[PhysicsBody2D] can't be affected by forces or other bodies while static.\n" +"Automatically set [PhysicsBody2D] back to its original mode when the [Node] " +"is processed again." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,使物体进入静态模式。不影响 [Area2D]。处于静态模式的 [PhysicsBody2D] 不会" +"受到力和其他物体的影响。\n" +"当该 [Node] 再次被处理时,会自动将 [PhysicsBody2D] 设置回其原始模式。" + +msgid "" +"When [member Node.process_mode] is set to [constant Node." "PROCESS_MODE_DISABLED], do not affect the physics simulation." msgstr "" "当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " @@ -19697,6 +22310,23 @@ msgid "Base node for collision objects." msgstr "碰撞对象的基础节点。" msgid "" +"CollisionObject3D is the base class for physics objects. It can hold any " +"number of collision [Shape3D]s. Each shape must be assigned to a [i]shape " +"owner[/i]. The CollisionObject3D can have any number of shape owners. Shape " +"owners are not nodes and do not appear in the editor, but are accessible " +"through code using the [code]shape_owner_*[/code] methods.\n" +"[b]Warning:[/b] With a non-uniform scale this node will probably not " +"function as expected. Please make sure to keep its scale uniform (i.e. the " +"same on all axes), and change the size(s) of its collision shape(s) instead." +msgstr "" +"CollisionObject3D 是物理对象的基类。它可以容纳任意数量的碰撞 [Shape3D]。每个" +"形状必须被分配给一个[i]形状所有者[/i]。CollisionObject3D 可以有任意数量的形状" +"所有者。形状所有者不是节点,也不会出现在编辑器中,但可以使用 " +"[code]shape_owner_*[/code] 方法通过代码访问。\n" +"[b]警告:[/b]如果缩放不一致,该节点可能无法按预期运行。请确保保持其缩放统一" +"(即在所有轴上相同),并改为更改其碰撞形状的大小。" + +msgid "" "Receives unhandled [InputEvent]s. [param position] is the location in world " "space of the mouse pointer on the surface of the shape with index [param " "shape_idx] and [param normal] is the normal vector of the surface at that " @@ -19749,6 +22379,87 @@ msgid "Sets the [Transform3D] of the given shape owner." msgstr "设置给定形状所有者的 [Transform3D]。" msgid "" +"The physics layers this CollisionObject3D [b]is in[/b]. Collision objects " +"can exist in one or more of 32 different layers. See also [member " +"collision_mask].\n" +"[b]Note:[/b] Object A can detect a contact with object B only if object B is " +"in any of the layers that object A scans. See [url=$DOCS_URL/tutorials/" +"physics/physics_introduction.html#collision-layers-and-masks]Collision " +"layers and masks[/url] in the documentation for more information." +msgstr "" +"该 CollisionObject3D [b]所在的[/b]物理层。碰撞对象可以存在于 32 个不同层中的" +"一层或多层。另见 [member collision_mask]。\n" +"[b]注意:[/b]只有当对象 B 位于对象 A 扫描的任何层中时,对象 A 才能检测到与对" +"象 B 的接触。有关更多信息,请参阅文档中的[url=$DOCS_URL/tutorials/physics/" +"physics_introduction.html#collision-layers-and-masks]《碰撞层和掩码》[/url]。" + +msgid "" +"The physics layers this CollisionObject3D [b]scans[/b]. Collision objects " +"can scan one or more of 32 different layers. See also [member " +"collision_layer].\n" +"[b]Note:[/b] Object A can detect a contact with object B only if object B is " +"in any of the layers that object A scans. See [url=$DOCS_URL/tutorials/" +"physics/physics_introduction.html#collision-layers-and-masks]Collision " +"layers and masks[/url] in the documentation for more information." +msgstr "" +"该 CollisionObject3D [b]扫描的[/b]物理层。碰撞对象可以扫描 32 个不同层中的一" +"层或多层。另见 [member collision_layer]。\n" +"[b]注意:[/b]只有当对象 B 位于对象 A 扫描的任何层中时,对象 A 才能检测到与对" +"象 B 的接触。有关更多信息,请参阅文档中的[url=$DOCS_URL/tutorials/physics/" +"physics_introduction.html#collision-layers-and-masks]《碰撞层和掩码》[/url]。" + +msgid "" +"If [code]true[/code], the [CollisionObject3D] will continue to receive input " +"events as the mouse is dragged across its shapes." +msgstr "" +"如果为 [code]true[/code],则当鼠标拖过其形状时,[CollisionObject3D] 将继续接" +"收输入事件。" + +msgid "" +"Emitted when the object receives an unhandled [InputEvent]. [param position] " +"is the location in world space of the mouse pointer on the surface of the " +"shape with index [param shape_idx] and [param normal] is the normal vector " +"of the surface at that point." +msgstr "" +"当对象收到未处理的 [InputEvent] 时发出。[param position] 是鼠标指针在索引为 " +"[param shape_idx] 的形状表面上的世界空间位置,[param normal] 是表面在该点的法" +"向量。" + +msgid "" +"Emitted when the mouse pointer enters any of this object's shapes. Requires " +"[member input_ray_pickable] to be [code]true[/code] and at least one [member " +"collision_layer] bit to be set.\n" +"[b]Note:[/b] Due to the lack of continuous collision detection, this signal " +"may not be emitted in the expected order if the mouse moves fast enough and " +"the [CollisionObject3D]'s area is small. This signal may also not be emitted " +"if another [CollisionObject3D] is overlapping the [CollisionObject3D] in " +"question." +msgstr "" +"当鼠标指针进入该对象的任何形状时发出。要求 [member input_ray_pickable] 为 " +"[code]true[/code] 并且至少设置了一个 [member collision_layer] 位。\n" +"[b]注意:[/b]由于缺少连续的碰撞检测,如果鼠标移动得足够快并且 " +"[CollisionObject3D] 的区域很小,则该信号可能不会按预期的顺序发出。如果另一个 " +"[CollisionObject3D] 与所讨论的 [CollisionObject3D] 重叠,则也可能不会发出该信" +"号。" + +msgid "" +"Emitted when the mouse pointer exits all this object's shapes. Requires " +"[member input_ray_pickable] to be [code]true[/code] and at least one [member " +"collision_layer] bit to be set.\n" +"[b]Note:[/b] Due to the lack of continuous collision detection, this signal " +"may not be emitted in the expected order if the mouse moves fast enough and " +"the [CollisionObject3D]'s area is small. This signal may also not be emitted " +"if another [CollisionObject3D] is overlapping the [CollisionObject3D] in " +"question." +msgstr "" +"当鼠标指针离开该对象的所有形状时发出。要求 [member input_ray_pickable] 为 " +"[code]true[/code] 并且至少设置了一个 [member collision_layer] 位。\n" +"[b]注意:[/b]由于缺少连续的碰撞检测,如果鼠标移动得足够快并且 " +"[CollisionObject3D] 的区域很小,则该信号可能不会按预期的顺序发出。如果另一个 " +"[CollisionObject3D] 与所讨论的 [CollisionObject3D] 重叠,则也可能不会发出该信" +"号。" + +msgid "" "When [member Node.process_mode] is set to [constant Node." "PROCESS_MODE_DISABLED], remove from the physics simulation to stop all " "physics interactions with this [CollisionObject3D].\n" @@ -19759,8 +22470,17 @@ msgstr "" "时,从物理仿真中移除,停止与此 [CollisionObject3D] 的所有物理交互。\n" "当该 [Node] 再次被处理时,会自动重新加入到物理仿真中。" -msgid "Defines a 2D collision polygon." -msgstr "定义 2D 碰撞多边形。" +msgid "" +"When [member Node.process_mode] is set to [constant Node." +"PROCESS_MODE_DISABLED], make the body static. Doesn't affect [Area3D]. " +"[PhysicsBody3D] can't be affected by forces or other bodies while static.\n" +"Automatically set [PhysicsBody3D] back to its original mode when the [Node] " +"is processed again." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,使实体静态化。不影响 [Area3D]。[PhysicsBody3D] 在静态时不会受到力或其他实" +"体的影响。\n" +"当该 [Node] 再次被处理时,自动将 [PhysicsBody3D] 设置回其原始模式。" msgid "Collision build mode. Use one of the [enum BuildMode] constants." msgstr "碰撞构建模式。使用 [enum BuildMode] 常量之一。" @@ -19787,74 +22507,17 @@ msgstr "" "用于单向碰撞的边距(以像素为单位)。较高的值将使形状更厚,并且对于以高速进入" "多边形的对撞机来说效果更好。" -msgid "Collisions will include the polygon and its contained area." -msgstr "碰撞将包括多边形及其包含的区域。" - -msgid "Collisions will only include the polygon edges." -msgstr "碰撞将仅包括多边形边缘。" - -msgid "Editor-only node for defining a collision polygon in 3D space." -msgstr "编辑器专用的节点,用于在 3D 空间中定义碰撞多边形。" - -msgid "" -"Allows editing a concave or convex collision polygon's vertices on a " -"selected plane. Can also set a depth perpendicular to that plane. This class " -"is only available in the editor. It will not appear in the scene tree at run-" -"time. Creates several [ConvexPolygonShape3D]s at run-time to represent the " -"original polygon using convex decomposition.\n" -"[b]Note:[/b] Since this is an editor-only helper, properties modified during " -"gameplay will have no effect.\n" -"[b]Warning:[/b] A non-uniformly scaled CollisionPolygon3D node will probably " -"not function as expected. Please make sure to keep its scale uniform (i.e. " -"the same on all axes), and change its [member polygon]'s vertices instead." -msgstr "" -"允许在选定平面上编辑凹形或凸形碰撞多边形的顶点。也可以设置垂直于该平面的深" -"度。该类仅在编辑器中可用。它不会在运行时出现在场景树中。在运行时创建多个 " -"[ConvexPolygonShape3D] 以使用凸分解表示原始多边形。\n" -"[b]注意:[/b]由于这是一个仅限编辑器的助手类,因此在游戏过程中修改的属性将无" -"效。\n" -"[b]警告:[/b]非均匀缩放的 CollisionPolygon3D 节点可能无法按预期运行。请确保保" -"持其比例统一(即在所有轴上相同),并改为更改其 [member polygon] 的顶点。" - -msgid "" -"Length that the resulting collision extends in either direction " -"perpendicular to its polygon." -msgstr "产生的碰撞在垂直于其多边形的任一方向上延伸的长度。" - msgid "If [code]true[/code], no collision will be produced." msgstr "如果为 [code]true[/code],将不会产生碰撞。" msgid "" -"Array of vertices which define the polygon.\n" -"[b]Note:[/b] The returned value is a copy of the original. Methods which " -"mutate the size or properties of the return value will not impact the " -"original polygon. To change properties of the polygon, assign it to a " -"temporary variable and make changes before reassigning the [code]polygon[/" -"code] member." -msgstr "" -"定义多边形的顶点数组。\n" -"[b]注意:[/b]返回的值是原始值的副本。改变返回值的大小或属性的方法不会影响原始" -"多边形。要更改多边形的属性,请将其分配给临时变量并进行更改,然后再重新分配" -"[code]polygon[/code]成员。" +"The collision margin for the generated [Shape3D]. See [member Shape3D." +"margin] for more details." +msgstr "生成的 [Shape3D] 的碰撞边距。详情见 [member Shape3D.margin]。" msgid "Node that represents collision shape data in 2D space." msgstr "表示2D空间中的碰撞形状数据的节点。" -msgid "" -"Editor facility for creating and editing collision shapes in 2D space. Set " -"the [member shape] property to configure the shape. [b]IMPORTANT[/b]: this " -"is an Editor-only helper to create shapes, use [method CollisionObject2D." -"shape_owner_get_shape] to get the actual shape.\n" -"You can use this node to represent all sorts of collision shapes, for " -"example, add this to an [Area2D] to give it a detection shape, or add it to " -"a [PhysicsBody2D] to create a solid object." -msgstr "" -"用于在 2D 空间中创建和编辑碰撞形状的编辑工具。请使用 [member shape] 属性配置" -"形状。[b]重要[/b]:这是专为编辑器提供的形状创建工具,要获取实际形状,请使用 " -"[method CollisionObject2D.shape_owner_get_shape]。\n" -"你可以使用这个节点表示各种碰撞形状,例如,将其添加到 [Area2D] 以使其具有检测" -"形状,或将其添加到物理体 [PhysicsBody2D] 以创建实体对象。" - msgid "Physics introduction" msgstr "物理介绍" @@ -19901,25 +22564,9 @@ msgid "Node that represents collision shape data in 3D space." msgstr "表示 3D 空间中的碰撞形状数据的节点。" msgid "" -"Editor facility for creating and editing collision shapes in 3D space. Set " -"the [member shape] property to configure the shape. [b]IMPORTANT[/b]: this " -"is an Editor-only helper to create shapes, use [method CollisionObject3D." -"shape_owner_get_shape] to get the actual shape.\n" -"You can use this node to represent all sorts of collision shapes, for " -"example, add this to an [Area3D] to give it a detection shape, or add it to " -"a [PhysicsBody3D] to create a solid object.\n" -"[b]Warning:[/b] A non-uniformly scaled CollisionShape3D node will probably " -"not function as expected. Please make sure to keep its scale uniform (i.e. " -"the same on all axes), and change the size of its [member shape] resource " -"instead." -msgstr "" -"用于在 3D 空间中创建和编辑碰撞形状的编辑器工具。请设置 [member shape] 属性来" -"配置形状。[b]重要[/b]:这是一个仅供编辑器使用的用于创建形状的助手类,使用 " -"[method CollisionObject3D.shape_owner_get_shape] 来获取实际形状。\n" -"您可以使用此节点来表示各种碰撞形状,例如,将其添加到 [Area3D] 以为其提供检测" -"形状,或将其添加到 [PhysicsBody3D] 以创建实体对象。\n" -"[b]警告:[/b]非均匀缩放的 CollisionShape3D 节点可能无法按预期运行。请确保保持" -"其比例统一(即在所有轴上相同),并改为更改其 [member shape] 资源的大小。" +"Sets the collision shape's shape to the addition of all its convexed " +"[MeshInstance3D] siblings geometry." +msgstr "将碰撞形状的形状设置为其所有凸面 [MeshInstance3D] 兄弟几何体的相加。" msgid "" "If this method exists within a script it will be called whenever the shape " @@ -20106,6 +22753,14 @@ msgstr "" "[/codeblocks]" msgid "" +"Returns a new color with all components clamped between the components of " +"[param min] and [param max], by running [method @GlobalScope.clamp] on each " +"component." +msgstr "" +"通过在每个分量上运行 [method @GlobalScope.clamp],返回一种新颜色,其中所有分" +"量都被钳制在 [param min] 和 [param max] 的分量之间。" + +msgid "" "Returns a new color resulting from making this color darker by the specified " "[param amount] (ratio from 0.0 to 1.0). See also [method lightened].\n" "[codeblocks]\n" @@ -20133,6 +22788,57 @@ msgstr "" "[/codeblocks]" msgid "" +"Constructs a color from an [url=https://en.wikipedia.org/wiki/" +"HSL_and_HSV]HSV profile[/url]. The hue ([param h]), saturation ([param s]), " +"and value ([param v]) are typically between 0.0 and 1.0.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = Color.FromHsv(0.58f, 0.5f, 0.79f, 0.8f);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"根据 [url=https://zh.wikipedia.org/wiki/" +"HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4]HSV 配置[/url]构建颜色。" +"色相([param h])、饱和度([param s])和值([param v])通常在 0.0 和 1.0 之" +"间。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color.from_hsv(0.58, 0.5, 0.79, 0.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = Color.FromHsv(0.58f, 0.5f, 0.79f, 0.8f);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Constructs a color from an [url=https://bottosson.github.io/posts/" +"colorpicker/]OK HSL profile[/url]. The hue ([param h]), saturation ([param " +"s]), and lightness ([param l]) are typically between 0.0 and 1.0.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color.from_ok_hsl(0.58, 0.5, 0.79, 0.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = Color.FromOkHsl(0.58f, 0.5f, 0.79f, 0.8f);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"根据 [url=https://bottosson.github.io/posts/colorpicker/]OK HSL 配置[/url]构" +"建颜色。色相([param h])、饱和度([param s])和亮度([param l])通常在 0.0 " +"和 1.0 之间。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color.from_ok_hsl(0.58, 0.5, 0.79, 0.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = Color.FromOkHsl(0.58f, 0.5f, 0.79f, 0.8f);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Decodes a [Color] from a RGBE9995 format integer. See [constant Image." "FORMAT_RGBE9995]." msgstr "" @@ -20147,6 +22853,56 @@ msgstr "" "(不区分大小写)。如果无法从字符串中推断出颜色,则返回 [param default]。" msgid "" +"Returns the light intensity of the color, as a value between 0.0 and 1.0 " +"(inclusive). This is useful when determining light or dark color. Colors " +"with a luminance smaller than 0.5 can be generally considered dark.\n" +"[b]Note:[/b] [method get_luminance] relies on the color being in the linear " +"color space to return an accurate relative luminance value. If the color is " +"in the sRGB color space, use [method srgb_to_linear] to convert it to the " +"linear color space first." +msgstr "" +"将颜色的光照强度返回为一个介于 0.0 和 1.0(包含)之间的值。这在确定浅色或深色" +"时很有用。亮度小于 0.5 的颜色通常可以认为是深色。\n" +"[b]注意:[/b][method get_luminance] 依赖于线性色彩空间中的颜色,以返回准确的" +"相对亮度值。如果颜色在 sRGB 色彩空间,请先使用 [method srgb_to_linear] 将其转" +"换为线性色彩空间。" + +msgid "" +"Returns the [Color] associated with the provided [param hex] integer in 32-" +"bit RGBA format (8 bits per channel, alpha channel first).\n" +"In GDScript and C#, the [int] is best visualized with hexadecimal notation " +"([code]\"0x\"[/code] prefix).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var red = Color.hex(0xff0000ff)\n" +"var dark_cyan = Color.hex(0x008b8bff)\n" +"var my_color = Color.hex(0xbbefd2a4)\n" +"[/gdscript]\n" +"[csharp]\n" +"var red = new Color(0xff0000ff);\n" +"var dark_cyan = new Color(0x008b8bff);\n" +"var my_color = new Color(0xbbefd2a4);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回与以 32 位 RGBA 格式(每个通道 8 位,Alpha 通道在前)提供的 [param hex] " +"整数关联的 [Color]。\n" +"在 GDScript 和 C# 中,[int] 最好用十六进制表示法([code]\"0x\"[/code] 前缀)" +"来可视化。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var red = Color.hex(0xff0000ff)\n" +"var dark_cyan = Color.hex(0x008b8bff)\n" +"var my_color = Color.hex(0xbbefd2a4)\n" +"[/gdscript]\n" +"[csharp]\n" +"var red = new Color(0xff0000ff);\n" +"var dark_cyan = new Color(0x008b8bff);\n" +"var my_color = new Color(0xbbefd2a4);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Returns the [Color] associated with the provided [param hex] integer in 64-" "bit RGBA format (16 bits per channel, alpha channel first).\n" "In GDScript and C#, the [int] is best visualized with hexadecimal notation " @@ -20201,6 +22957,91 @@ msgstr "" "[/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" +"[codeblocks]\n" +"[gdscript]\n" +"var black = Color.WHITE.inverted()\n" +"var color = Color(0.3, 0.4, 0.9)\n" +"var inverted_color = color.inverted() # Equivalent to `Color(0.7, 0.6, " +"0.1)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var black = Colors.White.Inverted();\n" +"var color = new Color(0.3f, 0.4f, 0.9f);\n" +"Color invertedColor = color.Inverted(); // Equivalent to `new Color(0.7f, " +"0.6f, 0.1f)`\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回将 [member r]、[member g]、[member b] 分量翻转后的颜色([code](1 - r, 1 " +"- g, 1 - b, a)[/code])。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var black = Color.WHITE.inverted()\n" +"var color = Color(0.3, 0.4, 0.9)\n" +"var inverted_color = color.inverted() # 等价于 `Color(0.7, 0.6, 0.1)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var black = Colors.White.Inverted();\n" +"var color = new Color(0.3f, 0.4f, 0.9f);\n" +"Color invertedColor = color.Inverted(); // 等价于 `new Color(0.7f, 0.6f, " +"0.1f)`\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Returns [code]true[/code] if this color and [param to] are approximately " "equal, by running [method @GlobalScope.is_equal_approx] on each component." msgstr "" @@ -20281,6 +23122,24 @@ msgstr "" "[/codeblocks]" msgid "" +"Returns the color converted to the [url=https://en.wikipedia.org/wiki/" +"SRGB]sRGB[/url] color space. This method assumes the original color is in " +"the linear color space. See also [method srgb_to_linear] which performs the " +"opposite operation." +msgstr "" +"返回转换到 [url=https://en.wikipedia.org/wiki/SRGB]sRGB[/url] 色彩空间的颜" +"色。该方法假定原始颜色位于线性色彩空间中。另请参阅执行相反操作的 [method " +"srgb_to_linear]。" + +msgid "" +"Returns the color converted to the linear color space. This method assumes " +"the original color already is in the sRGB color space. See also [method " +"linear_to_srgb] which performs the opposite operation." +msgstr "" +"返回转换到线性色彩空间的颜色。该方法假定原始颜色已经在 sRGB 色彩空间中。另请" +"参见执行相反操作的 [method linear_to_srgb]。" + +msgid "" "Returns the color converted to a 32-bit integer in ABGR format (each " "component is 8 bits). ABGR is the reversed version of the default RGBA " "format.\n" @@ -21020,6 +23879,15 @@ msgstr "" "返回与 [code]+[/code] 不存在时相同的值。单目 [code]+[/code] 没有作用,但有时" "可以使你的代码更具可读性。" +msgid "" +"Inverts the given color. This is equivalent to [code]Color.WHITE - c[/code] " +"or [code]Color(1 - c.r, 1 - c.g, 1 - c.b, 1 - c.a)[/code]. Unlike with " +"[method inverted], the [member a] component is inverted, too." +msgstr "" +"反转给定的颜色。这相当于 [code]Color.WHITE - c[/code] 或 [code]Color(1 - c." +"r, 1 - c.g, 1 - c.b, 1 - c.a)[/code]。与 [method inverted] 不同,[member a] " +"分量也将被反转。" + msgid "Color picker control." msgstr "取色器控件。" @@ -21043,12 +23911,38 @@ msgstr "" "[b]注意:[/b]预设列表仅适用于[i]这个[/i]取色器。" msgid "" +"Adds the given color to a list of color recent presets so that it can be " +"picked later. Recent presets are the colors that were picked recently, a new " +"preset is automatically created and added to recent presets when you pick a " +"new color.\n" +"[b]Note:[/b] The recent presets list is only for [i]this[/i] color picker." +msgstr "" +"将给定的颜色添加到近期颜色预设列表中,以便以后可以选择它。近期预设是最近选择" +"的颜色,当选择新颜色时,会自动创建新的预设并将其添加到近期预设中。\n" +"[b]注意:[/b]近期预设列表仅适用于[i]这个[/i]取色器。" + +msgid "" "Removes the given color from the list of color presets of this color picker." msgstr "从这个取色器的颜色预设列表中移除给定的颜色。" +msgid "" +"Removes the given color from the list of color recent presets of this color " +"picker." +msgstr "从这个取色器的颜色近期预设列表中移除给定的颜色。" + msgid "Returns the list of colors in the presets of the color picker." msgstr "返回取色器的预设颜色列表。" +msgid "Returns the list of colors in the recent presets of the color picker." +msgstr "返回取色器的近期预设中的颜色列表。" + +msgid "" +"If [code]true[/code], it's possible to add presets under Swatches. If " +"[code]false[/code], the button to add presets is disabled." +msgstr "" +"如果为 [code]true[/code],则可以在色板下添加预设。如果为 [code]false[/code]," +"添加预设的按钮将被禁用。" + msgid "The currently selected color." msgstr "当前选择的颜色。" @@ -21075,6 +23969,10 @@ msgstr "如果为 [code]true[/code],则十六进制颜色代码输入框可见 msgid "The shape of the color space view. See [enum PickerShapeType]." msgstr "色彩空间视图的形状。见 [enum PickerShapeType]。" +msgid "" +"If [code]true[/code], the Swatches and Recent Colors presets are visible." +msgstr "如果为 [code]true[/code],则色板和近期颜色预设可见。" + msgid "If [code]true[/code], the color sampler and color preview are visible." msgstr "如果为 [code]true[/code],则颜色采样器和颜色预览可见。" @@ -21096,6 +23994,28 @@ msgstr "允许使用红、绿、蓝滑块编辑颜色。" msgid "Allows editing the color with Hue/Saturation/Value sliders." msgstr "允许使用色相、饱和度、明度滑块编辑颜色。" +msgid "" +"Allows the color R, G, B component values to go beyond 1.0, which can be " +"used for certain special operations that require it (like tinting without " +"darkening or rendering sprites in HDR)." +msgstr "" +"允许颜色 R、G、B 分量值超过 1.0,这可用于某些需要它的特殊操作(例如在 HDR " +"中,着色而不变暗或渲染精灵)。" + +msgid "" +"Allows editing the color with Hue/Saturation/Lightness sliders.\n" +"OKHSL is a new color space similar to HSL but that better match perception " +"by leveraging the Oklab color space which is designed to be simple to use, " +"while doing a good job at predicting perceived lightness, chroma and hue.\n" +"[url=https://bottosson.github.io/posts/colorpicker/]Okhsv and Okhsl color " +"spaces[/url]" +msgstr "" +"允许使用色相/饱和度/亮度滑块编辑颜色。\n" +"OKHSL 是一种类似于 HSL 的新色彩空间,但通过利用设计简单易用的 Oklab 色彩空间" +"更好地匹配感知,同时在预测感知亮度、色度和色调方面做得很好。\n" +"[url=https://bottosson.github.io/posts/colorpicker/]Okhsv 和 Okhsl 色彩空间[/" +"url]" + msgid "HSV Color Model rectangle color space." msgstr "HSV 颜色模型矩形色彩空间。" @@ -21108,9 +24028,17 @@ msgstr "HSV 颜色模型圆形色彩空间。半径为饱和度。" msgid "HSL OK Color Model circle color space." msgstr "HSL OK 颜色模型圆形色彩空间。" +msgid "" +"The color space shape and the shape select button are hidden. Can't be " +"selected from the shapes popup." +msgstr "色彩空间形状和形状选择按钮被隐藏。不能从形状弹出窗口中选择。" + msgid "The width of the hue selection slider." msgstr "色相选择滑块的宽度。" +msgid "The minimum width of the color labels next to sliders." +msgstr "滑块旁颜色标签的最小宽度。" + msgid "The margin around the [ColorPicker]." msgstr "[ColorPicker] 周围的边距。" @@ -21143,6 +24071,17 @@ msgid "" "range." msgstr "该指示器用于指示颜色值在 0-1 范围之外。" +msgid "" +"The image displayed over the color box/circle (depending on the [member " +"picker_shape]), marking the currently selected color." +msgstr "" +"显示在颜色框/圆(取决于 [member picker_shape])上的图像,标记当前选择的颜色。" + +msgid "" +"Background panel for the color preview box (visible when the color is " +"translucent)." +msgstr "颜色预览框的背景面板(颜色为半透明时可见)。" + msgid "The icon for the screen color picker button." msgstr "屏幕取色器按钮的图标。" @@ -21159,6 +24098,22 @@ msgid "Button that pops out a [ColorPicker]." msgstr "弹出 [ColorPicker] 的按钮。" msgid "" +"Encapsulates a [ColorPicker] making it accessible by pressing a button. " +"Pressing the button will toggle the [ColorPicker] visibility.\n" +"See also [BaseButton] which contains common properties and methods " +"associated with this node.\n" +"[b]Note:[/b] By default, the button may not be wide enough for the color " +"preview swatch to be visible. Make sure to set [member Control." +"custom_minimum_size] to a big enough value to give the button enough space." +msgstr "" +"封装一个 [ColorPicker] 使其可以通过按下按钮访问。按下按钮将切换 " +"[ColorPicker] 的可见性。\n" +"另请参阅 [BaseButton],其中包含与该节点关联的通用属性和方法。\n" +"[b]注意:[/b]默认情况下,按钮的宽度可能不足以使颜色预览色板可见。确保将 " +"[member Control.custom_minimum_size] 设置为足够大的值,以便为按钮提供足够的空" +"间。" + +msgid "" "Returns the [ColorPicker] that this node toggles.\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 " @@ -21169,6 +24124,19 @@ msgstr "" "藏它或其所有子项,请使用其 [member CanvasItem.visible] 属性。" msgid "" +"Returns the control's [PopupPanel] which allows you to connect to popup " +"signals. This allows you to handle events when the ColorPicker is shown or " +"hidden.\n" +"[b]Warning:[/b] This is a required internal node, removing and freeing it " +"may cause a crash. If you wish to hide it or any of its children, use their " +"[member Window.visible] property." +msgstr "" +"返回该控件的 [PopupPanel],它允许连接到其弹出信号。这允许在显示或隐藏 " +"ColorPicker 时处理事件。\n" +"[b]警告:[/b]这是一个必需的内部节点,移除和释放它可能会导致崩溃。如果希望隐藏" +"它或它的任何子项,请使用它们的 [member Window.visible] 属性。" + +msgid "" "If [code]true[/code], the alpha channel in the displayed [ColorPicker] will " "be visible." msgstr "" @@ -21286,13 +24254,112 @@ msgid "6-sided texture typically used in 3D rendering, optionally compressed." msgstr "6 面纹理,通常用于 3D 渲染,可选择压缩。" msgid "" +"A cubemap that is loaded from a [code].ccube[/code] file. This file format " +"is internal to Godot; it is created by importing other image formats with " +"the import system. [CompressedCubemap] can use one of 4 compresson methods:\n" +"- Uncompressed (uncompressed on the GPU)\n" +"- Lossless (WebP or PNG, uncompressed on the GPU)\n" +"- Lossy (WebP, uncompressed on the GPU)\n" +"- VRAM Compressed (compressed on the GPU)\n" +"Only [b]VRAM Compressed[/b] actually reduces the memory usage on the GPU. " +"The [b]Lossless[/b] and [b]Lossy[/b] compression methods will reduce the " +"required storage on disk, but they will not reduce memory usage on the GPU " +"as the texture is sent to the GPU uncompressed.\n" +"Using [b]VRAM Compressed[/b] also improves loading times, as VRAM-compressed " +"textures are faster to load compared to textures using lossless or lossy " +"compression. VRAM compression can exhibit noticeable artifacts and is " +"intended to be used for 3D rendering, not 2D.\n" +"See [Cubemap] for a general description of cubemaps." +msgstr "" +"一种从 [code].ccube[/code] 文件加载的立方体贴图。这种文件格式是 Godot 内部使" +"用的;它是通过导入系统导入其他图像格式创建的。[CompressedCubemap] 可以使用 4 " +"种压缩方法中的一种:\n" +"- 无压缩(在 GPU 上不压缩)\n" +"- 无损(WebP 或 PNG,在 GPU 上不压缩)\n" +"- 有损(WebP,在 GPU 上不压缩)\n" +"- VRAM 压缩(在 GPU 上压缩)\n" +"只有 [b]VRAM 压缩[/b]实际上减少了 GPU 上的内存使用。[b]无损[/b]和[b]有损[/b]" +"压缩方法将减少磁盘上所需的存储空间,但它们不会减少 GPU 上的内存使用,因为纹理" +"未经压缩地被发送到 GPU。\n" +"使用 [b]VRAM 压缩[/b]还可以缩短加载时间,因为与使用无损或有损压缩的纹理相比," +"VRAM 压缩的纹理加载速度更快。VRAM 压缩会表现出明显的伪影,并且它旨在用于 3D " +"渲染,而不是 2D。\n" +"有关立方体贴图的一般描述,请参阅 [Cubemap]。" + +msgid "" "Array of 6-sided textures typically used in 3D rendering, optionally " "compressed." msgstr "6 面纹理的数组,通常用于 3D 渲染,可选择压缩。" +msgid "" +"A cubemap array that is loaded from a [code].ccubearray[/code] file. This " +"file format is internal to Godot; it is created by importing other image " +"formats with the import system. [CompressedCubemapArray] can use one of 4 " +"compresson methods:\n" +"- Uncompressed (uncompressed on the GPU)\n" +"- Lossless (WebP or PNG, uncompressed on the GPU)\n" +"- Lossy (WebP, uncompressed on the GPU)\n" +"- VRAM Compressed (compressed on the GPU)\n" +"Only [b]VRAM Compressed[/b] actually reduces the memory usage on the GPU. " +"The [b]Lossless[/b] and [b]Lossy[/b] compression methods will reduce the " +"required storage on disk, but they will not reduce memory usage on the GPU " +"as the texture is sent to the GPU uncompressed.\n" +"Using [b]VRAM Compressed[/b] also improves loading times, as VRAM-compressed " +"textures are faster to load compared to textures using lossless or lossy " +"compression. VRAM compression can exhibit noticeable artifacts and is " +"intended to be used for 3D rendering, not 2D.\n" +"See [CubemapArray] for a general description of cubemap arrays." +msgstr "" +"一种从 [code].ccubearray[/code] 文件加载的立方体贴图数组。这种文件格式是 " +"Godot 内部使用的;它是通过导入系统导入其他图像格式创建的。" +"[CompressedCubemapArray] 可以使用 4 种压缩方法中的一种:\n" +"- 无压缩(在 GPU 上不压缩)\n" +"- 无损(WebP 或 PNG,在 GPU 上不压缩)\n" +"- 有损(WebP,在 GPU 上不压缩)\n" +"- VRAM 压缩(在 GPU 上压缩)\n" +"只有 [b]VRAM 压缩[/b]实际上减少了 GPU 上的内存使用。[b]无损[/b]和[b]有损[/b]" +"压缩方法将减少磁盘上所需的存储空间,但它们不会减少 GPU 上的内存使用,因为纹理" +"未经压缩地被发送到 GPU。\n" +"使用 [b]VRAM 压缩[/b]还可以缩短加载时间,因为与使用无损或有损压缩的纹理相比," +"VRAM 压缩的纹理加载速度更快。VRAM 压缩会表现出明显的伪影,并且它旨在用于 3D " +"渲染,而不是 2D。\n" +"有关立方体贴图数组的一般说明,请参阅 [CubemapArray]。" + msgid "Texture with 2 dimensions, optionally compressed." msgstr "二维纹理,可选择压缩。" +msgid "" +"A texture that is loaded from a [code].ctex[/code] file. This file format is " +"internal to Godot; it is created by importing other image formats with the " +"import system. [CompressedTexture2D] can use one of 4 compression methods " +"(including a lack of any compression):\n" +"- Uncompressed (uncompressed on the GPU)\n" +"- Lossless (WebP or PNG, uncompressed on the GPU)\n" +"- Lossy (WebP, uncompressed on the GPU)\n" +"- VRAM Compressed (compressed on the GPU)\n" +"Only [b]VRAM Compressed[/b] actually reduces the memory usage on the GPU. " +"The [b]Lossless[/b] and [b]Lossy[/b] compression methods will reduce the " +"required storage on disk, but they will not reduce memory usage on the GPU " +"as the texture is sent to the GPU uncompressed.\n" +"Using [b]VRAM Compressed[/b] also improves loading times, as VRAM-compressed " +"textures are faster to load compared to textures using lossless or lossy " +"compression. VRAM compression can exhibit noticeable artifacts and is " +"intended to be used for 3D rendering, not 2D." +msgstr "" +"一种从 [code].ctex[/code] 文件加载的纹理。这种文件格式是 Godot 内部使用的;它" +"是通过导入系统导入其他图像格式创建的。[CompressedTexture2D] 可以使用 4 种压缩" +"方法中的一种(包括没有任何压缩):\n" +"- 无压缩(在 GPU 上不压缩)\n" +"- 无损(WebP 或 PNG,在 GPU 上不压缩)\n" +"- 有损(WebP,在 GPU 上不压缩)\n" +"- VRAM 压缩(在 GPU 上压缩)\n" +"只有 [b]VRAM 压缩[/b]实际上减少了 GPU 上的内存使用。[b]无损[/b]和[b]有损[/b]" +"压缩方法将减少磁盘上所需的存储空间,但它们不会减少 GPU 上的内存使用,因为纹理" +"未经压缩地被发送到 GPU。\n" +"使用 [b]VRAM 压缩[/b]还可以缩短加载时间,因为与使用无损或有损压缩的纹理相比," +"VRAM 压缩的纹理加载速度更快。VRAM 压缩会表现出明显的伪影,并且它旨在用于 3D " +"渲染,而不是 2D。" + msgid "Loads the texture from the specified [param path]." msgstr "从指定的路径 [param path] 加载纹理。" @@ -21302,128 +24369,144 @@ msgstr "该 [CompressedTexture2D] 的文件路径,指向 [code].ctex[/code] msgid "Array of 2-dimensional textures, optionally compressed." msgstr "二维纹理的数组,可选择压缩。" +msgid "" +"A texture array that is loaded from a [code].ctexarray[/code] file. This " +"file format is internal to Godot; it is created by importing other image " +"formats with the import system. [CompressedTexture2DArray] can use one of 4 " +"compresson methods:\n" +"- Uncompressed (uncompressed on the GPU)\n" +"- Lossless (WebP or PNG, uncompressed on the GPU)\n" +"- Lossy (WebP, uncompressed on the GPU)\n" +"- VRAM Compressed (compressed on the GPU)\n" +"Only [b]VRAM Compressed[/b] actually reduces the memory usage on the GPU. " +"The [b]Lossless[/b] and [b]Lossy[/b] compression methods will reduce the " +"required storage on disk, but they will not reduce memory usage on the GPU " +"as the texture is sent to the GPU uncompressed.\n" +"Using [b]VRAM Compressed[/b] also improves loading times, as VRAM-compressed " +"textures are faster to load compared to textures using lossless or lossy " +"compression. VRAM compression can exhibit noticeable artifacts and is " +"intended to be used for 3D rendering, not 2D.\n" +"See [Texture2DArray] for a general description of texture arrays." +msgstr "" +"一种从 [code].ctexarray[/code] 文件加载的纹理数组。这种文件格式是 Godot 内部" +"使用的;它是通过导入系统导入其他图像格式创建的。[CompressedTexture2DArray] 可" +"以使用 4 种压缩方法中的一种:\n" +"- 无压缩(在 GPU 上不压缩)\n" +"- 无损(WebP 或 PNG,在 GPU 上不压缩)\n" +"- 有损(WebP,在 GPU 上不压缩)\n" +"- VRAM 压缩(在 GPU 上压缩)\n" +"只有 [b]VRAM 压缩[/b]实际上减少了 GPU 上的内存使用。[b]无损[/b]和[b]有损[/b]" +"压缩方法将减少磁盘上所需的存储空间,但它们不会减少 GPU 上的内存使用,因为纹理" +"未经压缩地被发送到 GPU。\n" +"使用 [b]VRAM 压缩[/b]还可以缩短加载时间,因为与使用无损或有损压缩的纹理相比," +"VRAM 压缩的纹理加载速度更快。VRAM 压缩会表现出明显的伪影,并且它旨在用于 3D " +"渲染,而不是 2D。\n" +"有关纹理数组的一般描述,请参阅 [Texture2DArray]。" + msgid "Texture with 3 dimensions, optionally compressed." msgstr "三维纹理,可选择压缩。" +msgid "" +"[CompressedTexture3D] is the VRAM-compressed counterpart of " +"[ImageTexture3D]. The file extension for [CompressedTexture3D] files is " +"[code].ctex3d[/code]. This file format is internal to Godot; it is created " +"by importing other image formats with the import system.\n" +"[CompressedTexture3D] uses VRAM compression, which allows to reduce memory " +"usage on the GPU when rendering the texture. This also improves loading " +"times, as VRAM-compressed textures are faster to load compared to textures " +"using lossless compression. VRAM compression can exhibit noticeable " +"artifacts and is intended to be used for 3D rendering, not 2D.\n" +"See [Texture3D] for a general description of 3D textures." +msgstr "" +"[CompressedTexture3D] 是 [ImageTexture3D] 的 VRAM 压缩对应物。" +"[CompressedTexture3D] 文件的文件扩展名为 [code].ctex3d[/code]。这种文件格式" +"是 Godot 内部使用的;它是通过导入系统导入其他图像格式创建的。\n" +"[CompressedTexture3D] 使用 VRAM 压缩,这可以在渲染纹理时减少 GPU 的内存使用" +"量。这也缩短了加载时间,因为与使用无损压缩的纹理相比,VRAM 压缩的纹理加载速度" +"更快。VRAM 压缩会表现出明显的伪影,并且它旨在用于 3D 渲染,而不是 2D。\n" +"有关 3D 纹理的一般描述,请参阅 [Texture3D]。" + msgid "The [CompressedTexture3D]'s file path to a [code].ctex3d[/code] file." msgstr "该 [CompressedTexture3D] 的文件路径,指向 [code].ctex3d[/code] 文件。" msgid "Base class for texture arrays that can optionally be compressed." msgstr "可压缩纹理数组的基类。" +msgid "" +"A texture array that is loaded from a [code].ctexarray[/code] file. This " +"file format is internal to Godot; it is created by importing other image " +"formats with the import system. [CompressedTexture2D] can use one of 4 " +"compresson methods:\n" +"- Uncompressed (uncompressed on the GPU)\n" +"- Lossless (WebP or PNG, uncompressed on the GPU)\n" +"- Lossy (WebP, uncompressed on the GPU)\n" +"- VRAM Compressed (compressed on the GPU)\n" +"Only [b]VRAM Compressed[/b] actually reduces the memory usage on the GPU. " +"The [b]Lossless[/b] and [b]Lossy[/b] compression methods will reduce the " +"required storage on disk, but they will not reduce memory usage on the GPU " +"as the texture is sent to the GPU uncompressed.\n" +"Using [b]VRAM Compressed[/b] also improves loading times, as VRAM-compressed " +"textures are faster to load compared to textures using lossless or lossy " +"compression. VRAM compression can exhibit noticeable artifacts and is " +"intended to be used for 3D rendering, not 2D." +msgstr "" +"一种从 [code].ctexarray[/code] 文件加载的纹理数组。这种文件格式是 Godot 内部" +"使用的;它是通过导入系统导入其他图像格式创建的。[CompressedTexture2D] 可以使" +"用 4 种压缩方法中的一种:\n" +"- 无压缩(在 GPU 上不压缩)\n" +"- 无损(WebP 或 PNG,在 GPU 上不压缩)\n" +"- 有损(WebP,在 GPU 上不压缩)\n" +"- VRAM 压缩(在 GPU 上压缩)\n" +"只有 [b]VRAM 压缩[/b]实际上减少了 GPU 上的内存使用。[b]无损[/b]和[b]有损[/b]" +"压缩方法将减少磁盘上所需的存储空间,但它们不会减少 GPU 上的内存使用,因为纹理" +"未经压缩地被发送到 GPU。\n" +"使用 [b]VRAM 压缩[/b]还可以缩短加载时间,因为与使用无损或有损压缩的纹理相比," +"VRAM 压缩的纹理加载速度更快。VRAM 压缩会表现出明显的伪影,并且它旨在用于 3D " +"渲染,而不是 2D。" + msgid "Loads the texture at [param path]." msgstr "从路径 [param path] 加载纹理。" msgid "The path the texture should be loaded from." msgstr "加载纹理所使用的路径。" +msgid "Concave polygon shape resource for 2D physics." +msgstr "用于 2D 物理的凹多边形形状资源。" + msgid "" -"2D concave polygon shape to be added as a [i]direct[/i] child of a " -"[PhysicsBody2D] or [Area2D] using a [CollisionShape2D] node. It is made out " -"of segments and is optimal for complex polygonal concave collisions. " -"However, it is not advised to use for [RigidBody2D] nodes. A " -"CollisionPolygon2D in convex decomposition mode (solids) or several convex " -"objects are advised for that instead. Otherwise, a concave polygon 2D shape " -"is better for static collisions.\n" -"The main difference between a [ConvexPolygonShape2D] and a " -"[ConcavePolygonShape2D] is that a concave polygon assumes it is concave and " -"uses a more complex method of collision detection, and a convex one forces " -"itself to be convex to speed up collision detection.\n" -"[b]Performance:[/b] Due to its complexity, [ConcavePolygonShape2D] is the " -"slowest collision shape to check collisions against. Its use should " -"generally be limited to level geometry. For convex geometry, using " -"[ConvexPolygonShape2D] will perform better. For dynamic physics bodies that " -"need concave collision, several [ConvexPolygonShape2D]s can be used to " -"represent its collision by using convex decomposition; see " -"[ConvexPolygonShape2D]'s documentation for instructions. However, consider " -"using primitive collision shapes such as [CircleShape2D] or " -"[RectangleShape2D] first.\n" -"[b]Warning:[/b] Using this shape for an [Area2D] (via a [CollisionShape2D] " -"node) may give unexpected results: the area will only detect collisions with " -"the segments in the [ConcavePolygonShape2D] (and not with any \"inside\" of " -"the shape, for example)." -msgstr "" -"使用 [CollisionShape2D] 节点作为 [PhysicsBody2D] 或 [Area2D] 的[i]直接[/i]子" -"节点添加的 2D 凹多边形形状。它由线段组成,最适合复杂的多边形凹面碰撞。但是," -"不建议用于 [RigidBody2D] 节点。建议改用凸分解模式(实体)的 " -"CollisionPolygon2D 或多个凸对象。否则,凹多边形 2D 形状更适合静态碰撞。\n" -"[ConvexPolygonShape2D] 和 [ConcavePolygonShape2D] 之间的主要区别在于,凹多边" -"形假设它是凹的,并使用更复杂的碰撞检测方法,而凸多边形强制自身成为凸面以加速" -"碰撞检测。\n" -"[b]性能:[/b]由于其复杂性,[ConcavePolygonShape2D] 是检查碰撞时最慢的碰撞形" -"状。它的使用通常应限于关卡几何。对于凸几何,使用 [ConvexPolygonShape2D] 会表" -"现更好。对于需要凹碰撞的动态物理实体,可以用几个 [ConvexPolygonShape2D] 来表" -"示它的碰撞,使用凸分解;有关说明,请参阅 [ConvexPolygonShape2D] 的文档。但" -"是,请首先考虑使用原始碰撞形状,例如 [CircleShape2D] 或 " -"[RectangleShape2D]。\n" -"[b]警告:[/b]将该形状用于 [Area2D](通过 [CollisionShape2D] 节点)可能会产生" -"意想不到的结果:该区域将仅检测与 [ConcavePolygonShape2D] 中的线段的碰撞(而非" -"任何诸如形状的“内部”)。" - -msgid "" -"The array of points that make up the [ConcavePolygonShape2D]'s line segments." -msgstr "组成 [ConcavePolygonShape2D] 线段的点的数组。" - -msgid "" -"3D concave polygon shape resource (also called \"trimesh\") to be added as a " -"[i]direct[/i] child of a [PhysicsBody3D] or [Area3D] using a " -"[CollisionShape3D] node. This shape is created by feeding a list of " -"triangles. Despite its name, [ConcavePolygonShape3D] can also store convex " -"polygon shapes. However, unlike [ConvexPolygonShape3D], " -"[ConcavePolygonShape3D] is [i]not[/i] limited to storing convex shapes " -"exclusively.\n" -"[b]Note:[/b] When used for collision, [ConcavePolygonShape3D] is intended to " -"work with static [PhysicsBody3D] nodes like [StaticBody3D] and will not work " -"with [CharacterBody3D] or [RigidBody3D] with a mode other than Static.\n" -"[b]Performance:[/b] Due to its complexity, [ConcavePolygonShape3D] is the " -"slowest collision shape to check collisions against. Its use should " -"generally be limited to level geometry. For convex geometry, using " -"[ConvexPolygonShape3D] will perform better. For dynamic physics bodies that " -"need concave collision, several [ConvexPolygonShape3D]s can be used to " -"represent its collision by using convex decomposition; see " -"[ConvexPolygonShape3D]'s documentation for instructions. However, consider " -"using primitive collision shapes such as [SphereShape3D] or [BoxShape3D] " -"first.\n" -"[b]Warning:[/b] Using this shape for an [Area3D] (via a [CollisionShape3D] " -"node, created e.g. by using the [i]Create Trimesh Collision Sibling[/i] " -"option in the [i]Mesh[/i] menu that appears when selecting a " -"[MeshInstance3D] node) may give unexpected results: the area will only " -"detect collisions with the triangle faces in the [ConcavePolygonShape3D] " -"(and not with any \"inside\" of the shape, for example); moreover it will " -"only detect all such collisions if [member backface_collision] is " -"[code]true[/code]." +"Concave polygon shape resource (also called \"trimesh\") for 3D physics." +msgstr "用于 3D 物理的凹多边形形状资源(也称为“trimesh”)。" + +msgid "" +"If set to [code]true[/code], collisions occur on both sides of the concave " +"shape faces. Otherwise they occur only along the face normals." msgstr "" -"使用 [CollisionShape3D] 节点时,添加为 [PhysicsBody3D] 或 [Area3D] 的[i]直接" -"[/i]子节点的 3D 凹多边形形状资源(也称为“trimesh”)。这个形状是通过输入一个三" -"角形列表创建的。尽管名称如此,[ConcavePolygonShape3D] 也可以存储凸多边形形" -"状。因而,与 [ConvexPolygonShape3D] 不同,[ConcavePolygonShape3D] [i]不[/i]仅" -"限于专门存储凸多边形。\n" -"[b]注意:[/b]当用于碰撞时,[ConcavePolygonShape3D] 旨在与 [StaticBody3D] 等静" -"态 [PhysicsBody3D] 节点一起使用,而不会与使用非静态模式的 [CharacterBody3D] " -"或 [RigidBody3D] 等一起使用。\n" -"[b]性能:[/b]由于其复杂性,[ConcavePolygonShape3D] 是检查碰撞时最慢的碰撞形" -"状。它的使用通常应限于关卡几何体。对于凸形几何体,使用 " -"[ConvexPolygonShape3D] 会表现更好。对于需要凸形碰撞的动态物理实体,可以用几" -"个 [ConvexPolygonShape3D] 通过凸形分解来表示它的碰撞;有关说明,请参阅 " -"[ConvexPolygonShape3D] 的文档。但是,请首先考虑使用原始碰撞形状,例如 " -"[SphereShape3D] 或 [BoxShape3D]。\n" -"[b]警告:[/b]将该形状用于 [Area3D](通过 [CollisionShape3D] 节点创建的,例如" -"通过使用选择 [MeshInstance3D] 节点时出现的[i]网格[/i]菜单中的[i]创建三角网格" -"碰撞同级[/i]选项)时可能会产生意想不到的结果:该区域将仅检测与 " -"[ConcavePolygonShape3D] 中的三角形面的碰撞(例如,并不会检测与形状的任何“内" -"部”的碰撞);此外,如果 [member backface_collision] 为 [code]true[/code],它" -"只会检测所有这种碰撞。" - -msgid "Returns the faces (an array of triangles)." -msgstr "返回面(三角形数组)。" - -msgid "Sets the faces (an array of triangles)." -msgstr "设置面(三角形数组)。" +"如果设置为 [code]true[/code],则碰撞会发生在凹形面的两侧。否则,它们只会沿着" +"面法线发生。" msgid "A twist joint between two 3D PhysicsBodies." msgstr "两个 3D PhysicsBody 之间的扭转关节。" msgid "" +"The joint can rotate the bodies across an axis defined by the local x-axes " +"of the [Joint3D].\n" +"The twist axis is initiated as the X axis of the [Joint3D].\n" +"Once the Bodies swing, the twist axis is calculated as the middle of the x-" +"axes of the Joint3D in the local space of the two Bodies. See also " +"[Generic6DOFJoint3D]." +msgstr "" +"关节可以在 [Joint3D] 的局部 x 轴定义的轴上旋转实体。\n" +"扭转轴被初始化为 [Joint3D] 的 X 轴。\n" +"一旦实体摆动,扭转轴将被计算为两个实体的局部空间中 Joint3D 的 x 轴的中间。另" +"见 [Generic6DOFJoint3D]。" + +msgid "Returns the value of the specified parameter." +msgstr "返回指定参数的值。" + +msgid "Sets the value of the specified parameter." +msgstr "设置指定参数的值。" + +msgid "" "The speed with which the swing or twist will take place.\n" "The higher, the faster." msgstr "" @@ -21438,15 +24521,28 @@ msgstr "定义两侧的摆动速度和扭转速度差异同步的速度。" msgid "" "The ease with which the joint starts to twist. If it's too low, it takes " "more force to start twisting the joint." -msgstr "关节开始扭曲的难易程度。如果太低,则需要更多的力才能开始扭转关节。" +msgstr "关节开始扭转的难易程度。如果太低,则需要更多的力才能开始扭转关节。" + +msgid "" +"Swing is rotation from side to side, around the axis perpendicular to the " +"twist axis.\n" +"The swing span defines, how much rotation will not get corrected along the " +"swing axis.\n" +"Could be defined as looseness in the [ConeTwistJoint3D].\n" +"If below 0.05, this behavior is locked." +msgstr "" +"摆动是围绕垂直于扭转轴的轴线,从一边到另一边的旋转。\n" +"摆动跨度定义了沿摆动轴旋转多少不会得到校正。\n" +"可以被定义为 [ConeTwistJoint3D] 中的松动。\n" +"如果低于 0.05,该行为将被锁定。" msgid "" "Twist is the rotation around the twist axis, this value defined how far the " "joint can twist.\n" "Twist is locked if below 0.05." msgstr "" -"扭曲是绕扭曲轴的旋转,此值定义了关节可以扭曲多远。\n" -"如果低于 0.05,则扭曲被锁定。" +"扭转是绕扭转轴的旋转,此值定义了关节可以扭转多远。\n" +"如果低于 0.05,则扭转被锁定。" msgid "Represents the size of the [enum Param] enum." msgstr "代表 [enum Param] 枚举的大小。" @@ -21454,28 +24550,232 @@ msgstr "代表 [enum Param] 枚举的大小。" msgid "Helper class to handle INI-style files." msgstr "用于处理 INI 样式文件的辅助类。" +msgid "" +"This helper class can be used to store [Variant] values on the filesystem " +"using INI-style formatting. The stored values are identified by a section " +"and a key:\n" +"[codeblock]\n" +"[section]\n" +"some_key=42\n" +"string_example=\"Hello World3D!\"\n" +"a_vector=Vector3(1, 0, 2)\n" +"[/codeblock]\n" +"The stored data can be saved to or parsed from a file, though ConfigFile " +"objects can also be used directly without accessing the filesystem.\n" +"The following example shows how to create a simple [ConfigFile] and save it " +"on disc:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Create new ConfigFile object.\n" +"var config = ConfigFile.new()\n" +"\n" +"# Store some values.\n" +"config.set_value(\"Player1\", \"player_name\", \"Steve\")\n" +"config.set_value(\"Player1\", \"best_score\", 10)\n" +"config.set_value(\"Player2\", \"player_name\", \"V3geta\")\n" +"config.set_value(\"Player2\", \"best_score\", 9001)\n" +"\n" +"# Save it to a file (overwrite if already exists).\n" +"config.save(\"user://scores.cfg\")\n" +"[/gdscript]\n" +"[csharp]\n" +"// Create new ConfigFile object.\n" +"var config = new ConfigFile();\n" +"\n" +"// Store some values.\n" +"config.SetValue(\"Player1\", \"player_name\", \"Steve\");\n" +"config.SetValue(\"Player1\", \"best_score\", 10);\n" +"config.SetValue(\"Player2\", \"player_name\", \"V3geta\");\n" +"config.SetValue(\"Player2\", \"best_score\", 9001);\n" +"\n" +"// Save it to a file (overwrite if already exists).\n" +"config.Save(\"user://scores.cfg\");\n" +"[/csharp]\n" +"[/codeblocks]\n" +"This example shows how the above file could be loaded:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var score_data = {}\n" +"var config = ConfigFile.new()\n" +"\n" +"# Load data from a file.\n" +"var err = config.load(\"user://scores.cfg\")\n" +"\n" +"# If the file didn't load, ignore it.\n" +"if err != OK:\n" +" return\n" +"\n" +"# Iterate over all sections.\n" +"for player in config.get_sections():\n" +" # Fetch the data for each section.\n" +" var player_name = config.get_value(player, \"player_name\")\n" +" var player_score = config.get_value(player, \"best_score\")\n" +" score_data[player_name] = player_score\n" +"[/gdscript]\n" +"[csharp]\n" +"var score_data = new Godot.Collections.Dictionary();\n" +"var config = new ConfigFile();\n" +"\n" +"// Load data from a file.\n" +"Error err = config.Load(\"user://scores.cfg\");\n" +"\n" +"// If the file didn't load, ignore it.\n" +"if (err != Error.Ok)\n" +"{\n" +" return;\n" +"}\n" +"\n" +"// Iterate over all sections.\n" +"foreach (String player in config.GetSections())\n" +"{\n" +" // Fetch the data for each section.\n" +" var player_name = (String)config.GetValue(player, \"player_name\");\n" +" var player_score = (int)config.GetValue(player, \"best_score\");\n" +" score_data[player_name] = player_score;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Any operation that mutates the ConfigFile such as [method set_value], " +"[method clear], or [method erase_section], only changes what is loaded in " +"memory. If you want to write the change to a file, you have to save the " +"changes with [method save], [method save_encrypted], or [method " +"save_encrypted_pass].\n" +"Keep in mind that section and property names can't contain spaces. Anything " +"after a space will be ignored on save and on load.\n" +"ConfigFiles can also contain manually written comment lines starting with a " +"semicolon ([code];[/code]). Those lines will be ignored when parsing the " +"file. Note that comments will be lost when saving the ConfigFile. This can " +"still be useful for dedicated server configuration files, which are " +"typically never overwritten without explicit user action.\n" +"[b]Note:[/b] The file extension given to a ConfigFile does not have any " +"impact on its formatting or behavior. By convention, the [code].cfg[/code] " +"extension is used here, but any other extension such as [code].ini[/code] is " +"also valid. Since neither [code].cfg[/code] nor [code].ini[/code] are " +"standardized, Godot's ConfigFile formatting may differ from files written by " +"other programs." +msgstr "" +"该辅助类可用于使用 INI 样式格式在文件系统上存储 [Variant] 值。存储的值由一个" +"小节和一个键标识:\n" +"[codeblock]\n" +"[section]\n" +"some_key=42\n" +"string_example=\"Hello World3D!\"\n" +"a_vector=Vector3(1, 0, 2)\n" +"[/codeblock]\n" +"存储的数据可以被保存到文件中或从文件中解析出来,尽管 ConfigFile 对象也可以直" +"接使用而无需访问文件系统。\n" +"以下示例显示了如何创建一个简单的 [ConfigFile] 并将其保存在磁盘上:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 创建新的 ConfigFile 对象。\n" +"var config = ConfigFile.new()\n" +"\n" +"# 存储一些值。\n" +"config.set_value(\"Player1\", \"player_name\", \"Steve\")\n" +"config.set_value(\"Player1\", \"best_score\", 10)\n" +"config.set_value(\"Player2\", \"player_name\", \"V3geta\")\n" +"config.set_value(\"Player2\", \"best_score\", 9001)\n" +"\n" +"# 将其保存到文件中(如果已存在则覆盖)。\n" +"config.save(\"user://scores.cfg\")\n" +"[/gdscript]\n" +"[csharp]\n" +"// 创建新的 ConfigFile 对象。\n" +"var config = new ConfigFile();\n" +"\n" +"// 存储一些值。\n" +"config.SetValue(\"Player1\", \"player_name\", \"Steve\");\n" +"config.SetValue(\"Player1\", \"best_score\", 10);\n" +"config.SetValue(\"Player2\", \"player_name\", \"V3geta\");\n" +"config.SetValue(\"Player2\", \"best_score\", 9001);\n" +"\n" +"// 将其保存到文件中(如果已存在则覆盖)。\n" +"config.Save(\"user://scores.cfg\");\n" +"[/csharp]\n" +"[/codeblocks]\n" +"该示例展示了如何加载上面的文件:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var score_data = {}\n" +"var config = ConfigFile.new()\n" +"\n" +"# 从文件加载数据。\n" +"var err = config.load(\"user://scores.cfg\")\n" +"\n" +"# 如果文件没有加载,忽略它。\n" +"if err != OK:\n" +" return\n" +"\n" +"# 迭代所有小节。\n" +"for player in config.get_sections():\n" +" # 获取每个小节的数据。\n" +" var player_name = config.get_value(player, \"player_name\")\n" +" var player_score = config.get_value(player, \"best_score\")\n" +" score_data[player_name] = player_score\n" +"[/gdscript]\n" +"[csharp]\n" +"var score_data = new Godot.Collections.Dictionary();\n" +"var config = new ConfigFile();\n" +"\n" +"// 从文件加载数据。\n" +"Error err = config.Load(\"user://scores.cfg\");\n" +"\n" +"// 如果文件没有加载,忽略它。\n" +"if (err != Error.Ok)\n" +"{\n" +" return;\n" +"}\n" +"\n" +"// 迭代所有小节。\n" +"foreach (String player in config.GetSections())\n" +"{\n" +" // 获取每个小节的数据。\n" +" var player_name = (String)config.GetValue(player, \"player_name\");\n" +" var player_score = (int)config.GetValue(player, \"best_score\");\n" +" score_data[player_name] = player_score;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"任何改变 ConfigFile 的操作,例如 [method set_value]、[method clear]、或 " +"[method erase_section],只会改变加载到内存中的内容。如果要将更改写入文件,则" +"必须使用 [method save]、[method save_encrypted]、或 [method " +"save_encrypted_pass] 保存更改。\n" +"请记住,小节和属性名称不能包含空格。保存和加载时将忽略空格后的任何内容。\n" +"ConfigFiles 还可以包含以分号([code];[/code])开头的手动编写的注释行。解析文" +"件时将忽略这些行。请注意,保存 ConfigFile 时注释将丢失。注释对于专用服务器配" +"置文件仍然很有用,如果没有明确的用户操作,这些文件通常永远不会被覆盖。\n" +"[b]注意:[/b]为 ConfigFile 指定的文件扩展名对其格式或行为没有任何影响。按照惯" +"例,此处使用 [code].cfg[/code] 扩展名,但 [code].ini[/code] 等任何其他扩展名" +"也有效。由于 [code].cfg[/code] 和 [code].ini[/code] 都不是标准化的格式," +"Godot 的 ConfigFile 格式可能与其他程序编写的文件不同。" + msgid "Removes the entire contents of the config." msgstr "移除配置的全部内容。" msgid "" +"Obtain the text version of this config file (the same text that would be " +"written to a file)." +msgstr "获得该配置文件的文本版本(与写入文件的文本相同)。" + +msgid "" "Deletes the specified section along with all the key-value pairs inside. " "Raises an error if the section does not exist." -msgstr "删除指定的部分以及内部的所有键值对。如果该节不存在,则会引发错误。" +msgstr "删除指定小节以及其中的所有键值对。如果该小节不存在,则会引发错误。" msgid "" "Deletes the specified key in a section. Raises an error if either the " "section or the key do not exist." -msgstr "删除部分中的指定键。如果该部分或键不存在,则会引发错误。" +msgstr "删除小节中的指定键。如果该小节或键不存在,则会引发错误。" msgid "" "Returns an array of all defined key identifiers in the specified section. " "Raises an error and returns an empty array if the section does not exist." msgstr "" -"返回指定部分中所有已定义键标识符的数组。如果该部分不存在,则会引发错误并返回" +"返回指定小节中所有已定义键标识符的数组。如果该小节不存在,则会引发错误并返回" "一个空数组。" msgid "Returns an array of all defined section identifiers." -msgstr "返回所有已定义节标识符的数组。" +msgstr "返回所有已定义小节的标识符的数组。" msgid "" "Returns the current value for the specified section and key. If either the " @@ -21483,15 +24783,15 @@ msgid "" "default] value. If [param default] is not specified or set to [code]null[/" "code], an error is also raised." msgstr "" -"返回指定部分和键的当前值。如果该部分或键不存在,则该方法返回后备值 [param " +"返回指定小节和键的当前值。如果该小节或键不存在,则该方法返回后备值 [param " "default]。如果未指定 [param default] 或将其设置为 [code]null[/code],则会引发" "一个错误。" msgid "Returns [code]true[/code] if the specified section exists." -msgstr "如果指定的部分存在,则返回 [code]true[/code]。" +msgstr "如果指定的小节存在,则返回 [code]true[/code]。" msgid "Returns [code]true[/code] if the specified section-key pair exists." -msgstr "如果指定的段键对存在,则返回 [code]true[/code]。" +msgstr "如果指定的小节-键对存在,则返回 [code]true[/code]。" msgid "" "Loads the config file specified as a parameter. The file's contents are " @@ -21567,9 +24867,9 @@ msgid "" "code] value deletes the specified key if it exists, and deletes the section " "if it ends up empty once the key has been removed." msgstr "" -"为指定节的指定键赋值。如果节或键不存在,则创建它们。如果指定的键存在,传递 " -"[code]null[/code] 值就会移除指定的键,如果键被移除后,键最终是空的,就会移除" -"节。" +"为指定小节的指定键赋值。如果小节或键不存在,则创建它们。如果指定的键存在,传" +"递 [code]null[/code] 值就会移除指定的键,如果键被移除后,小节最终是空的,就会" +"移除小节。" msgid "Dialog for confirmation of actions." msgstr "确认动作的对话框。" @@ -21626,6 +24926,34 @@ msgstr "" "Control 可以继承该类来创建自定义的容器类。" msgid "" +"Implement to return a list of allowed horizontal [enum Control.SizeFlags] " +"for child nodes. This doesn't technically prevent the usages of any other " +"size flags, if your implementation requires that. This only limits the " +"options available to the user in the Inspector dock.\n" +"[b]Note:[/b] Having no size flags is equal to having [constant Control." +"SIZE_SHRINK_BEGIN]. As such, this value is always implicitly allowed." +msgstr "" +"实现以返回子节点允许的水平 [enum Control.SizeFlags] 列表。这在技术上并不妨碍" +"任何其他大小标志的使用,如果你的实现需要这样做。这只会限制检查器停靠面板中用" +"户可用的选项。\n" +"[b]注意:[/b]没有大小标志等同于有 [constant Control.SIZE_SHRINK_BEGIN]。因" +"此,该值始终是隐式允许的。" + +msgid "" +"Implement to return a list of allowed vertical [enum Control.SizeFlags] for " +"child nodes. This doesn't technically prevent the usages of any other size " +"flags, if your implementation requires that. This only limits the options " +"available to the user in the Inspector dock.\n" +"[b]Note:[/b] Having no size flags is equal to having [constant Control." +"SIZE_SHRINK_BEGIN]. As such, this value is always implicitly allowed." +msgstr "" +"实现以返回子节点允许的垂直 [enum Control.SizeFlags] 列表。这在技术上并不妨碍" +"任何其他大小标志的使用,如果你的实现需要这样做。这只会限制检查器停靠面板中用" +"户可用的选项。\n" +"[b]注意:[/b]没有大小标志等同于有 [constant Control.SIZE_SHRINK_BEGIN]。因" +"此,该值始终是隐式允许的。" + +msgid "" "Fit a child control in a given rect. This is mainly a helper for creating " "custom container classes." msgstr "在给定的矩形中适配子控件。这主要是用于创建自定义容器类的辅助工具。" @@ -21642,6 +24970,11 @@ msgid "Emitted when sorting the children is needed." msgstr "需要对子节点进行排序时发出。" msgid "" +"Notification just before children are going to be sorted, in case there's " +"something to process beforehand." +msgstr "在子节点将要被排序之前通知,以防有事情需要事先处理。" + +msgid "" "Notification for when sorting the children, it must be obeyed immediately." msgstr "对子节点进行排序时的通知,必须立即服从。" @@ -21885,6 +25218,25 @@ msgstr "" "[/codeblocks]" msgid "" +"Virtual method to be implemented by the user. Returns the minimum size for " +"this control. Alternative to [member custom_minimum_size] for controlling " +"minimum size via code. The actual minimum size will be the max value of " +"these two (in each axis separately).\n" +"If not overridden, defaults to [constant Vector2.ZERO].\n" +"[b]Note:[/b] This method will not be called when the script is attached to a " +"[Control] node that already overrides its minimum size (e.g. [Label], " +"[Button], [PanelContainer] etc.). It can only be used with most basic GUI " +"nodes, like [Control], [Container], [Panel] etc." +msgstr "" +"由用户实现的虚方法。返回此控件的最小大小。替代 [member custom_minimum_size]," +"以用于通过代码控制最小尺寸。实际的最小尺寸将是这两者的最大值(分别在每个轴" +"上)。\n" +"如果未重写,则默认为 [constant Vector2.ZERO]。\n" +"[b]注意:[/b]当脚本被附加到已经覆盖其最小大小的 [Control] 节点(例如 " +"[Label]、[Button]、[PanelContainer] 等)时,该方法将不会被调用。它只能用于最" +"基本的 GUI 节点,如 [Control]、[Container]、[Panel] 等。" + +msgid "" "Virtual method to be implemented by the user. Use this method to process and " "accept inputs on UI elements. See [method accept_event].\n" "[b]Example usage for clicking a control:[/b]\n" @@ -22071,6 +25423,17 @@ msgstr "" "[/codeblocks]" msgid "" +"User defined BiDi algorithm override function.\n" +"Returns an [Array] of [Vector3i] text ranges and text base directions, in " +"the left-to-right order. Ranges should cover full source [param text] " +"without overlaps. BiDi algorithm will be used on each range separately." +msgstr "" +"用户定义的 BiDi 算法覆盖函数。\n" +"返回 [Vector3i] 文本范围和文本基础方向的 [Array],顺序为从左至右。这些范围应" +"该覆盖完整的来源文本 [param text],不应该存在重叠。BiDi 算法会对每个范围单独" +"应用。" + +msgid "" "Marks an input event as handled. Once you accept an input event, it stops " "propagating, even to nodes listening to [method Node._unhandled_input] or " "[method Node._unhandled_key_input]." @@ -22079,17 +25442,111 @@ msgstr "" "[method Node._unhandled_input] 和 [method Node._unhandled_key_input] 的节点。" msgid "" +"Creates a local override for a theme [Color] with the specified [param " +"name]. Local overrides always take precedence when fetching theme items for " +"the control. An override can be removed with [method " +"remove_theme_color_override].\n" +"See also [method get_theme_color].\n" +"[b]Example of overriding a label's color and resetting it later:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Given the child Label node \"MyLabel\", override its font color with a " +"custom value.\n" +"$MyLabel.add_theme_color_override(\"font_color\", Color(1, 0.5, 0))\n" +"# Reset the font color of the child label.\n" +"$MyLabel.remove_theme_color_override(\"font_color\")\n" +"# Alternatively it can be overridden with the default value from the Label " +"type.\n" +"$MyLabel.add_theme_color_override(\"font_color\", " +"get_theme_color(\"font_color\", \"Label\"))\n" +"[/gdscript]\n" +"[csharp]\n" +"// Given the child Label node \"MyLabel\", override its font color with a " +"custom value.\n" +"GetNode<Label>(\"MyLabel\").AddThemeColorOverride(\"font_color\", new " +"Color(1, 0.5f, 0));\n" +"// Reset the font color of the child label.\n" +"GetNode<Label>(\"MyLabel\").RemoveThemeColorOverride(\"font_color\");\n" +"// Alternatively it can be overridden with the default value from the Label " +"type.\n" +"GetNode<Label>(\"MyLabel\").AddThemeColorOverride(\"font_color\", " +"GetThemeColor(\"font_color\", \"Label\"));\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"为名称为 [param name] 的主题 [Color] 创建本地覆盖项。为控件获取主题项目时,本" +"地覆盖项始终优先。覆盖项可以使用 [method remove_theme_color_override] 移" +"除。\n" +"另见 [method get_theme_color]。\n" +"[b]覆盖标签颜色并在之后重置的示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 存在名叫“MyLabel”的子 Label 节点,使用自定义的值覆盖其字体颜色。\n" +"$MyLabel.add_theme_color_override(\"font_color\", Color(1, 0.5, 0))\n" +"# 重置该子标签的字体颜色。\n" +"$MyLabel.remove_theme_color_override(\"font_color\")\n" +"# 也可以使用 Label 类型的默认值覆盖。\n" +"$MyLabel.add_theme_color_override(\"font_color\", " +"get_theme_color(\"font_color\", \"Label\"))\n" +"[/gdscript]\n" +"[csharp]\n" +"// 存在名叫“MyLabel”的子 Label 节点,使用自定义的值覆盖其字体颜色。\n" +"GetNode<Label>(\"MyLabel\").AddThemeColorOverride(\"font_color\", new " +"Color(1, 0.5f, 0));\n" +"// 重置该子标签的字体颜色。\n" +"GetNode<Label>(\"MyLabel\").RemoveThemeColorOverride(\"font_color\");\n" +"// 也可以使用 Label 类型的默认值覆盖。\n" +"GetNode<Label>(\"MyLabel\").AddThemeColorOverride(\"font_color\", " +"GetThemeColor(\"font_color\", \"Label\"));\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Creates a local override for a theme constant with the specified [param " +"name]. Local overrides always take precedence when fetching theme items for " +"the control. An override can be removed with [method " +"remove_theme_constant_override].\n" +"See also [method get_theme_constant]." +msgstr "" +"为名称为 [param name] 的主题常量创建本地覆盖项。为控件获取主题项目时,本地覆" +"盖项始终优先。覆盖项可以使用 [method remove_theme_constant_override] 移除。\n" +"另见 [method get_theme_constant]。" + +msgid "" "Creates a local override for a theme [Font] with the specified [param name]. " "Local overrides always take precedence when fetching theme items for the " "control. An override can be removed with [method " "remove_theme_font_override].\n" "See also [method get_theme_font]." msgstr "" -"为具有指定 [param name] 的主题 [Font] 创建本地覆盖。在获取控件的主题项时,本" -"地覆盖始终优先。覆盖可以使用 [method remove_theme_font_override] 移除。\n" +"为名称为 [param name] 的主题 [Font] 创建本地覆盖项。为控件获取主题项目时,本" +"地覆盖项始终优先。覆盖项可以使用 [method remove_theme_font_override] 移除。\n" "另见 [method get_theme_font]。" msgid "" +"Creates a local override for a theme font size with the specified [param " +"name]. Local overrides always take precedence when fetching theme items for " +"the control. An override can be removed with [method " +"remove_theme_font_size_override].\n" +"See also [method get_theme_font_size]." +msgstr "" +"为名称为 [param name] 的主题字体大小创建本地覆盖项。为控件获取主题项目时,本" +"地覆盖项始终优先。覆盖项可以使用 [method remove_theme_font_size_override] 移" +"除。\n" +"另见 [method get_theme_font_size]。" + +msgid "" +"Creates a local override for a theme icon with the specified [param name]. " +"Local overrides always take precedence when fetching theme items for the " +"control. An override can be removed with [method " +"remove_theme_icon_override].\n" +"See also [method get_theme_icon]." +msgstr "" +"为名称为 [param name] 的主题图标创建本地覆盖项。为控件获取主题项目时,本地覆" +"盖项始终优先。覆盖项可以使用 [method remove_theme_icon_override] 移除。\n" +"另见 [method get_theme_icon]。" + +msgid "" "Creates a local override for a theme [StyleBox] with the specified [param " "name]. Local overrides always take precedence when fetching theme items for " "the control. An override can be removed with [method " @@ -22126,35 +25583,35 @@ msgid "" "[/csharp]\n" "[/codeblocks]" msgstr "" -"使用指定的 [param name] 为主题 [StyleBox] 创建本地覆盖。在获取控件的主题项" -"时,本地覆盖始终优先。覆盖可以使用 [method remove_theme_stylebox_override] 移" -"除。\n" +"为名称为 [param name] 的主题 [StyleBox] 创建本地覆盖项。为控件获取主题项目" +"时,本地覆盖项始终优先。覆盖项可以使用 [method " +"remove_theme_stylebox_override] 移除。\n" "另见 [method get_theme_stylebox]。\n" -"[b]通过复制来修改 StyleBox 中的属性的示例:[/b]\n" +"[b]通过创建副本来修改 StyleBox 属性的示例:[/b]\n" "[codeblocks]\n" "[gdscript]\n" -"# 下面的代码片段假设子节点 MyButton 分配了一个 StyleBoxFlat。\n" -"# 资源是跨实例共享的,所以我们需要复制它\n" -"# 以避免修改所有其他按钮的外观。\n" +"# 以下代码片段要求子节点 MyButton 分配了 StyleBoxFlat。\n" +"# 资源是跨实例共享的,因此我们需要制作其副本\n" +"# 来避免修改其他所有按钮的外观。\n" "var new_stylebox_normal = $MyButton.get_theme_stylebox(\"normal\")." "duplicate()\n" "new_stylebox_normal.border_width_top = 3\n" "new_stylebox_normal.border_color = Color(0, 1, 0.5)\n" "$MyButton.add_theme_stylebox_override(\"normal\", new_stylebox_normal)\n" -"# 移除样式盒覆盖。\n" +"# 移除样式盒覆盖项。\n" "$MyButton.remove_theme_stylebox_override(\"normal\")\n" "[/gdscript]\n" "[csharp]\n" -"// 下面的代码片段假设子节点 MyButton 分配了一个 StyleBoxFlat。\n" -"// 资源是跨实例共享的,所以我们需要复制它\n" -"// 以避免修改所有其他按钮的外观。\n" +"// 以下代码片段要求子节点 MyButton 分配了 StyleBoxFlat。\n" +"// 资源是跨实例共享的,因此我们需要制作其副本\n" +"// 来避免修改其他所有按钮的外观。\n" "StyleBoxFlat newStyleboxNormal = GetNode<Button>(\"MyButton\")." "GetThemeStylebox(\"normal\").Duplicate() as StyleBoxFlat;\n" "newStyleboxNormal.BorderWidthTop = 3;\n" "newStyleboxNormal.BorderColor = new Color(0, 1, 0.5f);\n" "GetNode<Button>(\"MyButton\").AddThemeStyleboxOverride(\"normal\", " "newStyleboxNormal);\n" -"// 移除样式盒覆盖。\n" +"// 移除样式盒覆盖项。\n" "GetNode<Button>(\"MyButton\").RemoveThemeStyleboxOverride(\"normal\");\n" "[/csharp]\n" "[/codeblocks]" @@ -22179,14 +25636,75 @@ msgid "" msgstr "找到上一个可以接受焦点的 [Control],在树的上方。" msgid "" +"Forces drag and bypasses [method _get_drag_data] and [method " +"set_drag_preview] by passing [param data] and [param preview]. Drag will " +"start even if the mouse is neither over nor pressed on this control.\n" +"The methods [method _can_drop_data] and [method _drop_data] must be " +"implemented on controls that want to receive drop data." +msgstr "" +"通过传递 [param data] 和 [param preview] 强制拖动并绕过 [method " +"_get_drag_data] 和 [method set_drag_preview]。即使鼠标既没有在该控件悬停也没" +"有在该控件上按下,拖动都将开始。\n" +"方法 [method _can_drop_data] 和 [method _drop_data] 必须在想要接收拖放数据的" +"控件上实现。" + +msgid "" +"Returns the anchor for the specified [enum Side]. A getter method for " +"[member anchor_bottom], [member anchor_left], [member anchor_right] and " +"[member anchor_top]." +msgstr "" +"返回指定 [enum Side] 的锚点。用于 [member anchor_bottom]、[member " +"anchor_left]、[member anchor_right]、和 [member anchor_top] 的取值方法。" + +msgid "" +"Returns [member offset_left] and [member offset_top]. See also [member " +"position]." +msgstr "" +"返回 [member offset_left] 和 [member offset_top]。另请参阅 [member " +"position]。" + +msgid "" +"Returns combined minimum size from [member custom_minimum_size] and [method " +"get_minimum_size]." +msgstr "" +"返回 [member custom_minimum_size] 和 [method get_minimum_size] 的组合最小大" +"小。" + +msgid "" "Returns the mouse cursor shape the control displays on mouse hover. See " "[enum CursorShape]." -msgstr "返回控件在鼠标悬停时显示的鼠标指针形状。参阅[enum CursorShape]。" +msgstr "返回控件在鼠标悬停时显示的鼠标指针形状。见 [enum CursorShape]。" 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]." +msgstr "" +"返回指定 [enum Side] 的焦点邻居。用于 [member focus_neighbor_bottom]、" +"[member focus_neighbor_left]、[member focus_neighbor_right]、和 [member " +"focus_neighbor_top] 的取值方法。" + +msgid "" +"Returns the position and size of the control relative to the containing " +"canvas. See [member global_position] and [member size].\n" +"[b]Note:[/b] If the node itself or any parent [CanvasItem] between the node " +"and the canvas have a non default rotation or skew, the resulting size is " +"likely not meaningful.\n" +"[b]Note:[/b] Setting [member Viewport.gui_snap_controls_to_pixels] to " +"[code]true[/code] can lead to rounding inaccuracies between the displayed " +"control and the returned [Rect2]." +msgstr "" +"返回控件相对于所属画布的位置和大小。参见 [member global_position] 和 [member " +"size]。\n" +"[b]注意:[/b]如果节点本身或节点与画布之间的任何父级 [CanvasItem] 具有非默认旋" +"转或倾斜,则生成的大小可能没有意义。\n" +"[b]注意:[/b]将 [member Viewport.gui_snap_controls_to_pixels] 设置为 " +"[code]true[/code] 会导致显示的控件和返回的 [Rect2] 之间的舍入不准确。" + +msgid "" "Returns the minimum size for this control. See [member custom_minimum_size]." msgstr "返回该控件的最小尺寸。见 [member custom_minimum_size]。" @@ -22213,6 +25731,29 @@ msgstr "" "[code]true[/code],会导致显示的控件和返回的 [Rect2] 之间的舍入不准确。" msgid "" +"Returns the position of this [Control] in global screen coordinates (i.e. " +"taking window position into account). Mostly useful for editor plugins.\n" +"Equals to [member global_position] if the window is embedded (see [member " +"Viewport.gui_embed_subwindows]).\n" +"[b]Example usage for showing a popup:[/b]\n" +"[codeblock]\n" +"popup_menu.position = get_screen_position() + get_local_mouse_position()\n" +"popup_menu.reset_size()\n" +"popup_menu.popup()\n" +"[/codeblock]" +msgstr "" +"返回该 [Control] 在全局屏幕坐标系中的位置(即考虑窗口的位置)。主要用于编辑器" +"插件。\n" +"如果窗口是嵌入式的,则等于 [member global_position](见 [member Viewport." +"gui_embed_subwindows])。\n" +"[b]显示弹出框的用法示例:[/b]\n" +"[codeblock]\n" +"popup_menu.position = get_screen_position() + get_local_mouse_position()\n" +"popup_menu.reset_size()\n" +"popup_menu.popup()\n" +"[/codeblock]" + +msgid "" "Returns a [Color] from the first matching [Theme] in the tree if that " "[Theme] has a color item with the specified [param name] and [param " "theme_type]. If [param theme_type] is omitted the class name of the current " @@ -22354,6 +25895,61 @@ msgstr "" "详情请参阅 [method get_theme_color]。" msgid "" +"Returns the tooltip text [param at_position] in local coordinates, which " +"will typically appear when the cursor is resting over this control. By " +"default, it returns [member tooltip_text].\n" +"[b]Note:[/b] This method can be overridden to customize its behavior. If " +"this method returns an empty [String], no tooltip is displayed." +msgstr "" +"返回位于局部坐标系中 [param at_position] 位置的工具提示文本,工具提示一般会在" +"鼠标停留在该空间上时显示。默认情况下返回的是 [member tooltip_text]。\n" +"[b]注意:[/b]覆盖这个方法可以自定义行为。如果返回的是空 [String],则不会显示" +"工具提示。" + +msgid "" +"Creates an [InputEventMouseButton] that attempts to click the control. If " +"the event is received, the control acquires focus.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" grab_click_focus() # When clicking another Control node, this node will " +"be clicked instead.\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Process(double delta)\n" +"{\n" +" GrabClickFocus(); // When clicking another Control node, this node will " +"be clicked instead.\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"创建一个尝试点击控件的 [InputEventMouseButton]。如果收到该事件,则该控件将获" +"得焦点。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" grab_click_focus() # 点击另一个控制节点时,将改为点击该节点。\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Process(double delta)\n" +"{\n" +" GrabClickFocus(); // 点击另一个控制节点时,将改为点击该节点。\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Steal the focus from another control and become the focused control (see " +"[member focus_mode]).\n" +"[b]Note:[/b] Using this method together with [method Callable.call_deferred] " +"makes it more reliable, especially when called inside [method Node._ready]." +msgstr "" +"从别的控件上窃取焦点,从而成为聚焦的控件(见 [member focus_mode])。\n" +"[b]注意:[/b]这个方法与 [method Object.call_deferred] 配合使用会更加可靠,尤" +"其是在 [method Node._ready] 中调用时。" + +msgid "" "Returns [code]true[/code] if this is the current focused control. See " "[member focus_mode]." msgstr "" @@ -22532,6 +26128,13 @@ msgstr "" "add_theme_stylebox_override] 或检查器面板添加的。" msgid "" +"Resets the size to [method get_combined_minimum_size]. This is equivalent to " +"calling [code]set_size(Vector2())[/code] (or any size below the minimum)." +msgstr "" +"将大小重置为 [method get_combined_minimum_size]。等价于调用 " +"[code]set_size(Vector2())[/code](或任何小于最小值的大小)。" + +msgid "" "Sets the anchor for the specified [enum Side] to [param anchor]. A setter " "method for [member anchor_bottom], [member anchor_left], [member " "anchor_right] and [member anchor_top].\n" @@ -22569,6 +26172,16 @@ msgstr "" "set_offsets_preset]。" msgid "" +"Sets the anchors to a [param preset] from [enum Control.LayoutPreset] enum. " +"This is the code equivalent to using the Layout menu in the 2D editor.\n" +"If [param keep_offsets] is [code]true[/code], control's position will also " +"be updated." +msgstr "" +"将锚点设置为 [enum Control.LayoutPreset] 枚举中的 [param preset]。这是相当于" +"在 2D 编辑器中使用布局菜单的代码。\n" +"如果 [param keep_offsets] 为 [code]true[/code],则控件的位置也将被更新。" + +msgid "" "Sets [member offset_left] and [member offset_top] at the same time. " "Equivalent of changing [member position]." msgstr "" @@ -22576,6 +26189,20 @@ msgstr "" "position]。" msgid "" +"Forwards the handling of this control's [method _get_drag_data], [method " +"_can_drop_data] and [method _drop_data] virtual functions to delegate " +"callables.\n" +"For each argument, if not empty, the delegate callable is used, otherwise " +"the local (virtual) function is used.\n" +"The function format for each callable should be exactly the same as the " +"virtual functions described above." +msgstr "" +"转发该控件的 [method _get_drag_data]、[method _can_drop_data] 和 [method " +"_drop_data] 虚函数的处理,以委托给可调用体。\n" +"对于每个参数,如果不为空,则使用委托的可调用体,否则使用本地(虚)函数。\n" +"每个可调用体的函数格式应该与上面描述的虚函数完全相同。" + +msgid "" "Shows the given control at the mouse pointer. A good time to call this " "method is in [method _get_drag_data]. The control must not be in the scene " "tree. You should not free the control, and you should not keep a reference " @@ -22653,6 +26280,32 @@ msgstr "" "量。" msgid "" +"Sets the offset for the specified [enum Side] to [param offset]. A setter " +"method for [member offset_bottom], [member offset_left], [member " +"offset_right] and [member offset_top]." +msgstr "" +"将指定 [enum Side] 的偏移设置为 [param offset]。用于 [member offset_bottom]、" +"[member offset_left]、[member offset_right]、和 [member offset_top] 的设值方" +"法。" + +msgid "" +"Sets the offsets to a [param preset] from [enum Control.LayoutPreset] enum. " +"This is the code equivalent to using the Layout menu in the 2D editor.\n" +"Use parameter [param resize_mode] with constants from [enum Control." +"LayoutPresetMode] to better determine the resulting size of the [Control]. " +"Constant size will be ignored if used with presets that change size, e.g. " +"[constant PRESET_LEFT_WIDE].\n" +"Use parameter [param margin] to determine the gap between the [Control] and " +"the edges." +msgstr "" +"将偏移设置为 [enum Control.LayoutPreset] 枚举中的 [param preset]。这是相当于" +"在 2D 编辑器中使用布局菜单的代码。\n" +"将参数 [param resize_mode] 与 [enum Control.LayoutPresetMode] 中的常量一起使" +"用,以更好地确定 [Control] 的最终大小。如果与更改尺寸大小的预设一起使用,则将" +"忽略常量尺寸大小,例如 [constant PRESET_LEFT_WIDE]。\n" +"使用参数 [param margin] 来确定 [Control] 和边缘之间的间隙。" + +msgid "" "Sets the [member position] to given [param position].\n" "If [param keep_offsets] is [code]true[/code], control's anchors will be " "updated instead of offsets." @@ -22671,6 +26324,16 @@ msgstr "" "量。" msgid "" +"Invalidates the size cache in this node and in parent nodes up to top level. " +"Intended to be used with [method get_minimum_size] when the return value is " +"changed. Setting [member custom_minimum_size] directly calls this method " +"automatically." +msgstr "" +"使该节点和直至顶级的父节点中的大小缓存无效。旨在当返回值更改时与 [method " +"get_minimum_size] 一起使用。直接设置 [member custom_minimum_size] 将自动调用" +"该方法。" + +msgid "" "Moves the mouse cursor to [param position], relative to [member position] of " "this [Control].\n" "[b]Note:[/b] [method warp_mouse] is only supported on Windows, macOS and " @@ -22682,6 +26345,41 @@ msgstr "" "Android、iOS 和 Web 上没有效果。" msgid "" +"Anchors the bottom edge of the node to the origin, the center, or the end of " +"its parent control. It changes how the bottom offset updates when the node " +"moves or changes size. You can use one of the [enum Anchor] constants for " +"convenience." +msgstr "" +"将节点的底部边缘锚定到父控件的原点、中心或末端。会改变该节点发生移动或改变大" +"小时底部偏移量的更新方式。方便起见,你可以使用 [enum Anchor] 常量。" + +msgid "" +"Anchors the left edge of the node to the origin, the center or the end of " +"its parent control. It changes how the left offset updates when the node " +"moves or changes size. You can use one of the [enum Anchor] constants for " +"convenience." +msgstr "" +"将节点的左侧边缘锚定到父控件的原点、中心或末端。会改变该节点发生移动或改变大" +"小时左侧偏移量的更新方式。方便起见,你可以使用 [enum Anchor] 常量。" + +msgid "" +"Anchors the right edge of the node to the origin, the center or the end of " +"its parent control. It changes how the right offset updates when the node " +"moves or changes size. You can use one of the [enum Anchor] constants for " +"convenience." +msgstr "" +"将节点的右侧边缘锚定到父控件的原点、中心或末端。会改变该节点发生移动或改变大" +"小时右侧偏移量的更新方式。方便起见,你可以使用 [enum Anchor] 常量。" + +msgid "" +"Anchors the top edge of the node to the origin, the center or the end of its " +"parent control. It changes how the top offset updates when the node moves or " +"changes size. You can use one of the [enum Anchor] constants for convenience." +msgstr "" +"将节点的顶部边缘锚定到父控件的原点、中心或末端。会改变该节点发生移动或改变大" +"小时顶部偏移量的更新方式。方便起见,你可以使用 [enum Anchor] 常量。" + +msgid "" "Toggles if any text should automatically change to its translated version " "depending on the current locale. Note that this will not affect any internal " "nodes (e.g. the popup of a [MenuButton]).\n" @@ -22712,6 +26410,14 @@ msgstr "" "其内容,无论是纹理还是子节点。" msgid "" +"The focus access mode for the control (None, Click or All). Only one Control " +"can be focused at the same time, and it will receive keyboard, gamepad, and " +"mouse signals." +msgstr "" +"该控件的焦点访问模式(“无”“单击”或“全部”)。只能同时聚焦一个控件,该控件会收" +"到键盘、手柄以及鼠标的信号。" + +msgid "" "Tells Godot which node it should give focus to if the user presses the down " "arrow on the keyboard or down on a gamepad by default. You can change the " "key by editing the [member ProjectSettings.input/ui_down] input action. The " @@ -22845,6 +26551,20 @@ msgstr "" "信号。参阅常量来了解每个常量的作用。" msgid "" +"When enabled, scroll wheel events processed by [method _gui_input] will be " +"passed to the parent control even if [member mouse_filter] is set to " +"[constant MOUSE_FILTER_STOP]. As it defaults to true, this allows nested " +"scrollable containers to work out of the box.\n" +"You should disable it on the root of your UI if you do not want scroll " +"events to go to the [method Node._unhandled_input] processing." +msgstr "" +"启用后,即使 [member mouse_filter] 被设置为 [constant MOUSE_FILTER_STOP],由 " +"[method _gui_input] 处理的滚轮事件也会被传递给父控件。由于它默认为“真”,这允" +"许嵌套的可滚动容器可以开箱即用。\n" +"如果不希望滚动事件进入 [method Node._unhandled_input] 处理,则应该在用户界面" +"的根部禁用它。" + +msgid "" "Distance between the node's bottom edge and its parent control, based on " "[member anchor_bottom].\n" "Offsets are often controlled by one or multiple parent [Container] nodes, so " @@ -22969,6 +26689,16 @@ msgstr "" "scale] 属性。" msgid "" +"The [Node] which must be a parent of the focused [Control] for the shortcut " +"to be activated. If [code]null[/code], the shortcut can be activated when " +"any control is focused (a global shortcut). This allows shortcuts to be " +"accepted only when the user has a certain area of the GUI focused." +msgstr "" +"该 [Node] 必须是被聚焦 [Control] 的父节点,才能激活快捷方式。如果为 " +"[code]null[/code],则可以在任何控件获得焦点时激活该快捷方式(全局快捷方式)。" +"这允许快捷方式只在用户聚焦 GUI 的特定区域时才被接受。" + +msgid "" "The size of the node's bounding rectangle, in the node's coordinate system. " "[Container] nodes update this property automatically." msgstr "" @@ -22984,6 +26714,17 @@ msgstr "" "SizeFlags] 常量之一更改标志。查看常量以了解每个常量的作用。" msgid "" +"If the node and at least one of its neighbors uses the [constant " +"SIZE_EXPAND] size flag, the parent [Container] will let it take more or less " +"space depending on this property. If this node has a stretch ratio of 2 and " +"its neighbor a ratio of 1, this node will take two thirds of the available " +"space." +msgstr "" +"如果该节点及其至少一个邻居节点使用 [constant SIZE_EXPAND] 大小标志,则父 " +"[Container] 将根据该属性让它占用更多或更少的空间。如果该节点的拉伸比为 2,其" +"邻居节点的拉伸比为 1,则该节点将占用三分之二的可用空间。" + +msgid "" "Tells the parent [Container] nodes how they should resize and place the node " "on the Y axis. Use one of the [enum SizeFlags] constants to change the " "flags. See the constants to learn what each does." @@ -23003,6 +26744,35 @@ msgstr "" "[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]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]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 " "mouse_filter] property is not [constant MOUSE_FILTER_IGNORE]. The time " @@ -23088,6 +26858,31 @@ msgstr "" "点,在鼠标移动到父控件的[code]Rect[/code]区域之前,不会发出[signal " "mouse_entered]。" +msgid "" +"Emitted when the mouse leaves the control's [code]Rect[/code] area, provided " +"its [member mouse_filter] lets the event reach it.\n" +"[b]Note:[/b] [signal mouse_exited] will be emitted if the mouse enters a " +"child [Control] node, even if the mouse cursor is still inside the parent's " +"[code]Rect[/code] area.\n" +"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 "" +"当鼠标离开控件的 [code]Rect[/code] 区域时发出,前提是它的 [member " +"mouse_filter] 允许事件到达它。\n" +"[b]注意:[/b]如果鼠标进入子 [Control] 节点,即使鼠标光标仍在父节点的 " +"[code]Rect[/code] 区域内,该父节点也会发出 [signal mouse_exited]。\n" +"如果要忽略任何顶部节点,检查鼠标是否真的离开了该区域,可以使用如下代码:\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 "当控件更改大小时发出。" @@ -23109,6 +26904,17 @@ msgid "" "The node can only grab focus on mouse clicks. Use with [member focus_mode]." msgstr "该节点只能通过鼠标点击获取焦点。在 [member focus_mode] 中使用。" +msgid "" +"The node can grab focus on mouse click, using the arrows and the Tab keys on " +"the keyboard, or using the D-pad buttons on a gamepad. Use with [member " +"focus_mode]." +msgstr "" +"该节点可以通过鼠标单击、使用键盘上的箭头和 Tab 键、或使用游戏手柄上的方向键来" +"获取焦点。用于 [member focus_mode]。" + +msgid "Sent when the node changes size. Use [member size] to get the new size." +msgstr "当节点改变大小时发送。请使用 [member size] 获取新大小。" + msgid "Sent when the mouse pointer enters the node." msgstr "当鼠标指针进入该节点时发送。" @@ -23122,6 +26928,27 @@ msgid "Sent when the node loses focus." msgstr "当节点失去焦点时发送。" msgid "" +"Sent when the node needs to refresh its theme items. This happens in one of " +"the following cases:\n" +"- The [member theme] property is changed on this node or any of its " +"ancestors.\n" +"- The [member theme_type_variation] property is changed on this node.\n" +"- One of the node's theme property overrides is changed.\n" +"- The node enters the scene tree.\n" +"[b]Note:[/b] As an optimization, this notification won't be sent from " +"changes that occur while this node is outside of the scene tree. Instead, " +"all of the theme item updates can be applied at once when the node enters " +"the scene tree." +msgstr "" +"当节点需要刷新其主题项目时发送。这发生在以下情况之一:\n" +"- 在该节点或其任何祖先节点上的 [member theme] 属性被更改。\n" +"- 该节点上的 [member theme_type_variation] 属性被更改。\n" +"- 该节点的一个主题属性覆盖被更改。\n" +"- 该节点进入场景树。\n" +"[b]注意:[/b]作为一种优化,当该节点在场景树之外时,发生的更改不会发送该通知。" +"相反,所有的主题项更新可以在该节点进入场景树时一次性应用。" + +msgid "" "Sent when this node is inside a [ScrollContainer] which has begun being " "scrolled." msgstr "当此节点在已开始滚动的 [ScrollContainer] 内部时发送。" @@ -23383,6 +27210,30 @@ msgid "The control's size will not change." msgstr "控件的大小不会改变。" msgid "" +"Tells the parent [Container] to align the node with its start, either the " +"top or the left edge. It is mutually exclusive with [constant SIZE_FILL] and " +"other shrink size flags, but can be used with [constant SIZE_EXPAND] in some " +"containers. Use with [member size_flags_horizontal] and [member " +"size_flags_vertical].\n" +"[b]Note:[/b] Setting this flag is equal to not having any size flags." +msgstr "" +"告诉父级 [Container] 将该节点与其起点对齐,即顶部或左侧。它与 [constant " +"SIZE_FILL] 以及其他收缩大小标志互斥,但可以在某些容器中与 [constant " +"SIZE_EXPAND] 一起使用。与 [member size_flags_horizontal] 和 [member " +"size_flags_vertical] 一起使用。\n" +"[b]注意:[/b]设置这个标志相当于没有任何大小标志。" + +msgid "" +"Tells the parent [Container] to expand the bounds of this node to fill all " +"the available space without pushing any other node. It is mutually exclusive " +"with shrink size flags. Use with [member size_flags_horizontal] and [member " +"size_flags_vertical]." +msgstr "" +"告诉父级 [Container] 扩展该节点的边界以填充所有可用空间,而无需推动任何其他节" +"点。它与收缩大小标志互斥。与 [member size_flags_horizontal] 和 [member " +"size_flags_vertical] 一起使用。" + +msgid "" "Tells the parent [Container] to let this node take all the available space " "on the axis you flag. If multiple neighboring nodes are set to expand, " "they'll share the space based on their stretch ratio. See [member " @@ -23395,6 +27246,35 @@ msgstr "" "size_flags_vertical]。" msgid "" +"Sets the node's size flags to both fill and expand. See [constant SIZE_FILL] " +"and [constant SIZE_EXPAND] for more information." +msgstr "" +"将该节点的大小标志设置为填充和扩展。有关详细信息,请参阅 [constant " +"SIZE_FILL] 和 [constant SIZE_EXPAND]。" + +msgid "" +"Tells the parent [Container] to center the node in the available space. It " +"is mutually exclusive with [constant SIZE_FILL] and other shrink size flags, " +"but can be used with [constant SIZE_EXPAND] in some containers. Use with " +"[member size_flags_horizontal] and [member size_flags_vertical]." +msgstr "" +"告诉父级 [Container] 将节点置于可用空间的中心。它与 [constant SIZE_FILL] 以及" +"其他收缩大小标志互斥,但可以在某些容器中与 [constant SIZE_EXPAND] 一起使用。" +"与 [member size_flags_horizontal] 和 [member size_flags_vertical] 一起使用。" + +msgid "" +"Tells the parent [Container] to align the node with its end, either the " +"bottom or the right edge. It is mutually exclusive with [constant SIZE_FILL] " +"and other shrink size flags, but can be used with [constant SIZE_EXPAND] in " +"some containers. Use with [member size_flags_horizontal] and [member " +"size_flags_vertical]." +msgstr "" +"告诉父级 [Container] 将节点与其末端对齐,即底部或右侧。它与 [constant " +"SIZE_FILL] 以及其他收缩大小标志互斥,但可以在某些容器中与 [constant " +"SIZE_EXPAND] 一起使用。与 [member size_flags_horizontal] 和 [member " +"size_flags_vertical] 一起使用。" + +msgid "" "The control will receive mouse button input events through [method " "_gui_input] if clicked on. And the control will receive the [signal " "mouse_entered] and [signal mouse_exited] signals. These events are " @@ -23502,49 +27382,10 @@ msgid "Right-to-left text writing direction." msgstr "从右至左的文本书写方向。" msgid "Convex polygon shape resource for 2D physics." -msgstr "凸多边形形状资源,用于 2D 物理。" +msgstr "用于 2D 物理的凸多边形形状资源。" -msgid "" -"The polygon's list of vertices. Can be in either clockwise or " -"counterclockwise order. Only set this property with convex hull points, use " -"[method set_point_cloud] to generate a convex hull shape from concave shape " -"points." -msgstr "" -"该多边形的顶点列表。顺时针顺序或逆时针顺序都有可能。请用凸包点设置该属性,可" -"以用 [method set_point_cloud] 从凹形状点设成凸包形状。" - -msgid "" -"3D convex polygon shape resource to be added as a [i]direct[/i] child of a " -"[PhysicsBody3D] or [Area3D] using a [CollisionShape3D] node. Unlike " -"[ConcavePolygonShape3D], [ConvexPolygonShape3D] cannot store concave polygon " -"shapes. [ConvexPolygonShape3D]s can be manually drawn in the editor using " -"the [CollisionPolygon3D] node.\n" -"[b]Convex decomposition:[/b] Concave objects' collisions can be represented " -"accurately using [i]several[/i] [ConvexPolygonShape3D]s. This allows dynamic " -"physics bodies to have complex concave collisions (at a performance cost). " -"This is available in the editor by selecting the [MeshInstance3D], going to " -"the [b]Mesh[/b] menu and choosing [b]Create Multiple Convex Collision " -"Siblings[/b]. Alternatively, [method MeshInstance3D." -"create_multiple_convex_collisions] can be called in a script to perform this " -"decomposition at run-time.\n" -"[b]Performance:[/b] [ConvexPolygonShape3D] is faster to check collisions " -"against compared to [ConcavePolygonShape3D], but it is slower than primitive " -"collision shapes such as [SphereShape3D] or [BoxShape3D]. Its use should " -"generally be limited to medium-sized objects that cannot have their " -"collision accurately represented by a primitive shape." -msgstr "" -"使用 [CollisionShape3D] 节点,添加为 [PhysicsBody3D] 或 [Area3D] 的[i]直接[/" -"i]子节点的 3D 凸多边形形状资源。与 [ConcavePolygonShape3D] 不同," -"[ConvexPolygonShape3D] 不能存储凹多边形形状。[ConvexPolygonShape3D] 可以使用 " -"[CollisionPolygon3D] 节点在编辑器中手动绘制。\n" -"[b]凸面分解:[/b]凹面物体的碰撞可以使用[i]几个[/i] [ConvexPolygonShape3D] 来" -"准确表示。这允许动态物理实体具有复杂的凹面碰撞(以性能为代价)。这在编辑器中" -"可用,方法是选择 [MeshInstance3D],转到[b]网格[/b]菜单并选择[b]创建三角网格碰" -"撞同级[/b]。或者,也可以在脚本中调用 [method MeshInstance3D." -"create_multiple_convex_collisions],以在运行时执行该分解。\n" -"[b]性能:[/b]与 [ConcavePolygonShape3D] 相比,[ConvexPolygonShape3D] 检查碰撞" -"的速度更快,但比 [SphereShape3D] 或 [BoxShape3D] 等原始碰撞形状慢。它的使用通" -"常应仅限于不能用原始形状准确表示其碰撞的中等大小的实体。" +msgid "Convex polygon shape resource for 3D physics." +msgstr "用于 3D 物理的凸多边形形状资源。" msgid "The list of 3D points forming the convex polygon shape." msgstr "形成凸多边形的 3D 点列表。" @@ -23565,6 +27406,13 @@ msgstr "" msgid "Particle systems (2D)" msgstr "粒子系统(2D)" +msgid "" +"Sets this node's properties to match a given [GPUParticles2D] node with an " +"assigned [ParticleProcessMaterial]." +msgstr "" +"设置该节点的属性以匹配给定的 [GPUParticles2D] 节点,该给定节点已分配了一个 " +"[ParticleProcessMaterial]。" + msgid "Returns the [Curve] of the parameter specified by [enum Parameter]." msgstr "返回由 [enum Parameter] 指定的参数的 [Curve]。" @@ -23596,36 +27444,58 @@ msgid "" msgstr "启用或禁用给定的标志(选项见 [enum ParticleFlags])。" msgid "Number of particles emitted in one emission cycle." -msgstr "一个发射周期中发射的粒子数。" +msgstr "单个发射周期内发射的粒子数。" msgid "Each particle's rotation will be animated along this [Curve]." -msgstr "每个粒子的旋转将沿此 [Curve] 进行动画处理。" +msgstr "每个粒子的旋转将沿着这条 [Curve] 进行动画处理。" msgid "Maximum initial rotation applied to each particle, in degrees." -msgstr "应用于每个粒子的最大初始旋转(单位为度)。" +msgstr "应用于每个粒子的最大初始旋转,单位:度。" msgid "Minimum equivalent of [member angle_max]." msgstr "[member angle_max] 的对应最小值。" msgid "Each particle's angular velocity will vary along this [Curve]." -msgstr "每个粒子的角速度将沿此 [Curve] 变化。" +msgstr "每个粒子的角速度将沿着这条 [Curve] 变化。" msgid "" "Maximum initial angular velocity (rotation speed) applied to each particle " "in [i]degrees[/i] per second." -msgstr "应用于每个粒子的最大初始角速度(旋转速度),单位为[i]度[/i]每秒。" +msgstr "应用于每个粒子的最大初始角速度(旋转速度),单位:[i]度[/i]每秒。" msgid "Minimum equivalent of [member angular_velocity_max]." msgstr "[member angular_velocity_max] 的对应最小值。" msgid "Each particle's animation offset will vary along this [Curve]." -msgstr "每个粒子的动画偏移将沿此 [Curve] 变化。" +msgstr "每个粒子的动画偏移将沿着这条 [Curve] 变化。" + +msgid "" +"Maximum animation offset that corresponds to frame index in the texture. " +"[code]0[/code] is the first frame, [code]1[/code] is the last one. See " +"[member CanvasItemMaterial.particles_animation]." +msgstr "" +"与纹理中的帧索引相对应的最大动画偏移量。[code]0[/code] 是第一帧,[code]1[/" +"code] 是最后一帧。参见 [member CanvasItemMaterial.particles_animation]。" msgid "Minimum equivalent of [member anim_offset_max]." msgstr "[member anim_offset_max] 的对应最小值。" msgid "Each particle's animation speed will vary along this [Curve]." -msgstr "每个粒子的动画速度将沿此 [Curve] 变化。" +msgstr "每个粒子的动画速度将沿着这条 [Curve] 变化。" + +msgid "" +"Maximum particle animation speed. Animation speed of [code]1[/code] means " +"that the particles will make full [code]0[/code] to [code]1[/code] offset " +"cycle during lifetime, [code]2[/code] means [code]2[/code] cycles etc.\n" +"With animation speed greater than [code]1[/code], remember to enable [member " +"CanvasItemMaterial.particles_anim_loop] property if you want the animation " +"to repeat." +msgstr "" +"最大粒子动画速度。[code]1[/code] 的动画速度是指粒子在生命周期内会做完整的 " +"[code]0[/code] 到 [code]1[/code] 的偏移循环,[code]2[/code] 则表示 [code]2[/" +"code] 个循环,如此等等。\n" +"当动画速度大于 [code]1[/code] 时,如果希望动画重复,请记住启用 [member " +"CanvasItemMaterial.particles_anim_loop] 属性。" msgid "Minimum equivalent of [member anim_speed_max]." msgstr "[member anim_speed_max] 的对应最小值。" @@ -23636,13 +27506,28 @@ msgid "" msgstr "每个粒子的初始颜色。如果定义了 [member texture],它将乘以该颜色。" msgid "" +"Each particle's initial color will vary along this [GradientTexture1D] " +"(multiplied with [member color])." +msgstr "" +"每个粒子的初始颜色将沿着这条 [GradientTexture1D](乘以 [member color])而变" +"化。" + +msgid "" "Each particle's color will vary along this [Gradient] (multiplied with " "[member color])." -msgstr "每个粒子的颜色将随着这个 [Gradient] 变化(与 [member color] 相乘)。" +msgstr "每个粒子的颜色将沿着这条 [Gradient] 变化(与 [member color] 相乘)。" msgid "Damping will vary along this [Curve]." msgstr "阻尼将沿着这条 [Gradient] 变化。" +msgid "" +"The maximum rate at which particles lose velocity. For example value of " +"[code]100[/code] means that the particle will go from [code]100[/code] " +"velocity to [code]0[/code] in [code]1[/code] second." +msgstr "" +"粒子失去速度的最大速率。例如 [code]100[/code] 的值表示粒子将在 [code]1[/" +"code] 秒内,速度从 [code]100[/code] 变为 [code]0[/code]。" + msgid "Minimum equivalent of [member damping_max]." msgstr "[member damping_max] 的对应最小值。" @@ -23656,8 +27541,8 @@ msgid "" "Sets the [Color]s to modulate particles by when using [constant " "EMISSION_SHAPE_POINTS] or [constant EMISSION_SHAPE_DIRECTED_POINTS]." msgstr "" -"设置 [Color] 以使用 [constant EMISSION_SHAPE_POINTS] 或 [constant " -"EMISSION_SHAPE_DIRECTED_POINTS] 来调制粒子。" +"设置使用 [constant EMISSION_SHAPE_POINTS] 或 [constant " +"EMISSION_SHAPE_DIRECTED_POINTS] 时对粒子进行调制的 [Color]。" msgid "" "Sets the direction the particles will be emitted in when using [constant " @@ -23669,14 +27554,14 @@ msgid "" "EMISSION_SHAPE_POINTS] or [constant EMISSION_SHAPE_DIRECTED_POINTS]." msgstr "" "设置使用 [constant EMISSION_SHAPE_POINTS] 或 [constant " -"EMISSION_SHAPE_DIRECTED_POINTS] 时产生粒子的初始位置。" +"EMISSION_SHAPE_DIRECTED_POINTS] 时出生粒子的初始位置。" msgid "" "The rectangle's extents if [member emission_shape] is set to [constant " "EMISSION_SHAPE_RECTANGLE]." msgstr "" -"[member emission_shape] 设置为 [constant EMISSION_SHAPE_RECTANGLE] 时,该矩形" -"的范围。" +"[member emission_shape] 被设置为 [constant EMISSION_SHAPE_RECTANGLE] 时,该矩" +"形的范围。" msgid "" "Particles will be emitted inside this region. See [enum EmissionShape] for " @@ -23687,8 +27572,8 @@ msgid "" "The sphere's radius if [member emission_shape] is set to [constant " "EMISSION_SHAPE_SPHERE]." msgstr "" -"[member emission_shape] 设置为 [constant EMISSION_SHAPE_SPHERE] 时,该球体的" -"半径。" +"[member emission_shape] 被设置为 [constant EMISSION_SHAPE_SPHERE] 时,该球体" +"的半径。" msgid "If [code]true[/code], particles are being emitted." msgstr "如果为 [code]true[/code],则正在发射粒子。" @@ -23698,24 +27583,43 @@ msgid "" "[code]0[/code], there will be a gap in emissions before the next cycle " "begins." msgstr "" -"粒子在一个发射周期中的发射速度有多快。如果大于[code]0[/code],则在下一个循环" -"开始之前会有排放量缺口。" +"粒子在单个发射周期中的发射有多急。如果大于 [code]0[/code],则在下一个发射周期" +"开始之前,发射会出现一个间隔。" + +msgid "" +"The particle system's frame rate is fixed to a value. For example, changing " +"the value to 2 will make the particles render at 2 frames per second. Note " +"this does not slow down the simulation of the particle system itself." +msgstr "" +"粒子系统的帧速率被固定为一个值。例如,将值更改为 2 会使粒子以每秒 2 帧的速度" +"渲染。请注意,这并不会降低粒子系统本身的模拟速度。" msgid "" "If [code]true[/code], results in fractional delta calculation which has a " "smoother particles display effect." msgstr "" -"如果为 [code]true[/code],将导致分数增量计算,该显示具有更平滑的粒子显示效" -"果。" +"如果为 [code]为true[/code],则使用分数增量 delta 计算,将具有更平滑的粒子显示" +"效果。" msgid "Gravity applied to every particle." -msgstr "重力作用于每个粒子。" +msgstr "应用于每个粒子的重力。" msgid "Each particle's hue will vary along this [Curve]." -msgstr "每个粒子的色相都将随之变化。" +msgstr "每个粒子的色相都会沿着这条 [Curve] 变化。" + +msgid "" +"Maximum initial hue variation applied to each particle. It will shift the " +"particle color's hue." +msgstr "应用于每个粒子的最大初始色相变化。会改变粒子颜色的色相。" msgid "Minimum equivalent of [member hue_variation_max]." -msgstr "[member hue_variation_max] 对应的最小值。" +msgstr "[member hue_variation_max] 的对应最小值。" + +msgid "" +"Maximum initial velocity magnitude for each particle. Direction comes from " +"[member direction] and [member spread]." +msgstr "" +"每个粒子的最大初始速度大小。方向来自 [member direction] 和 [member spread]。" msgid "Minimum equivalent of [member initial_velocity_max]." msgstr "[member initial_velocity_max] 的对应最小值。" @@ -23727,20 +27631,46 @@ msgid "Particle lifetime randomness ratio." msgstr "粒子寿命随机率。" msgid "Each particle's linear acceleration will vary along this [Curve]." -msgstr "每个粒子的线性加速度将沿此 [Curve] 变化。" +msgstr "每个粒子的线性加速度将沿这条 [Curve] 变化。" + +msgid "" +"Maximum linear acceleration applied to each particle in the direction of " +"motion." +msgstr "在运动方向上应用于每个粒子的最大线性加速度。" msgid "Minimum equivalent of [member linear_accel_max]." msgstr "[member linear_accel_max] 的对应最小值。" 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 [CPUParticles2D] node (and its parents) when it is moved or " +"rotated. If [code]false[/code], particles use global coordinates; they will " +"not move or rotate along the [CPUParticles2D] node (and its parents) when it " +"is moved or rotated." +msgstr "" +"如果为 [code]true[/code],粒子使用父节点的坐标空间(称为局部坐标)。这将导致" +"粒子在移动或旋转时,沿着 [CPUParticles2D] 节点(及其父节点)移动和旋转。如果" +"为 [code]false[/code],则粒子使用全局坐标;当移动或旋转时,它们不会沿着 " +"[CPUParticles2D] 节点(及其父节点)移动或旋转。" + +msgid "" "If [code]true[/code], only one emission cycle occurs. If set [code]true[/" "code] during a cycle, emission will stop at the cycle's end." msgstr "" -"如果为 [code]true[/code],则只发生一个排放周期。如果在周期内设置 [code]true[/" -"code],则排放将在周期结束时停止。" +"如果为 [code]true[/code],则只发生一个发射周期。如果在某个周期内设置为 " +"[code]true[/code],则发射将在该周期结束时停止。" msgid "Each particle's orbital velocity will vary along this [Curve]." -msgstr "每个粒子的轨道速度将跟随这个 [Curve] 变化。" +msgstr "每个粒子的轨道速度将沿着这条 [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." +msgstr "" +"应用于每个粒子的最大轨道速度。使粒子围绕原点旋转。以每秒围绕原点的完整旋转数" +"指定。" msgid "Minimum equivalent of [member orbit_velocity_max]." msgstr "[member orbit_velocity_max] 的对应最小值。" @@ -23752,7 +27682,14 @@ msgid "Particle system starts as if it had already run for this many seconds." msgstr "粒子系统启动时就好像已经运行了这么多秒一样。" msgid "Each particle's radial acceleration will vary along this [Curve]." -msgstr "每个粒子的径向加速度将跟随这个 [Curve] 变化。" +msgstr "每个粒子的径向加速度将沿着这条 [Curve] 变化。" + +msgid "" +"Maximum radial acceleration applied to each particle. Makes particle " +"accelerate away from the origin or towards it if negative." +msgstr "" +"应用于每个粒子的最大径向加速度。使粒子加速远离原点;或如果为负,则加速靠近原" +"点。" msgid "Minimum equivalent of [member radial_accel_max]." msgstr "[member radial_accel_max] 的对应最小值。" @@ -23761,7 +27698,7 @@ msgid "Emission lifetime randomness ratio." msgstr "发射寿命随机率。" msgid "Each particle's scale will vary along this [Curve]." -msgstr "每个粒子的缩放将跟随这个 [Curve] 变化。" +msgstr "每个粒子的缩放将沿着这条 [Curve] 变化。" msgid "Maximum initial scale applied to each particle." msgstr "应用于每个粒子的最大初始缩放。" @@ -23773,29 +27710,45 @@ msgid "" "Each particle's horizontal scale will vary along this [Curve].\n" "[member split_scale] must be enabled." msgstr "" -"每个粒子的水平比例都会沿着这条 [Curve] 变化。\n" +"每个粒子的水平缩放都会沿着这条 [Curve] 变化。\n" "必须启用 [member split_scale]。" msgid "" "Each particle's vertical scale will vary along this [Curve].\n" "[member split_scale] must be enabled." msgstr "" -"每个粒子的垂直比例都会沿着这条 [Curve] 变化。\n" +"每个粒子的垂直缩放都会沿着这条 [Curve] 变化。\n" "必须启用 [member split_scale]。" msgid "" "Particle system's running speed scaling ratio. A value of [code]0[/code] can " "be used to pause the particles." -msgstr "粒子系统的运行速度缩放比例。[code]0[/code]值可用于暂停粒子。" +msgstr "粒子系统的运行速度的缩放率。[code]0[/code] 值可用于暂停粒子。" + +msgid "" +"If [code]true[/code], the scale curve will be split into x and y components. " +"See [member scale_curve_x] and [member scale_curve_y]." +msgstr "" +"如果为 [code]true[/code],缩放曲线将被拆分成 x 和 y 分量。见 [member " +"scale_curve_x] 和 [member scale_curve_y]。" msgid "" "Each particle's initial direction range from [code]+spread[/code] to [code]-" "spread[/code] degrees." msgstr "" -"每个粒子的初始方向范围为 [code]+spread[/code] 到 [code]-spread[/code] 度。" +"每个粒子的初始方向范围,从 [code]+spread[/code] 度到 [code]-spread[/code] " +"度。" msgid "Each particle's tangential acceleration will vary along this [Curve]." -msgstr "每个粒子的切向加速度将跟随这个 [Curve] 变化。" +msgstr "每个粒子的切向加速度将沿着这条 [Curve] 变化。" + +msgid "" +"Maximum tangential acceleration applied to each particle. Tangential " +"acceleration is perpendicular to the particle's velocity giving the " +"particles a swirling motion." +msgstr "" +"应用于每个粒子的最大切向加速度。切向加速度垂直于粒子的速度,从而使粒子产生涡" +"旋运动。" msgid "Minimum equivalent of [member tangential_accel_max]." msgstr "[member tangential_accel_max] 的对应最小值。" @@ -23807,7 +27760,7 @@ msgid "Particles are drawn in the order emitted." msgstr "粒子按发射顺序绘制。" msgid "Particles are drawn in order of remaining lifetime." -msgstr "按照剩余寿命的顺序绘制粒子。" +msgstr "粒子按剩余寿命的顺序绘制。" msgid "" "Use with [method set_param_min], [method set_param_max], and [method " @@ -23902,18 +27855,23 @@ msgstr "" "与 [method set_particle_flag] 一起使用,设置 [member particle_flag_align_y]。" msgid "Present for consistency with 3D particle nodes, not used in 2D." -msgstr "为了与 3D 粒子节点保持一致而存在,在 2D 中不使用。" +msgstr "为了与 3D 粒子节点保持一致而存在,在 2D 中不被使用。" msgid "Represents the size of the [enum ParticleFlags] enum." msgstr "代表 [enum ParticleFlags] 枚举的大小。" msgid "All particles will be emitted from a single point." -msgstr "所有粒子将从一个点发射。" +msgstr "所有粒子将从单个点发射。" + +msgid "" +"Particles will be emitted in the volume of a sphere flattened to two " +"dimensions." +msgstr "粒子将在扁平化到二维的球体内发射。" msgid "" "Particles will be emitted on the surface of a sphere flattened to two " "dimensions." -msgstr "粒子将在展平为二维的球体表面上发射。" +msgstr "粒子将在扁平化到二维的球面上发射。" msgid "Particles will be emitted in the area of a rectangle." msgstr "粒子将在矩形区域内发射。" @@ -23953,16 +27911,38 @@ msgstr "" "运行。" msgid "" +"Sets this node's properties to match a given [GPUParticles3D] node with an " +"assigned [ParticleProcessMaterial]." +msgstr "" +"设置该节点的属性以匹配给定的 [GPUParticles3D] 节点,该给定节点已分配了一个 " +"[ParticleProcessMaterial]。" + +msgid "" "Returns the enabled state of the given particle flag (see [enum " "ParticleFlags] for options)." msgstr "返回给定粒子标志的启用状态(选项见 [enum ParticleFlags])。" +msgid "" +"Enables or disables the given particle flag (see [enum ParticleFlags] for " +"options)." +msgstr "启用或禁用给定的粒子标志(选项见 [enum ParticleFlags])。" + msgid "Maximum angle." msgstr "最大角度。" msgid "Minimum angle." msgstr "最小角度。" +msgid "" +"Each particle's angular velocity (rotation speed) will vary along this " +"[Curve] over its lifetime." +msgstr "每个粒子的角速度(旋转速度)将在其生命周期内沿着这条 [Curve] 变化。" + +msgid "" +"Minimum initial angular velocity (rotation speed) applied to each particle " +"in [i]degrees[/i] per second." +msgstr "应用于每个粒子的最小初始角速度(旋转速度),单位:[i]度[/i]每秒 。" + msgid "Maximum animation offset." msgstr "最大动画偏移。" @@ -23975,6 +27955,59 @@ msgstr "最大粒子动画速度。" msgid "Minimum particle animation speed." msgstr "最小粒子动画速度。" +msgid "" +"Each particle's initial color.\n" +"[b]Note:[/b] [member color] multiplies the particle mesh's vertex colors. To " +"have a visible effect on a [BaseMaterial3D], [member BaseMaterial3D." +"vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. For a " +"[ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted in the " +"shader's [code]fragment()[/code] function. Otherwise, [member color] will " +"have no visible effect." +msgstr "" +"每个粒子的初始颜色。\n" +"[b]注意:[/b][member color] 乘以粒子网格的顶点颜色。要在 [BaseMaterial3D] 上" +"产生可见效果,[member BaseMaterial3D.vertex_color_use_as_albedo] [i]必须[/i]" +"为 [code]true[/code]。对于 [ShaderMaterial],必须在着色器的 [code]fragment()" +"[/code] 函数中插入 [code]ALBEDO *= COLOR.rgb;[/code]。否则,[member color] 将" +"没有可见效果。" + +msgid "" +"Each particle's initial color will vary along this [GradientTexture1D] " +"(multiplied with [member color]).\n" +"[b]Note:[/b] [member color_initial_ramp] multiplies the particle mesh's " +"vertex colors. To have a visible effect on a [BaseMaterial3D], [member " +"BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. " +"For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted " +"in the shader's [code]fragment()[/code] function. Otherwise, [member " +"color_initial_ramp] will have no visible effect." +msgstr "" +"每个粒子的初始颜色将沿着该 [GradientTexture1D](乘以 [member color])而变" +"化。\n" +"[b]注意:[/b][member color_initial_ramp] 乘以粒子网格的顶点颜色。要在 " +"[BaseMaterial3D] 上产生可见效果,[member BaseMaterial3D." +"vertex_color_use_as_albedo] [i]必须[/i]为 [code]true[/code]。对于 " +"[ShaderMaterial],必须在着色器的 [code]fragment()[/code] 函数中插入 " +"[code]ALBEDO *= COLOR.rgb;[/code]。否则,[member color_initial_ramp] 将没有可" +"见效果。" + +msgid "" +"Each particle's color will vary along this [GradientTexture1D] over its " +"lifetime (multiplied with [member color]).\n" +"[b]Note:[/b] [member color_ramp] multiplies the particle mesh's vertex " +"colors. To have a visible effect on a [BaseMaterial3D], [member " +"BaseMaterial3D.vertex_color_use_as_albedo] [i]must[/i] be [code]true[/code]. " +"For a [ShaderMaterial], [code]ALBEDO *= COLOR.rgb;[/code] must be inserted " +"in the shader's [code]fragment()[/code] function. Otherwise, [member " +"color_ramp] will have no visible effect." +msgstr "" +"每个粒子的颜色将在其生命周期内沿该 [GradientTexture1D] 变化(乘以 [member " +"color])。\n" +"[b]注意:[/b][member color_ramp] 乘以粒子网格的顶点颜色。要在 " +"[BaseMaterial3D] 上产生可见效果,[member BaseMaterial3D." +"vertex_color_use_as_albedo] [i]必须[/i]为 [code]true[/code]。对于 " +"[ShaderMaterial],必须在着色器的 [code]fragment()[/code] 函数中插入 " +"[code]ALBEDO *= COLOR.rgb;[/code]。否则,[member color_ramp] 将没有可见效果。" + msgid "Maximum damping." msgstr "最大阻尼。" @@ -23985,7 +28018,7 @@ msgid "" "The rectangle's extents if [member emission_shape] is set to [constant " "EMISSION_SHAPE_BOX]." msgstr "" -"如果 [member emission_shape] 设置为 [constant EMISSION_SHAPE_BOX],则矩形的范" +"[member emission_shape] 被设置为 [constant EMISSION_SHAPE_BOX] 时,该矩形的范" "围。" msgid "" @@ -24009,26 +28042,26 @@ msgstr "" msgid "" "The axis of the ring when using the emitter [constant EMISSION_SHAPE_RING]." -msgstr "使用发射器时的环轴 [constant EMISSION_SHAPE_RING]。" +msgstr "使用形为 [constant EMISSION_SHAPE_RING] 的发射器时环的轴。" msgid "" "The height of the ring when using the emitter [constant EMISSION_SHAPE_RING]." -msgstr "使用发射器时环的高度 [constant EMISSION_SHAPE_RING]。" +msgstr "使用形为 [constant EMISSION_SHAPE_RING] 的发射器时环的高度。" msgid "" "The inner radius of the ring when using the emitter [constant " "EMISSION_SHAPE_RING]." -msgstr "使用发射器时环的内半径 [constant EMISSION_SHAPE_RING]。" +msgstr "使用形为 [constant EMISSION_SHAPE_RING] 的发射器时环的内半径。" msgid "" "The radius of the ring when using the emitter [constant EMISSION_SHAPE_RING]." -msgstr "使用发射器时的圆环半径 [constant EMISSION_SHAPE_RING]。" +msgstr "使用形为 [constant EMISSION_SHAPE_RING] 的发射器时环的半径。" msgid "" "The sphere's radius if [enum EmissionShape] is set to [constant " "EMISSION_SHAPE_SPHERE]." msgstr "" -"如果 [enum EmissionShape] 设置为 [constant EMISSION_SHAPE_SPHERE],则球体的半" +"[enum EmissionShape] 被设置为 [constant EMISSION_SHAPE_SPHERE]时,该球体的半" "径。" msgid "" @@ -24036,8 +28069,8 @@ msgid "" "the value to 2 will make the particles render at 2 frames per second. Note " "this does not slow down the particle system itself." msgstr "" -"固定粒子系统的帧速率为一个值。例如,把该值改为2将使粒子以每秒2帧的速度渲染。" -"请注意,这并不会降低粒子系统本身的速度。" +"粒子系统的帧速率被固定为一个值。例如,将值更改为 2 会使粒子以每秒 2 帧的速度" +"渲染。请注意,这并不会降低粒子系统本身的速度。" msgid "" "Amount of [member spread] in Y/Z plane. A value of [code]1[/code] restricts " @@ -24117,11 +28150,6 @@ msgid "Curve for the scale over life, along the z axis." msgstr "生命周期内,沿 Z 轴的缩放曲线。" msgid "" -"If set to true, three different scale curves can be specified, one per scale " -"axis." -msgstr "如果设置为 true,则可以指定三条不同的缩放曲线,每个缩放轴一条。" - -msgid "" "Each particle's initial direction range from [code]+spread[/code] to [code]-" "spread[/code] degrees. Applied to X/Z plane and Y/Z planes." msgstr "" @@ -24517,6 +28545,30 @@ msgstr "用于渲染盒子的材质。" msgid "A CSG node that allows you to combine other CSG modifiers." msgstr "允许您组合其他 CSG 修改器的 CSG 节点。" +msgid "" +"For complex arrangements of shapes, it is sometimes needed to add structure " +"to your CSG nodes. The CSGCombiner3D node allows you to create this " +"structure. The node encapsulates the result of the CSG operations of its " +"children. In this way, it is possible to do operations on one set of shapes " +"that are children of one CSGCombiner3D node, and a set of separate " +"operations on a second set of shapes that are children of a second " +"CSGCombiner3D node, and then do an operation that takes the two end results " +"as its input to create the final shape.\n" +"[b]Note:[/b] CSG nodes are intended to be used for level prototyping. " +"Creating CSG nodes has a significant CPU cost compared to creating a " +"[MeshInstance3D] with a [PrimitiveMesh]. Moving a CSG node within another " +"CSG node also has a significant CPU cost, so it should be avoided during " +"gameplay." +msgstr "" +"对于形状的复杂排列,有时需要向 CSG 节点添加结构。CSGCombiner3D 节点允许创建该" +"结构。节点封装了其子节点的 CSG 操作的结果。通过这种方式,可以对作为一个 " +"CSGCombiner3D 节点的子节点的一组形状进行操作,并对作为第二个 CSGCombiner3D 节" +"点的子节点的第二组形状进行一组单独的操作,然后执行以下操作: 将两个最终结果作" +"为输入来创建最终形状。\n" +"[b]注意:[/b] CSG 节点旨在用于关卡原型设计。与使用 [PrimitiveMesh] 创建 " +"[MeshInstance3D] 相比,创建 CSG 节点具有显著的 CPU 成本。在另一个 CSG 节点" +"中,移动一个 CSG 节点,也会大量消耗 CPU,因此在游戏过程中,应该避免这种情况。" + msgid "A CSG Cylinder shape." msgstr "CSG 圆柱形状。" @@ -24602,9 +28654,34 @@ msgid "Extrudes a 2D polygon shape to create a 3D mesh." msgstr "拉伸 2D 多边形形状以创建 3D 网格。" msgid "" +"An array of 2D points is extruded to quickly and easily create a variety of " +"3D meshes. See also [CSGMesh3D] for using 3D meshes as CSG nodes.\n" +"[b]Note:[/b] CSG nodes are intended to be used for level prototyping. " +"Creating CSG nodes has a significant CPU cost compared to creating a " +"[MeshInstance3D] with a [PrimitiveMesh]. Moving a CSG node within another " +"CSG node also has a significant CPU cost, so it should be avoided during " +"gameplay." +msgstr "" +"挤出一组 2D 点,以快速轻松地创建各种 3D 网格。另请参阅 [CSGMesh3D],以了解将 " +"3D 网格用作 CSG 节点。\n" +"[b]注意:[/b]CSG 节点旨在用于关卡原型设计。与使用 [PrimitiveMesh] 创建 " +"[MeshInstance3D] 相比,创建 CSG 节点具有显著的 CPU 成本。在另一个 CSG 节点" +"中,移动一个 CSG 节点,也会大量消耗 CPU,因此在游戏过程中,应该避免这种情况。" + +msgid "" "When [member mode] is [constant MODE_DEPTH], the depth of the extrusion." msgstr "当 [member mode] 为 [constant MODE_DEPTH] 时,挤出的深度。" +msgid "" +"Material to use for the resulting mesh. The UV maps the top half of the " +"material to the extruded shape (U along the length of the extrusions and V " +"around the outline of the [member polygon]), the bottom-left quarter to the " +"front end face, and the bottom-right quarter to the back end face." +msgstr "" +"用于生成的网格的材质。UV 将材质的上半部分映射到挤出形状(U 沿着挤出的长度,V " +"围绕 [member polygon] 的轮廓),左下四分之一映射到前端面,右下四分之一映射到" +"后端面。" + msgid "The [member mode] used to extrude the [member polygon]." msgstr "用于挤出 [member polygon] 的 [member mode] 。" @@ -24641,6 +28718,22 @@ msgstr "" "端会被连接起来,在路径的最后一个点和第一个点之间添加挤出。" msgid "" +"When [member mode] is [constant MODE_PATH], if [code]true[/code] the " +"[Transform3D] of the [CSGPolygon3D] is used as the starting point for the " +"extrusions, not the [Transform3D] of the [member path_node]." +msgstr "" +"当 [member mode] 为 [constant MODE_PATH] 时,如果为 [code]true[/code],则该 " +"[CSGPolygon3D] 的 [Transform3D] 将被用作挤出的起点,而非 [member path_node] " +"的 [Transform3D]。" + +msgid "" +"When [member mode] is [constant MODE_PATH], the location of the [Path3D] " +"object used to extrude the [member polygon]." +msgstr "" +"当 [member mode] 为 [constant MODE_PATH] 时,用于挤出 [member polygon] 的 " +"[Path3D] 对象的位置。" + +msgid "" "When [member mode] is [constant MODE_PATH], the [enum PathRotation] method " "used to rotate the [member polygon] as it is extruded." msgstr "" @@ -24698,6 +28791,28 @@ msgid "" msgstr "[member polygon] 形状通过围绕 Y 轴旋转来挤出。" msgid "" +"The [member polygon] shape is extruded along the [Path3D] specified in " +"[member path_node]." +msgstr "[member polygon] 形状沿 [member path_node] 中指定的 [Path3D] 挤出。" + +msgid "" +"The [member polygon] shape is not rotated.\n" +"[b]Note:[/b] Requires the path Z coordinates to continually decrease to " +"ensure viable shapes." +msgstr "" +"[member polygon] 形状不会被旋转。\n" +"[b]注意:[/b]要求路径的 Z 坐标不断减少,以确保可行的形状。" + +msgid "" +"The [member polygon] shape is rotated along the path, but it is not rotated " +"around the path axis.\n" +"[b]Note:[/b] Requires the path Z coordinates to continually decrease to " +"ensure viable shapes." +msgstr "" +"[member polygon] 形状沿路径旋转,但并不绕路径轴旋转。\n" +"[b]注意:[/b]需要路径的 Z 坐标不断减小,以确保可行的形状。" + +msgid "" "The [member polygon] shape follows the path and its rotations around the " "path axis." msgstr "[member polygon] 多边形的形状跟随路径及其围绕路径轴的旋转。" @@ -24720,10 +28835,47 @@ msgstr "" msgid "Base class for CSG primitives." msgstr "CSG 图元的基类。" +msgid "" +"Parent class for various CSG primitives. It contains code and functionality " +"that is common between them. It cannot be used directly. Instead use one of " +"the various classes that inherit from it.\n" +"[b]Note:[/b] CSG nodes are intended to be used for level prototyping. " +"Creating CSG nodes has a significant CPU cost compared to creating a " +"[MeshInstance3D] with a [PrimitiveMesh]. Moving a CSG node within another " +"CSG node also has a significant CPU cost, so it should be avoided during " +"gameplay." +msgstr "" +"各种 CSG 图元的父类,包含了它们所需的公共代码和功能。无法直接使用这个类,请使" +"用继承它的各种类。\n" +"[b]注意:[/b]CSG 节点旨在用于关卡原型设计。与使用 [PrimitiveMesh] 创建 " +"[MeshInstance3D] 相比,创建 CSG 节点具有显著的 CPU 成本。在一个 CSG 节点中移" +"动另一个 CSG 节点也会产生显著的 CPU 消耗,所以应当在游戏过程中避免进行类似的" +"操作。" + +msgid "" +"If set, the order of the vertices in each triangle are reversed resulting in " +"the backside of the mesh being drawn." +msgstr "如果设置,则每个三角形中顶点的顺序会颠倒,从而导致绘制网格的背面。" + msgid "The CSG base class." msgstr "CSG 基类。" msgid "" +"This is the CSG base class that provides CSG operation support to the " +"various CSG nodes in Godot.\n" +"[b]Note:[/b] CSG nodes are intended to be used for level prototyping. " +"Creating CSG nodes has a significant CPU cost compared to creating a " +"[MeshInstance3D] with a [PrimitiveMesh]. Moving a CSG node within another " +"CSG node also has a significant CPU cost, so it should be avoided during " +"gameplay." +msgstr "" +"这是为 Godot 中的各种 CSG 节点提供 CSG 操作支持的 CSG 基类。\n" +"[b]注意:[/b]CSG 节点旨在用于关卡原型设计。与使用 [PrimitiveMesh] 创建 " +"[MeshInstance3D] 相比,创建 CSG 节点具有显著的 CPU 成本。在一个 CSG 节点中移" +"动另一个 CSG 节点也会产生显著的 CPU 消耗,所以应当在游戏过程中避免进行类似的" +"操作。" + +msgid "" "Returns whether or not the specified layer of the [member collision_layer] " "is enabled, given a [code]layer_number[/code] between 1 and 32." msgstr "" @@ -24738,11 +28890,33 @@ msgstr "" "在 1 和 32 之间。" msgid "" +"Returns an [Array] with two elements, the first is the [Transform3D] of this " +"node and the second is the root [Mesh] of this node. Only works when this " +"node is the root shape." +msgstr "" +"返回一个包含两个元素的 [Array],第一个元素是该节点的 [Transform3D],第二个元" +"素是该节点的根 [Mesh]。仅当该节点是根形状时才有效。" + +msgid "" "Returns [code]true[/code] if this is a root shape and is thus the object " "that is rendered." msgstr "如果这是根形状,因此是渲染的对象,则返回 [code]true[/code]。" msgid "" +"Based on [code]value[/code], enables or disables the specified layer in the " +"[member collision_layer], given a [code]layer_number[/code] between 1 and 32." +msgstr "" +"基于 [code]value[/code],和一个给定的介于 1 和 32 之间的 [code]layer_number[/" +"code],在 [member collision_layer] 中启用或禁用指定层。" + +msgid "" +"Based on [code]value[/code], enables or disables the specified layer in the " +"[member collision_mask], given a [code]layer_number[/code] between 1 and 32." +msgstr "" +"基于 [code]value[/code],和一个给定的介于 1 和 32 之间的 [code]layer_number[/" +"code],在 [member collision_mask] 中启用或禁用指定层。" + +msgid "" "Calculate tangents for the CSG shape which allows the use of normal maps. " "This is only applied on the root shape, this setting is ignored on any child." msgstr "" @@ -24780,6 +28954,17 @@ msgstr "" "physics_introduction.html#collision-layers-and-masks]《碰撞层与掩码》[/url]。" msgid "" +"The priority used to solve colliding when occurring penetration. Only " +"effective if [member use_collision] is [code]true[/code]. The higher the " +"priority is, the lower the penetration into the object will be. This can for " +"example be used to prevent the player from breaking through the boundaries " +"of a level." +msgstr "" +"发生穿透时用于解算碰撞的优先级。仅当 [member use_collision] 为 [code]true[/" +"code] 时有效。优先级越高,对对象的穿透力就越低。例如,这可以用来防止玩家突破" +"关卡的边界。" + +msgid "" "The operation that is performed on this shape. This is ignored for the first " "CSG child node as the operation is between this node and the previous child " "of this nodes parent." @@ -24796,6 +28981,16 @@ msgstr "" "的精度,但可能难以调整。" msgid "" +"Adds a collision shape to the physics engine for our CSG shape. This will " +"always act like a static body. Note that the collision shape is still active " +"even if the CSG shape itself is hidden. See also [member collision_mask] and " +"[member collision_priority]." +msgstr "" +"为我们的 CSG 形状向物理引擎添加碰撞形状。这样行为就始终与静态物体类似。请注" +"意,即使 CSG 形状本身被隐藏,碰撞形状仍处于活动状态。另见 [member " +"collision_mask] 和 [member collision_priority]。" + +msgid "" "Geometry of both primitives is merged, intersecting geometry is removed." msgstr "合并两个图元的几何体,移除相交的几何体。" @@ -24809,6 +29004,19 @@ msgstr "从第一个形状减去第二个形状,留下一个带有其形状的 msgid "A CSG Sphere shape." msgstr "CSG 球形形状。" +msgid "" +"This node allows you to create a sphere for use with the CSG system.\n" +"[b]Note:[/b] CSG nodes are intended to be used for level prototyping. " +"Creating CSG nodes has a significant CPU cost compared to creating a " +"[MeshInstance3D] with a [PrimitiveMesh]. Moving a CSG node within another " +"CSG node also has a significant CPU cost, so it should be avoided during " +"gameplay." +msgstr "" +"该节点允许创建与 CSG 系统一起使用的球体。\n" +"[b]注意:[/b]CSG 节点旨在用于关卡原型设计。与使用 [PrimitiveMesh] 创建 " +"[MeshInstance3D] 相比,创建 CSG 节点具有显著的 CPU 成本。在另一个 CSG 节点" +"中,移动一个 CSG 节点,也会大量消耗 CPU,因此在游戏过程中,应该避免这种情况。" + msgid "The material used to render the sphere." msgstr "用于渲染球体的材质。" @@ -24832,6 +29040,19 @@ msgstr "" msgid "A CSG Torus shape." msgstr "CSG 圆环形状。" +msgid "" +"This node allows you to create a torus for use with the CSG system.\n" +"[b]Note:[/b] CSG nodes are intended to be used for level prototyping. " +"Creating CSG nodes has a significant CPU cost compared to creating a " +"[MeshInstance3D] with a [PrimitiveMesh]. Moving a CSG node within another " +"CSG node also has a significant CPU cost, so it should be avoided during " +"gameplay." +msgstr "" +"该节点允许创建与 CSG 系统一起使用的环面。\n" +"[b]注意:[/b]CSG 节点旨在用于关卡原型设计。与使用 [PrimitiveMesh] 创建 " +"[MeshInstance3D] 相比,创建 CSG 节点具有显著的 CPU 成本。在另一个 CSG 节点" +"中,移动一个 CSG 节点,也会大量消耗 CPU,因此在游戏过程中,应该避免这种情况。" + msgid "The inner radius of the torus." msgstr "圆环的内半径。" @@ -24878,10 +29099,69 @@ msgstr "返回该脚本的新实例。" msgid "6-sided texture typically used in 3D rendering." msgstr "通常用于 3D 渲染的 6 面纹理。" +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 " +"used to make an object look as if it's reflecting its surroundings. This " +"usually delivers much better performance than other reflection methods.\n" +"This resource is typically used as a uniform in custom shaders. Few core " +"Godot methods make use of [Cubemap] resources.\n" +"To create such a texture file yourself, reimport your image files using the " +"Godot Editor import presets.\n" +"[b]Note:[/b] Godot doesn't support using cubemaps in a " +"[PanoramaSkyMaterial]. 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 "" +"单个立方体贴图是由 6 个纹理分层组织的纹理组成的。它们通常用于在 3D 渲染中伪造" +"反射(参见 [ReflectionProbe])。可以用来让对象看起来像是在反射它的周围环境。" +"与其他反射方法相比,这通常能提供更好的性能。\n" +"这种资源通常在自定义着色器中用作一个 uniform。很少有 Godot 的核心方法会使用 " +"[Cubemap] 资源。\n" +"要想自己创建这样的纹理文件,请使用 Godot 编辑器的导入预设重新导入你的图像文" +"件。\n" +"[b]注意:[/b]Godot 不支持在 [PanoramaSkyMaterial] 中使用立方体贴图。可以使用" +"[url=https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/" +"cubemap_to_panorama.html]这个工具[/url]将立方体贴图转换为等距柱状天空贴图。" + msgid "Creates a placeholder version of this resource ([PlaceholderCubemap])." msgstr "创建该资源的占位符版本([PlaceholderCubemap])。" msgid "" +"A single composite texture resource which consists of multiple [Cubemap]s." +msgstr "由多个 [Cubemap] 组成的单一复合纹理资源。" + +msgid "" +"[CubemapArray]s are made of an array of [Cubemap]s. Accordingly, like " +"[Cubemap]s they are made of multiple textures the amount of which must be " +"divisible by 6 (one image 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" +"Generally, [CubemapArray]s provide a more efficient way for storing multiple " +"[Cubemap]s compared to storing multiple [Cubemap]s themselves in an array.\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 " +"Godot Editor import presets.\n" +"[b]Note:[/b] [CubemapArray] is not supported in the OpenGL 3 rendering " +"backend." +msgstr "" +"[CubemapArray] 由一组 [Cubemap] 组成。因此,它们像 [Cubemap] 一样是由多个纹理" +"组成的,其纹理的数量必须能被 6 整除(立方体的每个面都有一个图像)。" +"[CubemapArray] 的主要好处是可以使用单个纹理引用在着色器代码中访问它们。换句话" +"说,可以使用单个 [CubemapArray] 将多个 [Cubemap] 传入着色器。\n" +"通常,与将多个 [Cubemap] 本身存储在数组中相比,[CubemapArray] 提供了一种更有" +"效的存储多个 [Cubemap] 的方法。\n" +"如果将 [member ProjectSettings.rendering/reflections/sky_reflections/" +"texture_array_reflections] 设置为 [code]true[/code],Godot 在内部会将 " +"[CubemapArray] 用于多种效果,包括 [Sky]。\n" +"要想自己创建这样的纹理文件,请使用 Godot 编辑器的导入预设重新导入你的图像文" +"件。\n" +"[b]注意:[/b][CubemapArray] 在 OpenGL 3 渲染后端中不受支持。" + +msgid "" "Creates a placeholder version of this resource ([PlaceholderCubemapArray])." msgstr "创建该资源的占位符版本([PlaceholderCubemapArray])。" @@ -24914,6 +29194,13 @@ msgstr "" msgid "Recomputes the baked cache of points for the curve." msgstr "重新计算曲线的烘焙点缓存。" +msgid "" +"Removes duplicate points, i.e. points that are less than 0.00001 units " +"(engine epsilon value) away from their neighbor on the curve." +msgstr "" +"移除重复点,即与曲线上相邻点的距离小于 0.00001 个单位(引擎中的 epsilon 值)" +"的点。" + msgid "Removes all points from the curve." msgstr "从曲线中移除所有点。" @@ -24938,6 +29225,19 @@ msgid "Removes the point at [code]index[/code] from the curve." msgstr "从曲线中移除 [code]index[/code] 处的点。" msgid "" +"Returns the Y value for the point that would exist at the X position [param " +"offset] along the curve." +msgstr "返回沿曲线的 X 位置 [param offset] 处将存在的点的 Y 值。" + +msgid "" +"Returns the Y value for the point that would exist at the X position [param " +"offset] along the curve using the baked cache. Bakes the curve's points if " +"not already baked." +msgstr "" +"使用烘焙的缓存返回沿曲线的 X 位置 [param offset] 处将存在的点的 Y 值。烘焙尚" +"未烘焙的曲线的点。" + +msgid "" "Sets the left [enum TangentMode] for the point at [param index] to [param " "mode]." msgstr "" @@ -25028,6 +29328,26 @@ msgstr "" "根据缓存的点,返回曲线的总长度。给予足够的密度(见 [member bake_interval])," "它应该是足够近似的。" +msgid "Returns the cache of points as a [PackedVector2Array]." +msgstr "返回缓存的点,形式为 [PackedVector2Array]。" + +msgid "" +"Returns the closest offset to [param to_point]. This offset is meant to be " +"used in [method sample_baked].\n" +"[param to_point] must be in this curve's local space." +msgstr "" +"返回最接近 [param to_point] 的偏移量。该偏移量被用于 [method " +"sample_baked]。\n" +"[param to_point] 必须在该曲线的局部空间中。" + +msgid "" +"Returns the closest point on baked segments (in curve's local space) to " +"[param to_point].\n" +"[param to_point] must be in this curve's local space." +msgstr "" +"返回已烘焙的线段上最接近 [param to_point] 的点(在曲线的局部空间中)。\n" +"[param to_point] 必须在该曲线的局部空间中。" + msgid "" "Returns the position of the control point leading to the vertex [param idx]. " "The returned position is relative to the vertex [param idx]. If the index is " @@ -25098,6 +29418,24 @@ msgstr "" "立方插值往往能更好地跟随曲线,但线性插值速度更快(而且通常足够精确)。" msgid "" +"Similar to [method sample_baked], but returns [Transform2D] that includes a " +"rotation along the curve. Returns empty transform if length of the curve is " +"[code]0[/code].\n" +"[codeblock]\n" +"var transform = curve.sample_baked_with_rotation(offset)\n" +"position = transform.get_origin()\n" +"rotation = transform.get_rotation()\n" +"[/codeblock]" +msgstr "" +"类似于 [method sample_baked],但返回 [Transform2D],其中包含沿曲线的旋转。如" +"果曲线的长度为 [code]0[/code],则返回空变换。\n" +"[codeblock]\n" +"var transform = curve.sample_baked_with_rotation(offset)\n" +"position = transform.get_origin()\n" +"rotation = transform.get_rotation()\n" +"[/codeblock]" + +msgid "" "Returns the position at the vertex [param fofs]. It calls [method sample] " "using the integer part of [param fofs] as [code]idx[/code], and its " "fractional part as [code]t[/code]." @@ -25106,6 +29444,51 @@ msgstr "" "[code]idx[/code],其小数部分作为 [code]t[/code],调用 [method sample]。" msgid "" +"Sets the position of the control point leading to the vertex [param idx]. If " +"the index is out of bounds, the function sends an error to the console. The " +"position is relative to the vertex." +msgstr "" +"设置通往顶点 [param idx] 的控制点位置。如果索引超出范围,函数会向控制台发送错" +"误信息。位置相对于顶点。" + +msgid "" +"Sets the position of the control point leading out of the vertex [param " +"idx]. If the index is out of bounds, the function sends an error to the " +"console. The position is relative to the vertex." +msgstr "" +"设置从顶点 [param idx] 引出的控制点位置。如果索引超出范围,函数会向控制台发送" +"错误信息。位置相对于顶点。" + +msgid "" +"Sets the position for the vertex [param idx]. If the index is out of bounds, " +"the function sends an error to the console." +msgstr "" +"设置顶点 [param idx] 的位置。如果索引超出范围,函数会向控制台发送错误信息。" + +msgid "" +"Returns a list of points along the curve, with a curvature controlled point " +"density. That is, the curvier parts will have more points than the " +"straighter parts.\n" +"This approximation makes straight segments between each point, then " +"subdivides those segments until the resulting shape is similar enough.\n" +"[param max_stages] controls how many subdivisions a curve segment may face " +"before it is considered approximate enough. Each subdivision splits the " +"segment in half, so the default 5 stages may mean up to 32 subdivisions per " +"curve segment. Increase with care!\n" +"[param tolerance_degrees] controls how many degrees the midpoint of a " +"segment may deviate from the real curve, before the segment has to be " +"subdivided." +msgstr "" +"返回沿曲线的点的列表,点的密度由曲率控制。也就是说,弯曲的部分比直的部分有更" +"多的点。\n" +"这种近似会在每个点之间制作直段,然后将这些直段细分,直到得到的形状足够相" +"似。\n" +"[param max_stages] 控制曲线段在被认为足够近似之前可能会面临多少次细分。每次细" +"分会将曲线段分成两半,因此默认的 5 个阶段可能意味着每个曲线段最多得到 32 个细" +"分。请谨慎增加!\n" +"[param tolerance_degrees] 控制曲线段在其中点偏离真实曲线的多少度会被细分。" + +msgid "" "Returns a list of points along the curve, with almost uniform density. " "[param max_stages] controls how many subdivisions a curve segment may face " "before it is considered approximate enough. Each subdivision splits the " @@ -25133,9 +29516,38 @@ msgstr "" msgid "Describes a Bézier curve in 3D space." msgstr "描述 3D 空间的贝兹尔曲线。" +msgid "" +"This class describes a Bézier curve in 3D space. It is mainly used to give a " +"shape to a [Path3D], but can be manually sampled for other purposes.\n" +"It keeps a cache of precalculated points along the curve, to speed up " +"further calculations." +msgstr "" +"该类描述了 3D 空间中的贝塞尔曲线。它主要用于给 [Path3D] 提供一个形状,但也可" +"以手动采样以用于其他目的。\n" +"它保留沿曲线预先计算的点的缓存,以加速进一步的计算。" + msgid "Returns the cache of points as a [PackedVector3Array]." msgstr "返回缓存的点,类型为 [PackedVector3Array]。" +msgid "Returns the cache of tilts as a [PackedFloat32Array]." +msgstr "将倾斜缓存返回为一个 [PackedFloat32Array]。" + +msgid "" +"Returns the cache of up vectors as a [PackedVector3Array].\n" +"If [member up_vector_enabled] is [code]false[/code], the cache will be empty." +msgstr "" +"将向上向量的缓存返回为一个 [PackedVector3Array]。\n" +"如果 [member up_vector_enabled] 为 [code]false[/code],则缓存将为空。" + +msgid "" +"Returns the closest offset to [param to_point]. This offset is meant to be " +"used in [method sample_baked] or [method sample_baked_up_vector].\n" +"[param to_point] must be in this curve's local space." +msgstr "" +"返回最接近 [param to_point] 的偏移量。该偏移量被用于 [method sample_baked] " +"或 [method sample_baked_up_vector]。\n" +"[param to_point] 必须在该曲线的局部空间中。" + msgid "" "Returns the position of the control point leading to the vertex [param idx]. " "The returned position is relative to the vertex [param idx]. If the index is " @@ -25224,6 +29636,31 @@ msgstr "" "[/code]。" msgid "" +"Similar with [code]interpolate_baked()[/code]. The the return value is " +"[code]Transform3D[/code], 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." +msgstr "" +"与 [code]interpolate_baked()[/code] 类似。返回值为 [code]Transform3D[/code]," +"其中 [code]origin[/code] 作为点位置,[code]basis.x[/code] 作为横向向量," +"[code]basis.y[/code] 作为向上向量,[code]basis.z[/code] 作为前向向量。当曲线" +"长度为 0 时,将没有合理的方法来计算旋转,所有向量都会与全局空间轴对齐。" + +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" +"The tilt controls the rotation along the look-at axis an object traveling " +"the path would have. In the case of a curve controlling a [PathFollow3D], " +"this tilt is an offset over the natural tilt the [PathFollow3D] calculates." +msgstr "" +"以弧度为单位,设置点 [param idx] 的倾斜角度。如果索引超出范围,则该函数将向控" +"制台发送一个错误。\n" +"倾斜控制对象沿着路径行进时,沿着观察轴的旋转。在曲线控制 [PathFollow3D] 的情" +"况下,该倾斜是 [PathFollow3D] 计算的自然倾斜的偏移。" + +msgid "" "The distance in meters between two adjacent cached points. Changing it " "forces the cache to be recomputed the next time the [method " "get_baked_points] or [method get_baked_length] function is called. The " @@ -25234,13 +29671,41 @@ msgstr "" "get_baked_points] 或 [method get_baked_length] 函数时重新计算。距离越小,缓存" "中的点越多,占用的内存也越多,所以使用时要注意。" +msgid "" +"If [code]true[/code], the curve will bake up vectors used for orientation. " +"This is used when [member PathFollow3D.rotation_mode] is set to [constant " +"PathFollow3D.ROTATION_ORIENTED]. Changing it forces the cache to be " +"recomputed." +msgstr "" +"如果为 [code]true[/code],则曲线将烘焙用于定向的向量。当 [member " +"PathFollow3D.rotation_mode] 被设置为 [constant PathFollow3D." +"ROTATION_ORIENTED] 时使用。更改它会强制缓存被重新计算。" + msgid "A texture that shows a curve." msgstr "显示曲线的纹理。" +msgid "" +"Renders a given [Curve] provided to it. Simplifies the task of drawing " +"curves and/or saving them 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 "" +"渲染提供给它的给定 [Curve]。简化绘制曲线和/或将它们保存为图像文件的任务。\n" +"如果需要在单个纹理中,存储最多 3 条曲线,请改用 [CurveXYZTexture]。另见 " +"[GradientTexture1D] 和 [GradientTexture2D]。" + msgid "The [Curve] that is rendered onto the texture." msgstr "渲染到纹理上的 [Curve]。" msgid "" +"The format the texture should be generated with. When passing a CurveTexture " +"as a input to a [Shader], this may need to be adjusted." +msgstr "" +"生成纹理时应使用的格式。当将 CurveTexture 作为输入传递给 [Shader] 时,可能需" +"要调整。" + +msgid "" "The width of the texture (in pixels). Higher values make it possible to " "represent high-frequency data better (such as sudden direction changes), at " "the cost of increased generation time and memory usage." @@ -25248,6 +29713,38 @@ msgstr "" "纹理宽度(单位为像素)。较大的值能够更好地表示高频数据(例如方向的突变),但" "会增加生成时间和内存占用。" +msgid "" +"Store the curve equally across the red, green and blue channels. This uses " +"more video memory, but is more compatible with shaders that only read the " +"green and blue values." +msgstr "" +"将曲线平均存储在红色、绿色和蓝色通道上。这会使用更多的显存,但与只读取绿色和" +"蓝色值的着色器更兼容。" + +msgid "" +"Store the curve only in the red channel. This saves video memory, but some " +"custom shaders may not be able to work with this." +msgstr "" +"仅将曲线存储在红色通道中。这可以节省显存,但某些自定义着色器可能无法使用它。" + +msgid "" +"A texture that shows 3 different curves (stored on the red, green and blue " +"color channels)." +msgstr "显示 3 条不同曲线的纹理(存储在红色、绿色和蓝色通道上)。" + +msgid "" +"Renders 3 given [Curve]s provided to it, on the red, green and blue channels " +"respectively. Compared to using separate [CurveTexture]s, this further " +"simplifies the task of drawing curves and/or saving them 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 "" +"分别在红色、绿色和蓝色通道上,渲染 3 条给定的 [Curve]。与使用单独的 " +"[CurveTexture] 相比,这进一步简化了绘制曲线和/或将它们保存为图像文件的任" +"务。\n" +"如果只需要在单个纹理中存储一条曲线,请改用 [CurveTexture]。另见 " +"[GradientTexture1D] 和 [GradientTexture2D]。" + msgid "The [Curve] that is rendered onto the texture's red channel." msgstr "渲染到该纹理红色通道上的 [Curve]。" @@ -25276,6 +29773,32 @@ msgstr "" "圆柱体的底部半径。如果设置为 [code]0.0[/code],则不会生成底面,呈圆锥状。另" "见 [member cap_bottom]。" +msgid "" +"If [code]true[/code], generates a cap at the bottom of the cylinder. This " +"can be set to [code]false[/code] to speed up generation and rendering when " +"the cap is never seen by the camera. See also [member bottom_radius].\n" +"[b]Note:[/b] If [member bottom_radius] is [code]0.0[/code], cap generation " +"is always skipped even if [member cap_bottom] is [code]true[/code]." +msgstr "" +"如果为 [code]true[/code],则在圆柱体底部生成一个盖子。这可以设置为 " +"[code]false[/code] 以在相机从未看到盖子时加速生成和渲染。另见 [member " +"bottom_radius]。\n" +"[b]注意:[/b]如果 [member bottom_radius] 为 [code]0.0[/code],即使 [member " +"cap_bottom] 为 [code]true[/code],盖子生成也会始终被跳过。" + +msgid "" +"If [code]true[/code], generates a cap at the top of the cylinder. This can " +"be set to [code]false[/code] to speed up generation and rendering when the " +"cap is never seen by the camera. See also [member top_radius].\n" +"[b]Note:[/b] If [member top_radius] is [code]0.0[/code], cap generation is " +"always skipped even if [member cap_top] is [code]true[/code]." +msgstr "" +"如果为 [code]true[/code],则在圆柱体顶部生成一个盖子。这可以设置为 " +"[code]false[/code] 以在相机从未看到盖子时加速生成和渲染。另见 [member " +"top_radius]。\n" +"[b]注意:[/b]如果 [member top_radius] 为 [code]0.0[/code],即使 [member " +"cap_top] 为 [code]true[/code],盖子生成也会始终被跳过。" + msgid "Full height of the cylinder." msgstr "圆柱体的全高。" @@ -25309,6 +29832,23 @@ msgstr "" msgid "Cylinder shape for 3D collisions." msgstr "圆柱体形状,用于 3D 碰撞。" +msgid "" +"Cylinder shape for collisions. Like [CapsuleShape3D], but without " +"hemispheres at the cylinder's ends.\n" +"[b]Note:[/b] There are several known bugs with cylinder collision shapes. " +"Using [CapsuleShape3D] or [BoxShape3D] instead is recommended.\n" +"[b]Performance:[/b] Being a primitive collision shape, [CylinderShape3D] is " +"fast to check collisions against (though not as fast as [SphereShape3D]). " +"[CylinderShape3D] is also more demanding compared to [CapsuleShape3D]." +msgstr "" +"用于碰撞的圆柱体形状。像 [CapsuleShape3D] 一样,但在圆柱体的两端没有半球" +"形。\n" +"[b]注意:[/b]圆柱体碰撞形状有几个已知的错误。建议改用 [CapsuleShape3D] 或 " +"[BoxShape3D]。\n" +"[b]性能:[/b]作为一种原始碰撞形状,[CylinderShape3D] 可以快速检查碰撞(尽管不" +"如 [SphereShape3D] 快)。与 [CapsuleShape3D] 相比,[CylinderShape3D] 的要求也" +"更高。" + msgid "The cylinder's height." msgstr "圆柱体的高度。" @@ -25705,6 +30245,309 @@ msgstr "[enum DecalTexture] 枚举的最大大小。" msgid "Dictionary type." msgstr "字典类型。" +msgid "" +"Dictionary type. Associative container, which contains values referenced by " +"unique keys. Dictionaries are composed of pairs of keys (which must be " +"unique) and values. Dictionaries will preserve the insertion order when " +"adding new entries. In other programming languages, this data structure is " +"sometimes referred to as a hash map or associative array.\n" +"You can define a dictionary by placing a comma-separated list of [code]key: " +"value[/code] pairs in curly braces [code]{}[/code].\n" +"[b]Note:[/b] Dictionaries are always passed by reference. To get a copy of a " +"dictionary which can be modified independently of the original dictionary, " +"use [method duplicate].\n" +"Creating a dictionary:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_dict = {} # Creates an empty dictionary.\n" +"\n" +"var dict_variable_key = \"Another key name\"\n" +"var dict_variable_value = \"value2\"\n" +"var another_dict = {\n" +" \"Some key name\": \"value1\",\n" +" dict_variable_key: dict_variable_value,\n" +"}\n" +"\n" +"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n" +"\n" +"# Alternative Lua-style syntax.\n" +"# Doesn't require quotes around keys, but only string constants can be used " +"as key names.\n" +"# Additionally, key names must start with a letter or an underscore.\n" +"# Here, `some_key` is a string literal, not a variable!\n" +"another_dict = {\n" +" some_key = 42,\n" +"}\n" +"[/gdscript]\n" +"[csharp]\n" +"var myDict = new Godot.Collections.Dictionary(); // Creates an empty " +"dictionary.\n" +"var pointsDict = new Godot.Collections.Dictionary\n" +"{\n" +" {\"White\", 50},\n" +" {\"Yellow\", 75},\n" +" {\"Orange\", 100}\n" +"};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"You can access a dictionary's value by referencing its corresponding key. In " +"the above example, [code]points_dict[\"White\"][/code] will return [code]50[/" +"code]. You can also write [code]points_dict.White[/code], which is " +"equivalent. However, you'll have to use the bracket syntax if the key you're " +"accessing the dictionary with isn't a fixed string (such as a number or " +"variable).\n" +"[codeblocks]\n" +"[gdscript]\n" +"@export_enum(\"White\", \"Yellow\", \"Orange\") var my_color: String\n" +"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n" +"func _ready():\n" +" # We can't use dot syntax here as `my_color` is a variable.\n" +" var points = points_dict[my_color]\n" +"[/gdscript]\n" +"[csharp]\n" +"[Export(PropertyHint.Enum, \"White,Yellow,Orange\")]\n" +"public string MyColor { get; set; }\n" +"private Godot.Collections.Dictionary _pointsDict = new Godot.Collections." +"Dictionary\n" +"{\n" +" {\"White\", 50},\n" +" {\"Yellow\", 75},\n" +" {\"Orange\", 100}\n" +"};\n" +"\n" +"public override void _Ready()\n" +"{\n" +" int points = (int)_pointsDict[MyColor];\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In the above code, [code]points[/code] will be assigned the value that is " +"paired with the appropriate color selected in [code]my_color[/code].\n" +"Dictionaries can contain more complex data:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_dict = {\n" +" \"First Array\": [1, 2, 3, 4] # Assigns an Array to a String key.\n" +"}\n" +"[/gdscript]\n" +"[csharp]\n" +"var myDict = new Godot.Collections.Dictionary\n" +"{\n" +" {\"First Array\", new Godot.Collections.Array{1, 2, 3, 4}}\n" +"};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"To add a key to an existing dictionary, access it like an existing key and " +"assign to it:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n" +"points_dict[\"Blue\"] = 150 # Add \"Blue\" as a key and assign 150 as its " +"value.\n" +"[/gdscript]\n" +"[csharp]\n" +"var pointsDict = new Godot.Collections.Dictionary\n" +"{\n" +" {\"White\", 50},\n" +" {\"Yellow\", 75},\n" +" {\"Orange\", 100}\n" +"};\n" +"pointsDict[\"Blue\"] = 150; // Add \"Blue\" as a key and assign 150 as its " +"value.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Finally, dictionaries can contain different types of keys and values in the " +"same dictionary:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# This is a valid dictionary.\n" +"# To access the string \"Nested value\" below, use `my_dict.sub_dict." +"sub_key` or `my_dict[\"sub_dict\"][\"sub_key\"]`.\n" +"# Indexing styles can be mixed and matched depending on your needs.\n" +"var my_dict = {\n" +" \"String Key\": 5,\n" +" 4: [1, 2, 3],\n" +" 7: \"Hello\",\n" +" \"sub_dict\": {\"sub_key\": \"Nested value\"},\n" +"}\n" +"[/gdscript]\n" +"[csharp]\n" +"// This is a valid dictionary.\n" +"// To access the string \"Nested value\" below, use `((Godot.Collections." +"Dictionary)myDict[\"sub_dict\"])[\"sub_key\"]`.\n" +"var myDict = new Godot.Collections.Dictionary {\n" +" {\"String Key\", 5},\n" +" {4, new Godot.Collections.Array{1,2,3}},\n" +" {7, \"Hello\"},\n" +" {\"sub_dict\", new Godot.Collections.Dictionary{{\"sub_key\", \"Nested " +"value\"}}}\n" +"};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The keys of a dictionary can be iterated with the [code]for[/code] keyword:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var groceries = {\"Orange\": 20, \"Apple\": 2, \"Banana\": 4}\n" +"for fruit in groceries:\n" +" var amount = groceries[fruit]\n" +"[/gdscript]\n" +"[csharp]\n" +"var groceries = new Godot.Collections.Dictionary{{\"Orange\", 20}, " +"{\"Apple\", 2}, {\"Banana\", 4}};\n" +"foreach (var (fruit, amount) in groceries)\n" +"{\n" +" // `fruit` is the key, `amount` is the value.\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Erasing elements while iterating over dictionaries is [b]not[/" +"b] supported and will result in unpredictable behavior." +msgstr "" +"字典类型。关联型容器,容器中的值(Value)由唯一的键(Key)引用。字典由若干键" +"值对组成(键必须唯一,不能重复)。添加新条目时,字典会保持插入顺序。在其他编" +"程语言中,这样的数据结构有时也称为哈希表或关联数组。\n" +"你可以使用大括号 [code]{}[/code] 中放置用逗号分隔的一对对 [code]键:值[/code] " +"列表来定义字典。\n" +"[b]注意:[/b]字典始终按引用传递。要获取字典的副本,能独立于原字典进行修改,请" +"使用 [method duplicate]。\n" +"字典的创建:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_dict = {} # 创建空字典。\n" +"\n" +"var dict_variable_key = \"Another key name\"\n" +"var dict_variable_value = \"value2\"\n" +"var another_dict = {\n" +" \"Some key name\": \"value1\",\n" +" dict_variable_key: dict_variable_value,\n" +"}\n" +"\n" +"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n" +"\n" +"# 备选 Lua 分隔语法。\n" +"# 不需要在键周围加引号,但键名只能为字符串常量。\n" +"# 另外,键名必须以字母或下划线开头。\n" +"# 此处的 `some_key` 是字符串字面量,不是变量!\n" +"another_dict = {\n" +" some_key = 42,\n" +"}\n" +"[/gdscript]\n" +"[csharp]\n" +"var myDict = new Godot.Collections.Dictionary(); // 创建空字典。\n" +"var pointsDict = new Godot.Collections.Dictionary\n" +"{\n" +" {\"White\", 50},\n" +" {\"Yellow\", 75},\n" +" {\"Orange\", 100}\n" +"};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"你可以通过键来访问字典中对应的值。上面的例子中,[code]points_dict[\"White\"]" +"[/code] 会返回 [code]50[/code]。你也可以写 [code]points_dict.White[/code],和" +"前面的写法是等价的。不过如果用来访问字典的键不是固定字符串的话(例如数字或者" +"变量),那么就只能使用方括号语法。\n" +"[codeblocks]\n" +"[gdscript]\n" +"@export_enum(\"White\", \"Yellow\", \"Orange\") var my_color: String\n" +"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n" +"func _ready():\n" +" # 不能使用点语法,因为 `my_color` 是变量。\n" +" var points = points_dict[my_color]\n" +"[/gdscript]\n" +"[csharp]\n" +"[Export(PropertyHint.Enum, \"White,Yellow,Orange\")]\n" +"public string MyColor { get; set; }\n" +"private Godot.Collections.Dictionary _pointsDict = new Godot.Collections." +"Dictionary\n" +"{\n" +" {\"White\", 50},\n" +" {\"Yellow\", 75},\n" +" {\"Orange\", 100}\n" +"};\n" +"\n" +"public override void _Ready()\n" +"{\n" +" int points = (int)_pointsDict[MyColor];\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"在上面的代码中,[code]points[/code] 会被赋值为与 [code]my_color[/code] 中选中" +"的颜色相对应的值。\n" +"字典可以包含更复杂的数据:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_dict = {\n" +" \"First Array\": [1, 2, 3, 4] # 将 Array 赋给 String 键。\n" +"}\n" +"[/gdscript]\n" +"[csharp]\n" +"var myDict = new Godot.Collections.Dictionary\n" +"{\n" +" {\"First Array\", new Godot.Collections.Array{1, 2, 3, 4}}\n" +"};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"要往已有字典中添加键,请像已有键一样进行访问并赋值:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var points_dict = {\"White\": 50, \"Yellow\": 75, \"Orange\": 100}\n" +"points_dict[\"Blue\"] = 150 # 将 \"Blue\" 添加为键,并将 150 赋为它的值。\n" +"[/gdscript]\n" +"[csharp]\n" +"var pointsDict = new Godot.Collections.Dictionary\n" +"{\n" +" {\"White\", 50},\n" +" {\"Yellow\", 75},\n" +" {\"Orange\", 100}\n" +"};\n" +"pointsDict[\"Blue\"] = 150; // 将 \"Blue\" 添加为键,并将 150 赋为它的值。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"最后,同一个字典里可以包含不同类型的键和值:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 这是有效的字典。\n" +"# 要访问下面的 \"Nested value\",请使用 `my_dict.sub_dict.sub_key` 或 " +"`my_dict[\"sub_dict\"][\"sub_key\"]`。\n" +"# 索引风格可以按需混合使用。\n" +"var my_dict = {\n" +" \"String Key\": 5,\n" +" 4: [1, 2, 3],\n" +" 7: \"Hello\",\n" +" \"sub_dict\": {\"sub_key\": \"Nested value\"},\n" +"}\n" +"[/gdscript]\n" +"[csharp]\n" +"// 这是有效的字典。\n" +"// 要访问下面的 \"Nested value\",请使用 `((Godot.Collections." +"Dictionary)myDict[\"sub_dict\"])[\"sub_key\"]`。\n" +"var myDict = new Godot.Collections.Dictionary {\n" +" {\"String Key\", 5},\n" +" {4, new Godot.Collections.Array{1,2,3}},\n" +" {7, \"Hello\"},\n" +" {\"sub_dict\", new Godot.Collections.Dictionary{{\"sub_key\", \"Nested " +"value\"}}}\n" +"};\n" +"[/csharp]\n" +"[/codeblocks]\n" +"字典中的键可以用 [code]for[/code] 关键字进行遍历:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var groceries = {\"Orange\": 20, \"Apple\": 2, \"Banana\": 4}\n" +"for fruit in groceries:\n" +" var amount = groceries[fruit]\n" +"[/gdscript]\n" +"[csharp]\n" +"var groceries = new Godot.Collections.Dictionary{{\"Orange\", 20}, " +"{\"Apple\", 2}, {\"Banana\", 4}};\n" +"foreach (var (fruit, amount) in groceries)\n" +"{\n" +" // `fruit` 为键,`amount` 为值。\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b][b]不支持[/b]在遍历字典时清除元素,可能造成无法预知的行为。" + msgid "GDScript basics: Dictionary" msgstr "GDScript 基础:字典" @@ -26338,6 +31181,15 @@ msgid "Static version of [method rename]. Supports only absolute paths." msgstr "静态版本的 [method rename]。仅支持绝对路径。" msgid "" +"If [code]true[/code], hidden files are included when navigating the " +"directory.\n" +"Affects [method list_dir_begin], [method get_directories] and [method " +"get_files]." +msgstr "" +"如果为 [code]true[/code],则在导航目录时包含隐藏文件。\n" +"影响 [method list_dir_begin]、[method get_directories]、[method get_files]。" + +msgid "" "If [code]true[/code], [code].[/code] and [code]..[/code] are included when " "navigating the directory.\n" "Affects [method list_dir_begin] and [method get_directories]." @@ -26366,9 +31218,40 @@ msgstr "" msgid "2D lights and shadows" msgstr "2D 灯光和阴影" +msgid "" +"The height of the light. Used with 2D normal mapping. Ranges from 0 " +"(parallel to the plane) to 1 (perpendicular to the plane)." +msgstr "" +"灯光的高度。用于 2D 法线贴图。范围从 0(平行于平面)到 1(垂直于平面)。" + +msgid "" +"The maximum distance from the camera center objects can be before their " +"shadows are culled (in pixels). Decreasing this value can prevent objects " +"located outside the camera from casting shadows (while also improving " +"performance). [member Camera2D.zoom] is not taken into account by [member " +"max_distance], which means that at higher zoom values, shadows will appear " +"to fade out sooner when zooming onto a given point." +msgstr "" +"对象在其阴影被剔除前与相机中心的最大距离(单位:像素)。降低这个值可以防止位" +"于相机外部的对象投射阴影(同时还可以提高性能)。[member Camera2D.zoom] 不被 " +"[member max_distance] 考虑在内,这意味着在较高的缩放值下,当缩放到一个给定的" +"点时,阴影会更快地淡出。" + msgid "Directional light from a distance, as from the Sun." msgstr "来自远处的平行光,如太阳光。" +msgid "" +"A directional light is a type of [Light3D] node that models an infinite " +"number of parallel rays covering the entire scene. It is used for lights " +"with strong intensity that are located far away from the scene to model " +"sunlight or moonlight. The worldspace location of the DirectionalLight3D " +"transform (origin) is ignored. Only the basis is used to determine light " +"direction." +msgstr "" +"平行光是一种 [Light3D] 节点,它可以模拟覆盖整个场景的无限数量的平行光线。它用" +"于距离场景较远的强光,以模拟日光或月光。 DirectionalLight3D 变换的世界空间位" +"置(原点)将被忽略。只有基被用于确定光线方向。" + msgid "Lights and shadows" msgstr "灯光与阴影" @@ -26383,6 +31266,27 @@ msgstr "" "为 [constant SHADOW_ORTHOGONAL] 时会被忽略。" msgid "" +"Proportion of [member directional_shadow_max_distance] at which point the " +"shadow starts to fade. At [member directional_shadow_max_distance], the " +"shadow will disappear. The default value is a balance between smooth fading " +"and distant shadow visibility. If the camera moves fast and the [member " +"directional_shadow_max_distance] is low, consider lowering [member " +"directional_shadow_fade_start] below [code]0.8[/code] to make shadow " +"transitions less noticeable. On the other hand, if you tuned [member " +"directional_shadow_max_distance] to cover the entire scene, you can set " +"[member directional_shadow_fade_start] to [code]1.0[/code] to prevent the " +"shadow from fading in the distance (it will suddenly cut off instead)." +msgstr "" +"阴影开始消失时,[member directional_shadow_max_distance] 的比例。在 [member " +"directional_shadow_max_distance] 处,阴影会消失。默认值是平滑淡化和远处阴影可" +"见性之间的平衡。如果相机移动较快且 [member directional_shadow_max_distance] " +"较低,请考虑将 [member directional_shadow_fade_start] 降低到 [code]0.8[/" +"code] 以下,以使阴影过渡不那么明显。另一方面,如果调整了 [member " +"directional_shadow_max_distance] 来覆盖整个场景,可以将 [member " +"directional_shadow_fade_start] 设置为 [code]1.0[/code],以防止阴影在远处逐渐" +"淡化(它将会突然切断 )。" + +msgid "" "The maximum distance for shadow splits. Increasing this value will make " "directional shadows visible from further away, at the cost of lower overall " "shadow detail and performance (since more objects need to be included in the " @@ -26395,6 +31299,18 @@ msgid "The light's shadow rendering algorithm. See [enum ShadowMode]." msgstr "灯光的阴影渲染算法。见 [enum ShadowMode]。" msgid "" +"Sets the size of the directional shadow pancake. The pancake offsets the " +"start of the shadow's camera frustum to provide a higher effective depth " +"resolution for the shadow. However, a high pancake size can cause artifacts " +"in the shadows of large objects that are close to the edge of the frustum. " +"Reducing the pancake size can help. Setting the size to [code]0[/code] turns " +"off the pancaking effect." +msgstr "" +"设置定向阴影斑点的大小。 斑点偏移了阴影的相机视锥体的起点,为阴影提供更高的有" +"效深度分辨率。但是,较大的斑点尺寸会导致靠近视锥体边缘的大型物体的阴影出现伪" +"影。减少斑点的大小会有所帮助。将大小设置为 [code]0[/code] 会关闭斑点效果。" + +msgid "" "The distance from camera to shadow split 1. Relative to [member " "directional_shadow_max_distance]. Only used when [member " "directional_shadow_mode] is [constant SHADOW_PARALLEL_2_SPLITS] or [constant " @@ -26405,15 +31321,31 @@ msgstr "" "或 [constant SHADOW_PARALLEL_4_SPLITS] 时才使用。" msgid "" +"The distance from shadow split 1 to split 2. Relative to [member " +"directional_shadow_max_distance]. Only used when [member " +"directional_shadow_mode] is [constant SHADOW_PARALLEL_4_SPLITS]." +msgstr "" +"从阴影分割 1 到阴影分割 2 的距离。相对于 [member " +"directional_shadow_max_distance]。仅在 [member directional_shadow_mode] 为 " +"[constant SHADOW_PARALLEL_4_SPLITS] 时使用。" + +msgid "" "The distance from shadow split 2 to split 3. Relative to [member " "directional_shadow_max_distance]. Only used when [member " "directional_shadow_mode] is [constant SHADOW_PARALLEL_4_SPLITS]." msgstr "" -"从阴影分割 2 到分割 3 的距离。相对于 [member " +"从阴影分割 2 到阴影分割 3 的距离。相对于 [member " "directional_shadow_max_distance]。只有当 [member directional_shadow_mode] 为 " "[constant SHADOW_PARALLEL_4_SPLITS] 时才使用。" msgid "" +"Set whether this [DirectionalLight3D] is visible in the sky, in the scene, " +"or both in the sky and in the scene. See [enum SkyMode] for options." +msgstr "" +"设置该 [DirectionalLight3D] 是否在天空、场景、或天空和场景中可见。有关选项," +"请参阅 [enum SkyMode]。" + +msgid "" "Renders the entire scene's shadow map from an orthogonal point of view. This " "is the fastest directional shadow mode. May result in blurrier shadows on " "close objects." @@ -26426,14 +31358,36 @@ msgid "" "shadow mode is a compromise between [constant SHADOW_ORTHOGONAL] and " "[constant SHADOW_PARALLEL_4_SPLITS] in terms of performance." msgstr "" -"将视图分割成2个区域,每个区域都有自己的阴影图。这个阴影模式是[constant " -"SHADOW_ORTHOGONAL]和[constant SHADOW_PARALLEL_4_SPLITS]在性能上的折中。" +"将视锥体分成2个区域,每个区域都有自己的阴影贴图。这种阴影模式是 [constant " +"SHADOW_ORTHOGONAL] 和 [constant SHADOW_PARALLEL_4_SPLITS] 在性能上的折衷。" msgid "" "Splits the view frustum in 4 areas, each with its own shadow map. This is " "the slowest directional shadow mode." msgstr "" -"将视图frustum分成4个区域,每个区域都有自己的阴影图。这是最慢的定向阴影模式。" +"将视锥体分成 4 个区域,每个区域都有自己的阴影贴图。这是最慢的定向阴影模式。" + +msgid "Makes the light visible in both scene lighting and sky rendering." +msgstr "使灯光在场景照明和天空渲染中都可见。" + +msgid "" +"Makes the light visible in scene lighting only (including direct lighting " +"and global illumination). When using this mode, the light will not be " +"visible from sky shaders." +msgstr "" +"使灯光仅在场景照明中可见(包括直接照明和全局照明)。使用此模式时,天空着色器" +"看不到此灯光。" + +msgid "" +"Makes the light visible to sky shaders only. When using this mode the light " +"will not cast light into the scene (either through direct lighting or " +"through global illumination), but can be accessed through sky shaders. This " +"can be useful, for example, when you want to control sky effects without " +"illuminating the scene (during a night cycle, for example)." +msgstr "" +"使灯光仅对天空着色器可见。使用此模式时,灯光不会将灯光投射到场景中(通过直接" +"照明或通过全局照明),但可以通过天空着色器访问。例如,当您想要控制天空效果而" +"不照亮场景时(例如,在夜间循环期间),这可能很有用。" msgid "Singleton for window management functions." msgstr "单例,用于窗口管理等功能。" @@ -26456,6 +31410,23 @@ msgstr "" msgid "Returns the user's clipboard as a string 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] clipboard as a string if possible. This is the clipboard that is set " +"when the user selects text in any application, rather than when pressing " +"[kbd]Ctrl + C[/kbd]. The clipboard data can then be pasted by clicking the " +"middle mouse button in any application that supports the primary clipboard " +"mechanism.\n" +"[b]Note:[/b] This method is only implemented on Linux (X11)." +msgstr "" +"如果可能的话,将用户的[url=https://unix.stackexchange.com/questions/139191/" +"whats-the-difference-between-primary-selection-and-clipboard-buffer]主[/url]" +"剪贴板作为字符串返回。这是当用户在任何应用程序中选择文本时设置的剪贴板,而不" +"是在按下 [kbd]Ctrl + C[/kbd] 时设置的。然后可以通过在支持主剪贴板机制的任何应" +"用程序中,通过点击鼠标中键来粘贴该剪贴板数据。\n" +"[b]注意:[/b] 这个方法只在 Linux(X11)上实现。" + msgid "Returns [code]true[/code] if there is content on the user's clipboard." msgstr "如果用户的剪贴板中有内容,则返回 [code]true[/code]。" @@ -26463,9 +31434,138 @@ msgid "Sets the user's clipboard content to the given string." msgstr "将用户的剪贴板内容设置为给定的字符串。" msgid "" +"Sets the user's [url=https://unix.stackexchange.com/questions/139191/whats-" +"the-difference-between-primary-selection-and-clipboard-buffer]primary[/url] " +"clipboard content to the given string. This is the clipboard that is set " +"when the user selects text in any application, rather than when pressing " +"[kbd]Ctrl + C[/kbd]. The clipboard data can then be pasted by clicking the " +"middle mouse button in any application that supports the primary clipboard " +"mechanism.\n" +"[b]Note:[/b] This method is only implemented on Linux (X11)." +msgstr "" +"将用户的[url=https://unix.stackexchange.com/questions/139191/whats-the-" +"difference-between-primary-selection-and-clipboard-buffer]主剪贴板[/url]内容" +"设置为给定的字符串。这是用户在应用程序中选中文本时设置的剪贴板,不是按 " +"[kbd]Ctrl + C[/kbd] 时设置的。设置后可以在任何支持主剪贴板机制的应用程序中通" +"过点击鼠标中键粘贴剪贴板数据。\n" +"[b]注意:[/b] 这个方法只在 Linux(X11)上实现。" + +msgid "" "Returns the default mouse cursor shape set by [method cursor_set_shape]." msgstr "返回默认鼠标光标形状,由 [method cursor_set_shape] 设置。" +msgid "" +"Sets a custom mouse cursor image for the defined [param shape]. This means " +"the user's operating system and mouse cursor theme will no longer influence " +"the mouse cursor's appearance. The image must be [code]256x256[/code] or " +"smaller for correct appearance. [param hotspot] can optionally be set to " +"define the area where the cursor will click. By default, [param hotspot] is " +"set to [code]Vector2(0, 0)[/code], which is the top-left corner of the " +"image. See also [method cursor_set_shape]." +msgstr "" +"为定义的形状 [param shape] 设置自定义鼠标指针图像。这意味着用户的操作系统和鼠" +"标光标主题不再影响鼠标光标的外观。图像的最大尺寸为 [code]256x256[/code],否则" +"无法正确显示。还可以设置 [param hotspot],用来定义光标的点击位置。默认情况" +"下,[param hotspot] 为 [code]Vector2(0, 0)[/code],即图像的左上角。另见 " +"[method cursor_set_shape]。" + +msgid "" +"Sets the default mouse cursor shape. The cursor's appearance will vary " +"depending on the user's operating system and mouse cursor theme. See also " +"[method cursor_get_shape] and [method cursor_set_custom_image]." +msgstr "" +"设置默认的鼠标光标形状。光标的外观将根据用户的操作系统和鼠标光标主题而变化。" +"另见 [method cursor_get_shape] 和 [method cursor_set_custom_image]。" + +msgid "" +"Shows a text input dialog which uses the operating system's native look-and-" +"feel. [param callback] will be called with a [String] argument equal to the " +"text field's contents when the dialog is closed for any reason.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"显示文本输入对话框,这个对话框的外观和行为与操作系统原生对话框一致。该对话框" +"关闭时,无论关闭的原因,都会使用文本字段的内容作为 [String] 参数来调用 " +"[param callback]。\n" +"[b]注意:[/b]这个方法在 macOS 上实现。" + +msgid "" +"Shows a text dialog which uses the operating system's native look-and-feel. " +"[param callback] will be called when the dialog is closed for any reason.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"显示文本对话框,这个对话框的外观和行为与操作系统原生对话框一致。该对话框关闭" +"时,无论关闭的原因,都会调用 [param callback]。\n" +"[b]注意:[/b]这个方法在 macOS 上实现。" + +msgid "" +"Allows the [param process_id] PID to steal focus from this window. In other " +"words, this disables the operating system's focus stealing protection for " +"the specified PID.\n" +"[b]Note:[/b] This method is implemented on Windows." +msgstr "" +"让进程 PID [param process_id] 窃取该窗口的焦点。换句话说,会禁用操作系统对指" +"定 PID 的焦点窃取保护。\n" +"[b]注意:[/b]这个方法在 Windows 上实现。" + +msgid "" +"Forces window manager processing while ignoring all [InputEvent]s. See also " +"[method process_events].\n" +"[b]Note:[/b] This method is implemented on Windows and macOS." +msgstr "" +"强制窗口管理器进行处理,会忽略所有 [InputEvent]。另见 [method " +"process_events]。\n" +"[b]注意:[/b]这个方法在 Windows 和 macOS 上实现。" + +msgid "" +"Returns OS theme accent color. Returns [code]Color(0, 0, 0, 0)[/code], if " +"accent color is unknown.\n" +"[b]Note:[/b] This method is implemented on macOS and Windows." +msgstr "" +"返回操作系统主题强调色。如果强调色未知,则返回 [code]Color(0, 0, 0, 0)[/" +"code]。\n" +"[b]注意:[/b]这个方法在 macOS 和 Windows 上实现。" + +msgid "" +"Returns an [Array] of [Rect2], each of which is the bounding rectangle for a " +"display cutout or notch. These are non-functional areas on edge-to-edge " +"screens used by cameras and sensors. Returns an empty array if the device " +"does not have cutouts. See also [method get_display_safe_area].\n" +"[b]Note:[/b] Currently only implemented on Android. Other platforms will " +"return an empty array even if they do have display cutouts or notches." +msgstr "" +"返回 [Rect2] 的 [Array],其中每个都是显示切口或凹口的边界矩形。这些是相机和传" +"感器使用的无边框屏幕上的非功能区域。如果设备没有切口,则返回一个空数组。另请" +"参见 [method get_display_safe_area]。\n" +"[b]注意:[/b]目前仅在 Android 上实现。其他平台将返回一个空数组,即使它们确实" +"有显示切口或凹口。" + +msgid "" +"Returns the unobscured area of the display where interactive controls should " +"be rendered. See also [method get_display_cutouts]." +msgstr "" +"返回应渲染交互式控件的显示器的未遮挡区域。另请参见 [method " +"get_display_cutouts]。" + +msgid "" +"Returns the name of the [DisplayServer] currently in use. Most operating " +"systems only have a single [DisplayServer], but Linux has access to more " +"than one [DisplayServer] (although only X11 is currently implemented in " +"Godot).\n" +"The names of built-in display servers are [code]Windows[/code], [code]macOS[/" +"code], [code]X11[/code] (Linux), [code]Android[/code], [code]iOS[/code], " +"[code]web[/code] (HTML5) and [code]headless[/code] (when started with the " +"[code]--headless[/code] [url=$DOCS_URL/tutorials/editor/" +"command_line_tutorial.html]command line argument[/url])." +msgstr "" +"返回当前使用的 [DisplayServer] 的名称。大多数操作系统只有一种 " +"[DisplayServer],但 Linux 可以使用多种 [DisplayServer](尽管 Godot 中目前只实" +"现了 X11)。\n" +"内置显示服务器的名称有 [code]Windows[/code]、[code]macOS[/code]、[code]X11[/" +"code](Linux)、[code]Android[/code]、[code]iOS[/code]、[code]web[/code]" +"(HTML5)、[code]headless[/code](使用 [code]--headless[/code] " +"[url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]命令行参数[/url]启" +"动)。" + msgid "Returns index of the primary screen." msgstr "返回主屏幕的索引。" @@ -26476,6 +31576,328 @@ 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 and " +"UWP 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 和 UWP 上默认启用,从而遵循界面规范,可以使用 [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 " +"virtual desktop area. On multi-monitor setups with different screen " +"resolutions or orientations, the origin may be located outside any display " +"like this:\n" +"[codeblock]\n" +"* (0, 0) +-------+\n" +" | |\n" +"+-------------+ | |\n" +"| | | |\n" +"| | | |\n" +"+-------------+ +-------+\n" +"[/codeblock]" +msgstr "" +"返回位于指定屏幕位置 [param position] 的窗口 ID(单位为像素)。使用多个监视器" +"时,屏幕位置是相对于虚拟桌面区域的位置。如果多监视器中使用了不同的屏幕分辨率" +"或朝向,原点有可能位于所有显示器之外,类似于:\n" +"[codeblock]\n" +"* (0, 0) +-------+\n" +" | |\n" +"+-------------+ | |\n" +"| | | |\n" +"| | | |\n" +"+-------------+ +-------+\n" +"[/codeblock]" + +msgid "" +"Returns the list of Godot window IDs belonging to this process.\n" +"[b]Note:[/b] Native dialogs are not included in this list." +msgstr "" +"返回属于该进程的 Godot 窗口 ID 列表。\n" +"[b]注意:[/b]这个列表中不含原生对话框。" + +msgid "" +"Adds a new checkable item with text [param label] to the global menu with ID " +"[param menu_root].\n" +"Returns index of the inserted item, it's not guaranteed to be the same as " +"[param index] value.\n" +"An [param accelerator] can optionally be defined, which is a keyboard " +"shortcut that can be pressed to trigger the menu button even if it's not " +"currently open. The [param accelerator] is generally a combination of [enum " +"KeyModifierMask]s and [enum Key]s using bitwise OR such as " +"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n" +"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to " +"accept exactly one Variant parameter, the parameter passed to the Callables " +"will be the value passed to [param tag].\n" +"[b]Note:[/b] This method is implemented on macOS.\n" +"[b]Supported system menu IDs:[/b]\n" +"[codeblock]\n" +"\"_main\" - Main menu (macOS).\n" +"\"_dock\" - Dock popup menu (macOS).\n" +"[/codeblock]" +msgstr "" +"向 ID 为 [param menu_root] 的全局菜单添加新的可勾选菜单项,显示的文本为 " +"[param label]。\n" +"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n" +"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会" +"进行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] " +"用按位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + " +"A[/kbd])。\n" +"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 " +"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n" +"[b]注意:[/b]该方法在 macOS 上实现。\n" +"[b]支持的系统菜单 ID:[/b]\n" +"[codeblock]\n" +"\"_main\" - 主菜单(macOS)。\n" +"\"_dock\" - 程序坞弹出菜单(macOS)。\n" +"[/codeblock]" + +msgid "" +"Adds a new checkable item with text [param label] and icon [param icon] to " +"the global menu with ID [param menu_root].\n" +"Returns index of the inserted item, it's not guaranteed to be the same as " +"[param index] value.\n" +"An [param accelerator] can optionally be defined, which is a keyboard " +"shortcut that can be pressed to trigger the menu button even if it's not " +"currently open. The [param accelerator] is generally a combination of [enum " +"KeyModifierMask]s and [enum Key]s using bitwise OR such as " +"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n" +"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to " +"accept exactly one Variant parameter, the parameter passed to the Callables " +"will be the value passed to [param tag].\n" +"[b]Note:[/b] This method is implemented on macOS.\n" +"[b]Supported system menu IDs:[/b]\n" +"[codeblock]\n" +"\"_main\" - Main menu (macOS).\n" +"\"_dock\" - Dock popup menu (macOS).\n" +"[/codeblock]" +msgstr "" +"向 ID 为 [param menu_root] 的全局菜单添加新的可勾选菜单项,显示的文本为 " +"[param label],图标为 [param icon]。\n" +"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n" +"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会" +"进行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] " +"用按位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + " +"A[/kbd])。\n" +"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 " +"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n" +"[b]注意:[/b]该方法在 macOS 上实现。\n" +"[b]支持的系统菜单 ID:[/b]\n" +"[codeblock]\n" +"\"_main\" - 主菜单(macOS)。\n" +"\"_dock\" - 程序坞弹出菜单(macOS)。\n" +"[/codeblock]" + +msgid "" +"Adds a new item with text [param label] and icon [param icon] to the global " +"menu with ID [param menu_root].\n" +"Returns index of the inserted item, it's not guaranteed to be the same as " +"[param index] value.\n" +"An [param accelerator] can optionally be defined, which is a keyboard " +"shortcut that can be pressed to trigger the menu button even if it's not " +"currently open. The [param accelerator] is generally a combination of [enum " +"KeyModifierMask]s and [enum Key]s using bitwise OR such as " +"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n" +"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to " +"accept exactly one Variant parameter, the parameter passed to the Callables " +"will be the value passed to [param tag].\n" +"[b]Note:[/b] This method is implemented on macOS.\n" +"[b]Supported system menu IDs:[/b]\n" +"[codeblock]\n" +"\"_main\" - Main menu (macOS).\n" +"\"_dock\" - Dock popup menu (macOS).\n" +"[/codeblock]" +msgstr "" +"向 ID 为 [param menu_root] 的全局菜单添加新的菜单项,显示的文本为 [param " +"label],图标为 [param icon]。\n" +"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n" +"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会" +"进行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] " +"用按位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + " +"A[/kbd])。\n" +"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 " +"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n" +"[b]注意:[/b]该方法在 macOS 上实现。\n" +"[b]支持的系统菜单 ID:[/b]\n" +"[codeblock]\n" +"\"_main\" - 主菜单(macOS)。\n" +"\"_dock\" - 程序坞弹出菜单(macOS)。\n" +"[/codeblock]" + +msgid "" +"Adds a new radio-checkable item with text [param label] and icon [param " +"icon] to the global menu with ID [param menu_root].\n" +"Returns index of the inserted item, it's not guaranteed to be the same as " +"[param index] value.\n" +"An [param accelerator] can optionally be defined, which is a keyboard " +"shortcut that can be pressed to trigger the menu button even if it's not " +"currently open. The [param accelerator] is generally a combination of [enum " +"KeyModifierMask]s and [enum Key]s using bitwise OR such as " +"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n" +"[b]Note:[/b] Radio-checkable items just display a checkmark, but don't have " +"any built-in checking behavior and must be checked/unchecked manually. See " +"[method global_menu_set_item_checked] for more info on how to control it.\n" +"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to " +"accept exactly one Variant parameter, the parameter passed to the Callables " +"will be the value passed to [param tag].\n" +"[b]Note:[/b] This method is implemented on macOS.\n" +"[b]Supported system menu IDs:[/b]\n" +"[codeblock]\n" +"\"_main\" - Main menu (macOS).\n" +"\"_dock\" - Dock popup menu (macOS).\n" +"[/codeblock]" +msgstr "" +"向 ID 为 [param menu_root] 的全局菜单添加新的单选菜单项,显示的文本为 [param " +"label],图标为 [param icon]。\n" +"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n" +"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会" +"进行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] " +"用按位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + " +"A[/kbd])。\n" +"[b]注意:[/b]单选菜单项只负责显示选中标记,并没有任何内置检查行为,必须手动进" +"行选中、取消选中的操作。关于如何进行控制的更多信息见 [method " +"global_menu_set_item_checked]。\n" +"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 " +"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n" +"[b]注意:[/b]该方法在 macOS 上实现。\n" +"[b]支持的系统菜单 ID:[/b]\n" +"[codeblock]\n" +"\"_main\" - 主菜单(macOS)。\n" +"\"_dock\" - 程序坞弹出菜单(macOS)。\n" +"[/codeblock]" + +msgid "" +"Adds a new item with text [param label] to the global menu with ID [param " +"menu_root].\n" +"Returns index of the inserted item, it's not guaranteed to be the same as " +"[param index] value.\n" +"An [param accelerator] can optionally be defined, which is a keyboard " +"shortcut that can be pressed to trigger the menu button even if it's not " +"currently open. The [param accelerator] is generally a combination of [enum " +"KeyModifierMask]s and [enum Key]s using bitwise OR such as " +"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n" +"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to " +"accept exactly one Variant parameter, the parameter passed to the Callables " +"will be the value passed to [param tag].\n" +"[b]Note:[/b] This method is implemented on macOS.\n" +"[b]Supported system menu IDs:[/b]\n" +"[codeblock]\n" +"\"_main\" - Main menu (macOS).\n" +"\"_dock\" - Dock popup menu (macOS).\n" +"[/codeblock]" +msgstr "" +"向 ID 为 [param menu_root] 的全局菜单添加新的菜单项,显示的文本为 [param " +"label]。\n" +"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n" +"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会" +"进行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] " +"用按位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + " +"A[/kbd])。\n" +"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 " +"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n" +"[b]注意:[/b]该方法在 macOS 上实现。\n" +"[b]支持的系统菜单 ID:[/b]\n" +"[codeblock]\n" +"\"_main\" - 主菜单(macOS)。\n" +"\"_dock\" - 程序坞弹出菜单(macOS)。\n" +"[/codeblock]" + +msgid "" +"Adds a new item with text [param label] to the global menu with ID [param " +"menu_root].\n" +"Contrarily to normal binary items, multistate items can have more than two " +"states, as defined by [param max_states]. Each press or activate of the item " +"will increase the state by one. The default value is defined by [param " +"default_state].\n" +"Returns index of the inserted item, it's not guaranteed to be the same as " +"[param index] value.\n" +"An [param accelerator] can optionally be defined, which is a keyboard " +"shortcut that can be pressed to trigger the menu button even if it's not " +"currently open. The [param accelerator] is generally a combination of [enum " +"KeyModifierMask]s and [enum Key]s using bitwise OR such as " +"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n" +"[b]Note:[/b] By default, there's no indication of the current item state, it " +"should be changed manually.\n" +"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to " +"accept exactly one Variant parameter, the parameter passed to the Callables " +"will be the value passed to [param tag].\n" +"[b]Note:[/b] This method is implemented on macOS.\n" +"[b]Supported system menu IDs:[/b]\n" +"[codeblock]\n" +"\"_main\" - Main menu (macOS).\n" +"\"_dock\" - Dock popup menu (macOS).\n" +"[/codeblock]" +msgstr "" +"向 ID 为 [param menu_root] 的全局菜单添加新的菜单项,显示的文本为 [param " +"label]。\n" +"与常规的二态菜单项不同,多状态菜单项的状态可以多于两个,由 [param " +"max_states] 定义。每点击或激活该菜单项一次,状态就会加一。默认值由 [param " +"default_state] 定义。\n" +"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n" +"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会" +"进行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] " +"用按位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + " +"A[/kbd])。\n" +"[b]注意:[/b]默认情况下不会展示当前菜单项的状态,应该手动更改。\n" +"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 " +"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n" +"[b]注意:[/b]该方法在 macOS 上实现。\n" +"[b]支持的系统菜单 ID:[/b]\n" +"[codeblock]\n" +"\"_main\" - 主菜单(macOS)。\n" +"\"_dock\" - 程序坞弹出菜单(macOS)。\n" +"[/codeblock]" + +msgid "" +"Adds a new radio-checkable item with text [param label] to the global menu " +"with ID [param menu_root].\n" +"Returns index of the inserted item, it's not guaranteed to be the same as " +"[param index] value.\n" +"An [param accelerator] can optionally be defined, which is a keyboard " +"shortcut that can be pressed to trigger the menu button even if it's not " +"currently open. The [param accelerator] is generally a combination of [enum " +"KeyModifierMask]s and [enum Key]s using bitwise OR such as " +"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n" +"[b]Note:[/b] Radio-checkable items just display a checkmark, but don't have " +"any built-in checking behavior and must be checked/unchecked manually. See " +"[method global_menu_set_item_checked] for more info on how to control it.\n" +"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to " +"accept exactly one Variant parameter, the parameter passed to the Callables " +"will be the value passed to [param tag].\n" +"[b]Note:[/b] This method is implemented on macOS.\n" +"[b]Supported system menu IDs:[/b]\n" +"[codeblock]\n" +"\"_main\" - Main menu (macOS).\n" +"\"_dock\" - Dock popup menu (macOS).\n" +"[/codeblock]" +msgstr "" +"向 ID 为 [param menu_root] 的全局菜单添加新的单选菜单项,显示的文本为 [param " +"label]。\n" +"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n" +"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会" +"进行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] " +"用按位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + " +"A[/kbd])。\n" +"[b]注意:[/b]单选菜单项只负责显示选中标记,并没有任何内置检查行为,必须手动进" +"行选中、取消选中的操作。关于如何进行控制的更多信息见 [method " +"global_menu_set_item_checked]。\n" +"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 " +"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n" +"[b]注意:[/b]该方法在 macOS 上实现。\n" +"[b]支持的系统菜单 ID:[/b]\n" +"[codeblock]\n" +"\"_main\" - 主菜单(macOS)。\n" +"\"_dock\" - 程序坞弹出菜单(macOS)。\n" +"[/codeblock]" + +msgid "" "Adds a separator between items to the global menu with ID [param menu_root]. " "Separators also occupy an index.\n" "Returns index of the inserted item, it's not guaranteed to be the same as " @@ -26644,6 +32066,13 @@ msgstr "" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" +"Returns the tooltip associated with the specified index [param idx].\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回索引为 [param idx] 的菜单项所关联的工具提示。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" "Returns [code]true[/code] if the item at index [param idx] is checkable in " "some way, i.e. if it has a checkbox or radio button.\n" "[b]Note:[/b] This method is implemented on macOS." @@ -26694,6 +32123,31 @@ msgstr "" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" +"Sets the accelerator of the item at index [param idx]. [param keycode] can " +"be a single [enum Key], or a combination of [enum KeyModifierMask]s and " +"[enum Key]s using bitwise OR such as [code]KEY_MASK_CTRL | KEY_A[/code] " +"([kbd]Ctrl + A[/kbd]).\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"设置索引为 [param idx] 的菜单项的快捷键。[param keycode] 可以是单一 [enum " +"Key],也可以是 [enum KeyModifierMask] 和 [enum Key] 用按位或操作进行的组合," +"例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + A[/kbd])。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Sets the callback of the item at index [param idx]. Callback is emitted when " +"an item is pressed.\n" +"[b]Note:[/b] The [param callback] Callable needs to accept exactly one " +"Variant parameter, the parameter passed to the Callable will be the value " +"passed to the [code]tag[/code] parameter when the menu item was created.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"设置索引为 [param idx] 的菜单项的回调。回调会在按下菜单项时发出。\n" +"[b]注意:[/b][param callback] Callable 只接受一个 Variant 参数,传入 " +"Callable 的参数是创建菜单项时传给 [code]tag[/code] 参数的值。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" "Sets whether the item at index [param idx] has a checkbox. If [code]false[/" "code], sets the type of the item to plain text.\n" "[b]Note:[/b] This method is implemented on macOS." @@ -26735,6 +32189,19 @@ msgstr "" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" +"Sets the callback of the item at index [param idx]. Callback is emitted when " +"its accelerator is activated.\n" +"[b]Note:[/b] The [param key_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 on macOS." +msgstr "" +"设置索引为 [param idx] 的菜单项的回调。回调会在激活快捷键时发出。\n" +"[b]注意:[/b][param key_callback] Callable 只接受一个 Variant 参数,传入 " +"Callable 的参数是创建菜单项时传给 [code]tag[/code] 参数的值。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" "Sets number of state of an multistate item. See [method " "global_menu_add_multistate_item] for details.\n" "[b]Note:[/b] This method is implemented on macOS." @@ -26796,6 +32263,34 @@ msgstr "" "[b]注意:[/b]该方法在 macOS 上实现。" msgid "" +"Returns [code]true[/code] if the specified [param feature] is supported by " +"the current [DisplayServer], [code]false[/code] otherwise." +msgstr "" +"如果当前的 [DisplayServer] 支持指定的特性 [param feature],则返回 " +"[code]true[/code],否则返回 [code]false[/code]。" + +msgid "" +"Returns the text selection in the [url=https://en.wikipedia.org/wiki/" +"Input_method]Input Method Editor[/url] composition string, with the " +"[Vector2i]'s [code]x[/code] component being the caret position and [code]y[/" +"code] being the length of the selection.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回[url=https://zh.wikipedia.org/wiki/%E8%BE%93%E5%85%A5%E6%B3%95]输入法编辑" +"器[/url]编组字符串中选中的文本,[Vector2i] 的 [code]x[/code] 分量为光标的位" +"置,[code]y[/code] 则为所选项的长度。\n" +"[b]注意:[/b]这个方法在 macOS 上实现。" + +msgid "" +"Returns the composition string contained within the [url=https://en." +"wikipedia.org/wiki/Input_method]Input Method Editor[/url] window.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回[url=https://zh.wikipedia.org/wiki/%E8%BE%93%E5%85%A5%E6%B3%95]输入法编辑" +"器[/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 macOS, Windows and Linux (X11)." msgstr "" @@ -26863,6 +32358,15 @@ msgstr "" "设置激活的键盘布局。\n" "[b]注意:[/b]本方法在 Linux(X11)、macOS 和 Windows 上实现。" +msgid "" +"Returns the current state of mouse buttons (whether each button is pressed) " +"as a bitmask. If multiple mouse buttons are pressed at the same time, the " +"bits are added together. Equivalent to [method Input.get_mouse_button_mask]." +msgstr "" +"以位掩码的形式返回当前鼠标按键的状态(各个按钮是否处于按下状态)。如果同时按" +"下了多个按键,则会同时设置多个比特位。等价于 [method Input." +"get_mouse_button_mask]。" + msgid "Returns the current mouse mode. See also [method mouse_set_mode]." msgstr "返回当前的鼠标模式。另见 [method mouse_set_mode]。" @@ -26873,6 +32377,15 @@ msgid "Sets the current mouse mode. See also [method mouse_get_mode]." msgstr "设置当前的鼠标模式。另见 [method mouse_get_mode]。" msgid "" +"Perform window manager processing, including input flushing. See also " +"[method force_process_and_drop_events], [method Input.flush_buffered_events] " +"and [member Input.use_accumulated_input]." +msgstr "" +"执行窗口管理器处理,包括输入的清空。另见 [method " +"force_process_and_drop_events]、[method Input.flush_buffered_events]、" +"[member Input.use_accumulated_input]。" + +msgid "" "Returns the dots per inch density of the specified screen. If [param screen] " "is [constant SCREEN_OF_MAIN_WINDOW] (the default value), a screen with the " "main window will be used.\n" @@ -26907,6 +32420,54 @@ msgstr "" "持的平台上返回 [code]72[/code]。" msgid "" +"Returns the greatest scale factor of all screens.\n" +"[b]Note:[/b] On macOS returned value is [code]2.0[/code] if there is at " +"least one hiDPI (Retina) screen in the system, and [code]1.0[/code] in all " +"other cases.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回所有屏幕的最大缩放系数。\n" +"[b]注意:[/b]在 macOS 上,如果系统中至少有一个 hiDPI(Retina)屏幕,则返回值" +"为 [code]2.0[/code],其他情况下返回值为 [code]1.0[/code]。\n" +"[b]注意:[/b]此方法在 macOS 上实现。" + +msgid "" +"Returns the [param screen]'s current orientation. See also [method " +"screen_set_orientation].\n" +"[b]Note:[/b] This method is implemented on Android and iOS." +msgstr "" +"返回 [param screen] 的当前朝向。另见 [method screen_set_orientation]。\n" +"[b]注意:[/b]该方法在 Android 和 iOS 上实现。" + +msgid "" +"Returns the screen's top-left corner position in pixels. On multi-monitor " +"setups, the screen position is relative to the virtual desktop area. On " +"multi-monitor setups with different screen resolutions or orientations, the " +"origin may be located outside any display like this:\n" +"[codeblock]\n" +"* (0, 0) +-------+\n" +" | |\n" +"+-------------+ | |\n" +"| | | |\n" +"| | | |\n" +"+-------------+ +-------+\n" +"[/codeblock]\n" +"See also [method screen_get_size]." +msgstr "" +"返回屏幕左上角的位置,单位为像素。使用多个监视器时,屏幕位置是相对于虚拟桌面" +"区域的位置。如果多监视器中使用了不同的屏幕分辨率或朝向,原点有可能位于所有显" +"示器之外,类似于:\n" +"[codeblock]\n" +"* (0, 0) +-------+\n" +" | |\n" +"+-------------+ | |\n" +"| | | |\n" +"| | | |\n" +"+-------------+ +-------+\n" +"[/codeblock]\n" +"另见 [method screen_get_size]。" + +msgid "" "Returns the current refresh rate of the specified screen. If [param screen] " "is [constant SCREEN_OF_MAIN_WINDOW] (the default value), a screen with the " "main window will be used.\n" @@ -26934,6 +32495,45 @@ msgstr "" "[/codeblock]" msgid "" +"Returns the scale factor of the specified screen by index.\n" +"[b]Note:[/b] On macOS returned value is [code]2.0[/code] for hiDPI (Retina) " +"screen, and [code]1.0[/code] for all other cases.\n" +"[b]Note:[/b] This method is implemented on macOS." +msgstr "" +"返回按索引指定的屏幕的缩放系数。\n" +"[b]注意:[/b]在 macOS 上,对于 hiDPI (Retina) 屏幕,返回值为 [code]2.0[/" +"code];对于所有其他情况,返回值为 [code]1.0[/code]。\n" +"[b]注意:[/b]该方法在 macOS 上实现。" + +msgid "" +"Returns the screen's size in pixels. See also [method screen_get_position] " +"and [method screen_get_usable_rect]." +msgstr "" +"返回屏幕大小。单位:像素。另见 [method screen_get_position] 和 [method " +"screen_get_usable_rect]。" + +msgid "" +"Returns the portion of the screen that is not obstructed by a status bar in " +"pixels. See also [method screen_get_size]." +msgstr "" +"返回屏幕上没有被状态栏遮挡的部分,单位为像素。另见 [method screen_get_size]。" + +msgid "" +"Returns [code]true[/code] if the screen should never be turned off by the " +"operating system's power-saving measures. See also [method " +"screen_set_keep_on]." +msgstr "" +"如果操作系统的节电措施永远不会关闭屏幕,则返回 [code]true[/code]。另见 " +"[method screen_set_keep_on]。" + +msgid "" +"Sets whether the screen should never be turned off by the operating system's " +"power-saving measures. See also [method screen_is_kept_on]." +msgstr "" +"设置屏幕是否总是不会被操作系统的节能措施关闭。另见 [method " +"screen_is_kept_on]。" + +msgid "" "Sets the [param screen]'s [param orientation]. See also [method " "screen_get_orientation]." msgstr "" @@ -26941,6 +32541,30 @@ msgstr "" "screen_get_orientation]。" msgid "" +"Sets the window icon (usually displayed in the top-left corner) in the " +"operating system's [i]native[/i] format. The file at [param filename] must " +"be in [code].ico[/code] format on Windows or [code].icns[/code] on macOS. By " +"using specially crafted [code].ico[/code] or [code].icns[/code] icons, " +"[method set_native_icon] allows specifying different icons depending on the " +"size the icon is displayed at. This size is determined by the operating " +"system and user preferences (including the display scale factor). To use " +"icons in other formats, use [method set_icon] instead." +msgstr "" +"使用操作系统的[i]原生[/i]格式设置窗口图标(通常显示在左上角)。位于 [param " +"filename] 的文件在 Windows 上必须为 [code].ico[/code] 格式,在 macOS 上必须" +"为 [code].icns[/code] 格式。使用特制的 [code].ico[/code] 或 [code].icns[/" +"code] 图标,就能够让 [method set_native_icon] 指定以不同尺寸显示图标时显示不" +"同的图标。大小由操作系统和用户首选项决定(包括显示器缩放系数)。要使用其他格" +"式的图标,请改用 [method set_icon]。" + +msgid "" +"Returns current active tablet driver name.\n" +"[b]Note:[/b] This method is implemented on Windows." +msgstr "" +"返回当前活动的数位板驱动程序的名称。\n" +"[b]注意:[/b]该方法在 Windows 上实现。" + +msgid "" "Returns the total number of available tablet drivers.\n" "[b]Note:[/b] This method is implemented on Windows." msgstr "" @@ -26955,6 +32579,13 @@ msgstr "" "[b]注意:[/b]该方法在 Windows 上实现。" msgid "" +"Set active tablet driver name.\n" +"[b]Note:[/b] This method is implemented on Windows." +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" @@ -26971,7 +32602,7 @@ msgid "" "[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux (X11), " "macOS, and Windows." msgstr "" -"返回一个语音信息字典的 [Array]。\n" +"返回语音信息字典的 [Array]。\n" "每个 [Dictionary] 包含两个 [String] 条目:\n" "- [code]name[/code] 是语音名称。\n" "- [code]id[/code] 是语音标识符。\n" @@ -26983,8 +32614,105 @@ msgstr "" "和 MacOS 上,但并非安装在所有 Linux 发行版上。如果它们不存在,此方法将返回一" "个空列表。这适用于 Linux 上的 Godot 用户,以及在 Linux 上运行使用文本到语音" "的 Godot 游戏的最终用户。\n" -"[b]注意:[/b]该方法在 Android、iOS、Web、Linux(X11)、macOS 和 Windows 上实" -"现。" +"[b]注意:[/b]这个方法在 Android、iOS、Web、Linux(X11)、macOS 和 Windows 上" +"实现。" + +msgid "" +"Returns an [PackedStringArray] of voice identifiers for the [param " +"language].\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux (X11), " +"macOS, and Windows." +msgstr "" +"返回语言 [param language] 的语音标识符 [PackedStringArray]。\n" +"[b]注意:[/b]这个方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows " +"上实现。" + +msgid "" +"Returns [code]true[/code] if the synthesizer is in a paused state.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux (X11), " +"macOS, and Windows." +msgstr "" +"如果合成器处于暂停状态,则返回 [code]true[/code]。\n" +"[b]注意:[/b]这个方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows " +"上实现。" + +msgid "" +"Returns [code]true[/code] if the synthesizer is generating speech, or have " +"utterance waiting in the queue.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux (X11), " +"macOS, and Windows." +msgstr "" +"如果合成器正在生成语音,或者有发言正在队列中等待,则返回 [code]true[/" +"code]。\n" +"[b]注意:[/b]这个方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows " +"上实现。" + +msgid "" +"Puts the synthesizer into a paused state.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux (X11), " +"macOS, and Windows." +msgstr "" +"让合成器进入暂停状态。\n" +"[b]注意:[/b]这个方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows " +"上实现。" + +msgid "" +"Resumes the synthesizer if it was paused.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux (X11), " +"macOS, and Windows." +msgstr "" +"让处于暂停状态的合成器继续执行。\n" +"[b]注意:[/b]这个方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows " +"上实现。" + +msgid "" +"Adds an utterance to the queue. If [param interrupt] is [code]true[/code], " +"the queue is cleared first.\n" +"- [param voice] identifier is one of the [code]\"id\"[/code] values returned " +"by [method tts_get_voices] or one of the values returned by [method " +"tts_get_voices_for_language].\n" +"- [param volume] ranges from [code]0[/code] (lowest) to [code]100[/code] " +"(highest).\n" +"- [param pitch] ranges from [code]0.0[/code] (lowest) to [code]2.0[/code] " +"(highest), [code]1.0[/code] is default pitch for the current voice.\n" +"- [param rate] ranges from [code]0.1[/code] (lowest) to [code]10.0[/code] " +"(highest), [code]1.0[/code] is a normal speaking rate. Other values act as a " +"percentage relative.\n" +"- [param utterance_id] is passed as a parameter to the callback functions.\n" +"[b]Note:[/b] On Windows and Linux (X11), utterance [param text] can use SSML " +"markup. SSML support is engine and voice dependent. If the engine does not " +"support SSML, you should strip out all XML markup before calling [method " +"tts_speak].\n" +"[b]Note:[/b] The granularity of pitch, rate, and volume is engine and voice " +"dependent. Values may be truncated.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux (X11), " +"macOS, and Windows." +msgstr "" +"向队列中添加发言。如果 [param interrupt] 为 [code]true[/code],则会先清空队" +"列。\n" +"- [param voice] 语音标识符是 [method tts_get_voices] 所返回的 [code]\"id\"[/" +"code] 值,也可以是 [method tts_get_voices_for_language] 返回的值。\n" +"- [param volume] 音量从 [code]0[/code](最低)到 [code]100[/code](最高)。\n" +"- [param pitch] 音高从 [code]0.0[/code](最低)到 [code]2.0[/code](最高), " +"[code]1.0[/code] 为当前语音的默认音高。\n" +"- [param rate] 语速从 [code]0.1[/code](最低)到 [code]10.0[/code](最高), " +"[code]1.0[/code] 为普通语速。其他值为相对百分比。\n" +"- [param utterance_id] 话语 ID 会作为参数传递给回调函数。\n" +"[b]注意:[/b]在 Windows 和 Linux(X11)上,发言的 [param text] 可以使用 SSML " +"标记。对 SSML 支持取决于引擎和语音。如果引擎不支持 SSML,你应该在调用 " +"[method tts_speak] 之前剥离所有 XML 标记。\n" +"[b]注意:[/b]音高、语速、音量的颗粒度由引擎和语音决定。设置的值可能被截断。\n" +"[b]注意:[/b]这个方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows " +"上实现。" + +msgid "" +"Stops synthesis in progress and removes all utterances from the queue.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux (X11), " +"macOS, and Windows." +msgstr "" +"停止执行中的合成器,移除队列中的所有发言。\n" +"[b]注意:[/b]这个方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows " +"上实现。" msgid "" "Returns the on-screen keyboard's height in pixels. Returns 0 if there is no " @@ -27036,10 +32764,36 @@ msgstr "" "Android、iOS 和 Web 上无效。" msgid "" +"Returns [code]true[/code] if anything can be drawn in the window specified " +"by [param window_id], [code]false[/code] otherwise. Using the [code]--" +"disable-render-loop[/code] command line argument or a headless build will " +"return [code]false[/code]." +msgstr "" +"如果可以在 [param window_id] 指定的窗口中绘制任何内容,则返回 [code]true[/" +"code],否则返回 [code]false[/code]。使用 [code]--disable-render-loop[/code] " +"命令行参数或无头构建将返回 [code]false[/code]。" + +msgid "" "Returns ID of the active popup window, or [constant INVALID_WINDOW_ID] if " "there is none." msgstr "返回活动弹出窗口的 ID,如果没有则返回 [constant INVALID_WINDOW_ID]。" +msgid "" +"Returns the [method Object.get_instance_id] of the [Window] the [param " +"window_id] is attached to. also [method window_get_attached_instance_id]." +msgstr "" +"返回 [param window_id] 所连接的 [Window] 的 [method Object.get_instance_id]。" +"另见 [method window_get_attached_instance_id]。" + +msgid "" +"Returns the screen the window specified by [param window_id] is currently " +"positioned on. If the screen overlaps multiple displays, the screen where " +"the window's center is located is returned. See also [method " +"window_set_current_screen]." +msgstr "" +"该函数返回窗口 [param window_id] 所在的屏幕。如果屏幕跨越多个显示器,则返回窗" +"口中心所在的屏幕。另请参见 [method window_set_current_screen] 。" + msgid "Returns the current value of the given window's [param flag]." msgstr "返回给定窗口当前的 [param flag] 值。" @@ -27057,9 +32811,60 @@ msgid "Returns the mode of the given window." msgstr "返回给定窗口的模式。" msgid "" +"Returns internal structure pointers for use in plugins.\n" +"[b]Note:[/b] This method is implemented on Android, Linux (X11), macOS and " +"Windows." +msgstr "" +"该函数返回用于插件的内部结构指针。\n" +"[b]注意:[/b] 该方法在 Android、Linux(X11)、macOS 和 Windows 上实现。" + +msgid "" +"Returns the bounding box of control, or menu item that was used to open the " +"popup window, in the screen coordinate system." +msgstr "" +"该函数返回控件或菜单项在屏幕坐标系统中的边界框,这个控件或菜单项被用来打开弹" +"出窗口。" + +msgid "" "Returns the position of the client area of the given window on the screen." msgstr "返回屏幕上给定窗口的客户端区域位置。" +msgid "" +"Returns the position of the given window on the screen including the borders " +"drawn by the operating system. See also [method window_get_position]." +msgstr "" +"该函数返回给定窗口在屏幕上的位置,包括操作系统绘制的边框。另请参见 [method " +"window_get_position]。" + +msgid "" +"Returns left margins ([code]x[/code]), right margins ([code]y[/code]) and " +"height ([code]z[/code]) of the title that are safe to use (contains no " +"buttons or other elements) when [constant WINDOW_FLAG_EXTEND_TO_TITLE] flag " +"is set." +msgstr "" +"当设置了 [constant WINDOW_FLAG_EXTEND_TO_TITLE] 标志时,该函数返回标题左边距 " +"([code]x[/code])、右边距 ([code]y[/code]) 和高度 ([code]z[/code]),这些边距可" +"以安全地使用(不包含任何按钮或其他元素)。" + +msgid "" +"Returns the size of the window specified by [param window_id] (in pixels), " +"excluding the borders drawn by the operating system. This is also called the " +"\"client area\". See also [method window_get_size_with_decorations], [method " +"window_set_size] and [method window_get_position]." +msgstr "" +"返回窗口的大小(单位为像素),不包含操作系统绘制的边框,该窗口由 [param " +"window_id] 指定。这个区域也叫做“客户区域”。另见 [method " +"window_get_size_with_decorations]、[method window_set_size]、[method " +"window_get_position]。" + +msgid "" +"Returns the size of the window specified by [param window_id] (in pixels), " +"including the borders drawn by the operating system. See also [method " +"window_get_size]." +msgstr "" +"返回窗口的大小(单位为像素),包含操作系统绘制的边框,该窗口由 [param " +"window_id] 指定。另见 [method window_get_size]。" + msgid "Returns the V-Sync mode of the given window." msgstr "返回给定窗口的垂直同步模式。" @@ -27086,6 +32891,92 @@ msgstr "" "[b]注意:[/b]这个方法在 macOS 上实现。" msgid "" +"Moves the window specified by [param window_id] to the foreground, so that " +"it is visible over other windows." +msgstr "将由 [param window_id] 指定的窗口移动至前台,使其位于其他窗口之上。" + +msgid "" +"Makes the window specified by [param window_id] request attention, which is " +"materialized by the window title and taskbar entry blinking until the window " +"is focused. This usually has no visible effect if the window is currently " +"focused. The exact behavior varies depending on the operating system." +msgstr "" +"让由 [param window_id] 指定的窗口请求注意,该窗口获得焦点之前会闪烁窗口标题和" +"任务栏项目。如果该窗口目前持有焦点,则通常是没有可见效果的。实际的行为因操作" +"系统而异。" + +msgid "" +"Moves the window specified by [param window_id] to the specified [param " +"screen]. See also [method window_get_current_screen]." +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]Note:[/b] This method is implemented on Windows, macOS, Linux (X11) and " +"Web." +msgstr "" +"设置回调 [param callback],将文件从操作系统的文件管理器拖放到由 [param " +"window_id] 指定的窗口中时会进行调用。\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" +"[b]Note:[/b] On macOS, exclusive windows are confined to the same space " +"(virtual desktop or screen) as the parent window.\n" +"[b]Note:[/b] This method is implemented on macOS and Windows." +msgstr "" +"如果设置为 [code]true[/code],该窗口将始终位于其父窗口之上,父窗口将在该窗口" +"打开时忽略输入。\n" +"[b]注意:[/b]在 macOS 上,独占窗口被限制在与父窗口相同的空间(虚拟桌面或屏" +"幕)中。\n" +"[b]注意:[/b]该方法在 macOS 和 Windows 上实现。" + +msgid "" +"Enables or disables the given window's given [param flag]. See [enum " +"WindowFlags] for possible values and their behavior." +msgstr "" +"启用或禁用给定窗口的给定标志 [param flag]。可能的值和相应的行为见 [enum " +"WindowFlags]。" + +msgid "" +"Sets whether [url=https://en.wikipedia.org/wiki/Input_method]Input Method " +"Editor[/url] should be enabled for the window specified by [param " +"window_id]. See also [method window_set_ime_position]." +msgstr "" +"设置是否应该为窗口启用[url=https://zh.wikipedia.org/wiki/" +"%E8%BE%93%E5%85%A5%E6%B3%95]输入法编辑器[/url],该窗口由 [param window_id] 指" +"定。另见 [method window_set_ime_position]。" + +msgid "" +"Sets the position of the [url=https://en.wikipedia.org/wiki/" +"Input_method]Input Method Editor[/url] popup for the specified [param " +"window_id]. Only effective if [method window_set_ime_active] was set to " +"[code]true[/code] for the specified [param window_id]." +msgstr "" +"设置指定 [param window_id] 的[url=https://zh.wikipedia.org/wiki/" +"%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]." +msgstr "" +"设置回调 [param callback],向由 [param windows_id] 指定的窗口发送任何 " +"[InputEvent] 时会进行回调。" + +msgid "" +"Sets the [param callback] that should be called when text is entered using " +"the virtual keyboard to the window specified by [param window_id]." +msgstr "" +"设置回调 [param callback],使用虚拟键盘向由 [param windows_id] 指定的窗口输入" +"文本时会进行回调。" + +msgid "" "Sets the maximum size of the window specified by [param window_id] in " "pixels. Normally, the user will not be able to drag the window to make it " "smaller than the specified size. See also [method window_get_max_size].\n" @@ -27119,6 +33010,18 @@ msgstr "" "[b]注意:[/b]使用第三方工具,用户可以禁用窗口几何限制,从而绕过此限制。" msgid "" +"Sets window mode for the given window to [param mode]. See [enum WindowMode] " +"for possible values and how each mode behaves.\n" +"[b]Note:[/b] Setting the window to full screen forcibly sets the borderless " +"flag to [code]true[/code], so make sure to set it back to [code]false[/code] " +"when not wanted." +msgstr "" +"将给定窗口的窗口模式设置为 [param mode]。可能的值以及各个模式的行为见 [enum " +"WindowMode]。\n" +"[b]注意:[/b]将窗口设置为全屏会强制将无边框标志设为 [code]true[/code],所以不" +"再需要时请务必将其设回 [code]false[/code]。" + +msgid "" "Sets a polygonal region of the window which accepts mouse events. Mouse " "events outside the region will be passed through.\n" "Passing an empty array will disable passthrough support (all mouse events " @@ -27184,6 +33087,14 @@ msgstr "" "[b]注意:[/b]该方法在 Linux(X11)、macOS 和 Windows 上实现。" msgid "" +"Sets the bounding box of control, or menu item that was used to open the " +"popup window, in the screen coordinate system. Clicking this area will not " +"auto-close this popup." +msgstr "" +"设置用于打开弹出窗口的控件或菜单项的范围框,使用屏幕坐标系。在该区域中点击不" +"会自动关闭该弹出框。" + +msgid "" "Sets the position of the given window to [param position]. On multi-monitor " "setups, the screen position is relative to the virtual desktop area. On " "multi-monitor setups with different screen resolutions or orientations, the " @@ -27200,9 +33111,9 @@ msgid "" "[b]Note:[/b] It's recommended to change this value using [member Window." "position] instead." msgstr "" -"将给定窗口的位置设置为 [param position]。在多显示器设置中,屏幕位置是相对于虚" -"拟桌面区域的。在具有不同屏幕分辨率或方向的多显示器设置中,原点可能位于任何显" -"示器之外,如下所示:\n" +"将给定窗口的位置设置为 [param position]。使用多个监视器时,屏幕位置是相对于虚" +"拟桌面区域的位置。如果多监视器中使用了不同的屏幕分辨率或朝向,原点有可能位于" +"所有显示器之外,类似于:\n" "[codeblock]\n" "* (0, 0) +-------+\n" " | |\n" @@ -27215,6 +33126,13 @@ msgstr "" "[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." +msgstr "" +"设置回调 [param callback],由 [param windows_id] 指定的窗口发生移动或调整大小" +"时会进行回调。" + +msgid "" "Sets the size of the given window to [param size] (in pixels). See also " "[method window_get_size] and [method window_get_position].\n" "[b]Note:[/b] It's recommended to change this value using [member Window." @@ -27271,6 +33189,22 @@ msgstr "" "和 Mobile 渲染方式,不支持 Compatibility。" msgid "" +"When [constant WINDOW_FLAG_EXTEND_TO_TITLE] flag is set, set offset to the " +"center of the first titlebar button.\n" +"[b]Note:[/b] This flag is implemented on macOS." +msgstr "" +"当 [constant WINDOW_FLAG_EXTEND_TO_TITLE] 标志被设置时,将偏移设置为第一个标" +"题栏按钮的中心。\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]." +msgstr "" +"设置回调 [param callback],由 [param windows_id] 指定的窗口发生事件时会进行回" +"调。" + +msgid "" "Display server supports global menu. This allows the application to display " "its menu items in the operating system's top bar. [b]macOS[/b]" msgstr "" @@ -27297,6 +33231,14 @@ msgstr "" "显示服务器支持鼠标输入。[b]Windows、macOS、Linux(X11)、Android、Web[/b]" msgid "" +"Display server supports warping mouse coordinates to keep the mouse cursor " +"constrained within an area, but looping when one of the edges is reached. " +"[b]Windows, macOS, Linux (X11)[/b]" +msgstr "" +"显示服务器支持扭曲鼠标坐标以将鼠标光标限制在一个区域内,但在到达其中一个边缘" +"时循环。[b]Windows, macOS, Linux (X11)[/b]" + +msgid "" "Display server supports setting and getting clipboard data. See also " "[constant FEATURE_CLIPBOARD_PRIMARY]. [b]Windows, macOS, Linux (X11), " "Android, iOS, Web[/b]" @@ -27342,6 +33284,25 @@ msgstr "" "[b]Windows, macOS, Linux (X11)[/b]" msgid "" +"Display server supports windows can use per-pixel transparency to make " +"windows behind them partially or fully visible. [b]Windows, macOS, Linux " +"(X11)[/b]" +msgstr "" +"显示服务器支持窗口可以使用逐像素透明,以使它们后面的窗口部分或完全可见。" +"[b]Windows, macOS, Linux (X11)[/b]" + +msgid "" +"Display server supports querying the operating system's display scale " +"factor. This allows for [i]reliable[/i] automatic hiDPI display detection, " +"as opposed to guessing based on the screen resolution and reported display " +"DPI (which can be unreliable due to broken monitor EDID). [b]Windows, macOS[/" +"b]" +msgstr "" +"显示服务器支持查询操作系统的显示缩放系数。这允许[i]可靠地[/i]执行自动 hiDPI " +"显示器检测,而不是根据屏幕分辨率和报告的显示器 DPI 进行猜测(由于显示器 EDID " +"损坏,这可能不可靠)。[b]Windows, macOS[/b]" + +msgid "" "Display server supports changing the window icon (usually displayed in the " "top-left corner). [b]Windows, macOS, Linux (X11)[/b]" msgstr "" @@ -27357,6 +33318,35 @@ msgid "" "Display server supports changing the screen orientation. [b]Android, iOS[/b]" msgstr "显示服务器支持改变屏幕朝向。[b]Android、iOS[/b]" +msgid "" +"Display server supports V-Sync status can be changed from the default (which " +"is forced to be enabled platforms not supporting this feature). [b]Windows, " +"macOS, Linux (X11)[/b]" +msgstr "" +"显示服务器支持将垂直同步状态改为非默认状态(不支持此功能的平台强制启用垂直同" +"步)。[b]Windows、macOS、Linux(X11)[/b]" + +msgid "" +"Display server supports Primary clipboard can be used. This is a different " +"clipboard from [constant FEATURE_CLIPBOARD]. [b]Linux (X11)[/b]" +msgstr "" +"显示服务器支持使用主剪贴板。主剪贴板和 [constant FEATURE_CLIPBOARD] 是不同的" +"剪贴板。[b]Linux(X11)[/b]" + +msgid "" +"Display server supports text-to-speech. See [code]tts_*[/code] methods. " +"[b]Windows, macOS, Linux (X11), Android, iOS, Web[/b]" +msgstr "" +"显示服务器支持文字转语音。见 [code]tts_*[/code] 方法。[b]Windows、macOS、" +"Linux(X11)、Android、iOS、Web[/b]" + +msgid "" +"Display server supports expanding window content to the title. See [constant " +"WINDOW_FLAG_EXTEND_TO_TITLE]. [b]macOS[/b]" +msgstr "" +"显示服务器支持将窗口内容扩展到标题。见 [constant " +"WINDOW_FLAG_EXTEND_TO_TITLE]。[b]macOS[/b]" + msgid "Makes the mouse cursor visible if it is hidden." msgstr "如果鼠标光标处于隐藏状态,则使其可见。" @@ -27542,11 +33532,47 @@ msgstr "" "见 [constant CURSOR_HSPLIT]。" msgid "" +"Secondary diagonal resize cursor (top-right/bottom-left). Intended to be " +"displayed when the hovered [Control] can be resized on both axes at once " +"using the mouse." +msgstr "" +"辅助对角线尺寸调整光标(右上/左下)。只在但悬停的 [Control] 可以使用鼠标同时" +"在两个轴上调整大小时显示。" + +msgid "" +"Main diagonal resize cursor (top-left/bottom-right). Intended to be " +"displayed when the hovered [Control] can be resized on both axes at once " +"using the mouse." +msgstr "" +"主对角线尺寸调整光标(左上/右下)。只在当悬停的 [Control] 可以使用鼠标同时在" +"两个轴上调整大小时显示。" + +msgid "" "Move cursor. Intended to be displayed when the hovered [Control] can be " "moved using the mouse." msgstr "移动光标。应在能够使用鼠标移动被悬停 [Control] 时显示。" msgid "" +"Vertical split cursor. This is displayed when hovering a [Control] with " +"splits that can be vertically resized using the mouse, such as " +"[VSplitContainer]. On some cursor themes, this cursor may have the same " +"appearance as [constant CURSOR_VSIZE]." +msgstr "" +"垂直分割光标。当光标悬停于 [VSplitContainer] 等能够使用鼠标调整拆分的垂直大小" +"的 [Control] 时显示。部分光标主题中,该光标的外观和 [constant CURSOR_VSIZE] " +"一致。" + +msgid "" +"Horizontal split cursor. This is displayed when hovering a [Control] with " +"splits that can be horizontally resized using the mouse, such as " +"[HSplitContainer]. On some cursor themes, this cursor may have the same " +"appearance as [constant CURSOR_HSIZE]." +msgstr "" +"水平分割光标。当光标悬停于 [HSplitContainer] 等能够使用鼠标调整拆分的水平大小" +"的 [Control] 时显示。部分光标主题中,该光标的外观和 [constant CURSOR_HSIZE] " +"一致。" + +msgid "" "Help cursor. On most cursor themes, this displays a question mark icon " "instead of the mouse cursor. Intended to be used when the user has requested " "help on the next element that will be clicked." @@ -27593,14 +33619,103 @@ msgstr "" "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 cover the entire display area of a screen, have no border " +"or decorations. Display 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] 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 resizing by dragging its resize grip. It's still " +"possible to resize the window using [method window_set_size]. This flag is " +"ignored for full screen windows." +msgstr "" +"该窗口不能通过拖动其调整大小的手柄来调整大小。但仍然可以使用 [method " +"window_set_size] 调整窗口大小。全屏窗口会忽略该标志。" + +msgid "" "The window do not have native title bar and other decorations. This flag is " "ignored for full-screen windows." -msgstr "该窗口没有原生标题栏和其他装饰。全屏窗口会该标志。" +msgstr "该窗口没有原生标题栏和其他装饰。全屏窗口会忽略该标志。" msgid "" "The window is floating on top of all other windows. This flag is ignored for " "full-screen windows." -msgstr "该窗口悬浮在所有其他窗口之上。全屏窗口会该标志。" +msgstr "该窗口悬浮在所有其他窗口之上。全屏窗口会忽略该标志。" + +msgid "" +"The window background can be transparent.\n" +"[b]Note:[/b] This flag has no effect if [member ProjectSettings.display/" +"window/per_pixel_transparency/allowed] is set to [code]false[/code].\n" +"[b]Note:[/b] Transparency support is implemented on Linux (X11), macOS and " +"Windows, but availability might vary depending on GPU driver, display " +"manager, and compositor capabilities." +msgstr "" +"该窗口的背景可以是透明的。\n" +"[b]注意:[/b]如果 [member ProjectSettings.display/window/" +"per_pixel_transparency/allowed] 被设置为 [code]false[/code],则该标志无效。\n" +"[b]注意:[/b]透明度支持在 Linux(X11)、macOS 和 Windows 上实现,但可用性可能" +"因 GPU 驱动、显示管理器、和合成器功能而异。" + +msgid "" +"The window can't be focused. No-focus window will ignore all input, except " +"mouse clicks." +msgstr "该窗口无法获得焦点。无聚焦窗口会忽略除鼠标点击外的所有输入。" + +msgid "" +"Window is part of menu or [OptionButton] dropdown. This flag can't be " +"changed when the window is visible. An active popup window will exclusively " +"receive all input, without stealing focus from its parent. Popup windows are " +"automatically closed when uses click outside it, or when an application is " +"switched. Popup window must have [code]transient parent[/code] set (see " +"[method window_set_transient])." +msgstr "" +"窗口是菜单或 [OptionButton] 下拉菜单的一部分。当窗口可见时,不能更改该标志。" +"一个活动的弹出窗口将仅仅接收所有输入,而不会从其父窗口窃取焦点。当在其外部点" +"击或切换应用程序时,弹出窗口将会自动关闭。 弹出窗口必须已经设置了 " +"[code]transient parent[/code](参见 [method window_set_transient])。" + +msgid "" +"Window content is expanded to the full size of the window. Unlike borderless " +"window, the frame is left intact and can be used to resize the window, title " +"bar is transparent, but have minimize/maximize/close buttons.\n" +"Use [method window_set_window_buttons_offset] to adjust minimize/maximize/" +"close buttons offset.\n" +"Use [method window_get_safe_title_margins] to determine area under the title " +"bar that is not covered by decorations.\n" +"[b]Note:[/b] This flag is implemented on macOS." +msgstr "" +"窗口内容被扩展到窗口的全部大小。与无边框窗口不同,框架保持不变,可用于调整窗" +"口大小,标题栏是透明的,但具有最小化/最大化/关闭按钮。\n" +"使用 [method window_set_window_buttons_offset] 调整最小化/最大化/关闭按钮的偏" +"移量。\n" +"使用 [method window_get_safe_title_margins] 确定标题栏下方未被装饰覆盖的区" +"域。\n" +"[b]注意:[/b]该标志是在 macOS 上实现的。" + +msgid "" +"All mouse events are passed to the underlying window of the same application." +msgstr "所有鼠标事件都被传递到同一应用程序的底层窗口。" msgid "Max value of the [enum WindowFlags]." msgstr "[enum WindowFlags] 的最大值。" @@ -27628,6 +33743,87 @@ msgid "" msgstr "当该窗口失去焦点时发送,见 [method window_set_window_event_callback]。" msgid "" +"Sent when the user has attempted to close the window (e.g. close button is " +"pressed), see [method window_set_window_event_callback]." +msgstr "" +"当用户试图关闭该窗口时发送(例如按下关闭按钮),见 [method " +"window_set_window_event_callback]。" + +msgid "" +"Sent when the device \"Back\" button is pressed, see [method " +"window_set_window_event_callback].\n" +"[b]Note:[/b] This event is implemented on Android." +msgstr "" +"当按下设备的“后退”按钮时发送,见 [method " +"window_set_window_event_callback]。\n" +"[b]注意:[/b]该事件在 Android 上实现。" + +msgid "" +"Sent when the window is moved to the display with different DPI, or display " +"DPI is changed, see [method window_set_window_event_callback].\n" +"[b]Note:[/b] This flag is implemented on macOS." +msgstr "" +"当窗口被移动到具有不同 DPI 的显示器上,或者显示器的 DPI 更改时发送,参见 " +"[method window_set_window_event_callback]。\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), see [method window_set_window_event_callback].\n" +"[b]Note:[/b] This flag is implemented on macOS." +msgstr "" +"当窗口标题栏的装饰改变时(例如,[constant WINDOW_FLAG_EXTEND_TO_TITLE] 被设置" +"或窗口进入/退出全屏模式)发送,参见 [method " +"window_set_window_event_callback]。\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 " +"(nonwithstanding [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 (nonwithstanding [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 (nonwithstanding [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 (nonwithstanding [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" "- Android: [code]EGLDisplay[/code] for the display." @@ -27676,10 +33872,332 @@ msgstr "" "- MacOS:窗口的 [code]NSOpenGLContext*[/code]。\n" "- Android:窗口的 [code]EGLContext[/code]。" +msgid "Utterance has begun to be spoken." +msgstr "发言开始。" + +msgid "Utterance was successfully finished." +msgstr "发言顺利结束。" + +msgid "Utterance was canceled, or TTS service was unable to process it." +msgstr "发言取消,或者 TTS 服务无法处理。" + +msgid "Utterance reached a word or sentence boundary." +msgstr "发言到达单词或句子的边界。" + msgid "Helper class to implement a DTLS server." msgstr "实现 DTLS 服务器的辅助类。" msgid "" +"This class is used to store the state of a DTLS server. Upon [method setup] " +"it converts connected [PacketPeerUDP] to [PacketPeerDTLS] accepting them via " +"[method take_connection] as DTLS clients. Under the hood, this class is used " +"to store the DTLS state and cookies of the server. The reason of why the " +"state and cookies are needed is outside of the scope of this documentation.\n" +"Below a small example of how to use it:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# server_node.gd\n" +"extends Node\n" +"\n" +"var dtls := DTLSServer.new()\n" +"var server := UDPServer.new()\n" +"var peers = []\n" +"\n" +"func _ready():\n" +" server.listen(4242)\n" +" var key = load(\"key.key\") # Your private key.\n" +" var cert = load(\"cert.crt\") # Your X509 certificate.\n" +" dtls.setup(key, cert)\n" +"\n" +"func _process(delta):\n" +" while server.is_connection_available():\n" +" var peer: PacketPeerUDP = server.take_connection()\n" +" var dtls_peer: PacketPeerDTLS = dtls.take_connection(peer)\n" +" if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:\n" +" continue # It is normal that 50% of the connections fails due to " +"cookie exchange.\n" +" print(\"Peer connected!\")\n" +" peers.append(dtls_peer)\n" +"\n" +" for p in peers:\n" +" p.poll() # Must poll to update the state.\n" +" if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n" +" while p.get_available_packet_count() > 0:\n" +" print(\"Received message from client: %s\" % p.get_packet()." +"get_string_from_utf8())\n" +" p.put_packet(\"Hello DTLS client\".to_utf8())\n" +"[/gdscript]\n" +"[csharp]\n" +"// ServerNode.cs\n" +"using Godot;\n" +"\n" +"public partial class ServerNode : Node\n" +"{\n" +" private DtlsServer _dtls = new DtlsServer();\n" +" private UdpServer _server = new UdpServer();\n" +" private Godot.Collections.Array<PacketPeerDTLS> _peers = new Godot." +"Collections.Array<PacketPeerDTLS>();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _server.Listen(4242);\n" +" var key = GD.Load<CryptoKey>(\"key.key\"); // Your private key.\n" +" var cert = GD.Load<X509Certificate>(\"cert.crt\"); // Your X509 " +"certificate.\n" +" _dtls.Setup(key, cert);\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" while (Server.IsConnectionAvailable())\n" +" {\n" +" PacketPeerUDP peer = _server.TakeConnection();\n" +" PacketPeerDTLS dtlsPeer = _dtls.TakeConnection(peer);\n" +" if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking)\n" +" {\n" +" continue; // It is normal that 50% of the connections fails " +"due to cookie exchange.\n" +" }\n" +" GD.Print(\"Peer connected!\");\n" +" _peers.Add(dtlsPeer);\n" +" }\n" +"\n" +" foreach (var p in _peers)\n" +" {\n" +" p.Poll(); // Must poll to update the state.\n" +" if (p.GetStatus() == PacketPeerDtls.Status.Connected)\n" +" {\n" +" while (p.GetAvailablePacketCount() > 0)\n" +" {\n" +" GD.Print($\"Received Message From Client: {p.GetPacket()." +"GetStringFromUtf8()}\");\n" +" p.PutPacket(\"Hello DTLS Client\".ToUtf8());\n" +" }\n" +" }\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# client_node.gd\n" +"extends Node\n" +"\n" +"var dtls := PacketPeerDTLS.new()\n" +"var udp := PacketPeerUDP.new()\n" +"var connected = false\n" +"\n" +"func _ready():\n" +" udp.connect_to_host(\"127.0.0.1\", 4242)\n" +" dtls.connect_to_peer(udp, false) # Use true in production for " +"certificate validation!\n" +"\n" +"func _process(delta):\n" +" dtls.poll()\n" +" if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n" +" if !connected:\n" +" # Try to contact server\n" +" dtls.put_packet(\"The answer is... 42!\".to_utf8())\n" +" while dtls.get_available_packet_count() > 0:\n" +" print(\"Connected: %s\" % dtls.get_packet()." +"get_string_from_utf8())\n" +" connected = true\n" +"[/gdscript]\n" +"[csharp]\n" +"// ClientNode.cs\n" +"using Godot;\n" +"using System.Text;\n" +"\n" +"public partial class ClientNode : Node\n" +"{\n" +" private PacketPeerDtls _dtls = new PacketPeerDtls();\n" +" private PacketPeerUdp _udp = new PacketPeerUdp();\n" +" private bool _connected = false;\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n" +" _dtls.ConnectToPeer(_udp, validateCerts: false); // Use true in " +"production for certificate validation!\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" _dtls.Poll();\n" +" if (_dtls.GetStatus() == PacketPeerDtls.Status.Connected)\n" +" {\n" +" if (!_connected)\n" +" {\n" +" // Try to contact server\n" +" _dtls.PutPacket(\"The Answer Is..42!\".ToUtf8());\n" +" }\n" +" while (_dtls.GetAvailablePacketCount() > 0)\n" +" {\n" +" GD.Print($\"Connected: {_dtls.GetPacket()." +"GetStringFromUtf8()}\");\n" +" _connected = true;\n" +" }\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"该类用于存储 DTLS 服务器的状态。在 [method setup] 之后,它将连接的 " +"[PacketPeerUDP] 转换为 [PacketPeerDTLS],通过 [method take_connection] 接受它" +"们作为 DTLS 客户端。在底层,这个类用于存储服务器的 DTLS 状态和 cookie。为什么" +"需要状态和 cookie 的原因不在本文档的范围内。\n" +"下面是一个如何使用它的小例子:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# server_node.gd\n" +"extends Node\n" +"\n" +"var dtls := DTLSServer.new()\n" +"var server := UDPServer.new()\n" +"var peers = []\n" +"\n" +"func _ready():\n" +" server.listen(4242)\n" +" var key = load(\"key.key\") # 你的私钥。\n" +" var cert = load(\"cert.crt\") # 你的 X509 证书。\n" +" dtls.setup(key, cert)\n" +"\n" +"func _process(delta):\n" +" while server.is_connection_available():\n" +" var peer: PacketPeerUDP = server.take_connection()\n" +" var dtls_peer: PacketPeerDTLS = dtls.take_connection(peer)\n" +" if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:\n" +" continue # 由于 cookie 交换,50% 的连接会失败,这是正常现象。\n" +" print(\"对等体已连接!\")\n" +" peers.append(dtls_peer)\n" +"\n" +" for p in peers:\n" +" p.poll() # 必须轮询以更新状态。\n" +" if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n" +" while p.get_available_packet_count() > 0:\n" +" print(\"从客户端收到消息:%s\" % p.get_packet()." +"get_string_from_utf8())\n" +" p.put_packet(\"你好 DTLS 客户端\".to_utf8())\n" +"[/gdscript]\n" +"[csharp]\n" +"// ServerNode.cs\n" +"using Godot;\n" +"\n" +"public partial class ServerNode : Node\n" +"{\n" +" private DtlsServer _dtls = new DtlsServer();\n" +" private UdpServer _server = new UdpServer();\n" +" private Godot.Collections.Array<PacketPeerDTLS> _peers = new Godot." +"Collections.Array<PacketPeerDTLS>();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _server.Listen(4242);\n" +" var key = GD.Load<CryptoKey>(\"key.key\"); // 你的私钥。\n" +" var cert = GD.Load<X509Certificate>(\"cert.crt\"); // 你的 X509 证" +"书。\n" +" _dtls.Setup(key, cert);\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" while (Server.IsConnectionAvailable())\n" +" {\n" +" PacketPeerUDP peer = _server.TakeConnection();\n" +" PacketPeerDTLS dtlsPeer = _dtls.TakeConnection(peer);\n" +" if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking)\n" +" {\n" +" continue; // 由于 cookie 交换,50% 的连接会失败,这是正常现" +"象。\n" +" }\n" +" GD.Print(\"对等体已连接!\");\n" +" _peers.Add(dtlsPeer);\n" +" }\n" +"\n" +" foreach (var p in _peers)\n" +" {\n" +" p.Poll(); // 必须轮询以更新状态。\n" +" if (p.GetStatus() == PacketPeerDtls.Status.Connected)\n" +" {\n" +" while (p.GetAvailablePacketCount() > 0)\n" +" {\n" +" GD.Print($\"从客户端收到消息:{p.GetPacket()." +"GetStringFromUtf8()}\");\n" +" p.PutPacket(\"你好 DTLS 客户端\".ToUtf8());\n" +" }\n" +" }\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# client_node.gd\n" +"extends Node\n" +"\n" +"var dtls := PacketPeerDTLS.new()\n" +"var udp := PacketPeerUDP.new()\n" +"var connected = false\n" +"\n" +"func _ready():\n" +" udp.connect_to_host(\"127.0.0.1\", 4242)\n" +" dtls.connect_to_peer(udp, false) # 生产环境中请使用 true 进行证书校验!\n" +"\n" +"func _process(delta):\n" +" dtls.poll()\n" +" if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n" +" if !connected:\n" +" # 尝试联系服务器\n" +" dtls.put_packet(\"回应是… 42!\".to_utf8())\n" +" while dtls.get_available_packet_count() > 0:\n" +" print(\"已连接:%s\" % dtls.get_packet()." +"get_string_from_utf8())\n" +" connected = true\n" +"[/gdscript]\n" +"[csharp]\n" +"// ClientNode.cs\n" +"using Godot;\n" +"using System.Text;\n" +"\n" +"public partial class ClientNode : Node\n" +"{\n" +" private PacketPeerDtls _dtls = new PacketPeerDtls();\n" +" private PacketPeerUdp _udp = new PacketPeerUdp();\n" +" private bool _connected = false;\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n" +" _dtls.ConnectToPeer(_udp, validateCerts: false); // 生产环境中请使用 " +"true 进行证书校验!\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" _dtls.Poll();\n" +" if (_dtls.GetStatus() == PacketPeerDtls.Status.Connected)\n" +" {\n" +" if (!_connected)\n" +" {\n" +" // 尝试联系服务器\n" +" _dtls.PutPacket(\"回应是… 42!\".ToUtf8());\n" +" }\n" +" while (_dtls.GetAvailablePacketCount() > 0)\n" +" {\n" +" GD.Print($\"已连接:{_dtls.GetPacket()." +"GetStringFromUtf8()}\");\n" +" _connected = true;\n" +" }\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Setup the DTLS server to use the given [param server_options]. See [method " "TLSOptions.server]." msgstr "" @@ -27703,6 +34221,54 @@ 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 = get_editor_interface().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 = GetEditorInterface()." +"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 = get_editor_interface().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 = GetEditorInterface()." +"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 " "displayed to the user.)\n" @@ -27722,6 +34288,134 @@ msgstr "" "- [param shortcut_text]:[String]([b]Command[/b] 的快捷键文本,如果可用。)" msgid "" +"Removes the custom command from EditorCommandPalette.\n" +"- [param key_name]: [String] (Name of the key for a particular [b]Command[/" +"b].)" +msgstr "" +"从 EditorCommandPalette 中删除自定义命令。\n" +"- [param key_name]: [String] (特定 [b]Command[/b] 的键名)" + +msgid "A base class to implement debugger plugins." +msgstr "实现调试器插件的基类。" + +msgid "" +"[EditorDebuggerPlugin] provides functions related to the editor side of the " +"debugger.\n" +"To interact with the debugger, an instance of this class must be added to " +"the editor via [method EditorPlugin.add_debugger_plugin].\n" +"Once added, the [method _setup_session] callback will be called for every " +"[EditorDebuggerSession] available to the plugin, and when new ones are " +"created (the sessions may be inactive during this stage).\n" +"You can retrieve the available [EditorDebuggerSession]s via [method " +"get_sessions] or get a specific one via [method get_session].\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends EditorPlugin\n" +"\n" +"class ExampleEditorDebugger extends EditorDebuggerPlugin:\n" +"\n" +" func _has_capture(prefix):\n" +" # Return true if you wish to handle message with this prefix.\n" +" return prefix == \"my_plugin\"\n" +"\n" +" func _capture(message, data, session_id):\n" +" if message == \"my_plugin:ping\":\n" +" get_session(session_id).send_message(\"my_plugin:echo\", data)\n" +"\n" +" func _setup_session(session_id):\n" +" # Add a new tab in the debugger session UI containing a label.\n" +" var label = Label.new()\n" +" label.name = \"Example plugin\"\n" +" label.text = \"Example plugin\"\n" +" var session = get_session(session_id)\n" +" # Listens to the session started and stopped signals.\n" +" session.started.connect(func (): print(\"Session started\"))\n" +" session.stopped.connect(func (): print(\"Session stopped\"))\n" +" session.add_session_tab(label)\n" +"\n" +"var debugger = ExampleEditorDebugger.new()\n" +"\n" +"func _enter_tree():\n" +" add_debugger_plugin(debugger)\n" +"\n" +"func _exit_tree():\n" +" remove_debugger_plugin(debugger)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"编辑器调试器插件 [EditorDebuggerPlugin] 提供了与调试器的编辑器端相关的函" +"数。\n" +"要与调试器交互,必须将这个类的实例通过 [method EditorPlugin." +"add_debugger_plugin] 添加至编辑器。\n" +"添加完成后,会针对该插件可用的每一个编辑器调试器会话 [EditorDebuggerSession] " +"回调一次 [method _setup_session],后续有新的会话也会进行回调(这些会话在此阶" +"段可能尚未激活)。\n" +"你可以通过 [method get_sessions] 获取所有可用的 [EditorDebuggerSession],也可" +"以通过 [method get_session] 获取特定的会话。\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends EditorPlugin\n" +"\n" +"class ExampleEditorDebugger extends EditorDebuggerPlugin:\n" +"\n" +" func _has_capture(prefix):\n" +" # 如果想要处理带有这个前缀的消息则返回 true。\n" +" return prefix == \"my_plugin\"\n" +"\n" +" func _capture(message, data, session_id):\n" +" if message == \"my_plugin:ping\":\n" +" get_session(session_id).send_message(\"my_plugin:echo\", data)\n" +"\n" +" func _setup_session(session_id):\n" +" # 在调试器会话 UI 中添加新的选项卡,其中包含一个标签。\n" +" var label = Label.new()\n" +" label.name = \"Example plugin\"\n" +" label.text = \"示例插件\"\n" +" var session = get_session(session_id)\n" +" # 监听会话开始和停止信号。\n" +" session.started.connect(func (): print(\"会话已开始\"))\n" +" session.stopped.connect(func (): print(\"会话已停止\"))\n" +" session.add_session_tab(label)\n" +"\n" +"var debugger = ExampleEditorDebugger.new()\n" +"\n" +"func _enter_tree():\n" +" add_debugger_plugin(debugger)\n" +"\n" +"func _exit_tree():\n" +" remove_debugger_plugin(debugger)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Override this method to process incoming messages. The [param session_id] is " +"the ID of the [EditorDebuggerSession] that received the message (which you " +"can retrieve via [method get_session])." +msgstr "" +"重写此方法以处理传入的消息。[param session_id] 是接收到消息的 " +"[EditorDebuggerSession] 的 ID(你可以通过 [method get_session] 检索到它)。" + +msgid "" +"Override this method to enable receiving messages from the debugger. If " +"[param capture] is \"my_message\" then messages starting with \"my_message:" +"\" will be passes to the [method _capture] method." +msgstr "" +"重写此方法以启用从调试器接收消息。如果[param capture]是\"my_message\",那么以" +"\"my_message:\"开头的消息将会传递到[method _capture]方法。" + +msgid "" +"Override this method to be notified whenever a new [EditorDebuggerSession] " +"is created (the session may be inactive during this stage)." +msgstr "" +"重写此方法,以在创建新的[EditorDebuggerSession]时被通知(此阶段期间可能处于非" +"活动状态)。" + +msgid "Returns the [EditorDebuggerSession] with the given [param id]." +msgstr "返回具有给定 [param id] 的 [EditorDebuggerSession]。" + +msgid "" "Returns an array of [EditorDebuggerSession] currently available to this " "debugger plugin.\n" "Note: Not sessions in the array may be inactive, check their state via " @@ -27735,6 +34429,28 @@ msgid "A class to interact with the editor debugger." msgstr "与编辑器调试器交互的类。" msgid "" +"This class cannot be directly instantiated and must be retrieved via a " +"[EditorDebuggerPlugin].\n" +"You can add tabs to the session UI via [method add_session_tab], send " +"messages via [method send_message], and toggle [EngineProfiler]s via [method " +"toggle_profiler]." +msgstr "" +"这个类不能直接实例化,必须通过 [EditorDebuggerPlugin] 来获取。\n" +"通过 [method add_session_tab] 可以向会话 UI 添加标签,通过 [method " +"send_message] 可以发送消息,通过 [method toggle_profiler] 可以切换 " +"[EngineProfiler]。" + +msgid "" +"Adds the given [param control] to the debug session UI in the debugger " +"bottom panel." +msgstr "将给定的控件 [param control] 添加到底部调试器面板的调试会话 UI 中。" + +msgid "" +"Returns [code]true[/code] if the debug session is currently attached to a " +"remote instance." +msgstr "如果调试会话附加到了某个远程实例,则返回 [code]true[/code]。" + +msgid "" "Returns [code]true[/code] if the attached remote instance is currently in " "the debug loop." msgstr "如果附加的远程实例正处于调试循环中,则返回 [code]true[/code]。" @@ -27744,6 +34460,27 @@ msgid "" msgstr "如果附加的远程实例可以调试,则返回 [code]true[/code]。" msgid "" +"Removes the given [param control] from the debug session UI in the debugger " +"bottom panel." +msgstr "将给定的控件 [param control] 从底部调试器面板的调试会话 UI 中移除。" + +msgid "" +"Sends the given [param message] to the attached remote instance, optionally " +"passing additionally [param data]. See [EngineDebugger] for how to retrieve " +"those messages." +msgstr "" +"向原生实例发送给定的消息 [param message],还可以传入额外的数据 [param data]。" +"如何获取这些消息见 [EngineDebugger]。" + +msgid "" +"Toggle the given [param profiler] on the attached remote instance, " +"optionally passing additionally [param data]. See [EngineProfiler] for more " +"details." +msgstr "" +"在所附加的远程实例上开关给定的 [param profiler],还可以传入额外的数据 [param " +"data]。详见 [EngineProfiler]。" + +msgid "" "Emitted when the attached remote instance enters a break state. If [param " "can_debug] is [code]true[/code], the remote instance will enter the debug " "loop." @@ -27874,6 +34611,20 @@ msgid "" msgstr "可以被用户重写的虚方法。在导出完成后被调用。" msgid "" +"Virtual method to be overridden by the user. Called for each exported file, " +"providing arguments that can be used to identify the file. [param path] is " +"the path of the file, [param type] is the [Resource] represented by the file " +"(e.g. [PackedScene]) and [param features] is the list of features for the " +"export.\n" +"Calling [method skip] inside this callback will make the file not included " +"in the export." +msgstr "" +"虚方法,需要用户重写。对于每个导出的文件调用,提供可用于标识文件的参数。" +"[param path]是文件的路径,[param type]是文件所表示的[Resource](例如" +"[PackedScene]),[param features]是导出的特性列表。\n" +"在此回调中调用[method skip]将使文件不包含在导出中。" + +msgid "" "Return a hash based on the configuration passed (for both scenes and " "resources). This helps keep separate caches for separate export " "configurations.\n" @@ -27911,6 +34662,10 @@ msgstr "" "件将不会被导出,而是被重新映射到给定的 [param path]。" msgid "" +"Adds an iOS bundle file from the given [param path] to the exported project." +msgstr "将给定的[param path]中的iOS bundle文件添加到导出的项目中。" + +msgid "" "Adds a C++ code to the iOS export. The final code is created from the code " "appended by each active export plugin." msgstr "" @@ -27918,6 +34673,20 @@ msgstr "" "的。" 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 " +"[code]add_ios_framework[/code].\n" +"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),该方法的工作方式与[code]add_ios_framework[/" +"code]相同。\n" +"此方法不该用于系统库,因为它们已经存在于设备上。" + +msgid "" "Adds a static library (*.a) or dynamic library (*.dylib, *.framework) to " "Linking Phase in iOS's Xcode project." msgstr "" @@ -28209,6 +34978,19 @@ msgid "" msgstr "对话框的打开或保存模式,会影响选择行为。见 [enum FileMode]。" msgid "" +"The available file type filters. For example, this shows only [code].png[/" +"code] and [code].gd[/code] files: [code]set_filters(PackedStringArray([\"*." +"png ; PNG Images\",\"*.gd ; GDScript Files\"]))[/code]. Multiple file types " +"can also be specified in a single filter. [code]\"*.png, *.jpg, *.jpeg ; " +"Supported Images\"[/code] will show both PNG and JPEG files when selected." +msgstr "" +"可用的文件类型过滤器。例如,这样就只会显示 [code].png[/code] 和 [code].gd[/" +"code] 文件:[code]set_filters(PackedStringArray([\"*.png ; PNG Images\",\"*." +"gd ; GDScript Files\"]))[/code]。也可以在单个过滤器中指定多种文件类型。选中 " +"[code]\"*.png, *.jpg, *.jpeg ; 支持的图片\"[/code] 时,将同时显示 PNG 和 " +"JPEG 文件。" + +msgid "" "If [code]true[/code], hidden files and directories will be visible in the " "[EditorFileDialog]. This property is synchronized with [member " "EditorSettings.filesystem/file_dialog/show_hidden_files]." @@ -28296,12 +35078,33 @@ msgstr "" msgid "Gets the root directory object." msgstr "获取根目录对象。" +msgid "Returns a view into the filesystem at [param path]." +msgstr "返回在 [param path] 下文件系统的视图。" + msgid "Returns the scan progress for 0 to 1 if the FS is being scanned." msgstr "如果文件系统正在被扫描,返回扫描的进度,值为 0-1。" msgid "Returns [code]true[/code] if the filesystem is being scanned." msgstr "如果文件系统正在进行扫描,则返回 [code]true[/code]。" +msgid "" +"Reimports a set of files. Call this if these files or their [code].import[/" +"code] files were directly edited by script or an external program.\n" +"If the file type changed or the file was newly created, use [method " +"update_file] or [method scan].\n" +"[b]Note:[/b] This function blocks until the import is finished. However, the " +"main loop iteration, including timers and [method Node._process], will occur " +"during the import process due to progress bar updates. Avoid calls to " +"[method reimport_files] or [method scan] while an import is in progress." +msgstr "" +"重新导入一组文件。如果这些文件或其 [code].import[/code] 文件是由脚本或外部程" +"序直接编辑的,请调用此函数。\n" +"如果文件类型已更改或文件是新创建的,请使用 [method update_file] 或 [method " +"scan]。\n" +"[b]注意:[/b]此函数会阻塞,直到导入完成。但由于进度条更新,主循环迭代,包括计" +"时器和 [method Node._process],将在导入过程中发生。避免在导入正在进行时调用 " +"[method reimport_files] 或 [method scan]。" + msgid "Scan the filesystem for changes." msgstr "扫描文件系统的改动。" @@ -28366,6 +35169,14 @@ msgid "Returns the path to the file at index [param idx]." msgstr "返回索引 [param idx] 处的文件所在路径。" msgid "" +"Returns the base class of the script class defined in the file at index " +"[param idx]. If the file doesn't define a script class using the " +"[code]class_name[/code] syntax, this will return an empty string." +msgstr "" +"返回在索引 [param idx] 的文件中定义的脚本类的基类。如果该文件未使用 " +"[code]class_name[/code] 语法定义脚本类,则返回空字符串。" + +msgid "" "Returns the name of the script class defined in the file at index [param " "idx]. If the file doesn't define a script class using the [code]class_name[/" "code] syntax, this will return an empty string." @@ -28706,7 +35517,73 @@ msgstr "" "ResourceImporter.ImportOrder] 了解相关预定义的值。" msgid "Gets the unique name of the importer." -msgstr "获取导入者的唯一名称。" +msgstr "获取导入器的唯一名称。" + +msgid "" +"This method can be overridden to hide specific import options if conditions " +"are met. This is mainly useful for hiding options that depend on others if " +"one of them is disabled. For example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get_option_visibility(option, options):\n" +" # Only show the lossy quality setting if the compression mode is set to " +"\"Lossy\".\n" +" if option == \"compress/lossy_quality\" and options.has(\"compress/" +"mode\"):\n" +" return int(options[\"compress/mode\"]) == COMPRESS_LOSSY # This is a " +"constant that you set\n" +"\n" +" return true\n" +"[/gdscript]\n" +"[csharp]\n" +"public void GetOptionVisibility(string option, Godot.Collections.Dictionary " +"options)\n" +"{\n" +" // Only show the lossy quality setting if the compression mode is set to " +"\"Lossy\".\n" +" if (option == \"compress/lossyQuality\" && options.Contains(\"compress/" +"mode\"))\n" +" {\n" +" return (int)options[\"compress/mode\"] == COMPRESS_LOSSY; // This is " +"a constant you set\n" +" }\n" +"\n" +" return true;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Returns [code]true[/code] to make all options always visible." +msgstr "" +"可以重写此方法,以在满足条件时隐藏特定的导入选项。这主要用于当满足选项所依赖" +"的其他选项中有被禁用的选项时,隐藏该选项。例如:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get_option_visibility(option, options):\n" +" # 如果压缩模式设置为“Lossy”,则仅显示有损质量设置。\n" +" if option == \"compress/lossy_quality\" and options.has(\"compress/" +"mode\"):\n" +" return int(options[\"compress/mode\"]) == COMPRESS_LOSSY # 这是你设置" +"的常量\n" +"\n" +" return true\n" +"[/gdscript]\n" +"[csharp]\n" +"public void GetOptionVisibility(string option, Godot.Collections.Dictionary " +"options)\n" +"{\n" +" // 如果压缩模式设置为“Lossy”,则仅显示有损质量设置。\n" +" if (option == \"compress/lossyQuality\" && options.Contains(\"compress/" +"mode\"))\n" +" {\n" +" return (int)options[\"compress/mode\"] == COMPRESS_LOSSY; // 这是你设" +"置的常量\n" +" }\n" +"\n" +" return true;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"返回 [code]true[/code],会使所有选项始终可见。" msgid "" "Gets the number of initial presets defined by the plugin. Use [method " @@ -28768,6 +35645,29 @@ msgstr "" "[code]gen_files[/code] 数组。\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]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]generator_parameters[/code] 存储在 " +"[code].import[/code] 文件的 [code]remap[/code] 小节中,例如存储源数据的一个 " +"md5 散列值。" + msgid "A control used to edit properties of an object." msgstr "用于编辑对象属性的控件。" @@ -28946,6 +35846,18 @@ msgstr "" msgid "Adds a custom control, which is not necessarily a property editor." msgstr "添加自定义控件,它不一定是属性编辑器。" +msgid "" +"Adds a property editor for an individual property. The [param editor] " +"control must extend [EditorProperty]." +msgstr "" +"为单独的属性添加属性编辑器。[param editor] 控件必须扩展 [EditorProperty]。" + +msgid "" +"Adds an editor that allows modifying multiple properties. The [param editor] " +"control must extend [EditorProperty]." +msgstr "" +"添加能够修改多个属性的编辑器。[param editor] 控件必须扩展 [EditorProperty]。" + msgid "Godot editor's interface." msgstr "Godot 编辑器的界面。" @@ -29125,6 +36037,12 @@ msgstr "" "如果启用了指定的 [param plugin],则返回 [code]true[/code]。插件名称与其目录名" "称相同。" +msgid "" +"Returns mesh previews rendered at the given size as an [Array] of " +"[Texture2D]s." +msgstr "" +"将以给定大小渲染的网格预览返回为元素类型为 [Texture2D] 的一个 [Array]。" + msgid "Opens the scene at the given path." msgstr "打开给定路径中的场景。" @@ -29200,8 +36118,8 @@ msgid "" "gizmos, but for simple gizmos creating a [EditorNode3DGizmoPlugin] is " "usually recommended." msgstr "" -"小工具可用于为 Node3D 对象提供自定义可视化和编辑功能(手柄和子工具)。覆盖后" -"可以创建自定义小工具,但对于简单的小工具而言,通常建议创建 " +"小工具可用于为 Node3D 对象提供自定义可视化和编辑功能(控柄和子小工具)。可以" +"被重写以创建自定义小工具,但对于简单的小工具而言,通常建议创建 " "[EditorNode3DGizmoPlugin]。" msgid "" @@ -29214,13 +36132,13 @@ msgid "" "The [param secondary] argument is [code]true[/code] when the committed " "handle is secondary (see [method add_handles] for more information)." msgstr "" -"重写该方法以提交一个正在编辑的控柄(控柄必须是之前通过 [method add_handles] " -"添加的)。这通常意味着为该修改创建一个 [UndoRedo] 动作,将当前控柄值用" -"作“做”,并将 [param restore] 参数用作“撤销”。\n" +"重写该方法,以提交一个正在编辑的控柄(控柄必须是之前通过 [method " +"add_handles] 添加的)。这通常意味着为该修改创建一个 [UndoRedo] 动作,将当前控" +"柄值用作“做”,并将 [param restore] 参数用作“撤销”。\n" "如果 [param cancel] 参数为 [code]true[/code],则应直接设置 [param restore] " "值,而不需要任何 [UndoRedo] 动作。\n" -"当提交的控柄为次要时,[param secondary] 参数为 [code]true[/code](有关更多信" -"息,请参阅 [method add_handles])。" +"当提交的控柄为次要控柄时,[param secondary] 参数为 [code]true[/code](有关更" +"多信息,请参阅 [method add_handles])。" msgid "" "Override this method to commit a group of subgizmos being edited (see " @@ -29231,12 +36149,12 @@ msgid "" "If the [param cancel] argument is [code]true[/code], the [param restores] " "transforms should be directly set, without any [UndoRedo] action." msgstr "" -"重写该方法以提交一组正在编辑的子小工具(参见 [method " +"重写该方法,以提交一组正在编辑的子小工具(参见 [method " "_subgizmos_intersect_ray] 和 [method _subgizmos_intersect_frustum])。这通常" "意味着为该更改创建一个 [UndoRedo] 动作,将当前变换用作“做”,并将 [param " "restores] 变换用作“撤消”。\n" -"如果 [param cancel] 参数为 [code]true[/code],则应直接设置 [param restores] " -"变换,而无需任何 [UndoRedo] 动作。" +"如果 [param cancel] 参数为 [code]true[/code],则[param restores] 变换应被直接" +"设置 ,而无需任何 [UndoRedo] 动作。" msgid "" "Override this method to return the name of an edited handle (handles must " @@ -29245,9 +36163,9 @@ msgid "" "The [param secondary] argument is [code]true[/code] when the requested " "handle is secondary (see [method add_handles] for more information)." msgstr "" -"重写该方法以返回编辑的控柄的名称(控柄必须先前通过 [method add_handles] 添加" -"的)。可以命名控柄以供用户在编辑时引用。\n" -"当请求的控柄是次要手柄时,[param secondary] 参数为 [code]true[/code](有关更" +"重写该方法,以返回编辑的控柄的名称(控柄必须先前通过 [method add_handles] 添" +"加的)。可以命名控柄以供用户在编辑时引用。\n" +"当请求的控柄是次要控柄时,[param secondary] 参数为 [code]true[/code](有关更" "多信息,请参阅 [method add_handles])。" msgid "" @@ -29257,7 +36175,7 @@ msgid "" "The [param secondary] argument is [code]true[/code] when the requested " "handle is secondary (see [method add_handles] for more information)." msgstr "" -"重写该方法以返回一个控柄的当前值。该值将在编辑开始时被请求,并用作 [method " +"重写该方法,以返回一个控柄的当前值。该值将在编辑开始时被请求,并用作 [method " "_commit_handle] 中的 [code]restore[/code] 参数。\n" "当请求的控柄是次要控柄时,[param secondary] 参数为 [code]true[/code](有关更" "多信息,请参阅 [method add_handles])。" @@ -29267,20 +36185,121 @@ msgid "" "transform will be requested at the start of an edit and used as the " "[code]restore[/code] argument in [method _commit_subgizmos]." msgstr "" -"重写该方法以返回子小工具的当前变换。该变换将在编辑开始时被请求,并用作 " +"重写该方法,以返回子小工具的当前变换。该变换将在编辑开始时被请求,并用作 " "[method _commit_subgizmos] 中的 [code]restore[/code] 参数。" msgid "" +"Override this method to return [code]true[/code] whenever the given handle " +"should be highlighted in the editor.\n" +"The [param secondary] argument is [code]true[/code] when the requested " +"handle is secondary (see [method add_handles] for more information)." +msgstr "" +"重写该方法,只要给定的控柄应该在编辑器中被高亮显示时就返回 [code]true[/" +"code]。\n" +"当请求的控柄是次要控柄时,[param secondary] 参数为 [code]true[/code](有关更" +"多信息,请参阅 [method add_handles])。" + +msgid "" +"Override this method to add all the gizmo elements whenever a gizmo update " +"is requested. It's common to call [method clear] at the beginning of this " +"method and then add visual elements depending on the node's properties." +msgstr "" +"重写该方法,每当请求小工具更新时将添加所有小工具元素。通常在该方法的开头调用 " +"[method clear],然后根据节点的属性添加可视元素。" + +msgid "" +"Override this method to update the node properties when the user drags a " +"gizmo handle (previously added with [method add_handles]). The provided " +"[param point] is the mouse position in screen coordinates and the [param " +"camera] can be used to convert it to raycasts.\n" +"The [param secondary] argument is [code]true[/code] when the edited handle " +"is secondary (see [method add_handles] for more information)." +msgstr "" +"重写该方法,当用户拖动小工具控柄(之前使用 [method add_handles] 添加的)时更" +"新节点属性。提供的 [param point] 是屏幕坐标中的鼠标位置, [param camera] 可用" +"于将其转换为射线投射。\n" +"当编辑的控柄是次要控柄时,[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 " +"重写该方法,以在子小工具编辑期间更新节点属性(参见 [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 [code]Array[/code] with all the [code]Plane[/code]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] 参数由一个构成选择锥体的所有 [code]Plane[/code] 的 [code]Array[/" +"code] 组成。返回的值应该包含一个唯一的子小工具标识符列表,它可以有任何非负" +"值,并将用于其他虚方法,如 [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 return which subgizmo should be selected. The returned value should " +"be a unique subgizmo identifier, 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 point] 时,该方法应返回应选择哪个子小工具。返回值应该是一个唯一的子" +"小工具标识符,它可以有任何非负值,并将用于其他虚方法,如 [method " +"_get_subgizmo_transform] 或 [method _commit_subgizmos]。" + +msgid "" +"Adds the specified [param segments] to the gizmo's collision shape for " +"picking. Call this method during [method _redraw]." +msgstr "" +"将指定的 [param segments] 添加到小工具的碰撞形状以进行拾取。在 [method " +"_redraw] 期间调用该方法。" + +msgid "" +"Adds collision triangles to the gizmo for picking. A [TriangleMesh] can be " +"generated from a regular [Mesh] too. Call this method during [method " +"_redraw]." +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 [code]Array[/code] 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] 参数可用于" +"为每个控柄指定一个自定义的标识符,如果传递了一个空的 [code]Array[/code],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 " "_redraw]." @@ -29303,7 +36322,7 @@ msgstr "" msgid "" "Removes everything in the gizmo including meshes, collisions and handles." -msgstr "移除小工具中的一切,包括网格、碰撞和手柄。" +msgstr "移除小工具中的一切,包括网格、碰撞和控柄。" msgid "Returns the [Node3D] node associated with this gizmo." msgstr "返回与这个小工具关联的 [Node3D] 节点。" @@ -29316,6 +36335,20 @@ msgstr "" "EditorNode3DGizmoPlugin.get_material] 获取材质时使用。" msgid "" +"Returns a list of the currently selected subgizmos. Can be used to highlight " +"selected elements during [method _redraw]." +msgstr "" +"返回当前选定的子小工具的列表。可用于在 [method _redraw] 期间高亮显示所选元" +"素。" + +msgid "" +"Returns [code]true[/code] if the given subgizmo is currently selected. Can " +"be used to highlight selected elements during [method _redraw]." +msgstr "" +"如果给定的子小工具是当前所选定的,则返回 [code]true[/code]。可用于在 [method " +"_redraw] 期间高亮显示所选元素。" + +msgid "" "Sets the gizmo's hidden state. If [code]true[/code], the gizmo will be " "hidden. If [code]false[/code], it will be shown." msgstr "" @@ -29330,13 +36363,188 @@ msgstr "设置该小工具参考的 [Node3D] 节点。[parma node] 必须继承 msgid "Used by the editor to define Node3D gizmo types." msgstr "被编辑器用来定义 Node3D 小工具类型。" +msgid "" +"[EditorNode3DGizmoPlugin] allows you to define a new type of Gizmo. There " +"are two main ways to do so: extending [EditorNode3DGizmoPlugin] for the " +"simpler gizmos, or creating a new [EditorNode3DGizmo] type. See the tutorial " +"in the documentation for more info.\n" +"To use [EditorNode3DGizmoPlugin], register it using the [method EditorPlugin." +"add_node_3d_gizmo_plugin] method first." +msgstr "" +"[EditorNode3DGizmoPlugin] 允许定义一种新的小工具类型。定义主要有两种方法:比" +"较简单的小工具可以扩展 [EditorNode3DGizmoPlugin],否则可以创建新的 " +"[EditorNode3DGizmo] 类型。有关详细信息,请参阅文档中的教程。\n" +"要使用 [EditorNode3DGizmoPlugin],请先使用 [method EditorPlugin." +"add_node_3d_gizmo_plugin] 方法注册它。" + msgid "Node3D gizmo plugins" msgstr "Node3D 小工具插件" msgid "" +"Override this method to define whether the gizmos handled by this plugin can " +"be hidden or not. Returns [code]true[/code] if not overridden." +msgstr "" +"重写该方法,以定义是否可以隐藏该插件处理的小工具。如果未被重写,则返回 " +"[code]true[/code]。" + +msgid "" +"Override this method to commit a handle being edited (handles must have been " +"previously added by [method EditorNode3DGizmo.add_handles] during [method " +"_redraw]). This usually means creating an [UndoRedo] action for the change, " +"using the current handle value as \"do\" and the [param restore] argument as " +"\"undo\".\n" +"If the [param cancel] argument is [code]true[/code], the [param restore] " +"value should be directly set, without any [UndoRedo] action.\n" +"The [param secondary] argument is [code]true[/code] when the committed " +"handle is secondary (see [method EditorNode3DGizmo.add_handles] for more " +"information).\n" +"Called for this plugin's active gizmos." +msgstr "" +"重写该方法,以提交正在编辑的控柄(控柄必须是先前在 [method _redraw] 期间通过 " +"[method EditorNode3DGizmo.add_handles] 添加的)。这通常意味着为该更改创建一" +"个 [UndoRedo] 动作,将当前控柄值用作“做”,并将 [param restore] 参数用作“撤" +"销”。\n" +"如果 [param cancel] 参数为 [code]true[/code],则 [param restore] 值应被直接设" +"置,无需任何 [UndoRedo] 动作。\n" +"当提交的控柄为次要控柄时,[param secondary] 参数为 [code]true[/code](有关更" +"多信息,请参阅 [method EditorNode3DGizmo.add_handles])。\n" +"为该插件的活动小工具而调用。" + +msgid "" +"Override this method to commit a group of subgizmos being edited (see " +"[method _subgizmos_intersect_ray] and [method " +"_subgizmos_intersect_frustum]). This usually means creating an [UndoRedo] " +"action for the change, using the current transforms as \"do\" and the [param " +"restores] transforms as \"undo\".\n" +"If the [param cancel] argument is [code]true[/code], the [param restores] " +"transforms should be directly set, without any [UndoRedo] action. As with " +"all subgizmo methods, transforms are given in local space respect to the " +"gizmo's Node3D. Called for this plugin's active gizmos." +msgstr "" +"重写该方法,以提交一组正在编辑的子小工具(参见 [method " +"_subgizmos_intersect_ray] 和 [method _subgizmos_intersect_frustum])。这通常" +"意味着为该更改创建一个 [UndoRedo] 动作,将当前变换用作“做”,并将 [param " +"restores] 变换用作“撤消”。\n" +"如果 [param cancel] 参数为 [code]true[/code],则 [param restores] 变换应被直" +"接设置,无需任何 [UndoRedo] 动作。对于所有子小工具方法,变换是在与小工具的 " +"Node3D 相关的局部空间中给出的。为该插件的活动小工具而调用。" + +msgid "" +"Override this method to return a custom [EditorNode3DGizmo] for the spatial " +"nodes of your choice, return [code]null[/code] for the rest of nodes. See " +"also [method _has_gizmo]." +msgstr "" +"重写此方法,为选择的空间节点返回一个自定义的 [EditorNode3DGizmo],为其余节点" +"返回 [code]null[/code]。另见 [method _has_gizmo]。" + +msgid "" "Override this method to provide the name that will appear in the gizmo " "visibility menu." -msgstr "重写此方法以提供将出现在小工具可见性菜单中的名称。" +msgstr "重写该方法,以提供将出现在小工具可见性菜单中的名称。" + +msgid "" +"Override this method to provide gizmo's handle names. The [param secondary] " +"argument is [code]true[/code] when the requested handle is secondary (see " +"[method EditorNode3DGizmo.add_handles] for more information). Called for " +"this plugin's active gizmos." +msgstr "" +"重写该方法,以提供小工具的控柄名称。当请求的控柄是次要控柄时,[param " +"secondary] 参数为 [code]true[/code](有关更多信息,请参阅 [method " +"EditorNode3DGizmo.add_handles])。为该插件的活动小工具而调用。" + +msgid "" +"Override this method to return the current value of a handle. This value " +"will be requested at the start of an edit and used as the [code]restore[/" +"code] argument in [method _commit_handle].\n" +"The [param secondary] argument is [code]true[/code] when the requested " +"handle is secondary (see [method EditorNode3DGizmo.add_handles] for more " +"information).\n" +"Called for this plugin's active gizmos." +msgstr "" +"重写该方法,以返回一个控柄的当前值。该值将在编辑开始时被请求,并用作 [method " +"_commit_handle] 中的 [code]restore[/code] 参数。\n" +"当请求的控柄是次要控柄时,[param secondary] 参数为 [code]true[/code](有关更" +"多信息,请参阅 [method EditorNode3DGizmo.add_handles])。\n" +"为该插件的活动小工具而调用。" + +msgid "" +"Override this method to set the gizmo's priority. Gizmos with higher " +"priority will have precedence when processing inputs like handles or " +"subgizmos selection.\n" +"All built-in editor gizmos return a priority of [code]-1[/code]. If not " +"overridden, this method will return [code]0[/code], which means custom " +"gizmos will automatically get higher priority than built-in gizmos." +msgstr "" +"重写该方法,以设置该小工具的优先级。具有更高优先级的小工具,将在处理控柄或子" +"小工具选择等输入时具有优先权。\n" +"所有内置编辑器小工具都会返回 [code]-1[/code] 的优先级。如果未被重写,该方法将" +"返回 [code]0[/code],这意味着自定义小工具将自动获得比内置小工具更高的优先级。" + +msgid "" +"Override this method to return the current transform of a subgizmo. As with " +"all subgizmo methods, the transform should be in local space respect to the " +"gizmo's Node3D. This transform will be requested at the start of an edit and " +"used in the [code]restore[/code] argument in [method _commit_subgizmos]. " +"Called for this plugin's active gizmos." +msgstr "" +"重写该方法,以返回子小工具的当前变换。对于所有子小工具方法,变换应该在相对于" +"小工具的 Node3D 的局部空间中。此变换将在编辑开始时被请求,并在 [method " +"_commit_subgizmos] 中的 [code]restore[/code] 参数中使用。为该插件的活动小工具" +"而调用。" + +msgid "" +"Override this method to define which Node3D nodes have a gizmo from this " +"plugin. Whenever a [Node3D] node is added to a scene this method is called, " +"if it returns [code]true[/code] the node gets a generic [EditorNode3DGizmo] " +"assigned and is added to this plugin's list of active gizmos." +msgstr "" +"重写该方法,以定义哪些 Node3D 节点具有来自该插件的小工具。每当将 [Node3D] 节" +"点添加到场景时,该方法都会被调用,如果它返回 [code]true[/code],则该节点将被" +"分配一个通用的 [EditorNode3DGizmo],并被添加到该插件的活动小工具列表中。" + +msgid "" +"Override this method to return [code]true[/code] whenever to given handle " +"should be highlighted in the editor. The [param secondary] argument is " +"[code]true[/code] when the requested handle is secondary (see [method " +"EditorNode3DGizmo.add_handles] for more information). Called for this " +"plugin's active gizmos." +msgstr "" +"重写该方法,以在编辑器中高亮显示给定控柄时返回 [code]true[/code]。当请求的控" +"柄是次要控柄时,[param secondary] 参数为 [code]true[/code](有关更多信息,请" +"参阅 [method EditorNode3DGizmo.add_handles])。为该插件的活动小工具而调用。" + +msgid "" +"Override this method to define whether Node3D with this gizmo should be " +"selectable even when the gizmo is hidden." +msgstr "" +"重写该方法,以定义具有该小工具的 Node3D 是否应该是可选的,即使该小工具被隐" +"藏。" + +msgid "" +"Override this method to add all the gizmo elements whenever a gizmo update " +"is requested. It's common to call [method EditorNode3DGizmo.clear] at the " +"beginning of this method and then add visual elements depending on the " +"node's properties." +msgstr "" +"重写该方法,以在每当请求小工具更新时添加所有小工具元素。通常在该方法的开头调" +"用 [method EditorNode3DGizmo.clear],然后根据节点的属性添加可视元素。" + +msgid "" +"Override this method to update the node's properties when the user drags a " +"gizmo handle (previously added with [method EditorNode3DGizmo.add_handles]). " +"The provided [param screen_pos] is the mouse position in screen coordinates " +"and the [param camera] can be used to convert it to raycasts.\n" +"The [param secondary] argument is [code]true[/code] when the edited handle " +"is secondary (see [method EditorNode3DGizmo.add_handles] for more " +"information).\n" +"Called for this plugin's active gizmos." +msgstr "" +"重写该方法,以在用户拖动小工具控柄(控柄是之前使用 [method EditorNode3DGizmo." +"add_handles] 添加的)时更新节点的属性。提供的 [param screen_pos] 是屏幕坐标中" +"的鼠标位置, [param camera] 可用于将其转换为射线投射。\n" +"当编辑的控柄是次要控柄时,[param secondary] 参数为 [code]true[/code](有关更" +"多信息,请参阅 [method EditorNode3DGizmo.add_handles])。\n" +"为该插件的活动小工具而调用。" msgid "" "Override this method to update the node properties during subgizmo editing " @@ -29344,7 +36552,7 @@ msgid "" "_subgizmos_intersect_frustum]). The [param transform] is given in the " "Node3D's local coordinate system. Called for this plugin's active gizmos." msgstr "" -"覆盖该方法以在子小工具编辑期间更新节点属性(参见 [method " +"重写该方法,以在子小工具编辑期间更新节点属性(参见 [method " "_subgizmos_intersect_ray] 和 [method _subgizmos_intersect_frustum])。[param " "transform] 在 Node3D 的局部坐标系中给出。为该插件的活动小工具而调用。" @@ -29359,7 +36567,7 @@ msgid "" "[method _get_subgizmo_transform] or [method _commit_subgizmos]. Called for " "this plugin's active gizmos." msgstr "" -"覆盖该方法以允许使用鼠标拖动框选来选择子小工具。给定一个 [param camera] 和 " +"重写该方法,以允许使用鼠标拖动框选来选择子小工具。给定一个 [param camera] 和 " "[param frustum_planes],该方法应返回哪些子小工具包含在视锥体中。[param " "frustum_planes] 参数由一个构成选择视锥体的所有 [code]Plane[/code] 的" "[code]Array[/code] 组成。返回的值应该包含一个唯一的子小工具标识符列表,这些标" @@ -29368,17 +36576,95 @@ msgstr "" "而调用。" 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 " +"should return which subgizmo should be selected. The returned value should " +"be a unique subgizmo identifier, which 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 screen_pos] 时,该方法应返回应选择哪个子小工具。返回值应该是一个唯" +"一的子小工具标识符,它可以有任何非负值,并将用于其他虚方法,如 [method " +"_get_subgizmo_transform] 或 [method _commit_subgizmos]。为该插件的活动小工具" +"而调用。" + +msgid "" "Adds a new material to the internal material list for the plugin. It can " "then be accessed with [method get_material]. Should not be overridden." msgstr "" -"将新材质添加到插件的内部插件列表中。然后可以使用[method get_material]访问它。" -"不会该被覆盖。" +"将新材质添加到该插件的内部材质列表中。然后可以使用 [method get_material] 访问" +"它。不应被重写。" + +msgid "" +"Creates a handle material with its variants (selected and/or editable) and " +"adds them to the internal material list. They can then be accessed with " +"[method get_material] and used in [method EditorNode3DGizmo.add_handles]. " +"Should not be overridden.\n" +"You can optionally provide a texture to use instead of the default icon." +msgstr "" +"创建具有变体(选定的和/或可编辑的)的控柄材质,并将它们添加到内部材质列表中。" +"然后可以使用 [method get_material] 访问它们,并在 [method EditorNode3DGizmo." +"add_handles] 中使用它们。不应被重写。\n" +"可以选择提供一个要使用的纹理代替默认图标。" + +msgid "" +"Creates an icon material with its variants (selected and/or editable) and " +"adds them to the internal material list. They can then be accessed with " +"[method get_material] and used in [method EditorNode3DGizmo." +"add_unscaled_billboard]. Should not be overridden." +msgstr "" +"创建具有变体(选定的和/或可编辑的)的图标材质,并将它们添加到内部材质列表中。" +"然后可以使用 [method get_material] 访问它们,并在 [method EditorNode3DGizmo." +"add_unscaled_billboard] 中使用它们。不应被重写。" + +msgid "" +"Creates an unshaded material with its variants (selected and/or editable) " +"and adds them to the internal material list. They can then be accessed with " +"[method get_material] and used in [method EditorNode3DGizmo.add_mesh] and " +"[method EditorNode3DGizmo.add_lines]. Should not be overridden." +msgstr "" +"创建具有变体(选定的和/或可编辑的)的未着色材质,并将它们添加到内部材质列表" +"中。然后可以使用 [method get_material] 访问它们,并在 [method " +"EditorNode3DGizmo.add_mesh] 和 [method EditorNode3DGizmo.add_lines] 中使用。" +"不应被重写。" + +msgid "" +"Gets material from the internal list of materials. If an [EditorNode3DGizmo] " +"is provided, it will try to get the corresponding variant (selected and/or " +"editable)." +msgstr "" +"从内部材质列表中获取材质。如果提供了一个 [EditorNode3DGizmo],它将尝试获取相" +"应的变体(选定的和/或可编辑的)。" msgid "" "Editor-only singleton that returns paths to various OS-specific data folders " "and files." msgstr "编辑器专用单例,返回特定于操作系统的各种数据文件夹和文件的路径。" +msgid "" +"This editor-only singleton returns OS-specific paths to various data folders " +"and files. It can be used in editor plugins to ensure files are saved in the " +"correct location on each operating system.\n" +"[b]Note:[/b] This singleton is not accessible in exported projects. " +"Attempting to access it in an exported project will result in a script error " +"as the singleton won't be declared. To prevent script errors in exported " +"projects, use [method Engine.has_singleton] to check whether the singleton " +"is available before using it.\n" +"[b]Note:[/b] On the Linux/BSD platform, Godot complies with the [url=https://" +"specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html]XDG " +"Base Directory Specification[/url]. You can override environment variables " +"following the specification to change the editor and project data paths." +msgstr "" +"这个仅供编辑器使用的单例,可返回特定于操作系统的,到各种数据文件夹和文件的路" +"径。它可以在编辑器插件中使用,以确保文件被保存在各个操作系统的正确位置。\n" +"[b]注意:[/b]这个单例在导出的项目中是不可访问的。尝试在导出的项目中访问它会产" +"生脚本错误,因为该单例没有被声明。为防止导出项目中出现脚本错误,请使用 " +"[method Engine.has_singleton] 检查单例是否可用后再使用该单例。\n" +"[b]注意:[/b]在 Linux/BSD 平台上,Godot 遵守 [url=https://specifications." +"freedesktop.org/basedir-spec/basedir-spec-latest.html]XDG 基本目录规范[/" +"url]。可以按照规范覆盖环境变量,来更改编辑器和项目数据路径。" + msgid "File paths in Godot projects" msgstr "Godot 项目中的文件路径" @@ -29449,6 +36735,16 @@ msgstr "" "返回针对项目的编辑器设置路径。各个项目在设置路径中都有一个独立的子目录,用于" "保存针对项目的编辑器设置。" +msgid "" +"Returns the absolute path to the self-contained file that makes the current " +"Godot editor instance be considered as self-contained. Returns an empty " +"string if the current Godot editor instance isn't self-contained. See also " +"[method is_self_contained]." +msgstr "" +"返回自包含文件的绝对路径,该文件会使当前 Godot 编辑器实例被视为是自包含的。如" +"果当前 Godot 编辑器实例不是自包含的,则返回一个空字符串。另见 [method " +"is_self_contained]。" + msgid "Used by the editor to extend its functionality." msgstr "由编辑器使用,用于扩展其功能。" @@ -29458,8 +36754,8 @@ msgid "" "plugins and export plugins. See also [EditorScript] to add functions to the " "editor." msgstr "" -"编辑器使用插件来扩展功能。最常见的插件类型是编辑给定的节点或资源类型、导入插" -"件和导出插件。另请参阅 [EditorScript] 向编辑器添加函数。" +"编辑器使用插件来扩展功能。最常见的插件类型是编辑给定的节点或资源类型的插件、" +"导入插件和导出插件。另请参阅 [EditorScript] 以向编辑器添加功能。" msgid "Editor plugins documentation index" msgstr "编辑器插件文档索引" @@ -29471,17 +36767,29 @@ msgid "" "This is used, for example, in shader editors to let the plugin know that it " "must apply the shader code being written by the user to the object." msgstr "" -"当编辑器将进行要保存项目、切换选项卡等操作时,将调用此方法。它要求插件应用任" -"何暂挂状态更改以确保一致性。\n" +"当编辑器将要进行保存项目、切换选项卡等操作时,将调用该方法。它要求插件应用所" +"有暂挂的状态更改以确保一致性。\n" "例如,在着色器编辑器中使用它来使插件将用户编写的着色代码应用于对象。" msgid "" +"This method is called when the editor is about to run the project. The " +"plugin can then perform required operations before the project runs.\n" +"This method must return a boolean. If this method returns [code]false[/" +"code], the project will not run. The run is aborted immediately, so this " +"also prevents all other plugins' [method _build] methods from running." +msgstr "" +"该方法在编辑器即将运行项目时被调用。这样,插件可以在项目运行之前,执行所需的" +"操作。\n" +"该方法必须返回一个布尔值。如果该方法返回 [code]false[/code],则项目将不会运" +"行。运行会立即中止,因此这也会阻止运行所有其他插件的 [method _build] 方法。" + +msgid "" "Clear all the state and reset the object being edited to zero. This ensures " "your plugin does not keep editing a currently existing node, or a node from " "the wrong scene." msgstr "" -"清除所有状态,并将正在编辑的对象重置为零。这可以确保你的插件不会一直编辑一个" -"当前存在的节点,或者一个来自错误场景节点。" +"清除所有状态,并将正在编辑的对象重置为零。这可确保你的插件不会继续编辑当前存" +"在的节点或来自错误场景的节点。" msgid "" "Called by the engine when the user disables the [EditorPlugin] in the Plugin " @@ -29489,9 +36797,22 @@ msgid "" msgstr "当用户在项目设置窗口的插件选项卡中禁用 [EditorPlugin] 时,由引擎调用。" msgid "" +"This function is used for plugins that edit specific object types (nodes or " +"resources). It requests the editor to edit the given object.\n" +"[param object] can be [code]null[/code] if the plugin was editing an object, " +"but there is no longer any selected object handled by this plugin. It can be " +"used to cleanup editing state." +msgstr "" +"该函数用于编辑特定对象类型(节点或资源)的插件。它请求编辑器编辑给定的对" +"象。\n" +"如果该插件刚刚正在编辑一个对象,且它不想再处理任何选定的对象,则 [param " +"object] 可以为 [code]null[/code]。这可用于清理编辑状态。" + +msgid "" "Called by the engine when the user enables the [EditorPlugin] in the Plugin " "tab of the project settings window." -msgstr "当用户在项目设置窗口的插件选项卡中启用[EditorPlugin]时,由引擎调用。" +msgstr "" +"当用户在项目设置窗口的插件选项卡中启用该 [EditorPlugin] 时,由引擎调用。" msgid "" "Called by the engine when the 3D editor's viewport is updated. Use the " @@ -29532,8 +36853,8 @@ msgid "" "[/csharp]\n" "[/codeblocks]" msgstr "" -"当 3D 编辑器的视口更新时由引擎调用。使用 [code]overlay[/code] [Control] 进行" -"绘制。您可以通过调用 [method update_overlays] 手动更新视口。\n" +"当 3D 编辑器的视口更新时由引擎调用。将 [code]overlay[/code] [Control] 用于绘" +"制。可以通过调用 [method update_overlays] 手动更新该视口。\n" "[codeblocks]\n" "[gdscript]\n" "func _forward_3d_draw_over_viewport(overlay):\n" @@ -29570,6 +36891,17 @@ msgstr "" "[/codeblocks]" msgid "" +"This method is the same as [method _forward_3d_draw_over_viewport], except " +"it draws on top of everything. Useful when you need an extra layer that " +"shows over anything else.\n" +"You need to enable calling of this method by using [method " +"set_force_draw_over_forwarding_enabled]." +msgstr "" +"该方法与 [method _forward_3d_draw_over_viewport] 相同,只是它绘制在所有内容之" +"上。当需要一个显示在其他任何内容之上的额外图层时很有用。\n" +"需要使用 [method set_force_draw_over_forwarding_enabled] 来启用该方法的调用。" + +msgid "" "Called when there is a root node in the current edited scene, [method " "_handles] is implemented, and an [InputEvent] happens in the 3D viewport. " "The return value decides whether the [InputEvent] is consumed or forwarded " @@ -29611,9 +36943,9 @@ msgid "" "[/csharp]\n" "[/codeblocks]" msgstr "" -"在当前编辑的场景中有根节点时调用,实现 [method _handles] 并在3D视口中产生 " -"[InputEvent]。返回值决定 [InputEvent] 是被消费还是转发给其他 [EditorPlugin]。" -"有关选项,请参阅 [enum AfterGUIInput]。\n" +"在当前编辑的场景中有根节点时调用,实现 [method _handles] 并在 3D 视口中产生 " +"[InputEvent]。返回值决定 [InputEvent] 是被消费还是被转发给其他 " +"[EditorPlugin]。有关选项,请参阅 [enum AfterGUIInput]。\n" "[b]示例:[/b]\n" "[codeblocks]\n" "[gdscript]\n" @@ -29691,8 +37023,8 @@ msgid "" "[/csharp]\n" "[/codeblocks]" msgstr "" -"当 2D 编辑器的视口更新时由引擎调用。使用 [code]overlay[/code] [Control] 进行" -"绘制。您可以通过调用 [method update_overlays] 手动更新视口。\n" +"当 2D 编辑器的视口更新时由引擎调用。将 [code]overlay[/code] [Control] 用于绘" +"制。可以通过调用 [method update_overlays] 手动更新该视口。\n" "[codeblocks]\n" "[gdscript]\n" "func _forward_canvas_draw_over_viewport(overlay):\n" @@ -29730,6 +37062,17 @@ msgstr "" "[/codeblocks]" msgid "" +"This method is the same as [method _forward_canvas_draw_over_viewport], " +"except it draws on top of everything. Useful when you need an extra layer " +"that shows over anything else.\n" +"You need to enable calling of this method by using [method " +"set_force_draw_over_forwarding_enabled]." +msgstr "" +"该方法与 [method _forward_canvas_draw_over_viewport] 相同,只是它绘制在所有内" +"容之上。当需要一个显示在其他任何内容之上的额外图层时很有用。\n" +"需要使用 [method set_force_draw_over_forwarding_enabled] 来启用该方法的调用。" + +msgid "" "Called when there is a root node in the current edited scene, [method " "_handles] is implemented and an [InputEvent] happens in the 2D viewport. " "Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] " @@ -29774,10 +37117,9 @@ msgid "" "[/csharp]\n" "[/codeblocks]" msgstr "" -"在当前编辑的场景中有根节点时调用,实现 [method _handles] 并在2D视口中产生 " -"[InputEvent]。拦截 [InputEvent],如果 [code]return true[/code] " -"[EditorPlugin] 消耗 [param event],否则将 [param event] 转发给其他编辑器" -"类。\n" +"在当前编辑的场景中有根节点时调用,实现 [method _handles] 并在 2D 视口中产生 " +"[InputEvent]。如果 [code]return true[/code] [EditorPlugin] 消耗 [param " +"event],则拦截该 [InputEvent];否则将 [param event] 转发给其他编辑器类。\n" "[b]示例:[/b]\n" "[codeblocks]\n" "[gdscript]\n" @@ -29821,8 +37163,8 @@ msgid "" "breakpoints in the format ([code]script:line[/code]), for example: " "[code]res://path_to_script.gd:25[/code]." msgstr "" -"这是为编辑基于脚本的对象的编辑器。您可以返回格式中的断点列表([code]script:" -"line[/code]),例如:[code]res://path_to_script.gd:25[/code]。" +"该函数用于编辑基于脚本的对象的编辑器。可以返回格式为([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 " @@ -29853,7 +37195,7 @@ msgid "" "[/csharp]\n" "[/codeblocks]" msgstr "" -"在您的插件中覆盖该方法以返回一个 [Texture2D] 以便为插件提供一个图标。\n" +"在插件中重写该方法,以返回一个 [Texture2D] 以便为插件提供一个图标。\n" "对于主界面插件,它出现在屏幕顶部,“2D”、“3D”、“脚本”和 “AssetLib” 按钮的右" "侧。\n" "理想情况下,插件图标应为透明背景的白色,大小为 16x16 像素。\n" @@ -29885,17 +37227,152 @@ msgid "" "For main screen plugins, this appears at the top of the screen, to the right " "of the \"2D\", \"3D\", \"Script\", and \"AssetLib\" buttons." msgstr "" -"在 Godot 编辑器中显示时,请在插件中覆盖此方法以提供插件的名称。\n" +"在插件中重写该方法,以在 Godot 编辑器中显示时提供该插件的名称。\n" "对于主屏幕插件,它显示在屏幕顶部,在“2D”“3D”“脚本”“AssetLib”按钮的右侧。" msgid "" +"Override this method to provide a state data you want to be saved, like view " +"position, grid settings, folding, etc. This is used when saving the scene " +"(so state is kept when opening it again) and for switching tabs (so state " +"can be restored when the tab returns). This data is automatically saved for " +"each scene in an [code]editstate[/code] file in the editor metadata folder. " +"If you want to store global (scene-independent) editor data for your plugin, " +"you can use [method _get_window_layout] instead.\n" +"Use [method _set_state] to restore your saved state.\n" +"[b]Note:[/b] This method should not be used to save important settings that " +"should persist with the project.\n" +"[b]Note:[/b] You must implement [method _get_plugin_name] for the state to " +"be stored and restored correctly.\n" +"[codeblock]\n" +"func _get_state():\n" +" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n" +" return state\n" +"[/codeblock]" +msgstr "" +"重写该方法,以提供要保存的状态数据,如视图位置、网格设置、折叠等。这可用于保" +"存场景(再次打开时,保持状态)和切换选项卡( 选项卡返回时,可以恢复状态)。每" +"个场景的数据会自动被保存在编辑器元数据文件夹中的 [code]editstate[/code] 文件" +"中。如果想为插件存储全局的(独立于场景的)编辑器数据,可以改用 [method " +"_get_window_layout]。\n" +"使用 [method _set_state] 恢复保存的状态。\n" +"[b]注意:[/b]此方法不应该用于保存应随项目保留的重要设置。\n" +"[b]注意:[/b]必须实现 [method _get_plugin_name],才能正确存储和恢复状态。\n" +"[codeblock]\n" +"func _get_state():\n" +" var state = {\"zoom\": zoom, \"preferred_color\": my_color}\n" +" return state\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 " +"when [method queue_save_layout] is called or the editor layout was changed " +"(for example changing the position of a dock). The data is stored in the " +"[code]editor_layout.cfg[/code] file in the editor metadata directory.\n" +"Use [method _set_window_layout] to restore your saved layout.\n" +"[codeblock]\n" +"func _get_window_layout(configuration):\n" +" configuration.set_value(\"MyPlugin\", \"window_position\", $Window." +"position)\n" +" configuration.set_value(\"MyPlugin\", \"icon_color\", $Icon.modulate)\n" +"[/codeblock]" +msgstr "" +"重写该方法,以提供该插件的 GUI 布局、或想要存储的任何其他数据。这用于在调用 " +"[method queue_save_layout]、或更改编辑器布局(例如更改停靠面板的位置)时,保" +"存项目的编辑器布局。数据被存储在编辑器元数据目录中的 [code]editor_layout." +"cfg[/code] 文件中。\n" +"使用 [method _set_window_layout] 恢复保存的布局。\n" +"[codeblock]\n" +"func _get_window_layout(configuration):\n" +" configuration.set_value(\"MyPlugin\", \"window_position\", $Window." +"position)\n" +" 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." +msgstr "" +"如果插件会编辑特定类型的对象(资源或节点),则请实现该函数。如果返回 " +"[code]true[/code],则将在编辑器请求时,调用函数 [method _edit] 和 [method " +"_make_visible]。如果已经声明了方法 [method _forward_canvas_gui_input] 和 " +"[method _forward_3d_gui_input],则它们也会被调用。" + +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" +" get_editor_interface().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 get_editor_interface().get_base_control()." +"get_theme_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" +" get_editor_interface().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 get_editor_interface().get_base_control()." +"get_theme_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" "Remember that you have to manage the visibility of all your editor controls " "manually." msgstr "" "当编辑器被要求变为可见时,该函数将被调用。它用于编辑特定对象类型的插件。\n" -"记住,你必须手动管理所有编辑器控件的可见性。" +"请记住,你必须手动管理所有编辑器控件的可见性。" msgid "" "This method is called after the editor saves the project or when it's " @@ -29904,6 +37381,50 @@ msgstr "" "这个方法在编辑器保存项目后或关闭项目时被调用,它要求插件保存编辑的外部场景/资" "源。" +msgid "" +"Restore the state saved by [method _get_state]. This method is called when " +"the current scene tab is changed in the editor.\n" +"[b]Note:[/b] Your plugin must implement [method _get_plugin_name], otherwise " +"it will not be recognized and this method will not be called.\n" +"[codeblock]\n" +"func _set_state(data):\n" +" zoom = data.get(\"zoom\", 1.0)\n" +" preferred_color = data.get(\"my_color\", Color.WHITE)\n" +"[/codeblock]" +msgstr "" +"恢复用 [method _get_state] 保存的状态。这个方法会在编辑器的当前场景选项卡发生" +"改变时调用。\n" +"[b]注意:[/b]你的插件必须实现 [method _get_plugin_name],否则无法被识别,这个" +"方法也不会被调用。\n" +"[codeblock]\n" +"func _set_state(data):\n" +" zoom = data.get(\"zoom\", 1.0)\n" +" preferred_color = data.get(\"my_color\", Color.WHITE)\n" +"[/codeblock]" + +msgid "" +"Restore the plugin GUI layout and data saved by [method _get_window_layout]. " +"This method is called for every plugin on editor startup. Use the provided " +"[param configuration] file to read your saved data.\n" +"[codeblock]\n" +"func _set_window_layout(configuration):\n" +" $Window.position = configuration.get_value(\"MyPlugin\", " +"\"window_position\", Vector2())\n" +" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", " +"Color.WHITE)\n" +"[/codeblock]" +msgstr "" +"恢复用 [method _get_window_layout] 保存的插件 GUI 布局和数据。编辑器启动时会" +"调用每个插件的这个方法。请使用提供的 [param configuration] 文件读取你保存的数" +"据。\n" +"[codeblock]\n" +"func _set_window_layout(configuration):\n" +" $Window.position = configuration.get_value(\"MyPlugin\", " +"\"window_position\", Vector2())\n" +" $Icon.modulate = configuration.get_value(\"MyPlugin\", \"icon_color\", " +"Color.WHITE)\n" +"[/codeblock]" + msgid "Adds a script at [param path] to the Autoload list as [param name]." msgstr "将 [param path] 处的脚本作为 [param name] 添加到自动加载列表中。" @@ -29914,8 +37435,8 @@ msgid "" "your custom control with [method remove_control_from_bottom_panel] and free " "it with [method Node.queue_free]." msgstr "" -"将控件添加到底部面板(包含“输出”“调试”“动画”等)。返回对添加的按钮的引用。您" -"可以根据需要隐藏/显示按钮。停用插件后,请确保使用 [method " +"将控件添加到底部面板(包含“输出”“调试”“动画”等)。返回对添加的按钮的引用。可" +"以根据需要隐藏/显示按钮。停用插件后,请确保使用 [method " "remove_control_from_bottom_panel] 移除自定义控件,并使用 [method Node." "queue_free] 将其释放。" @@ -29931,9 +37452,9 @@ msgid "" msgstr "" "将自定义控件添加到容器中(见 [enum CustomControlContainer])。在编辑器用户界" "面中,有许多位置可以添加自定义控件。\n" -"请记住,您必须自己管理您的自定义控件的可见性(并且很可能在添加后隐藏它)。\n" -"当你的插件被停用时,请确保使用 [method remove_control_from_container] 删除你" -"的自定义控件,并使用 [method Node.queue_free] 将其释放。" +"请记住,必须自己管理您的自定义控件的可见性(并且很可能在添加后隐藏它)。\n" +"当插件被停用时,请确保使用 [method remove_control_from_container] 移除自定义" +"控件,并使用 [method Node.queue_free] 将其释放。" msgid "" "Adds the control to a specific dock slot (see [enum DockSlot] for options).\n" @@ -29943,11 +37464,11 @@ msgid "" "with [method remove_control_from_docks] and free it with [method Node." "queue_free]." msgstr "" -"将控件添加到特定的停靠面板(有关选项,请参阅[enum DockSlot])。\n" -"如果重新放置了停靠面板,并且只要插件处于活动状态,编辑器就会在以后的会话中保" -"存停靠面板的位置。\n" -"停用插件后,请确保使用[method remove_control_from_docks]删除自定义控件,并使" -"用[method Node.queue_free]释放它。" +"将控件添加到特定的停靠面板(有关选项,请参阅 [enum DockSlot])。\n" +"如果重新放置了停靠面板,并且只要该插件处于活动状态,编辑器就会在以后的会话中" +"保存停靠面板的位置。\n" +"停用插件后,请确保使用 [method remove_control_from_docks] 移除自定义控件,并" +"使用 [method Node.queue_free] 将其释放。" msgid "" "Adds a custom type, which will appear in the list of nodes or resources. An " @@ -29970,20 +37491,26 @@ msgstr "" "如“Node3D”、“Control”、“Resource”),然后脚本将被加载并将其设置为该对象。\n" "[b]注意:[/b]基本类型是该类型的类层次继承的基本引擎类,而不是任何自定义类型的" "父类。\n" -"您可以使用虚拟方法 [method _handles] 通过检查脚本或使用 [code]is[/code] 关键" -"字来检查您的自定义对象是否正在被编辑。\n" +"可以使用虚方法 [method _handles] 通过检查脚本或使用 [code]is[/code] 关键字来" +"检查您的自定义对象是否正在被编辑。\n" "在运行时,这将是一个带有脚本的简单对象,因此不需要调用该函数。\n" "[b]注意:[/b]以这种方式添加的自定义类型不是真正的类。它们只是使用特定脚本创建" "节点的助手。" msgid "" +"Adds a [Script] as debugger plugin to the Debugger. The script must extend " +"[EditorDebuggerPlugin]." +msgstr "" +"将一个 [Script] 作为调试器插件添加到调试器。该脚本必须扩展 " +"[EditorDebuggerPlugin]。" + +msgid "" "Registers a new [EditorExportPlugin]. Export plugins are used to perform " "tasks when the project is being exported.\n" "See [method add_inspector_plugin] for an example of how to register a plugin." msgstr "" -"注册一个新的编辑器导出插件 [EditorExportPlugin]。导出插件是用来在项目被导出时" -"执行任务的。\n" -"参见 [method add_inspector_plugin],了解如何注册一个插件的例子。" +"注册一个新的 [EditorExportPlugin]。导出插件是用来在项目被导出时执行任务的。\n" +"有关如何注册插件的示例,请参见 [method add_inspector_plugin]。" msgid "" "Registers a new [EditorImportPlugin]. Import plugins are used to import " @@ -30003,6 +37530,46 @@ msgstr "" "有关如何注册插件的示例,请参见 [method add_inspector_plugin]。" msgid "" +"Registers a new [EditorInspectorPlugin]. Inspector plugins are used to " +"extend [EditorInspector] and provide custom configuration tools for your " +"object's properties.\n" +"[b]Note:[/b] Always use [method remove_inspector_plugin] to remove the " +"registered [EditorInspectorPlugin] when your [EditorPlugin] is disabled to " +"prevent leaks and an unexpected behavior.\n" +"[codeblocks]\n" +"[gdscript]\n" +"const MyInspectorPlugin = preload(\"res://addons/your_addon/path/to/your/" +"script.gd\")\n" +"var inspector_plugin = MyInspectorPlugin.new()\n" +"\n" +"func _enter_tree():\n" +" add_inspector_plugin(inspector_plugin)\n" +"\n" +"func _exit_tree():\n" +" remove_inspector_plugin(inspector_plugin)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"注册一个新的 [EditorInspectorPlugin]。检查器插件用于扩展 [EditorInspector]," +"并为对象的属性提供自定义配置工具。\n" +"[b]注意:[/b]当 [EditorPlugin] 被禁用时,请始终使用 [method " +"remove_inspector_plugin] 移除已注册的 [EditorInspectorPlugin],以防止泄漏和意" +"外行为。\n" +"[codeblocks]\n" +"[gdscript]\n" +"const MyInspectorPlugin = preload(\"res://addons/your_addon/path/to/your/" +"script.gd\")\n" +"var inspector_plugin = MyInspectorPlugin.new()\n" +"\n" +"func _enter_tree():\n" +" add_inspector_plugin(inspector_plugin)\n" +"\n" +"func _exit_tree():\n" +" remove_inspector_plugin(inspector_plugin)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" "Registers a new [EditorNode3DGizmoPlugin]. Gizmo plugins are used to add " "custom gizmos to the 3D preview viewport for a [Node3D].\n" "See [method add_inspector_plugin] for an example of how to register a plugin." @@ -30012,13 +37579,82 @@ msgstr "" "有关如何注册插件的示例,请参阅 [method add_inspector_plugin]。" msgid "" +"Registers a new [EditorResourceConversionPlugin]. Resource conversion " +"plugins are used to add custom resource converters to the editor inspector.\n" +"See [EditorResourceConversionPlugin] for an example of how to create a " +"resource conversion plugin." +msgstr "" +"注册一个新的 [EditorResourceConversionPlugin]。资源转换插件用于将自定义资源转" +"换器添加到编辑器检查器。\n" +"有关如何创建资源转换插件的示例,请参阅 [EditorResourceConversionPlugin]。" + +msgid "" +"Registers a new [EditorSceneFormatImporter]. Scene importers are used to " +"import custom 3D asset formats as scenes.\n" +"If [param first_priority] is [code]true[/code], the new import plugin is " +"inserted first in the list and takes precedence over pre-existing plugins." +msgstr "" +"注册一个新的 [EditorSceneFormatImporter]。场景导入器用于将自定义格式的 3D 资" +"产导入为场景。\n" +"如果 [param first_priority] 为 [code]true[/code],则这个新的导入插件会被插入" +"到列表的首位,优先于预先存在的插件。" + +msgid "" +"Add a [EditorScenePostImportPlugin]. These plugins allow customizing the " +"import process of 3D assets by adding new options to the import dialogs.\n" +"If [param first_priority] is [code]true[/code], the new import plugin is " +"inserted first in the list and takes precedence over pre-existing plugins." +msgstr "" +"添加 [EditorScenePostImportPlugin]。这些插件能够在导入对话框中添加新的选项," +"自定义 3D 资产的导入过程。\n" +"如果 [param first_priority] 为 [code]true[/code],则这个新的导入插件会被插入" +"到列表的首位,优先于预先存在的插件。" + +msgid "" +"Adds a custom menu item to [b]Project > Tools[/b] named [param name]. When " +"clicked, the provided [param callable] will be called." +msgstr "" +"在[b]项目 > 工具[/b]中添加名为 [param name] 的自定义菜单项。点击时会调用所提" +"供的 [param callable]。" + +msgid "" +"Adds a custom [PopupMenu] submenu under [b]Project > Tools >[/b] [param " +"name]. Use [code]remove_tool_menu_item(name)[/code] on plugin clean up to " +"remove the menu." +msgstr "" +"在[b]项目 > 工具[/b]中添加名为 [param name] 的自定义 [PopupMenu] 子菜单。请在" +"清理插件时调用 [code]remove_tool_menu_item(name)[/code] 移除该菜单。" + +msgid "" +"Registers a custom translation parser plugin for extracting translatable " +"strings from custom files." +msgstr "注册一个自定义翻译解析器插件,用于从自定义文件中提取可翻译的字符串。" + +msgid "" +"Hooks a callback into the undo/redo action creation when a property is " +"modified in the inspector. This allows, for example, to save other " +"properties that may be lost when a given property is modified.\n" +"The callback should have 4 arguments: [Object] [code]undo_redo[/code], " +"[Object] [code]modified_object[/code], [String] [code]property[/code] and " +"[Variant] [code]new_value[/code]. They are, respectively, the [UndoRedo] " +"object used by the inspector, the currently modified object, the name of the " +"modified property and the new value the property is about to take." +msgstr "" +"当在检查器中修改属性时,将一个回调函数挂钩到撤消/重做动作创建中。例如,这允许" +"保存在修改给定属性时可能丢失的其他属性。\n" +"该回调函数应该有 4 个参数:[Object] [code]undo_redo[/code]、[Object] " +"[code]modified_object[/code]、[String] [code]property[/code]、和 [Variant] " +"[code]new_value [/code]。它们分别是检查器使用的 [UndoRedo] 对象、当前修改的对" +"象、修改的属性的名称、和该属性即将采用的新值。" + +msgid "" "Returns the [EditorInterface] object that gives you control over Godot " "editor's window and its functionalities." msgstr "" "返回 [EditorInterface] 对象,该对象使您可以控制 Godot 编辑器的窗口及其功能。" msgid "Returns the [PopupMenu] under [b]Scene > Export As...[/b]." -msgstr "返回[b]场景 > 另存为...[/b] 下的 [PopupMenu]。" +msgstr "返回[b]场景 > 另存为...[/b]下的 [PopupMenu]。" msgid "" "Gets the Editor's dialog used for making scripts.\n" @@ -30044,50 +37680,117 @@ msgid "Makes a specific item in the bottom panel visible." msgstr "使底部面板中的一个特定项目可见。" msgid "Queue save the project's editor layout." -msgstr "排队保存项目的编辑器布局。" +msgstr "排队保存游戏项目的编辑器布局。" msgid "Removes an Autoload [param name] from the list." -msgstr "从列表中删除自动加载 [param name]。" +msgstr "从列表中移除自动加载 [param name]。" msgid "" "Removes the control from the bottom panel. You have to manually [method Node." "queue_free] the control." -msgstr "从底部面板上删除控件。您必须手动 [method Node.queue_free] 释放控件。" +msgstr "" +"从底部面板上移除该控件。必须手动调用 [method Node.queue_free] 释放该控件。" msgid "" "Removes the control from the specified container. You have to manually " "[method Node.queue_free] the control." -msgstr "从指定的容器中删除控件。您必须手动 [method Node.queue_free] 释放控件。" +msgstr "" +"从指定的容器中移除该控件。必须手动调用 [method Node.queue_free] 释放该控件。" msgid "" "Removes the control from the dock. You have to manually [method Node." "queue_free] the control." -msgstr "从扩展面板中删除控件。您必须手动 [method Node.queue_free] 释放控件。" +msgstr "" +"从停靠面板中移除该控件。必须手动调用 [method Node.queue_free] 释放该控件。" msgid "Removes a custom type added by [method add_custom_type]." -msgstr "删除由 [method add_custom_type] 添加的自定义类型。" +msgstr "移除由 [method add_custom_type] 添加的自定义类型。" + +msgid "Removes the debugger plugin with given script from the Debugger." +msgstr "从调试器中移除带有给定脚本的调试器插件。" msgid "Removes an export plugin registered by [method add_export_plugin]." -msgstr "删除由 [method add_export_plugin] 注册的导出插件。" +msgstr "移除由 [method add_export_plugin] 注册的导出插件。" msgid "Removes an import plugin registered by [method add_import_plugin]." -msgstr "删除由 [method add_import_plugin] 注册的导入插件。" +msgstr "移除由 [method add_import_plugin] 注册的导入插件。" msgid "Removes an inspector plugin registered by [method add_import_plugin]" -msgstr "删除由 [method add_import_plugin] 注册的检查器插件" +msgstr "移除由 [method add_import_plugin] 注册的检查器插件" msgid "Removes a gizmo plugin registered by [method add_node_3d_gizmo_plugin]." -msgstr "删除由 [method add_node_3d_gizmo_plugin] 注册的小工具插件。" +msgstr "移除由 [method add_node_3d_gizmo_plugin] 注册的小工具插件。" + +msgid "" +"Removes a resource conversion plugin registered by [method " +"add_resource_conversion_plugin]." +msgstr "移除由 [method add_resource_conversion_plugin] 注册的资源转换插件。" + +msgid "" +"Removes a scene format importer registered by [method " +"add_scene_format_importer_plugin]." +msgstr "" +"移除由 [method add_scene_format_importer_plugin] 注册的场景格式导入器插件。" + +msgid "" +"Remove the [EditorScenePostImportPlugin], added with [method " +"add_scene_post_import_plugin]." +msgstr "" +"移除由 [method add_scene_post_import_plugin] 注册的 " +"[EditorScenePostImportPlugin]。" msgid "Removes a menu [param name] from [b]Project > Tools[/b]." -msgstr "从[b]项目 > 工具[/b]中移除菜单 [param name]。" +msgstr "从[b]项目 > 工具[/b]中移除名为 [param name] 的菜单。" + +msgid "" +"Removes a custom translation parser plugin registered by [method " +"add_translation_parser_plugin]." +msgstr "" +"移除由 [method add_translation_parser_plugin] 注册的自定义翻译解析器插件。" + +msgid "" +"Removes a callback previously added by [method " +"add_undo_redo_inspector_hook_callback]." +msgstr "移除由 [method add_undo_redo_inspector_hook_callback] 添加的回调。" + +msgid "" +"Enables calling of [method _forward_canvas_force_draw_over_viewport] for the " +"2D editor and [method _forward_3d_force_draw_over_viewport] for the 3D " +"editor when their viewports are updated. You need to call this method only " +"once and it will work permanently for this plugin." +msgstr "" +"更新视口时,为 2D 编辑器启用 [method " +"_forward_canvas_force_draw_over_viewport] 的调用,为 3D 编辑器启用 [method " +"_forward_3d_force_draw_over_viewport] 的调用。只需调用该方法一次,它将永久适" +"用于该插件。" + +msgid "" +"Use this method if you always want to receive inputs from 3D view screen " +"inside [method _forward_3d_gui_input]. It might be especially usable if your " +"plugin will want to use raycast in the scene." +msgstr "" +"如果始终希望从 3D 视图屏幕在 [method _forward_3d_gui_input] 中接收输入,请使" +"用该方法。如果插件想要在场景中使用射线投射,它可能特别有用。" + +msgid "" +"Updates the overlays of the 2D and 3D editor viewport. Causes methods " +"[method _forward_canvas_draw_over_viewport], [method " +"_forward_canvas_force_draw_over_viewport], [method " +"_forward_3d_draw_over_viewport] and [method " +"_forward_3d_force_draw_over_viewport] to be called." +msgstr "" +"更新 2D 和 3D 编辑器视口的叠加层。会导致方法 [method " +"_forward_canvas_draw_over_viewport]、[method " +"_forward_canvas_force_draw_over_viewport]、[method " +"_forward_3d_draw_over_viewport] 和 [method " +"_forward_3d_force_draw_over_viewport] 被调用。" msgid "" "Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/" "b], [b]AssetLib[/b]). Also works with custom screens defined by plugins." msgstr "" "当用户改变工作空间([b]2D[/b]、[b]3D[/b]、[b]Script[/b]、[b]AssetLib[/b])时" -"触发。也适用于由插件定义的自定义屏幕。" +"发出。也适用于由插件定义的自定义屏幕。" msgid "Emitted when any project setting has changed." msgstr "项目设置发生任何改变时发出。" @@ -30100,13 +37803,13 @@ msgid "" "the root node of the scene that has just become active. If this scene is new " "and empty, the argument will be [code]null[/code]." msgstr "" -"在编辑器中更改场景时触发。该参数将返回刚刚变为活动状态的场景的根节点。如果此" -"场景是新场景且为空,则参数将为[code]null[/code]。" +"在编辑器中更改场景时发出。该参数将返回刚刚变为活动状态的场景的根节点。如果此" +"场景是新场景且为空,则参数将为 [code]null[/code]。" msgid "" "Emitted when user closes a scene. The argument is file path to a closed " "scene." -msgstr "当用户关闭场景时触发。参数是关闭场景的文件路径。" +msgstr "当用户关闭场景时发出。参数是关闭的场景的文件路径。" msgid "Main editor toolbar, next to play buttons." msgstr "主编辑器的工具栏,旁边是运行按钮。" @@ -30183,6 +37886,14 @@ msgstr "将该 [InputEvent] 转发给其他 EditorPlugin。" msgid "Prevents the [InputEvent] from reaching other Editor classes." msgstr "阻止该 [InputEvent] 到达其他 Editor 类。" +msgid "" +"Pass the [InputEvent] to other editor plugins except the main [Node3D] one. " +"This can be used to prevent node selection changes and work with sub-gizmos " +"instead." +msgstr "" +"将该 [InputEvent] 传递给除主 [Node3D] 插件之外的其他编辑器插件。这可用于防止" +"节点选择更改并且改为使用子小工具。" + msgid "Custom control to edit properties for adding into the inspector." msgstr "自定义控件属性添加到检查器中。" @@ -30193,6 +37904,13 @@ msgstr "" "该控件可以将一个或多个属性编辑到 [EditorInspector] 中。通过 " "[EditorInspectorPlugin] 添加。" +msgid "" +"Called when the read-only status of the property is changed. It may be used " +"to change custom controls into a read-only or modifiable state." +msgstr "" +"当属性的只读状态被改变时被调用。它可用于将自定义控件改变为只读或可修改的状" +"态。" + msgid "When this virtual function is called, you must update your editor." msgstr "当这个虚函数被调用时,你必须更新你的编辑器。" @@ -30215,7 +37933,22 @@ msgstr "" "辑器请求刷新该属性(如果不确定,请保留为 [code]false[/code])。" msgid "Gets the edited object." -msgstr "获取编辑后的对象。" +msgstr "获取被编辑的对象。" + +msgid "" +"Gets the edited property. If your editor is for a single property (added via " +"[method EditorInspectorPlugin._parse_property]), then this will return the " +"property." +msgstr "" +"获取被编辑的属性。如果你的编辑器适用于单个属性(通过 [method " +"EditorInspectorPlugin._parse_property] 添加),则返回该属性。" + +msgid "" +"Puts the [param editor] control below the property label. The control must " +"be previously added using [method Node.add_child]." +msgstr "" +"将 [param editor] 控件放在属性标签的下方。该控件必须事先用 [method Node." +"add_child] 添加。" msgid "Forces refresh of the property display." msgstr "强制刷新属性显示。" @@ -30255,10 +37988,24 @@ msgid "" "only." msgstr "用于检查器,该属性为只读时设置为 [code]true[/code]。" +msgid "" +"Emit it if you want multiple properties modified at the same time. Do not " +"use if added via [method EditorInspectorPlugin._parse_property]." +msgstr "" +"如果想要同时修改多个属性,请发出它。如果属性是通过 [method " +"EditorInspectorPlugin._parse_property] 添加的,请勿使用。" + msgid "Used by sub-inspectors. Emit it if what was selected was an Object ID." msgstr "子检查器会使用。如果选择的是对象 ID,则触发。" msgid "" +"Emitted when the revertability (i.e., whether it has a non-default value and " +"thus is displayed with a revert icon) of a property has changed." +msgstr "" +"当属性的可恢复性(即,它是否具有非默认值并因此显示为带有恢复图标)发生变化时" +"发出。" + +msgid "" "Do not emit this manually, use the [method emit_changed] method instead." msgstr "不要手动触发,使用 [method emit_changed] 方法代替。" @@ -30277,12 +38024,100 @@ msgid "Emit it if you want to key a property with a single value." msgstr "如果你想用一个单一的值来键入一个属性,请触发它。" msgid "" +"Emit it if you want to mark (or unmark) the value of a property for being " +"saved regardless of being equal to the default value.\n" +"The default value is the one the property will get when the node is just " +"instantiated and can come from an ancestor scene in the inheritance/" +"instantiation chain, a script or a builtin class." +msgstr "" +"如果想要对某个属性进行标记(或者取消标记),让它无论是否与默认值相等都进行保" +"存,请发出它。\n" +"默认值指节点刚刚实例化后属性的取值,可以来自继承/实例化链上的祖先场景、脚本或" +"内置类。" + +msgid "" "If you want a sub-resource to be edited, emit this signal with the resource." msgstr "如果你想编辑一个子资源,请将此信号与资源一起发出。" msgid "Emitted when selected. Used internally." msgstr "选择时触发。内部使用。" +msgid "" +"Plugin for adding custom converters from one resource format to another in " +"the editor resource picker context menu; for example, converting a " +"[StandardMaterial3D] to a [ShaderMaterial]." +msgstr "" +"用于在编辑器资源选择器的上下文菜单中添加从一种资源格式到另一种资源格式的自定" +"义转换器的插件;例如,将 [StandardMaterial3D] 转换为 [ShaderMaterial]。" + +msgid "" +"[EditorResourceConversionPlugin] is invoked when the context menu is brought " +"up for a resource in the editor inspector. Relevant conversion plugins will " +"appear as menu options to convert the given resource to a target type.\n" +"Below shows an example of a basic plugin that will convert an [ImageTexture] " +"to a [PortableCompressedTexture2D].\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends EditorResourceConversionPlugin\n" +"\n" +"func _handles(resource: Resource):\n" +" return resource is ImageTexture\n" +"\n" +"func _converts_to():\n" +" return \"PortableCompressedTexture2D\"\n" +"\n" +"func _convert(itex: Resource):\n" +" var ptex = PortableCompressedTexture2D.new()\n" +" ptex.create_from_image(itex.get_image(), PortableCompressedTexture2D." +"COMPRESSION_MODE_LOSSLESS)\n" +" return ptex\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"To use an [EditorResourceConversionPlugin], register it using the [method " +"EditorPlugin.add_resource_conversion_plugin] method first." +msgstr "" +"当编辑器检查器中的资源被调出上下文菜单时,[EditorResourceConversionPlugin] 被" +"调用。相关的转换插件将作为菜单选项出现,以将给定的资源转换为目标类型。\n" +"下面展示了一个将 [ImageTexture] 转换为 [PortableCompressedTexture2D] 的基本插" +"件示例。\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends EditorResourceConversionPlugin\n" +"\n" +"func _handles(resource: Resource):\n" +" return resource is ImageTexture\n" +"\n" +"func _converts_to():\n" +" return \"PortableCompressedTexture2D\"\n" +"\n" +"func _convert(itex: Resource):\n" +" var ptex = PortableCompressedTexture2D.new()\n" +" ptex.create_from_image(itex.get_image(), PortableCompressedTexture2D." +"COMPRESSION_MODE_LOSSLESS)\n" +" return ptex\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"要使用 [EditorResourceConversionPlugin],请先使用 [method EditorPlugin." +"add_resource_conversion_plugin] 方法注册它。" + +msgid "" +"Takes an input [Resource] and converts it to the type given in [method " +"_converts_to]. The returned [Resource] is the result of the conversion, and " +"the input [Resource] remains unchanged." +msgstr "" +"获取输入 [Resource] 并将其转换为 [method _converts_to] 中给定的类型。返回的 " +"[Resource] 是转换后的结果,输入的 [Resource] 保持不变。" + +msgid "" +"Returns the class name of the target type of [Resource] that this plugin " +"converts source resources to." +msgstr "返回该插件将源资源转换为的 [Resource] 的目标类型的类名。" + +msgid "" +"Called to determine whether a particular [Resource] can be converted to the " +"target resource type by this plugin." +msgstr "调用以确定特定 [Resource] 是否可以通过该插件转换为目标资源类型。" + msgid "Godot editor's control for selecting [Resource] type properties." msgstr "Godot 编辑器用于选择 [Resource] 类型属性的控件。" @@ -30301,6 +38136,13 @@ msgstr "" "身或子检查器控制的。" msgid "" +"This virtual method can be implemented to handle context menu items not " +"handled by default. See [method _set_create_options]." +msgstr "" +"该虚方法可以被实现,以处理默认未处理的上下文菜单项目。请参阅 [method " +"_set_create_options]。" + +msgid "" "This virtual method is called when updating the context menu of " "[EditorResourcePicker]. Implement this method to override the \"New ...\" " "items with your own options. [param menu_node] is a reference to the " @@ -30417,6 +38259,11 @@ msgstr "" msgid "Removes a custom preview generator." msgstr "移除自定义预览生成器。" +msgid "" +"Emitted if a preview was invalidated (changed). [param path] corresponds to " +"the path of the preview." +msgstr "预览无效(更改)时发出。[param path] 对应预览的路径。" + msgid "Custom generator of previews." msgstr "自定义的预览生成器。" @@ -30429,6 +38276,15 @@ msgstr "" "thumbnail_size[/code],找出适合做预览的尺寸。" msgid "" +"If this function returns [code]true[/code], the generator will call [method " +"_generate] or [method _generate_from_path] for small previews as well.\n" +"By default, it returns [code]false[/code]." +msgstr "" +"如果该函数返回 [code]true[/code],则该生成器也会为小型预览调用 [method " +"_generate] 或 [method _generate_from_path]。\n" +"默认情况下,它返回 [code]false[/code]。" + +msgid "" "Generate a preview from a given resource with the specified size. This must " "always be implemented.\n" "Returning an empty texture is an OK way to fail and let another generator " @@ -30441,6 +38297,30 @@ msgstr "" "注意!,因为始终从线程(而不是主线程)调用此函数。" msgid "" +"Generate a preview directly from a path with the specified size. " +"Implementing this is optional, as default code will load and call [method " +"_generate].\n" +"Returning an empty texture is an OK way to fail and let another generator " +"take care.\n" +"Care must be taken because this function is always called from a thread (not " +"the main thread)." +msgstr "" +"直接从路径生成具有指定大小的预览。实现该函数是可选的,因为默认代码将加载并调" +"用 [method _generate]。\n" +"返回一个空的纹理是一个不错的失败方式,可以让另一个生成器来处理。\n" +"必须小心,因为这个函数总是从某个线程(不是主线程)调用。" + +msgid "" +"If this function returns [code]true[/code], the generator will automatically " +"generate the small previews from the normal preview texture generated by the " +"methods [method _generate] or [method _generate_from_path].\n" +"By default, it returns [code]false[/code]." +msgstr "" +"如果该函数返回 [code]true[/code],则该生成器将自动从通过方法 [method " +"_generate] 或 [method _generate_from_path] 生成的普通预览纹理生成小型预览。\n" +"默认情况下,它返回 [code]false[/code]。" + +msgid "" "Returns [code]true[/code] if your generator supports the resource of type " "[param type]." msgstr "" @@ -30449,12 +38329,61 @@ msgstr "" msgid "Imports scenes from third-parties' 3D files." msgstr "从第三方的 3D 文件中导入场景。" +msgid "" +"[EditorSceneFormatImporter] allows to define an importer script for a third-" +"party 3D format.\n" +"To use [EditorSceneFormatImporter], register it using the [method " +"EditorPlugin.add_scene_format_importer_plugin] method first." +msgstr "" +"[EditorSceneFormatImporter] 允许为第三方 3D 格式定义导入器脚本。\n" +"要使用 [EditorSceneFormatImporter],请先使用 [method EditorPlugin." +"add_scene_format_importer_plugin] 方法注册它。" + msgid "Importer for Blender's [code].blend[/code] scene file format." msgstr "Blender 的 [code].blend[/code] 场景文件格式的导入器。" +msgid "" +"Imports Blender scenes in the [code].blend[/code] file format through the " +"glTF 2.0 3D import pipeline. This importer requires Blender to be installed " +"by the user, so that it can be used to export the scene as glTF 2.0.\n" +"The location of the Blender binary is set via the [code]filesystem/import/" +"blender/blender3_path[/code] editor setting.\n" +"This importer is only used if [member ProjectSettings.filesystem/import/" +"blender/enabled] is enabled, otherwise [code].blend[/code] files present in " +"the project folder are not imported.\n" +"Blend import requires Blender 3.0.\n" +"Internally, the EditorSceneFormatImporterBlend uses the Blender glTF \"Use " +"Original\" mode to reference external textures." +msgstr "" +"通过 glTF 2.0 3D 导入管道导入使用 [code].blend[/code] 文件格式的 Blender 场" +"景。该导入器要求用户安装 Blender,以便将场景导出为 glTF 2.0。\n" +"Blender 可执行文件的位置是通过 [code]filesystem/import/blender/" +"blender3_path[/code] 编辑器设置来设置的。\n" +"该导入器仅在启用 [member ProjectSettings.filesystem/import/blender/enabled] " +"时使用,否则不会导入项目文件夹中存在的 [code].blend[/code] 文件。\n" +"Blend 导入需要 Blender 3.0。\n" +"在内部,EditorSceneFormatImporterBlend 使用 Blender glTF“使用原始”模式来引用" +"外部纹理。" + msgid "Importer for the [code].fbx[/code] scene file format." msgstr "[code].fbx[/code] 场景文件格式的导入器。" +msgid "" +"Imports Autodesk FBX 3D scenes by way of converting them to glTF 2.0 using " +"the FBX2glTF command line tool.\n" +"The location of the FBX2glTF binary is set via the [code]filesystem/import/" +"fbx/fbx2gltf_path[/code] editor setting.\n" +"This importer is only used if [member ProjectSettings.filesystem/import/fbx/" +"enabled] is enabled, otherwise [code].fbx[/code] files present in the " +"project folder are not imported." +msgstr "" +"通过使用 FBX2glTF 命令行工具将 Autodesk FBX 3D 场景转换为 glTF 2.0 来导入它" +"们。\n" +"FBX2glTF 可执行文件的位置通过 [code]filesystem/import/fbx/fbx2gltf_path[/" +"code] 编辑器设置来设置的。\n" +"该导入器仅在启用 [member ProjectSettings.filesystem/import/fbx/enabled] 时使" +"用,否则不会导入项目文件夹中存在的 [code].fbx[/code] 文件。" + msgid "Post-processes scenes after import." msgstr "导入后对场景进行后处理。" @@ -30581,10 +38510,43 @@ msgid "Plugin to control and modifying the process of importing a scene." msgstr "用于控制和修改导入场景的过程的插件。" msgid "" +"This plugin type exists to modify the process of importing scenes, allowing " +"to change the content as well as add importer options at every stage of the " +"process." +msgstr "" +"这种插件类型的存在是为了修改导入场景的处理,允许在处理的每个阶段更改内容以及" +"添加导入器选项。" + +msgid "" +"Override to add general import options. These will appear in the main import " +"dock on the editor. Add options via [method add_import_option] and [method " +"add_import_option_advanced]." +msgstr "" +"重写以添加常规导入选项。这些将出现在编辑器的主导入停靠面板中。通过 [method " +"add_import_option] 和 [method add_import_option_advanced] 添加选项。" + +msgid "" +"Override to add internal import options. These will appear in the 3D scene " +"import dialog. Add options via [method add_import_option] and [method " +"add_import_option_advanced]." +msgstr "" +"重写以添加内部导入选项。这些将出现在 3D 场景导入对话框中。通过 [method " +"add_import_option] 和 [method add_import_option_advanced] 添加选项。" + +msgid "" +"Return true whether updating the 3D view of the import dialog needs to be " +"updated if an option has changed." +msgstr "" +"返回在选项已更改时是否需要更新导入对话框的 3D 视图,若更新则返回 true。" + +msgid "" "Return true or false whether a given option should be visible. Return null " "to ignore." msgstr "返回给定的选项是否应该可见。忽略时返回 null。" +msgid "Process a specific node or resource for a given category." +msgstr "处理给定类别的特定节点或资源。" + msgid "" "Post process the scene. This function is called after the final scene has " "been configured." @@ -30596,6 +38558,26 @@ msgid "" msgstr "" "对场景进行预处理。该方法会在场景格式加载器加载场景后、尚未进行更改时调用。" +msgid "" +"Add a specific import option (name and default value only). This function " +"can only be called from [method _get_import_options] and [method " +"_get_internal_import_options]." +msgstr "" +"添加特定的导入选项(仅限名称和默认值)。该函数只能从 [method " +"_get_import_options] 和 [method _get_internal_import_options] 被调用。" + +msgid "" +"Add a specific import option. This function can only be called from [method " +"_get_import_options] and [method _get_internal_import_options]." +msgstr "" +"添加特定的导入选项。该函数只能从 [method _get_import_options] 和 [method " +"_get_internal_import_options] 被调用。" + +msgid "" +"Query the value of an option. This function can only be called from those " +"querying visibility, or processing." +msgstr "查询选项的值。该函数只能从查询可见性的函数或处理函数中被调用。" + msgid "Base script that can be used to add extension functions to the editor." msgstr "可用于为编辑器添加扩展功能的基础脚本。" @@ -30755,6 +38737,141 @@ 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 = GetEditorInterface().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<Godot.Collections.Dictionary> 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 = GetEditorInterface().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<Godot.Collections.Dictionary> 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" +"- [code]type[/code]: [int] (see [enum Variant.Type])\n" +"- optionally [code]hint[/code]: [int] (see [enum PropertyHint]) and " +"[code]hint_string[/code]: [String]\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var settings = EditorInterface.get_editor_settings()\n" +"settings.set(\"category/property_name\", 0)\n" +"\n" +"var property_info = {\n" +" \"name\": \"category/property_name\",\n" +" \"type\": TYPE_INT,\n" +" \"hint\": PROPERTY_HINT_ENUM,\n" +" \"hint_string\": \"one,two,three\"\n" +"}\n" +"\n" +"settings.add_property_info(property_info)\n" +"[/gdscript]\n" +"[csharp]\n" +"var settings = GetEditorInterface().GetEditorSettings();\n" +"settings.Set(\"category/property_name\", 0);\n" +"\n" +"var propertyInfo = new Godot.Collections.Dictionary\n" +"{\n" +" {\"name\", \"category/propertyName\"},\n" +" {\"type\", Variant.Type.Int},\n" +" {\"hint\", PropertyHint.Enum},\n" +" {\"hint_string\", \"one,two,three\"}\n" +"};\n" +"\n" +"settings.AddPropertyInfo(propertyInfo);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"向属性添加自定义属性信息。该字典必须包含:\n" +"- [code]name[/code]: [String](属性名称)\n" +"- [code]type[/code]: [int](参见 [enum Variant.Type])\n" +"- (可选) [code]hint[/code]: [int] (参见 [enum PropertyHint])和 " +"[code]hint_string[/code]: [String]\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var settings = EditorInterface.get_editor_settings()\n" +"settings.set(\"category/property_name\", 0)\n" +"\n" +"var property_info = {\n" +" \"name\": \"category/property_name\",\n" +" \"type\": TYPE_INT,\n" +" \"hint\": PROPERTY_HINT_ENUM,\n" +" \"hint_string\": \"one,two,three\"\n" +"}\n" +"\n" +"settings.add_property_info(property_info)\n" +"[/gdscript]\n" +"[csharp]\n" +"var settings = GetEditorInterface().GetEditorSettings();\n" +"settings.Set(\"category/property_name\", 0);\n" +"\n" +"var propertyInfo = new Godot.Collections.Dictionary\n" +"{\n" +" {\"name\", \"category/propertyName\"},\n" +" {\"type\", Variant.Type.Int},\n" +" {\"hint\", PropertyHint.Enum},\n" +" {\"hint_string\", \"one,two,three\"}\n" +"};\n" +"\n" +"settings.AddPropertyInfo(propertyInfo);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Checks if any settings with the prefix [param setting_prefix] exist in the " "set of changed settings. See also [method get_changed_settings]." msgstr "" @@ -30762,24 +38879,33 @@ msgstr "" "[method get_changed_settings]。" msgid "Erases the setting whose name is specified by [param property]." -msgstr "擦除名称为 [param property] 的设置项。" +msgstr "擦除名称由 [param property] 指定的设置项。" + +msgid "" +"Gets an array of the settings which have been changed since the last save. " +"Note that internally [code]changed_settings[/code] is cleared after a " +"successful save, so generally the most appropriate place to use this method " +"is when processing [constant NOTIFICATION_EDITOR_SETTINGS_CHANGED]." +msgstr "" +"获取上次保存以来发生更改的设置项数组。请注意,成功保存后内部会将 " +"[code]changed_settings[/code] 清空,所以一般最适合使用该方法的地方是在处理 " +"[constant NOTIFICATION_EDITOR_SETTINGS_CHANGED] 时。" msgid "Returns the list of favorite files and directories for this project." -msgstr "返回本项目最收藏的文件和目录列表。" +msgstr "返回该游戏项目收藏的文件和目录的列表。" msgid "" "Returns project-specific metadata for the [param section] and [param key] " "specified. If the metadata doesn't exist, [param default] will be returned " "instead. See also [method set_project_metadata]." msgstr "" -"返回由 [param section]、[param key]、[param data] 指定的针对项目的元数据。如" -"果该元数据不存在,则返回 [param default]。另见 [method " -"set_project_metadata]。" +"返回由 [param section] 和 [param key] 指定的特定于项目的元数据。如果该元数据" +"不存在,则将返回 [param default]。另见 [method set_project_metadata]。" msgid "" "Returns the list of recently visited folders in the file dialog for this " "project." -msgstr "返回此项目文件对话框中最近访问的文件夹列表。" +msgstr "返回该游戏项目在文件对话框中最近访问的文件夹的列表。" msgid "" "Returns the value of the setting specified by [param name]. This is " @@ -30800,17 +38926,18 @@ msgid "" "get_changed_settings]. Only settings which exist (see [method has_setting]) " "will be accepted." msgstr "" -"将传入的编辑器设置项标记为已更改,见 [method get_changed_settings]。仅接受存" -"在的设置项(见 [method has_setting])。" +"将传入的编辑器设置项标记为已更改,请参阅 [method get_changed_settings]。只有" +"存在的设置(参见 [method has_setting])才会被接受。" msgid "" "Overrides the built-in editor action [param name] with the input actions " "defined in [param actions_list]." msgstr "" -"使用 [param actions_list] 中定义的输入动作覆盖内置的编辑器动作 [param name]。" +"使用 [param actions_list] 中定义的输入动作,覆盖内置的编辑器动作 [param " +"name]。" msgid "Sets the list of favorite files and directories for this project." -msgstr "设置此项目为收藏的文件和目录列表。" +msgstr "设置该游戏项目收藏的文件和目录的列表。" msgid "" "Sets the initial value of the setting specified by [param name] to [param " @@ -30828,23 +38955,46 @@ msgid "" "and therefore won't be checked into version control. See also [method " "get_project_metadata]." msgstr "" -"设置由 [param section]、[param key]、[param data] 指定的针对项目的元数据。该" -"元数据保存在项目文件夹之外,因此不会加入到版本控制中。另见 [method " +"设置由 [param section]、[param key]、[param data] 指定的特定于项目的元数据。" +"该元数据保存在项目文件夹之外,因此不会加入到版本控制中。另见 [method " "get_project_metadata]。" msgid "" "Sets the list of recently visited folders in the file dialog for this " "project." -msgstr "在文件对话框中设置本项目最近访问过的文件夹列表。" +msgstr "设置该游戏项目在文件对话框中最近访问的文件夹的列表。" msgid "" "Sets the [param value] of the setting specified by [param name]. This is " "equivalent to using [method Object.set] on the EditorSettings instance." msgstr "" -"将有 [param name] 指定的设置项设置为 [param value]。等价于在 EditorSettings " +"将由 [param name] 指定的设置项设置为 [param value]。等价于在 EditorSettings " "实例上使用 [method Object.set]。" msgid "" +"The size of the profiler's frame history. The default value (3600) allows " +"seeing up to 60 seconds of profiling if the project renders at a constant 60 " +"FPS. Higher values allow viewing longer periods of profiling in the graphs, " +"especially when the project is running at high framerates." +msgstr "" +"分析器的帧历史的大小。如果项目以恒定的 60 FPS 渲染,则默认值(3600)允许查看" +"最多 60 秒的分析。更高的值允许在图表中查看更长时间的分析,尤其是当项目以高帧" +"率运行时。" + +msgid "" +"If [code]true[/code], displays folders in the FileSystem dock's bottom pane " +"when split mode is enabled. If [code]false[/code], only files will be " +"displayed in the bottom pane. Split mode can be toggled by pressing the icon " +"next to the [code]res://[/code] folder path.\n" +"[b]Note:[/b] This setting has no effect when split mode is disabled (which " +"is the default)." +msgstr "" +"如果为 [code]true[/code],则在启用拆分模式时,在文件系统停靠面板的底部窗格中" +"显示文件夹。如果为 [code]false[/code],则只有文件将显示在底部窗格中。可以通过" +"按 [code]res://[/code] 文件夹路径旁边的图标来切换拆分模式。\n" +"[b]注意:[/b]当拆分模式被禁用(这是默认设置)时,该设置无效。" + +msgid "" "List of file extensions to consider as editable text files in the FileSystem " "dock (by double-clicking on the files)." msgstr "" @@ -30855,7 +39005,7 @@ msgid "" "The thumbnail size to use in the FileSystem dock (in pixels). See also " "[member filesystem/file_dialog/thumbnail_size]." msgstr "" -"“文件系统”面板中使用的缩略图尺寸(单位为像素)。另见 [member filesystem/" +"“文件系统”面板中使用的缩略图大小(单位为像素)。另见 [member filesystem/" "file_dialog/thumbnail_size]。" msgid "" @@ -30864,8 +39014,8 @@ msgid "" "editor and looking at the inspector at the same time. Lower values make the " "inspector refresh more often, but take up more CPU time." msgstr "" -"检查器面板中属性的刷新间隔。该设置的效果在一边调整 2D/3D 编辑器中的小工具一边" -"观察检查器时比较明显。值越低检查器刷新越频繁,也会占用更多 CPU 时间。" +"检查器停靠面板中属性的刷新间隔。当在 2D/3D 编辑器中调整小工具并同时查看检查器" +"时,该设置的效果特别明显。值越低检查器刷新越频繁,也会占用更多 CPU 时间。" msgid "" "The tint intensity to use for the subresources background in the Inspector " @@ -30873,8 +39023,24 @@ msgid "" "inspector. Higher values result in a more noticeable background color " "difference." msgstr "" -"检查器面板中,子资源背景的着色强度。着色用于区分检查器中不同的子资源。值越" -"高,背景色差越容易区分。" +"检查器停靠面板中子资源背景的着色强度。着色用于区分检查器中不同的子资源。值越" +"高,背景颜色差异越明显。" + +msgid "" +"If [code]true[/code], the scene tree dock will automatically unfold nodes " +"when a node that has folded parents is selected." +msgstr "" +"如果为 [code]true[/code],则在选中节点时,场景树停靠面板会自动展开该节点已折" +"叠的父节点。" + +msgid "" +"If [code]true[/code], the Create dialog (Create New Node/Create New " +"Resource) will start with all its sections expanded. Otherwise, sections " +"will be collapsed until the user starts searching (which will automatically " +"expand sections as needed)." +msgstr "" +"如果为 [code]true[/code],则创建对话框(创建新节点/创建新资源)将以展开其所有" +"部分开始。否则,部分将被折叠,直到用户开始搜索(这将根据需要自动展开部分)。" msgid "" "The \"start\" stop of the color gradient to use for bones in the 2D skeleton " @@ -30926,10 +39092,10 @@ msgid "" "move freely, but you risk getting lost when zooming out too far. You can " "refocus on the scene by selecting a node then pressing [kbd]F[/kbd]." msgstr "" -"如果为 [code]true[/code],则防止 2D 编辑器视图离开场景。限制是根据当前场景中" -"存在的节点动态计算的。如果为 [code]false[/code],则 2D 编辑器视图将能够自由移" -"动,但如果缩得太小就可能会迷失方向。要重新聚焦场景,你可以选中某节点并按 " -"[kbd]F[/kbd] 键。" +"如果为 [code]true[/code],则防止 2D 编辑器视口离开场景。限制是根据当前场景中" +"存在的节点动态计算的。如果为 [code]false[/code],则 2D 编辑器视口将能够自由移" +"动,但是当缩小得太小时可能会迷失方向。可以通过选择一个节点然后按 [kbd]F[/" +"kbd] 来重新聚焦场景。" msgid "The grid color to use in the 2D editor." msgstr "2D 编辑器使用的栅格颜色。" @@ -30940,6 +39106,106 @@ msgid "" msgstr "2D 编辑器使用的参考线颜色。可以通过从标尺上拖动鼠标光标来创建参考线。" msgid "" +"The color to use when drawing smart snapping lines in the 2D editor. The " +"smart snapping lines will automatically display when moving 2D nodes if " +"smart snapping is enabled in the Snapping Options menu at the top of the 2D " +"editor viewport." +msgstr "" +"在 2D 编辑器中,绘制智能吸附线时使用的颜色。如果在 2D 编辑器视口顶部的“吸附选" +"项”菜单中启用智能吸附,则移动 2D 节点时智能吸附线将自动显示。" + +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. " +"Objects placed outside this border will not be visible unless a [Camera2D] " +"node is used, or unless the window is resized and the stretch mode is set to " +"[code]disabled[/code]." +msgstr "" +"2D 编辑器中视口边框的颜色。该边框表示在项目设置中定义的基本分辨率下的视口大" +"小。除非使用 [Camera2D] 节点,或者除非调整窗口大小并将拉伸模式设置为 " +"[code]disabled[/code],否则放置在该边界之外的对象将不可见。" + +msgid "" +"The default camera field of view to use in the 3D editor (in degrees). The " +"camera field of view can be adjusted on a per-scene basis using the [b]View[/" +"b] menu at the top of the 3D editor. If a scene had its camera field of view " +"adjusted using the [b]View[/b] menu, this setting is ignored in the scene in " +"question. This setting is also ignored while a Camera3D node is being " +"previewed in the editor." +msgstr "" +"在 3D 编辑器中使用的默认相机视野(以度为单位)。可以使用 3D 编辑器顶部的[b]查" +"看[/b]菜单,在每个场景的基础上调整相机视野。如果使用[b]查看[/b]菜单调整了场景" +"的相机视野,则该设置将在相关场景中被忽略。在编辑器中预览 Camera3D 节点时,该" +"设置也将被忽略。" + +msgid "" +"The default camera far clip distance to use in the 3D editor (in degrees). " +"Higher values make it possible to view objects placed further away from the " +"camera, at the cost of lower precision in the depth buffer (which can result " +"in visible Z-fighting in the distance). The camera far clip distance can be " +"adjusted on a per-scene basis using the [b]View[/b] menu at the top of the " +"3D editor. If a scene had its camera far clip distance adjusted using the " +"[b]View[/b] menu, this setting is ignored in the scene in question. This " +"setting is also ignored while a Camera3D node is being previewed in the " +"editor." +msgstr "" +"在 3D 编辑器中使用的默认相机远剪辑距离(以度为单位)。较高的值可以查看距离相" +"机较远的对象,但会降低深度缓冲区的精度(这可能导致远处可见的 Z 冲突)。可以使" +"用 3D 编辑器顶部的[b]查看[/b]菜单在每个场景的基上,调整相机远剪辑距离。如果一" +"个场景使用[b]查看[/b]菜单调整了其相机远剪辑距离,则该设置在相关场景中将被忽" +"略。在编辑器中预览 Camera3D 节点时,该设置也将被忽略。" + +msgid "" +"The default camera near clip distance to use in the 3D editor (in degrees). " +"Lower values make it possible to view objects placed closer to the camera, " +"at the cost of lower precision in the depth buffer (which can result in " +"visible Z-fighting in the distance). The camera near clip distance can be " +"adjusted on a per-scene basis using the [b]View[/b] menu at the top of the " +"3D editor. If a scene had its camera near clip distance adjusted using the " +"[b]View[/b] menu, this setting is ignored in the scene in question. This " +"setting is also ignored while a Camera3D node is being previewed in the " +"editor." +msgstr "" +"要在 3D 编辑器中使用的默认相机近剪辑距离(以度为单位)。较低的值可以查看距离" +"相机更近的对象,但会降低深度缓冲区的精度(这可能会导致远处可见的 Z 冲突)。可" +"以使用 3D 编辑器顶部的[b]查看[/b]菜单,在每个场景的基上调整相机近剪辑距离。如" +"果一个场景使用[b]查看[/b]菜单,调整了其相机近剪辑距离,则该设置在相关场景中将" +"被忽略。在编辑器中预览 Camera3D 节点时,该设置也将被忽略。" + +msgid "" +"The modifier key to use to enable freelook in the 3D editor (on top of " +"pressing the right mouse button).\n" +"[b]Note:[/b] Regardless of this setting, the freelook toggle keyboard " +"shortcut ([kbd]Shift + F[/kbd] by default) is always available.\n" +"[b]Note:[/b] On certain window managers on Linux, the [kbd]Alt[/kbd] key " +"will be intercepted by the window manager when clicking a mouse button at " +"the same time. This means Godot will not see the modifier key as being " +"pressed." +msgstr "" +"用于在 3D 编辑器中启用自由观看的修饰键(在按下鼠标右键的同时)。\n" +"[b]注意:[/b]无论该设置如何,自由观看切换键盘快捷键(默认为 [kbd]Shift + F[/" +"kbd])始终可用。\n" +"[b]注意:[/b]在 Linux 的某些窗口管理器上,[kbd]Alt[/kbd] 键在同时单击鼠标按钮" +"时会被窗口管理器拦截。这意味着 Godot 不会看到该修饰键被按下。" + +msgid "" +"The base 3D freelook speed in units per second. This can be adjusted by " +"using the mouse wheel while in freelook mode, or by holding down the " +"\"fast\" or \"slow\" modifier keys ([kbd]Shift[/kbd] and [kbd]Alt[/kbd] by " +"default, respectively)." +msgstr "" +"基本 3D 自由观看速度(单位:3D 单位(unit)每秒)。这可以通过在自由观看模式下" +"使用鼠标滚轮进行调整,或者按住“快速”或“慢速”修饰键(默认分别为 [kbd]Shift[/" +"kbd] 和 [kbd]Alt[/kbd] )。" + +msgid "" +"The inertia of the 3D freelook camera. Higher values make the camera start " +"and stop slower, which looks smoother but adds latency." +msgstr "" +"3D 自由观看相机的惯性。较高的值会使相机启动和停止更慢,这看起来更流畅但会增加" +"延迟。" + +msgid "" "The navigation scheme to use when freelook is enabled in the 3D editor. Some " "of the navigation schemes below may be more convenient when designing " "specific levels in the 3D editor.\n" @@ -30969,6 +39235,60 @@ msgstr "" "另见 [member editors/3d/navigation/navigation_scheme]。" msgid "" +"The mouse sensitivity to use while freelook mode is active in the 3D editor. " +"See also [member editors/3d/navigation_feel/orbit_sensitivity]." +msgstr "" +"在 3D 编辑器中启用自由观看模式时使用的鼠标灵敏度。另见 [member editors/3d/" +"navigation_feel/orbit_sensitivity]。" + +msgid "" +"If [code]true[/code], freelook speed is linked to the zoom value used in the " +"camera orbit mode in the 3D editor." +msgstr "" +"如果为 [code]true[/code],则自由观看速度与 3D 编辑器中相机轨道模式中使用的缩" +"放值相关联。" + +msgid "" +"The grid division bias to use in the 3D editor. Negative values will cause " +"small grid divisions to appear earlier, whereas positive values will cause " +"small grid divisions to appear later." +msgstr "" +"在 3D 编辑器中使用的栅格划分偏差。负值会使小的栅格划分出现得更早,而正值会使" +"小的栅格划分出现得更晚。" + +msgid "" +"The smallest grid division to use in the 3D editor, specified as a power of " +"2. The grid will not be able to get larger than [code]1 ^ " +"grid_division_level_max[/code] units. By default, this means grid divisions " +"cannot get smaller than 100 units each, no matter how far away the camera is " +"from the grid." +msgstr "" +"在 3D 编辑器中使用的最大栅格划分,指定为 2 的幂。该栅格不能大于 [code]2 ^ " +"grid_division_level_max[/code] 个单位。默认情况下,这意味着无论相机离栅格有多" +"远,每个栅格划分都不能大于 4 个单位。" + +msgid "" +"The smallest grid division to use in the 3D editor, specified as a power of " +"2. The grid will not be able to get smaller than [code]1 ^ " +"grid_division_level_min[/code] units. By default, this means grid divisions " +"cannot get smaller than 1 unit each, no matter how close the camera is from " +"the grid." +msgstr "" +"在 3D 编辑器中使用的最小栅格划分,指定为 2 的幂。该栅格不能小于 [code]2 ^ " +"grid_division_level_min[/code] 个单位。默认情况下,这意味着无论相机离栅格有多" +"近,每个栅格划分都不能小于 1 个单位。" + +msgid "" +"The grid size in units. Higher values prevent the grid from appearing \"cut " +"off\" at certain angles, but make the grid more demanding to render. " +"Depending on the camera's position, the grid may not be fully visible since " +"a shader is used to fade it progressively." +msgstr "" +"栅格大小,单位:3D 单位(unit)。较高的值可防止栅格在某些角度出现“截断”,但会" +"使栅格对渲染的要求更高。根据相机的位置,栅格可能不会完全可见,因为着色器用于" +"逐渐淡化它。" + +msgid "" "If [code]true[/code], render the grid on an XY plane. This can be useful for " "3D side-scrolling games." msgstr "" @@ -30983,25 +39303,394 @@ msgid "" msgstr "" "如果为 [code]true[/code],则在 YZ 平面上渲染栅格。可用于 3D 横向卷轴游戏。" +msgid "" +"If [code]true[/code], enables 3-button mouse emulation mode. This is useful " +"on laptops when using a trackpad.\n" +"When 3-button mouse emulation mode is enabled, the pan, zoom and orbit " +"modifiers can always be used in the 3D editor viewport, even when not " +"holding down any mouse button.\n" +"[b]Note:[/b] No matter the orbit modifier configured in [member editors/3d/" +"navigation/orbit_modifier], [kbd]Alt[/kbd] will always remain usable for " +"orbiting in this mode to improve usability with graphics tablets." +msgstr "" +"如果为 [code]true[/code],启用 3 键鼠标模拟模式。这在使用触控板的笔记本电脑上" +"很有用。\n" +"启用 3 键鼠标模拟模式后,即使未按住任何鼠标按钮,也始终可以在 3D 编辑器视口中" +"使用平移、缩放、和视轨修饰键。\n" +"[b]注意:[/b]无论 [member editors/3d/navigation/orbit_modifier] 中配置的视轨" +"修饰键如何,[kbd]Alt[/kbd] 在该模式下始终可用于视轨,以提高绘图板的可用性。" + +msgid "" +"If [code]true[/code], allows using the top row [kbd]0[/kbd]-[kbd]9[/kbd] " +"keys to function as their equivalent numpad keys for 3D editor navigation. " +"This should be enabled on keyboards that have no numeric keypad available." +msgstr "" +"如果为 [code]true[/code],则允许使用顶行 [kbd]0[/kbd]-[kbd]9[/kbd] 键作为 3D " +"编辑器导航的等效数字键盘键。应该在没有可用数字小键盘的键盘上启用。" + +msgid "" +"If [code]true[/code], invert the horizontal mouse axis when panning or " +"orbiting in the 3D editor. This setting does [i]not[/i] apply to freelook " +"mode." +msgstr "" +"如果为 [code]true[/code],则在 3D 编辑器中平移或视轨时,反转鼠标水平轴。该设" +"置[i]不[/i]适用于自由观看模式。" + +msgid "" +"If [code]true[/code], invert the vertical mouse axis when panning, orbiting, " +"or using freelook mode in the 3D editor." +msgstr "" +"如果为 [code]true[/code],则在 3D 编辑器中平移、视轨、或使用自由观看模式时," +"反转鼠标垂直轴。" + +msgid "" +"The navigation scheme to use in the 3D editor. Changing this setting will " +"affect the mouse buttons that must be held down to perform certain " +"operations in the 3D editor viewport.\n" +"- [b]Godot[/b] Middle mouse button to orbit, [kbd]Shift + Middle mouse " +"button[/kbd] to pan. [kbd]Mouse wheel[/kbd] to zoom.\n" +"- [b]Maya:[/b] [kbd]Alt + Left mouse button[/kbd] to orbit. [kbd]Middle " +"mouse button[/kbd] to pan, [kbd]Shift + Middle mouse button[/kbd] to pan 10 " +"times faster. [kbd]Mouse wheel[/kbd] to zoom.\n" +"- [b]Modo:[/b] [kbd]Alt + Left mouse button[/kbd] to orbit. [kbd]Alt + Shift " +"+ Left mouse button[/kbd] to pan. [kbd]Ctrl + Alt + Left mouse button[/kbd] " +"to zoom.\n" +"See also [member editors/3d/freelook/freelook_navigation_scheme].\n" +"[b]Note:[/b] On certain window managers on Linux, the [kbd]Alt[/kbd] key " +"will be intercepted by the window manager when clicking a mouse button at " +"the same time. This means Godot will not see the modifier key as being " +"pressed." +msgstr "" +"在 3D 编辑器中使用的导航方案。更改该设置将影响鼠标按钮,这些鼠标按钮必须被按" +"住才能在 3D 编辑器视口中执行某些操作。\n" +"- [b]Godot[/b]鼠标中键进行视轨,[kbd]Shift + 鼠标中键[/kbd]进行平移。[kbd]鼠" +"标滚轮[/kbd]进行缩放。\n" +"- [b]Maya:[/b][kbd]Alt + 鼠标左键[/kbd]进行视轨。[kbd]鼠标中键[/kbd]进行平" +"移,[kbd]Shift + 鼠标中键[/kbd] 平移速度提高 10 倍。[kbd]鼠标滚轮[/kbd]进行缩" +"放。\n" +"- [b]Modo:[/b][kbd]Alt + 鼠标左键[/kbd]进行视轨。 [kbd]Alt + Shift + 鼠标左" +"键[/kbd]进行平移。 [kbd]Ctrl + Alt + 鼠标左键[/kbd]进行缩放。\n" +"另请参阅 [member editors/3d/freelook/freelook_navigation_scheme]。\n" +"[b]注意:[/b]在 Linux 的某些窗口管理器上,[kbd]Alt[/kbd] 键在同时点击鼠标按钮" +"时会被窗口管理器拦截。这意味着 Godot 不会看到该修饰键被按下。" + +msgid "" +"The modifier key that must be held to orbit in the 3D editor.\n" +"[b]Note:[/b] If [member editors/3d/navigation/emulate_3_button_mouse] is " +"[code]true[/code], [kbd]Alt[/kbd] will always remain usable for orbiting to " +"improve usability with graphics tablets.\n" +"[b]Note:[/b] On certain window managers on Linux, the [kbd]Alt[/kbd] key " +"will be intercepted by the window manager when clicking a mouse button at " +"the same time. This means Godot will not see the modifier key as being " +"pressed." +msgstr "" +"必须被按住以在 3D 编辑器中进行视轨的修饰键。\n" +"[b]注意:[/b]如果 [member editors/3d/navigation/emulate_3_button_mouse] 为 " +"[code]true[/code],则 [kbd]Alt[/kbd] 将始终可用于视轨以提高绘图板的可用性。\n" +"[b]注意:[/b]在 Linux 的某些窗口管理器上,[kbd]Alt[/kbd] 键在同时点击鼠标按钮" +"时会被窗口管理器拦截。这意味着 Godot 不会看到该修饰键被按下。" + +msgid "" +"The modifier key that must be held to pan in the 3D editor.\n" +"[b]Note:[/b] On certain window managers on Linux, the [kbd]Alt[/kbd] key " +"will be intercepted by the window manager when clicking a mouse button at " +"the same time. This means Godot will not see the modifier key as being " +"pressed." +msgstr "" +"必须被按住以在 3D 编辑器中进行平移的修饰键。\n" +"[b]注意:[/b]在 Linux 的某些窗口管理器上,[kbd]Alt[/kbd] 键在同时点击鼠标按钮" +"时会被窗口管理器拦截。这意味着 Godot 不会看到该修饰键被按下。" + +msgid "" +"If [code]true[/code], warps the mouse around the 3D viewport while panning " +"in the 3D editor. This makes it possible to pan over a large area without " +"having to exit panning then mouse the mouse back constantly." +msgstr "" +"如果为 [code]true[/code],则在 3D 编辑器中平移时围绕 3D 视口扭曲鼠标。这使得" +"无需退出平移然后鼠标不断向后移动就可以在大区域内平移。" + +msgid "" +"The modifier key that must be held to zoom in the 3D editor.\n" +"[b]Note:[/b] On certain window managers on Linux, the [kbd]Alt[/kbd] key " +"will be intercepted by the window manager when clicking a mouse button at " +"the same time. This means Godot will not see the modifier key as being " +"pressed." +msgstr "" +"必须被按住以在 3D 编辑器中进行放大的修饰键。\n" +"[b]注意:[/b]在 Linux 的某些窗口管理器上,[kbd]Alt[/kbd] 键在同时点击鼠标按钮" +"时会被窗口管理器拦截。这意味着 Godot 不会看到该修改键被按下。" + +msgid "" +"The mouse cursor movement direction to use when zooming by moving the mouse. " +"This does not affect zooming with the mouse wheel." +msgstr "" +"当通过移动鼠标进行缩放时要使用的鼠标光标移动方向。这不会影响使用鼠标滚轮进行" +"缩放。" + +msgid "" +"The inertia to use when orbiting in the 3D editor. Higher values make the " +"camera start and stop slower, which looks smoother but adds latency." +msgstr "" +"在 3D 编辑器中进行视轨时要使用的惯性。更高的值会使相机启动和停止更慢,这看起" +"来更流畅但会增加延迟。" + +msgid "" +"The mouse sensitivity to use when orbiting in the 3D editor. See also " +"[member editors/3d/freelook/freelook_sensitivity]." +msgstr "" +"在 3D 编辑器中进行视轨时要使用的鼠标灵敏度。另请参阅 [member editors/3d/" +"freelook/freelook_sensitivity]。" + +msgid "" +"The inertia to use when panning in the 3D editor. Higher values make the " +"camera start and stop slower, which looks smoother but adds latency." +msgstr "" +"在 3D 编辑器中进行平移时要使用的惯性。更高的值会使相机启动和停止更慢,这看起" +"来更流畅但会增加延迟。" + +msgid "" +"The inertia to use when zooming in the 3D editor. Higher values make the " +"camera start and stop slower, which looks smoother but adds latency." +msgstr "" +"在 3D 编辑器中进行缩放时要使用的惯性。更高的值会使相机启动和停止更慢,这看起" +"来更流畅但会增加延迟。" + +msgid "" +"The color to use for the primary 3D grid. The color's alpha channel affects " +"the grid's opacity." +msgstr "用于主要 3D 栅格的颜色。颜色的 Alpha 通道会影响栅格的不透明度。" + +msgid "" +"If set above 0, where a primary grid line should be drawn. By default, " +"primary lines are configured to be more visible than secondary lines. This " +"helps with measurements in the 3D editor. See also [member editors/3d/" +"primary_grid_color] and [member editors/3d/secondary_grid_color]." +msgstr "" +"如果被设置为大于 0 的值,则主栅格线应在其中被绘制。默认情况下,主栅格线被配置" +"的比次要栅格线更显眼。这有助于在 3D 编辑器中进行测量。另请参阅 [member " +"editors/3d/primary_grid_color] 和 [member editors/3d/secondary_grid_color]。" + +msgid "" +"The color to use for the secondary 3D grid. This is generally a less visible " +"color than [member editors/3d/primary_grid_color]. The color's alpha channel " +"affects the grid's opacity." +msgstr "" +"用于次要 3D 栅格的颜色。这通常是没有 [member editors/3d/primary_grid_color] " +"显眼的颜色。颜色的 Alpha 通道影响栅格的不透明度。" + +msgid "" +"The color to use for the selection box that surrounds selected nodes in the " +"3D editor viewport. The color's alpha channel influences the selection box's " +"opacity." +msgstr "" +"用于在 3D 编辑器视口中围绕选定节点的选择框的颜色。颜色的 Alpha 通道影响选择框" +"的不透明度。" + +msgid "" +"The color override to use for 3D editor gizmos if the [Node3D] in question " +"is part of an instantiated scene file (from the perspective of the current " +"scene)." +msgstr "" +"用于 3D 编辑器小工具的颜色覆盖,适用于相关的 [Node3D](从当前场景的角度看)属" +"于实例化场景文件的情况。" + msgid "The 3D editor gizmo color for [Joint3D]s and [PhysicalBone3D]s." -msgstr "[Joint3D] 和 [PhysicalBone3D] 的 3D 编辑器小工具颜色。" +msgstr "用于 [Joint3D] 和 [PhysicalBone3D] 的 3D 编辑器小工具颜色。" msgid "" "The 3D editor gizmo color for [CollisionShape3D]s, [VehicleWheel3D]s, " "[RayCast3D]s and [SpringArm3D]s." msgstr "" -"[CollisionShape3D]、[VehicleWheel3D]、[RayCast3D]、[SpringArm3D] 的 3D 编辑器" -"小工具颜色。" +"用于 [CollisionShape3D]、[VehicleWheel3D]、[RayCast3D]、[SpringArm3D] 的 3D " +"编辑器小工具颜色。" + +msgid "" +"If [code]true[/code], automatically updates animation tracks' target paths " +"when renaming or reparenting nodes in the Scene tree dock." +msgstr "" +"如果为 [code]true[/code],则在“场景”面板中重命名节点或重设节点的父节点时,会" +"自动更新动画轨道的目标路径。" + +msgid "" +"If [code]true[/code], display a confirmation dialog when adding a new track " +"to an animation by pressing the \"key\" icon next to a property." +msgstr "" +"如果为 [code]true[/code],则在按下属性旁的“钥匙”图标向动画中添加新轨道时,显" +"示确认对话框。" + +msgid "" +"If [code]true[/code], create a Bezier track instead of a standard track when " +"pressing the \"key\" icon next to a property. Bezier tracks provide more " +"control over animation curves, but are more difficult to adjust quickly." +msgstr "" +"如果为 [code]true[/code],则在按下属性旁的“钥匙”图标向动画中添加新轨道时,创" +"建贝塞尔轨道而不是标准轨道。贝塞尔轨道可以更精细地控制动画曲线,但调整的难度" +"也会大一些。" + +msgid "" +"If [code]true[/code], create a [code]RESET[/code] track when creating a new " +"animation track. This track can be used to restore the animation to a " +"\"default\" state." +msgstr "" +"如果为 [code]true[/code],则会在新建动画轨道时创建 [code]RESET[/code] 轨道。" +"这个轨道会用于将动画恢复到“默认”状态。" msgid "" "The modulate color to use for \"future\" frames displayed in the animation " "editor's onion skinning feature." -msgstr "“未来”帧的调制颜色,在动画编辑器的洋葱皮功能中显示。" +msgstr "调制颜色,用于在动画编辑器的洋葱皮功能中显示“未来”帧。" msgid "" "The modulate color to use for \"past\" frames displayed in the animation " "editor's onion skinning feature." -msgstr "“过去”帧的调制颜色,在动画编辑器的洋葱皮功能中显示。" +msgstr "调制颜色,用于在动画编辑器的洋葱皮功能中显示“过去”帧。" + +msgid "" +"The maximum distance at which tiles can be placed on a GridMap, relative to " +"the camera position (in 3D units)." +msgstr "可以在 GridMap 上放置图块的最大距离,相对于相机位置(使用 3D 单位)。" + +msgid "" +"The panning speed when using the mouse wheel or touchscreen events in the 2D " +"editor. This setting does not apply to panning by holding down the middle or " +"right mouse buttons." +msgstr "" +"在 2D 编辑器中使用鼠标滚轮或触摸屏事件进行平移的速度。该设置不适用于通过按住" +"鼠标中键或鼠标右键进行的平移。" + +msgid "" +"Controls whether the mouse wheel scroll zooms or pans in the 2D editor. See " +"also [member editors/panning/sub_editors_panning_scheme] and [member editors/" +"panning/animation_editors_panning_scheme]." +msgstr "" +"控制在 2D 编辑器中滚动鼠标滚轮是缩放还是平移。另请参阅 [member editors/" +"panning/sub_editors_panning_scheme] 和 [member editors/panning/" +"animation_editors_panning_scheme]。" + +msgid "" +"Controls whether the mouse wheel scroll zooms or pans in the animation track " +"and Bezier editors. See also [member editors/" +"panning/2d_editor_panning_scheme] and [member editors/panning/" +"sub_editors_panning_scheme] (which controls the animation blend tree " +"editor's pan behavior)." +msgstr "" +"控制在动画轨道编辑器和贝塞尔编辑器中滚动鼠标滚轮是缩放还是平移。另请参阅 " +"[member editors/panning/2d_editor_panning_scheme] 和 [member editors/panning/" +"sub_editors_panning_scheme](控制的是动画混合树编辑器中的平移行为)。" + +msgid "" +"If [code]true[/code], allows panning by holding down [kbd]Space[/kbd] in the " +"2D editor viewport (in addition to panning with the middle or right mouse " +"buttons). If [code]false[/code], the left mouse button must be held down " +"while holding down [kbd]Space[/kbd] to pan in the 2D editor viewport." +msgstr "" +"如果为 [code]true[/code],允许通过在 2D 编辑器视口中,按住 [kbd]Space[/kbd] " +"进行平移(除了使用鼠标中键或鼠标右键进行平移)。如果为 [code]false[/code],则" +"必须在按住 [kbd]Space[/kbd] 的同时,按住鼠标左键才能在 2D 编辑器视口中进行平" +"移。" + +msgid "" +"Controls whether the mouse wheel scroll zooms or pans in subeditors. The " +"list of affected subeditors is: animation blend tree editor, [Polygon2D] " +"editor, tileset editor, texture region editor and visual shader editor. See " +"also [member editors/panning/2d_editor_panning_scheme] and [member editors/" +"panning/animation_editors_panning_scheme]." +msgstr "" +"控制鼠标滚轮滚动在子编辑器中是缩放还是平移。受影响的子编辑器列表有:动画混合" +"树编辑器、[Polygon2D] 编辑器、图块集编辑器、纹理区域编辑器、和可视着色器编辑" +"器。另请参阅 [member editors/panning/2d_editor_panning_scheme] 和 [member " +"editors/panning/animation_editors_panning_scheme]。" + +msgid "" +"If [code]true[/code], warps the mouse around the 2D viewport while panning " +"in the 2D editor. This makes it possible to pan over a large area without " +"having to exit panning then mouse the mouse back constantly." +msgstr "" +"如果为 [code]true[/code],则在 2D 编辑器中平移时围绕 2D 视口扭曲鼠标。这使得" +"无需退出平移然后鼠标不断向后移动就可以在大区域上进行平移。" + +msgid "" +"The radius in which points can be selected in the [Polygon2D] and " +"[CollisionPolygon2D] editors (in pixels). Higher values make it easier to " +"select points quickly, but can make it more difficult to select the expected " +"point when several points are located close to each other." +msgstr "" +"在 [Polygon2D] 和 [CollisionPolygon2D] 编辑器中,点可以被选择的半径(以像素为" +"单位)。更高的值可以更轻松地快速地选择点,但是当多个点彼此靠近时,可能会使选" +"择想要的点变得更加困难。" + +msgid "" +"If [code]true[/code], displays the polygon's previous shape in the 2D " +"polygon editors with an opaque gray outline. This outline is displayed while " +"dragging a point until the left mouse button is released." +msgstr "" +"如果为 [code]true[/code],则在 2D 多边形编辑器中,以不透明的灰色轮廓,显示多" +"边形先前的形状。拖动一个点直到释放鼠标左键前,会显示该轮廓。" + +msgid "" +"If [code]true[/code], displays a grid while the TileMap editor is active. " +"See also [member editors/tiles_editor/grid_color]." +msgstr "" +"如果为 [code]true[/code],则在 TileMap 编辑器处于活动状态时显示一个栅格。另请" +"参阅 [member editors/tiles_editor/grid_color]。" + +msgid "" +"The color to use for the TileMap editor's grid.\n" +"[b]Note:[/b] Only effective if [member editors/tiles_editor/display_grid] is " +"[code]true[/code]." +msgstr "" +"用于 TileMap 编辑器栅格的颜色。\n" +"[b]注意:[/b]仅当 [member editors/tiles_editor/display_grid] 为 [code]true[/" +"code] 时有效。" + +msgid "" +"The curvature to use for connection lines in the visual shader editor. " +"Higher values will make connection lines appear more curved, with values " +"above [code]0.5[/code] resulting in more \"angular\" turns in the middle of " +"connection lines." +msgstr "" +"用于可视着色器编辑器中连接线的曲率。更高的值会使连接线看起来更弯曲,值高于 " +"[code]0.5[/code] 会导致连接线中间出现更多“角度”转折。" + +msgid "" +"The opacity of the minimap displayed in the bottom-right corner of the " +"visual shader editor." +msgstr "在可视着色器编辑器的右下角显示的小地图的不透明度。" + +msgid "" +"The size to use for port previews in the visual shader uniforms (toggled by " +"clicking the \"eye\" icon next to an output). The value is defined in pixels " +"at 100% zoom, and will scale with zoom automatically." +msgstr "" +"在可视着色器 uniform 中用于端口预览的大小(通过点击输出旁边的“眼睛”图标进行切" +"换)。该值以像素为单位且以 100% 缩放时的值定义,并将随缩放自动缩放。" + +msgid "" +"The folder where projects should be scanned for (recursively), in a way " +"similar to the project manager's [b]Scan[/b] button. This can be set to the " +"same value as [member filesystem/directories/default_project_path] for " +"convenience.\n" +"[b]Note:[/b] Setting this path to a folder with very large amounts of files/" +"folders can slow down the project manager startup significantly. To keep the " +"project manager quick to start up, it is recommended to set this value to a " +"folder as \"specific\" as possible." +msgstr "" +"项目应该被(递归地)扫描的文件夹,其方式类似于项目经理的[b]扫描[/b]按钮。为方" +"便起见,可以将其设置为与 [member filesystem/directories/" +"default_project_path] 相同的值。\n" +"[b]注意:[/b]将该路径设置为一个包含大量文件/文件夹的文件夹,会显著减慢项目管" +"理器的启动速度。为了让项目管理器快速启动,建议将该值设置为一个尽可能“具体”的" +"文件夹。" + +msgid "" +"The folder where new projects should be created by default when clicking the " +"project manager's [b]New Project[/b] button. This can be set to the same " +"value as [member filesystem/directories/autoscan_project_path] for " +"convenience." +msgstr "" +"点击项目管理器的[b]新建项目[/b]按钮时,默认应在其中创建新项目的文件夹。为方便" +"起见,可以将其设置为与 [member filesystem/directories/autoscan_project_path] " +"相同的值。" msgid "" "The program that opens 3D model scene files when clicking \"Open in External " @@ -31060,13 +39749,56 @@ msgid "" "The thumbnail size to use in the editor's file dialogs (in pixels). See also " "[member docks/filesystem/thumbnail_size]." msgstr "" -"编辑器的文件对话框中使用的缩略图尺寸(单位为像素)。另见 [member docks/" +"编辑器的文件对话框中使用的缩略图大小(单位为像素)。另请参阅 [member docks/" "filesystem/thumbnail_size]。" msgid "If [code]true[/code], uses lossless compression for binary resources." msgstr "如果为 [code]true[/code],则对二进制资源使用无损压缩。" msgid "" +"If [code]true[/code], when saving a file, the editor will rename the old " +"file to a different name, save a new file, then only remove the old file " +"once the new file has been saved. This makes loss of data less likely to " +"happen if the editor or operating system exits unexpectedly while saving (e." +"g. due to a crash or power outage).\n" +"[b]Note:[/b] On Windows, this feature can interact negatively with certain " +"antivirus programs. In this case, you may have to set this to [code]false[/" +"code] to prevent file locking issues." +msgstr "" +"如果为 [code]true[/code],当保存文件时,编辑器会将旧文件重命名为不同的名称," +"保存一个新文件,然后只有在新文件保存后,才删除旧文件。如果编辑器或操作系统在" +"保存时意外退出(例如,由于崩溃或断电),这会降低数据丢失的可能性。\n" +"[b]注意:[/b]在 Windows 上,该功能可能会与某些防病毒程序产生负面的交互。在这" +"种情况下,可能必须将其设置为 [code]false[/code],以防止出现文件锁定问题。" + +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 " +"overridden using this setting. This is useful if you use Godot both on " +"Windows and macOS/Linux and your Godot muscle memory is stronger than your " +"OS specific one.\n" +"- [b]Auto[/b] follows the platform convention: Cancel first on macOS and " +"Linux, OK first on Windows.\n" +"- [b]Cancel First[/b] forces the ordering Cancel/OK.\n" +"- [b]OK First[/b] forces the ordering OK/Cancel." +msgstr "" +"如何在编辑器的 [AcceptDialog] 中定位取消和确定按钮。不同的平台有不同的标准行" +"为,可以用这个设置来覆盖。如果你在 Windows 和 macOS/Linux 上都使用 Godot,而" +"且你的 Godot 肌肉记忆比你的操作系统记忆更强,那么这一点很有用。\n" +"- [b]Auto[/b] 遵守平台约定:在 macOS 和 Linux 上取消在前,在 Windows 上确定在" +"前。\n" +"- [b]Cancel First[/b] 强制为取消/确定的顺序。\n" +"- [b]OK First[/b] 强制为确定/取消的顺序。" + +msgid "" +"If [code]true[/code], automatically opens screenshots with the default " +"program associated to [code].png[/code] files after a screenshot is taken " +"using the [b]Editor > Take Screenshot[/b] action." +msgstr "" +"如果为 [code]true[/code],则在使用[b]编辑器 > 截图[/b]动作截取屏幕截图后,使" +"用与 [code].png[/code] 文件关联的默认程序自动打开该屏幕截图。" + +msgid "" "The font to use for the script editor. Must be a resource of a [Font] type " "such as a [code].ttf[/code] or [code].otf[/code] font file." msgstr "" @@ -31079,9 +39811,9 @@ msgid "" "[b]Note:[/b] The default editor code font ([url=https://www.jetbrains.com/lp/" "mono/]JetBrains Mono[/url]) has contextual ligatures in its font file." msgstr "" -"要启用的字体连字,用于当前配置的代码字体。不是所有字体都支持连字。\n" -"[b]注意:[/b]默认的编辑器代码字体([url=https://www.jetbrains.com/lp/" -"mono/]JetBrains Mono[/url])的字体文件中有上下文连字。" +"为当前配置的代码字体启用的字体连字。并非所有字体都包含对连字的支持。\n" +"[b]注意:[/b]编辑器默认的代码字体([url=https://www.jetbrains.com/lp/" +"mono/]JetBrains Mono[/url])在其字体文件中具有上下文连字。" msgid "" "List of custom OpenType features to use, if supported by the currently " @@ -31091,11 +39823,11 @@ msgid "" "mono/]JetBrains Mono[/url]) has custom OpenType features in its font file, " "but there is no documented list yet." msgstr "" -"要使用的自定义 OpenType 特性列表,需要当前配置的代码字体支持。不是所有字体都" -"支持自定义 OpenType 特定。该字符串应遵循 OpenType 规范。\n" -"[b]注意:[/b]默认的编辑器代码字体([url=https://www.jetbrains.com/lp/" -"mono/]JetBrains Mono[/url])的字体文件中有自定义 OpenType 特性,但还没有文档" -"进行列举。" +"要使用的自定义 OpenType 特性列表,需要当前配置的代码字体支持。并非所有字体都" +"支持自定义 OpenType 特性。该字符串应遵循 OpenType 规范。\n" +"[b]注意:[/b]编辑器默认的代码字体([url=https://www.jetbrains.com/lp/" +"mono/]JetBrains Mono[/url])在其字体文件中具有自定义 OpenType 特性,但是目前" +"还没有文档记录的清单。" msgid "" "List of alternative characters to use, if supported by the currently " @@ -31105,10 +39837,60 @@ msgid "" "mono/]JetBrains Mono[/url]) has alternate characters in its font file, but " "there is no documented list yet." msgstr "" -"要使用的备选字符列表,需要当前配置的代码字体支持。不是所有字体都支持自定义变" +"要使用的备选字符列表,需要当前配置的代码字体支持。并非所有字体都支持自定义变" "体。该字符串应遵循 OpenType 规范。\n" -"[b]注意:[/b]默认的编辑器代码字体([url=https://www.jetbrains.com/lp/" -"mono/]JetBrains Mono[/url])的字体文件中有备选字符,但还没有文档进行列举。" +"[b]注意:[/b]编辑器默认的代码字体([url=https://www.jetbrains.com/lp/" +"mono/]JetBrains Mono[/url])在其字体文件中有备选字符,但是有还没有文档记录的" +"清单。" + +msgid "" +"The size of the font in the script editor. This setting does not impact the " +"font size of the Output panel (see [member run/output/font_size])." +msgstr "" +"脚本编辑器中的字体大小。该设置不会影响“输出”面板的字体大小(请参阅 [member " +"run/output/font_size])。" + +msgid "" +"The custom editor scale factor to use. This can be used for displays with " +"very high DPI where a scale factor of 200% is not sufficient.\n" +"[b]Note:[/b] Only effective if [member interface/editor/display_scale] is " +"set to [b]Custom[/b]." +msgstr "" +"要使用的自定义编辑器缩放系数。这可用于具有非常高 DPI 的显示器,其中 200% 的缩" +"放系数是不够的。\n" +"[b]注意:[/b]只有当 [member interface/editor/display_scale] 被设置为 [b]自定" +"义(Custom)[/b] 时才有效。" + +msgid "" +"If [code]true[/code], lengthens the editor's localizable strings and " +"replaces their characters with accented variants. This allows spotting non-" +"localizable strings easily, while also ensuring the UI layout doesn't break " +"when strings are made longer (as many languages require strings to be " +"longer).\n" +"This is a debugging feature and should only be enabled when working on the " +"editor itself." +msgstr "" +"如果为 [code]true[/code],则延长编辑器的可本地化字符串,并将其字符替换为重音" +"变体。这允许轻松发现不可本地化的字符串,同时还确保 UI 布局在字符串变长时不会" +"中断(因为许多语言会要求字符串变长)。\n" +"这是一个调试功能,只有在编辑器本身工作时才能启用。" + +msgid "" +"The display scale factor to use for the editor interface. Higher values are " +"more suited to hiDPI/Retina displays.\n" +"If set to [b]Auto[/b], the editor scale is automatically determined based on " +"the screen resolution and reported display DPI. This heuristic is not always " +"ideal, which means you can get better results by setting the editor scale " +"manually.\n" +"If set to [b]Custom[/b], the scaling value in [member interface/editor/" +"custom_display_scale] will be used." +msgstr "" +"用于编辑器界面的显示缩放系数。更高的值更适合 hiDPI/Retina 显示器。\n" +"如果被设置为 [b]Auto[/b],则编辑器缩放将根据屏幕分辨率和报告的显示 DPI 自动确" +"定。这种启发式算法并不总是理想的,这意味着可以通过手动设置编辑器缩放来获得更" +"好的结果。\n" +"如果被设置为 [b]Custom[/b],则将使用 [member interface/editor/" +"custom_display_scale] 中的缩放值。" msgid "" "The language to use for the editor interface.\n" @@ -31117,7 +39899,7 @@ msgid "" "html]contribute to editor translations on Weblate![/url]" msgstr "" "用于编辑器界面的语言。\n" -"翻译由社区提供。如果您发现错误,[url=$DOCS_URL/contributing/documentation/" +"翻译由社区提供。如果发现错误,[url=$DOCS_URL/contributing/documentation/" "editor_and_docs_localization.html]请在 Weblate 上为编辑器翻译作出贡献![/url]" msgid "" @@ -31137,10 +39919,144 @@ msgstr "" "FreeType 的字体抗锯齿模式,用于渲染编辑器字体。大多数字体在禁用抗锯齿的情况下" "并不好看,所以建议保持启用,除非你使用的是像素风字体。" +msgid "" +"The font hinting mode to use for the editor fonts. FreeType supports the " +"following font hinting modes:\n" +"- [b]None:[/b] Don't use font hinting when rasterizing the font. This " +"results in a smooth font, but it can look blurry.\n" +"- [b]Light:[/b] Use hinting on the X axis only. This is a compromise between " +"font sharpness and smoothness.\n" +"- [b]Normal:[/b] Use hinting on both X and Y axes. This results in a sharp " +"font, but it doesn't look very smooth.\n" +"If set to [b]Auto[/b], the font hinting mode will be set to match the " +"current operating system in use. This means the [b]Light[/b] hinting mode " +"will be used on Windows and Linux, and the [b]None[/b] hinting mode will be " +"used on macOS." +msgstr "" +"用于编辑器字体的字体提示模式。FreeType 支持以下字体提示模式:\n" +"- [b]无(None):[/b]光栅化字体时不使用字体提示。这会产生一个流畅的字体,但看" +"起来可能会模糊。\n" +"- [b]Light:[/b]仅在 X 轴上使用提示。这是字体清晰度和平滑度之间的折衷。\n" +"- [b]Normal:[/b]在 X 和 Y 轴上使用提示。这会产生清晰的字体,但看起来不是很流" +"畅。\n" +"如果被设置为 [b]Auto[/b],字体提示模式将被设置为匹配当前使用的操作系统。这意" +"味着 [b]Light[/b] 提示模式将在 Windows 和 Linux 上使用,而 [b]None[/b] 提示模" +"式将在 macOS 上使用。" + +msgid "" +"The subpixel positioning mode to use when rendering editor font glyphs. This " +"affects both the main and code fonts. [b]Disabled[/b] is the fastest to " +"render and uses the least memory. [b]Auto[/b] only uses subpixel positioning " +"for small font sizes (where the benefit is the most noticeable). [b]One Half " +"of a Pixel[/b] and [b]One Quarter of a Pixel[/b] force the same subpixel " +"positioning mode for all editor fonts, regardless of their size (with [b]One " +"Quarter of a Pixel[/b] being the highest-quality option)." +msgstr "" +"渲染编辑器字体字形时要使用的子像素定位模式。这对主字体和代码字体都有影响。[b]" +"禁用[/b] ,渲染速度最快,使用的内存最少。[b]自动[/b] ,只对小尺寸的字体使用子" +"像素定位(这里的好处是最明显的)。[b]二分之一像素[/b]和[b]四分之一像素[/b]对" +"所有编辑器字体强制使用相同的子像素定位模式,无论其大小如何(其中[b]四分之一像" +"素[/b]是最高质量的选项)。" + +msgid "" +"The amount of sleeping between frames when the low-processor usage mode is " +"enabled (in microseconds). Higher values will result in lower CPU/GPU usage, " +"which can improve battery life on laptops. However, higher values will " +"result in a less responsive editor. The default value is set to allow for " +"maximum smoothness on monitors up to 144 Hz. See also [member interface/" +"editor/unfocused_low_processor_mode_sleep_usec]." +msgstr "" +"启用低处理器使用模式时帧之间的睡眠时间(以微秒为单位)。更高的值将导致更低的 " +"CPU/GPU 使用率,这可以延长笔记本电脑的电池寿命。但是,更高的值会导致编辑器的" +"响应速度更慢。默认值设置为允许在高达 144 Hz 的显示器上实现最大流畅度。另见 " +"[member interface/editor/unfocused_low_processor_mode_sleep_usec]。" + +msgid "" +"The font to use for the editor interface. Must be a resource of a [Font] " +"type such as a [code].ttf[/code] or [code].otf[/code] font file." +msgstr "" +"用于编辑器界面的字体。必须是 [Font] 类型的资源,例如 [code].ttf[/code] 或 " +"[code].otf[/code] 字体文件。" + +msgid "" +"The font to use for bold text in the editor interface. Must be a resource of " +"a [Font] type such as a [code].ttf[/code] or [code].otf[/code] font file." +msgstr "" +"用于编辑器界面中粗体文本的字体。必须是 [Font] 类型的资源,例如 [code].ttf[/" +"code] 或 [code].otf[/code] 字体文件。" + msgid "The size of the font in the editor interface." msgstr "编辑器界面中字体的大小。" msgid "" +"If [code]true[/code], the mouse's additional side buttons will be usable to " +"navigate in the script editor's file history. Set this to [code]false[/code] " +"if you're using the side buttons for other purposes (such as a push-to-talk " +"button in a VoIP program)." +msgstr "" +"如果为 [code]true[/code],鼠标的额外侧键将可用于在脚本编辑器的文件历史记录中" +"导航。如果正将侧键用于其他目的(例如 VoIP 程序中的一键通按钮),请将该项设置" +"为 [code]false[/code]。" + +msgid "" +"If [code]true[/code], the editor will save all scenes when confirming the " +"[b]Save[/b] action when quitting the editor or quitting to the project list. " +"If [code]false[/code], the editor will ask to save each scene individually." +msgstr "" +"如果为 [code]true[/code],当正退出编辑器或正退出到项目列表时,确认[b]保存[/b]" +"动作后,编辑器将保存所有场景。如果为 [code]false[/code],则编辑器将要求单独保" +"存每个场景。" + +msgid "" +"If [code]true[/code], the editor's Script tab will have a separate " +"distraction mode setting from the 2D/3D/AssetLib tabs. If [code]false[/" +"code], the distraction-free mode toggle is shared between all tabs." +msgstr "" +"如果为 [code]true[/code],则编辑器的 Script 选项卡,将具有与 2D/3D/AssetLib " +"选项卡不同的干扰模式设置。如果为 [code]false[/code],无干扰模式切换在所有选项" +"卡之间共享。" + +msgid "" +"If enabled, displays internal engine errors in toast notifications " +"(toggleable by clicking the \"bell\" icon at the bottom of the editor). No " +"matter the value of this setting, non-internal engine errors will always be " +"visible in toast notifications.\n" +"The default [b]Auto[/b] value will only enable this if the editor was " +"compiled with the [code]dev=yes[/code] option (the default is [code]dev=no[/" +"code])." +msgstr "" +"如果启用,则会使用吐司通知的形式显示引擎的内部错误(可通过点击编辑器底部的“铃" +"铛”图标切换)。无论这个设置项是什么值,非引擎内部错误都会在吐司通知中显示。\n" +"默认的 [b]Auto[/b] 只会在使用 [code]dev=yes[/code] 选项(默认为 " +"[code]dev=no[/code])编译的编辑器中启用这个行为。" + +msgid "" +"If [code]true[/code], embed modal windows such as docks inside the main " +"editor window. When single-window mode is enabled, tooltips will also be " +"embedded inside the main editor window, which means they can't be displayed " +"outside of the editor window." +msgstr "" +"如果为 [code]true[/code],则在主编辑器窗口中嵌入停靠面板等模态窗口。当启用单" +"窗口模式时,工具提示也将被嵌入到主编辑器窗口中,这意味着它们不能显示在编辑器" +"窗口之外。" + +msgid "" +"When the editor window is unfocused, the amount of sleeping between frames " +"when the low-processor usage mode is enabled (in microseconds). Higher " +"values will result in lower CPU/GPU usage, which can improve battery life on " +"laptops (in addition to improving the running project's performance if the " +"editor has to redraw continuously). However, higher values will result in a " +"less responsive editor. The default value is set to limit the editor to 20 " +"FPS when the editor window is unfocused. See also [member interface/editor/" +"low_processor_mode_sleep_usec]." +msgstr "" +"当编辑器窗口未聚焦时,启用低处理器使用模式时帧之间的睡眠量(以微秒为单位)。" +"更高的值将导致更低的 CPU/GPU 使用率,这可以延长笔记本电脑的电池寿命(如果编辑" +"器必须连续重绘,还可以提高正在运行的项目的性能)。但是,更高的值会导致编辑器" +"的响应速度变慢。默认值设置会在编辑器窗口未聚焦时,将编辑器限制为 20 FPS。另" +"见 [member interface/editor/low_processor_mode_sleep_usec]。" + +msgid "" "If [code]true[/code], editor main menu is using embedded [MenuBar] instead " "of system global menu.\n" "Specific to the macOS platform." @@ -31150,6 +40066,23 @@ msgstr "" "专用于 macOS 平台。" msgid "" +"The number of [Array] or [Dictionary] items to display on each \"page\" in " +"the inspector. Higher values allow viewing more values per page, but take " +"more time to load. This increased load time is noticeable when selecting " +"nodes that have array or dictionary properties in the editor." +msgstr "" +"在检查器中,为 [Array] 或 [Dictionary] 的每一“页”显示多少项目。值越高,每一页" +"可以查看的值就越多,但也会花越多的时间进行加载。在编辑器中选中具有很多数组或" +"字典属性的节点时,这些多出来的加载时间就会很显著。" + +msgid "" +"If [code]true[/code], display OpenType features marked as [code]hidden[/" +"code] by the font file in the [Font] editor." +msgstr "" +"如果为 [code]true[/code],则在 [Font] 编辑器中,显示被字体文件标记为 " +"[code]hidden[/code] 的 OpenType 特性。" + +msgid "" "Controls when the Close (X) button is displayed on scene tabs at the top of " "the editor." msgstr "控制关闭(X)按钮何时显示在编辑器顶部的场景选项卡上。" @@ -31157,22 +40090,124 @@ msgstr "控制关闭(X)按钮何时显示在编辑器顶部的场景选项 msgid "The maximum width of each scene tab at the top editor (in pixels)." msgstr "顶部编辑器中每个场景选项卡的最大宽度(以像素为单位)。" +msgid "" +"If [code]true[/code], show a button next to each scene tab that opens the " +"scene's \"dominant\" script when clicked. The \"dominant\" script is the one " +"that is at the highest level in the scene's hierarchy." +msgstr "" +"如果为 [code]true[/code],则在每个场景选项卡旁边显示一个按钮,点击该按钮会打" +"开场景的“主导”脚本。“主导”脚本是场景层次结构中位于最高级别的脚本。" + +msgid "" +"If [code]true[/code], display an automatically-generated thumbnail when " +"hovering scene tabs with the mouse. Scene thumbnails are generated when " +"saving the scene." +msgstr "" +"如果为 [code]true[/code],当鼠标悬停在场景选项卡上时,会显示自动生成的缩略" +"图。场景缩略图在保存场景时生成。" + +msgid "" +"The color to use for \"highlighted\" user interface elements in the editor " +"(pressed and hovered items)." +msgstr "用于编辑器中“高亮显示”的用户界面元素(按下和悬停的项目)的颜色。" + +msgid "" +"The spacing to add for buttons and list items in the editor (in pixels). " +"Increasing this value is useful to improve usability on touch screens, at " +"the cost of reducing the amount of usable screen real estate." +msgstr "" +"在编辑器中为按钮和列表项添加的间距(以像素为单位)。增加该值有助于提高触摸屏" +"的可用性,但代价是减少可用屏幕空间。" + +msgid "" +"The base color to use for user interface elements in the editor. Secondary " +"colors (such as darker/lighter variants) are derived from this color." +msgstr "" +"用于编辑器中用户界面元素的基色。次要颜色(例如较深/较浅的变体)是从这种颜色派" +"生的。" + msgid "The border size to use for interface elements (in pixels)." msgstr "界面元素的边框大小(单位为像素)。" msgid "" +"The contrast factor to use when deriving the editor theme's base color (see " +"[member interface/theme/base_color]). When using a positive values, the " +"derived colors will be [i]darker[/i] than the base color. This contrast " +"factor can be set to a negative value, which will make the derived colors " +"[i]brighter[/i] than the base color. Negative contrast rates often look " +"better for light themes." +msgstr "" +"当派生编辑器主题的基色时,使用的对比度系数(参见 [member interface/theme/" +"base_color])。当使用正值时,派生的颜色将比基色[i]更深[/i]。该对比度系数可以" +"设置为负值,这将使派生颜色比基色[i]更浅[/i]。对于浅色主题,负对比度通常看起来" +"更好。" + +msgid "" "The corner radius to use for interface elements (in pixels). [code]0[/code] " "is square." msgstr "界面元素的圆角半径(单位为像素)。[code]0[/code] 则为正方形。" +msgid "" +"The custom theme resource to use for the editor. Must be a Godot theme " +"resource in [code].tres[/code] or [code].res[/code] format." +msgstr "" +"用于编辑器的自定义主题资源。必须是 [code].tres[/code] 或 [code].res[/code] 格" +"式的 Godot 主题资源。" + +msgid "" +"If [code]true[/code], draws additional borders around interactive UI " +"elements in the editor. This is automatically enabled when using the " +"[b]Black (OLED)[/b] theme preset, as this theme preset uses a fully black " +"background." +msgstr "" +"如果 [code]true[/code],则在编辑器中的交互式 UI 元素周围绘制额外的边框。使用" +"[b]Black (OLED)[/b]主题预设时该项会自动启用,因为该主题预设使用全黑背景。" + +msgid "" +"The icon and font color scheme to use in the editor.\n" +"- [b]Auto[/b] determines the color scheme to use automatically based on " +"[member interface/theme/base_color].\n" +"- [b]Dark[/b] makes fonts and icons light (suitable for dark themes).\n" +"- [b]Light[/b] makes fonts and icons dark (suitable for light themes). Icon " +"colors are automatically converted by the editor following [url=https://" +"github.com/godotengine/godot/blob/master/editor/editor_themes.cpp#L135]this " +"set of rules[/url]." +msgstr "" +"在编辑器中使用的图标和字体的配色方案。\n" +"- [b]Auto[/b] 根据 [member interface/theme/base_color] 自动确定要使用的配色方" +"案。\n" +"- [b]Dark[/b] 使字体和图标变亮(适合深色主题)。\n" +"- [b]Light[/b] 使字体和图标变暗(适合浅色主题)。图标颜色由编辑器按照" +"[url=https://github.com/godotengine/godot/blob/master/editor/editor_themes." +"cpp#L135]这组规则[/url]自动转换。" + +msgid "" +"The saturation to use for editor icons. Higher values result in more vibrant " +"colors.\n" +"[b]Note:[/b] The default editor icon saturation was increased by 30% in " +"Godot 4.0 and later. To get Godot 3.x's icon saturation back, set [member " +"interface/theme/icon_saturation] to [code]0.77[/code]." +msgstr "" +"用于编辑器图标的饱和度。值越高,颜色越鲜艳。\n" +"[b]注意:[/b]在 Godot 4.0 及更高版本中,默认编辑器图标饱和度增加了 30%。要恢" +"复为 Godot 3.x 的图标饱和度,请将 [member interface/theme/icon_saturation] 设" +"置为 [code]0.77[/code]。" + msgid "The editor theme preset to use." msgstr "要使用的编辑器主题预设。" msgid "" +"The opacity to use when drawing relationship lines in the editor's [Tree]-" +"based GUIs (such as the Scene tree dock)." +msgstr "" +"在编辑器的基于 [Tree] 的 GUI(例如场景树停靠栏)中,绘制关系线时使用的不透明" +"度。" + +msgid "" "If [code]true[/code], long press on touchscreen is treated as right click.\n" "[b]Note:[/b] Defaults to [code]true[/code] on touchscreen devices." msgstr "" -"如果为 [code]true[/code],长按触摸屏被视为右键单击。\n" +"如果为 [code]true[/code],长按触摸屏被视为右键点击。\n" "[b]注意:[/b]在触摸屏设备上默认为 [code]true[/code]。" msgid "" @@ -31192,29 +40227,182 @@ msgstr "" "[b]注意:[/b]在触摸屏设备上默认为 [code]true[/code]。" msgid "" +"The address to listen to when starting the remote debugger. This can be set " +"to [code]0.0.0.0[/code] to allow external clients to connect to the remote " +"debugger (instead of restricting the remote debugger to connections from " +"[code]localhost[/code])." +msgstr "" +"启动远程调试器时要监听的地址。这可以设置为 [code]0.0.0.0[/code] 以允许外部客" +"户端连接到远程调试器(而不是将远程调试器限制为来自 [code]localhost[/code] 的" +"连接)。" + +msgid "" +"The port to listen to when starting the remote debugger. Godot will try to " +"use port numbers above the configured number if the configured number is " +"already taken by another application." +msgstr "" +"启动远程调试器时要监听的端口。如果配置的数字已被另一个应用程序占用,Godot 将" +"尝试使用高于该配置数字的端口号。" + +msgid "" +"The host to use to contact the HTTP and HTTPS proxy in the editor (for the " +"asset library and export template downloads). See also [member network/" +"http_proxy/port].\n" +"[b]Note:[/b] Godot currently doesn't automatically use system proxy " +"settings, so you have to enter them manually here if needed." +msgstr "" +"用于在编辑器中联系 HTTP 和 HTTPS 代理的主机(用于资产库和导出模板下载)。另" +"见 [member network/http_proxy/port]。\n" +"[b]注意:[/b]Godot 目前不会自动使用系统代理设置,所以如果需要,必须在此处手动" +"输入。" + +msgid "" +"The port number to use to contact the HTTP and HTTPS proxy in the editor " +"(for the asset library and export template downloads). See also [member " +"network/http_proxy/host].\n" +"[b]Note:[/b] Godot currently doesn't automatically use system proxy " +"settings, so you have to enter them manually here if needed." +msgstr "" +"用于在编辑器中联系 HTTP 和 HTTPS 代理的端口号(用于资产库和导出模板下载)。另" +"请参阅 [member network/http_proxy/host]。\n" +"[b]注意:[/b]Godot 目前不会自动使用系统代理设置,所以如果需要,必须在此处手动" +"输入。" + +msgid "" "The TLS certificate bundle to use for HTTP requests made within the editor " "(e.g. from the AssetLib tab). If left empty, the [url=https://github.com/" "godotengine/godot/blob/master/thirdparty/certs/ca-certificates.crt]included " "Mozilla certificate bundle[/url] will be used." msgstr "" -"用于在编辑器中发出的 HTTP 请求的 TLS 证书包(例如来自 AssetLib 选项卡)。如果" -"留空,将使用 [url=https://github.com/godotengine/godot/blob/master/" -"thirdparty/certs/ca-certificates.crt]包含的 Mozilla 证书包[/url]。" +"用于在编辑器中发出的 HTTP 请求(例如来自 AssetLib 选项卡)的 TLS 证书包。如果" +"留空,将使用[url=https://github.com/godotengine/godot/blob/master/thirdparty/" +"certs/ca-certificates.crt]包含的 Mozilla 证书包[/url]。" + +msgid "" +"The renderer type that will be checked off by default when creating a new " +"project. Accepted strings are \"forward_plus\", \"mobile\" or " +"\"gl_compatibility\"." +msgstr "" +"创建新项目时默认勾选的渲染器类型。可接受的字符串是“forward_plus”、“mobile”、" +"或“gl_compatibility”。" + +msgid "" +"The sorting order to use in the project manager. When changing the sorting " +"order in the project manager, this setting is set permanently in the editor " +"settings." +msgstr "" +"在项目管理器中使用的排序顺序。在项目管理器中更改排序顺序时,该设置将在编辑器" +"设置中被永久设置。" + +msgid "" +"If [code]true[/code], saves all scenes and scripts automatically before " +"running the project. Setting this to [code]false[/code] prevents the editor " +"from saving if there are no changes which can speed up the project startup " +"slightly, but it makes it possible to run a project that has unsaved " +"changes. (Unsaved changes will not be visible in the running project.)" +msgstr "" +"如果为 [code]true[/code],则在运行游戏项目之前会自动保存所有场景和脚本。将该" +"项设置为 [code]false[/code] 可防止编辑器在没有更改的情况下保存,这可以稍微加" +"快该游戏项目的启动速度,但它可以运行带有未保存的更改的游戏项目。(未保存的更" +"改在正在运行的项目中将不可见。)" msgid "" "If [code]true[/code], the editor will clear the Output panel when running " "the project." -msgstr "如果为 [code]true[/code],则编辑器会在运行项目时清空“输出”面板。" +msgstr "如果为 [code]true[/code],则编辑器会在运行游戏项目时清空“输出”面板。" msgid "" "If [code]true[/code], the editor will collapse the Output panel when " "stopping the project." -msgstr "如果为 [code]true[/code],则编辑器会在停止项目时折叠“输出”面板。" +msgstr "如果为 [code]true[/code],则编辑器会在停止游戏项目时折叠“输出”面板。" msgid "" "If [code]true[/code], the editor will expand the Output panel when running " "the project." -msgstr "如果为 [code]true[/code],则编辑器会在运行项目时展开“输出”面板。" +msgstr "如果为 [code]true[/code],则编辑器会在运行游戏项目时展开“输出”面板。" + +msgid "" +"The size of the font in the [b]Output[/b] panel at the bottom of the editor. " +"This setting does not impact the font size of the script editor (see [member " +"interface/editor/code_font_size])." +msgstr "" +"编辑器底部[b]输出[/b]面板中的字体大小。该设置不会影响脚本编辑器的字体大小" +"(见 [member interface/editor/code_font_size])。" + +msgid "" +"The window mode to use to display the project when starting the project from " +"the editor." +msgstr "从编辑器启动游戏项目时,用于显示该游戏项目的窗口模式。" + +msgid "" +"The custom position to use when starting the project from the editor (in " +"pixels from the top-left corner). Only effective if [member run/" +"window_placement/rect] is set to [b]Custom Position[/b]." +msgstr "" +"从编辑器启动游戏项目时,使用的自定义位置(相对于左上角,单位为像素)。仅当 " +"[member run/window_placement/rect] 设置为 [b]Custom Position[/b] 时才有效。" + +msgid "" +"The monitor to display the project on when starting the project from the " +"editor." +msgstr "从编辑器启动游戏项目时,用于显示该游戏项目的显示屏。" + +msgid "" +"If [code]true[/code], makes the caret blink according to [member text_editor/" +"appearance/caret/caret_blink_interval]. Disabling this setting can improve " +"battery life on laptops if you spend long amounts of time in the script " +"editor, since it will reduce the frequency at which the editor needs to be " +"redrawn." +msgstr "" +"如果为 [code]true[/code] ,则文本光标按照 [member text_editor/appearance/" +"caret/caret_blink_interval] 来闪烁。如果长时间使用脚本编辑器,禁用这个设置可" +"以改善笔记本电脑的电池寿命,因为可以减少编辑器需要重绘的频率。" + +msgid "" +"The interval at which to blink the caret (in seconds). See also [member " +"text_editor/appearance/caret/caret_blink]." +msgstr "" +"文本光标闪烁的时间间隔(单位为秒)。另见 [member text_editor/appearance/" +"caret/caret_blink]。" + +msgid "" +"If [code]true[/code], highlights all occurrences of the currently selected " +"text in the script editor. See also [member text_editor/theme/highlighting/" +"word_highlighted_color]." +msgstr "" +"如果为 [code]true[/code],则在脚本编辑器中高亮显示当前所选文本的所有匹配项。" +"另请参阅 [member text_editor/theme/highlighting/word_highlighted_color]。" + +msgid "" +"If [code]true[/code], colors the background of the line the caret is " +"currently on with [member text_editor/theme/highlighting/current_line_color]." +msgstr "" +"如果为 [code]true[/code],则使用 [member text_editor/theme/highlighting/" +"current_line_color] 为文本光标当前所在行的背景着色。" + +msgid "" +"The shape of the caret to use in the script editor. [b]Line[/b] displays a " +"vertical line to the left of the current character, whereas [b]Block[/b] " +"displays a outline over the current character." +msgstr "" +"在脚本编辑器中使用的文本光标的形状。[b]Line[/b] 会在当前字符的左侧显示一条垂" +"直线,而 [b]Block[/b] 会在当前字符上方显示一个轮廓。" + +msgid "" +"The column at which to display a subtle line as a line length guideline for " +"scripts. This should generally be greater than [member text_editor/" +"appearance/guidelines/line_length_guideline_soft_column]." +msgstr "" +"在哪列将细线显示为脚本的行长参考线。这通常应该大于 [member text_editor/" +"appearance/guidelines/line_length_guideline_soft_column]。" + +msgid "" +"The column at which to display a [i]very[/i] subtle line as a line length " +"guideline for scripts. This should generally be lower than [member " +"text_editor/appearance/guidelines/line_length_guideline_hard_column]." +msgstr "" +"在哪行将一条[i]非常[/i]细的线显示为脚本的行长参考线。这通常应该低于 [member " +"text_editor/appearance/guidelines/line_length_guideline_hard_column]。" msgid "" "If [code]true[/code], displays line length guidelines to help you keep line " @@ -31222,12 +40410,26 @@ msgid "" "line_length_guideline_soft_column] and [member text_editor/appearance/" "guidelines/line_length_guideline_hard_column]." msgstr "" -"如果为 [code]true[/code],则显示行长度参考线,帮助你控制行长度。另请参阅 " +"如果为 [code]true[/code],则显示行长度参考线以帮助控制行的长度。另请参阅 " "[member text_editor/appearance/guidelines/line_length_guideline_soft_column] " "和 [member text_editor/appearance/guidelines/" "line_length_guideline_hard_column]。" msgid "" +"If [code]true[/code], highlights type-safe lines by displaying their line " +"number color with [member text_editor/theme/highlighting/" +"safe_line_number_color] instead of [member text_editor/theme/highlighting/" +"line_number_color]. Type-safe lines are lines of code where the type of all " +"variables is known at compile-time. These type-safe lines may run faster " +"thanks to typed instructions." +msgstr "" +"如果为 [code]true[/code],则通过使用 [member text_editor/theme/highlighting/" +"safe_line_number_color] 而不是 [member text_editor/theme/highlighting/" +"line_number_color],来显示行号颜色以突出显示类型安全行。类型安全行是指所有变" +"量的类型在编译时已知的代码行。由于类型化的指令,这些类型安全的行可能会运行得" +"更快。" + +msgid "" "If [code]true[/code], displays line numbers with zero padding (e.g. " "[code]007[/code] instead of [code]7[/code])." msgstr "" @@ -31238,43 +40440,242 @@ msgid "" "If [code]true[/code], displays icons for bookmarks in a gutter at the left. " "Bookmarks remain functional when this setting is disabled." msgstr "" -"如果为 [code]true[/code],则会在左侧显示一个边栏,为书签显示图标。禁用该设置" -"时书签功能仍然可用。" +"如果为 [code]true[/code],则在左侧的装订线中显示书签图标。该设置被禁用时,书" +"签功能仍然可用。" msgid "" "If [code]true[/code], displays a gutter at the left containing icons for " "methods with signal connections." msgstr "" -"如果为 [code]true[/code],则会在左侧显示一个边栏,为存在信号连接的方法显示图" -"标。" +"如果为 [code]true[/code],则会在左侧显示一个装订线,为存在信号连接的方法显示" +"图标。" msgid "If [code]true[/code], displays line numbers in a gutter at the left." -msgstr "如果为 [code]true[/code],则会在左侧的边栏中显示行号。" +msgstr "如果为 [code]true[/code],则会在左侧的装订线中显示行号。" + +msgid "" +"If [code]true[/code], displays the folding arrows next to indented code " +"sections and allows code folding. If [code]false[/code], hides the folding " +"arrows next to indented code sections and disallows code folding." +msgstr "" +"如果为 [code]true[/code],则显示缩进的代码小节旁边的折叠箭头,并允许代码折" +"叠。如果为 [code]false[/code],则隐藏缩进的代码小节旁边的折叠箭头,并禁止代码" +"折叠。" + +msgid "" +"If [code]true[/code], wraps long lines over multiple lines to avoid " +"horizontal scrolling. This is a display-only feature; it does not actually " +"insert line breaks in your scripts." +msgstr "" +"如果为 [code]true[/code],则将长行换成多行以避免水平滚动。这是一个仅显示的功" +"能;它实际上并没有在脚本中插入换行符。" msgid "The width of the minimap in the script editor (in pixels)." msgstr "脚本编辑器中小地图的宽度(单位为像素)。" +msgid "" +"If [code]true[/code], draws an overview of the script near the scroll bar. " +"The minimap can be left-clicked to scroll directly to a location in an " +"\"absolute\" manner." +msgstr "" +"如果为 [code]true[/code],则在滚动条附近绘制脚本概览。小地图可以被左键点击," +"以“绝对”的方式直接滚动到某个位置。" + msgid "If [code]true[/code], draws space characters as centered points." msgstr "如果为 [code]true[/code],则会将空格字符绘制为居中的点。" msgid "If [code]true[/code], draws tab characters as chevrons." msgstr "如果为 [code]true[/code],则会将制表符绘制为人字形。" +msgid "" +"The space to add between lines (in pixels). Greater line spacing can help " +"improve readability at the cost of displaying fewer lines on screen." +msgstr "" +"行与行之间要增加的空间(像素)。更大的行间距可以帮助提高可读性,但代价是在屏" +"幕上显示更少的行。" + +msgid "" +"If [code]true[/code], automatically reloads scripts in the editor when they " +"have been modified and saved by external editors." +msgstr "" +"如果为 [code]true[/code],当脚本被外部编辑器修改和保存时,会自动在编辑器中重" +"新加载脚本。" + +msgid "" +"If set to a value greater than [code]0[/code], automatically saves the " +"current script following the specified interval (in seconds). This can be " +"used to prevent data loss if the editor crashes." +msgstr "" +"如果设置为大于 [code]0[/code] 的值,则按照指定的时间间隔(以秒为单位)会自动" +"保存当前脚本。这可用于防止编辑器崩溃时的数据丢失。" + +msgid "" +"If [code]true[/code], converts indentation to match the script editor's " +"indentation settings when saving a script. See also [member text_editor/" +"behavior/indent/type]." +msgstr "" +"如果为 [code]true[/code],则在保存脚本时转换缩进,以匹配脚本编辑器的缩进设" +"置。另见 [member text_editor/behavior/indent/type]。" + +msgid "" +"If [code]true[/code], reopens scripts that were opened in the last session " +"when the editor is reopened on a given project." +msgstr "" +"如果为 [code]true[/code],则在给定项目上重新打开编辑器时,重新打开在上次会话" +"中打开的脚本。" + +msgid "" +"If [code]true[/code], trims trailing whitespace when saving a script. " +"Trailing whitespace refers to tab and space characters placed at the end of " +"lines. Since these serve no practical purpose, they can and should be " +"removed to make version control diffs less noisy." +msgstr "" +"如果为 [code]true[/code],则在保存脚本时修剪尾随空格。尾随空格是指放置在行尾" +"的制表符和空格字符。由于这些没有任何实际用途,因此可以并且应该将其移除,以减" +"少版本控制差异的干扰。" + +msgid "" +"If [code]true[/code], automatically indents code when pressing the " +"[kbd]Enter[/kbd] key based on blocks above the new line." +msgstr "" +"如果为 [code]true[/code],则在按 [kbd]Enter[/kbd] 键时,将根据新行上方的代码" +"块,自动缩进代码。" + +msgid "" +"When using tab indentation, determines the length of each tab. When using " +"space indentation, determines how many spaces are inserted when pressing " +"[kbd]Tab[/kbd] and when automatic indentation is performed." +msgstr "" +"使用制表符缩进时,确定每个制表符的长度。使用空格缩进时,确定按下 [kbd]Tab[/" +"kbd] 和执行自动缩进时,插入了多少空格。" + +msgid "" +"The indentation style to use (tabs or spaces).\n" +"[b]Note:[/b] The [url=$DOCS_URL/tutorials/scripting/gdscript/" +"gdscript_styleguide.html]GDScript style guide[/url] recommends using tabs " +"for indentation. It is advised to change this setting only if you need to " +"work on a project that currently uses spaces for indentation." +msgstr "" +"要使用的缩进风格(制表符或空格)。\n" +"[b]注意:[/b][url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_styleguide." +"html]GDScript 风格指南[/url]建议使用制表符进行缩进。建议仅当需要处理当前使用" +"空格进行缩进的游戏项目时,才更改这项设置。" + +msgid "" +"If [code]true[/code], allows drag-and-dropping text in the script editor to " +"move text. Disable this if you find yourself accidentally drag-and-dropping " +"text in the script editor." +msgstr "" +"如果为 [code]true[/code],则允许在脚本编辑器中拖放文本以移动文本。如果发现不" +"小心在脚本编辑器中拖放了文本,请禁用该项。" + +msgid "" +"If [code]true[/code], the caret will be moved when right-clicking somewhere " +"in the script editor (like when left-clicking or middle-clicking). If " +"[code]false[/code], the caret will only be moved when left-clicking or " +"middle-clicking somewhere." +msgstr "" +"如果为 [code]true[/code],则在脚本编辑器中右键点击某处时,文本光标将被移动" +"(像左键点击或中键点击时一样)。如果为 [code]false[/code],文本光标只会在左键" +"点击或中键点击某个位置时移动。" + msgid "If [code]true[/code], allows scrolling past the end of the file." msgstr "如果为 [code]true[/code],则允许滚动越过文件的末尾。" msgid "" +"If [code]true[/code], allows scrolling in sub-line intervals and enables a " +"smooth scrolling animation when using the mouse wheel to scroll.\n" +"[b]Note:[/b] [member text_editor/behavior/navigation/smooth_scrolling] " +"currently behaves poorly in projects where [member ProjectSettings.physics/" +"common/physics_ticks_per_second] has been increased significantly from its " +"default value ([code]60[/code]). In this case, it is recommended to disable " +"this setting." +msgstr "" +"如果为 [code]true[/code],则允许在子行间隔内滚动,并在使用鼠标滚轮滚动时启用" +"平滑的滚动动画。\n" +"[b]注意:[/b][member text_editor/behavior/navigation/smooth_scrolling] 当前" +"在 [member ProjectSettings.physics/common/physics_ticks_per_second] 从其默认" +"值([code]60[/code])显著增加的游戏项目中表现不佳。在这种情况下,建议禁用该设" +"置。" + +msgid "" "If [code]true[/code], prevents automatically switching between the Script " "and 2D/3D screens when selecting a node in the Scene tree dock." msgstr "" -"如果为 [code]true[/code],可防止在场景树面板中选择节点时,自动在脚本和 2D/3D " -"屏幕之间切换。" +"如果为 [code]true[/code],则在场景树面板中选择节点时,可防止自动在脚本和 " +"2D/3D 屏幕之间切换。" + +msgid "" +"The number of pixels to scroll with every mouse wheel increment. Higher " +"values make the script scroll by faster when using the mouse wheel.\n" +"[b]Note:[/b] You can hold down [kbd]Alt[/kbd] while using the mouse wheel to " +"temporarily scroll 5 times faster." +msgstr "" +"每个鼠标滚轮增量滚动的像素数。使用鼠标滚轮时,较高的值会使脚本滚动得更快。\n" +"[b]注意:[/b]可以在按住 [kbd]Alt[/kbd] 的同时,使用鼠标滚轮将滚动速度暂时提" +"高 5 倍。" + +msgid "" +"If [code]true[/code], adds static typing hints such as [code]-> void[/code] " +"and [code]: int[/code] when using code autocompletion or when creating " +"onready variables by drag and dropping nodes into the script editor while " +"pressing the [kbd]Ctrl[/kbd] key." +msgstr "" +"如果为 [code]true[/code] ,则在使用代码自动补全时,或在按下 [kbd]Ctrl[/kbd] " +"键的同时将节点拖放到脚本编辑器中创建 onready 变量时,将添加静态类型提示,类型" +"提示类似 [code]-> void[/code] 和 [code]: int[/code] 。" msgid "" "If [code]true[/code], automatically completes braces when making use of code " "completion." msgstr "如果为 [code]true[/code],则在使用代码补全时,自动补全括号。" +msgid "" +"The delay in seconds after which autocompletion suggestions should be " +"displayed when the user stops typing." +msgstr "用户停止输入后,应显示自动补全建议的延迟时间(以秒为单位)。" + +msgid "" +"If [code]true[/code], provides autocompletion suggestions for file paths in " +"methods such as [code]load()[/code] and [code]preload()[/code]." +msgstr "" +"如果为 [code]true[/code],则在 [code]load()[/code] 和 [code]preload()[/code] " +"等方法中,为文件路径提供自动补全建议。" + +msgid "" +"The delay in seconds after which the script editor should check for errors " +"when the user stops typing." +msgstr "用户停止输入后,脚本编辑器应检查错误的延迟时间(以秒为单位)。" + +msgid "" +"If [code]true[/code], the code completion tooltip will appear below the " +"current line unless there is no space on screen below the current line. If " +"[code]false[/code], the code completion tooltip will appear above the " +"current line." +msgstr "" +"如果为 [code]true[/code],除非当前行下方的屏幕上没有空间,否则代码补全工具提" +"示,将出现在当前行下方。如果为 [code]false[/code],则代码补全工具提示,将出现" +"在当前行上方。" + +msgid "" +"If [code]true[/code], performs string autocompletion with single quotes. If " +"[code]false[/code], performs string autocompletion with double quotes (which " +"matches the [url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_styleguide." +"html]GDScript style guide[/url])." +msgstr "" +"如果为 [code]true[/code],则执行带单引号的字符串自动补全。如果为 " +"[code]false[/code],则执行带双引号的字符串自动补全(则与 [url=$DOCS_URL/" +"tutorials/scripting/gdscript/gdscript_styleguide.html]GDScript 风格指南[/url]" +"一致)。" + +msgid "" +"Controls which multi-line code blocks should be displayed in the editor " +"help. This setting does not affect single-line code literals in the editor " +"help." +msgstr "" +"控制应在编辑器帮助中显示哪些多行代码块。该设置不会影响编辑器帮助中的单行代码" +"文字。" + msgid "The font size to use for the editor help (built-in class reference)." msgstr "编辑器帮助(内置类参考)的字体大小。" @@ -31306,44 +40707,73 @@ msgstr "" "sort_members_outline_alphabetically]。" msgid "" +"If [code]true[/code], sorts the members outline (located at the left of the " +"script editor) using alphabetical order. If [code]false[/code], sorts the " +"members outline depending on the order in which members are found in the " +"script.\n" +"[b]Note:[/b] Only effective if [member text_editor/script_list/" +"show_members_overview] is [code]true[/code]." +msgstr "" +"如果为 [code]true[/code],则使用字母顺序,对成员大纲(位于脚本编辑器的左侧)" +"进行排序。如果为 [code]false[/code],则根据在脚本中找到成员的顺序,对成员大纲" +"进行排序。\n" +"[b]注意:[/b]仅当 [member text_editor/script_list/show_members_overview] 为 " +"[code]true[/code] 时有效。" + +msgid "" +"The syntax theme to use in the script editor.\n" +"You can save your own syntax theme from your current settings by using " +"[b]File > Theme > Save As...[/b] at the top of the script editor. The syntax " +"theme will then be available locally in the list of color themes.\n" +"You can find additional syntax themes to install in the [url=https://github." +"com/godotengine/godot-syntax-themes]godot-syntax-themes[/url] repository." +msgstr "" +"脚本编辑器中,使用的语法主题。\n" +"可以使用脚本编辑器顶部的[b]文件 > 主题 > 另存为...[/b],从当前设置中保存自己" +"的语法主题。然后,语法主题将在本地颜色主题列表中可用。\n" +"可以在 [url=https://github.com/godotengine/godot-syntax-themes]godot-syntax-" +"themes[/url] 存储库中,找到要安装的其他语法主题。" + +msgid "" "The script editor's background color. If set to a translucent color, the " "editor theme's base color will be visible behind." msgstr "" -"脚本编辑器的背景色。如果设置为半透明的颜色,会透出后面的编辑器主题的基础色。" +"脚本编辑器中,背景的颜色。如果设置为半透明的颜色,会透出后面的编辑器主题的基" +"础色。" msgid "" "The script editor's base type color (used for types like [Vector2], " "[Vector3], [Color], ...)." msgstr "" -"脚本编辑器的基础类型颜色(用于 [Vector2]、[Vector3]、[Color] 等类型)。" +"脚本编辑器中,基础类型的颜色(用于 [Vector2]、[Vector3]、[Color] 等类型)。" msgid "The script editor's bookmark icon color (displayed in the gutter)." -msgstr "脚本编辑器的书签图标颜色(在边栏中显示)。" +msgstr "脚本编辑器中,书签图标的颜色(在装订线中显示)。" msgid "" "The script editor's brace mismatch color. Used when the caret is currently " "on a mismatched brace, parenthesis or bracket character." msgstr "" -"脚本编辑器的括号不匹配颜色。当光标位于不匹配的大括号、圆括号或方括号字符上时" -"使用。" +"脚本编辑器中,括号不匹配的颜色。当文本光标位于不匹配的大括号、圆括号或方括号" +"字符上时使用。" msgid "The script editor's breakpoint icon color (displayed in the gutter)." -msgstr "脚本编辑器的断点图标颜色(在边栏中显示)。" +msgstr "脚本编辑器中,断点图标的颜色(在装订线中显示)。" msgid "" "The script editor's caret background color.\n" "[b]Note:[/b] This setting has no effect as it's currently unused." msgstr "" -"脚本编辑器的光标背景色。\n" -"[b]注意:[/b]此设置无效,因为当前未使用。" +"脚本编辑器中,文本光标的背景色。\n" +"[b]注意:[/b]该设置无效,因为当前未使用。" msgid "The script editor's caret color." -msgstr "脚本编辑器的光标颜色。" +msgstr "脚本编辑器中,文本光标的颜色。" msgid "" "The script editor's color for the code folding icon (displayed in the " "gutter)." -msgstr "脚本编辑器的代码折叠图标颜色(在边栏中显示)。" +msgstr "脚本编辑器中,代码折叠图标的颜色(在装订线中显示)。" msgid "" "The script editor's comment color.\n" @@ -31351,25 +40781,137 @@ msgid "" "considered to be comments, and will use the string highlighting color " "instead." msgstr "" -"脚本编辑器的注释颜色。\n" +"脚本编辑器中,注释的颜色。\n" "[b]注意:[/b]在 GDScript 中,与 Python 不同,多行字符串不被视为注释,而是使用" -"字符串突出显示颜色。" +"字符串高亮显示颜色。" msgid "The script editor's autocompletion box background color." -msgstr "脚本编辑器的自动补全框的背景色。" +msgstr "脚本编辑器中,自动补全框的背景色。" + +msgid "" +"The script editor's autocompletion box background color to highlight " +"existing characters in the completion results. This should be a translucent " +"color so that [member text_editor/theme/highlighting/" +"completion_selected_color] can be seen behind." +msgstr "" +"脚本编辑器中,自动补全框的背景颜色,用于高亮显示补全结果中的现有字符。这应该" +"是半透明的颜色,以便在后面可以看到 [member text_editor/theme/highlighting/" +"completion_selected_color]。" msgid "The script editor's autocompletion box text color." -msgstr "脚本编辑器的自动补全框的文本颜色。" +msgstr "脚本编辑器中,自动补全框的文本颜色。" msgid "The script editor's autocompletion box scroll bar color." -msgstr "脚本编辑器的自动补全框的滚动条颜色。" +msgstr "脚本编辑器中,自动补全框的滚动条颜色。" + +msgid "" +"The script editor's autocompletion box scroll bar color when hovered or " +"pressed with the mouse." +msgstr "脚本编辑器中,自动补全框的滚动条被鼠标悬停或按下时的颜色。" + +msgid "" +"The script editor's autocompletion box background color for the currently " +"selected line." +msgstr "脚本编辑器中,自动补全框的当前选中行的背景色。" + +msgid "" +"The script editor's control flow keyword color (used for keywords like " +"[code]if[/code], [code]for[/code], [code]return[/code], ...)." +msgstr "" +"脚本编辑器中,控制流关键字的颜色(用于 [code]if[/code]、[code]for[/code]、" +"[code]return[/code] 等关键字)。" + +msgid "" +"The script editor's background color for the line the caret is currently on. " +"This should be set to a translucent color so that it can display on top of " +"other line color modifiers such as [member text_editor/theme/highlighting/" +"mark_color]." +msgstr "" +"脚本编辑器中,文本光标当前所在行的背景色。这应该被设置为半透明颜色,以便它可" +"以显示在其他的行颜色修饰之上,例如 [member text_editor/theme/highlighting/" +"mark_color]。" msgid "" "The script editor's engine type color ([Vector2], [Vector3], [Color], ...)." msgstr "脚本编辑器中,引擎类型的颜色([Vector2]、[Vector3]、[Color]……)。" +msgid "" +"The script editor's color for the debugger's executing line icon (displayed " +"in the gutter)." +msgstr "脚本编辑器中,调试器执行行图标(显示在装订线中)的颜色。" + +msgid "" +"The script editor's function call color.\n" +"[b]Note:[/b] When using the GDScript syntax highlighter, this is replaced by " +"the function definition color configured in the syntax theme for function " +"definitions (e.g. [code]func _ready():[/code])." +msgstr "" +"脚本编辑器中,函数调用的颜色。\n" +"[b]注意:[/b]当使用 GDScript 语法高亮器时,这将被语法主题中为函数定义(例如:" +"[code]func _ready():[/code] )配置的函数定义颜色所取代。" + +msgid "" +"The script editor's non-control flow keyword color (used for keywords like " +"[code]var[/code], [code]func[/code], [code]extends[/code], ...)." +msgstr "" +"脚本编辑器中,非控制流关键字的颜色(用于关键字,如 [code]var[/code]、" +"[code]func[/code]、[code]extends[/code]、...)。" + +msgid "" +"The script editor's color for the line length guideline. The \"hard\" line " +"length guideline will be drawn with this color, whereas the \"soft\" line " +"length guideline will be drawn with half of its opacity." +msgstr "" +"脚本编辑器中,行长参考线的颜色。“硬”行长参考线将使用该颜色绘制,而“软”行长参" +"考线将使用其一半的不透明度绘制。" + +msgid "" +"The script editor's color for line numbers. See also [member text_editor/" +"theme/highlighting/safe_line_number_color]." +msgstr "" +"脚本编辑器中,行号的颜色。另请参阅 [member text_editor/theme/highlighting/" +"safe_line_number_color]。" + +msgid "" +"The script editor's background color for lines with errors. This should be " +"set to a translucent color so that it can display on top of other line color " +"modifiers such as [member text_editor/theme/highlighting/current_line_color]." +msgstr "" +"脚本编辑器中,有错误的行的背景颜色。这应该被设置为半透明颜色,以便它可以显示" +"在其他的行颜色修饰之上,例如 [member text_editor/theme/highlighting/" +"current_line_color]。" + +msgid "" +"The script editor's color for member variables on objects (e.g. [code]self." +"some_property[/code]).\n" +"[b]Note:[/b] This color is not used for local variable declaration and " +"access." +msgstr "" +"脚本编辑器中,对象上成员变量(例如 [code]self.some_property[/code])的颜" +"色。\n" +"[b]注意:[/b]该颜色不用于局部变量的声明和访问。" + msgid "The script editor's color for numbers (integer and floating-point)." -msgstr "脚本编辑器中,数字(整数和浮点)的颜色。" +msgstr "脚本编辑器中,数字(整数和浮点数)的颜色。" + +msgid "" +"The script editor's color for type-safe line numbers. See also [member " +"text_editor/theme/highlighting/line_number_color].\n" +"[b]Note:[/b] Only displayed if [member text_editor/appearance/gutters/" +"highlight_type_safe_lines] is [code]true[/code]." +msgstr "" +"脚本编辑器中,类型安全行号的颜色。另请参阅 [member text_editor/theme/" +"highlighting/line_number_color]。\n" +"[b]注意:[/b]仅当 [member text_editor/appearance/gutters/" +"highlight_type_safe_lines] 为 [code]true[/code] 时才显示。" + +msgid "" +"The script editor's color for the border of search results. This border " +"helps bring further attention to the search result. Set this color's opacity " +"to 0 to disable the border." +msgstr "" +"脚本编辑器中,搜索结果边框的颜色。该边框有助于进一步关注搜索结果。将该颜色的" +"不透明度设置为 0 可禁用该边框。" msgid "The script editor's background color for search results." msgstr "脚本编辑器中,搜索结果的背景色。" @@ -31385,6 +40927,33 @@ msgid "" "code], ...)." msgstr "脚本编辑器中,运算符的颜色([code]( ) [ ] { } + - * /[/code] 等)。" +msgid "" +"The script editor's color for text not highlighted by any syntax " +"highlighting rule." +msgstr "脚本编辑器中,所有语法高亮规则均未高亮显示的文本的颜色。" + +msgid "" +"The script editor's background color for text. This should be set to a " +"translucent color so that it can display on top of other line color " +"modifiers such as [member text_editor/theme/highlighting/current_line_color]." +msgstr "" +"脚本编辑器中,文本的背景颜色。这应该被设置为半透明颜色,以便它可以显示在其他" +"的行颜色修饰之上,例如 [member text_editor/theme/highlighting/" +"current_line_color]。" + +msgid "" +"The script editor's color for user-defined types (using [code]class_name[/" +"code])." +msgstr "脚本编辑器中,用户定义的类型(使用 [code]class_name[/code] )的颜色。" + +msgid "" +"The script editor's color for words highlighted by selecting them. Only " +"visible if [member text_editor/appearance/caret/highlight_all_occurrences] " +"is [code]true[/code]." +msgstr "" +"脚本编辑器中,通过选择单词而高亮显示的颜色。仅当 [member text_editor/" +"appearance/caret/highlight_all_occurrences] 为 [code]true[/code] 时可见。" + msgid "Emitted after any editor setting has changed." msgstr "在编辑器设置改变后触发。" @@ -31393,8 +40962,8 @@ msgid "" "plugins to update their visuals on theme changes or logic on configuration " "changes." msgstr "" -"在编辑器设置改变后触发。它被各种编辑器插件用于在主题变化时更新其视觉效果或在" -"配置变化时更新逻辑。" +"在编辑器设置改变后触发。它被各种编辑器插件使用,以在主题更改时更新视觉效果," +"或在配置更改时更新逻辑。" msgid "Godot editor's control for editing numeric values." msgstr "Godot 编辑器用于编辑数值的控件。" @@ -31408,16 +40977,30 @@ msgstr "" "[EditorInspectorPlugin] 一起使用,以重新创建相同的行为。" msgid "If [code]true[/code], the slider will not draw background." -msgstr "如果为 [code]true[/code],则滑动条不会绘制背景。" +msgstr "如果为 [code]true[/code],则滑块不会绘制背景。" msgid "If [code]true[/code], the slider is hidden." -msgstr "如果为 [code]true[/code],则隐藏滑动条。" +msgstr "如果为 [code]true[/code],则隐藏滑块。" msgid "The text that displays to the left of the value." msgstr "在值的左侧显示的文本。" msgid "If [code]true[/code], the slider can't be interacted with." -msgstr "如果为 [code]true[/code],则无法与滑动条交互。" +msgstr "如果为 [code]true[/code],则无法与滑块交互。" + +msgid "" +"The suffix to display after the value (in a faded color). This should " +"generally be a plural word. You may have to use an abbreviation if the " +"suffix is too long to be displayed." +msgstr "" +"在值之后显示的后缀(以一种淡化的颜色显示)。这通常应该是一个复数形式的词。如" +"果后缀太长而无法显示,可能必须使用缩写。" + +msgid "Emitted when the spinner/slider is grabbed." +msgstr "当微调器/滑块被抓取时发出。" + +msgid "Emitted when the spinner/slider is ungrabbed." +msgstr "当微调器/滑块取消抓取时发出。" msgid "Emitted when the value form gains focus." msgstr "值表单获得焦点时发出。" @@ -31426,16 +41009,35 @@ msgid "Emitted when the value form loses focus." msgstr "值表单丢失焦点时发出。" msgid "Base Syntax highlighter resource for the [ScriptEditor]." -msgstr "用于 [ScriptEditor] 的基础语法高亮器资源。" +msgstr "用于 [ScriptEditor] 的基本语法高亮器资源。" + +msgid "" +"Base syntax highlighter resource all editor syntax highlighters extend from, " +"it is used in the [ScriptEditor].\n" +"Add a syntax highlighter to an individual script by calling [method " +"ScriptEditorBase.add_syntax_highlighter]. To apply to all scripts on open, " +"call [method ScriptEditor.register_syntax_highlighter]" +msgstr "" +"所有编辑器语法高亮器扩展自基本语法高亮器资源,它在 [ScriptEditor] 中使用。\n" +"通过调用 [method ScriptEditorBase.add_syntax_highlighter],向单个脚本添加语法" +"高亮。要在打开时应用于所有脚本,请调用 [method ScriptEditor." +"register_syntax_highlighter]" msgid "" "Virtual method which can be overridden to return the syntax highlighter name." -msgstr "虚函数,可以在覆盖后返回语法高亮器的名称。" +msgstr "虚函数,可以在重写后返回语法高亮器的名称。" msgid "" "Virtual method which can be overridden to return the supported language " "names." -msgstr "虚函数,可以在覆盖后返回所支持的语言名称。" +msgstr "虚函数,可以在重写后返回所支持的语言名称。" + +msgid "" +"Plugin for adding custom parsers to extract strings that are to be " +"translated from custom files (.csv, .json etc.)." +msgstr "" +"用于添加自定义解析器,以从自定义文件(.csv、.json等)提取已翻译的字符串的插" +"件。" msgid "" "[EditorTranslationParserPlugin] is invoked when a file is being parsed to " @@ -31687,24 +41289,70 @@ msgid "" "[\"csv\"][/code]." msgstr "获取与该解析器关联的文件扩展名列表,例如 [code][\"csv\"][/code]。" +msgid "" +"Override this method to define a custom parsing logic to extract the " +"translatable strings." +msgstr "重写该方法,定义自定义解析逻辑以提取可翻译的字符串。" + msgid "Manages undo history of scenes opened in the editor." msgstr "管理编辑器中打开场景的撤销历史。" msgid "" +"Register a method that will be called when the action is committed (i.e. the " +"\"do\" action).\n" +"If this is the first operation, the [param object] will be used to deduce " +"target undo history." +msgstr "" +"注册一个方法,当动作被提交(即“做”的动作)时将被调用。\n" +"如果这是第一次操作,[param object] 将被用于推断目标撤消历史。" + +msgid "" +"Register a property value change for \"do\".\n" +"If this is the first operation, the [param object] will be used to deduce " +"target undo history." +msgstr "" +"为“做”注册一个属性值变更。\n" +"如果这是第一次操作,[param object] 将被用于推断目标撤消历史。" + +msgid "" "Register a reference for \"do\" that will be erased if the \"do\" history is " "lost. This is useful mostly for new nodes created for the \"do\" call. Do " "not use for resources." msgstr "" -"为“do”注册一个引用,该引用会在“do”的历史丢失时删除。主要针对的是在“do”调用中" -"创建的新节点。请不要用于资源。" +"为“做”注册一个引用,如果“做”历史丢失,则该引用将被擦除。这主要用于为“做”调用" +"而创建的新节点。请不要用于资源。" + +msgid "" +"Register a method that will be called when the action is undone (i.e. the " +"\"undo\" action).\n" +"If this is the first operation, the [param object] will be used to deduce " +"target undo history." +msgstr "" +"注册一个方法,当动作被撤销时(即“撤销”动作)将被调用。\n" +"如果这是第一次操作,[param object] 将被用于推断目标撤消历史。" + +msgid "" +"Register a property value change for \"undo\".\n" +"If this is the first operation, the [param object] will be used to deduce " +"target undo history." +msgstr "" +"为“撤销”注册一个属性值变更。\n" +"如果这是第一次操作,[param object] 将被用于推断目标撤消历史。" msgid "" "Register a reference for \"undo\" that will be erased if the \"undo\" " "history is lost. This is useful mostly for nodes removed with the \"do\" " "call (not the \"undo\" call!)." msgstr "" -"为“undo”注册一个引用,该引用会在“undo”的历史丢失时删除。主要针对的是在“do”调" -"用删除的节点(而非“undo”调用!)。" +"为“撤消”注册一个引用,如果“撤消”历史丢失,则该引用将被擦除。这主要用于通" +"过“做”调用(而不是“撤销”调用!)而移除的节点。" + +msgid "" +"Commit the action. If [param execute] is true (default), all \"do\" methods/" +"properties are called/set when this function is called." +msgstr "" +"提交该动作。如果 [param execute] 为真(默认值),则该函数被调用时所有“做”方" +"法/属性将被调用/设置。" msgid "" "Create a new action. After this is called, do all your calls to [method " @@ -31721,30 +41369,89 @@ msgstr "" "有调用,然后用 [method commit_action] 提交这个动作。\n" "动作的合并方式由 [param merge_mode] 参数决定。有关详细信息,请参阅 [enum " "UndoRedo.MergeMode]。\n" -"如果提供了 [param custom_context] 对象,它将被用于推断目标历史(而不是使用第" -"一个操作)。" +"如果提供了 [param custom_context] 对象,则它将被用于推断目标历史(而不是使用" +"第一个操作)。" + +msgid "" +"Returns the [UndoRedo] object associated with the given history [param id].\n" +"[param id] above [code]0[/code] are mapped to the opened scene tabs (but it " +"doesn't match their order). [param id] of [code]0[/code] or lower have " +"special meaning (see [enum SpecialHistory]).\n" +"Best used with [method get_object_history_id]. This method is only provided " +"in case you need some more advanced methods of [UndoRedo] (but keep in mind " +"that directly operating on the [UndoRedo] object might affect editor's " +"stability)." +msgstr "" +"返回与给定历史 [param id] 关联的 [UndoRedo] 对象。\n" +"[code]0[/code] 以上的 [param id] 被映射到打开的场景选项卡(但它与它们的顺序不" +"匹配)。[code]0[/code] 或更低的 [param id] 具有特殊含义(参阅 [enum " +"SpecialHistory])。\n" +"最好与 [method get_object_history_id] 一起使用。该方法被提供,只是以防需要 " +"[UndoRedo] 的一些更高级的方法的情况(但请记住,直接操作 [UndoRedo] 对象可能会" +"影响编辑器的稳定性)。" + +msgid "" +"Returns the history ID deduced from the given [param object]. It can be used " +"with [method get_history_undo_redo]." +msgstr "" +"返回从给定的 [param object] 推导出的历史 ID。它可以与 [method " +"get_history_undo_redo] 一起使用。" + +msgid "" +"Returns [code]true[/code] if the [EditorUndoRedoManager] is currently " +"committing the action, i.e. running its \"do\" method or property change " +"(see [method commit_action])." +msgstr "" +"如果 [EditorUndoRedoManager] 当前正在提交该动作,即运行其“做”方法或属性更改" +"(请参阅 [method commit_action])时,则返回 [code]true[/code]。" + +msgid "" +"Emitted when the list of actions in any history has changed, either when an " +"action is committed or a history is cleared." +msgstr "" +"当任何历史中的动作列表发生变化时发出,无论是当一个动作被提交或一个历史被清除" +"时。" + +msgid "" +"Emitted when the version of any history has changed as a result of undo or " +"redo call." +msgstr "当任何历史记录的版本因撤消或重做调用而变化时发出。" msgid "" "Global history not associated with any scene, but with external resources " "etc." -msgstr "全局历史,与场景无关,但与外部资源等相关。" +msgstr "全局历史不与任何场景相关联,但与外部资源等相关联。" msgid "" "History associated with remote inspector. Used when live editing a running " "project." -msgstr "与远程检查器相关的历史。实时编辑正在运行的项目时使用。" +msgstr "与远程检查器相关的历史。在实时编辑正在运行的游戏项目时使用。" msgid "" "Invalid \"null\" history. It's a special value, not associated with any " "object." -msgstr "无效历史“null”。这是一个特殊值,不与任何对象相关。" +msgstr "无效历史“null”。这是一个特殊值,不与任何对象相关联。" msgid "" "Version Control System (VCS) interface, which reads and writes to the local " "VCS in use." +msgstr "版本控制系统(VCS)接口,用于读取和写入正在使用的本地 VCS。" + +msgid "" +"Defines the API that the editor uses to extract information from the " +"underlying VCS. The implementation of this API is included in VCS plugins, " +"which are GDExtension plugins that inherit [EditorVCSInterface] and are " +"attached (on demand) to the singleton instance of [EditorVCSInterface]. " +"Instead of performing the task themselves, all the virtual functions listed " +"below are calling the internally overridden functions in the VCS plugins to " +"provide a plug-n-play experience. A custom VCS plugin is supposed to inherit " +"from [EditorVCSInterface] and override each of these virtual functions." msgstr "" -"版本控制系统(Version Control System,VCS)接口,可对正在使用的本地 VCS 进行" -"读写。" +"定义编辑器使用的 API,负责从底层 VCS 提取信息。该 API 的实现包含在 VCS 插件" +"中,这些插件是继承 [EditorVCSInterface] 并被附加(按需)到 " +"[EditorVCSInterface] 的单例实例的 GDExtension 插件。以下列出的所有虚函数都不" +"会亲自执行操作,而是会去调用 VCS 插件中内部重写的函数,以提供即插即用的体验。" +"自定义 VCS 插件应当继承 [EditorVCSInterface] 并重写这些虚函数。" msgid "Checks out a [code]branch_name[/code] in the VCS." msgstr "检出 VCS 中的 [code]branch_name[/code] 分支。" @@ -31757,6 +41464,14 @@ msgstr "提交当前暂存的修改,并对提交应用提交信息 [code]msg[/ msgid "Creates a new branch named [code]branch_name[/code] in the VCS." msgstr "在 VCS 中新建名为 [code]branch_name[/code] 的分支。" +msgid "" +"Creates a new remote destination with name [code]remote_name[/code] and " +"points it to [code]remote_url[/code]. This can be an HTTPS remote or an SSH " +"remote." +msgstr "" +"创建一个名为 [code]remote_name[/code] 的新远程仓库目标,并将其指向 " +"[code]remote_url[/code]。这既可以是 HTTPS 远程仓库,也可以是 SSH 远程仓库。" + msgid "Discards the changes made in a file present at [code]file_path[/code]." msgstr "丢弃对位于 [code]file_path[/code] 的文件进行的修改。" @@ -31776,6 +41491,20 @@ msgid "Gets the current branch name defined in the VCS." msgstr "获取 VCS 中定义的当前分支名称。" msgid "" +"Returns an array of [Dictionary] items (see [method create_diff_file], " +"[method create_diff_hunk], [method create_diff_line], [method " +"add_line_diffs_into_diff_hunk] and [method add_diff_hunks_into_diff_file]), " +"each containing information about a diff. If [code]identifier[/code] is a " +"file path, returns a file diff, and if it is a commit identifier, then " +"returns a commit diff." +msgstr "" +"返回 [Dictionary] 项的数组(参见 [method create_diff_file]、[method " +"create_diff_hunk]、[method create_diff_line]、[method " +"add_line_diffs_into_diff_hunk]、和 [method add_diff_hunks_into_diff_file])," +"每项都包含一个差异的信息。如果 [code]identifier[/code] 是文件路径,则返回文件" +"差异;如果它是提交标识符,则返回提交差异。" + +msgid "" "Returns an [Array] of [Dictionary] items (see [method create_diff_hunk]), " "each containing a line diff between a file at [code]file_path[/code] and the " "[code]text[/code] which is passed in." @@ -31817,15 +41546,7 @@ msgstr "" "[code]project_path[/code] 初始化 VCS 项目。" msgid "Pulls changes from the remote. This can give rise to merge conflicts." -msgstr "从远程仓库拉取修改。可能带来合并冲突。" - -msgid "" -"Pushes changes to the [code]remote[/code]. Optionally, if [code]force[/code] " -"is set to true, a force push will override the change history already " -"present on the remote." -msgstr "" -"将修改推送至远程仓库 [code]remote[/code]。另外可以将 [code]force[/code] 设为" -"真,会进行强制推送,覆盖远程仓库中现有的修改历史。" +msgstr "从远程仓库拉取修改。这可能会导致合并冲突。" msgid "Remove a branch from the local VCS." msgstr "从本地 VCS 中移除一个分支。" @@ -31864,15 +41585,14 @@ msgid "" "Helper function to add an array of [code]diff_hunks[/code] into a " "[code]diff_file[/code]." msgstr "" -"将差异块数组 [code]diff_hunks[/code] 加入差异文件 [code]diff_file[/code] 的辅" -"助函数。" +"辅助函数,用于将一组 [code]diff_hunks[/code] 添加到 [code]diff_file[/code]。" msgid "" "Helper function to add an array of [code]line_diffs[/code] into a " "[code]diff_hunk[/code]." msgstr "" -"将行差异数组 [code]diff_hunks[/code] 加入差异块 [code]diff_hunk[/code] 的辅助" -"函数。" +"辅助函数,用于将一组 [code]line_diffs[/code] 添加到 [code]diff_hunk[/code] " +"中。" msgid "" "Helper function to create a commit [Dictionary] item. [code]msg[/code] is " @@ -31884,17 +41604,17 @@ msgid "" "created. [code]offset_minutes[/code] is the timezone offset in minutes, " "recorded from the system timezone where the commit was created." msgstr "" -"创建提交 [Dictionary] 项目的辅助函数。[code]msg[/code] 为该提交的提交消息。" -"[code]author[/code] 为包含所有作者详情的人类可读的字符串,例如 VCS 中配置的邮" -"箱和名称。[code]id[/code] 为该提交的标识符,使用你的 VCS 为提交所提供的标识符" -"的格式。[code]unix_timestamp[/code] 为该提交创建时的 UTC Unix 时间戳。" -"[code]offset_minutes[/code] 为该提交创建时,当前系统时区的偏移量,单位为分" -"钟。" +"辅助函数, 用于创建一个提交 [Dictionary] 项。[code]msg[/code] 是该提交的提交" +"消息。[code]author[/code] 是单个人类可读的字符串,包含所有作者的详细信息,例" +"如 VCS 中配置的电子邮件和名称。无论 VCS 可能以哪种格式为提交提供标识符," +"[code]id[/code] 是该提交的标识符。[code]unix_timestamp[/code] 是该提交被创建" +"时的 UTC Unix 时间戳。[code]offset_minutes[/code] 是该提交创建时当前系统时区" +"的偏移量,单位为分钟。" msgid "" "Helper function to create a [code]Dictionary[/code] for storing old and new " "diff file paths." -msgstr "创建用于保存新旧文件路径差异的 [code]Dictionary[/code] 的辅助函数。" +msgstr "辅助函数,用于创建用来保存新旧文件路径差异的 [code]Dictionary[/code]。" msgid "" "Helper function to create a [code]Dictionary[/code] for storing diff hunk " @@ -31903,7 +41623,7 @@ msgid "" "[code]old_lines[/code] is the number of lines in the old file. " "[code]new_lines[/code] is the number of lines in the new file." msgstr "" -"创建用于保存差异块数据的 [code]Dictionary[/code] 的辅助函数。" +"辅助函数,用于创建用于保存差异块数据的 [code]Dictionary[/code]。" "[code]old_start[/code] 是旧文件中的起始行号。[code]new_start[/code] 是新文件" "中的起始行号。[code]old_lines[/code] 是旧文件中的行数。[code]new_lines[/" "code] 是新文件中的行数。" @@ -31916,7 +41636,7 @@ msgid "" "[code]content[/code] is the diff text. [code]status[/code] is a single " "character string which stores the line origin." msgstr "" -"创建用于保存行差异的 [code]Dictionary[/code] 的辅助函数。[code]new_line_no[/" +"辅助函数,创建用于保存行差异的 [code]Dictionary[/code]。[code]new_line_no[/" "code] 是新文件中的行号(该行被删除时可为 [code]-1[/code])。" "[code]old_line_no[/code] 是旧文件中的行号(该行为新增时可为 [code]-1[/" "code])。[code]content[/code] 为差异文本。[code]status[/code] 为保存该行原点" @@ -31925,22 +41645,29 @@ msgstr "" msgid "" "Helper function to create a [code]Dictionary[/code] used by editor to read " "the status of a file." -msgstr "创建编辑器用于读取文件状态的 [code]Dictionary[/code] 的辅助函数。" +msgstr "辅助函数,用于创建被编辑器用来读取文件状态的 [code]Dictionary[/code]。" + +msgid "" +"Pops up an error message in the edior 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 "加入了新文件。" +msgstr "添加了新文件。" msgid "An earlier added file has been modified." -msgstr "先前加入的文件被修改。" +msgstr "先前添加的文件已被修改。" msgid "An earlier added file has been renamed." -msgstr "先前加入的文件被改名。" +msgstr "先前添加的文件已被重命名。" msgid "An earlier added file has been deleted." -msgstr "先前加入的文件被删除。" +msgstr "先前添加的文件已被删除。" msgid "An earlier added file has been typechanged." -msgstr "先前加入的文件被修改类型。" +msgstr "先前添加的文件已更改类型。" msgid "A file is left unmerged." msgstr "文件未合并。" @@ -31958,16 +41685,105 @@ msgid "Holds a reference to an [Object]'s instance ID." msgstr "保存对 [Object] 实例 ID 的引用。" msgid "" +"Utility class which holds a reference to the internal identifier of an " +"[Object] instance, as given by [method Object.get_instance_id]. This ID can " +"then be used to retrieve the object instance with [method @GlobalScope." +"instance_from_id].\n" +"This class is used internally by the editor inspector and script debugger, " +"but can also be used in plugins to pass and display objects as their IDs." +msgstr "" +"实用程序类,其中包含对 [Object] 实例的内部标识符的引用,由 [method Object." +"get_instance_id] 给出。然后可以使用该 ID 通过 [method @GlobalScope." +"instance_from_id] 检索对象实例。\n" +"该类由编辑器检查器和脚本调试器在内部使用,但也可用于插件中,以使用其 ID 传递" +"和显示对象。" + +msgid "" +"The [Object] identifier stored in this [EncodedObjectAsID] instance. The " +"object instance can be retrieved with [method @GlobalScope.instance_from_id]." +msgstr "" +"存储在该 [EncodedObjectAsID] 实例中的 [Object] 标识符。可以使用 [method " +"@GlobalScope.instance_from_id] 检索对象实例。" + +msgid "" "A wrapper class for an [url=http://enet.bespin.org/group__host." "html]ENetHost[/url]." msgstr "[url=http://enet.bespin.org/group__host.html]ENetHost[/url] 的包装类。" +msgid "" +"ENet's purpose is to provide a relatively thin, simple and robust network " +"communication layer on top of UDP (User Datagram Protocol)." +msgstr "" +"ENet 的目的是在 UDP(用户数据报协议)之上,提供一个相对轻便、简单和健壮的网络" +"通信层。" + msgid "API documentation on the ENet website" msgstr "ENet 网站上的 API 文档" msgid "Adjusts the bandwidth limits of a host." msgstr "调整主机的带宽限制。" +msgid "" +"Queues a [code]packet[/code] to be sent to all peers associated with the " +"host over the specified [code]channel[/code]. See [ENetPacketPeer] " +"[code]FLAG_*[/code] constants for available packet flags." +msgstr "" +"将一个 [code]packet[/code] 加入队列,以便将其通过指定的 [code]channel[/code] " +"发送到与主机关联的所有对等体。请参阅 [ENetPacketPeer] 中的 [code]FLAG_*[/" +"code] 常量以了解可用的数据包标志。" + +msgid "Limits the maximum allowed channels of future incoming connections." +msgstr "限制未来传入连接的最大允许通道数。" + +msgid "" +"Sets the compression method used for network packets. These have different " +"tradeoffs of compression speed versus bandwidth, you may need to test which " +"one works best for your use case if you use compression at all.\n" +"[b]Note:[/b] Most games' network design involve sending many small packets " +"frequently (smaller than 4 KB each). If in doubt, it is recommended to keep " +"the default compression algorithm as it works best on these small packets.\n" +"[b]Note:[/b] The compression mode must be set to the same value on both the " +"server and all its clients. Clients will fail to connect if the compression " +"mode set on the client differs from the one set on the server." +msgstr "" +"设置用于网络数据包的压缩方法。这些在压缩速度与带宽之间有不同的权衡,如果需要" +"使用压缩,可能需要测试哪一种最适合你的用例。\n" +"[b]注意:[/b]大多数游戏的网络设计,都涉及频繁发送许多小数据包(每个小于 4 " +"KB)。如果有疑问,建议保留默认压缩算法,因为它最适合这些小数据包。\n" +"[b]注意:[/b]压缩模式必须在服务端及其所有客户端上设置为相同的值。如果客户端上" +"设置的压缩模式与服务端上设置的不同,则客户端将无法连接。" + +msgid "" +"Initiates a connection to a foreign [code]address[/code] using the specified " +"[code]port[/code] and allocating the requested [code]channels[/code]. " +"Optional [code]data[/code] can be passed during connection in the form of a " +"32 bit integer.\n" +"[b]Note:[/b] You must call either [method create_host] or [method " +"create_host_bound] before calling this method." +msgstr "" +"使用指定的端口 [code]port[/code] 并分配所需的通道 [code]channels[/code],向外" +"部地址 [code]address[/code] 建立连接。可以在连接期间可以传递数据 [code]data[/" +"code],形式为 32 位整数。\n" +"[b]注意:[/b]在调用此方法之前,必须先调用 [method create_host] 或 [method " +"create_host_bound]。" + +msgid "" +"Create an ENetHost that will allow up to [code]max_peers[/code] connected " +"peers, each allocating up to [code]max_channels[/code] channels, optionally " +"limiting bandwidth to [code]in_bandwidth[/code] and [code]out_bandwidth[/" +"code]." +msgstr "" +"创建一个 ENetHost,最多允许 [code]max_peers[/code] 个连接的对等体,每个连接最" +"多分配 [code]max_channels[/code] 个通道,可选择将带宽限制为 " +"[code]in_bandwidth[/code] 和 [code]out_bandwidth[/code]。" + +msgid "" +"Create an ENetHost like [method create_host] which is also bound to the " +"given [code]bind_address[/code] and [code]bind_port[/code]." +msgstr "" +"创建一个类似 [method create_host] 的 ENetHost,它还被绑定到给定的 " +"[code]bind_address[/code] 和 [code]bind_port[/code]。" + msgid "Destroys the host and all resources associated with it." msgstr "销毁主机和与其关联的所有资源。" @@ -31986,9 +41802,61 @@ msgstr "" "参数来自定义受信任的证书颁发机构,或禁用通用名称验证。请参阅 [method " "TLSOptions.client] 和 [method TLSOptions.client_unsafe]。" +msgid "" +"Configure this ENetHost to use the custom Godot extension allowing DTLS " +"encryption for ENet servers. Call this right after [method " +"create_host_bound] to have ENet expect peers to connect using DTLS. See " +"[method TLSOptions.server]." +msgstr "" +"配置该 ENetHost 以使用允许对 ENet 服务器进行 DTLS 加密的自定义 Godot 扩展。" +"在 [method create_host_bound] 之后立即调用该方法,以让 ENet 期望对等体使用 " +"DTLS 进行连接。请参阅 [method TLSOptions.server]。" + +msgid "Sends any queued packets on the host specified to its designated peers." +msgstr "将指定主机上所有被队列的数据包发送到其指定的对等体。" + msgid "Returns the local port to which this peer is bound." msgstr "返回该对等体绑定到的本地端口。" +msgid "Returns the maximum number of channels allowed for connected peers." +msgstr "返回连接的对等体所允许的最大通道数。" + +msgid "" +"Returns the list of peers associated with this host.\n" +"[b]Note:[/b] This list might include some peers that are not fully connected " +"or are still being disconnected." +msgstr "" +"返回与该主机关联的对等体列表。\n" +"[b]注意:[/b]该列表可能包含一些未完全连接或仍在断开连接的对等体。" + +msgid "" +"Returns and resets host statistics. See [enum HostStatistic] for more info." +msgstr "返回并重置主机统计信息。详情见 [enum HostStatistic]。" + +msgid "" +"Configures the DTLS server to automatically drop new connections.\n" +"[b]Note:[/b] This method is only relevant after calling [method " +"dtls_server_setup]." +msgstr "" +"将 DTLS 服务端配置为自动断开新连接。\n" +"[b]注意:[/b]这个方法只有在调用了 [method dtls_server_setup] 后才有用。" + +msgid "" +"Waits for events on the host specified and shuttles packets between the host " +"and its peers. The returned [Array] will have 4 elements. An [enum " +"EventType], the [ENetPacketPeer] which generated the event, the event " +"associated data (if any), the event associated channel (if any). If the " +"generated event is [constant EVENT_RECEIVE], the received packet will be " +"queued to the associated [ENetPacketPeer].\n" +"Call this function regularly to handle connections, disconnections, and to " +"receive new packets." +msgstr "" +"等待指定主机上的事件,并在主机与其对等体之间传送数据包。返回的 [Array] 将有 " +"4 个元素。[enum EventType]、生成事件的 [ENetPacketPeer]、事件关联的数据(如果" +"有)、事件关联的通道(如果有)。如果生成的事件是 [constant EVENT_RECEIVE],则" +"接收到的数据包,将被队列到关联的 [ENetPacketPeer]。\n" +"定期调用该函数来处理连接、断开连接、和接收新数据包。" + msgid "" "No compression. This uses the most bandwidth, but has the upside of " "requiring the fewest CPU resources. This option may also be used to make " @@ -32035,6 +41903,36 @@ msgid "" msgstr "" "[method service] 期间发生错误。你可能需要 [method destroy] 主机并重新创建。" +msgid "No event occurred within the specified time limit." +msgstr "在指定的时间限制内没有事件发生。" + +msgid "" +"A connection request initiated by enet_host_connect has completed. The array " +"will contain the peer which successfully connected." +msgstr "" +"由 enet_host_connect 发起的连接请求已完成。该数组将包含成功连接的对等体。" + +msgid "" +"A peer has disconnected. This event is generated on a successful completion " +"of a disconnect initiated by [method ENetPacketPeer.peer_disconnect], if a " +"peer has timed out, or if a connection request initialized by [method " +"connect_to_host] has timed out. The array will contain the peer which " +"disconnected. The data field contains user supplied data describing the " +"disconnection, or 0, if none is available." +msgstr "" +"对等体已断开连接。如果对等体超时,或者由 [method connect_to_host] 初始化的连" +"接请求超时,则在由 [method ENetPacketPeer.peer_disconnect] 发起的断开连接成功" +"完成时,生成该事件。该数组将包含断开连接的对等体。数据字段包含用户提供的描述" +"断开连接的数据,如果没有可用的数据,则为 0。" + +msgid "" +"A packet has been received from a peer. The array will contain the peer " +"which sent the packet, the channel number upon which the packet was " +"received, and the received packet." +msgstr "" +"已从对等体接收到一个数据包。该数组将包含发送数据包的对等体、接收数据包的通道" +"号、以及接收到的数据包。" + msgid "Total data sent." msgstr "发送数据的总数。" @@ -32054,10 +41952,40 @@ msgstr "" "使用 [url=http://enet.bespin.org/index.html]ENet[/url] 库实现的 " "MultiplayerPeer。" +msgid "" +"A MultiplayerPeer implementation that should be passed to [member " +"MultiplayerAPI.multiplayer_peer] after being initialized as either a client, " +"server, or mesh. Events can then be handled by connecting to " +"[MultiplayerAPI] signals. See [ENetConnection] for more information on the " +"ENet library wrapper.\n" +"[b]Note:[/b] ENet only uses UDP, not TCP. When forwarding the server port to " +"make your server accessible on the public Internet, you only need to forward " +"the server port in UDP. You can use the [UPNP] class to try to forward the " +"server port automatically when starting the server." +msgstr "" +"MultiplayerPeer 的一种实现,应该在初始化为客户端、服务器或网格之后传递给 " +"[member MultiplayerAPI.multiplayer_peer]。然后就可以通过连接到 " +"[MultiplayerAPI] 的信号来处理事件。有关 ENet 库包装的更多信息,请参见 " +"[ENetConnection]。\n" +"[b]注意:[/b]ENet 仅使用 UDP,不使用 TCP。当你想要将服务器端口转发到公共互联" +"网上以便让服务器可以被访问时,只需要转发 UDP 服务器端口即可。可以使用 [UPNP] " +"类尝试在启动服务器时自动转发服务器端口。" + msgid "High-level multiplayer" msgstr "高级多人游戏" msgid "" +"Add a new remote peer with the given [code]peer_id[/code] connected to the " +"given [code]host[/code].\n" +"[b]Note:[/b] The [code]host[/code] must have exactly one peer in the " +"[constant ENetPacketPeer.STATE_CONNECTED] state." +msgstr "" +"使用给定的 [code]peer_id[/code] 添加一个新的远程对等体,并将其连接到给定的 " +"[code]host[/code]。\n" +"[b]注意:[/b][code]host[/code] 必须只有一个处于 [constant ENetPacketPeer." +"STATE_CONNECTED] 状态的对等体。" + +msgid "" "Create client that connects to a server at [code]address[/code] using " "specified [code]port[/code]. The given address needs to be either a fully " "qualified domain name (e.g. [code]\"www.example.com\"[/code]) or an IP " @@ -32095,6 +42023,54 @@ msgstr "" "口;这对一些 NAT 穿越技术很有用。" msgid "" +"Initialize this [MultiplayerPeer] in mesh mode. The provided " +"[code]unique_id[/code] will be used as the local peer network unique ID once " +"assigned as the [member MultiplayerAPI.multiplayer_peer]. In the mesh " +"configuration you will need to set up each new peer manually using " +"[ENetConnection] before calling [method add_mesh_peer]. While this technique " +"is more advanced, it allows for better control over the connection process " +"(e.g. when dealing with NAT punch-through) and for better distribution of " +"the network load (which would otherwise be more taxing on the server)." +msgstr "" +"在网格网络模式下初始化该 [MultiplayerPeer]。提供的 [code]unique_id[/code] 一" +"旦被分配为 [member MultiplayerAPI.multiplayer_peer],就将被用作本地对等体的网" +"络唯一 ID。在网格网络配置中,需要在调用 [method add_mesh_peer] 之前,使用 " +"[ENetConnection] 手动设置每个新的对等体。这种技术更先进,它可以更好地控制连接" +"过程(例如,在处理 NAT 穿透时),并更好地分配网络负载(否则会给服务器带来更大" +"的负担)。" + +msgid "" +"Create server that listens to connections via [code]port[/code]. The port " +"needs to be an available, unused port between 0 and 65535. Note that ports " +"below 1024 are privileged and may require elevated permissions depending on " +"the platform. To change the interface the server listens on, use [method " +"set_bind_ip]. The default IP is the wildcard [code]\"*\"[/code], which " +"listens on all available interfaces. [code]max_clients[/code] is the maximum " +"number of clients that are allowed at once, any number up to 4095 may be " +"used, although the achievable number of simultaneous clients may be far " +"lower and depends on the application. For additional details on the " +"bandwidth parameters, see [method create_client]. Returns [constant OK] if a " +"server was created, [constant ERR_ALREADY_IN_USE] if this " +"ENetMultiplayerPeer instance already has an open connection (in which case " +"you need to call [method MultiplayerPeer.close] first) or [constant " +"ERR_CANT_CREATE] if the server could not be created." +msgstr "" +"创建通过 [code]port[/code] 监听连接的服务器。该端口需要是一个介于 0 到 65535 " +"之间的可用且未被使用的端口。请注意,低于 1024 的端口是特权端口,可能需要提升" +"权限,具体取决于平台。要更改服务器监听的接口,请使用 [method set_bind_ip]。默" +"认 IP 是通配符 [code]\"*\"[/code],它会监听所有可用的接口。" +"[code]max_clients[/code] 是同时允许的最大客户端数,可以使用最大可达 4095 的任" +"何数字,尽管可实现的同时客户端数可能要低得多,并且取决于应用程序。有关带宽参" +"数的其他详细信息,请参阅 [method create_client]。如果服务器被创建,则返回 " +"[constant OK];如果该 ENetMultiplayerPeer 实例已经有一个打开的连接(在这种情" +"况下,需要先调用 [method MultiplayerPeer.close]),则返回 [constant " +"ERR_ALREADY_IN_USE];如果服务器不能被创建,则返回 [constant " +"ERR_CANT_CREATE]。" + +msgid "Returns the [ENetPacketPeer] associated to the given [code]id[/code]." +msgstr "返回与给定 [code]id[/code] 关联的 [ENetPacketPeer]。" + +msgid "" "The IP used when creating a server. This is set to the wildcard [code]\"*\"[/" "code] by default, which binds to all available interfaces. The given IP " "needs to be in IPv4 or IPv6 address format, for example: " @@ -32116,6 +42092,22 @@ msgid "" "html]ENetPeer[/url]." msgstr "[url=http://enet.bespin.org/group__peer.html]ENetPeer[/url] 的包装类。" +msgid "" +"A PacketPeer implementation representing a peer of an [ENetConnection].\n" +"This class cannot be instantiated directly but can be retrieved during " +"[method ENetConnection.service] or via [method ENetConnection.get_peers].\n" +"[b]Note:[/b] When exporting to Android, make sure to enable the " +"[code]INTERNET[/code] permission in the Android export preset before " +"exporting the project or using one-click deploy. Otherwise, network " +"communication of any kind will be blocked by Android." +msgstr "" +"表示 [ENetConnection] 对等体的 PacketPeer 实现。\n" +"该类无法被直接实例化,但可以在 [method ENetConnection.service] 期间,或通过 " +"[method ENetConnection.get_peers] 进行检索。\n" +"[b]注意:[/b]导出到 Android 时,在导出项目或使用一键部署之前,请确保在 " +"Android 导出预设中,启用了 [code]INTERNET[/code] 权限。否则,Android 将阻止任" +"何类型的网络通信。" + msgid "Returns the number of channels allocated for communication with peer." msgstr "返回为与对等体通信而分配的通道数。" @@ -32168,6 +42160,96 @@ msgstr "" "EVENT_DISCONNECT]。不保证外部对等体会收到断开连接通知,并会在从此函数返回后立" "即重置。" +msgid "" +"Sends a ping request to a peer. ENet automatically pings all connected peers " +"at regular intervals, however, this function may be called to ensure more " +"frequent ping requests." +msgstr "" +"向对等体发送 ping 请求。ENet 会定期自动 ping 所有连接的对等体,但也可以手动调" +"用此函数,确保进行更频繁的 ping 请求。" + +msgid "" +"Sets the [code]ping_interval[/code] in milliseconds at which pings will be " +"sent to a peer. Pings are used both to monitor the liveness of the " +"connection and also to dynamically adjust the throttle during periods of low " +"traffic so that the throttle has reasonable responsiveness during traffic " +"spikes. The default ping interval is [code]500[/code] milliseconds." +msgstr "" +"设置向对等体发送 ping 的间隔 [code]ping_interval[/code],单位为毫秒。Ping 既" +"用于监控连接的有效性,也用于在低流量期间动态调整节流,以便在流量高峰期节流具" +"有合理的响应能力。默认的 ping 间隔为 [code]500[/code] 毫秒。" + +msgid "" +"Forcefully disconnects a peer. The foreign host represented by the peer is " +"not notified of the disconnection and will timeout on its connection to the " +"local host." +msgstr "" +"强制断开对等体。对等体代表的外部主机不会收到断开连接的通知,并且会在与本地主" +"机的连接上超时。" + +msgid "" +"Queues a [code]packet[/code] to be sent over the specified [code]channel[/" +"code]. See [code]FLAG_*[/code] constants for available packet flags." +msgstr "" +"队列将要通过指定的 [code]channel[/code] 发送的 [code]packet[/code]。请参阅 " +"[code]FLAG_*[/code] 常量以了解可用的数据包标志。" + +msgid "" +"Sets the timeout parameters for a peer. The timeout parameters control how " +"and when a peer will timeout from a failure to acknowledge reliable traffic. " +"Timeout values are expressed in milliseconds.\n" +"The [code]timeout_limit[/code] is a factor that, multiplied by a value based " +"on the average round trip time, will determine the timeout limit for a " +"reliable packet. When that limit is reached, the timeout will be doubled, " +"and the peer will be disconnected if that limit has reached " +"[code]timeout_min[/code]. The [code]timeout_max[/code] parameter, on the " +"other hand, defines a fixed timeout for which any packet must be " +"acknowledged or the peer will be dropped." +msgstr "" +"设置对等体的超时参数。超时参数控制对等体因无法确认可靠流量而超时的方式和时" +"间。超时值以毫秒表示。\n" +"[code]timeout_limit[/code] 是一个系数,乘以基于平均往返时间的值,将确定可靠数" +"据包的超时限制。当达到该限制时,超时将加倍,如果该限制已达到 " +"[code]timeout_min[/code],则对等体将断开连接。另一方面,[code]timeout_max[/" +"code] 参数定义了一个固定的超时时间,在该时间内必须确认所有数据包,否则对等体" +"将被丢弃。" + +msgid "" +"Configures throttle parameter for a peer.\n" +"Unreliable packets are dropped by ENet in response to the varying conditions " +"of the Internet connection to the peer. The throttle represents a " +"probability that an unreliable packet should not be dropped and thus sent by " +"ENet to the peer. By measuring fluctuations in round trip times of reliable " +"packets over the specified [code]interval[/code], ENet will either increase " +"the probability by the amount specified in the [code]acceleration[/code] " +"parameter, or decrease it by the amount specified in the [code]deceleration[/" +"code] parameter (both are ratios to [constant PACKET_THROTTLE_SCALE]).\n" +"When the throttle has a value of [constant PACKET_THROTTLE_SCALE], no " +"unreliable packets are dropped by ENet, and so 100% of all unreliable " +"packets will be sent.\n" +"When the throttle has a value of [code]0[/code], all unreliable packets are " +"dropped by ENet, and so 0% of all unreliable packets will be sent.\n" +"Intermediate values for the throttle represent intermediate probabilities " +"between 0% and 100% of unreliable packets being sent. The bandwidth limits " +"of the local and foreign hosts are taken into account to determine a " +"sensible limit for the throttle probability above which it should not raise " +"even in the best of conditions." +msgstr "" +"为一个对等体配置节流参数。\n" +"不可靠的数据包会被 ENet 丢弃,以应对与对等体的互联网连接的各种情况。节流表示" +"一个不可靠数据包不应被丢弃并因此由 ENet 将其发送到对等体的概率。通过测量指定 " +"[code]interval[/code] 内可靠数据包往返时间的波动,ENet 将按照 " +"[code]acceleration[/code] 参数中指定的量增加概率,或者按照 " +"[code]deceleration[/code] 参数中指定的量降低概率(两者都是与 [constant " +"PACKET_THROTTLE_SCALE] 的比率)。\n" +"当节流的值为 [constant PACKET_THROTTLE_SCALE] 时,ENet 不会丢弃任何不可靠的数" +"据包,因此所有不可靠数据包以 100% 的概率将被发送。\n" +"当节流的值为 [code]0[/code] 时,ENet 将丢弃所有不可靠的数据包,因此所有不可靠" +"数据包以 0% 的概率将被发送。\n" +"节流的中间值表示发送不可靠数据包的 0% 到 100% 之间的中间概率。考虑本地和外部" +"主机的带宽限制,以确定节流概率的合理限制,即使在最好的条件下也不应超过该限" +"制。" + msgid "The peer is disconnected." msgstr "该对等体已断开连接。" @@ -32189,6 +42271,11 @@ msgstr "" msgid "The peer is currently connected and ready to communicate with." msgstr "该对等体已连接,可以进行通讯。" +msgid "" +"The peer is slated to disconnect after it has no more outgoing packets to " +"send." +msgstr "该对等体在没有更多的外发数据包可以发送后,将被预定断开连接。" + msgid "The peer is currently disconnecting." msgstr "该对等体正在断开连接。" @@ -32202,9 +42289,23 @@ msgstr "" "该对等体已丢失连接,但并未真正断开连接(因为该对等体还没有对断开连接请求进行" "确认)。" +msgid "" +"Mean packet loss of reliable packets as a ratio with respect to the " +"[constant PACKET_LOSS_SCALE]." +msgstr "可靠数据包的平均丢包率,即与 [constant PACKET_LOSS_SCALE] 的比率。" + msgid "Packet loss variance." msgstr "丢包方差。" +msgid "" +"The time at which packet loss statistics were last updated (in milliseconds " +"since the connection started). The interval for packet loss statistics " +"updates is 10 seconds, and at least one packet must have been sent since the " +"last statistics update." +msgstr "" +"丢包统计信息上一次被更新的时间(从连接开始后的毫秒数)。丢包统计信息更新的时" +"间间隔为 10 秒,自上次统计信息更新以来,至少必须有一个数据包被发送。" + msgid "Mean packet round trip time for reliable packets." msgstr "可靠数据包的平均往返时间。" @@ -32220,6 +42321,68 @@ msgstr "记录的上次行程时间方差。" msgid "The peer's current throttle status." msgstr "该对等体的当前节流状态。" +msgid "" +"The maximum number of unreliable packets that should not be dropped. This " +"value is always greater than or equal to [code]1[/code]. The initial value " +"is equal to [constant PACKET_THROTTLE_SCALE]." +msgstr "" +"不应被丢弃的不可靠数据包的最大数量。这个值总是大于或等于 [code]1[/code] 。初" +"始值等于 [constant PACKET_THROTTLE_SCALE]。" + +msgid "" +"Internal value used to increment the packet throttle counter. The value is " +"hardcoded to [code]7[/code] and cannot be changed. You probably want to look " +"at [constant PEER_PACKET_THROTTLE_ACCELERATION] instead." +msgstr "" +"用于增加数据包节流计数器的内部值。该值被硬编码为 [code]7[/code] 且无法更改。" +"你可能想查看 [constant PEER_PACKET_THROTTLE_ACCELERATION]。" + +msgid "" +"The time at which throttle statistics were last updated (in milliseconds " +"since the connection started). The interval for throttle statistics updates " +"is [constant PEER_PACKET_THROTTLE_INTERVAL]." +msgstr "" +"节流统计数据上一次被更新的时间(自连接开始以来的毫秒数)。节流统计更新的时间" +"间隔是 [constant PEER_PACKET_THROTTLE_INTERVAL]。" + +msgid "" +"The throttle's acceleration factor. Higher values will make ENet adapt to " +"fluctuating network conditions faster, causing unrelaible packets to be sent " +"[i]more[/i] often. The default value is [code]2[/code]." +msgstr "" +"节流的加速系数。更高的值将使 ENet 更快地适应波动的网络条件,从而导致不可靠的" +"数据包[i]更[/i]频繁地被发送。默认值为 [code]2[/code]。" + +msgid "" +"The throttle's deceleration factor. Higher values will make ENet adapt to " +"fluctuating network conditions faster, causing unrelaible packets to be sent " +"[i]less[/i] often. The default value is [code]2[/code]." +msgstr "" +"节流的减速系数。更高的值将使 ENet 更快地适应波动的网络条件,从而导致不可靠的" +"数据包[i]不会[/i]频繁地被发送。默认值为 [code]2[/code]。" + +msgid "" +"The interval over which the lowest mean round trip time should be measured " +"for use by the throttle mechanism (in milliseconds). The default value is " +"[code]5000[/code]." +msgstr "" +"测量最低平均往返时间的时间间隔,供节流机制使用(单位:毫秒)。默认值为 " +"[code]5000[/code]。" + +msgid "" +"The reference scale for packet loss. See [method get_statistic] and " +"[constant PEER_PACKET_LOSS]." +msgstr "" +"丢包的参考尺度。请参阅 [method get_statistic] 和 [constant " +"PEER_PACKET_LOSS]。" + +msgid "" +"The reference value for throttle configuration. The default value is " +"[code]32[/code]. See [method throttle_configure]." +msgstr "" +"节流配置的参考值。默认值为 [code]32[/code]。 请参阅 [method " +"throttle_configure]。" + msgid "Mark the packet to be sent as reliable." msgstr "将要发送的数据包标记为可靠。" @@ -32330,6 +42493,16 @@ msgstr "" "[code]mini_sponsors[/code], [code]gold_donors[/code], [code]silver_donors[/" "code], [code]bronze_donors[/code]}" +msgid "" +"Returns the total number of frames drawn. On headless platforms, or if the " +"render loop is disabled with [code]--disable-render-loop[/code] via command " +"line, [method get_frames_drawn] always returns [code]0[/code]. See [method " +"get_process_frames]." +msgstr "" +"返回绘制的总帧数。在无头平台上,或者如果通过命令行使用 [code]--disable-" +"render-loop[/code] 禁用渲染循环,[method get_frames_drawn] 总是返回 [code]0[/" +"code]。请参阅 [method get_process_frames]。" + msgid "Returns the frames per second of the running game." msgstr "返回运行游戏的每秒帧数。" @@ -32466,6 +42639,94 @@ msgid "Returns a list of available global singletons." msgstr "返回可用全局单例的列表。" msgid "" +"Returns the current engine version information in a Dictionary.\n" +"[code]major[/code] - Holds the major version number as an int\n" +"[code]minor[/code] - Holds the minor version number as an int\n" +"[code]patch[/code] - Holds the patch version number as an int\n" +"[code]hex[/code] - Holds the full version number encoded as a " +"hexadecimal int with one byte (2 places) per number (see example below)\n" +"[code]status[/code] - Holds the status (e.g. \"beta\", \"rc1\", " +"\"rc2\", ... \"stable\") as a String\n" +"[code]build[/code] - Holds the build name (e.g. \"custom_build\") as a " +"String\n" +"[code]hash[/code] - Holds the full Git commit hash as a String\n" +"[code]year[/code] - Holds the year the version was released in as an " +"int\n" +"[code]string[/code] - [code]major[/code] + [code]minor[/code] + " +"[code]patch[/code] + [code]status[/code] + [code]build[/code] in a single " +"String\n" +"The [code]hex[/code] value is encoded as follows, from left to right: one " +"byte for the major, one byte for the minor, one byte for the patch version. " +"For example, \"3.1.12\" would be [code]0x03010C[/code]. [b]Note:[/b] It's " +"still an int internally, and printing it will give you its decimal " +"representation, which is not particularly meaningful. Use hexadecimal " +"literals for easy version comparisons from code:\n" +"[codeblocks]\n" +"[gdscript]\n" +"if Engine.get_version_info().hex >= 0x030200:\n" +" # Do things specific to version 3.2 or later\n" +"else:\n" +" # Do things specific to versions before 3.2\n" +"[/gdscript]\n" +"[csharp]\n" +"if ((int)Engine.GetVersionInfo()[\"hex\"] >= 0x030200)\n" +"{\n" +" // Do things specific to version 3.2 or later\n" +"}\n" +"else\n" +"{\n" +" // Do things specific to versions before 3.2\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"以字典形式返回当前引擎版本信息。\n" +"[code]major[/code] - 将主要版本号保存为一个 int\n" +"[code]minor[/code] - 将次要版本号保存为一个 int\n" +"[code]patch[/code] - 将补丁版本号保存为一个 int\n" +"[code]hex[/code] - 保存编码为十六进制整数的完整版本号,每个数字一个字节(2 " +"位)(参见下面的示例)\n" +"[code]status[/code] - 将状态(例如“beta”、“rc1”、“rc2”、...“stable”)保存为字" +"符串\n" +"[code]build[/code] - 将构建名称(例如“custom_build”)保存为字符串\n" +"[code]hash[/code] - 将完整的 Git 提交哈希保存为字符串\n" +"[code]year[/code] - 将版本发布的年份保存为 int\n" +"[code]string[/code] - 将 [code]major[/code] + [code]minor[/code] + " +"[code]patch[/code] + [code]status[/code] + [code]build[/code] 保存在单个字符" +"串中\n" +"[code]hex[/code] 值的编码方式如下,从左到右:主版本对应一字节,次版本对应一字" +"节,补丁版本对应一字节。例如,“3.1.12”将是 [code]0x03010C[/code]。[b]注意:[/" +"b]它内部还是一个 int,打印出来就是它的十进制表示,没有特别的意义。使用十六进" +"制文字从代码中轻松比较版本:\n" +"[codeblocks]\n" +"[gdscript]\n" +"if Engine.get_version_info().hex >= 0x030200:\n" +" # 执行特定于版本 3.2 或更高版本的操作\n" +"else:\n" +" # 执行特定于 3.2 之前版本的操作\n" +"[/gdscript]\n" +"[csharp]\n" +"if ((int)Engine.GetVersionInfo()[\"hex\"] >= 0x030200)\n" +"{\n" +" // 执行特定于版本 3.2 或更高版本的操作\n" +"}\n" +"else\n" +"{\n" +" // 执行特定于 3.2 之前版本的操作\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the path to the [MovieWriter]'s output file, or an empty string if " +"the engine wasn't started in Movie Maker mode. This path can be absolute or " +"relative depending on how the user specified it." +msgstr "" +"返回 [MovieWriter] 的输出文件的路径,如果引擎未在 Movie Maker 模式下启动,则" +"返回一个空字符串。该路径可以是绝对路径或相对路径,具体取决于用户指定它的方" +"式。" + +msgid "" "Returns [code]true[/code] if a singleton with given [param name] exists in " "global scope." msgstr "" @@ -32575,6 +42836,49 @@ msgstr "" "[method register_singleton] 创建的用户定义单例使用。" msgid "" +"The maximum number of frames per second that can be rendered. 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 ProjectSettings.display/window/vsync/vsync_mode] is " +"[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 ProjectSettings.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 ProjectSettings.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_ticks_per_second] and [member ProjectSettings." +"application/run/max_fps]." +msgstr "" +"每秒可渲染的最大帧数。值为 [code]0[/code] 表示“无限制”。如果 CPU 或 GPU 跟不" +"上项目逻辑和渲染的速度,实际的每秒帧数仍可能低于这个值。\n" +"限制 FPS 会对降低系统功耗很有帮助,可以减少热量和噪音排放(并延长移动设备的电" +"池寿命)。\n" +"如果 [member ProjectSettings.display/window/vsync/vsync_mode] 为 " +"[code]Enabled[/code] 或 [code]Adaptive[/code] ,则该设置将被优先考虑,并且强" +"制的 FPS 数不能超过显示器的刷新率。\n" +"如果 [member ProjectSettings.display/window/vsync/vsync_mode] 为 " +"[code]Enabled[/code],在启用了可变刷新率(G-Sync/FreeSync)的显示器上,使用比" +"显示器刷新率低几帧的 FPS 限制,将[url=https://blurbusters.com/howto-low-lag-" +"vsync-on/]减少输入延迟,同时可以避免撕裂[/url]。\n" +"如果 [member ProjectSettings.display/window/vsync/vsync_mode] 为 " +"[code]Disabled[/code],则与无上限的帧率相比,将 FPS 限制为可以在系统上持续达" +"到的高值,可以减少输入滞后。由于这是通过确保 GPU 负载低于 100% 来实现的,这种" +"延迟减少仅在 GPU 瓶颈场景中有效,在 CPU 瓶颈的情况下无效。\n" +"另见 [member physics_ticks_per_second] 和 [member ProjectSettings." +"application/run/max_fps]。" + +msgid "" "Controls the maximum number of physics steps that can be simulated each " "rendered frame. The default value is tuned to avoid \"spiral of death\" " "situations where expensive physics simulations trigger more expensive " @@ -32641,6 +42945,28 @@ msgstr "" "max_physics_steps_per_frame] 也调大。" msgid "" +"If [code]false[/code], stops printing error and warning messages to the " +"console and editor Output log. This can be used to hide error and warning " +"messages during unit test suite runs. This property is equivalent to the " +"[member ProjectSettings.application/run/disable_stderr] project setting.\n" +"[b]Warning:[/b] If you set this to [code]false[/code] anywhere in the " +"project, important error messages may be hidden even if they are emitted " +"from other scripts. If this is set to [code]false[/code] in a [code]@tool[/" +"code] script, this will also impact the editor itself. Do [i]not[/i] report " +"bugs before ensuring error messages are enabled (as they are by default).\n" +"[b]Note:[/b] This property does not impact the editor's Errors tab when " +"running a project from the editor." +msgstr "" +"如果为 [code]false[/code],则停止向控制台和编辑器输出日志打印错误和警告消息。" +"这可用于在单元测试套件运行期间隐藏错误和警告消息。该属性等效于 [member " +"ProjectSettings.application/run/disable_stderr] 项目设置。\n" +"[b]警告:[/b]如果在项目的任何地方将该项设置为 [code]false[/code],重要的错误" +"消息可能会被隐藏,即使它们是从其他脚本发出的。如果在 [code]@tool[/code] 脚本" +"中将该项设置为 [code]false[/code],这也会影响编辑器本身。在确保错误消息被启用" +"(默认情况下)之前,[i]不[/i]报告错误。\n" +"[b]注意:[/b]从编辑器运行项目时,该属性不会影响编辑器的“错误”选项卡。" + +msgid "" "Controls how fast or slow the in-game clock ticks versus the real life one. " "It defaults to 1.0. A value of 2.0 means the game moves twice as fast as " "real life, whilst a value of 0.5 means the game moves at half the regular " @@ -32688,6 +43014,42 @@ msgstr "" "如果存在具有给定名称的分析器,并且该分析器处于活动状态,则返回 [code]true[/" "code],否则返回 [code]false[/code]。" +msgid "" +"Calls the [code]add[/code] callable of the profiler with given [param name] " +"and [param data]." +msgstr "" +"使用给定的 [param name] 和 [param data] 调用分析器中的 [code]add[/code] 可调" +"用体。" + +msgid "" +"Calls the [code]toggle[/code] callable of the profiler with given [param " +"name] and [param arguments]. Enables/Disables the same profiler depending on " +"[code]enable[/code] argument." +msgstr "" +"使用给定的 [param name] 和 [param arguments] 调用分析器中的 [code]toggle[/" +"code] 可调用体。会根据 [code]enable[/code] 参数启用/禁用同一分析器。" + +msgid "" +"Registers a message capture with given [param name]. If [param name] is " +"\"my_message\" then messages starting with \"my_message:\" will be called " +"with the given callable.\n" +"Callable must accept a message string and a data array as argument. If the " +"message and data are valid then callable must return [code]true[/code] " +"otherwise [code]false[/code]." +msgstr "" +"使用给定的名称 [param name] 注册消息捕获。如果 [param name] 为“my_message”则" +"会为“my_message:”开头的消息调用给定的可调用体。\n" +"Callable 必须接受消息字符串和数据数组参数。如果消息和数据有效,则可调用体必须" +"返回 [code]true[/code],否则返回 [code]false[/code]。" + +msgid "" +"Registers a profiler with the given [param name]. See [EngineProfiler] for " +"more information." +msgstr "使用给定的名称 [param name] 注册分析器。详情见 [EngineProfiler]。" + +msgid "Sends a message with given [param message] and [param data] array." +msgstr "发送消息,内容为给定的 [param message] 和 [param data] 数组。" + msgid "Unregisters the message capture with given [param name]." msgstr "将具有给定名称 [param name] 的消息捕获解除注册。" @@ -32706,6 +43068,25 @@ msgstr "" "有关详细信息,请参阅 [EngineDebugger] 和 [EditorDebuggerPlugin]。" msgid "" +"Called when data is added to profiler using [method EngineDebugger." +"profiler_add_frame_data]." +msgstr "" +"使用 [method EngineDebugger.profiler_add_frame_data] 将数据加入分析器时调用。" + +msgid "" +"Called once every engine iteration when the profiler is active with " +"information about the current frame. All time values are in seconds. Lower " +"values represent faster processing times and are therefore considered better." +msgstr "" +"当分析器使用有关当前帧的信息处于活动状态时,每次引擎迭代调用一次。所有时间值" +"都以秒为单位。较低的值表示更快的处理时间,因此被认为更好。" + +msgid "" +"Called when the profiler is enabled/disabled, along with a set of [param " +"options]." +msgstr "启用/禁用分析器时调用,提供了一组选项 [param options]。" + +msgid "" "Resource for environment nodes (like [WorldEnvironment]) that define " "multiple rendering options." msgstr "定义渲染选项的资源,用于环境节点(例如 [WorldEnvironment])。" @@ -32758,6 +43139,16 @@ msgstr "" "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 " +"[code]adjustment_enabled[/code] is [code]true[/code]." +msgstr "" +"用于内置后处理颜色分级的 [Texture2D] 或 [Texture3D] 查找表(LUT)。可以将 " +"[GradientTexture1D] 用于一维 LUT,或将 [Texture3D] 用于更复杂的 LUT。仅当 " +"[code]adjustment_enabled[/code] 为 [code]true[/code] 时有效。" + +msgid "" "The global contrast value of the rendered scene (default value is 1). " "Effective only if [code]adjustment_enabled[/code] is [code]true[/code]." msgstr "" @@ -32884,6 +43275,11 @@ msgstr "如果为 [code]true[/code],则启用雾效果。" msgid "The height at which the height fog effect begins." msgstr "高度雾效果开始的高度。" +msgid "" +"The density used to increase fog as height decreases. To make fog increase " +"as height increases, use a negative value." +msgstr "用于随着高度降低而增加雾的密度。要使雾随着高度增加而增加,请使用负值。" + msgid "The fog's color." msgstr "雾的颜色。" @@ -32903,6 +43299,14 @@ msgstr "" "[b]注意:[/b]如果 [member fog_aerial_perspective] 为 [code]1.0[/code]," "[member fog_sky_affect] 不会有视觉效果。" +msgid "" +"If set above [code]0.0[/code], renders the scene's directional light(s) in " +"the fog color depending on the view angle. This can be used to give the " +"impression that the sun is \"piercing\" through the fog." +msgstr "" +"如果设置为 [code]0.0[/code] 以上,则根据视角以雾色渲染场景的定向光。这可以用" +"来给人一种太阳正在“穿透”雾的印象。" + msgid "The glow blending mode." msgstr "辉光混合模式。" @@ -32981,6 +43385,43 @@ msgid "" msgstr "第 7 级辉光的强度。这是最“全局”的级别(最模糊)。" msgid "" +"The texture that should be used as a glow map to [i]multiply[/i] the " +"resulting glow color according to [member glow_map_strength]. This can be " +"used to create a \"lens dirt\" effect. The texture's RGB color channels are " +"used for modulation, but the alpha channel is ignored.\n" +"[b]Note:[/b] The texture will be stretched to fit the screen. Therefore, " +"it's recommended to use a texture with an aspect ratio that matches your " +"project's base aspect ratio (typically 16:9)." +msgstr "" +"该纹理应被用作一个辉光贴图,以根据 [member glow_map_strength] [i]乘以[/i] 生" +"成的辉光颜色。这可以用来创建一个“镜头污垢”效果。该纹理的 RGB 颜色通道被用于调" +"制,但 Alpha 通道将被忽略。\n" +"[b]注意:[/b]该纹理将被拉伸以适应屏幕。因此,建议使用长宽比与项目的基本长宽比" +"(通常为 16:9)相匹配的纹理。" + +msgid "" +"How strong of an impact the [member glow_map] should have on the overall " +"glow effect. A strength of [code]0.0[/code] means the glow map has no effect " +"on the overall glow effect. A strength of [code]1.0[/code] means the glow " +"has a full effect on the overall glow effect (and can turn off glow entirely " +"in specific areas of the screen if the glow map has black areas)." +msgstr "" +"[member glow_map] 应该对整体发光效果产生多大的影响。[code]0.0[/code] 的强度," +"表示辉光贴图对整体辉光效果没有影响。[code]1.0[/code] 的强度,表示辉光对整体辉" +"光效果具有完全的效果(如果辉光贴图有黑色区域,则可以在屏幕的特定区域完全关闭" +"辉光)。" + +msgid "" +"When using the [constant GLOW_BLEND_MODE_MIX] [member glow_blend_mode], this " +"controls how much the source image is blended with the glow layer. A value " +"of [code]0.0[/code] makes the glow rendering invisible, while a value of " +"[code]1.0[/code] is equivalent to [constant GLOW_BLEND_MODE_REPLACE]." +msgstr "" +"当使用 [constant GLOW_BLEND_MODE_MIX] [member glow_blend_mode] 时,它控制源图" +"像与辉光层混合的程度。[code]0.0[/code] 的值使辉光渲染不可见,而 [code]1.0[/" +"code] 的值等效于 [constant GLOW_BLEND_MODE_REPLACE]。" + +msgid "" "If [code]true[/code], glow levels will be normalized so that summed together " "their intensities equal [code]1.0[/code]." msgstr "" @@ -33000,6 +43441,46 @@ msgid "The reflected (specular) light source." msgstr "反射(镜面反射)光源。" msgid "" +"The energy multiplier applied to light every time it bounces from a surface " +"when using SDFGI. Values greater than [code]0.0[/code] will simulate " +"multiple bounces, resulting in a more realistic appearance. Increasing " +"[member sdfgi_bounce_feedback] generally has no performance impact. See also " +"[member sdfgi_energy].\n" +"[b]Note:[/b] Values greater than [code]0.5[/code] can cause infinite " +"feedback loops and should be avoided in scenes with bright materials.\n" +"[b]Note:[/b] If [member sdfgi_bounce_feedback] is [code]0.0[/code], indirect " +"lighting will not be represented in reflections as light will only bounce " +"one time." +msgstr "" +"使用 SDFGI 时,每次从表面反弹时应用于光的能量倍增器。大于 [code]0.0[/code] 的" +"值将模拟多次反弹,从而产生更逼真的外观。增加 [member sdfgi_bounce_feedback] " +"通常对性能没有影响。另见 [member sdfgi_energy]。\n" +"[b]注意:[/b]大于 [code]0.5[/code] 的值会导致无限的反馈循环,应避免在具有明亮" +"材质的场景中使用。\n" +"[b]注意:[/b]如果 [member sdfgi_bounce_feedback] 为 [code]0.0[/code],间接照" +"明会在反射中表现出来,因为光只会反弹一次。" + +msgid "" +"[b]Note:[/b] This property is linked to [member sdfgi_min_cell_size] and " +"[member sdfgi_max_distance]. Changing its value will automatically change " +"those properties as well." +msgstr "" +"[b]注意:[/b]该属性被链接到 [member sdfgi_min_cell_size] 和 [member " +"sdfgi_max_distance]。更改其值也会自动更改这些属性。" + +msgid "" +"The number of cascades to use for SDFGI (between 1 and 8). A higher number " +"of cascades allows displaying SDFGI further away while preserving detail up " +"close, at the cost of performance. When using SDFGI on small-scale levels, " +"[member sdfgi_cascades] can often be decreased between [code]1[/code] and " +"[code]4[/code] to improve performance." +msgstr "" +"用于 SDFGI 的级联数(1 到 8 之间)。更高的级联数会以性能为代价,允许在更远的" +"地方显示 SDFGI,同时保持近距离的细节。在小型关卡上使用 SDFGI 时,通常 " +"[member sdfgi_cascades] 可以被降低到 [code]1[/code] 和 [code]4[/code] 之间以" +"提高性能。" + +msgid "" "If [code]true[/code], enables signed distance field global illumination for " "meshes that have their [member GeometryInstance3D.gi_mode] set to [constant " "GeometryInstance3D.GI_MODE_STATIC]. SDFGI is a real-time global illumination " @@ -33032,9 +43513,99 @@ msgstr "" "[b]注意:[/b]网格应该有足够厚的壁以避免漏光(避免单面壁)。对于内部关卡,将关" "卡几何体放入一个足够大的盒子中,并桥接循环边以闭合网格。" +msgid "" +"The energy multiplier to use for SDFGI. Higher values will result in " +"brighter indirect lighting and reflections. See also [member " +"sdfgi_bounce_feedback]." +msgstr "" +"用于 SDFGI 的能量乘数。较高的值将导致更亮的间接照明和反射。另见 [member " +"sdfgi_bounce_feedback]。" + +msgid "" +"The maximum distance at which SDFGI is visible. Beyond this distance, " +"environment lighting or other sources of GI such as [ReflectionProbe] will " +"be used as a fallback.\n" +"[b]Note:[/b] This property is linked to [member sdfgi_min_cell_size] and " +"[member sdfgi_cascade0_distance]. Changing its value will automatically " +"change those properties as well." +msgstr "" +"SDFGI 可见的最大距离。超出该距离,环境照明或其他 GI 来源(例如 " +"[ReflectionProbe])将用作后备。\n" +"[b]注意:[/b]该属性被链接到 [member sdfgi_min_cell_size] 和 [member " +"sdfgi_cascade0_distance]。更改其值,也会自动更改这些属性。" + +msgid "" +"The cell size to use for the closest SDFGI cascade (in 3D units). Lower " +"values allow SDFGI to be more precise up close, at the cost of making SDFGI " +"updates more demanding. This can cause stuttering when the camera moves " +"fast. Higher values allow SDFGI to cover more ground, while also reducing " +"the performance impact of SDFGI updates.\n" +"[b]Note:[/b] This property is linked to [member sdfgi_max_distance] and " +"[member sdfgi_cascade0_distance]. Changing its value will automatically " +"change those properties as well." +msgstr "" +"用于最接近的 SDFGI 级联的像元大小(以 3D 单位表示)。较低的值允许 SDFGI 近距" +"离更精确,但代价是 SDFGI 更新要求更高。当相机快速移动时,这可能会导致卡顿。较" +"高的值允许 SDFGI 覆盖更多的范围,同时也降低了 SDFGI 更新对性能的影响。\n" +"[b]注意:[/b]该属性被链接到 [member sdfgi_max_distance] 和 [member " +"sdfgi_cascade0_distance]。更改其值也会自动更改这些属性。" + +msgid "" +"The normal bias to use for SDFGI probes. Increasing this value can reduce " +"visible streaking artifacts on sloped surfaces, at the cost of increased " +"light leaking." +msgstr "" +"用于 SDFGI 探针的正常偏差。增加此值可以减少倾斜表面上的可见条纹伪影,但会增加" +"漏光。" + +msgid "" +"The constant bias to use for SDFGI probes. Increasing this value can reduce " +"visible streaking artifacts on sloped surfaces, at the cost of increased " +"light leaking." +msgstr "" +"用于 SDFGI 探针的恒定偏差。增加此值可以减少倾斜表面上的可见条纹伪影,但会增加" +"漏光。" + +msgid "" +"If [code]true[/code], SDFGI takes the environment lighting into account. " +"This should be set to [code]false[/code] for interior scenes." +msgstr "" +"如果为 [code]true[/code],则 SDFGI 会考虑环境光照。对于室内场景,这应该被设置" +"为 [code]false[/code]。" + +msgid "" +"If [code]true[/code], SDFGI uses an occlusion detection approach to reduce " +"light leaking. Occlusion may however introduce dark blotches in certain " +"spots, which may be undesired in mostly outdoor scenes. [member " +"sdfgi_use_occlusion] has a performance impact and should only be enabled " +"when needed." +msgstr "" +"如果为 [code]true[/code],SDFGI 使用遮挡检测方法来减少漏光。然而,遮挡可能会" +"在某些位置引入暗斑,这在大多数户外场景中可能是不希望的。[member " +"sdfgi_use_occlusion] 对性能有影响,只应在需要时启用。" + +msgid "" +"The Y scale to use for SDFGI cells. Lower values will result in SDFGI cells " +"being packed together more closely on the Y axis. This is used to balance " +"between quality and covering a lot of vertical ground. [member " +"sdfgi_y_scale] should be set depending on how vertical your scene is (and " +"how fast your camera may move on the Y axis)." +msgstr "" +"用于 SDFGI 单元格的 Y 缩放。较低的值将导致 SDFGI 单元格在 Y 轴上更紧密地堆积" +"在一起。这用于在质量和覆盖大量垂直地面之间取得平衡。[member sdfgi_y_scale] 应" +"该根据场景的垂直程度(以及相机在 Y 轴上移动的速度)来设置。" + msgid "The [Sky] resource used for this [Environment]." msgstr "该 [Environment] 所使用的 [Sky] 资源。" +msgid "" +"If set to a value greater than [code]0.0[/code], overrides the field of view " +"to use for sky rendering. If set to [code]0.0[/code], the same FOV as the " +"current [Camera3D] is used for sky rendering." +msgstr "" +"如果被设置为大于 [code]0.0[/code] 的值,则会覆盖用于天空渲染的视野。如果被设" +"置为 [code]0.0[/code],则使用与当前 [Camera3D] 相同的 FOV 进行天空渲染。" + msgid "The rotation to use for sky rendering." msgstr "用于天空渲染的旋转。" @@ -33047,6 +43618,14 @@ msgstr "" "在AO纹理变暗的区域可见。" msgid "" +"Sets the strength of the additional level of detail for the screen-space " +"ambient occlusion effect. A high value makes the detail pass more prominent, " +"but it may contribute to aliasing in your final image." +msgstr "" +"设置屏幕空间环境遮蔽效果的附加细节级别的强度。高的值会使细节传递更加突出,但" +"它可能会导致最终图像中出现锯齿。" + +msgid "" "If [code]true[/code], the screen-space ambient occlusion effect is enabled. " "This darkens objects' corners and cavities to simulate ambient light not " "reaching the entire object as in real life. This works well for small, " @@ -33074,6 +43653,14 @@ msgstr "" "[code]0.0-1.0[/code] 范围。[code]1.0[/code] 的值不会导致遮蔽。" msgid "" +"The primary screen-space ambient occlusion intensity. Acts as a multiplier " +"for the screen-space ambient occlusion effect. A higher value results in " +"darker occlusion." +msgstr "" +"主要屏幕空间的环境光遮蔽强度。用作屏幕空间环境光遮蔽效果的乘数。较高的值会导" +"致较暗的遮蔽。" + +msgid "" "The screen-space ambient occlusion intensity in direct light. In real life, " "ambient occlusion only applies to indirect light, which means its effects " "can't be seen in direct light. Values higher than [code]0[/code] will make " @@ -33084,6 +43671,29 @@ msgstr "" "可见。" msgid "" +"The distribution of occlusion. A higher value results in darker occlusion, " +"similar to [member ssao_intensity], but with a sharper falloff." +msgstr "" +"光遮蔽的分布。更高的值会导致更暗的光遮蔽,类似于 [member ssao_intensity],但" +"衰减更剧烈。" + +msgid "" +"The distance at which objects can occlude each other when calculating screen-" +"space ambient occlusion. Higher values will result in occlusion over a " +"greater distance at the cost of performance and quality." +msgstr "" +"计算屏幕空间环境光遮蔽时,对象可以相互遮蔽的距离。较高的值将导致以性能和质量" +"为代价的更远距离的光遮蔽。" + +msgid "" +"The amount that the screen-space ambient occlusion effect is allowed to blur " +"over the edges of objects. Setting too high will result in aliasing around " +"the edges of objects. Setting too low will make object edges appear blurry." +msgstr "" +"允许屏幕空间环境光遮蔽效果,在对象边缘上模糊的量。设置太高,会导致对象边缘出" +"现锯齿。设置太低,会使对象边缘显得模糊。" + +msgid "" "If [code]true[/code], the screen-space indirect lighting effect is enabled. " "Screen space indirect lighting is a form of indirect lighting that allows " "diffuse light to bounce between nearby objects. Screen-space indirect " @@ -33102,6 +43712,42 @@ msgstr "" "Light3D.light_indirect_energy] 的影响。\n" "[b]注意:[/b]SSIL 只支持 Forward+ 渲染方式,不支持 Mobile 或 Compatibility。" +msgid "" +"The brightness multiplier for the screen-space indirect lighting effect. A " +"higher value will result in brighter light." +msgstr "屏幕空间间接照明效果的亮度倍增器。更高的值会产生更亮的光。" + +msgid "" +"Amount of normal rejection used when calculating screen-space indirect " +"lighting. Normal rejection uses the normal of a given sample point to reject " +"samples that are facing away from the current pixel. Normal rejection is " +"necessary to avoid light leaking when only one side of an object is " +"illuminated. However, normal rejection can be disabled if light leaking is " +"desirable, such as when the scene mostly contains emissive objects that emit " +"light from faces that cannot be seen from the camera." +msgstr "" +"计算屏幕空间间接照明时,使用的法线抛弃量。法线抛弃使用给定样本点的法线,来抛" +"弃远离当前像素的样本。当只有物体的一侧被照亮时,为了避免漏光法线抛弃是必要" +"的。但是,如果需要漏光,则可以禁用法线抛弃,例如当场景主要包含自发光对象,且" +"其发光面从相机无法看到时。" + +msgid "" +"The distance that bounced lighting can travel when using the screen space " +"indirect lighting effect. A larger value will result in light bouncing " +"further in a scene, but may result in under-sampling artifacts which look " +"like long spikes surrounding light sources." +msgstr "" +"使用屏幕空间间接照明效果时,反射光可以传播的距离。较大的值,会导致光线在场景" +"中进一步反弹,但可能会导致采样不足的伪影,看起来像光源周围的长尖峰。" + +msgid "" +"The amount that the screen-space indirect lighting effect is allowed to blur " +"over the edges of objects. Setting too high will result in aliasing around " +"the edges of objects. Setting too low will make object edges appear blurry." +msgstr "" +"允许屏幕空间间接照明效果,在对象边缘上模糊的量。设置太高,会导致对象边缘出现" +"锯齿。设置太低,会使对象边缘显得模糊。" + msgid "The depth tolerance for screen-space reflections." msgstr "屏幕空间反射的深度公差。" @@ -33118,6 +43764,22 @@ msgstr "" "[b]注意:[/b]SSR 只支持 Forward+ 渲染方式,不支持 Mobile 或 Compatibility。" msgid "" +"The fade-in distance for screen-space reflections. Affects the area from the " +"reflected material to the screen-space reflection. Only positive values are " +"valid (negative values will be clamped to [code]0.0[/code])." +msgstr "" +"屏幕空间反射的淡入距离。影响从反射材质到屏幕空间反射的区域。只有正值有效(负" +"值将被钳制为 [code]0.0[/code])。" + +msgid "" +"The fade-out distance for screen-space reflections. Affects the area from " +"the screen-space reflection to the \"global\" reflection. Only positive " +"values are valid (negative values will be clamped to [code]0.0[/code])." +msgstr "" +"屏幕空间反射的淡出距离。影响从屏幕空间反射到“全局”反射的区域。只有正值有效" +"(负值将被钳制为 [code]0.0[/code])。" + +msgid "" "The maximum number of steps for screen-space reflections. Higher values are " "slower." msgstr "屏幕空间反射的最大步数。数值越高,速度越慢。" @@ -33146,10 +43808,178 @@ msgstr "" "场景也会因此而略微变暗。仅当 [member tonemap_mode] 未设置为 [constant " "TONE_MAPPER_LINEAR] 时有效。另见 [member tonemap_exposure]。" +msgid "" +"The [Color] of the volumetric fog when interacting with lights. Mist and fog " +"have an albedo close to [code]Color(1, 1, 1, 1)[/code] while smoke has a " +"darker albedo." +msgstr "" +"与灯光交互时体积雾的 [Color]。当烟雾的反照率颜色更暗时,薄雾和雾的反照率颜色" +"接近 [code]Color(1, 1, 1, 1)[/code]。" + +msgid "" +"Scales the strength of ambient light used in the volumetric fog. A value of " +"[code]0.0[/code] means that ambient light will not impact the volumetric " +"fog. [member volumetric_fog_ambient_inject] has a small performance cost " +"when set above [code]0.0[/code].\n" +"[b]Note:[/b] This has no visible effect if [member volumetric_fog_density] " +"is [code]0.0[/code] or if [member volumetric_fog_albedo] is a fully black " +"color." +msgstr "" +"衡量体积雾中使用的环境光的强度。值为 [code]0.0[/code] ,意味着环境光不会影响" +"体积雾。当 [member volumetric_fog_ambient_inject] 设置高于 [code]0.0[/code] " +"时,会有一个小的性能成本。\n" +"[b]注意:[/b]如果 [member volumetric_fog_density] 为 [code]0.0[/code],或 " +"[member volumetric_fog_albedo] 是全黑的颜色,则该属性没有可见效果。" + +msgid "" +"The direction of scattered light as it goes through the volumetric fog. A " +"value close to [code]1.0[/code] means almost all light is scattered forward. " +"A value close to [code]0.0[/code] means light is scattered equally in all " +"directions. A value close to [code]-1.0[/code] means light is scattered " +"mostly backward. Fog and mist scatter light slightly forward, while smoke " +"scatters light equally in all directions." +msgstr "" +"散射光穿过体积雾时的方向。接近 [code]1.0[/code] 的值意味着几乎所有的光都是向" +"前散射的。接近 [code]0.0[/code] 的值表示光在所有方向上均匀散射。接近 " +"[code]-1.0[/code] 的值表示光主要向后散射。雾和薄雾会稍微向前散射光,而烟雾则" +"向各个方向均匀散射光。" + +msgid "" +"The base [i]exponential[/i] density of the volumetric fog. Set this to the " +"lowest density you want to have globally. [FogVolume]s can be used to add to " +"or subtract from this density in specific areas. Fog rendering is " +"exponential as in real life.\n" +"A value of [code]0.0[/code] disables global volumetric fog while allowing " +"[FogVolume]s to display volumetric fog in specific areas.\n" +"To make volumetric fog work as a volumetric [i]lighting[/i] solution, set " +"[member volumetric_fog_density] to the lowest non-zero value ([code]0.0001[/" +"code]) then increase lights' [member Light3D.light_volumetric_fog_energy] to " +"values between [code]10000[/code] and [code]100000[/code] to compensate for " +"the very low density." +msgstr "" +"体积雾的基本[i]指数[/i]密度。将其设置为希望全局拥有的最低密度。[FogVolume] 可" +"用于增加或减少特定区域的密度。雾渲染如同在现实生活中一样是指数式的。\n" +"[code]0.0[/code] 的值会禁用全局体积雾,同时允许 [FogVolume] 在特定区域显示体" +"积雾。\n" +"要使体积雾作为一种体积[i]照明[/i]解决方案,请将 [member " +"volumetric_fog_density] 设置为最低的非零值([code]0.0001[/code]),然后将灯光" +"的 [member Light3D.light_volumetric_fog_energy] 增加到 [code]10000[/code] 和 " +"[code]100000[/code] 之间的值,以补偿极低的密度。" + +msgid "" +"The distribution of size down the length of the froxel buffer. A higher " +"value compresses the froxels closer to the camera and places more detail " +"closer to the camera." +msgstr "" +"视锥体素缓冲区长度的大小分布。较高的值会压缩更靠近相机的视锥体素,并将更多细" +"节放置在更靠近相机的位置。" + +msgid "" +"The emitted light from the volumetric fog. Even with emission, volumetric " +"fog will not cast light onto other surfaces. Emission is useful to establish " +"an ambient color. As the volumetric fog effect uses single-scattering only, " +"fog tends to need a little bit of emission to soften the harsh shadows." +msgstr "" +"从体积雾发出的光。即使有自发光,体积雾也不会将光投射到其他表面上。自发光对于" +"建立环境颜色很有用。由于体积雾效果仅使用单次散射,因此雾往往需要一点点自发光" +"来柔化刺眼的阴影。" + msgid "The brightness of the emitted light from the volumetric fog." msgstr "从体积雾发出的光的亮度。" msgid "" +"Enables the volumetric fog effect. Volumetric fog uses a screen-aligned " +"froxel buffer to calculate accurate volumetric scattering in the short to " +"medium range. Volumetric fog interacts with [FogVolume]s and lights to " +"calculate localized and global fog. Volumetric fog uses a PBR single-" +"scattering model based on extinction, scattering, and emission which it " +"exposes to users as density, albedo, and emission.\n" +"[b]Note:[/b] Volumetric fog is only supported in the Forward+ rendering " +"method, not Mobile or Compatibility." +msgstr "" +"启用体积雾效果。体积雾使用与屏幕对齐的视锥体素缓冲区,来计算短至中等范围内的" +"精确体积散射。体积雾与 [FogVolume] 和灯光交互,以计算局部和全局的雾。体积雾使" +"用一个基于消光、散射、和自发光的 PBR 单一散射模型,它以密度、反照率、和自发光" +"的形式暴露给用户。\n" +"[b]注意:[/b]体积雾只支持 Forward+ 渲染方式,不支持移动和兼容模式。" + +msgid "" +"Scales the strength of Global Illumination used in the volumetric fog's " +"albedo color. A value of [code]0.0[/code] means that Global Illumination " +"will not impact the volumetric fog. [member volumetric_fog_gi_inject] has a " +"small performance cost when set above [code]0.0[/code].\n" +"[b]Note:[/b] This has no visible effect if [member volumetric_fog_density] " +"is [code]0.0[/code] or if [member volumetric_fog_albedo] is a fully black " +"color.\n" +"[b]Note:[/b] Only [VoxelGI] and SDFGI ([member Environment.sdfgi_enabled]) " +"are taken into account when using [member volumetric_fog_gi_inject]. Global " +"illumination from [LightmapGI], [ReflectionProbe] and SSIL (see [member " +"ssil_enabled]) will be ignored by volumetric fog." +msgstr "" +"衡量体积雾的反照率颜色中使用的全局照明的强度。值为[code]0.0[/code] ,意味着全" +"局照明不会影响体积雾。当 [member volumetric_fog_gi_inject] 设置高于" +"[code]0.0[/code] 时,会有很小的性能成本。\n" +"[b]注意:[/b]如果 [member volumetric_fog_density] 为 [code]0.0[/code],或 " +"[member volumetric_fog_albedo] 是全黑的颜色,则该选项没有可见效果。\n" +"[b]注意:[/b]在使用 [member volumetric_fog_gi_inject] 时,只有 [VoxelGI] 和 " +"SDFGI([member Environment.sdfgi_enabled])会被考虑到。来自 [LightmapGI]、" +"[ReflectionProbe] 和 SSIL(参见 [member ssil_enabled])的全局照明将被体积雾所" +"忽略。" + +msgid "" +"The distance over which the volumetric fog is computed. Increase to compute " +"fog over a greater range, decrease to add more detail when a long range is " +"not needed. For best quality fog, keep this as low as possible. See also " +"[member ProjectSettings.rendering/environment/volumetric_fog/volume_depth]." +msgstr "" +"计算体积雾的距离。增加以在更大范围内计算雾,减少以在不需要长范围时添加更多细" +"节。为了获得最佳质量的雾,请将其保持在尽可能低的水平。另请参阅 [member " +"ProjectSettings.rendering/environment/volumetric_fog/volume_depth]。" + +msgid "" +"The factor to use when affecting the sky with volumetric fog. [code]1.0[/" +"code] means that volumetric fog can fully obscure the sky. Lower values " +"reduce the impact of volumetric fog on sky rendering, with [code]0.0[/code] " +"not affecting sky rendering at all.\n" +"[b]Note:[/b] [member volumetric_fog_sky_affect] also affects [FogVolume]s, " +"even if [member volumetric_fog_density] is [code]0.0[/code]. If you notice " +"[FogVolume]s are disappearing when looking towards the sky, set [member " +"volumetric_fog_sky_affect] to [code]1.0[/code]." +msgstr "" +"使用体积雾影响天空时使用的系数。[code]1.0[/code]表示体积雾可以完全遮蔽天空。" +"较低的值会减少体积雾对天空渲染的影响,[code]0.0[/code] 根本不会影响天空的渲" +"染。\n" +"[b]注意:[/b]即使 [member volumetric_fog_density] 为 [code]0.0[/code]," +"[member volumetric_fog_sky_affect] 也会影响 [FogVolume]。如果发现 " +"[FogVolume] 在仰望天空时正在消失,请将 [member volumetric_fog_sky_affect] 设" +"置为 [code]1.0[/code]。" + +msgid "" +"The amount by which to blend the last frame with the current frame. A higher " +"number results in smoother volumetric fog, but makes \"ghosting\" much " +"worse. A lower value reduces ghosting but can result in the per-frame " +"temporal jitter becoming visible." +msgstr "" +"将最后一帧与当前帧混合的量。更高的数值会导致体积雾更平滑,但会使“重影”变得更" +"糟。更低的值会减少重影,但会导致每帧时间抖动变得可见。" + +msgid "" +"Enables temporal reprojection in the volumetric fog. Temporal reprojection " +"blends the current frame's volumetric fog with the last frame's volumetric " +"fog to smooth out jagged edges. The performance cost is minimal; however, it " +"leads to moving [FogVolume]s and [Light3D]s \"ghosting\" and leaving a trail " +"behind them. When temporal reprojection is enabled, try to avoid moving " +"[FogVolume]s or [Light3D]s too fast. Short-lived dynamic lighting effects " +"should have [member Light3D.light_volumetric_fog_energy] set to [code]0.0[/" +"code] to avoid ghosting." +msgstr "" +"在体积雾中启用时间重投影。时间重投影将当前帧的体积雾与上一帧的体积雾混合,以" +"平滑锯齿状的边缘。性能成本最小;但是,它会导致移动 [FogVolume] 和 [Light3D] " +"时“重影”,并在它们身后留下痕迹。启用时间重投影时,尽量避免将 [FogVolume] 或 " +"[Light3D] 移动得太快。短暂的动态光照效果应将 [member Light3D." +"light_volumetric_fog_energy] 设置为 [code]0.0[/code] 以避免重影。" + +msgid "" "Clears the background using the clear color defined in [member " "ProjectSettings.rendering/environment/defaults/default_clear_color]." msgstr "" @@ -33165,6 +43995,16 @@ msgstr "在背景中显示用户自定义的天空。" msgid "Displays a [CanvasLayer] in the background." msgstr "在背景中显示 [CanvasLayer]。" +msgid "" +"Keeps on screen every pixel drawn in the background. This is the fastest " +"background mode, but it can only be safely used in fully-interior scenes (no " +"visible sky or sky reflections). If enabled in a scene where the background " +"is visible, \"ghost trail\" artifacts will be visible when moving the camera." +msgstr "" +"在屏幕上保留在背景中绘制的每个像素。这是最快的背景模式,但它只能安全地用在完" +"全室内的场景(没有可见的天空或天空反射)。如果在背景可见的场景中启用,则移动" +"相机时,将看到“鬼影踪迹”伪影。" + msgid "Displays a camera feed in the background." msgstr "在背景中显示相机源。" @@ -33172,6 +44012,37 @@ msgid "Represents the size of the [enum BGMode] enum." msgstr "代表 [enum BGMode] 枚举的大小。" msgid "" +"Gather ambient light from whichever source is specified as the background." +msgstr "从指定为背景的任何来源收集环境光。" + +msgid "" +"Disable ambient light. This provides a slight performance boost over " +"[constant AMBIENT_SOURCE_SKY]." +msgstr "禁用环境光。这比 [constant AMBIENT_SOURCE_SKY] 提供了轻微的性能提升。" + +msgid "" +"Specify a specific [Color] for ambient light. This provides a slight " +"performance boost over [constant AMBIENT_SOURCE_SKY]." +msgstr "" +"为环境光指定特定的 [Color]。与 [constant AMBIENT_SOURCE_SKY] 相比,这提供了轻" +"微的性能提升。" + +msgid "" +"Gather ambient light from the [Sky] regardless of what the background is." +msgstr "无论背景如何,都从 [Sky] 收集环境光。" + +msgid "Use the background for reflections." +msgstr "使用背景进行反射。" + +msgid "" +"Disable reflections. This provides a slight performance boost over other " +"options." +msgstr "禁用反射。与其他选项相比,这提供了轻微的性能提升。" + +msgid "Use the [Sky] for reflections regardless of what the background is." +msgstr "无论背景如何,都使用 [Sky] 进行反射。" + +msgid "" "Linear tonemapper operator. Reads the linear data and passes it on " "unmodified. This can cause bright lighting to look blown out, with " "noticeable clipping in the output colors." @@ -33234,6 +44105,38 @@ msgstr "" "替换辉光混合模式。用辉光值替换所有像素的颜色。这可以通过调整辉光参数来模拟全" "屏模糊效果,使其与原始图像的亮度相匹配。" +msgid "" +"Mixes the glow with the underlying color to avoid increasing brightness as " +"much while still maintaining a glow effect." +msgstr "将辉光与底层颜色混合,以避免在保持辉光效果的同时,尽可能多地增加亮度。" + +msgid "" +"Use 50% scale for SDFGI on the Y (vertical) axis. SDFGI cells will be twice " +"as short as they are wide. This allows providing increased GI detail and " +"reduced light leaking with thin floors and ceilings. This is usually the " +"best choice for scenes that don't feature much verticality." +msgstr "" +"在 Y(垂直)轴上对 SDFGI 使用 50% 的缩放。SDFGI 单元格将比它们的宽度短两倍。" +"这允许提供更多的 GI 细节,并减少薄地板和天花板的漏光。这通常是垂直度不高的场" +"景的最佳选择。" + +msgid "" +"Use 75% scale for SDFGI on the Y (vertical) axis. This is a balance between " +"the 50% and 100% SDFGI Y scales." +msgstr "" +"在 Y(垂直)轴上为 SDFGI 使用 75% 的缩放。这是 50% 和 100% SDFGI Y 缩放之间的" +"平衡。" + +msgid "" +"Use 100% scale for SDFGI on the Y (vertical) axis. SDFGI cells will be as " +"tall as they are wide. This is usually the best choice for highly vertical " +"scenes. The downside is that light leaking may become more noticeable with " +"thin floors and ceilings." +msgstr "" +"在 Y(垂直)轴上为 SDFGI 使用 100% 的缩放。SDFGI 单元格将与宽度一样高。这通常" +"是高度垂直场景的最佳选择。不利之处在于,薄地板和天花板可能会导致漏光更加明" +"显。" + msgid "A class that stores an expression you can execute." msgstr "存储你可以执行的表达式的类。" @@ -33364,6 +44267,125 @@ 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], however " +"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." +msgstr "" +"确定如何计算到最近/第二最近点的距离。有关选项,请参阅 [enum " +"CellularDistanceFunction]。" + +msgid "" +"Maximum distance a point can move off of its grid position. Set to [code]0[/" +"code] for an even grid." +msgstr "" +"一个点可以离开其栅格位置的最大距离。对于偶数栅格,设置为 [code]0[/code]。" + +msgid "" +"Return type from cellular noise calculations. See [enum CellularReturnType]." +msgstr "蜂窝噪声计算的返回类型。请参阅 [enum CellularReturnType]。" + +msgid "Sets the maximum warp distance from the origin." +msgstr "设置距原点的最大扭曲距离。" + +msgid "" +"If enabled, another FastNoiseLite instance is used to warp the space, " +"resulting in a distortion of the noise." +msgstr "" +"如果启用,则另一个 FastNoiseLite 实例将被用于扭曲空间,从而导致噪声失真。" + +msgid "" +"Determines the strength of each subsequent layer of the noise which is used " +"to warp the space.\n" +"A low value places more emphasis on the lower frequency base layers, while a " +"high value puts more emphasis on the higher frequency layers." +msgstr "" +"确定用于扭曲空间的噪声的每个后续层的强度。\n" +"较低的值更强调较低频率的基础层,而较高的值则更强调较高频率的层。" + +msgid "" +"Octave lacunarity of the fractal noise which warps the space. Increasing " +"this value results in higher octaves producing noise with finer details and " +"a rougher appearance." +msgstr "" +"扭曲空间的分形噪声的八度音阶空隙。增加此值,会导致更高的八度音阶,从而产生细" +"节更精细、外观更粗糙的噪声。" + +msgid "" +"The number of noise layers that are sampled to get the final value for the " +"fractal noise which warps the space." +msgstr "为获得扭曲空间的分形噪声的最终值而采样的噪声层数。" + +msgid "" +"The method for combining octaves into a fractal which is used to warp the " +"space. See [enum DomainWarpFractalType]." +msgstr "" +"将八度音阶组合成用于扭曲空间的分形的方法。请参阅 [enum " +"DomainWarpFractalType]。" + +msgid "" +"Frequency of the noise which warps the space. Low frequency results in " +"smooth noise while high frequency results in rougher, more granular noise." +msgstr "" +"扭曲空间的噪音频率。低频产生平滑的噪声,而高频产生更粗糙、颗粒状更明显的噪" +"声。" + +msgid "Sets the warp algorithm. See [enum DomainWarpType]." +msgstr "设置扭曲算法。请参阅 [enum DomainWarpType]。" + +msgid "" +"Determines the strength of each subsequent layer of noise in fractal noise.\n" +"A low value places more emphasis on the lower frequency base layers, while a " +"high value puts more emphasis on the higher frequency layers." +msgstr "" +"确定分形噪声中噪声的每个后续层的强度。\n" +"较低的值更强调较低频率的基础层,而较高的值则更强调较高频率的层。" + +msgid "" +"Frequency multiplier between subsequent octaves. Increasing this value " +"results in higher octaves producing noise with finer details and a rougher " +"appearance." +msgstr "" +"后续八度音阶之间的倍频器。增加该值,会产生更高的八度音阶,从而产生细节更精" +"细、外观更粗糙的噪声。" + +msgid "" +"The number of noise layers that are sampled to get the final value for " +"fractal noise types." +msgstr "为获得分形噪声类型的最终值而采样的噪声层数。" + +msgid "Sets the strength of the fractal ping pong type." +msgstr "设置分形乒乓类型的强度。" + +msgid "" +"The method for combining octaves into a fractal. See [enum FractalType]." +msgstr "将八度音阶组合成分形的方法。请参阅 [enum FractalType]。" + +msgid "" +"Higher weighting means higher octaves have less impact if lower octaves have " +"a large impact." +msgstr "" +"较高的权重意味着如果较低的八度具有较大的影响,则较高的八度具有较小的影响。" + +msgid "" +"The frequency for all noise types. Low frequency results in smooth noise " +"while high frequency results in rougher, more granular noise." +msgstr "" +"所有噪声类型的频率。低频产生平滑的噪声,而高频产生更粗糙、颗粒状更明显的噪" +"声。" + msgid "The noise algorithm used. See [enum NoiseType]." msgstr "所使用的噪声算法。见 [enum NoiseType]。" @@ -33374,6 +44396,31 @@ msgid "The random number seed for all noise types." msgstr "所有噪声类型的随机数种子。" msgid "" +"A lattice of points are assigned random values then interpolated based on " +"neighboring values." +msgstr "点阵被分配随机值,然后根据相邻值进行插值。" + +msgid "" +"Similar to Value noise, but slower. Has more variance in peaks and valleys.\n" +"Cubic noise can be used to avoid certain artifacts when using value noise to " +"create a bumpmap. In general, you should always use this mode if the value " +"noise is being used for a heightmap or bumpmap." +msgstr "" +"类似于 Value 噪声,但速度较慢。波峰和波谷的变化更大。\n" +"在使用值噪声创建凹凸贴图时,可以使用三次噪声来避免某些伪影。一般来说,如果值" +"噪声用于高度图或凹凸贴图,则应始终使用此模式。" + +msgid "" +"A lattice of random gradients. Their dot products are interpolated to obtain " +"values in between the lattices." +msgstr "随机渐变的一种格子。对它们的点积进行插值,以获得格子之间的值。" + +msgid "" +"Cellular includes both Worley noise and Voronoi diagrams which creates " +"various regions of the same value." +msgstr "蜂窝包括 Worley 噪声图和 Voronoi 图,它们创建了相同值的不同区域。" + +msgid "" "As opposed to [constant TYPE_PERLIN], gradients exist in a simplex lattice " "rather than a grid lattice, avoiding directional artifacts." msgstr "" @@ -33384,6 +44431,20 @@ msgid "" "Modified, higher quality version of [constant TYPE_SIMPLEX], but slower." msgstr "对 [constant TYPE_SIMPLEX] 修改后得到的更高质量版本,但速度较慢。" +msgid "No fractal noise." +msgstr "无分形噪声。" + +msgid "" +"Method using Fractional Brownian Motion to combine octaves into a fractal." +msgstr "使用分形布朗运动将八度音阶组合成分形的方法。" + +msgid "" +"Method of combining octaves into a fractal resulting in a \"ridged\" look." +msgstr "将八度音阶组合成分形的方法,从而产生一种“脊状”外观。" + +msgid "Method of combining octaves into a fractal with a ping pong effect." +msgstr "将八度音阶组合成具有乒乓效果的分形的方法。" + msgid "Euclidean distance to the nearest point." msgstr "到最近点的欧几里得距离。" @@ -33393,6 +44454,74 @@ msgstr "到最近点的欧几里得距离的平方。" msgid "Manhattan distance (taxicab metric) to the nearest point." msgstr "到最近点的曼哈顿距离(出租车度量法)。" +msgid "" +"Blend of [constant DISTANCE_EUCLIDEAN] and [constant DISTANCE_MANHATTAN] to " +"give curved cell boundaries" +msgstr "" +"[constant DISTANCE EUCLIDEAN] 和 [constant DISTANCE MANHATTAN] 的混合,以给出" +"弯曲的单元格边界" + +msgid "" +"The cellular distance function will return the same value for all points " +"within a cell." +msgstr "蜂窝单元格距离函数,将为单元格内的所有点返回相同的值。" + +msgid "" +"The cellular distance function will return a value determined by the " +"distance to the nearest point." +msgstr "蜂窝单元格距离函数,将返回一个由到最近点的距离确定的值。" + +msgid "" +"The cellular distance function returns the distance to the second-nearest " +"point." +msgstr "蜂窝单元格距离函数,将返回到第二最近点的距离。" + +msgid "" +"The distance to the nearest point is added to the distance to the second-" +"nearest point." +msgstr "将最近点的距离与次近点的距离相加。" + +msgid "" +"The distance to the nearest point is subtracted from the distance to the " +"second-nearest point." +msgstr "将最近点的距离与次近点的距离相减。" + +msgid "" +"The distance to the nearest point is multiplied with the distance to the " +"second-nearest point." +msgstr "将最近点的距离与次近点的距离相乘。" + +msgid "" +"The distance to the nearest point is divided by the distance to the second-" +"nearest point." +msgstr "将最近点的距离与次近点的距离相除。" + +msgid "The domain is warped using the simplex noise algorithm." +msgstr "使用单纯形噪声算法,对域进行扭曲。" + +msgid "" +"The domain is warped using a simplified version of the simplex noise " +"algorithm." +msgstr "使用简化版的单纯形噪声算法,对域进行扭曲。" + +msgid "" +"The domain is warped using a simple noise grid (not as smooth as the other " +"methods, but more performant)." +msgstr "使用简单的噪声栅格(不像其他方法那样平滑,但性能更高),对域进行扭曲。" + +msgid "No fractal noise for warping the space." +msgstr "没有用于扭曲空间的分形噪声。" + +msgid "" +"Warping the space progressively, octave for octave, resulting in a more " +"\"liquified\" distortion." +msgstr "逐渐扭曲空间,一个八度一个八度,导致更“液化”的失真。" + +msgid "" +"Warping the space independently for each octave, resulting in a more chaotic " +"distortion." +msgstr "为每个八度音阶独立地扭曲空间,从而导致更混乱的失真。" + msgid "Type to handle file reading and writing operations." msgstr "用于处理文件读写操作的类型。" @@ -33991,6 +45120,24 @@ msgid "Stores a floating-point number in the file." msgstr "将浮点数存储在文件中。" msgid "" +"Appends [param string] to the file without a line return, encoding the text " +"as UTF-8.\n" +"[b]Note:[/b] This method is intended to be used to write text files. The " +"string is stored as a UTF-8 encoded buffer without string length or " +"terminating zero, which means that it can't be loaded back easily. If you " +"want to store a retrievable string in a binary file, consider using [method " +"store_pascal_string] instead. For retrieving strings from a text file, you " +"can use [code]get_buffer(length).get_string_from_utf8()[/code] (if you know " +"the length) or [method get_as_text]." +msgstr "" +"将 [param string] 追加到文件中,不带换行,且将文本编码为 UTF-8。\n" +"[b]注意:[/b]本方法是用来写入文本文件的。字符串会被存储为 UTF-8 编码的缓冲" +"区,不带字符串长度或末尾零,这意味着它不能被轻易加载回来。如果想在二进制文件" +"中存储一个可检索的字符串,可以考虑改用 [method store_pascal_string]。对于从文" +"本文件中检索字符串,可以使用 [code]get_buffer(length).get_string_from_utf8()" +"[/code](如果知道长度)或 [method get_as_text]。" + +msgid "" "Stores any Variant value in the file. If [param full_objects] is [code]true[/" "code], encoding objects is allowed (and can potentially include code).\n" "Internally, this uses the same encoding mechanism as the [method " @@ -34013,6 +45160,27 @@ msgstr "" "志,请参阅 [enum PropertyUsageFlags]。" msgid "" +"If [code]true[/code], the file is read with big-endian [url=https://en." +"wikipedia.org/wiki/Endianness]endianness[/url]. If [code]false[/code], the " +"file is read with little-endian endianness. If in doubt, leave this to " +"[code]false[/code] as most files are written with little-endian endianness.\n" +"[b]Note:[/b] [member big_endian] is only about the file format, not the CPU " +"type. The CPU endianness doesn't affect the default endianness for files " +"written.\n" +"[b]Note:[/b] This is always reset to [code]false[/code] whenever you open " +"the file. Therefore, you must set [member big_endian] [i]after[/i] opening " +"the file, not before." +msgstr "" +"如果为 [code]true[/code],则文件用大端[url=https://zh.wikipedia.org/wiki/" +"%E5%AD%97%E8%8A%82%E5%BA%8F]字节序[/url]读取。如果为 [code]false[/code],则文" +"件以小端字节序读取。如果有疑问,请将其保留为 [code]false[/code],因为大多数文" +"件都是用小端字节序编写的。\n" +"[b]注意:[/b][member big_endian] 只与文件格式有关,与 CPU 类型无关。CPU 字节" +"序不会影响写入文件的默认字节序。\n" +"[b]注意:[/b]每当打开文件时,该选项总是被重置为 [code]false[/code]。因此,必" +"须在打开文件[i]之后[/i]设置 [member big_endian],而不是之前。" + +msgid "" "Opens the file for read operations. The cursor is positioned at the " "beginning of the file." msgstr "打开文件进行读取操作。光标位于文件的开头。" @@ -34107,6 +45275,18 @@ msgstr "" msgid "Invalidate and update the current dialog content list." msgstr "使当前对话框内容列表无效并更新。" +msgid "" +"The file system access scope. See enum [code]Access[/code] constants.\n" +"[b]Warning:[/b] Currently, in sandboxed environments such as Web builds or " +"sandboxed macOS apps, FileDialog cannot access the host file system. See " +"[url=https://github.com/godotengine/godot-proposals/issues/1123]godot-" +"proposals#1123[/url]." +msgstr "" +"文件系统的访问范围。见枚举 [code]Access[/code] 常量。\n" +"[b]警告:[/b]目前,在 Web 构建或沙盒 macOS 应用程序等沙盒环境中,FileDialog " +"无法访问主机文件系统。参见 [url=https://github.com/godotengine/godot-" +"proposals/issues/1123]godot-proposals#1123[/url]。" + msgid "The current working directory of the file dialog." msgstr "文件对话框的当前工作目录。" @@ -34116,6 +45296,22 @@ msgstr "文件对话框的当前选定的文件。" msgid "The currently selected file path of the file dialog." msgstr "当前选择的文件对话框的文件路径。" +msgid "" +"If [code]true[/code], changing the [code]Mode[/code] property will set the " +"window title accordingly (e.g. setting mode to [constant " +"FILE_MODE_OPEN_FILE] will change the window title to \"Open a File\")." +msgstr "" +"如果为 [code]true[/code],更改 [code]Mode[/code] 属性,将相应地设置窗口标题" +"(例如,将模式设置为 [constant FILE_MODE_OPEN_FILE],会将窗口标题更改为“打开" +"文件”)。" + +msgid "" +"If non-empty, the given sub-folder will be \"root\" of this [FileDialog], i." +"e. user won't be able to go to its parent directory." +msgstr "" +"如果非空,则给定的子文件夹将是该 [FileDialog] 的“根”,即用户将无法转到其父目" +"录。" + msgid "If [code]true[/code], the dialog will show hidden files." msgstr "如果为 [code]true[/code],对话框将显示出隐藏文件。" @@ -34483,6 +45679,146 @@ msgstr "" "如果你需要更高阶的效果,请使用自定义[url=$DOCS_URL/tutorials/shaders/" "shader_reference/fog_shader.html]雾着色器[/url]。" +msgid "" +"The single-scattering [Color] of the [FogVolume]. Internally, [member " +"albedo] is converted into single-scattering, which is additively blended " +"with other [FogVolume]s and the [member Environment.volumetric_fog_albedo]." +msgstr "" +"[FogVolume] 的单次散射 [Color]。在内部,[member albedo] 被转换为单次散射,它" +"与其他 [FogVolume] 和 [member Environment.volumetric_fog_albedo] 进行相加混" +"合。" + +msgid "" +"The density of the [FogVolume]. Denser objects are more opaque, but may " +"suffer from under-sampling artifacts that look like stripes. Negative values " +"can be used to subtract fog from other [FogVolume]s or global volumetric " +"fog.\n" +"[b]Note:[/b] Due to limited precision, [member density] values between " +"[code]-0.001[/code] and [code]0.001[/code] (exclusive) act like [code]0.0[/" +"code]. This does not apply to [member Environment.volumetric_fog_density]." +msgstr "" +"[FogVolume] 的密度。更密集的对象更不透明,但可能会受到看起来像条纹的欠采样伪" +"影的影响。负值可用于从其他 [FogVolume] 或全局体积雾中减去雾。\n" +"[b]注意:[/b]由于精度有限,介于 [code]-0.001[/code] 和 [code]0.001[/code](不" +"含)之间的 [member density] 值相当于 [code]0.0[/code]。这不适用于 [member " +"Environment.volumetric_fog_density]。" + +msgid "" +"The 3D texture that is used to scale the [member density] of the " +"[FogVolume]. This can be used to vary fog density within the [FogVolume] " +"with any kind of static pattern. For animated effects, consider using a " +"custom [url=$DOCS_URL/tutorials/shaders/shader_reference/fog_shader.html]fog " +"shader[/url]." +msgstr "" +"用于缩放 [FogVolume] 的 [member density] 的 3D 纹理。这可用于改变 " +"[FogVolume] 内具有任何静态模式的雾密度。对于动画效果,请考虑使用一个自定义的" +"[url=$DOCS_URL/tutorials/shaders/shader_reference/fog_shader.html]雾着色器[/" +"url]。" + +msgid "" +"The hardness of the edges of the [FogVolume]. A higher value will result in " +"softer edges, while a lower value will result in harder edges." +msgstr "" +"[FogVolume] 边缘的硬度。较高的值将导致较软的边缘,而较低的值将导致较硬的边" +"缘。" + +msgid "" +"The [Color] of the light emitted by the [FogVolume]. Emitted light will not " +"cast light or shadows on other objects, but can be useful for modulating the " +"[Color] of the [FogVolume] independently from light sources." +msgstr "" +"该 [FogVolume] 发出的光的 [Color]。发出的光不会在其他物体上投射光或阴影,但可" +"用于独立于光源调制 [FogVolume] 的 [Color]。" + +msgid "" +"The rate by which the height-based fog decreases in density as height " +"increases in world space. A high falloff will result in a sharp transition, " +"while a low falloff will result in a smoother transition. A value of " +"[code]0.0[/code] results in uniform-density fog. The height threshold is " +"determined by the height of the associated [FogVolume]." +msgstr "" +"基于高度的雾,随着世界空间中高度的增加而降低密度的速度。高的衰减将产生急剧的" +"过渡,而低的衰减将产生更平滑的过渡。[code]0.0[/code] 的值会产生均匀密度的雾。" +"高度阈值由关联的 [FogVolume] 的高度决定。" + +msgid "A node used to add local fog with the volumetric fog effect." +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 " +"using a [FogMaterial] with a negative [member FogMaterial.density].\n" +"Performance of [FogVolume]s is directly related to their relative size on " +"the screen and the complexity of their attached [FogMaterial]. It is best to " +"keep [FogVolume]s relatively small and simple where possible.\n" +"[b]Note:[/b] [FogVolume]s only have a visible effect if [member Environment." +"volumetric_fog_enabled] is [code]true[/code]. If you don't want fog to be " +"globally visible (but only within [FogVolume] nodes), set [member " +"Environment.volumetric_fog_density] to [code]0.0[/code]." +msgstr "" +"[FogVolume] 用于将局部雾添加到全局体积雾效果中。如果使用具有负 [member " +"FogMaterial.density] 的 [FogMaterial],[FogVolume] 也可以从特定区域移除体积" +"雾。\n" +"[FogVolume] 的性能与它在屏幕上的相对大小以及它所附加的 [FogMaterial] 的复杂性" +"直接相关。最好尽可能保持 [FogVolume] 相对较小且简单。\n" +"[b]注意:[/b][FogVolume] 只有在 [member Environment.volumetric_fog_enabled] " +"为 [code]true[/code] 时才会有可见效果。如果不希望雾全局可见(而只是在 " +"[FogVolume] 节点内),请将 [member Environment.volumetric_fog_density] 设置" +"为 [code]0.0[/code]。" + +msgid "" +"The [Material] used by the [FogVolume]. Can be either a built-in " +"[FogMaterial] or a custom [ShaderMaterial]." +msgstr "" +"[FogVolume] 使用的 [Material]。可以是一个内置的 [FogMaterial] 或一个自定义的 " +"[ShaderMaterial]。" + +msgid "" +"The shape of the [FogVolume]. This can be set to either [constant " +"RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer." +"FOG_VOLUME_SHAPE_CONE], [constant RenderingServer." +"FOG_VOLUME_SHAPE_CYLINDER], [constant RenderingServer.FOG_VOLUME_SHAPE_BOX] " +"or [constant RenderingServer.FOG_VOLUME_SHAPE_WORLD]." +msgstr "" +"[FogVolume] 的形状。这可以被设置为 [constant RenderingServer." +"FOG_VOLUME_SHAPE_ELLIPSOID]、[constant RenderingServer." +"FOG_VOLUME_SHAPE_CONE]、[constant RenderingServer." +"FOG_VOLUME_SHAPE_CYLINDER]、[constant RenderingServer.FOG_VOLUME_SHAPE_BOX] " +"或 [constant RenderingServer.FOG_VOLUME_SHAPE_WORLD]。" + +msgid "" +"The size of the [FogVolume] when [member shape] is [constant RenderingServer." +"FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer." +"FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER] " +"or [constant RenderingServer.FOG_VOLUME_SHAPE_BOX].\n" +"[b]Note:[/b] Thin fog volumes may appear to flicker when the camera moves or " +"rotates. This can be alleviated by increasing [member ProjectSettings." +"rendering/environment/volumetric_fog/volume_depth] (at a performance cost) " +"or by decreasing [member Environment.volumetric_fog_length] (at no " +"performance cost, but at the cost of lower fog range). Alternatively, the " +"[FogVolume] can be made thicker and use a lower density in the [member " +"material].\n" +"[b]Note:[/b] If [member shape] is [constant RenderingServer." +"FOG_VOLUME_SHAPE_CONE] or [constant RenderingServer." +"FOG_VOLUME_SHAPE_CYLINDER], the cone/cylinder will be adjusted to fit within " +"the size. Non-uniform scaling of cone/cylinder shapes via the [member size] " +"property is not supported, but you can scale the [FogVolume] node instead." +msgstr "" +"当 [member shape] 为 [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID]、" +"[constant RenderingServer.FOG_VOLUME_SHAPE_CONE]、[constant RenderingServer." +"FOG_VOLUME_SHAPE_CYLINDER] 或 [constant RenderingServer.FOG_VOLUME_SHAPE_BOX]" +"时,该 [FogVolume] 的大小。\n" +"[b]注意:[/b]当相机移动或旋转时,薄雾体积可能会出现闪烁。这可以通过增加 " +"[member ProjectSettings.rendering/environment/volumetric_fog/volume_depth]" +"(以性能为代价)或减少 [member Environment.volumetric_fog_length](无性能成" +"本,但以降低雾的范围为代价)来缓解。或者,[FogVolume] 可以做得更厚,并在 " +"[member material] 中使用较低的密度。\n" +"[b]注意:[/b]如果 [member shape] 为 [constant RenderingServer." +"FOG_VOLUME_SHAPE_CONE] 或 [constant RenderingServer." +"FOG_VOLUME_SHAPE_CYLINDER],圆锥体/圆柱体将被调整以适应该大小。不支持通过 " +"[member size] 属性对圆锥体/圆柱体形状进行非均匀缩放,但可以改为缩放该 " +"[FogVolume] 节点。" + msgid "Base class for fonts and font variations." msgstr "字体和字体变体的基类。" @@ -34573,6 +45909,42 @@ msgstr "" "是顶部。如果要按顶部位置绘制,则必须在 Y 轴中加入[i]升部[/i]。\n" "另见 [method CanvasItem.draw_string]。" +msgid "Returns [TextServer] RID of the font cache for specific variation." +msgstr "返回特定变体的字体缓存的 [TextServer] RID。" + +msgid "" +"Returns the average font ascent (number of pixels above the baseline).\n" +"[b]Note:[/b] Real ascent of the string is context-dependent and can be " +"significantly different from the value returned by this function. Use it " +"only as rough estimate (e.g. as the ascent of empty line)." +msgstr "" +"返回平均上高(基线以上的像素数)。\n" +"[b]注意:[/b]字符串的实际上高是上下文相关的,并且可能与该函数返回的值有很大不" +"同。仅将其用作粗略估计(例如作为空行的上高)。" + +msgid "" +"Returns the size of a character, optionally taking kerning into account if " +"the next character is provided.\n" +"[b]Note:[/b] Do not use this function to calculate width of the string " +"character by character, use [method get_string_size] or [TextLine] instead. " +"The height returned is the font height (see also [method get_height]) and " +"has no relation to the glyph height." +msgstr "" +"返回字符的大小,如果提供了下一个字符,则可以选择考虑字距调整。\n" +"[b]注意:[/b]不要使用这个函数逐个字符地计算字符串的宽度,而是使用 [method " +"get_string_size] 或 [TextLine]。返回的高度是字体高度(另见 [method " +"get_height])并且与字形高度无关。" + +msgid "" +"Returns the average font descent (number of pixels below the baseline).\n" +"[b]Note:[/b] Real descent of the string is context-dependent and can be " +"significantly different from the value returned by this function. Use it " +"only as rough estimate (e.g. as the descent of empty line)." +msgstr "" +"返回平均下深(基线以下的像素数)。\n" +"[b]注意:[/b]字符串的真实下深是依赖于上下文的,并且可能与此函数返回的值有很大" +"不同。仅将其用作粗略估计(例如作为空行的下深)。" + msgid "Returns number of faces in the TrueType / OpenType collection." msgstr "返回 TrueType / OpenType 集合中的字体数。" @@ -34582,6 +45954,13 @@ msgstr "返回回退 [Font] 数组。" msgid "Returns font family name." msgstr "返回字体家族名称。" +msgid "" +"Returns font stretch amount, compared to a normal width. A percentage value " +"between [code]50%[/code] and [code]200%[/code]." +msgstr "" +"返回与正常宽度相比的字体拉伸量。一个介于 [code]50%[/code] 和 [code]200%[/" +"code] 之间的百分比值。" + msgid "Returns font style flags, see [enum TextServer.FontStyle]." msgstr "返回字体样式标志,见 [enum TextServer.FontStyle]。" @@ -34589,6 +45968,51 @@ msgid "Returns font style name." msgstr "返回字体样式名称。" msgid "" +"Returns weight (boldness) of the font. A value in the [code]100...999[/code] " +"range, normal font weight is [code]400[/code], bold font weight is " +"[code]700[/code]." +msgstr "" +"返回该字体的字重(粗度)。一个在 [code]100...999[/code] 范围内的值,正常字体" +"字重为 [code]400[/code],粗体字体字重为 [code]700[/code]。" + +msgid "" +"Returns the total average font height (ascent plus descent) in pixels.\n" +"[b]Note:[/b] Real height of the string is context-dependent and can be " +"significantly different from the value returned by this function. Use it " +"only as rough estimate (e.g. as the height of empty line)." +msgstr "" +"返回总的平均字体高度(上高加下深),单位为像素。\n" +"[b]注意:[/b]字符串的实际高度取决于上下文,并且可能与该函数返回的值有很大差" +"异。仅将其用作粗略估计(例如作为空行的高度)。" + +msgid "" +"Returns the size of a bounding box of a string broken into the lines, taking " +"kerning and advance into account.\n" +"See also [method draw_multiline_string]." +msgstr "" +"返回分割成行的字符串的边界框的大小,将字距调整和前进量考虑在内。\n" +"另见 [method draw_multiline_string]。" + +msgid "" +"Returns a set of OpenType feature tags. More info: [url=https://docs." +"microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature " +"tags[/url]." +msgstr "" +"返回一组 OpenType 功能标签。更多信息:[url=https://docs.microsoft.com/en-us/" +"typography/opentype/spec/featuretags]OpenType 功能标签[/url]。" + +msgid "" +"Returns [Array] of valid [Font] [RID]s, which can be passed to the " +"[TextServer] methods." +msgstr "返回有效 [Font] [RID] 的 [Array],可以将其传给 [TextServer] 的方法。" + +msgid "" +"Returns the spacing for the given [code]type[/code] (see [enum TextServer." +"SpacingType])." +msgstr "" +"返回给定 [code]type[/code] 的间距(请参阅 [enum TextServer.SpacingType])。" + +msgid "" "Returns the size of a bounding box of a single-line string, taking kerning, " "advance and subpixel positioning into account. See also [method " "get_multiline_string_size] and [method draw_string].\n" @@ -34636,10 +46060,77 @@ msgstr "" "[b]注意:[/b]字符串的实际高度取决于上下文,并且可能与 [method get_height] 返" "回的值有很大不同。" +msgid "" +"Returns a string containing all the characters available in the font.\n" +"If a given character is included in more than one font data source, it " +"appears only once in the returned string." +msgstr "" +"返回一个包含字体中所有可用字符的字符串。\n" +"如果给定字符被包含在多个字体数据源中,则它在返回的字符串中只出现一次。" + msgid "Returns list of OpenType features supported by font." msgstr "返回字体支持的 OpenType 特性列表。" msgid "" +"Returns list of supported [url=https://docs.microsoft.com/en-us/typography/" +"opentype/spec/dvaraxisreg]variation coordinates[/url], each coordinate is " +"returned as [code]tag: Vector3i(min_value,max_value,default_value)[/code].\n" +"Font variations allow for continuous change of glyph characteristics along " +"some given design axis, such as weight, width or slant.\n" +"To print available variation axes of a variable font:\n" +"[codeblock]\n" +"var fv = FontVariation.new()\n" +"fv.set_base_font = load(\"res://RobotoFlex.ttf\")\n" +"var variation_list = fv.get_supported_variation_list()\n" +"for tag in variation_list:\n" +" var name = TextServerManager.get_primary_interface().tag_to_name(tag)\n" +" var values = variation_list[tag]\n" +" print(\"variation axis: %s (%d)\\n\\tmin, max, default: %s\" % [name, " +"tag, values])\n" +"[/codeblock]\n" +"[b]Note:[/b] To set and get variation coordinates of a [FontVariation], use " +"[member FontVariation.variation_opentype]." +msgstr "" +"返回支持的[url=https://docs.microsoft.com/en-us/typography/opentype/spec/" +"dvaraxisreg]变体坐标[/url]列表,坐标以 [code]tag: Vector3i(min_value," +"max_value,default_value)[/code] 的形式返回。\n" +"字体变体能够沿着某个给定的设计轴对字形的特性进行连续的变化,例如字重、宽度、" +"斜度。\n" +"要输出可变字体的可用变体轴:\n" +"[codeblock]\n" +"var fv = FontVariation.new()\n" +"fv.set_base_font = load(\"res://RobotoFlex.ttf\")\n" +"var variation_list = fv.get_supported_variation_list()\n" +"for tag in variation_list:\n" +" var name = TextServerManager.get_primary_interface().tag_to_name(tag)\n" +" var values = variation_list[tag]\n" +" print(\"变体轴:%s (%d)\\n\\t最小值、最大值、默认值:%s\" % [name, tag, " +"values])\n" +"[/codeblock]\n" +"[b]注意:[/b][FontVariation] 变体坐标的设置和获取请使用 [member " +"FontVariation.variation_opentype]。" + +msgid "" +"Returns average pixel offset of the underline below the baseline.\n" +"[b]Note:[/b] Real underline position of the string is context-dependent and " +"can be significantly different from the value returned by this function. Use " +"it only as rough estimate." +msgstr "" +"返回基线下方下划线的平均像素偏移。\n" +"[b]注意:[/b]字符串的实际下划线位置取决于上下文,并且可能与该函数返回的值有很" +"大不同。仅将其用作粗略估计。" + +msgid "" +"Returns average thickness of the underline.\n" +"[b]Note:[/b] Real underline thickness of the string is context-dependent and " +"can be significantly different from the value returned by this function. Use " +"it only as rough estimate." +msgstr "" +"返回下划线的平均粗细。\n" +"[b]注意:[/b]字符串的实际下划线粗细取决于上下文,并且可能与该函数返回的值有很" +"大不同。仅将其用作粗略估计。" + +msgid "" "Returns [code]true[/code] if a Unicode [param char] is available in the font." msgstr "如果该字体中包含 Unicode 字符 [param char],则返回 [code]true[/code]。" @@ -34668,12 +46159,100 @@ msgid "" "bitmap font." msgstr "字体源数据和预渲染字形的缓存,从动态字体或位图字体导入。" +msgid "" +"[FontFile] contains a set of glyphs to represent Unicode characters imported " +"from a font file, as well as a cache of rasterized glyphs, and a set of " +"fallback [Font]s to use.\n" +"Use [FontVariation] to access specific OpenType variation of the font, " +"create simulated bold / slanted version, and draw lines of text.\n" +"For more complex text processing, use [FontVariation] in conjunction with " +"[TextLine] or [TextParagraph].\n" +"Supported font formats:\n" +"- Dynamic font importer: TrueType (.ttf), TrueType collection (.ttc), " +"OpenType (.otf), OpenType collection (.otc), WOFF (.woff), WOFF2 (.woff2), " +"Type 1 (.pfb, .pfm).\n" +"- Bitmap font importer: AngelCode BMFont (.fnt, .font), text and binary " +"(version 3) format variants.\n" +"- Monospace image font importer: All supported image formats.\n" +"[b]Note:[/b] A character is a symbol that represents an item (letter, digit " +"etc.) in an abstract way.\n" +"[b]Note:[/b] A glyph is a bitmap or shape used to draw a one or more " +"characters in a context-dependent manner. Glyph indices are bound to the " +"specific font data source.\n" +"[b]Note:[/b] If a none of the font data sources contain glyphs for a " +"character used in a string, the character in question will be replaced with " +"a box displaying its hexadecimal code.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var f = load(\"res://BarlowCondensed-Bold.ttf\")\n" +"$Label.add_theme_font_override(\"font\", f)\n" +"$Label.add_theme_font_size_override(\"font_size\", 64)\n" +"[/gdscript]\n" +"[csharp]\n" +"var f = ResourceLoader.Load<FontFile>(\"res://BarlowCondensed-Bold.ttf\");\n" +"GetNode(\"Label\").AddThemeFontOverride(\"font\", f);\n" +"GetNode(\"Label\").AddThemeFontSizeOverride(\"font_size\", 64);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"[FontFile] 包含一组代表从字体文件导入的 Unicode 字符的字形,以及一个光栅化字" +"形的缓存,还有一组要使用的后备 [Font]。\n" +"使用 [FontVariation] 访问字体的特定 OpenType 变体,创建模拟的粗体/斜体版本," +"并绘制文本行。\n" +"对于更复杂的文本处理,请将 [FontVariation] 与 [TextLine] 或 [TextParagraph] " +"结合使用。\n" +"支持的字体格式:\n" +"- 动态字体导入器:TrueType(.ttf)、TrueType 集合(.ttc)、OpenType(.otf)、" +"OpenType 集合(.otc)、WOFF(.woff)、WOFF2(.woff2)、Type 1(.pfb,." +"pfm)。\n" +"- 位图字体导入器:AngelCode BMFont(.fnt,.font)、文本和二进制(版本 3)格式" +"变体。\n" +"- 等宽图像字体导入器:所有支持的图像格式。\n" +"[b]注意:[/b]字符是以抽象方式表示一个项目(字母、数字等)的符号。\n" +"[b]注意:[/b]字形是一种位图或形状,用于以上下文相关的方式绘制一个或多个字符。" +"字形索引被绑定到特定的字体数据源。\n" +"[b]注意:[/b]如果没有字体数据源包含字符串中使用的字符的字形,则该字符将被替换" +"为显示其十六进制代码的方框。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var f = load(\"res://BarlowCondensed-Bold.ttf\")\n" +"$Label.add_theme_font_override(\"font\", f)\n" +"$Label.add_theme_font_size_override(\"font_size\", 64)\n" +"[/gdscript]\n" +"[csharp]\n" +"var f = ResourceLoader.Load<FontFile>(\"res://BarlowCondensed-Bold.ttf\");\n" +"GetNode(\"Label\").AddThemeFontOverride(\"font\", f);\n" +"GetNode(\"Label\").AddThemeFontSizeOverride(\"font_size\", 64);\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Removes all font cache entries." msgstr "移除所有字体缓存条目。" +msgid "" +"Removes all rendered glyphs information from the cache entry.\n" +"[b]Note:[/b] This function will not remove textures associated with the " +"glyphs, use [method remove_texture] to remove them manually." +msgstr "" +"从字体缓存条目中,移除所有渲染的字形信息。\n" +"[b]注意:[/b]该函数不会移除与字形相关的纹理,请使用 [method remove_texture] " +"手动移除它们。" + +msgid "Removes all kerning overrides." +msgstr "移除所有字距调整覆盖。" + msgid "Removes all font sizes from the cache entry" msgstr "从缓存条目中移除所有字体大小" +msgid "" +"Removes all textures from font cache entry.\n" +"[b]Note:[/b] This function will not remove glyphs associated with the " +"texture, use [method remove_glyph] to remove them manually." +msgstr "" +"从字体缓存条目中,移除所有纹理。\n" +"[b]注意:[/b]该函数不会移除与纹理相关的字形,请使用 [method remove_glyph] 手" +"动移除它们。" + msgid "Returns the font ascent (number of pixels above the baseline)." msgstr "返回字体的上升幅度(超出基线的像素数)。" @@ -34683,15 +46262,42 @@ msgstr "返回字体缓存条目的数量。" msgid "Returns the font descent (number of pixels below the baseline)." msgstr "返回字体的减少量(低于基线的像素数)。" +msgid "Returns scaling factor of the color bitmap font." +msgstr "返回颜色位图字体的缩放系数。" + +msgid "Returns pixel offset of the underline below the baseline." +msgstr "返回基线下方下划线的像素偏移。" + msgid "Returns thickness of the underline in pixels." msgstr "返回下划线的粗细度,单位为像素。" +msgid "" +"Returns embolden strength, if is not equal to zero, emboldens the font " +"outlines. Negative values reduce the outline thickness." +msgstr "返回加粗强度,如果不等于零,则加粗字体轮廓。负值会减小轮廓粗细。" + msgid "Recturns 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 " +"advance and is not saved." +msgstr "" +"返回字形前进量(下一个字形的偏移量)。\n" +"[b]注意:[/b]字形轮廓的前进量,与基础字形的前进量相同,不会被保存。" + +msgid "" +"Returns the glyph index of a [param char], optionally modified by the [param " +"variation_selector]." +msgstr "返回 [param char] 的字形索引,可以用 [param variation_selector] 修改。" + msgid "Returns list of rendered glyphs in the cache entry." msgstr "返回缓存条目中的已渲染字形列表。" +msgid "Returns glyph offset from the baseline." +msgstr "返回字形的基线偏移量。" + msgid "Returns glyph size." msgstr "返回字形大小。" @@ -34701,21 +46307,93 @@ msgstr "返回包含该字形的缓存纹理的索引。" msgid "Returns rectangle in the cache texture containing the glyph." msgstr "返回包含该字形的缓存纹理中的矩形。" +msgid "Returns kerning for the pair of glyphs." +msgstr "返回字形对的字距调整。" + +msgid "Returns list of the kerning overrides." +msgstr "返回字距调整覆盖的列表。" + +msgid "" +"Returns [code]true[/code] if support override is enabled for the [param " +"language]." +msgstr "如果为 [param language] 启用了支持覆盖,则返回 [code]true[/code]。" + msgid "Returns list of language support overrides." msgstr "返回语言支持覆盖的列表。" +msgid "" +"Returns [code]true[/code] if support override is enabled for the [param " +"script]." +msgstr "如果为 [param script] 启用了支持覆盖,则返回 [code]true[/code]。" + msgid "Returns list of script support overrides." msgstr "返回文字支持覆盖的列表。" +msgid "" +"Returns list of the font sizes in the cache. Each size is [code]Vector2i[/" +"code] with font size and outline size." +msgstr "" +"返回缓存中字体大小的列表。每个大小都是由字体大小和轮廓大小组成的 " +"[code]Vector2i[/code]。" + msgid "Returns number of textures used by font cache entry." msgstr "返回字体缓存条目所使用的纹理数。" msgid "Returns a copy of the font cache texture image." msgstr "返回字体缓存纹理图像的副本。" +msgid "Returns a copy of the array containing glyph packing data." +msgstr "返回包含字形打包数据的数组副本。" + +msgid "" +"Returns 2D transform, applied to the font outlines, can be used for " +"slanting, flipping and rotating glyphs." +msgstr "返回应用于字体轮廓的 2D 变换,可用于倾斜、翻转和旋转字形。" + +msgid "" +"Returns variation coordinates for the specified font cache entry. See " +"[method Font.get_supported_variation_list] for more info." +msgstr "" +"返回指定字体缓存条目的变体坐标。有关详细信息,请参阅 [method Font." +"get_supported_variation_list]。" + +msgid "" +"Loads an AngelCode BMFont (.fnt, .font) bitmap font from file [param path].\n" +"[b]Warning:[/b] This method should only be used in the editor or in cases " +"when you need to load external fonts at run-time, such as fonts located at " +"the [code]user://[/code] directory." +msgstr "" +"从文件 [param path] 中加载一个 AngelCode BMFont (.fnt, .font) 位图字体。\n" +"[b]警告:[/b]该方法只能在编辑器中或需要在运行时加载外部字体的情况下使用,例如" +"位于 [code]user://[/code] 目录的字体。" + +msgid "" +"Loads a TrueType (.ttf), OpenType (.otf), WOFF (.woff), WOFF2 (.woff2) or " +"Type 1 (.pfb, .pfm) dynamic font from file [param path].\n" +"[b]Warning:[/b] This method should only be used in the editor or in cases " +"when you need to load external fonts at run-time, such as fonts located at " +"the [code]user://[/code] directory." +msgstr "" +"从文件 [param path] 中加载 TrueType(.ttf)、OpenType(.otf)、WOFF(." +"woff)、WOFF2(.woff2)或 Type 1(.pfb、.pfm)动态字体。\n" +"[b]警告:[/b]该方法只能在编辑器中或需要在运行时加载外部字体的情况下使用,例如" +"位于 [code]user://[/code] 目录的字体。" + msgid "Removes specified font cache entry." msgstr "删除指定的字体缓存条目。" +msgid "" +"Removes specified rendered glyph information from the cache entry.\n" +"[b]Note:[/b] This function will not remove textures associated with the " +"glyphs, use [method remove_texture] to remove them manually." +msgstr "" +"从缓存条目中移除指定的渲染的字形信息。\n" +"[b]注意:[/b]该函数不会移除与字形相关的纹理,请使用 [method remove_texture] " +"手动移除它们。" + +msgid "Removes kerning override for the pair of glyphs." +msgstr "移除字形对的字距调整覆盖。" + msgid "Remove language support override." msgstr "移除语言支持覆盖。" @@ -34725,6 +46403,21 @@ msgstr "移除文字支持覆盖。" msgid "Removes specified font size from the cache entry." msgstr "从缓存条目中移除指定的字体大小。" +msgid "" +"Removes specified texture from the cache entry.\n" +"[b]Note:[/b] This function will not remove glyphs associated with the " +"texture. Remove them manually using [method remove_glyph]." +msgstr "" +"从缓存条目中移除指定的纹理。\n" +"[b]注意:[/b]该函数不会移除与纹理相关的字形,请使用 [method remove_glyph] 手" +"动移除它们。" + +msgid "Renders specified glyph to the font cache texture." +msgstr "将指定的字符渲染到字体缓存纹理。" + +msgid "Renders the range of characters to the font cache texture." +msgstr "将范围内的字符渲染到字体缓存纹理。" + msgid "Sets the font ascent (number of pixels above the baseline)." msgstr "设置字体的升部(基线上方的像素数)。" @@ -34734,6 +46427,9 @@ msgstr "设置字体的降部(基线下方的像素数)。" msgid "Sets scaling factor of the color bitmap font." msgstr "设置彩色位图字体的缩放系数。" +msgid "Sets pixel offset of the underline below the baseline." +msgstr "设置基线下方下划线的像素偏移。" + msgid "Sets thickness of the underline in pixels." msgstr "设置下划线的粗细度,单位为像素。" @@ -34745,6 +46441,14 @@ msgstr "设置加粗强度,如果不等于零,则会加粗字体的轮廓。 msgid "Sets an active face index in the TrueType / OpenType collection." msgstr "在 TrueType / OpenType 集合中设置活动字体索引。" +msgid "" +"Sets glyph advance (offset of the next glyph).\n" +"[b]Note:[/b] Advance for glyphs outlines is the same as the base glyph " +"advance and is not saved." +msgstr "" +"设置字形前进量(下一个字形的偏移量)。\n" +"[b]注意:[/b]字形轮廓的前进量与基础字形的前进量相同,不会被保存。" + msgid "Sets glyph offset from the baseline." msgstr "设置字形相对于基线的偏移量。" @@ -34757,9 +46461,38 @@ msgstr "设置包含该字形的缓存纹理的索引。" msgid "Sets rectangle in the cache texture containing the glyph." msgstr "设置包含该字形的缓存纹理中,该字形的矩形区域。" +msgid "Sets kerning for the pair of glyphs." +msgstr "设置字形对的字距调整。" + +msgid "Adds override for [method Font.is_language_supported]." +msgstr "为 [method Font.is_language_supported] 添加覆盖。" + +msgid "Adds override for [method Font.is_script_supported]." +msgstr "为 [method Font.is_script_supported] 添加覆盖。" + msgid "Sets font cache texture image." msgstr "设置字体缓存纹理图像。" +msgid "Sets array containing glyph packing data." +msgstr "设置包含字形打包数据的数组。" + +msgid "" +"Sets 2D transform, applied to the font outlines, can be used for slanting, " +"flipping and rotating glyphs." +msgstr "设置应用于字体轮廓的 2D 变换,可用于倾斜、翻转和旋转字形。" + +msgid "" +"Sets variation coordinates for the specified font cache entry. See [method " +"Font.get_supported_variation_list] for more info." +msgstr "" +"为指定的字体缓存条目设置变体坐标。有关详细信息,请参阅 [method Font." +"get_supported_variation_list]。" + +msgid "" +"If set to [code]true[/code], system fonts can be automatically used as " +"fallbacks." +msgstr "如果设置为 [code]true[/code],则可以自动将系统字体作为回退使用。" + msgid "Font anti-aliasing mode." msgstr "字体抗锯齿模式。" @@ -34775,9 +46508,34 @@ msgstr "字体大小,仅用于位图字体。" msgid "Font family name." msgstr "字体家族名称。" +msgid "" +"Font stretch amount, compared to a normal width. A percentage value between " +"[code]50%[/code] and [code]200%[/code]." +msgstr "" +"与正常宽度相比的字体的拉伸量。 一个介于 [code]50%[/code] 和 [code]200%[/" +"code] 之间的百分比值。" + msgid "Font style flags, see [enum TextServer.FontStyle]." msgstr "字体样式标志,见 [enum TextServer.FontStyle]。" +msgid "" +"Weight (boldness) of the font. A value in the [code]100...999[/code] range, " +"normal font weight is [code]400[/code], bold font weight is [code]700[/code]." +msgstr "" +"该字体的字重(粗度)。一个在 [code]100...999[/code] 范围内的值,正常字体字重" +"为 [code]400[/code],粗体字体字重为 [code]700[/code]。" + +msgid "" +"If set to [code]true[/code], auto-hinting is supported and preferred over " +"font built-in hinting. Used by dynamic fonts only (MSDF fonts don't support " +"hinting)." +msgstr "" +"如果设置为 [code]true[/code],则支持自动提示并且优先于字体内置提示。仅由动态" +"字体使用(MSDF 字体不支持提示)。" + +msgid "If set to [code]true[/code], generate mipmaps for the font textures." +msgstr "如果设置为 [code]true[/code],则为字体纹理生成 mipmap。" + msgid "Font hinting mode. Used by dynamic fonts only." msgstr "字体微调模式。仅由动态字体使用。" @@ -34793,6 +46551,47 @@ msgstr "" "[member msdf_pixel_range] 的默认值为 [code]16[/code],允许大小最大到 " "[code]8[/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 this value if you notice a visible lack of precision in glyph " +"rendering." +msgstr "" +"用于生成 MSDF 纹理的源字体大小。较高的值允许更高的精度,但渲染速度较慢并且需" +"要更多内存。只有当注意到字形渲染中明显缺乏精度时,才增加该属性的值。" + +msgid "" +"If set to [code]true[/code], glyphs of all sizes are rendered using single " +"multichannel signed distance field (MSDF) generated from the dynamic font " +"vector data. Since this approach does not rely on rasterizing the font every " +"time its size changes, this allows for resizing the font in real-time " +"without any performance penalty. Text will also not look grainy for " +"[Control]s that are scaled down (or for [Label3D]s viewed from a long " +"distance). As a downside, font hinting is not available with MSDF. The lack " +"of font hinting may result in less crisp and less readable fonts at small " +"sizes.\n" +"[b]Note:[/b] If using font outlines, [member msdf_pixel_range] must be set " +"to at least [i]twice[/i] the size of the largest font outline.\n" +"[b]Note:[/b] MSDF font rendering does not render glyphs with overlapping " +"shapes correctly. Overlapping shapes are not valid per the OpenType " +"standard, but are still commonly found in many font files, especially those " +"converted by Google Fonts. To avoid issues with overlapping glyphs, consider " +"downloading the font file directly from the type foundry instead of relying " +"on Google Fonts." +msgstr "" +"如果被设置为 [code]true[/code],则所有大小的字形进行渲染时,都使用从动态字体" +"矢量数据中生成的单个多通道带符号距离场(MSDF)。由于这种方法不依赖于在每次字" +"体大小发生变化时,对字体进行栅格化,因此可以实时调整字体大小而不会造成任何性" +"能损失。对于按比例缩小的 [Control](或从远距离查看的 [Label3D]),文本也不会" +"看起来有颗粒感。有一个缺点,MSDF 不提供字体提示。缺少字体提示可能会导致大小较" +"小的字体的清晰度和可读性较差。\n" +"[b]注意:[/b]如果使用字体轮廓,[member msdf_pixel_range] 必须至少设置为最大字" +"体轮廓大小的[i]两倍[/i]。\n" +"[b]注意:[/b]MSDF 字体渲染不能正确渲染具有重叠形状的字形。根据 OpenType 标" +"准,重叠形状是无效的,但在许多字体文件中仍然很常见,尤其是那些由 Google 字体" +"转换的字体文件。为避免字形重叠的问题,请考虑直接从字体开发公司下载字体文件," +"而不是依赖 Google 字体。" + msgid "Font OpenType feature set override." msgstr "字体 OpenType 特性集覆盖。" @@ -34807,14 +46606,104 @@ msgstr "" msgid "Font style name." msgstr "字体样式名称。" +msgid "" +"Font glyph subpixel positioning mode. Subpixel positioning provides shaper " +"text and better kerning for smaller font sizes, at the cost of higher memory " +"usage and lower font rasterization speed. Use [constant TextServer." +"SUBPIXEL_POSITIONING_AUTO] to automatically enable it based on the font size." +msgstr "" +"字体字形的子像素定位模式。子像素定位为较小的字体提供了更清晰的文本和更好的字" +"距调整,但代价是更高的内存占用和更低的字体光栅化速度。使用 [constant " +"TextServer.SUBPIXEL_POSITIONING_AUTO] 来根据字体大小自动启用它。" + msgid "Variation of the [Font]." msgstr "[Font] 的变体。" msgid "" +"OpenType variations, simulated bold / slant, and additional font settings " +"like OpenType features and extra spacing.\n" +"To use simulated bold font variant:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var fv = FontVariation.new()\n" +"fv.set_base_font(load(\"res://BarlowCondensed-Regular.ttf\"))\n" +"fv.set_variation_embolden(1.2)\n" +"$Label.add_theme_font_override(\"font\", fv)\n" +"$Label.add_theme_font_size_override(\"font_size\", 64)\n" +"[/gdscript]\n" +"[csharp]\n" +"var fv = new FontVariation();\n" +"fv.SetBaseFont(ResourceLoader.Load<FontFile>(\"res://BarlowCondensed-Regular." +"ttf\"));\n" +"fv.SetVariationEmbolden(1.2);\n" +"GetNode(\"Label\").AddThemeFontOverride(\"font\", fv);\n" +"GetNode(\"Label\").AddThemeFontSizeOverride(\"font_size\", 64);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"To set the coordinate of multiple variation axes:\n" +"[codeblock]\n" +"var fv = FontVariation.new();\n" +"var ts = TextServerManager.get_primary_interface()\n" +"fv.base_font = load(\"res://BarlowCondensed-Regular.ttf\")\n" +"fv.variation_opentype = { ts.name_to_tag(\"wght\"): 900, ts." +"name_to_tag(\"custom_hght\"): 900 }\n" +"[/codeblock]" +msgstr "" +"OpenType 变体、模拟粗体/斜体、OpenType 特性等其他字体设置、额外的间距。\n" +"要模拟粗体变体:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var fv = FontVariation.new()\n" +"fv.set_base_font(load(\"res://BarlowCondensed-Regular.ttf\"))\n" +"fv.set_variation_embolden(1.2)\n" +"$Label.add_theme_font_override(\"font\", fv)\n" +"$Label.add_theme_font_size_override(\"font_size\", 64)\n" +"[/gdscript]\n" +"[csharp]\n" +"var fv = new FontVariation();\n" +"fv.SetBaseFont(ResourceLoader.Load<FontFile>(\"res://BarlowCondensed-Regular." +"ttf\"));\n" +"fv.SetVariationEmbolden(1.2);\n" +"GetNode(\"Label\").AddThemeFontOverride(\"font\", fv);\n" +"GetNode(\"Label\").AddThemeFontSizeOverride(\"font_size\", 64);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"要设置多个变体轴的坐标:\n" +"[codeblock]\n" +"var fv = FontVariation.new();\n" +"var ts = TextServerManager.get_primary_interface()\n" +"fv.base_font = load(\"res://BarlowCondensed-Regular.ttf\")\n" +"fv.variation_opentype = { ts.name_to_tag(\"wght\"): 900, ts." +"name_to_tag(\"custom_hght\"): 900 }\n" +"[/codeblock]" + +msgid "" +"Sets the spacing for [code]type[/code] (see [enum TextServer.SpacingType]) " +"to [param value] in pixels (not relative to the font size)." +msgstr "" +"将 [code]type[/code](参见 [enum TextServer.SpacingType])的间距设置为 " +"[param value] 像素(与字体大小无关)。" + +msgid "" "Base font used to create a variation. If not set, default [Theme] font is " "used." msgstr "用于创建变体的基础字体。如果未设置,则使用默认的 [Theme] 字体。" +msgid "" +"Array of fallback [Font]s to use as a substitute if a glyph is not found in " +"this [FontVariation]. If not set, [member base_font]'s fallbacks are used " +"instead." +msgstr "" +"如果在该 [FontVariation] 中找不到字形,则用作替代的回退 [Font] 数组。如果没有" +"设置,则使用 [member base_font] 的回退字体。" + +msgid "" +"A set of OpenType feature tags. More info: [url=https://docs.microsoft.com/" +"en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url]." +msgstr "" +"一组 OpenType 功能标签。更多信息:[url=https://docs.microsoft.com/en-us/" +"typography/opentype/spec/featuretags]OpenType 功能标签[/url]。" + msgid "Extra spacing at the bottom of the line in pixels." msgstr "行底部的额外间距,单位为像素。" @@ -34840,6 +46729,39 @@ 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([code]int[/code]) and names ([code]string[/" +"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 标签作为键。变体轴既可以用标签来" +"标识([code]int[/code]),也可以用名称来标识([code]string[/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" +"For example, to simulate italic typeface by slanting, apply the following " +"transform [code]Transform2D(1.0, slant, 0.0, 1.0, 0.0, 0.0)[/code]." +msgstr "" +"应用于字体轮廓的 2D 变换,可用于倾斜、翻转和旋转字形。\n" +"例如,要通过倾斜来模拟斜体字体,请应用以下变换 [code]Transform2D(1.0, slant, " +"0.0, 1.0, 0.0, 0.0)[/code]。" + msgid "A script implemented in the GDScript programming language." msgstr "用 GDScript 编程语言实现的脚本。" @@ -35183,6 +47105,11 @@ msgid "The speed of all rotations across the axes." msgstr "所有跨轴旋转的速度。" msgid "" +"The amount of rotational damping across the axes. The lower, the more " +"damping occurs." +msgstr "跨该轴的旋转阻尼量。值越低,发生的阻尼就越多。" + +msgid "" "The amount of rotational restitution across the axes. The lower, the more " "restitution occurs." msgstr "在各轴上的旋转恢复量。值越低,发生的恢复量越大。" @@ -35223,6 +47150,39 @@ msgid "Helper node to calculate generic geometry operations in 2D space." msgstr "辅助节点,用于计算 2D 空间中的通用几何体操作。" msgid "" +"Geometry2D provides users with a set of helper functions to create geometric " +"shapes, compute intersections between shapes, and process various other " +"geometric operations." +msgstr "" +"Geometry2D 为用户提供了一组辅助函数,来创建几何形状、计算形状之间的交集、以及" +"处理各种其他几何操作。" + +msgid "" +"Clips [param polygon_a] against [param polygon_b] and returns an array of " +"clipped polygons. This performs [constant OPERATION_DIFFERENCE] between " +"polygons. Returns an empty array if [param polygon_b] completely overlaps " +"[param polygon_a].\n" +"If [param polygon_b] is enclosed by [param polygon_a], returns an outer " +"polygon (boundary) and inner polygon (hole) which could be distinguished by " +"calling [method is_polygon_clockwise]." +msgstr "" +"根据 [param polygon_b] 裁剪 [param polygon_a],并返回一组裁剪后的多边形。这会" +"在多边形之间执行 [constant OPERATION_DIFFERENCE]。如果 [param polygon_b] 与 " +"[param polygon_a] 完全重叠,则返回一个空数组。\n" +"如果 [param polygon_b] 被 [param polygon_a] 包围,则返回一个外多边形(边界)" +"和一个内多边形(孔),可以通过调用 [method is_polygon_clockwise] 来区分。" + +msgid "" +"Clips [param polyline] against [param polygon] and returns an array of " +"clipped polylines. This performs [constant OPERATION_DIFFERENCE] between the " +"polyline and the polygon. This operation can be thought of as cutting a line " +"with a closed shape." +msgstr "" +"根据 [param polygon] 裁剪 [param polyline],并返回一组裁剪后的折线。这会在折" +"线和多边形之间执行 [constant OPERATION_DIFFERENCE]。这个操作可以被认为是用一" +"个封闭的形状切割一条线。" + +msgid "" "Given an array of [Vector2]s, returns the convex hull as a list of points in " "counterclockwise order. The last point is the same as the first one." msgstr "" @@ -35230,6 +47190,28 @@ msgstr "" "个点相同。" msgid "" +"Decomposes the [param polygon] into multiple convex hulls and returns an " +"array of [PackedVector2Array]." +msgstr "" +"将 [param polygon] 分解为多个凸面,并返回一个 [PackedVector2Array] 的数组。" + +msgid "" +"Mutually excludes common area defined by intersection of [param polygon_a] " +"and [param polygon_b] (see [method intersect_polygons]) and returns an array " +"of excluded polygons. This performs [constant OPERATION_XOR] between " +"polygons. In other words, returns all but common area between polygons.\n" +"The operation may result in an outer polygon (boundary) and inner polygon " +"(hole) produced which could be distinguished by calling [method " +"is_polygon_clockwise]." +msgstr "" +"相互排除由 [param polygon_a] 和 [param polygon_b] 的交集(参见 [method " +"intersect_polygons])定义的公共区域,并返回一组排除的多边形。这会在多边形之间" +"执行 [constant OPERATION_XOR]。换句话说,返回各多边形之间除公共区域之外的所有" +"区域。\n" +"该操作可能会产生一个外多边形(边界)和一个内多边形(孔),这可以通过调用 " +"[method is_polygon_clockwise] 来区分。" + +msgid "" "Returns the 2D point on the 2D segment ([param s1], [param s2]) that is " "closest to [param point]. The returned point will always be inside the " "specified segment." @@ -35258,6 +47240,31 @@ msgstr "" "[param q1]) 和 ([param p2], [param q2]) 上的点。" msgid "" +"Intersects [param polygon_a] with [param polygon_b] and returns an array of " +"intersected polygons. This performs [constant OPERATION_INTERSECTION] " +"between polygons. In other words, returns common area shared by polygons. " +"Returns an empty array if no intersection occurs.\n" +"The operation may result in an outer polygon (boundary) and inner polygon " +"(hole) produced which could be distinguished by calling [method " +"is_polygon_clockwise]." +msgstr "" +"将 [param polygon_a] 与 [param polygon_b] 相交,并返回一组相交的多边形。这会" +"在多边形之间执行 [constant OPERATION_INTERSECTION]。换句话说,返回由各多边形" +"共享的公共区域。如果没有交集,则返回一个空数组。\n" +"该操作可能会产生一个外多边形(边界)和一个内多边形(孔),这可以通过调用 " +"[method is_polygon_clockwise] 来区分。" + +msgid "" +"Intersects [param polyline] with [param polygon] and returns an array of " +"intersected polylines. This performs [constant OPERATION_INTERSECTION] " +"between the polyline and the polygon. This operation can be thought of as " +"chopping a line with a closed shape." +msgstr "" +"将 [param polyline] 与 [param polygon] 相交,并返回一组相交的折线。这会在折线" +"和多边形之间执行 [constant OPERATION_INTERSECTION]。这个操作可以被认为是用一" +"个封闭的形状切割一条线。" + +msgid "" "Returns [code]true[/code] if [param point] is inside the circle or if it's " "located exactly [i]on[/i] the circle's boundary, otherwise returns " "[code]false[/code]." @@ -35292,6 +47299,29 @@ msgstr "" "[b]注意:[/b]直线使用方向向量指定,而不是终点。" msgid "" +"Given an array of [Vector2]s representing tiles, builds an atlas. The " +"returned dictionary has two keys: [code]points[/code] is a " +"[PackedVector2Array] that specifies the positions of each tile, [code]size[/" +"code] contains the overall size of the whole atlas as [Vector2i]." +msgstr "" +"给定一个表示图块的 [Vector2] 数组,构建一个图集。返回的字典有两个键:" +"[code]points[/code] 是一个 [PackedVector2Array],指定每个图块的位置;" +"[code]size[/code] 包含整个图集的整体大小,是一个 [Vector2i]。" + +msgid "" +"Merges (combines) [param polygon_a] and [param polygon_b] and returns an " +"array of merged polygons. This performs [constant OPERATION_UNION] between " +"polygons.\n" +"The operation may result in an outer polygon (boundary) and multiple inner " +"polygons (holes) produced which could be distinguished by calling [method " +"is_polygon_clockwise]." +msgstr "" +"合并(结合)[param polygon_a] 和 [param polygon_b],并返回一组合并的多边形。" +"这在多边形之间执行 [constant OPERATION_UNION]。\n" +"该操作可能会产生一个外部多边形(边界)和多个内部多边形(孔),可以通过调用 " +"[method is_polygon_clockwise] 来区分它们。" + +msgid "" "Inflates or deflates [param polygon] by [param delta] units (pixels). If " "[param delta] is positive, makes the polygon grow outward. If [param delta] " "is negative, shrinks the polygon inward. Returns an array of polygons " @@ -35352,6 +47382,30 @@ msgstr "" "[/codeblocks]" msgid "" +"Inflates or deflates [param polyline] by [param delta] units (pixels), " +"producing polygons. If [param delta] is positive, makes the polyline grow " +"outward. Returns an array of polygons because inflating/deflating may result " +"in multiple discrete polygons. If [param delta] is negative, returns an " +"empty array.\n" +"Each polygon's vertices will be rounded as determined by [param join_type], " +"see [enum PolyJoinType].\n" +"Each polygon's endpoints will be rounded as determined by [param end_type], " +"see [enum PolyEndType].\n" +"The operation may result in an outer polygon (boundary) and inner polygon " +"(hole) produced which could be distinguished by calling [method " +"is_polygon_clockwise]." +msgstr "" +"将 [param polyline] 膨胀或缩小 [param delta] 个单位(像素),以产生多边形。如" +"果 [param delta] 为正,则使折线向外增长。返回一组多边形,因为膨胀/收缩可能会" +"产生多个离散的多边形。如果 [param delta] 为负,则返回一个空数组。\n" +"每个多边形的顶点将由 [param join_type] 决定进行舍入,参见 [enum " +"PolyJoinType]。\n" +"每个多边形的端点将由 [param end_type] 决定进行舍入,参见 [enum " +"PolyEndType]。\n" +"该操作可能会产生一个外多边形(边界)和一个内多边形(孔),这可以通过调用 " +"[method is_polygon_clockwise] 来区分。" + +msgid "" "Returns if [param point] is inside the triangle specified by [param a], " "[param b] and [param c]." msgstr "" @@ -35470,6 +47524,55 @@ msgid "Helper node to calculate generic geometry operations in 3D space." msgstr "辅助节点,用于计算 3D 空间中的通用几何体操作。" msgid "" +"Geometry3D provides users with a set of helper functions to create geometric " +"shapes, compute intersections between shapes, and process various other " +"geometric operations." +msgstr "" +"Geometry3D 为用户提供了一组辅助函数,来创建几何形状、计算形状之间的交集、以及" +"处理各种其他几何操作。" + +msgid "" +"Returns an array with 6 [Plane]s that describe the sides of a box centered " +"at the origin. The box size is defined by [param extents], which represents " +"one (positive) corner of the box (i.e. half its actual size)." +msgstr "" +"返回一个包含 6 个 [Plane] 的数组,这些 [Plane] 描述以原点为中心的盒子的边。盒" +"子大小由 [param extents] 定义,它代表盒子的一个(正)角(即实际大小的一半)。" + +msgid "" +"Returns an array of [Plane]s closely bounding a faceted capsule centered at " +"the origin with radius [param radius] and height [param height]. The " +"parameter [param sides] defines how many planes will be generated for the " +"side part of the capsule, whereas [param lats] gives the number of " +"latitudinal steps at the bottom and top of the capsule. The parameter [param " +"axis] describes the axis along which the capsule is oriented (0 for X, 1 for " +"Y, 2 for Z)." +msgstr "" +"返回一个 [Plane] 的数组,这些 [Plane] 紧密围绕着以原点为中心的多面胶囊,该胶" +"囊半径为 [param radius]、高度为 [param height]。参数 [param sides] 定义了将为" +"胶囊的侧面部分生成多少个平面,而 [param lats] 给出了胶囊底部和顶部的纬向步" +"数。参数 [param axis] 描述了胶囊的方向轴(0 代表 X,1 代表 Y,2 代表 Z)。" + +msgid "" +"Returns an array of [Plane]s closely bounding a faceted cylinder centered at " +"the origin with radius [param radius] and height [param height]. The " +"parameter [param sides] defines how many planes will be generated for the " +"round part of the cylinder. The parameter [param axis] describes the axis " +"along which the cylinder is oriented (0 for X, 1 for Y, 2 for Z)." +msgstr "" +"返回一组 [Plane],这些 [Plane] 紧密围绕着以原点为中心的多面圆柱体,该圆柱体半" +"径为 [param radius]、高度为 [param height] 。参数 [param sides] 定义了将为圆" +"柱体的圆形部分生成多少个平面。参数 [param axis] 描述了圆柱体的方向轴(0 代表 " +"X,1 代表 Y,2 代表 Z)。" + +msgid "" +"Clips the polygon defined by the points in [param points] against the [param " +"plane] and returns the points of the clipped polygon." +msgstr "" +"将 [param points] 中的点所定义的多边形,裁剪该 [param plane] 并返回该裁剪后的" +"多边形的点。" + +msgid "" "Returns the 3D point on the 3D segment ([param s1], [param s2]) that is " "closest to [param point]. The returned point will always be inside the " "specified segment." @@ -35559,6 +47662,9 @@ msgid "" msgstr "" "基于几何图形的视觉实例的基础节点。分享一些共同的机制,如可见性和自定义材质。" +msgid "Get the value of a shader parameter as set on this instance." +msgstr "获取在该实例上设置的着色器参数值。" + msgid "" "Set the value of a shader uniform for this instance only ([url=$DOCS_URL/" "tutorials/shaders/shader_reference/shading_language.html#per-instance-" @@ -35591,6 +47697,52 @@ msgid "" msgstr "选择的阴影投射标志。可能的取值见 [enum ShadowCastingSetting]。" msgid "" +"Overrides the bounding box of this node with a custom one. This can be used " +"to avoid the expensive [AABB] recalculation that happens when a skeleton is " +"used with a [MeshInstance3D] or to have fine control over the " +"[MeshInstance3D]'s bounding box. To remove this, set value to an [AABB] with " +"all fields set to zero." +msgstr "" +"用一个自定义的边框来覆盖这个节点的边框。这可以用来避免当骨架与 " +"[MeshInstance3D] 一起使用时,昂贵的 [AABB] 重新计算;或者可对 " +"[MeshInstance3D] 的边框进行精细控制。要移除它,请将值设置为一个所有字段被设置" +"为零的 [AABB]。" + +msgid "" +"The extra distance added to the GeometryInstance3D's bounding box ([AABB]) " +"to increase its cull box." +msgstr "" +"添加到 GeometryInstance3D 的边界框([AABB]),以增加其剔除框的额外距离。" + +msgid "" +"The texel density to use for lightmapping in [LightmapGI]. Greater scale " +"values provide higher resolution in the lightmap, which can result in " +"sharper shadows for lights that have both direct and indirect light baked. " +"However, greater scale values will also increase the space taken by the mesh " +"in the lightmap texture, which increases the memory, storage, and bake time " +"requirements. When using a single mesh at different scales, consider " +"adjusting this value to keep the lightmap texel density consistent across " +"meshes." +msgstr "" +"[LightmapGI] 中用于光照贴图的纹素密度。较大的缩放值可在光照贴图中提供更高的分" +"辨率,这可以为同时烘焙了直接光和间接光的灯光,生成更清晰的阴影。但是,更大的" +"缩放值也会增加光照贴图纹理中网格占用的空间,从而增加需要的内存、存储空间、和" +"烘焙时间。在不同缩放下使用单个网格时,请考虑调整该值,以保持光照贴图纹素密度" +"在网格之间保持一致。" + +msgid "" +"The global illumination mode to use for the whole geometry. To avoid " +"inconsistent results, use a mode that matches the purpose of the mesh during " +"gameplay (static/dynamic).\n" +"[b]Note:[/b] Lights' bake mode will also affect the global illumination " +"rendering. See [member Light3D.light_bake_mode]." +msgstr "" +"用于整个几何体的全局照明模式。为避免结果不一致,请在游戏过程中,使用与网格用" +"途相匹配的模式(静态/动态)。\n" +"[b]注意:[/b]灯光的烘焙模式,也会影响全局照明渲染。请参阅 [member Light3D." +"light_bake_mode]。" + +msgid "" "If [code]true[/code], disables occlusion culling for this instance. Useful " "for gizmos that must be rendered even when occlusion culling is in use." msgstr "" @@ -35626,6 +47778,116 @@ msgstr "" "材质。" msgid "" +"The transparency applied to the whole geometry (as a multiplier of the " +"materials' existing transparency). [code]0.0[/code] is fully opaque, while " +"[code]1.0[/code] is fully transparent. Values greater than [code]0.0[/code] " +"(exclusive) will force the geometry's materials to go through the " +"transparent pipeline, which is slower to render and can exhibit rendering " +"issues due to incorrect transparency sorting. However, unlike using a " +"transparent material, setting [member transparency] to a value greater than " +"[code]0.0[/code] (exclusive) will [i]not[/i] disable shadow rendering.\n" +"In spatial shaders, [code]1.0 - transparency[/code] is set as the default " +"value of the [code]ALPHA[/code] built-in.\n" +"[b]Note:[/b] [member transparency] is clamped between [code]0.0[/code] and " +"[code]1.0[/code], so this property cannot be used to make transparent " +"materials more opaque than they originally are." +msgstr "" +"应用于整个几何体的透明度(作为材质现有透明度的乘数)。[code]0.0[/code] 是完全" +"不透明的,而 [code]1.0[/code] 是完全透明的。大于 [code]0.0[/code](不含)的值" +"将强制几何体的材质通过透明管道,这会导致渲染速度变慢,并且可能会因不正确的透" +"明度排序而出现渲染问题。但是,与使用透明材质不同的是,将 [member " +"transparency] 设置为大于 [code]0.0[/code](不含)的值并[i]不会[/i]禁用阴影渲" +"染。\n" +"在空间着色器中,[code]1.0 - transparency[/code] 被设置为内置 [code]ALPHA[/" +"code] 的默认值。\n" +"[b]注意:[/b][member transparency] 被钳制在 [code]0.0[/code] 和 [code]1.0[/" +"code] 之间,所以这个属性不能被用来使透明材质变得比原来更加不透明。" + +msgid "" +"Starting distance from which the GeometryInstance3D will be visible, taking " +"[member visibility_range_begin_margin] into account as well. The default " +"value of 0 is used to disable the range check." +msgstr "" +"GeometryInstance3D 可见的起始距离,同时考虑 [member " +"visibility_range_begin_margin]。默认值 0 用于禁用范围检查。" + +msgid "" +"Margin for the [member visibility_range_begin] threshold. The " +"GeometryInstance3D will only change its visibility state when it goes over " +"or under the [member visibility_range_begin] threshold by this amount.\n" +"If [member visibility_range_fade_mode] is [constant " +"VISIBILITY_RANGE_FADE_DISABLED], this acts as an hysteresis distance. If " +"[member visibility_range_fade_mode] is [constant VISIBILITY_RANGE_FADE_SELF] " +"or [constant VISIBILITY_RANGE_FADE_DEPENDENCIES], this acts as a fade " +"transition distance and must be set to a value greater than [code]0.0[/code] " +"for the effect to be noticeable." +msgstr "" +"[member visibility_range_begin] 阈值的边距。GeometryInstance3D 只有在超出或低" +"于 [member visibility_range_begin] 阈值达到这个量时,才会更改其可见性状态。\n" +"如果 [member visibility_range_fade_mode] 为 [constant " +"VISIBILITY_RANGE_FADE_DISABLED],这将作为滞后距离。如果 [member " +"visibility_range_fade_mode] 为 [constant VISIBILITY_RANGE_FADE_SELF] 或 " +"[constant VISIBILITY_RANGE_FADE_DEPENDENCIES],这将作为淡入淡出过渡距离,并且" +"必须被设置为大于 [code]0.0[/code] 的值,才能使效果显眼。" + +msgid "" +"Distance from which the GeometryInstance3D will be hidden, taking [member " +"visibility_range_end_margin] into account as well. The default value of 0 is " +"used to disable the range check." +msgstr "" +"GeometryInstance3D 将被隐藏的距离,同时考虑 [member " +"visibility_range_end_margin]。默认值 0 用于禁用范围检查。" + +msgid "" +"Margin for the [member visibility_range_end] threshold. The " +"GeometryInstance3D will only change its visibility state when it goes over " +"or under the [member visibility_range_end] threshold by this amount.\n" +"If [member visibility_range_fade_mode] is [constant " +"VISIBILITY_RANGE_FADE_DISABLED], this acts as an hysteresis distance. If " +"[member visibility_range_fade_mode] is [constant VISIBILITY_RANGE_FADE_SELF] " +"or [constant VISIBILITY_RANGE_FADE_DEPENDENCIES], this acts as a fade " +"transition distance and must be set to a value greater than [code]0.0[/code] " +"for the effect to be noticeable." +msgstr "" +"[member visibility_range_end] 阈值的边距。GeometryInstance3D 只有在超出或低" +"于 [member visibility_range_end] 阈值达到这个量时,才会更改其可见性状态。\n" +"如果 [member visibility_range_fade_mode] 为 [constant " +"VISIBILITY_RANGE_FADE_DISABLED],这将作为滞后距离。如果 [member " +"visibility_range_fade_mode] 为 [constant VISIBILITY_RANGE_FADE_SELF] 或 " +"[constant VISIBILITY_RANGE_FADE_DEPENDENCIES],这将作为淡入淡出过渡距离,并且" +"必须被设置为大于 [code]0.0[/code] 的值,才能使效果显眼。" + +msgid "" +"Controls which instances will be faded when approaching the limits of the " +"visibility range. See [enum VisibilityRangeFadeMode] for possible values." +msgstr "" +"控制在接近可见范围的限制时,哪些实例将被淡化。有关可能的值,请参阅 [enum " +"VisibilityRangeFadeMode]。" + +msgid "" +"Will not cast any shadows. Use this to improve performance for small " +"geometry that is unlikely to cast noticeable shadows (such as debris)." +msgstr "" +"不会投射任何阴影。使用该选项,可提高不太可能投射明显阴影的小型几何体(例如碎" +"片)的性能。" + +msgid "" +"Will cast shadows from all visible faces in the GeometryInstance3D.\n" +"Will take culling into account, so faces not being rendered will not be " +"taken into account when shadow casting." +msgstr "" +"将从 GeometryInstance3D 中的所有可见面投射阴影。\n" +"将考虑剔除,因此在阴影投射时,不会考虑那些不会被渲染的面。" + +msgid "" +"Will cast shadows from all visible faces in the GeometryInstance3D.\n" +"Will not take culling into account, so all faces will be taken into account " +"when shadow casting." +msgstr "" +"将从 GeometryInstance3D 中的所有可见面投射阴影。\n" +"不会考虑剔除,因此在阴影投射时,将考虑所有面。" + +msgid "" "Will only show the shadows casted from this object.\n" "In other words, the actual mesh will not be visible, only the shadows casted " "from the mesh will be." @@ -35633,12 +47895,103 @@ msgstr "" "只显示从这个物体投射出来的阴影。\n" "换句话说,实际的网格将不可见,只有网格投影可见。" +msgid "" +"Disabled global illumination mode. Use for dynamic objects that do not " +"contribute to global illumination (such as characters). When using [VoxelGI] " +"and SDFGI, the geometry will [i]receive[/i] indirect lighting and " +"reflections but the geometry will not be considered in GI baking. When using " +"[LightmapGI], the object will receive indirect lighting using lightmap " +"probes instead of using the baked lightmap texture." +msgstr "" +"禁用全局照明模式。用于对全局照明没有贡献的动态对象(例如角色)。使用 " +"[VoxelGI] 和 SDFGI 时,几何体将[i]接收[/i]间接照明和反射,但在 GI 烘焙中不会" +"考虑几何体。使用 [LightmapGI] 时,对象将使用光照贴图探针接收间接光照,而不是" +"使用烘焙的光照贴图纹理。" + +msgid "" +"Baked global illumination mode. Use for static objects that contribute to " +"global illumination (such as level geometry). This GI mode is effective when " +"using [VoxelGI], SDFGI and [LightmapGI]." +msgstr "" +"烘焙全局照明模式。用于有助于全局照明的静态对象(例如关卡几何体)。该 GI 模式" +"在使用 [VoxelGI]、SDFGI 和 [LightmapGI] 时有效。" + +msgid "" +"Dynamic global illumination mode. Use for dynamic objects that contribute to " +"global illumination. This GI mode is only effective when using [VoxelGI], " +"but it has a higher performance impact than [constant GI_MODE_STATIC]. When " +"using other GI methods, this will act the same as [constant " +"GI_MODE_DISABLED]." +msgstr "" +"动态全局照明模式。用于有助于全局照明的动态对象。这种 GI 模式只有在使用 " +"[VoxelGI] 时才有效,但它对性能的影响,比 [constant GI_MODE_STATIC] 更高。当使" +"用其他 GI 方法时,它的作用与 [constant GI_MODE_DISABLED] 相同。" + msgid "The standard texel density for lightmapping with [LightmapGI]." msgstr "使用 [LightmapGI] 进行光照贴图的标准纹素密度。" +msgid "" +"Multiplies texel density by 2× for lightmapping with [LightmapGI]. To ensure " +"consistency in texel density, use this when scaling a mesh by a factor " +"between 1.5 and 3.0." +msgstr "" +"使用 [LightmapGI] 进行光照贴图时,将纹素密度乘以 2 倍。为确保纹素密度的一致" +"性,请在按 1.5 到 3.0 之间的系数缩放网格时,使用该选项。" + +msgid "" +"Multiplies texel density by 4× for lightmapping with [LightmapGI]. To ensure " +"consistency in texel density, use this when scaling a mesh by a factor " +"between 3.0 and 6.0." +msgstr "" +"使用 [LightmapGI] 进行光照贴图时,将纹素密度乘以 4 倍。为确保纹素密度的一致" +"性,请在按 3.0 到 6.0 之间的系数缩放网格时,使用该选项。" + +msgid "" +"Multiplies texel density by 8× for lightmapping with [LightmapGI]. To ensure " +"consistency in texel density, use this when scaling a mesh by a factor " +"greater than 6.0." +msgstr "" +"使用 [LightmapGI] 进行光照贴图时,将纹素密度乘以 8 倍。为确保纹素密度的一致" +"性,请在以大于 6.0 的系数缩放网格时,使用该选项。" + msgid "Represents the size of the [enum LightmapScale] enum." msgstr "代表 [enum LightmapScale] 枚举的大小。" +msgid "" +"Will not fade itself nor its visibility dependencies, hysteresis will be " +"used instead. This is the fastest approach to manual LOD, but it can result " +"in noticeable LOD transitions depending on how the LOD meshes are authored. " +"See [member visibility_range_begin] and [member Node3D.visibility_parent] " +"for more information." +msgstr "" +"不会自行淡化,也不会淡化其可见性依赖项,而是使用滞后。这是手动 LOD 的最快方" +"法,但它可能会导致明显的 LOD 过渡,具体取决于 LOD 网格的创作方式。有关更多信" +"息,请参阅 [member visibility_range_begin] 和 [member Node3D." +"visibility_parent]。" + +msgid "" +"Will fade-out itself when reaching the limits of its own visibility range. " +"This is slower than [constant VISIBILITY_RANGE_FADE_DISABLED], but it can " +"provide smoother transitions. The fading range is determined by [member " +"visibility_range_begin_margin] and [member visibility_range_end_margin]." +msgstr "" +"当达到自身可见范围的极限时,会自行淡出。这比 [constant " +"VISIBILITY_RANGE_FADE_DISABLED] 慢,但它可以提供更平滑的过渡。淡出范围由 " +"[member visibility_range_begin_margin] 和 [member " +"visibility_range_end_margin] 决定。" + +msgid "" +"Will fade-in its visibility dependencies (see [member Node3D." +"visibility_parent]) when reaching the limits of its own visibility range. " +"This is slower than [constant VISIBILITY_RANGE_FADE_DISABLED], but it can " +"provide smoother transitions. The fading range is determined by [member " +"visibility_range_begin_margin] and [member visibility_range_end_margin]." +msgstr "" +"当达到其自身可见性范围的限制时,将淡入其可见性依赖项(参见 [member Node3D." +"visibility_parent])。这比 [constant VISIBILITY_RANGE_FADE_DISABLED] 慢,但它" +"可以提供更平滑的过渡。淡出范围由 [member visibility_range_begin_margin] 和 " +"[member visibility_range_end_margin] 决定。" + msgid "Represents a GLTF camera." msgstr "代表 GLTF 相机。" @@ -35706,12 +48059,232 @@ msgstr "" "Godot 使用的是直径的米数。映射到 GLTF 的 [code]ymag[/code] 属性。只在正交相机" "中使用,即 [member perspective] 为 false 时。" +msgid "" +"Append a glTF2 3d format from a file, buffer or scene and then write to the " +"filesystem, buffer or scene." +msgstr "" +"从文件、缓冲区、或场景,追加一个 glTF2 3d 格式,然后写入文件系统、缓冲区、或" +"场景。" + +msgid "" +"Takes a [PackedByteArray] defining a GLTF and imports the data to the given " +"[GLTFState] object through the [param state] parameter.\n" +"[b]Note:[/b] The [param base_path] tells [method append_from_buffer] where " +"to find dependencies and can be empty." +msgstr "" +"接收一个定义 GLTF 的 [PackedByteArray],并通过 [param state] 参数将数据导入给" +"定的 [GLTFState] 对象。\n" +"[b]注意:[/b][param base_path] 被 [method append_from_buffer] 用作依赖关系的" +"查找路径,可以为空。" + +msgid "" +"Takes a path to a GLTF file and imports the data at that file path to the " +"given [GLTFState] object through the [param state] parameter.\n" +"[b]Note:[/b] The [param base_path] tells [method append_from_file] where to " +"find dependencies and can be empty." +msgstr "" +"接收一个 GLTF 文件的路径,并通过 [param state] 参数将该文件路径上的数据导入到" +"给定的 [GLTFState] 对象。\n" +"[b]注意:[/b][param base_path] 被 [method append_from_file] 用作依赖关系的查" +"找路径,可以为空。" + +msgid "" +"Takes a Godot Engine scene node and exports it and its descendants to the " +"given [GLTFState] object through the [param state] parameter." +msgstr "" +"接收一个 Godot 引擎的场景节点,并通过 [param state] 参数将其及其后代导出到给" +"定的 [GLTFState] 对象。" + +msgid "" +"Takes a [GLTFState] object through the [param state] parameter and returns a " +"GLTF [PackedByteArray]." +msgstr "" +"通过 [param state] 参数接收一个 [GLTFState] 对象,并返回一个 GLTF " +"[PackedByteArray]。" + +msgid "" +"Takes a [GLTFState] object through the [param state] parameter and returns a " +"Godot Engine scene node." +msgstr "" +"通过 [param state] 参数接收一个 [GLTFState] 对象,并返回一个 Godot 引擎的场景" +"节点。" + +msgid "" +"Registers the given [GLTFDocumentExtension] instance with GLTFDocument. If " +"[param first_priority] is true, this extension will be run first. Otherwise, " +"it will be run last.\n" +"[b]Note:[/b] Like GLTFDocument itself, all GLTFDocumentExtension classes " +"must be stateless in order to function properly. If you need to store data, " +"use the [code]set_additional_data[/code] and [code]get_additional_data[/" +"code] methods in [GLTFState] or [GLTFNode]." +msgstr "" +"使用 GLTFDocument 注册给定的 [GLTFDocumentExtension] 实例。如果 [param " +"first_priority] 为 true,则该扩展将被首先运行。否则,它将被最后运行。\n" +"[b]注意:[/b]与 GLTFDocument 本身一样,所有 GLTFDocumentExtension 类都必须是" +"无状态的才能正常运行。如果需要存储数据,使用 [GLTFState] 或 [GLTFNode] 中的 " +"[code]set_additional_data[/code] 和 [code]get_additional_data[/code] 方法。" + msgid "Unregisters the given [GLTFDocumentExtension] instance." msgstr "将给定的 [GLTFDocumentExtension] 实例取消注册。" +msgid "" +"Takes a [GLTFState] object through the [param state] parameter and writes a " +"glTF file to the filesystem.\n" +"[b]Note:[/b] The extension of the glTF file determines if it is a .glb " +"binary file or a .gltf file." +msgstr "" +"通过 [param state] 参数接收一个 [GLTFState] 对象,并将一个 glTF 文件写入文件" +"系统。\n" +"[b]注意:[/b]glTF 文件的扩展名决定了它是一个 .glb 二进制文件还是一个 .gltf 文" +"件。" + msgid "[GLTFDocument] extension class." msgstr "[GLTFDocument] 扩展类。" +msgid "" +"Extends the functionality of the [GLTFDocument] class by allowing you to run " +"arbitrary code at various stages of GLTF import or export.\n" +"To use, make a new class extending GLTFDocumentExtension, override any " +"methods you need, make an instance of your class, and register it using " +"[method GLTFDocument.register_gltf_document_extension].\n" +"[b]Note:[/b] Like GLTFDocument itself, all GLTFDocumentExtension classes " +"must be stateless in order to function properly. If you need to store data, " +"use the [code]set_additional_data[/code] and [code]get_additional_data[/" +"code] methods in [GLTFState] or [GLTFNode]." +msgstr "" +"通过允许在 GLTF 导入或导出的各个阶段运行任意代码,来扩展 [GLTFDocument] 类的" +"功能。\n" +"要使用它,请创建一个扩展 GLTFDocumentExtension 的新类,覆盖需要的任何方法,创" +"建你的类的实例,然后使用 [method GLTFDocument." +"register_gltf_document_extension] 注册它。\n" +"[b]注意:[/b]与 GLTFDocument 本身一样,所有 GLTFDocumentExtension 类都必须是" +"无状态的才能正常运行。如果需要存储数据,请使用 [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_node].\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_node] 之前运行。\n" +"在转换来自 Godot 场景节点的数据时运行。该方法可用于将 Godot 场景节点的数据," +"处理成可以被 [method_export_node] 使用的格式。" + +msgid "" +"Part of the export process. This method is run after [method " +"_convert_scene_node] and before [method _export_post].\n" +"This method can be used to modify the final JSON of each node." +msgstr "" +"导出过程的一部分。该方法在 [method _convert_scene_node] 之后和 [method " +"_export_post] 之前运行。\n" +"该方法可用于修改每个节点的最终 JSON。" + +msgid "" +"Part of the export process. This method is run last, after all other parts " +"of the export process.\n" +"This method can be used to modify the final JSON of the generated GLTF file." +msgstr "" +"导出过程的一部分。该方法在最后运行,在导出过程的所有其他部分之后。\n" +"该方法可用于修改生成的 GLTF 文件的最终 JSON。" + +msgid "" +"Part of the export process. This method is run first, before all other parts " +"of the export process.\n" +"The return value is used to determine if this [GLTFDocumentExtension] " +"instance should be used for exporting a given GLTF file. If [constant OK], " +"the export will use this [GLTFDocumentExtension] instance. If not " +"overridden, [constant OK] is returned." +msgstr "" +"导出过程的一部分。该方法将最初运行,在导出过程的所有其他部分之前。\n" +"返回值用于确定该 [GLTFDocumentExtension] 实例是否应该用于导出一个给定的 GLTF " +"文件。如果为 [constant OK],则导出将使用该 [GLTFDocumentExtension] 实例。如果" +"没有被重写,则返回 [constant OK]。" + +msgid "" +"Part of the import process. This method is run after [method " +"_parse_node_extensions] and before [method _import_post_parse].\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." +msgstr "" +"导入过程的一部分。该方法在 [method _parse_node_extensions] 之后和 [method " +"_import_post_parse] 之前运行。\n" +"当从 GLTFNode 生成一个 Godot 场景节点时运行。返回的节点将被添加到场景树中。如" +"果将多个节点添加为返回节点的子节点,则可以在该步骤中生成这些节点。" + +msgid "" +"Part of the import process. This method is run after [method " +"_import_preflight] and before [method _parse_node_extensions].\n" +"Returns an array of the GLTF extensions supported by this " +"GLTFDocumentExtension class. This is used to validate if a GLTF file with " +"required extensions can be loaded." +msgstr "" +"导入过程的一部分。该方法在 [method _import_preflight] 之后和 [method " +"_parse_node_extensions] 之前运行。\n" +"返回一组被该 GLTFDocumentExtension 类支持的 GLTF 扩展。这用于验证是否可以加载" +"一个具有所需扩展名的 GLTF 文件。" + +msgid "" +"Part of the import process. This method is run after [method " +"_import_post_parse] and before [method _import_post].\n" +"This method can be used to make modifications to each of the generated Godot " +"scene nodes." +msgstr "" +"导入过程的一部分。该方法在 [method _import_post_parse] 之后和 [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" +"This method can be used to modify the final Godot scene generated by the " +"import process." +msgstr "" +"导入过程的一部分。该方法在最后运行,在导入过程的所有其他部分之后。\n" +"该方法可用于修改导入过程生成的最终 Godot 场景。" + +msgid "" +"Part of the import process. This method is run after [method " +"_generate_scene_node] and before [method _import_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 _generate_scene_node] 之后和 [method " +"_import_node] 之前运行。\n" +"在运行最终的各节点导入步骤之前,该方法可用于修改到目前为止导入的任何数据,包" +"括任何场景节点。" + +msgid "" +"Part of the import process. This method is run first, before all other parts " +"of the import process.\n" +"The return value is used to determine if this [GLTFDocumentExtension] " +"instance should be used for importing a given GLTF file. If [constant OK], " +"the import will use this [GLTFDocumentExtension] instance. If not " +"overridden, [constant OK] is returned." +msgstr "" +"导入过程的一部分。该方法在最初运行,在导入过程的所有其他部分之前。\n" +"返回值用于确定该 [GLTFDocumentExtension] 实例是否应该用于导入一个给定的 GLTF " +"文件。如果为 [constant OK],导入将使用该 [GLTFDocumentExtension] 实例。如果没" +"有被重写,则返回 [constant OK]。" + +msgid "" +"Part of the import process. This method is run after [method " +"_get_supported_extensions] and before [method _generate_scene_node].\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 " +"_generate_scene_node] 之前运行。\n" +"在解析 GLTFNode 的节点扩展时运行。该方法可用于将扩展 JSON 数据,处理成可被 " +"[method_generate_scene_node] 使用的格式。该返回值应该是 [enum Error] 枚举中的" +"一个成员。" + msgid "Represents a GLTF light." msgstr "代表 GLTF 灯光。" @@ -35741,6 +48314,18 @@ msgid "" msgstr "灯的 [Color]。默认为白色。黑色会导致灯光无效。" msgid "" +"The inner angle of the cone in a spotlight. Must be less than or equal to " +"the outer cone angle.\n" +"Within this angle, the light is at full brightness. Between the inner and " +"outer cone angles, there is a transition from full brightness to zero " +"brightness. When creating a Godot [SpotLight3D], the ratio between the inner " +"and outer cone angles is used to calculate the attenuation of the light." +msgstr "" +"聚光灯下圆锥体的内角。必须小于等于外锥角。\n" +"在这个角度内,光线处于全亮状态。在内锥角和外锥角之间,存在一个从全亮度到零亮" +"度的过渡。创建 Godot [SpotLight3D] 时,内外锥角之间的比率将被来计算光的衰减。" + +msgid "" "The intensity of the light. This is expressed in candelas (lumens per " "steradian) for point and spot lights, and lux (lumens per m²) for " "directional lights. When creating a Godot light, this value is converted to " @@ -35750,6 +48335,28 @@ msgstr "" "明/平方米)表示。在创建 Godot 灯光时,这个值会被转换为无单位的乘数。" msgid "" +"The type of the light. The values accepted by Godot are \"point\", \"spot\", " +"and \"directional\", which correspond to Godot's [OmniLight3D], " +"[SpotLight3D], and [DirectionalLight3D] respectively." +msgstr "" +"灯光的类型。Godot接受的值有“point”、“spot”、“directional”,分别对应 Godot 的 " +"[OmniLight3D]、[SpotLight3D]、[DirectionalLight3D]。" + +msgid "" +"The outer angle of the cone in a spotlight. Must be greater than or equal to " +"the inner angle.\n" +"At this angle, the light drops off to zero brightness. Between the inner and " +"outer cone angles, there is a transition from full brightness to zero " +"brightness. If this angle is a half turn, then the spotlight emits in all " +"directions. When creating a Godot [SpotLight3D], the outer cone angle is " +"used as the angle of the spotlight." +msgstr "" +"聚光灯下圆锥体的外角。必须大于等于内锥角。\n" +"在这个角度,光线会下降到零亮度。在内锥角和外锥角之间,存在一个从全亮度到零亮" +"度的过渡。如果这个角度是一个半圆,那么聚光灯会向所有方向发射。创建一个 Godot " +"[SpotLight3D] 时,外锥角被用作聚光灯的角度。" + +msgid "" "The range of the light, beyond which the light has no effect. GLTF lights " "with no range defined behave like physical lights (which have infinite " "range). When creating a Godot light, the range is clamped to 4096." @@ -35760,12 +48367,396 @@ msgstr "" msgid "GLTF node class." msgstr "GLTF 节点类。" +msgid "" +"Represents a GLTF node. GLTF nodes may have names, transforms, children " +"(other GLTF nodes), and more specialized properties (represented by their " +"own classes).\n" +"GLTF nodes generally exist inside of [GLTFState] which represents all data " +"of a GLTF file. Most of GLTFNode's properties are indices of other data in " +"the GLTF file. You can extend a GLTF node with additional properties by " +"using [method get_additional_data] and [method set_additional_data]." +msgstr "" +"代表 GLTF 节点。GLTF 节点中可以包含名称、变换、子节点(GLTF 节点)以及其他专" +"门的属性(由各自不同的类表示)。\n" +"GLTF 节点通常存在于表示 GLTF 文件中的所有数据的 [GLTFState] 内部。大多数 " +"GLTFNode 的属性都是 GLTF 文件中其他数据的索引。你可以使用 [method " +"get_additional_data] 和 [method set_additional_data] 来添加额外的属性,扩展 " +"GLTF 节点。" + msgid "GLTF scene and node spec" msgstr "GLTF 场景和节点规格" +msgid "" +"Gets additional arbitrary data in this [GLTFNode] instance. This can be used " +"to keep per-node state data in [GLTFDocumentExtension] classes, which is " +"important because they are stateless.\n" +"The argument should be the [GLTFDocumentExtension] name (does not have to " +"match the extension name in the GLTF file), and the return value can be " +"anything you set. If nothing was set, the return value is null." +msgstr "" +"在这个 [GLTFNode] 实例中获取额外的任意数据。这可以用来保持 " +"[GLTFDocumentExtension] 类中每个节点的状态数据,这很重要,因为它们是无状态" +"的。\n" +"参数应该是 [GLTFDocumentExtension] 的名字(不必与 GLTF 文件中的扩展名相匹" +"配),而该返回值可以是你设置的任何值。如果没有设置任何值,则返回值为 null。" + +msgid "" +"Sets additional arbitrary data in this [GLTFNode] instance. This can be used " +"to keep per-node state data in [GLTFDocumentExtension] classes, which is " +"important because they are stateless.\n" +"The first argument should be the [GLTFDocumentExtension] name (does not have " +"to match the extension name in the GLTF file), and the second argument can " +"be anything you want." +msgstr "" +"在这个 [GLTFNode] 实例中设置额外的任意数据。这可以用来保持 " +"[GLTFDocumentExtension] 类中每个节点的状态数据,这很重要,因为它们是无状态" +"的。\n" +"第一个参数应该是 [GLTFDocumentExtension] 的名字(不必与 GLTF 文件中的扩展名相" +"匹配),第二个参数可以是任何你想要的东西。" + +msgid "" +"If this GLTF node is a camera, the index of the [GLTFCamera] in the " +"[GLTFState] that describes the camera's properties. If -1, this node is not " +"a camera." +msgstr "" +"如果该 GLTF 节点是一个相机,则 [GLTFState] 中 [GLTFCamera] 的索引将描述该相机" +"的属性。如果为 -1,则该节点不是相机。" + +msgid "" +"The indices of the children nodes in the [GLTFState]. If this GLTF node has " +"no children, this will be an empty array." +msgstr "" +"[GLTFState] 中子节点的索引。如果该 GLTF 节点没有子节点,则这将是一个空数组。" + +msgid "" +"How deep into the node hierarchy this node is. A root node will have a " +"height of 0, its children will have a height of 1, and so on. If -1, the " +"height has not been calculated." +msgstr "" +"该节点在节点层次结构中的深度。根节点的高度为 0,其子节点的高度为 1,依此类" +"推。如果为 -1,则尚未计算高度。" + +msgid "" +"If this GLTF node is a light, the index of the [GLTFLight] in the " +"[GLTFState] that describes the light's properties. If -1, this node is not a " +"light." +msgstr "" +"如果该 GLTF 节点是一盏灯,则 [GLTFState] 中 [GLTFLight] 的索引将描述该灯的属" +"性。如果为 -1,则该节点不是灯。" + +msgid "" +"If this GLTF node is a mesh, the index of the [GLTFMesh] in the [GLTFState] " +"that describes the mesh's properties. If -1, this node is not a mesh." +msgstr "" +"如果该 GLTF 节点是网格,则 [GLTFState] 中 [GLTFMesh] 的索引将描述该网格的属" +"性。如果为 -1,则该节点不是网格。" + +msgid "" +"The index of the parent node in the [GLTFState]. If -1, this node is a root " +"node." +msgstr "[GLTFState] 中父节点的索引。如果为 -1,则该节点为根节点。" + +msgid "The position of the GLTF node relative to its parent." +msgstr "该 GLTF 节点相对于其父节点的位置。" + +msgid "The rotation of the GLTF node relative to its parent." +msgstr "该 GLTF 节点相对于其父节点的旋转。" + +msgid "The scale of the GLTF node relative to its parent." +msgstr "该 GLTF 节点相对于其父节点的缩放。" + +msgid "" +"If this GLTF node has a skeleton, the index of the [GLTFSkeleton] in the " +"[GLTFState] that describes the skeleton's properties. If -1, this node does " +"not have a skeleton." +msgstr "" +"如果该 GLTF 节点具有骨架,则 [GLTFState] 中的 [GLTFSkeleton] 的索引将描述骨架" +"的属性。如果为 -1,则该节点没有骨架。" + +msgid "" +"If this GLTF node has a skin, the index of the [GLTFSkin] in the [GLTFState] " +"that describes the skin's properties. If -1, this node does not have a skin." +msgstr "" +"如果该 GLTF 节点有皮肤,则 [GLTFState] 中的 [GLTFSkin] 的索引将描述皮肤的属" +"性。如果为 -1,则该节点没有皮肤。" + +msgid "" +"The transform of the GLTF node relative to its parent. This property is " +"usually unused since the position, rotation, and scale properties are " +"preferred." +msgstr "" +"GLTF 节点相对于其父节点的变换。由于通常首选位置、旋转和缩放属性,因此不使用该" +"属性。" + +msgid "Archived GLTF extension for specular/glossy materials." +msgstr "已归档的 GLTF 扩展,用于镜面/光泽材质。" + +msgid "" +"KHR_materials_pbrSpecularGlossiness is an archived GLTF extension. This " +"means that it is deprecated and not recommended for new files. However, it " +"is still supported for loading old files." +msgstr "" +"KHR_materials_pbrSpecularGlossiness 是一个已归档的 GLTF 扩展。这意味着它已被" +"弃用,不推荐用于新文件。但是,它仍然被支持用于加载旧文件。" + +msgid "KHR_materials_pbrSpecularGlossiness GLTF extension spec" +msgstr "KHR_materials_pbrSpecularGlossiness GLTF 扩展规范" + +msgid "The reflected diffuse factor of the material." +msgstr "该材质反射漫反射系数。" + msgid "The diffuse texture." msgstr "漫反射纹理。" +msgid "The glossiness or smoothness of the material." +msgstr "材质的光泽度或光滑度。" + +msgid "The specular-glossiness texture." +msgstr "镜面光泽度纹理。" + +msgid "The specular RGB color of the material. The alpha channel is unused." +msgstr "材质的镜面反射 RGB 颜色。不使用 Alpha 通道。" + +msgid "Represents all data of a GLTF file." +msgstr "代表 GLTF 文件中的所有数据。" + +msgid "" +"Contains all nodes and resources of a GLTF file. This is used by " +"[GLTFDocument] as data storage, which allows [GLTFDocument] and all " +"[GLTFDocumentExtension] classes to remain stateless.\n" +"GLTFState can be populated by [GLTFDocument] reading a file or by converting " +"a Godot scene. Then the data can either be used to create a Godot scene or " +"save to a GLTF file. The code that converts to/from a Godot scene can be " +"intercepted at arbitrary points by [GLTFDocumentExtension] classes. This " +"allows for custom data to be stored in the GLTF file or for custom data to " +"be converted to/from Godot nodes." +msgstr "" +"包含 GLTF 文件中的所有节点和资源。用于 [GLTFDocument] 的数据存储,能够让 " +"[GLTFDocument] 和所有 [GLTFDocumentExtension] 类保持无状态。\n" +"GLTFState 的填写可以通过 [GLTFDocument] 读取文件进行,也可以通过转换 Godot 场" +"景进行。填写完成后,可以将数据用于 Godot 场景的创建或者 GLTF 文件的保存。与 " +"Godot 场景之间进行转换的代码可以通过 [GLTFDocumentExtension] 类在任意时刻拦" +"截。这样就能够在 GLTF 文件中存储自定义数据,也可以将自定义数据保存到 Godot 节" +"点或者从 Godot 节点读取。" + +msgid "" +"Appends an extension to the list of extensions used by this GLTF file during " +"serialization. If [param required] is true, the extension will also be added " +"to the list of required extensions. Do not run this in [method " +"GLTFDocumentExtension._export_post], as that stage is too late to add " +"extensions. The final list is sorted alphabetically." +msgstr "" +"在序列化期间,将一个扩展名追加到该 GLTF 文件使用的扩展名列表在。如果 [param " +"required] 为 true,则该扩展名也将被添加到所需扩展名列表中。不要在 [method " +"GLTFDocumentExtension._export_post] 中运行它,因为那个阶段已来不及添加扩展。" +"最终的列表将按字母顺序排序。" + +msgid "" +"Gets additional arbitrary data in this [GLTFState] instance. This can be " +"used to keep per-file state data in [GLTFDocumentExtension] classes, which " +"is important because they are stateless.\n" +"The argument should be the [GLTFDocumentExtension] name (does not have to " +"match the extension name in the GLTF file), and the return value can be " +"anything you set. If nothing was set, the return value is null." +msgstr "" +"在该 [GLTFState] 实例中,获取额外的任意数据。这可用于保留在 " +"[GLTFDocumentExtension] 类中的每个文件的状态数据,这很重要,因为它们是无状态" +"的。\n" +"该参数应该是 [GLTFDocumentExtension] 的名称(不必与 GLTF 文件中的扩展名相匹" +"配),而该返回值可以是你设置的任何东西。如果没有设置任何东西,则该返回值为 " +"null。" + +msgid "" +"Returns the [AnimationPlayer] node with the given index. These nodes are " +"only used during the export process when converting Godot [AnimationPlayer] " +"nodes to GLTF animations." +msgstr "" +"返回具有给定索引的 [AnimationPlayer] 节点。这些节点仅在将 Godot " +"[AnimationPlayer] 节点转换为 GLTF 动画时的导出过程中使用。" + +msgid "" +"Returns the number of [AnimationPlayer] nodes in this [GLTFState]. These " +"nodes are only used during the export process when converting Godot " +"[AnimationPlayer] nodes to GLTF animations." +msgstr "" +"返回该 [GLTFState] 中 [AnimationPlayer] 节点的数量。这些节点仅在将 Godot " +"[AnimationPlayer] 节点转换为 GLTF 动画时的导出过程中使用。" + +msgid "" +"Returns an array of all [GLTFAnimation]s in the GLTF file. When importing, " +"these will be generated as animations in an [AnimationPlayer] node. When " +"exporting, these will be generated from Godot [AnimationPlayer] nodes." +msgstr "" +"返回 GLTF 文件中所有 [GLTFAnimation] 的数组。导入时,这些将在一个 " +"[AnimationPlayer] 节点生成为动画。导出时,这些将从 Godot [AnimationPlayer] 节" +"点生成。" + +msgid "" +"Returns an array of all [GLTFCamera]s in the GLTF file. These are the " +"cameras that the [member GLTFNode.camera] index refers to." +msgstr "" +"返回 GLTF 文件中所有 [GLTFCamera] 的数组。这些是 [member GLTFNode.camera] 索" +"引引用的相机。" + +msgid "" +"Returns an array of all [GLTFLight]s in the GLTF file. These are the lights " +"that the [member GLTFNode.light] index refers to." +msgstr "" +"返回 GLTF 文件中所有 [GLTFLight] 的数组。这些是 [member GLTFNode.light] 索引" +"引用的灯。" + +msgid "" +"Returns an array of all [GLTFMesh]es in the GLTF file. These are the meshes " +"that the [member GLTFNode.mesh] index refers to." +msgstr "" +"返回 GLTF 文件中所有 [GLTFMesh] 的数组。这些是 [member GLTFNode.mesh] 索引引" +"用的网格。" + +msgid "" +"Returns an array of all [GLTFNode]s in the GLTF file. These are the nodes " +"that [member GLTFNode.children] and [member root_nodes] refer to. This " +"includes nodes that may not be generated in the Godot scene, or nodes that " +"may generate multiple Godot scene nodes." +msgstr "" +"返回 GLTF 文件中所有 [GLTFNode] 的数组。这些是 [member GLTFNode.children] 和 " +"[member root_nodes] 引用的节点。这包括可能不会在 Godot 场景中生成的节点,或者" +"可能生成多个 Godot 场景节点的节点。" + +msgid "" +"Returns the Godot scene node that corresponds to the same index as the " +"[GLTFNode] it was generated from. Not every [GLTFNode] will have a scene " +"node generated, and not every generated scene node will have a corresponding " +"[GLTFNode]." +msgstr "" +"返回与生成它的 [GLTFNode] 相同索引对应的 Godot 场景节点。不是每个 [GLTFNode] " +"都会生成一个场景节点,也不是每个生成的场景节点都会有对应的 [GLTFNode]。" + +msgid "" +"Returns an array of all [GLTFSkeleton]s in the GLTF file. These are the " +"skeletons that the [member GLTFNode.skeleton] index refers to." +msgstr "" +"返回 GLTF 文件中所有 [GLTFSkeleton] 的数组。这些是 [member GLTFNode." +"skeleton] 索引引用的骨架。" + +msgid "" +"Returns an array of all [GLTFSkin]s in the GLTF file. These are the skins " +"that the [member GLTFNode.skin] index refers to." +msgstr "" +"返回 GLTF 文件中所有 [GLTFSkin] 的数组。这些是 [member GLTFNode.skin] 索引引" +"用的皮肤。" + +msgid "" +"Retrieves the array of texture samplers that are used by the textures " +"contained in the GLTF." +msgstr "检索 GLTF 中包含的纹理所使用的纹理采样器的数组。" + +msgid "" +"Returns an array of unique animation names. This is only used during the " +"import process." +msgstr "返回一组唯一的动画名称。这仅在导入过程中使用。" + +msgid "" +"Returns an array of unique node names. This is used in both the import " +"process and export process." +msgstr "返回唯一节点名称的数组。这用于导入过程和导出过程。" + +msgid "" +"Sets additional arbitrary data in this [GLTFState] instance. This can be " +"used to keep per-file state data in [GLTFDocumentExtension] classes, which " +"is important because they are stateless.\n" +"The first argument should be the [GLTFDocumentExtension] name (does not have " +"to match the extension name in the GLTF file), and the second argument can " +"be anything you want." +msgstr "" +"在这个 [GLTFState] 实例中设置额外的任意数据。这可以用来保留在 " +"[GLTFDocumentExtension] 类中的每个文件的状态数据,这很重要,因为它们是无状态" +"的。\n" +"第一个参数应该是 [GLTFDocumentExtension] 的名称(不必与 GLTF 文件中的扩展名相" +"匹配),第二个参数可以是任何你想要的东西。" + +msgid "" +"Sets the [GLTFAnimation]s in the state. When importing, these will be " +"generated as animations in an [AnimationPlayer] node. When exporting, these " +"will be generated from Godot [AnimationPlayer] nodes." +msgstr "" +"设置该状态中的 [GLTFAnimation]。导入时,这些将在 [AnimationPlayer] 节点中生成" +"为动画。导出时,这些将由 Godot [AnimationPlayer] 节点生成。" + +msgid "" +"Sets the [GLTFCamera]s in the state. These are the cameras that the [member " +"GLTFNode.camera] index refers to." +msgstr "" +"设置该状态中的 [GLTFCamera]。这些是 [member GLTFNode.camera] 索引引用的相机。" + +msgid "" +"Sets the [GLTFLight]s in the state. These are the lights that the [member " +"GLTFNode.light] index refers to." +msgstr "" +"设置该状态中的 [GLTFLight]。这些是 [member GLTFNode.light] 索引引用的灯。" + +msgid "" +"Sets the [GLTFMesh]es in the state. These are the meshes that the [member " +"GLTFNode.mesh] index refers to." +msgstr "" +"设置该状态中的 [GLTFMesh]。这些是 [member GLTFNode.mesh] 索引引用的网格。" + +msgid "" +"Sets the [GLTFNode]s in the state. These are the nodes that [member GLTFNode." +"children] and [member root_nodes] refer to. Some of the nodes set here may " +"not be generated in the Godot scene, or may generate multiple Godot scene " +"nodes." +msgstr "" +"设置该状态中的 [GLTFNode]。这些是 [member GLTFNode.children] 和 [member " +"root_nodes] 引用的节点。这里设置的一些节点在 Godot 场景中可能不会生成,也可能" +"会生成多个 Godot 场景节点。" + +msgid "" +"Sets the [GLTFSkeleton]s in the state. These are the skeletons that the " +"[member GLTFNode.skeleton] index refers to." +msgstr "" +"设置该状态中的 [GLTFSkeleton]。这些是 [member GLTFNode.skeleton] 索引引用的骨" +"架。" + +msgid "" +"Sets the [GLTFSkin]s in the state. These are the skins that the [member " +"GLTFNode.skin] index refers to." +msgstr "" +"设置该状态中的 [GLTFSkin]。这些是 [member GLTFNode.skin] 索引引用的皮肤。" + +msgid "" +"Sets the array of texture samplers that are used by the textures contained " +"in the GLTF." +msgstr "设置由 GLTF 中包含的纹理所使用的纹理采样器的数组。" + +msgid "" +"Sets the unique animation names in the state. This is only used during the " +"import process." +msgstr "设置该状态中的唯一动画名称。这仅在导入过程中使用。" + +msgid "" +"Sets the unique node names in the state. This is used in both the import " +"process and export process." +msgstr "设置该状态中的唯一节点名称。这用于导入过程和导出过程。" + +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 " +"scenes and therefore multiple root nodes, which will be generated as " +"siblings of each other and as children of the root node of the generated " +"Godot scene." +msgstr "" +"GLTF 文件的根节点。通常,一个 GLTF 文件只有一个场景,因此只有一个根节点。然" +"而,一个 GLTF 文件可能有多个场景,因此可以有多个根节点,它们将作为彼此的兄弟" +"节点生成,并作为生成的 Godot 场景的根节点的子节点生成。" + +msgid "" +"The name of the scene. When importing, if not specified, this will be the " +"file name. When exporting, if specified, the scene name will be saved to the " +"GLTF file." +msgstr "" +"场景的名称。导入时,如果没有指定,这将是文件名。导出时,如果指定,场景名称将" +"被保存到 GLTF 文件中。" + msgid "Discards all embedded textures and uses untextured materials." msgstr "丢弃所有内嵌的纹理,并使用无纹理的材质。" @@ -35784,10 +48775,26 @@ msgid "" "behavior." msgstr "将无损压缩的纹理嵌入到生成的场景中,匹配旧行为。" +msgid "" +"ID of the texture sampler to use when sampling the image. If -1, then the " +"default texture sampler is used (linear filtering, and repeat wrapping in " +"both axes)." +msgstr "" +"纹理采样器的 ID,在对图像进行采样时使用。如果为 -1,则使用默认的纹理采样器" +"(线性过滤,并在两个轴上重复环绕)。" + msgid "Represents a GLTF texture sampler" msgstr "代表 GLTF 纹理采样器" msgid "" +"Represents a texture sampler as defined by the base GLTF spec. Texture " +"samplers in GLTF specify how to sample data from the texture's base image, " +"when rendering the texture on an object." +msgstr "" +"表示由基本 GLTF 规范定义的纹理采样器。GLTF 中的纹理采样器指定在对象上渲染纹理" +"时,如何从纹理的基础图像中采样数据。" + +msgid "" "Texture's magnification filter, used when texture appears larger on screen " "than the source image." msgstr "纹理的放大滤镜,当纹理在屏幕上看起来比源图像大时使用。" @@ -35797,6 +48804,12 @@ msgid "" "screen than the source image." msgstr "纹理的缩小滤镜,当纹理在屏幕上看起来比源图像小时使用。" +msgid "Wrapping mode to use for S-axis (horizontal) texture coordinates." +msgstr "用于 S 轴(水平)纹理坐标的环绕模式。" + +msgid "Wrapping mode to use for T-axis (vertical) texture coordinates." +msgstr "用于 T 轴(垂直)纹理坐标的环绕模式。" + msgid "Bridge between Godot and the Mono runtime (Mono-enabled builds only)." msgstr "Godot 和 Mono 运行时之间的桥梁(仅支持 Mono 的构建)。" @@ -35820,6 +48833,25 @@ msgstr "" msgid "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] nodes (note: 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 粒子演示" @@ -35831,10 +48863,90 @@ msgstr "2D Dodge The Creeps 演示(玩家身后的拖尾使用的是 GPUPartic msgid "Returns a rectangle containing the positions of all existing particles." msgstr "返回一个包含所有现存粒子位置的矩形。" +msgid "" +"Emits a single particle. Whether [param xform], [param velocity], [param " +"color] and [param custom] are applied depends on the value of [param flags]. " +"See [enum EmitFlags]." +msgstr "" +"发射单个粒子。是否应用 [param xform]、[param velocity]、[param color] 和 " +"[param custom] 取决于 [param flags] 的值。请参阅 [enum EmitFlags]。" + msgid "Restarts all the existing particles." msgstr "重新启动所有现有的粒子。" msgid "" +"Multiplier for particle's collision radius. [code]1.0[/code] corresponds to " +"the size of the sprite." +msgstr "粒子碰撞半径的乘数。 [code]1.0[/code]对应精灵的大小。" + +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 "" +"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 [GPUParticles2D] node (and its parents) when it is moved or " +"rotated. If [code]false[/code], particles use global coordinates; they will " +"not move or rotate along the [GPUParticles2D] node (and its parents) when it " +"is moved or rotated." +msgstr "" +"如果为 [code]true[/code],则粒子使用父节点的坐标空间(称为局部坐标)。这将导" +"致粒子在移动或旋转时沿着 [GPUParticles2D] 节点(及其父节点)移动和旋转。如果" +"为 [code]false[/code],则粒子使用全局坐标;当移动或旋转时,它们不会沿着 " +"[GPUParticles2D] 节点(及其父节点)移动或旋转。" + +msgid "" +"[Material] for processing particles. Can be a [ParticleProcessMaterial] or a " +"[ShaderMaterial]." +msgstr "" +"用于处理粒子的 [Material] 。可以是一个 [ParticlesMaterial] 或一个 " +"[ShaderMaterial] 。" + +msgid "The [NodePath] to the [GPUParticles2D] used for sub-emissions." +msgstr "到用于子发射的 [GPUParticles2D] 的 [NodePath]。" + +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 " +"subdivisions is set with the [member trail_sections] and [member " +"trail_section_subdivisions] properties." +msgstr "" +"如果[code]true[/code] ,可以使用网格换肤系统来启用粒子轨迹。\n" +"[b]注意:[/b] 与[GPUParticles3D]不同的是,trail sections和subdivisions的数量" +"是通过属性[member trail_sections]和[member trail_section_subdivisions]设置" +"的。" + +msgid "" +"The amount of time the particle's trail should represent (in seconds). Only " +"effective if [member trail_enabled] is [code]true[/code]." +msgstr "" +"代表粒子轨迹的时间量(以秒为单位)。仅当 [member trail_enabled] 为 " +"[code]true[/code] 时有效。" + +msgid "" +"The number of subdivisions to use for the particle trail rendering. Higher " +"values can result in smoother trail curves, at the cost of performance due " +"to increased mesh complexity. See also [member trail_sections]. Only " +"effective if [member trail_enabled] is [code]true[/code]." +msgstr "" +"用于粒子尾迹渲染的细分数。较高的值可以产生更平滑的尾迹曲线,但由于增加了网格" +"的复杂度,因此会牺牲性能。另见 [member trail_sections]。仅当 [member " +"trail_enabled] 为 [code]true[/code] 时有效。" + +msgid "" +"The number of sections to use for the particle trail rendering. Higher " +"values can result in smoother trail curves, at the cost of performance due " +"to increased mesh complexity. See also [member trail_section_subdivisions]. " +"Only effective if [member trail_enabled] is [code]true[/code]." +msgstr "" +"用于粒子轨迹渲染的部分数。较高的值可以产生更平滑的尾迹曲线,但由于增加了网格" +"的复杂度,因此会牺牲性能。另见 [member trail_section_subdivisions]。仅当 " +"[member trail_enabled] 为 [code]true[/code] 时有效。" + +msgid "" "The [Rect2] that determines the node's region which needs to be visible on " "screen for the particle system to be active.\n" "Grow the rect if particles suddenly appear/disappear when the node enters/" @@ -35865,6 +48977,21 @@ msgstr "粒子以指定的 [code]CUSTOM[/code] 数据开始。" msgid "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 the [code]process_material[/code] property 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" +"使用[code]process_material[/code] 属性来添加一个配置粒子外观和行为的" +"[ParticleProcessMaterial]。或者,你可以添加一个应用于所有粒子的" +"[ShaderMaterial]。" + msgid "Controlling thousands of fish with Particles" msgstr "用粒子控制数千条鱼" @@ -35908,6 +49035,19 @@ msgstr "" "[code]1[/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 [GPUParticles3D] node (and its parents) when it is moved or " +"rotated. If [code]false[/code], particles use global coordinates; they will " +"not move or rotate along the [GPUParticles3D] node (and its parents) when it " +"is moved or rotated." +msgstr "" +"如果为 [code]true[/code],则粒子使用父节点的坐标空间(称为局部坐标)。这将导" +"致粒子在移动或旋转时沿着 [GPUParticles3D] 节点(及其父节点)移动和旋转。如果" +"为 [code]false[/code],则粒子使用全局坐标;当移动或旋转时,它们不会沿着 " +"[GPUParticles3D] 节点(及其父节点)移动或旋转。" + +msgid "" "If [code]true[/code], only [code]amount[/code] particles will be emitted." msgstr "如果为 [code]true[/code],将只发出 [code]amount[/code] 数量的粒子。" @@ -35925,6 +49065,35 @@ msgid "" "particles." msgstr "速度缩放比例。[code]0[/code] 的值可被用于暂停粒子。" +msgid "" +"If [code]true[/code], enables particle trails using a mesh skinning system. " +"Designed to work with [RibbonTrailMesh] and [TubeTrailMesh].\n" +"[b]Note:[/b] [member BaseMaterial3D.use_particle_trails] must also be " +"enabled on the particle mesh's material. Otherwise, setting [member " +"trail_enabled] to [code]true[/code] will have no effect.\n" +"[b]Note:[/b] Unlike [GPUParticles2D], the number of trail sections and " +"subdivisions is set in the [RibbonTrailMesh] or the [TubeTrailMesh]'s " +"properties." +msgstr "" +"如果为 [code]true[/code],则使用网格蒙皮系统来启用粒子尾迹。旨在与 " +"[RibbonTrailMesh] 和 [TubeTrailMesh] 一起使用。\n" +"[b]注意:[/b]还必须在粒子网格的材质上启用 [member BaseMaterial3D." +"use_particle_trails]。否则,将 [member trail_enabled] 设置为 [code]true[/" +"code] 将无效。\n" +"[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.\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." +msgstr "" +"[AABB] 确定节点的区域,该区域需要在屏幕上可见,才能使粒子系统处于活动状态。\n" +"如果在节点进入/退出屏幕时,粒子突然出现/消失,则应该增大矩形。[AABB] 可以通过" +"代码,或使用 [b]粒子 → 生成 AABB[/b] 编辑器工具生成。" + msgid "Maximum number of draw passes supported." msgstr "支持的最大绘制阶段数。" @@ -35950,6 +49119,61 @@ msgstr "" "code]。\n" "[b]注意:[/b]粒子吸引器只会影响 [GPUParticles3D],不影响 [CPUParticles3D]。" +msgid "" +"The particle attractor's attenuation. Higher values result in more gradual " +"pushing of particles as they come closer to the attractor's origin. Zero or " +"negative values will cause particles to be pushed very fast as soon as the " +"touch the attractor's edges." +msgstr "" +"粒子吸引器的衰减。较高的值会导致粒子在靠近吸引器的原点时逐渐被推动。零值或负" +"值将导致粒子一接触吸引器的边缘就会被快速推动。" + +msgid "" +"The particle rendering layers ([member VisualInstance3D.layers]) that will " +"be affected by the attractor. By default, all particles are affected by an " +"attractor.\n" +"After configuring particle nodes accordingly, specific layers can be " +"unchecked to prevent certain particles from being affected by attractors. " +"For example, this can be used if you're using an attractor as part of a " +"spell effect but don't want the attractor to affect unrelated weather " +"particles at the same position.\n" +"Particle attraction can also be disabled on a per-process material basis by " +"setting [member ParticleProcessMaterial.attractor_interaction_enabled] on " +"the [GPUParticles3D] node." +msgstr "" +"将受吸引器影响的粒子渲染层([member VisualInstance3D.layers])。默认情况下," +"所有粒子都受吸引子器影响。\n" +"相应地配置粒子节点后,可以取消勾选特定层,以防止某些粒子受到吸引器的影响。例" +"如,如果将吸引器用作法术效果的一部分,但不希望吸引器影响同一位置的不相关天气" +"粒子,则可以使用该属性。\n" +"通过在 [GPUParticles3D] 节点上设置 [member ParticleProcessMaterial." +"attractor_interaction_enabled],也可以在每个进程材质的基上禁用粒子吸引。" + +msgid "" +"Adjusts how directional the attractor is. At [code]0.0[/code], the attractor " +"is not directional at all: it will attract particles towards its center. At " +"[code]1.0[/code], the attractor is fully directional: particles will always " +"be pushed towards local -Z (or +Z if [member strength] is negative).\n" +"[b]Note:[/b] If [member directionality] is greater than [code]0.0[/code], " +"the direction in which particles are pushed can be changed by rotating the " +"[GPUParticlesAttractor3D] node." +msgstr "" +"调整吸引器的方向。在 [code]0.0[/code] 处,吸引器完全没有方向性:它会将粒子吸" +"引到其中心。在 [code]1.0[/code] 中,吸引器是完全定向的:粒子将始终被推向局部 " +"-Z(如果 [member strength] 为负数,则推向 +Z)。\n" +"[b]注意:[/b]如果 [member directionality] 大于 [code]0.0[/code],则可以通过旋" +"转 [GPUParticlesAttractor3D] 节点,来改变粒子推送的方向。" + +msgid "" +"If [member strength] is negative, particles will be pushed in the reverse " +"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 "Box-shaped 3D particle attractor affecting [GPUParticles3D] nodes." msgstr "盒状 3D 粒子吸引器,会影响 [GPUParticles3D] 节点。" @@ -36022,6 +49246,89 @@ msgstr "" "extents]。由于粒子吸引力通常是低频数据,因此可以将纹理保持在较低分辨率,例如 " "64×64×64。" +msgid "" +"Abstract 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 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 ParticleProcessMaterial.collision_mode] set to [constant " +"ParticleProcessMaterial.COLLISION_RIGID] or [constant " +"ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT] will be affected by a " +"collision shape.\n" +"After configuring particle nodes accordingly, specific layers can be " +"unchecked to prevent certain particles from being affected by attractors. " +"For example, this can be used if you're using an attractor as part of a " +"spell effect but don't want the attractor to affect unrelated weather " +"particles at the same position.\n" +"Particle attraction can also be disabled on a per-process material basis by " +"setting [member ParticleProcessMaterial.attractor_interaction_enabled] on " +"the [GPUParticles3D] node." +msgstr "" +"将受碰撞形状影响的粒子渲染层([member VisualInstance3D.layers])。默认情况" +"下,所有 [member ParticleProcessMaterial.collision_mode] 设置为 [constant " +"ParticleProcessMaterial.COLLISION_RIGID] 或 [constant " +"ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT] 的粒子都将受到碰撞形状的影" +"响。\n" +"相应地配置粒子节点后,可以取消选中特定层,以防止某些粒子受到吸引子的影响。例" +"如,如果你将吸引子用作法术效果的一部分但不希望吸引子影响同一位置的不相关天气" +"粒子,则可以使用此选项。\n" +"通过在 [GPUParticles3D] 节点上设置 [member ParticleProcessMaterial." +"attractor_interaction_enabled],也可以在每个进程材质的基础上禁用粒子吸引。" + +msgid "" +"Box-shaped 3D particle collision shape affecting [GPUParticles3D] nodes." +msgstr "Box-3D 粒子碰撞的形状影响 [GPUParticles3D] 节点。" + +msgid "" +"Box-shaped 3D particle collision shape affecting [GPUParticles3D] nodes.\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 "" +"盒状3D粒子碰撞形状影响[GPUParticles3D]节点。\n" +"[b]注意:[/b] [member ParticleProcessMaterial.collision_mode]必须是[constant " +"ParticleProcessMaterial.COLLISION_RIGID]或[constant ParticleProcessMaterial." +"COLLISION_HIDE_ON_CONTACT]在经过[GPUParticles3D]的材质上,碰撞才能发挥作" +"用。\n" +"[b]注意:[/b] 粒子碰撞只影响到[GPUParticles3D],而不是[CPUParticles3D]。" + msgid "The collision box's size in 3D units." msgstr "碰撞框的范围,使用 3D 单位。" @@ -36030,6 +49337,70 @@ msgid "" "nodes." msgstr "实时高度图状的 3D 粒子吸引器,影响 [GPUParticles3D] 节点。" +msgid "" +"Real-time heightmap-shaped 3D particle attractor 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, since " +"heightmaps cannot represent overhangs, [GPUParticlesCollisionHeightField3D] " +"is not suited for indoor particle collision.\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 "" +"实时高度图形状的 3D 粒子吸引器会影响 [GPUParticles3D] 节点。\n" +"高度图形状允许有效地表示凸面和凹面对象与单个“地板”(例如地形)的碰撞。它不如 " +"[GPUParticlesCollisionSDF3D] 灵活,但不需要烘焙步骤。\n" +"也可以在移动时、相机移动时、甚至连续时,实时重新生成 " +"[GPUParticlesCollisionHeightField3D]。这对雨雪等天气效果、以及具有高度动态几" +"何体的游戏来说,[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] " +"does not need to be a child of the [Camera3D] node for this to work.\n" +"Following the camera has a performance cost, as it will force the heightmap " +"to update whenever the camera moves. Consider lowering [member resolution] " +"to improve performance if [member follow_camera_enabled] is [code]true[/" +"code]." +msgstr "" +"如果为 [code]true[/code],则 [GPUParticlesCollisionHeightField3D] 将在全局空" +"间中跟随当前相机。[GPUParticlesCollisionHeightField3D] 不需要是该 [Camera3D] " +"节点的子节点也能工作。\n" +"跟随相机会有性能成本,因为它会在相机移动时强制更新高度图。如果 [member " +"follow_camera_enabled] 为 [code]true[/code],请考虑降低 [member resolution] " +"以提高性能。" + +msgid "" +"Higher resolutions can represent small details more accurately in large " +"scenes, at the cost of lower performance. If [member update_mode] is " +"[constant UPDATE_MODE_ALWAYS], consider using the lowest resolution possible." +msgstr "" +"更高的分辨率可以更准确地表示大场景中的小细节,但会降低性能。如果 [member " +"update_mode] 为 [constant UPDATE_MODE_ALWAYS],请考虑使用可能的最低分辨率。" + +msgid "" +"The collision heightmap's size in 3D units. To improve heightmap quality, " +"[member size] should be set as small as possible while covering the parts of " +"the scene you need." +msgstr "" +"碰撞高度图的 3D 单位大小。为了提高高度图质量,[member size] 应被设置得尽可能" +"小,同时覆盖需要的场景部分。" + msgid "The update policy to use for the generated heightmap." msgstr "生成的高度图的更新策略。" @@ -36067,10 +49438,130 @@ msgstr "生成 8192×8192 的高度图。适用于具有远景粒子的巨大场 msgid "Represents the size of the [enum Resolution] enum." msgstr "代表 [enum Resolution] 枚举的大小。" +msgid "" +"Only update the heightmap when the [GPUParticlesCollisionHeightField3D] node " +"is moved, or when the camera moves if [member follow_camera_enabled] is " +"[code]true[/code]. An update can be forced by slightly moving the " +"[GPUParticlesCollisionHeightField3D] in any direction." +msgstr "" +"仅在 [GPUParticlesCollisionHeightField3D] 节点移动时,或者当 [member " +"follow_camera_enabled] 为 [code]true[/code] 且相机移动时,更新高度图。可以通" +"过向任意方向稍微移动 [GPUParticlesCollisionHeightField3D] 来强制更新。" + +msgid "" +"Update the heightmap every frame. This has a significant performance cost. " +"This update should only be used when geometry that particles can collide " +"with changes significantly during gameplay." +msgstr "" +"每帧更新高度图。这具有显著的性能成本。只有当粒子可以碰撞的几何体在游戏过程中" +"发生显著变化时,才应使用该更新选项。" + +msgid "" +"Baked signed distance field 3D particle attractor affecting [GPUParticles3D] " +"nodes." +msgstr "烘焙的有符号距离场 3D 粒子吸引器,影响 [GPUParticles3D] 节点。" + +msgid "" +"Baked signed distance field 3D particle attractor 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 "" +"烘焙的有符号距离场 3D 粒子吸引器,影响 [GPUParticles3D] 节点。\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." +msgstr "" +"返回是否启用了 [member bake_mask] 的指定层,该层由给定的一个介于 1 和 32 之间" +"的 [param layer_number] 指定。" + +msgid "" +"Based on [param value], enables or disables the specified layer in the " +"[member bake_mask], given a [param layer_number] between 1 and 32." +msgstr "" +"基于 [param value],启用或禁用 [member bake_mask] 中的指定层,该层由给定的一" +"个介于 1 和 32 之间的 [param layer_number] 指定。" + +msgid "" +"The visual layers to account for when baking the particle collision SDF. " +"Only [MeshInstance3D]s whose [member VisualInstance3D.layers] match with " +"this [member bake_mask] will be included in the generated particle collision " +"SDF. By default, all objects are taken into account for the particle " +"collision SDF baking." +msgstr "" +"烘焙粒子碰撞 SDF 时要考虑的可视层。只有其 [member VisualInstance3D.layers] 与" +"该 [member bake_mask] 匹配的 [MeshInstance3D],才会被包含在生成的粒子碰撞 " +"SDF 中。默认情况下,粒子碰撞 SDF 烘焙会考虑所有对象。" + +msgid "" +"The bake resolution to use for the signed distance field [member texture]. " +"The texture must be baked again for changes to the [member resolution] " +"property to be effective. Higher resolutions have a greater performance cost " +"and take more time to bake. Higher resolutions also result in larger baked " +"textures, leading to increased VRAM and storage space requirements. To " +"improve performance and reduce bake times, use the lowest resolution " +"possible for the object you're representing the collision of." +msgstr "" +"用于有符号距离场 [member texture] 的烘焙分辨率。必须再次烘焙纹理,才能使 " +"[member resolution] 属性的更改生效。更高的分辨率具有更高的性能成本,并且需要" +"更多的时间来烘焙。更高的分辨率还会产生更大的烘焙纹理,从而增加 VRAM 和存储的" +"空间需求。要提高性能并减少烘焙时间,请为表示碰撞的对象使用尽可能低的分辨率。" + +msgid "" +"The collision SDF's size in 3D units. To improve SDF quality, the [member " +"size] should be set as small as possible while covering the parts of the " +"scene you need." +msgstr "" +"碰撞 SDF 的大小,单位为 3D 单位。为了提高 SDF 质量,应在能覆盖需要的场景部分" +"的同时,将 [member size] 设置得尽可能小。" + msgid "The 3D texture representing the signed distance field." msgstr "代表有符号距离场的 3D 纹理。" msgid "" +"The collision shape's thickness. Unlike other particle colliders, " +"[GPUParticlesCollisionSDF3D] is actually hollow on the inside. [member " +"thickness] can be increased to prevent particles from tunneling through the " +"collision shape at high speeds, or when the [GPUParticlesCollisionSDF3D] is " +"moved." +msgstr "" +"碰撞形状的厚度。与其他粒子碰撞器不同,[GPUParticlesCollisionSDF3D] 实际上内部" +"是空心的。可以增加 [member thickness],以防止粒子在高速运动、或者当 " +"[GPUParticlesCollisionSDF3D] 移动时,穿过碰撞形状。" + +msgid "" "Bake a 16×16×16 signed distance field. This is the fastest option, but also " "the least precise." msgstr "烘焙 16×16×16 的有符号距离场。这是最快的选项,但也是最不精确的。" @@ -36096,6 +49587,22 @@ msgid "" "Sphere-shaped 3D particle collision shape affecting [GPUParticles3D] nodes." msgstr "球状的 3D 粒子碰撞形状,影响 [GPUParticles3D] 节点。" +msgid "" +"Sphere-shaped 3D particle collision shape affecting [GPUParticles3D] nodes.\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 "" +"球状的 3D 粒子碰撞形状,影响 [GPUParticles3D] 节点。\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 单位表示。" @@ -36120,6 +49627,11 @@ msgstr "" "的偏移量 1 处。\n" "另请参阅 [Curve],支持更多复杂的缓动函数,但不支持颜色。" +msgid "" +"Adds the specified color to the end of the gradient, with the specified " +"offset." +msgstr "使用指定的偏移,将指定的颜色添加到该渐变的末尾。" + msgid "Returns the color of the gradient color at index [param point]." msgstr "返回渐变色在索引 [param point] 处的颜色。" @@ -36170,6 +49682,19 @@ msgstr "三次插值。" msgid "Gradient-filled texture." msgstr "渐变填充纹理。" +msgid "" +"GradientTexture1D uses a [Gradient] to fill the texture data. The gradient " +"will be filled from left to right using colors obtained from the gradient. " +"This means the texture does not necessarily represent an exact copy of the " +"gradient, but instead an interpolation of samples obtained from the gradient " +"at fixed steps (see [member width]). See also [GradientTexture2D], " +"[CurveTexture] and [CurveXYZTexture]." +msgstr "" +"GradientTexture1D 使用一个 [Gradient] 来填充纹理数据。该渐变纹理将使用从渐变" +"中获得的颜色从左到右进行填充。这意味着该纹理不一定代表渐变的精确副本,而是以" +"固定步长从渐变中获得的样本的插值(参见 [member width])。另请参见 " +"[GradientTexture2D]、[CurveTexture] 和 [CurveXYZTexture]。" + msgid "The [Gradient] that will be used to fill the texture." msgstr "将用于填充纹理的 [Gradient]。" @@ -36192,6 +49717,21 @@ msgid "Gradient-filled 2D texture." msgstr "使用渐变填充的 2D 纹理。" msgid "" +"The texture uses a [Gradient] to fill the texture data in 2D space. The " +"gradient is filled according to the specified [member fill] and [member " +"repeat] types using colors obtained from the gradient. The texture does not " +"necessarily represent an exact copy of the gradient, but instead an " +"interpolation of samples obtained from the gradient at fixed steps (see " +"[member width] and [member height]). See also [GradientTexture1D], " +"[CurveTexture] and [CurveXYZTexture]." +msgstr "" +"该纹理使用一个 [Gradient] 来填充 2D 空间中的纹理数据。使用从渐变中获得的颜" +"色,根据指定的 [member fill] 和 [member repeat] 类型来填充该渐变纹理。该纹理" +"不一定代表渐变的精确副本,而是以固定步长从渐变获得的样本的插值(参见 [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] " "offsets." @@ -36254,6 +49794,14 @@ msgstr "" "相同的模式镜像重复。" msgid "" +"GraphEdit is a control responsible for displaying and manipulating graph-" +"like data using [GraphNode]s. It provides access to creation, removal, " +"connection, and disconnection of nodes." +msgstr "" +"GraphEdit 是一个控件,负责使用 [GraphNode] 显示和操作类似图形的数据。它提供对" +"节点的创建、移除、连接和断开连接的访问。" + +msgid "" "[b]Note:[/b] Please be aware that this node will undergo extensive " "refactoring in a future 4.x version involving compatibility-breaking API " "changes.\n" @@ -36285,6 +49833,82 @@ msgstr "" "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_connection_input_position]([param " +"in_port]) (For output's case, call [method GraphNode." +"get_connection_output_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_connection_input_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_connection_input_position]([param in_port])(对于输出的情况,请改为调用 " +"[method GraphNode.get_connection_output_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_connection_input_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_connection_output_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_connection_output_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" "Return [code]true[/code] if the connection is indeed valid or return " @@ -36325,10 +49949,85 @@ msgstr "" "[/csharp]\n" "[/codeblocks]" +msgid "" +"Allows the connection between two different port types. The port type is " +"defined individually for the left and the right port of each slot with the " +"[method GraphNode.set_slot] method.\n" +"See also [method is_valid_connection_type] and [method " +"remove_valid_connection_type]." +msgstr "" +"允许两种不同端口类型之间的连接。端口类型是使用 [method GraphNode.set_slot] 方" +"法为每个插槽的左右端口单独定义的。\n" +"另请参阅 [method is_valid_connection_type] 和 [method " +"remove_valid_connection_type]。" + +msgid "" +"Allows to disconnect nodes when dragging from the left port of the " +"[GraphNode]'s slot if it has the specified type. See also [method " +"remove_valid_left_disconnect_type]." +msgstr "" +"如果 [GraphNode] 插槽的左侧端口具有指定的类型,则允许在从该端口拖动时断开节" +"点。另请参阅 [method remove_valid_left_disconnect_type]。" + +msgid "" +"Allows to disconnect nodes when dragging from the right port of the " +"[GraphNode]'s slot if it has the specified type. See also [method " +"remove_valid_right_disconnect_type]." +msgstr "" +"如果 [GraphNode] 插槽的右侧端口具有指定的类型,则允许在从该端口拖动时断开节" +"点。另请参阅 [method remove_valid_right_disconnect_type]。" + +msgid "" +"Rearranges selected nodes in a layout with minimum crossings between " +"connections and uniform horizontal and vertical gap between nodes." +msgstr "" +"重新排列布局中的选定节点,使连接之间的交叉最少,节点之间的水平和垂直间隙保持" +"一致。" + msgid "Removes all connections between nodes." msgstr "移除节点之间的所有连接。" msgid "" +"Create a connection between the [param from_port] of the [param from_node] " +"[GraphNode] and the [param to_port] of the [param to_node] [GraphNode]. If " +"the connection already exists, no connection is created." +msgstr "" +"在来源 [GraphNode] 节点 [param from_node] 的 [param from_port] 端口和目标 " +"[GraphNode] 节点 [param to_node] 的 [param to_port] 端口之间创建连接。如果已" +"存在连接,则不会创建连接。" + +msgid "" +"Removes the connection between the [param from_port] of the [param " +"from_node] [GraphNode] and the [param to_port] of the [param to_node] " +"[GraphNode]. If the connection does not exist, no connection is removed." +msgstr "" +"移除 [param from_node] [GraphNode] 的 [param from_port] 和 [param to_node] " +"[GraphNode] 的 [param to_port] 之间的连接。如果该连接不存在,则不移除任何连" +"接。" + +msgid "" +"Ends the creation of the current connection. In other words, if you are " +"dragging a connection you can use this method to abort the process and " +"remove the line that followed your cursor.\n" +"This is best used together with [signal connection_drag_started] and [signal " +"connection_drag_ended] to add custom behavior like node addition through " +"shortcuts.\n" +"[b]Note:[/b] This method suppresses any other connection request signals " +"apart from [signal connection_drag_ended]." +msgstr "" +"结束当前连接的创建。换句话说,如果正在拖动一个连接,可以使用该方法中止该过" +"程,并移除鼠标光标后面的线。\n" +"这最好与 [signal connection_drag_started] 和 [signal connection_drag_ended] " +"一起使用,以添加自定义的行为,如通过快捷方式添加节点。\n" +"[b]注意:[/b]该方法会抑制除 [signal connection_drag_ended] 之外的任何其他连接" +"请求信号。" + +msgid "" +"Returns the points which would make up a connection between [param " +"from_node] and [param to_node]." +msgstr "返回构成 [param from_node] 和 [param to_node] 之间的连接的点。" + +msgid "" "Returns an Array containing the list of connections. A connection consists " "in a structure of the form [code]{ from_port: 0, from: \"GraphNode name 0\", " "to_port: 1, to: \"GraphNode name 1\" }[/code]." @@ -36358,6 +50057,74 @@ msgstr "" "如果 [param from_node] [GraphNode] 的 [param from_port] 连接到 [param " "to_node] [GraphNode] 的 [param to_port],则返回 [code]true[/code]。" +msgid "" +"Returns whether it's possible to make a connection between two different " +"port types. The port type is defined individually for the left and the right " +"port of each slot with the [method GraphNode.set_slot] method.\n" +"See also [method add_valid_connection_type] and [method " +"remove_valid_connection_type]." +msgstr "" +"返回是否可以在两种不同的端口类型之间建立连接。端口类型是使用 [method " +"GraphNode.set_slot] 方法为每个插槽的左右端口单独定义的。\n" +"另请参阅 [method add_valid_connection_type] 和 [method " +"remove_valid_connection_type]。" + +msgid "" +"Disallows the connection between two different port types previously allowed " +"by [method add_valid_connection_type]. The port type is defined individually " +"for the left and the right port of each slot with the [method GraphNode." +"set_slot] method.\n" +"See also [method is_valid_connection_type]." +msgstr "" +"不允许先前由 [method add_valid_connection_type] 允许的两种不同端口类型之间的" +"连接。端口类型是通过 [method GraphNode.set_slot] 方法为每个插槽的左右端口单独" +"定义的。\n" +"另请参阅 [method is_valid_connection_type]。" + +msgid "" +"Disallows to disconnect nodes when dragging from the left port of the " +"[GraphNode]'s slot if it has the specified type. Use this to disable " +"disconnection previously allowed with [method " +"add_valid_left_disconnect_type]." +msgstr "" +"如果 [GraphNode] 插槽的左侧端口具有指定类型,当从该端口拖动时,则不允许断开节" +"点的连接。使用该方法来禁用以前使用 [method add_valid_left_disconnect_type] 允" +"许的断开连接。" + +msgid "" +"Disallows to disconnect nodes when dragging from the right port of the " +"[GraphNode]'s slot if it has the specified type. Use this to disable " +"disconnection previously allowed with [method " +"add_valid_right_disconnect_type]." +msgstr "" +"如果 [GraphNode] 插槽的右侧端口具有指定类型,当从该端口拖动时,则不允许断开节" +"点的连接。使用该方法来禁用以前使用 [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." +msgstr "" +"使用 [theme_item activity] 主题属性中提供的颜色,设置 [param from_node] 的 " +"[param from_port] 和 [param to_node] 的 [param to_port] 之间的连接的颜色。" + +msgid "Sets the specified [param node] as the one selected." +msgstr "将指定的 [param node] 节点设置为选中的节点。" + +msgid "If [code]true[/code], the Arrange Nodes button is hidden." +msgstr "如果为 [code]true[/code],则隐藏排列节点按钮。" + +msgid "If [code]true[/code], the lines between nodes will use antialiasing." +msgstr "如果为 [code]true[/code],节点之间的线将使用抗锯齿。" + +msgid "" +"The curvature of the lines between the nodes. 0 results in straight lines." +msgstr "节点之间连线的曲率。0 得到的是直线。" + +msgid "The thickness of the lines between the nodes." +msgstr "节点之间连线的粗细。" + msgid "If [code]true[/code], the minimap is visible." msgstr "如果为 [code]true[/code],小图是可见的。" @@ -36369,6 +50136,9 @@ msgid "" "the grid area and is scaled to fit this rectangle." msgstr "小图矩形的大小。地图自身基于网格区域的大小,并被缩放以适应这个矩形。" +msgid "Defines the control scheme for panning with mouse wheel." +msgstr "定义使用鼠标滚轮平移的控制方案。" + msgid "" "If [code]true[/code], enables disconnection of existing connections in the " "GraphEdit by dragging the right end." @@ -36412,6 +50182,27 @@ msgid "Emitted at the beginning of a connection drag." msgstr "在连接拖动开始时发出。" msgid "" +"Emitted when user drags a connection from an input port into the empty space " +"of the graph." +msgstr "当用户将连接从输入端口拖动到图形的空白区域时发出。" + +msgid "" +"Emitted to the GraphEdit when the connection between the [param from_port] " +"of the [param from_node] [GraphNode] and the [param to_port] of the [param " +"to_node] [GraphNode] is attempted to be created." +msgstr "" +"当尝试创建 [param from_node] [GraphNode] 的 [param from_port] 和 [param " +"to_node] [GraphNode] 的 [param to_port] 之间的连接时发出。" + +msgid "" +"Emitted when user drags a connection from an output port into the empty " +"space of the graph." +msgstr "当用户将连接从输出端口拖动到图形的空白区域时发出。" + +msgid "Emitted when the user presses [kbd]Ctrl + C[/kbd]." +msgstr "当用户按下 [kbd]Ctrl + C[/kbd] 时发出。" + +msgid "" "Emitted when a GraphNode is attempted to be removed from the GraphEdit. " "Provides a list of node names to be removed (all selected nodes, excluding " "nodes without closing button)." @@ -36420,6 +50211,14 @@ msgstr "" "有选中的节点,除去不包含关闭按钮的节点)。" 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] " +"[GraphNode] is attempted to be removed." +msgstr "" +"当试图移除 [param from_node] [GraphNode] 的 [param from_port] 和 [param " +"to_node] [GraphNode] 的 [param to_port] 之间的连接时发出。" + +msgid "" "Emitted when a GraphNode is attempted to be duplicated in the GraphEdit." msgstr "当 GraphNode 试图在 GraphEdit 中被复制时发出的。" @@ -36429,11 +50228,34 @@ msgstr "在 GraphNode 移动结束时发出。" msgid "Emitted when a GraphNode is selected." msgstr "当 GraphNode 被选择时发出。" +msgid "Emitted when the user presses [kbd]Ctrl + V[/kbd]." +msgstr "当用户按下 [kbd]Ctrl + V[/kbd] 时发出。" + +msgid "" +"Emitted when a popup is requested. Happens on right-clicking in the " +"GraphEdit. [param position] is the position of the mouse pointer when the " +"signal is sent." +msgstr "" +"当请求弹出窗口时发出。在 GraphEdit 中右键点击时发生。[param position]为该信号" +"被发出时鼠标指针的位置。" + msgid "" "Emitted when the scroll offset is changed by the user. It will not be " "emitted when changed in code." msgstr "当用户改变滚动偏移量时发出。在代码中改变滚动偏移量时,它不会被触发。" +msgid "" +"[kbd]Mouse Wheel[/kbd] will zoom, [kbd]Ctrl + Mouse Wheel[/kbd] will move " +"the view." +msgstr "" +"[kbd]鼠标滚轮[/kbd]进行缩放,[kbd]Ctrl + 鼠标滚轮[/kbd]进行视图的移动。" + +msgid "" +"[kbd]Mouse Wheel[/kbd] will move the view, [kbd]Ctrl + Mouse Wheel[/kbd] " +"will zoom." +msgstr "" +"[kbd]鼠标滚轮[/kbd]进行视图的移动,[kbd]Ctrl + 鼠标滚轮[/kbd]进行缩放。" + msgid "Color of major grid lines." msgstr "主要栅格线的颜色。" @@ -36468,6 +50290,14 @@ msgid "The background drawn under the grid." msgstr "绘制在栅格下方的背景。" msgid "" +"GraphNode is a [Container] control that represents a single data unit in a " +"[GraphEdit] graph. You can customize the number, type, and color of left- " +"and right-side connection ports." +msgstr "" +"GraphNode 是一种 [Container] 控件,代表 [GraphEdit] 图中的单个数据单元。可以" +"自定义左侧和右侧连接端口的数量、类型、和颜色。" + +msgid "" "[b]Note:[/b] Please be aware that this node will undergo extensive " "refactoring in a future 4.x version involving compatibility-breaking API " "changes.\n" @@ -36513,6 +50343,9 @@ msgstr "" msgid "Disables all input and output slots of the GraphNode." msgstr "禁用 GraphNode 的所有输入和输出槽。" +msgid "Disables input and output slot whose index is [param slot_index]." +msgstr "禁用索引为 [param set_index] 的输入和输出插槽。" + msgid "Returns the [Color] of the input connection [param port]." msgstr "返回输入连接端口 [param port] 的 [Color]。" @@ -36566,6 +50399,11 @@ msgid "Returns the right (output) type of the slot [param slot_index]." msgstr "返回索引为 [param slot_index] 的插槽的右侧(输出)类型。" msgid "" +"Returns true if the background [StyleBox] of the slot [param slot_index] is " +"drawn." +msgstr "如果插槽 [param slot_index] 的背景 [StyleBox] 被绘制,则返回 true。" + +msgid "" "Returns [code]true[/code] if left (input) side of the slot [param " "slot_index] is enabled." msgstr "" @@ -36578,6 +50416,61 @@ msgstr "" "如果插槽 [param slot_index] 的右侧(输出)被启用,则返回 [code]true[/code]。" msgid "" +"Sets properties of the slot with the [param slot_index] index.\n" +"If [param enable_left_port]/[param enable_right_port] is [code]true[/code], " +"a port will appear and the slot will be able to be connected from this " +"side.\n" +"With [param type_left]/[param type_right] an arbitrary type can be assigned " +"to each port. Two ports can be connected if they share the same type, or if " +"the connection between their types is allowed in the parent [GraphEdit] (see " +"[method GraphEdit.add_valid_connection_type]). Keep in mind that the " +"[GraphEdit] has the final say in accepting the connection. Type " +"compatibility simply allows the [signal GraphEdit.connection_request] signal " +"to be emitted.\n" +"Ports can be further customized using [param color_left]/[param color_right] " +"and [param custom_icon_left]/[param custom_icon_right]. The color parameter " +"adds a tint to the icon. The custom icon can be used to override the default " +"port dot.\n" +"Additionally, [param draw_stylebox] can be used to enable or disable drawing " +"of the background stylebox for each slot. See [theme_item slot].\n" +"Individual properties can also be set using one of the [code]set_slot_*[/" +"code] methods.\n" +"[b]Note:[/b] This method only sets properties of the slot. To create the " +"slot itself, add a [Control]-derived child to the GraphNode." +msgstr "" +"设置具有 [param slot_index] 索引的插槽的属性。\n" +"如果 [param enable_left_port]/[param enable_right_port] 为 [code]true[/" +"code],则将出现一个端口,插槽将能够从这一侧连接。\n" +"使用 [param type_left]/[param type_right] 可以为每个端口分配一个任意类型。如" +"果两个端口具有相同的类型,或者如果它们的类型之间的连接在父 [GraphEdit] 中被允" +"许(参见 [method GraphEdit.add_valid_connection_type]),那么这两个端口就可以" +"被连接。请记住,[GraphEdit] 在接受连接上拥有最终决定权。类型兼容性只允许发出 " +"[signal GraphEdit.connection_request] 信号。\n" +"可以使用 [param color_left]/[param color_right] 和 [param custom_icon_left]/" +"[param custom_icon_right] 进一步定制端口。颜色参数为图标添加了一个色调。自定" +"义图标可以用来覆盖默认的端口点。\n" +"此外,[param draw_stylebox] 可以用来启用或禁用每个插槽的背景样式框的绘制。参" +"见 [theme_item slot]。\n" +"单个属性也可以使用 [code]set_slot_*[/code] 方法之一来设置。\n" +"[b]注意:[/b]该方法只设置插槽的属性。要创建插槽本身,请将 [Control] 派生的子" +"节点添加到该 GraphNode。" + +msgid "" +"Sets the [Color] of the left (input) side of the slot [param slot_index] to " +"[param color]." +msgstr "" +"将插槽 [param slot_index] 左侧(输入)的 [Color] 设置为 [param color]。" + +msgid "" +"Sets the [Color] of the right (output) side of the slot [param slot_index] " +"to [param color]." +msgstr "" +"将插槽 [param slot_index] 右侧(输出)的 [Color] 设置为 [param color]。" + +msgid "Toggles the background [StyleBox] of the slot [param slot_index]." +msgstr "切换插槽 [param slot_index] 的背景 [StyleBox]。" + +msgid "" "Toggles the left (input) side of the slot [param slot_index]. If [param " "enable] is [code]true[/code], a port will appear on the left side and the " "slot will be able to be connected from this side." @@ -36593,6 +50486,22 @@ msgstr "" "切换插槽 [param slot_index] 的右侧(输出)端口。如果[param enable] 为" "[code]true[/code],则右侧会出现一个端口,插槽可以从这一侧连接。" +msgid "" +"Sets the left (input) type of the slot [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 [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 "If [code]true[/code], the GraphNode is a comment node." msgstr "如果为 [code]true[/code],则该 GraphNode 是注释节点。" @@ -36603,6 +50512,15 @@ msgid "Sets the overlay shown above the GraphNode. See [enum Overlay]." msgstr "设置在 GraphNode 上方显示的叠加层。见 [enum Overlay]。" msgid "" +"The offset of the GraphNode, relative to the scroll offset of the " +"[GraphEdit].\n" +"[b]Note:[/b] You cannot use position offset directly, as [GraphEdit] is a " +"[Container]." +msgstr "" +"GraphNode 的偏移量,相对于 [GraphEdit] 的滚动偏移量。\n" +"[b]注意:[/b]不能直接使用位置偏移,因为 [GraphEdit] 是一个 [Container]。" + +msgid "" "If [code]true[/code], the user can resize the GraphNode.\n" "[b]Note:[/b] Dragging the handle will only emit the [signal resize_request] " "signal, the GraphNode needs to be resized manually." @@ -36774,12 +50692,84 @@ msgstr "" msgid "Node for 3D tile-based maps." msgstr "基于 3D 图块地图的节点。" +msgid "" +"GridMap lets you place meshes on a grid interactively. It works both from " +"the editor and from scripts, which can help you create in-game level " +"editors.\n" +"GridMaps use a [MeshLibrary] which contains a list of tiles. Each tile is a " +"mesh with materials plus optional collision and navigation shapes.\n" +"A GridMap contains a collection of cells. Each grid cell refers to a tile in " +"the [MeshLibrary]. All cells in the map have the same dimensions.\n" +"Internally, a GridMap is split into a sparse collection of octants for " +"efficient rendering and physics processing. Every octant has the same " +"dimensions and can contain several cells.\n" +"[b]Note:[/b] GridMap doesn't extend [VisualInstance3D] and therefore can't " +"be hidden or cull masked based on [member VisualInstance3D.layers]. If you " +"make a light not affect the first layer, the whole GridMap won't be lit by " +"the light in question." +msgstr "" +"GridMap 允许以交互的方式将网格放置在栅格上。它在编辑器和脚本中均可使用,可帮" +"助创建游戏内的关卡编辑器。\n" +"GridMap 使用一个包含图块列表的 [MeshLibrary]。每个图块都是一个带有材质的网格" +"以及可选的碰撞和导航形状。\n" +"GridMap 包含一组单元格。每个栅格单元引用 [MeshLibrary] 中的一个图块。地图中的" +"所有单元格都具有相同的大小。\n" +"在内部,GridMap 被拆分为八分圆的稀疏集合,以进行高效的渲染和物理处理。每个八" +"分圆都具有相同的维度,并且可以包含多个单元格。\n" +"[b]注意:[/b]GridMap 没有扩展 [VisualInstance3D],因此不能基于 [member " +"VisualInstance3D.layers] 隐藏或剔除掩码。如果使灯光不影响第一层,则整个 " +"GridMap 将不会被有问题的灯光照亮。" + msgid "Using gridmaps" msgstr "使用网格地图" msgid "Clear all cells." msgstr "清除所有单元格。" +msgid "Clears all baked meshes. See [method make_baked_meshes]." +msgstr "清除所有烘焙过的网格。见 [method make_baked_meshes]。" + +msgid "Returns [RID] of a baked mesh with the given [param idx]." +msgstr "返回是否存在带有给定 ID 的节点。" + +msgid "" +"Returns an array of [ArrayMesh]es and [Transform3D] references of all bake " +"meshes that exist within the current GridMap." +msgstr "" +"返回当前 GridMap 中存在的所有烘焙网格的 [ArrayMesh] 和 [Transform3D] 引用的数" +"组。" + +msgid "" +"Returns one of 24 possible rotations that lie along the vectors (x,y,z) with " +"each component being either -1, 0, or 1. For further details, refer to the " +"Godot source code." +msgstr "" +"返回沿向量 (x,y,z) 的 24 种可能旋转中的一种,每个分量为 -1、0 或 1。有关详细" +"信息,请参阅 Godot 源代码。" + +msgid "" +"The [MeshLibrary] item index located at the given grid coordinates. If the " +"cell is empty, [constant INVALID_CELL_ITEM] will be returned." +msgstr "" +"位于给定栅格坐标的 [MeshLibrary] 项目的索引。如果单元格为空,则将返回 " +"[constant INVALID_CELL_ITEM]。" + +msgid "Returns the basis that gives the specified cell its orientation." +msgstr "返回为指定单元格提供方向的基。" + +msgid "" +"The orientation of the cell at the given grid coordinates. [code]-1[/code] " +"is returned if the cell is empty." +msgstr "" +"给定栅格坐标处的单元格的方向。如果该单元格为空,则返回 [code]-1[/code]。" + +msgid "" +"Returns an array of [Transform3D] and [Mesh] references corresponding to the " +"non-empty cells in the grid. The transforms are specified in local space." +msgstr "" +"返回对应于栅格中非空单元格的 [Transform3D] 和 [Mesh] 引用的数组。变换在局部空" +"间中指定。" + msgid "" "Returns the [RID] of the navigation map this GridMap node uses for its cell " "baked navigation meshes.\n" @@ -36793,6 +50783,17 @@ msgstr "" "更改。" msgid "" +"This function considers a discretization of rotations into 24 points on unit " +"sphere, lying along the vectors (x,y,z) with each component being either -1, " +"0, or 1, and returns the index (in the range from 0 to 23) of the point best " +"representing the orientation of the object. For further details, refer to " +"the Godot source code." +msgstr "" +"该函数考虑将旋转离散化为单位球体上的 24 个点,沿向量 (x,y,z) 放置,每个分量" +"为 -1、0 或 1,并返回索引(在 0 到 23 的范围内 ) 最能代表物体方向的点。 有关" +"详细信息,请参阅 Godot 源代码。" + +msgid "" "Returns an array of [Vector3] with the non-empty cell coordinates in the " "grid map." msgstr "返回一个包含网格中非空单元格坐标的 [Vector3] 数组。" @@ -36802,6 +50803,58 @@ msgid "" "[code]item[/code]." msgstr "返回所有具有 [code]item[/code] 中指定的项目索引的单元格的数组。" +msgid "" +"Returns the map coordinates of the cell containing the given [param " +"local_position]. If [param local_position] is in global coordinates, " +"consider using [method Node3D.to_local] before passing it to this method. " +"See also [method map_to_local]." +msgstr "" +"返回包含给定 [param local_position] 的单元格的地图坐标。如果 [param " +"local_position] 在全局坐标中,请考虑在将其传递给该方法之前使用 [method " +"Node3D.to_local]。另请参阅 [method map_to_local]。" + +msgid "Bakes lightmap data for all meshes in the assigned [MeshLibrary]." +msgstr "为指定的 [MeshLibrary] 中的所有网格烘焙光照贴图数据。" + +msgid "" +"Returns the position of a grid cell in the GridMap's local coordinate space. " +"To convert the returned value into global coordinates, use [method Node3D." +"to_global]. See also [method map_to_local]." +msgstr "" +"返回栅格单元格在 GridMap 的局部坐标空间中的位置。要将返回值转换为全局坐标,请" +"使用 [method Node3D.to_global]。另请参阅 [method map_to_local]。" + +msgid "" +"Notifies the [GridMap] about changed resource and recreates octant data." +msgstr "通知 [GridMap] 有关更改的资源并重新创建八分圆数据。" + +msgid "" +"Sets the mesh index for the cell referenced by its grid coordinates.\n" +"A negative item index such as [constant INVALID_CELL_ITEM] will clear the " +"cell.\n" +"Optionally, the item's orientation can be passed. For valid orientation " +"values, see [method get_orthogonal_index_from_basis]." +msgstr "" +"设置由其栅格坐标引用的单元格的网格索引。\n" +"诸如 [constant INVALID_CELL_ITEM] 之类的负的项目索引将清除该单元格。\n" +"可选地,可以传入该项目的方向。有关有效的方向值,请参阅 [method " +"get_orthogonal_index_from_basis]。" + +msgid "" +"Sets the [RID] of the navigation map this GridMap node should use for its " +"cell baked navigation meshes." +msgstr "设置该导航地图的 [RID],该 GridMap 节点应该用于其单元格烘焙导航网格。" + +msgid "" +"If [code]true[/code], this GridMap creates a navigation region for each cell " +"that uses a [member mesh_library] item with a navigation mesh. The created " +"navigation region will use the navigation layers bitmask assigned to the " +"[MeshLibrary]'s item." +msgstr "" +"如果为 [code]true[/code],则为每个使用带有导航网格的 [member mesh_library] 项" +"目的单元格,该 GridMap 将创建一个导航区域。创建的导航区域将使用分配给该 " +"[MeshLibrary] 项目的导航层位掩码。" + msgid "If [code]true[/code], grid items are centered on the X axis." msgstr "如果为 [code]true[/code],则网格项以 X 轴为中心。" @@ -37037,11 +51090,41 @@ msgid "Height map shape resource for 3D physics." msgstr "高度图形状资源,用于 3D 物理。" msgid "" +"Height map shape resource, which can be added to a [PhysicsBody3D] or " +"[Area3D]. Heightmap collision is typically used for colliding with terrains. " +"However, since heightmaps cannot store overhangs, collisions with other " +"structures (such as buildings) must be done with other collision shapes such " +"as [ConcavePolygonShape3D]. If needed, \"holes\" can be created in an " +"[HeightMapShape3D] by assigning very low points (like [code]-100000[/code]) " +"in the desired area.\n" +"[b]Performance:[/b] [HeightMapShape3D] is faster to check collisions against " +"compared to [ConcavePolygonShape3D], but it is slower than primitive " +"collision shapes such as [SphereShape3D] or [BoxShape3D]." +msgstr "" +"高度图形状资源,可以被添加到一个 [PhysicsBody3D] 或 [Area3D] 中。高度图碰撞通" +"常用于与地形发生碰撞。但是,由于高度图不能存储悬垂,因此与其他结构(例如建筑" +"物)的碰撞,必须使用其他碰撞形状(例如 [ConcavePolygonShape3D])来完成。如果" +"需要,可以通过在所需区域分配非常低的点(如 [code]-100000[/code]),在一个 " +"[HeightMapShape3D] 中创建“孔洞”。\n" +"[b]性能:[/b]与 [ConcavePolygonShape3D] 相比,[HeightMapShape3D] 检查碰撞的速" +"度更快,但比 [SphereShape3D] 或 [BoxShape3D] 等原始碰撞形状慢。" + +msgid "" "Height map data, pool array must be of [member map_width] * [member " "map_depth] size." msgstr "" "高度图数据,池数组的大小必须是 [member map_width] * [member map_depth]。" +msgid "" +"Number of vertices in the depth of the height map. Changing this will resize " +"the [member map_data]." +msgstr "高度图深度中的顶点数。更改该项将调整 [member map_data] 的大小。" + +msgid "" +"Number of vertices in the width of the height map. Changing this will resize " +"the [member map_data]." +msgstr "高度图宽度中的顶点数。更改该项将调整 [member map_data] 的大小。" + msgid "Horizontal flow container." msgstr "水平流式容器。" @@ -37051,18 +51134,20 @@ msgstr "[FlowContainer] 的水平版本。" msgid "A hinge between two 3D PhysicsBodies." msgstr "两个 3D PhysicsBody 之间的铰链。" +msgid "" +"A HingeJoint3D normally uses the Z axis of body A as the hinge axis, another " +"axis can be specified when adding it manually though. See also " +"[Generic6DOFJoint3D]." +msgstr "" +"HingeJoint3D 通常使用实体 A 的 Z 轴作为铰链轴,但手动添加时可以指定另一个轴。" +"另请参阅 [Generic6DOFJoint3D]。" + msgid "Returns the value of the specified flag." msgstr "返回指定标志的值。" -msgid "Returns the value of the specified parameter." -msgstr "返回指定参数的值。" - msgid "If [code]true[/code], enables the specified flag." msgstr "如果为 [code]true[/code],启用指定的标志。" -msgid "Sets the value of the specified parameter." -msgstr "设置指定参数的值。" - msgid "" "The speed with which the rotation across the axis perpendicular to the hinge " "gets corrected." @@ -37206,12 +51291,25 @@ msgstr "" "[/codeblocks]" msgid "" +"Returns the resulting HMAC. If the HMAC failed, an empty [PackedByteArray] " +"is returned." +msgstr "返回生成的 HMAC。如果该 HMAC 失败,则返回一个空的 [PackedByteArray]。" + +msgid "" "Initializes the HMACContext. This method cannot be called again on the same " "HMACContext until [method finish] has been called." msgstr "" "初始化 HMACContext。在 [method finish] 被调用之前,不能在同一个 HMACContext " "上再次调用此方法。" +msgid "" +"Updates the message to be HMACed. This can be called multiple times before " +"[method finish] is called to append [param data] to the message, but cannot " +"be called until [method start] has been called." +msgstr "" +"更新要进行 HMAC 处理的消息。在 [method finish] 被调用以将 [param data] 追加到" +"该消息之前,该函数可以多次被调用,但在 [method start] 被调用之前不能被调用。" + msgid "Horizontal scroll bar." msgstr "水平滚动条。" @@ -37337,6 +51435,15 @@ msgstr "" "布尔值。如果1 ([code]true[/code]),抓取器将在不在光标下时自动隐藏。如果0 " "([code]false[/code]),抓取器总是可见。" +msgid "" +"The minimum thickness of the area users can click on to grab the splitting " +"line. If [theme_item separation] or [theme_item grabber]'s thickness are too " +"small, this ensure that the splitting line can still be dragged." +msgstr "" +"用户可以点击的区域的最小粗细,点击该区域将抓取分割线。如果 [theme_item " +"separation] 或 [theme_item grabber] 的粗细太小,这将保证分割线仍然可以被拖" +"动。" + msgid "The space between sides of the container." msgstr "容器两侧之间的空间。" @@ -37640,6 +51747,28 @@ msgstr "" "uri_encode]。" msgid "" +"Sends a raw request to the connected host.\n" +"The URL parameter is usually just the part after the host, so for " +"[code]https://somehost.com/index.php[/code], it is [code]/index.php[/code]. " +"When sending requests to an HTTP proxy server, it should be an absolute URL. " +"For [constant HTTPClient.METHOD_OPTIONS] requests, [code]*[/code] is also " +"allowed. For [constant HTTPClient.METHOD_CONNECT] requests, it should be the " +"authority component ([code]host:port[/code]).\n" +"Headers are HTTP request headers. For available HTTP methods, see [enum " +"Method].\n" +"Sends the body data raw, as a byte array and does not encode it in any way." +msgstr "" +"向连接的服务器发送请求。\n" +"URL 参数通常只是主机名后面的部分,所以对于 [code]https://somehost.com/index." +"php[/code] 来说就是 [code]/index.php[/code]。当向 HTTP 代理服务器发送请求时," +"它应该是一个绝对 URL。对于 [constant HTTPClient.METHOD_OPTIONS] 请求," +"[code]*[/code] 也是允许的。对于 [constant HTTPClient.METHOD_CONNECT] 请求,它" +"应该是权限组件 ([code]host:port[/code])。\n" +"Headers 参数是 HTTP 请求的报头。有关可用的 HTTP 方法,请参阅 [enum " +"Method]。\n" +"请求体是以字节数组的形式原样发送的,不会进行任何形式的编码。" + +msgid "" "Sets the proxy server for HTTP requests.\n" "The proxy server is unset if [param host] is empty or [param port] is -1." msgstr "" @@ -38705,6 +52834,38 @@ 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 " +"[code]request_completed[/code].\n" +"If the user has specified their own [code]Accept-Encoding[/code] header, " +"then no header will be added regardless of [code]accept_gzip[/code].\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 [code]request_completed[/code]." +msgstr "" +"如果为 [code]true[/code],这个报头会被添加到每个请求中:[code]Accept-" +"Encoding: gzip, deflate[/code] 告诉服务器可以压缩响应正文。\n" +"任何声明 [code]gzip[/code] 或 [code]deflate[/code] 的 [code]Content-" +"Encoding[/code] 的响应正文,将被自动解压缩,并且未压缩的字节将通过 " +"[code]request_completed[/code] 被传递。\n" +"如果用户指定了自己的 [code]Accept-Encoding[/code] 报头,那么无论 " +"[code]accept_gzip[/code] 是什么,都不会添加任何报头。\n" +"如果为 [code]false[/code],这将不会添加报头,并且不会对响应正文执行任何解压" +"缩。响应正文的原始字节将通过 [code]request_completed[/code] 返回。" + +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." +msgstr "" +"响应正文的最大允许大小。如果响应正文被压缩,这将用作解压缩的正文的最大允许大" +"小。" + +msgid "" "The size of the buffer used and maximum bytes to read per iteration. See " "[member HTTPClient.read_chunk_size].\n" "Set this to a lower value (e.g. 4096 for 4 KiB) when downloading small files " @@ -38779,6 +52940,25 @@ msgstr "请求超出了重定向次数上限,见 [member max_redirects]。" 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 [code]texture[/code] property of an " +"object directly (such as [Sprite2D]), 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] 不能被直接分配给对象(例如 [Sprite2D])的 [code]texture[/code] 属性," +"必须先手动转换为 [ImageTexture]。\n" +"[b]注意:[/b]由于图形硬件限制,最大图像大小为 16384×16384 像素。较大的图像可" +"能无法导入。" + msgid "Importing images" msgstr "导入图像" @@ -38877,6 +53057,16 @@ msgstr "" "最佳的 DXT 和 ETC2 格式。对于其他格式(非 DXT 或 ETC2),将忽略此参数。\n" "对于 ASTC 压缩,必须提供 [param astc_format] 参数。" +msgid "" +"Compute image metrics on the current image and the compared image.\n" +"The dictionary contains [code]max[/code], [code]mean[/code], " +"[code]mean_squared[/code], [code]root_mean_squared[/code] and " +"[code]peak_snr[/code]." +msgstr "" +"在当前图像和被比较图像上,计算图像指标。\n" +"该字典包含 [code]max[/code]、[code]mean[/code]、[code]mean_squared[/code]、" +"[code]root_mean_squared[/code] 和 [code]peak_snr[/code]。" + msgid "Converts the image's format. See [enum Format] constants." msgstr "转换图像的格式。请参阅 [enum Format] 常量。" @@ -38903,6 +53093,25 @@ msgstr "" "图像加载 Mipmaps。请参阅 [method generate_mipmaps]。" msgid "" +"Crops the image to the given [param width] and [param height]. If the " +"specified size is larger than the current size, the extra area is filled " +"with black pixels." +msgstr "" +"将该图像裁剪成给定的 [param width] 和 [param height]。如果指定的大小大于当前" +"大小,则额外的区域用黑色像素填充。" + +msgid "" +"Decompresses the image if it is VRAM compressed in a supported format. " +"Returns [constant OK] if the format is supported, otherwise [constant " +"ERR_UNAVAILABLE].\n" +"[b]Note:[/b] The following formats can be decompressed: DXT, RGTC, BPTC. The " +"formats ETC1 and ETC2 are not supported." +msgstr "" +"如果图像是以一个支持的格式压缩的 VRAM,则解压缩该图像。如果该格式受支持,则返" +"回 [constant OK],否则返回 [constant ERR_UNAVAILABLE]。\n" +"[b]注意:[/b]可以解压的格式有:DXT、RGTC、BPTC。不支持 ETC1 和 ETC2 格式。" + +msgid "" "Returns [constant ALPHA_BLEND] if the image has data for alpha values. " "Returns [constant ALPHA_BIT] if all the alpha values are stored in a single " "bit. Returns [constant ALPHA_NONE] if no data for alpha values is found." @@ -38955,6 +53164,14 @@ msgstr "" "理的偏移量。" 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 " +"instead of a [Vector2i] argument." +msgstr "" +"返回 [code](x, y)[/code] 处的像素的颜色。\n" +"这与 [method get_pixelv] 相同,但使用两个整数参数而不是一个 [Vector2i] 参数。" + +msgid "" "Returns the color of the pixel at [param point].\n" "This is the same as [method get_pixel], but with a [Vector2i] argument " "instead of two integer arguments." @@ -38962,9 +53179,22 @@ msgstr "" "返回 [param point] 处像素的颜色。\n" "这与 [method get_pixel] 相同,只是用一个 [Vector2i] 参数代替了两个整数参数。" +msgid "" +"Returns a new [Image] that is a copy of this [Image]'s area specified with " +"[param region]." +msgstr "" +"返回一个新的 [Image],它是使用 [param region] 指定的该 [Image] 区域的副本。" + msgid "Returns the image's size (width and height)." msgstr "返回图像的大小(宽度和高度)。" +msgid "" +"Returns a [Rect2i] enclosing the visible portion of the image, considering " +"each pixel with a non-zero alpha channel as visible." +msgstr "" +"返回一个包含该图像可见部分的 [Rect2i],将具有非零 alpha 通道的每个像素视为可" +"见。" + msgid "Returns the image's width." msgstr "返回图像的宽度。" @@ -39009,6 +53239,9 @@ msgstr "" "[b]注意:[/b]Godot 的 BMP 模块不支持 16 位像素的图像。只支持 1 位、4 位、8 " "位、24 位和 32 位像素的图像。" +msgid "Creates a new [Image] and loads data from the specified file." +msgstr "创建一个新的 [Image] 并从指定文件加载数据。" + msgid "Loads an image from the binary contents of a JPEG file." msgstr "从 JPEG 文件的二进制内容加载图像。" @@ -39022,13 +53255,30 @@ msgid "Loads an image from the binary contents of a WebP file." msgstr "从 WebP 文件的二进制内容加载图像。" msgid "" +"Converts the image's data to represent coordinates on a 3D plane. This is " +"used when the image represents a normal map. A normal map can add lots of " +"detail to a 3D surface without increasing the polygon count." +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[/" +"将颜色值与 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 " +"Interpolation] constants." +msgstr "" +"将该图像的宽度调整为 [param width]、高度调整为 [param height]。新的像素使用 " +"[param interpolation] 插值模式计算,插值模式由 [enum Interpolation] 常量定" +"义。" + +msgid "" "Resizes the image to the nearest power of 2 for the width and height. If " "[param square] is [code]true[/code] then set width and height to be the " "same. New pixels are calculated using the [param interpolation] mode defined " @@ -39043,6 +53293,20 @@ msgid "" msgstr "将标准 RGBE(红绿蓝指数)图像转换为 sRGB 图像。" msgid "" +"Rotates the image by [code]180[/code] degrees. The width and height of the " +"image must be greater than [code]1[/code]." +msgstr "" +"将该图像旋转 [code]180[/code] 度。该图像的宽度和高度必须大于 [code]1[/code]。" + +msgid "" +"Rotates the image in the specified [param direction] by [code]90[/code] " +"degrees. The width and height of the image must be greater than [code]1[/" +"code]. If the width and height are not equal, the image will be resized." +msgstr "" +"将该图像按照 [param direction] 指定的方向旋转 [code]90[/code] 度。该图像的宽" +"度和高度必须大于 [code]1[/code]。如果宽和高不相等,则会调整图像的大小。" + +msgid "" "Saves the image as an EXR file to [param path]. If [param grayscale] is " "[code]true[/code] and the image has only one channel, it will be saved " "explicitly as monochrome rather than one red channel. This function will " @@ -39076,6 +53340,74 @@ msgstr "" "save_exr] 从导出的项目中被调用时将返回一个空字节数组。" msgid "" +"Saves the image as a JPEG file to [param path] with the specified [param " +"quality] between [code]0.01[/code] and [code]1.0[/code] (inclusive). Higher " +"[param quality] values result in better-looking output at the cost of larger " +"file sizes. Recommended [param quality] values are between [code]0.75[/code] " +"and [code]0.90[/code]. Even at quality [code]1.00[/code], JPEG compression " +"remains lossy.\n" +"[b]Note:[/b] JPEG does not save an alpha channel. If the [Image] contains an " +"alpha channel, the image will still be saved, but the resulting JPEG file " +"won't contain the alpha channel." +msgstr "" +"将该图像作为 JPEG 文件保存到 [param path],指定的 [param quality] 介于 " +"[code]0.01[/code] 和 [code]1.0[/code](包括)之间。更高的 [param quality] 值" +"会以更大的文件大小为代价产生更好看的输出。推荐的 [param quality] 值介于 " +"[code]0.75[/code] 和 [code]0.90[/code] 之间。即使质量为 [code]1.00[/code]," +"JPEG 压缩仍然是有损的。\n" +"[b]注意:[/b]JPEG 不保存 alpha 通道。如果该 [Image] 包含 alpha 通道,该图像仍" +"将被保存,但产生的 JPEG 文件将不包含 alpha 通道。" + +msgid "" +"Saves the image as a JPEG file to a byte array with the specified [param " +"quality] between [code]0.01[/code] and [code]1.0[/code] (inclusive). Higher " +"[param quality] values result in better-looking output at the cost of larger " +"byte array sizes (and therefore memory usage). Recommended [param quality] " +"values are between [code]0.75[/code] and [code]0.90[/code]. Even at quality " +"[code]1.00[/code], JPEG compression remains lossy.\n" +"[b]Note:[/b] JPEG does not save an alpha channel. If the [Image] contains an " +"alpha channel, the image will still be saved, but the resulting byte array " +"won't contain the alpha channel." +msgstr "" +"将该图像作为 JPEG 文件保存到字节数组中,指定的 [param quality] 介于 " +"[code]0.01[/code] 和 [code]1.0[/code](包括)之间。更高的 [param quality] 值" +"会以更大的字节数组大小(以及因此的内存使用)为代价产生更好看的输出。推荐的 " +"[param quality] 值介于 [code]0.75[/code] 和 [code]0.90[/code] 之间。即使质量" +"为 [code]1.00[/code],JPEG 压缩仍然是有损的。\n" +"[b]注意:[/b]JPEG 不保存 alpha 通道。如果该 [Image] 包含 alpha 通道,该图像仍" +"将被保存,但产生的字节数组将不包含 alpha 通道。" + +msgid "Saves the image as a PNG file to the file at [param path]." +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]." +msgstr "覆盖现有 [Image] 的数据。[method create_from_data] 的非静态等价物。" + +msgid "" "Sets the [Color] of the pixel at [code](x, y)[/code] to [param color].\n" "[b]Example:[/b]\n" "[codeblocks]\n" @@ -39470,6 +53802,36 @@ msgstr "" "可以压缩 RGBA 数据,使 Alpha 完全透明或完全不透明。\n" "[b]注意:[/b]创建 [ImageTexture] 时,会执行 sRGB 到线性色彩空间的转换。" +msgid "" +"[url=https://en.wikipedia.org/wiki/" +"Adaptive_scalable_texture_compression]Adaptive Scalable Texutre Compression[/" +"url]. This implements the 4x4 (high quality) mode." +msgstr "" +"[url=https://zh.wikipedia.org/wiki/" +"%E8%87%AA%E9%80%82%E5%BA%94%E5%8F%AF%E4%BC%B8%E7%BC%A9%E7%BA%B9%E7%90%86%E5%8E%8B%E7%BC%A9]" +"自适应可伸缩纹理压缩[/url]。这实现了 4x4(高质量)模式。" + +msgid "" +"Same format as [constant FORMAT_ASTC_4x4], but with the hint to let the GPU " +"know it is used for HDR." +msgstr "" +"与 [constant FORMAT_ASTC_4x4] 相同的格式,但有提示以让 GPU 知道它用于 HDR。" + +msgid "" +"[url=https://en.wikipedia.org/wiki/" +"Adaptive_scalable_texture_compression]Adaptive Scalable Texutre Compression[/" +"url]. This implements the 8x8 (low quality) mode." +msgstr "" +"[url=https://zh.wikipedia.org/wiki/" +"%E8%87%AA%E9%80%82%E5%BA%94%E5%8F%AF%E4%BC%B8%E7%BC%A9%E7%BA%B9%E7%90%86%E5%8E%8B%E7%BC%A9]" +"自适应可伸缩纹理压缩[/url]。这实现了 8x8(低质量)模式。" + +msgid "" +"Same format as [constant FORMAT_ASTC_8x8], but with the hint to let the GPU " +"know it is used for HDR." +msgstr "" +"与 [constant FORMAT_ASTC_8x8] 相同的格式,但有提示以让 GPU 知道它用于 HDR。" + msgid "Represents the size of the [enum Format] enum." msgstr "代表 [enum Format] 枚举的大小。" @@ -39559,19 +53921,192 @@ msgid "" "compressed into two channels)." msgstr "原始纹理(在压缩前)是法线纹理(例如可以压缩为两个通道)。" +msgid "" +"Hint to indicate that the high quality 4x4 ASTC compression format should be " +"used." +msgstr "表示应该使用高质量 4x4 ASTC 压缩格式的提示。" + +msgid "" +"Hint to indicate that the low quality 8x8 ASTC compression format should be " +"used." +msgstr "表示应该使用低质量 8x8 ASTC 压缩格式的提示。" + +msgid "Base class to add support for specific image formats." +msgstr "用于添加特定图像格式支持的基类。" + +msgid "" +"The engine supports multiple image formats out of the box (PNG, SVG, JPEG, " +"WebP to name a few), but you can choose to implement support for additional " +"image formats by extending [ImageFormatLoaderExtension]." +msgstr "" +"该引擎支持多种开箱即用的图像格式(PNG、SVG、JPEG、WebP 等),但也可以选择通过" +"扩展 [ImageFormatLoaderExtension],来实现对其他图像格式的支持。" + +msgid "" +"Base class for creating [ImageFormatLoader] extensions (adding support for " +"extra image formats)." +msgstr "用于创建 [ImageFormatLoader] 扩展的基类(添加对额外图像格式的支持)。" + +msgid "" +"The engine supports multiple image formats out of the box (PNG, SVG, JPEG, " +"WebP to name a few), but you can choose to implement support for additional " +"image formats by extending this class.\n" +"Be sure to respect the documented return types and values. You should create " +"an instance of it, and call [method add_format_loader] to register that " +"loader during the initialization phase." +msgstr "" +"该引擎支持多种开箱即用的图像格式(PNG、SVG、JPEG、WebP 等),但也可以选择通过" +"扩展该类,来实现对其他图像格式的支持。\n" +"请务必遵守文档中的返回类型和值。应该创建它的一个实例,并在初始化阶段调用 " +"[method add_format_loader] 来注册该加载器。" + +msgid "" +"Returns the list of file extensions for this image format. Files with the " +"given extensions will be treated as image file and loaded using this class." +msgstr "" +"返回该图像格式的文件扩展名列表。具有给定扩展名的文件将被视为图像文件并使用该" +"类加载。" + +msgid "" +"Loads the content of [param fileaccess] into the provided [param image]." +msgstr "将 [param fileaccess] 的内容加载至提供的 [param image]。" + +msgid "" +"Add this format loader to the engine, allowing it to recognize the file " +"extensions returned by [method _get_recognized_extensions]." +msgstr "" +"将这个格式加载器添加至引擎,使其能够识别 [method _get_recognized_extensions] " +"返回的文件扩展名。" + +msgid "Remove this format loader from the engine." +msgstr "从引擎中移除这个格式加载器。" + msgid "A [Texture2D] based on an [Image]." msgstr "基于 [Image] 的 [Texture2D]。" +msgid "" +"A [Texture2D] based on an [Image]. For an image to be displayed, an " +"[ImageTexture] has to be created from it using the [method " +"create_from_image] method:\n" +"[codeblock]\n" +"var image = Image.load_from_file(\"res://icon.svg\")\n" +"var texture = ImageTexture.create_from_image(image)\n" +"$Sprite2D.texture = texture\n" +"[/codeblock]\n" +"This way, textures can be created at run-time by loading images both from " +"within the editor and externally.\n" +"[b]Warning:[/b] Prefer to load imported textures with [method @GDScript." +"load] over loading them from within the filesystem dynamically with [method " +"Image.load], as it may not work in exported projects:\n" +"[codeblock]\n" +"var texture = load(\"res://icon.svg\")\n" +"$Sprite2D.texture = texture\n" +"[/codeblock]\n" +"This is because images have to be imported as a [CompressedTexture2D] first " +"to be loaded with [method @GDScript.load]. If you'd still like to load an " +"image file just like any other [Resource], import it as an [Image] resource " +"instead, and then load it normally using the [method @GDScript.load] " +"method.\n" +"[b]Note:[/b] The image can be retrieved from an imported texture using the " +"[method Texture2D.get_image] method, which returns a copy of the image:\n" +"[codeblock]\n" +"var texture = load(\"res://icon.svg\")\n" +"var image: Image = texture.get_image()\n" +"[/codeblock]\n" +"An [ImageTexture] is not meant to be operated from within the editor " +"interface directly, and is mostly useful for rendering images on screen " +"dynamically via code. If you need to generate images procedurally from " +"within the editor, consider saving and importing images as custom texture " +"resources implementing a new [EditorImportPlugin].\n" +"[b]Note:[/b] The maximum texture size is 16384×16384 pixels due to graphics " +"hardware limitations." +msgstr "" +"基于 [Image] 的 [Texture2D]。对于图像的显示,必须使用 [method " +"create_from_image] 方法从中创建一个 [ImageTexture]:\n" +"[codeblock]\n" +"var image = Image.load_from_file(\"res://icon.svg\")\n" +"var texture = ImageTexture.create_from_image(image)\n" +"$Sprite2D.texture = texture\n" +"[/codeblock]\n" +"这样,可以在运行时通过从编辑器内部和外部加载图像来创建纹理。\n" +"[b]警告:[/b]最好使用 [method @GDScript.load] 加载导入的纹理,而不是使用 " +"[method Image.load] 从文件系统中动态加载它们,因为后者可能不适用于导出的项" +"目:\n" +"[codeblock]\n" +"var texture = load(\"res://icon.svg\")\n" +"$Sprite2D.texture = texture\n" +"[/codeblock]\n" +"这是因为图像必须首先作为 [CompressedTexture2D] 导入,然后才能使用 [method " +"@GDScript.load] 加载。如果仍想像加载任何其他 [Resource] 一样加载图像文件,请" +"将其导入为 [Image] 资源,然后使用 [method @GDScript.load] 方法正常加载它。\n" +"[b]注意:[/b]可以使用 [method Texture2D.get_image] 方法从导入的纹理中检索该图" +"像,该方法返回该图像的副本:\n" +"[codeblock]\n" +"var texture = load(\"res://icon.svg\")\n" +"var image: Image = texture.get_image()\n" +"[/codeblock]\n" +"[ImageTexture] 并不意味着直接在编辑器界面中进行操作,主要用于通过代码在屏幕上" +"动态渲染图像。如果需要从编辑器中按程序生成图像,请考虑实现一个新的 " +"[EditorImportPlugin],将图像保存和导入为自定义纹理资源。\n" +"[b]注意:[/b]由于图形硬件限制,最大纹理大小为 16384×16384 像素。" + +msgid "" +"Creates a new [ImageTexture] and initializes it by allocating and setting " +"the data from an [Image]." +msgstr "" +"创建一个新的 [ImageTexture],并通过分配和设置来自 [Image] 的数据来初始化它。" + msgid "Returns the format of the texture, one of [enum Image.Format]." msgstr "返回纹理的格式,[enum Image.Format] 之一。" +msgid "" +"Replaces the texture's data with a new [Image]. This will re-allocate new " +"memory for the texture.\n" +"If you want to update the image, but don't need to change its parameters " +"(format, size), use [method update] instead for better performance." +msgstr "" +"用新的 [Image] 替换该纹理的数据。这将为该纹理重新分配新内存。\n" +"如果要更新图像,但不需要更改其参数(格式、大小),请改用 [method update] 以获" +"得更好的性能。" + msgid "Resizes the texture to the specified dimensions." msgstr "将纹理的大小调整为指定的尺寸。" +msgid "" +"Replaces the texture's data with a new [Image].\n" +"[b]Note:[/b] The texture has to be created using [method create_from_image] " +"or initialized first with the [method set_image] method before it can be " +"updated. The new image dimensions, format, and mipmaps configuration should " +"match the existing texture's image configuration.\n" +"Use this method over [method set_image] if you need to update the texture " +"frequently, which is faster than allocating additional memory for a new " +"texture each time." +msgstr "" +"用新的 [Image] 替换该纹理的数据。\n" +"[b]注意:[/b]该纹理必须使用 [method create_from_image] 创建、或首先使用 " +"[method set_image] 方法初始化,然后才能更新。新的图像大小、格式和 mipmaps 配" +"置,应与现有纹理的图像配置相匹配。\n" +"如果需要频繁更新纹理,请使用该方法而不是 [method set_image],这比每次为一个新" +"纹理分配额外内存要快。" + msgid "Texture with 3 dimensions." msgstr "具有 3 个维度的纹理。" msgid "" +"[ImageTexture3D] is a 3-dimensional [ImageTexture] that has a width, height, " +"and depth. See also [ImageTextureLayered].\n" +"3D textures are typically used to store density maps for [FogMaterial], " +"color correction LUTs for [Environment], vector fields for " +"[GPUParticlesAttractorVectorField3D] and collision maps for " +"[GPUParticlesCollisionSDF3D]. 3D textures can also be used in custom shaders." +msgstr "" +"[ImageTexture3D] 是一种具有宽度、高度、和深度的三维 [ImageTexture]。另请参阅 " +"[ImageTextureLayered]。\n" +"3D 纹理通常用于存储 [FogMaterial] 的密度图、[Environment] 的色彩校正 LUT、" +"[GPUParticlesAttractorVectorField3D] 的矢量场、和 " +"[GPUParticlesCollisionSDF3D] 的碰撞图。3D 纹理也可用于自定义着色器。" + +msgid "" "Creates the [ImageTexture3D] with specified [param width], [param height], " "and [param depth]. See [enum Image.Format] for [param format] options. If " "[param use_mipmaps] is [code]true[/code], then generate mipmaps for the " @@ -39583,6 +54118,31 @@ msgstr "" "Mipmaps。" msgid "" +"Replaces the texture's existing data with the layers specified in " +"[code]data[/code]. The size of [code]data[/code] must match the parameters " +"that were used for [method create]. In other words, the texture cannot be " +"resized or have its format changed by calling [method update]." +msgstr "" +"将纹理的现有数据替换为 [code]data[/code] 中指定的图层。[code]data[/code] 的大" +"小必须与用于 [method create] 的参数一致。换句话说,不能通过调用 [method " +"update] 来调整纹理的大小或改变其格式。" + +msgid "" +"Base class for texture types which contain the data of multiple " +"[ImageTexture]s. Each image is of the same size and format." +msgstr "" +"纹理类型的基类,包含多个 [ImageTexture] 的数据。各个图像具有相同的大小和格" +"式。" + +msgid "" +"Base class for [Texture2DArray], [Cubemap] and [CubemapArray]. Cannot be " +"used directly, but contains all the functions necessary for accessing the " +"derived resource types. See also [Texture3D]." +msgstr "" +"[Texture2DArray]、[Cubemap] 和 [CubemapArray] 的基类。不能直接使用,但包含了" +"访问派生资源类型所需的所有函数。另请参阅 [Texture3D]。" + +msgid "" "Creates an [ImageTextureLayered] from an array of [Image]s. See [method " "Image.create] for the expected data format. The first image decides the " "width, height, image format and mipmapping setting. The other images " @@ -39595,9 +54155,68 @@ msgstr "" "其他图像[i]必须[/i]具有相同的宽度、高度、图像格式和 mipmapping 设置。\n" "每个 [Image] 代表一个 [code]layer[/code]。" +msgid "" +"Replaces the existing [Image] data at the given [code]layer[/code] with this " +"new image.\n" +"The given [Image] must have the same width, height, image format and " +"mipmapping setting (a [code]bool[/code] value) 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 "" +"用这个新图像替换给定 [code]layer[/code] 的现有 [Image] 数据。\n" +"给定的 [Image] 必须与其他引用的图像具有相同的宽度、高度、图像格式和 " +"mipmapping 设置([code]bool[/code] 值)。\n" +"如果图像格式不受支持,它将被解压缩并转换为一个相似且受支持的 [enum Image." +"Format]。\n" +"更新是即时的:它与绘制同步。" + +msgid "Mesh optimized for creating geometry manually." +msgstr "为手动创建几何体,而优化的网格。" + +msgid "" +"Mesh optimized for creating geometry manually, similar to OpenGL1.x " +"immediate mode." +msgstr "为手动创建几何体,而优化的网格,类似于 OpenGL1.x 即时模式。" + msgid "Clear all surfaces." msgstr "清除所有表面。" +msgid "Add a 3D vertex using the current attributes previously set." +msgstr "使用先前设置的当前属性,添加一个 3D 顶点。" + +msgid "Add a 2D vertex using the current attributes previously set." +msgstr "使用先前设置的当前属性,添加一个 2D 顶点。" + +msgid "Begin a new surface." +msgstr "开始一个新的表面。" + +msgid "" +"End and commit current surface. Note that surface being created will not be " +"visible until this function is called." +msgstr "结束并提交当前表面。请注意,在该函数被调用之前,创建的表面将不可见。" + +msgid "Set the color attribute that will be pushed with the next vertex." +msgstr "设置将与下一个顶点一起推送的颜色属性。" + +msgid "Set the normal attribute that will be pushed with the next vertex." +msgstr "设置将与下一个顶点一起推送的法线属性。" + +msgid "Set the tangent attribute that will be pushed with the next vertex." +msgstr "设置将与下一个顶点一起推送的切线属性。" + +msgid "Set the UV attribute that will be pushed with the next vertex." +msgstr "设置将与下一个顶点一起推送的 UV 属性。" + +msgid "Set the UV2 attribute that will be pushed with the next vertex." +msgstr "设置将与下一个顶点一起推送的 UV2 属性。" + +msgid "" +"A [Resource] that contains vertex array-based geometry during the import " +"process." +msgstr "在导入过程中,包含基于顶点数组的几何体的 [Resource]。" + msgid "" "ImporterMesh is a type of [Resource] analogous to [ArrayMesh]. It contains " "vertex array-based geometry, divided in [i]surfaces[/i]. Each surface " @@ -39619,11 +54238,102 @@ msgstr "" "每个表面调用 [method add_surface]。" msgid "" +"Adds name for a blend shape that will be added with [method add_surface]. " +"Must be called before surface is added." +msgstr "" +"为将使用 [method add_surface] 添加的混合形状添加名称。必须在表面被添加之前调" +"用。" + +msgid "Removes all surfaces and blend shapes from this [ImporterMesh]." +msgstr "从该 [ImporterMesh] 中,移除所有表面和混合形状。" + +msgid "" +"Generates all lods for this ImporterMesh.\n" +"[param normal_merge_angle] and [param normal_split_angle] are in degrees and " +"used in the same way as the importer settings in [code]lods[/code]. As a " +"good default, use 25 and 60 respectively.\n" +"The number of generated lods can be accessed using [method " +"get_surface_lod_count], and each LOD is available in [method " +"get_surface_lod_size] and [method get_surface_lod_indices].\n" +"[param bone_transform_array] is an [Array] which can be either empty or " +"contain [Transform3D]s which, for each of the mesh's bone IDs, will apply " +"mesh skinning when generating the LOD mesh variations. This is usually used " +"to account for discrepancies in scale between the mesh itself and its " +"skinning data." +msgstr "" +"为这个 ImporterMesh 生成所有 lod。\n" +"[param normal_merge_angle] 和 [param normal_split_angle] 以度为单位,并以与 " +"[code]lods[/code] 中的导入器设置相同的方式使用。作为一个好的默认值,分别使用 " +"25 和 60。\n" +"生成的 LOD 的数量可以使用 [method get_surface_lod_count] 访问,并且每个 LOD " +"在 [method get_surface_lod_size] 和 [method get_surface_lod_indices] 中可" +"用。\n" +"[param bone_transform_array] 是一个 [Array],可以是空的,也可以包含" +"[Transform3D],对于每个网格的骨骼 ID,在生成 LOD 网格变化时将应用网格蒙皮。这" +"通常用于解释网格本身与其蒙皮数据之间的缩放差异。" + +msgid "Returns the number of blend shapes that the mesh holds." +msgstr "返回该网格包含的混合形状的数量。" + +msgid "Returns the blend shape mode for this Mesh." +msgstr "返回该网格的混合形状模式。" + +msgid "Returns the size hint of this mesh for lightmap-unwrapping in UV-space." +msgstr "返回该网格的大小提示,用于在 UV 空间中展开光照贴图。" + +msgid "" +"Returns the mesh data represented by this [ImporterMesh] as a usable " +"[ArrayMesh].\n" +"This method caches the returned mesh, and subsequent calls will return the " +"cached data until [method clear] is called.\n" +"If not yet cached and [param base_mesh] is provided, [param base_mesh] will " +"be used and mutated." +msgstr "" +"将该 [ImporterMesh] 表示的网格数据作为一个可用的 [ArrayMesh] 返回。\n" +"这个方法缓存了返回的网格,后续的调用将返回缓存的数据,直到 [method clear] 被" +"调用。\n" +"如果还没有缓存并且提供了 [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." +msgstr "为一个表面请求的混合形状索引,返回一组混合形状数组。" + +msgid "Returns the number of surfaces that the mesh holds." +msgstr "返回该网格拥有的表面数。" + +msgid "Returns the format of the surface that the mesh holds." +msgstr "返回该网格拥有的表面的格式。" + +msgid "Returns the number of lods that the mesh holds on a given surface." +msgstr "返回该网格在给定表面上保留的 lod 数。" + +msgid "Returns the index buffer of a lod for a surface." +msgstr "返回表面的 lod 的索引缓冲区。" + +msgid "Returns the screen ratio which activates a lod for a surface." +msgstr "返回为一个表面激活 lod 的屏幕比率。" + +msgid "" "Returns a [Material] in a given surface. Surface is rendered using this " "material." msgstr "返回给定面的 [Material] 材质。面将由该材质来渲染。" msgid "" +"Returns the primitive type of the requested surface (see [method " +"add_surface])." +msgstr "返回所请求表面的基元类型(参见 [method add_surface])。" + +msgid "Sets the size hint of this mesh for lightmap-unwrapping in UV-space." +msgstr "设置该网格的大小提示,以便在 UV 空间中展开光照贴图。" + +msgid "" "Sets a [Material] for a given surface. Surface will be rendered using this " "material." msgstr "设置给定面的 [Material] 材质。该面将会使用此材质渲染。" @@ -39683,6 +54393,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 iOS, Android, and UWP. On other " +"platforms, it always returns [constant Vector3.ZERO]." +msgstr "" +"如果设备有加速度计传感器,则返回该设备加速度计传感器的加速度,单位为 m/s²。否" +"则,该方法返回 [constant Vector3.ZERO]。\\\n" +"请注意,即使你的设备具有一个加速度计,在从编辑器运行时,该方法也会返回一个空" +"的 [Vector3]。必须将项目导出到一个支持的设备上,才能从加速度计读取值。\n" +"[b]注意:[/b]该方法仅适用于 iOS、Android 和 UWP。在其他平台上,它总是返回 " +"[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 get_action_strength] instead.\n" @@ -39732,6 +54458,17 @@ msgid "Returns the currently assigned cursor shape (see [enum CursorShape])." msgstr "返回当前指定的光标形状(见 [enum CursorShape])。" msgid "" +"Returns the gravity in m/s² of the device's accelerometer 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 "" +"如果设备有加速度计传感器,则返回该设备有加速度计传感器的重力,单位为 m/s²。否" +"则,该方法返回 [constant Vector3.ZERO]。\n" +"[b]注意:[/b]该方法仅适用于 Android 和 iOS。在其他平台上,它总是返回 " +"[constant Vector3.ZERO]。" + +msgid "" "Returns the rotation rate in rad/s around a device's X, Y, and Z axes of the " "gyroscope sensor, if the device has one. Otherwise, the method returns " "[constant Vector3.ZERO].\n" @@ -39744,6 +54481,11 @@ msgstr "" "[constant Vector3.ZERO]。" msgid "" +"Returns the current value of the joypad axis at given index (see [enum " +"JoyAxis])." +msgstr "返回给定索引(参见 [enum JoyAxis])处的游戏手柄轴的当前值。" + +msgid "" "Returns a SDL2-compatible device GUID on platforms that use gamepad " "remapping. Returns [code]\"Default Gamepad\"[/code] otherwise." msgstr "" @@ -39762,6 +54504,14 @@ msgid "" msgstr "返回手柄振动的强度:x 是弱马达的强度,y 是强马达的强度。" msgid "" +"Returns the last mouse velocity. To provide a precise and jitter-free " +"velocity, mouse velocity is only calculated every 0.1s. Therefore, mouse " +"velocity will lag mouse movements." +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" @@ -39774,6 +54524,14 @@ msgstr "" "[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 " +"DisplayServer.mouse_get_button_state]." +msgstr "" +"将鼠标按键作为一个位掩码返回。如果多个鼠标按钮同时被按下,则这些位将被加在一" +"起。相当于 [method DisplayServer.mouse_get_button_state]。" + +msgid "" "Gets an input vector by specifying four actions for the positive and " "negative X and Y axes.\n" "This method is useful when getting vector input, such as from a joystick, " @@ -39855,6 +54613,93 @@ msgstr "" "《输入示例》[/url]。" 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 " +"simulated via code by calling [method action_press]." +msgstr "" +"如果任何动作、按键、游戏手柄按钮、或鼠标按钮正被按下,则返回 [code]true[/" +"code]。如果动作是通过调用 [method action_press] 以通过代码来模拟,该方法也将" +"返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if you are pressing the joypad button (see [enum " +"JoyButton])." +msgstr "" +"如果游戏手柄按钮(参见 [enum JoyButton])正被按下,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the system knows the specified device. This " +"means that it sets all button and axis indices. Unknown joypads are not " +"expected to match these constants, but you can still retrieve events from " +"them." +msgstr "" +"如果系统知道指定的设备,则返回 [code]true[/code]。这意味着它设置了所有按钮和" +"轴索引。未知的游戏手柄预计不会匹配这些常量,但仍然可以从中检索事件。" + +msgid "" +"Returns [code]true[/code] if you are pressing the key with the [param " +"keycode] printed on it. You can pass a [enum Key] constant or any Unicode " +"character code." +msgstr "" +"如果正按下印有 [param keycode] 的键,则返回 [code]true[/code]。可以传递一个 " +"[enum Key] 常量或任何 Unicode 字符代码。" + +msgid "" +"Returns [code]true[/code] if you are pressing the Latin key in the current " +"keyboard layout. You can pass a [enum Key] constant.\n" +"[method is_key_pressed] is only recommended over [method " +"is_physical_key_pressed] in non-game applications. This ensures that " +"shortcut keys behave as expected depending on the user's keyboard layout, as " +"keyboard shortcuts are generally dependent on the keyboard layout in non-" +"game applications. If in doubt, use [method is_physical_key_pressed].\n" +"[b]Note:[/b] Due to keyboard ghosting, [method is_key_pressed] may return " +"[code]false[/code] even if one of the action's keys is pressed. See " +"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input " +"examples[/url] in the documentation for more information." +msgstr "" +"如果在当前键盘布局中正在按该拉丁键,则返回 [code]true[/code]。可以传递一个 " +"[enum Key] 常量。\n" +"只有在非游戏应用程序中,才推荐使用 [method is_key_pressed] 而不是 [method " +"is_physical_key_pressed]。这可确保快捷键将根据用户的键盘布局按预期运行,因为" +"在非游戏应用程序中,键盘快捷键通常取决于键盘布局。如有疑问,请使用 [method " +"is_physical_key_pressed]。\n" +"[b]注意:[/b]由于键盘重影,即使按下动作的某个键,[method is_key_pressed] 也有" +"可能会返回 [code]false[/code]。有关详细信息,请参阅文档中的[url=$DOCS_URL/" +"tutorials/inputs/input_examples.html#keyboard-events]《输入示例》[/url]。" + +msgid "" +"Returns [code]true[/code] if you are pressing the mouse button specified " +"with [enum MouseButton]." +msgstr "" +"如果正在按下由 [enum MouseButton] 指定的鼠标按钮,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if you are pressing the key in the physical " +"location on the 101/102-key US QWERTY keyboard. You can pass a [enum Key] " +"constant.\n" +"[method is_physical_key_pressed] is recommended over [method is_key_pressed] " +"for in-game actions, as it will make [kbd]W[/kbd]/[kbd]A[/kbd]/[kbd]S[/kbd]/" +"[kbd]D[/kbd] layouts work regardless of the user's keyboard layout. [method " +"is_physical_key_pressed] will also ensure that the top row number keys work " +"on any keyboard layout. If in doubt, use [method is_physical_key_pressed].\n" +"[b]Note:[/b] Due to keyboard ghosting, [method is_physical_key_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 "" +"如果正按下 101/102 键美式 QWERTY 键盘物理位置上的键,则返回 [code]true[/" +"code]。可以传递一个 [enum Key] 常量。\n" +"与 [method is_key_pressed] 相比,[method is_physical_key_pressed] 被推荐用于" +"游戏内的动作,因为无论用户的键盘布局如何,它都会使 [kbd]W[/kbd]/[kbd]A[/kbd]/" +"[kbd]S[/kbd]/[kbd]D[/kbd] 布局有效。[method is_physical_key_pressed] 还将确保" +"顶行数字键在任何键盘布局上有效。如有疑问,请使用 [method " +"is_physical_key_pressed]。\n" +"[b]注意:[/b]由于键盘重影,即使按下动作的某个键,[method " +"is_physical_key_pressed] 也有可能会返回 [code]false[/code]。有关详细信息,请" +"参阅文档中的[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-" +"events]《输入示例》[/url]。" + +msgid "" "Feeds an [InputEvent] to the game. Can be used to artificially trigger input " "events from code. Also generates [method Node._input] calls.\n" "[b]Example:[/b]\n" @@ -40003,6 +54848,30 @@ msgstr "" "建议重新启动效果。" msgid "" +"Stops the vibration of the joypad started with [method start_joy_vibration]." +msgstr "停止使用 [method start_joy_vibration] 启动的游戏手柄的振动。" + +msgid "" +"Vibrate the handheld device for the specified duration in milliseconds.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, and Web. It has no " +"effect on other platforms.\n" +"[b]Note:[/b] For Android, [method vibrate_handheld] requires enabling the " +"[code]VIBRATE[/code] permission in the export preset. Otherwise, [method " +"vibrate_handheld] will have no effect.\n" +"[b]Note:[/b] For iOS, specifying the duration is only supported in iOS 13 " +"and later.\n" +"[b]Note:[/b] Some web browsers such as Safari and Firefox for Android do not " +"support [method vibrate_handheld]." +msgstr "" +"使手持设备振动指定的持续时间,单位为毫秒。\n" +"[b]注意:[/b]该方法在 Android、iOS 和 Web 上实现。它对其他平台没有影响。\n" +"[b]注意:[/b]对于 Android,[method vibrate_handheld] 需要在导出预设中启用 " +"[code]VIBRATE[/code] 权限。否则,[method vibrate_handheld] 将无效。\n" +"[b]注意:[/b]对于 iOS,仅 iOS 13 及更高版本支持指定持续时间。\n" +"[b]注意:[/b] 某些网络浏览器,如 Safari 和 Android 版的 Firefox 不支持 " +"[method vibrate_handheld]。" + +msgid "" "Sets the mouse position to the specified vector, provided in pixels and " "relative to an origin at the upper left corner of the currently focused " "Window Manager game window.\n" @@ -40023,6 +54892,27 @@ msgstr "" msgid "Controls the mouse mode. See [enum MouseMode] for more information." msgstr "控制鼠标模式。详情请参阅 [enum MouseMode]。" +msgid "" +"If [code]true[/code], similar input events sent by the operating system are " +"accumulated. When input accumulation is enabled, all input events generated " +"during a frame will be merged and emitted when the frame is done rendering. " +"Therefore, this limits the number of input method calls per second to the " +"rendering FPS.\n" +"Input accumulation can be disabled to get slightly more precise/reactive " +"input at the cost of increased CPU usage. In applications where drawing " +"freehand lines is required, input accumulation should generally be disabled " +"while the user is drawing the line to get results that closely follow the " +"actual input.\n" +"[b]Note:[/b] Input accumulation is [i]enabled[/i] by default." +msgstr "" +"如果为 [code]true[/code],则操作系统发送的相似输入事件将被累积。当输入累积被" +"启用时,在帧期间内所有生成的输入事件,将在帧完成渲染时被合并并发出。因此,这" +"会将每秒输入方法被调用的数量限制为渲染 FPS。\n" +"输入累积可以被禁用,以增加 CPU 使用率为代价,获得稍微更具精确性/反应性的输" +"入。在需要徒手绘制线条的应用程序中,输入累积通常应在用户绘制线条时被禁用,以" +"获得与实际输入非常接近的结果。\n" +"[b]注意:[/b]输入累积默认是[i]启用的[/i] 。" + msgid "Emitted when a joypad device has been connected or disconnected." msgstr "连接或断开游戏手柄设备时触发。" @@ -40061,6 +54951,15 @@ msgstr "" "中仍然可以使用。" msgid "" +"Drag cursor. Usually displayed when dragging something.\n" +"[b]Note:[/b] Windows lacks a dragging cursor, so [constant CURSOR_DRAG] is " +"the same as [constant CURSOR_MOVE] for this platform." +msgstr "" +"拖动光标。通常在拖动某物时显示。\n" +"[b]注意:[/b]Windows 上没有拖动光标,因此 [constant CURSOR_DRAG] 与该平台的 " +"[constant CURSOR_MOVE] 相同。" + +msgid "" "Can drop cursor. Usually displayed when dragging something to indicate that " "it can be dropped at the current position." msgstr "可以放下的光标。通常在拖动东西时显示,表示可以在当前位置放下。" @@ -40240,6 +55139,32 @@ msgstr "" "事件的方向。" msgid "" +"Returns [code]true[/code] if this input event is pressed. Not relevant for " +"events of type [InputEventMouseMotion] or [InputEventScreenDrag].\n" +"[b]Note:[/b] Due to keyboard ghosting, [method is_pressed] may return " +"[code]false[/code] even if one of the action's keys is pressed. See " +"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input " +"examples[/url] in the documentation for more information." +msgstr "" +"如果该输入事件被按下,则返回 [code]true[/code]。与 [InputEventMouseMotion] " +"或 [InputEventScreenDrag] 类型的事件无关。\n" +"[b]注意:[/b]由于键盘重影,即使按下动作的某个键,[method is_pressed] 也有可能" +"会返回 [code]false[/code]。有关详细信息,请参阅文档中的[url=$DOCS_URL/" +"tutorials/inputs/input_examples.html#keyboard-events]《输入示例》[/url]。" + +msgid "" +"Returns a copy of the given input event which has been offset by [param " +"local_ofs] and transformed by [param xform]. Relevant for events of type " +"[InputEventMouseButton], [InputEventMouseMotion], [InputEventScreenTouch], " +"[InputEventScreenDrag], [InputEventMagnifyGesture] and " +"[InputEventPanGesture]." +msgstr "" +"返回给定输入事件的副本,该副本已被 [param local_ofs] 偏移并被 [param xform] " +"变换。与 [InputEventMouseButton]、[InputEventMouseMotion]、" +"[InputEventScreenTouch]、[InputEventScreenDrag]、[InputEventMagnifyGesture]、" +"和 [InputEventPanGesture] 类型的事件相关。" + +msgid "" "The event's device ID.\n" "[b]Note:[/b] This device ID will always be [code]-1[/code] for emulated " "mouse input from a touchscreen. This can be used to distinguish emulated " @@ -40252,6 +55177,25 @@ msgstr "" msgid "Input event type for actions." msgstr "动作的输入事件类型。" +msgid "" +"Contains a generic action which can be targeted from several types of " +"inputs. Actions can be created from the [b]Input Map[/b] tab in the " +"[b]Project > Project Settings[/b] menu. See [method Node._input].\n" +"[b]Note:[/b] Unlike the other [InputEvent] subclasses which map to unique " +"physical events, this virtual one is not emitted by the engine. This class " +"is useful to emit actions manually with [method Input.parse_input_event], " +"which are then received in [method Node._input]. To check if a physical " +"event matches an action from the Input Map, use [method InputEvent." +"is_action] and [method InputEvent.is_action_pressed]." +msgstr "" +"包含可以从多种类型的输入中定位的一个通用动作。动作可以从[b]项目 > 项目设置[/" +"b]菜单中的[b]输入映射[/b]选项卡创建。参见 [method Node._input]。\n" +"[b]注意:[/b]与映射到唯一物理事件的其他 [InputEvent] 子类不同,这个虚拟事件不" +"是由引擎发出的。该类可用于使用 [method Input.parse_input_event] 手动发出动" +"作,然后在 [method Node._input] 中接收这些动作。要检查物理事件是否与输入映射" +"中的动作匹配,请使用 [method InputEvent.is_action] 和 [method InputEvent." +"is_action_pressed]。" + msgid "InputEvent: Actions" msgstr "InputEvent:动作" @@ -40296,6 +55240,9 @@ msgstr "" "游戏手柄按钮的输入事件类型。对于游戏手柄模拟摇杆和操纵杆,请参阅 " "[InputEventJoypadMotion]。" +msgid "Button identifier. One of the [enum JoyButton] button constants." +msgstr "按钮标识符。[enum JoyButton] 按钮常量之一。" + msgid "" "If [code]true[/code], the button's state is pressed. If [code]false[/code], " "the button's state is released." @@ -40338,6 +55285,22 @@ msgid "Input event type for keyboard events." msgstr "键盘事件的输入事件类型。" msgid "" +"Stores key presses on the keyboard. Supports key presses, key releases and " +"[member echo] events.\n" +"[b]Note:[/b] Events received from the keyboard usually have all properties " +"set. Event mappings should have only one of the [member keycode], [member " +"physical_keycode] or [member unicode] set.\n" +"When events are compared, properties are checked in the following priority - " +"[member keycode], [member physical_keycode] and [member unicode], events " +"with the first matching value will be considered equal." +msgstr "" +"存储键盘上的按键操作。支持键按下、键释放和 [member echo] 事件。\n" +"[b]注意:[/b]从键盘上接收的事件通常设置了所有属性。事件映射应该只有 [member " +"keycode]、[member physical_keycode]、或 [member unicode] 集之一。\n" +"当事件被比较时,将按以下优先级检查属性——[member keycode]、[member " +"physical_keycode] 和 [member unicode],具有第一个匹配值的事件将被视为相等。" + +msgid "" "Returns a [String] representation of the event's [member key_label] and " "modifiers." msgstr "返回该事件 [member key_label] 及修饰键的 [String] 字符串表示。" @@ -40381,6 +55344,20 @@ msgstr "" "[code]event[/code] 是 [InputEventKey]。" msgid "" +"Returns the physical keycode combined with modifier keys such as [kbd]Shift[/" +"kbd] or [kbd]Alt[/kbd]. See also [InputEventWithModifiers].\n" +"To get a human-readable representation of the [InputEventKey] with " +"modifiers, use [code]OS.get_keycode_string(event." +"get_physical_keycode_with_modifiers())[/code] where [code]event[/code] is " +"the [InputEventKey]." +msgstr "" +"返回与诸如 [kbd]Shift[/kbd] 或 [kbd]Alt[/kbd] 的修饰键组合的物理键码。另请参" +"阅 [InputEventWithModifiers]。\n" +"要获得带有修饰符的 [InputEventKey] 的人类可读表示,请使用 [code]OS." +"get_keycode_string(event.get_physical_keycode_with_modifiers())[/code],其中 " +"[code]event[/code] 是 [InputEventKey]。" + +msgid "" "If [code]true[/code], the key was already pressed before this event. It " "means the user is holding the key down." msgstr "" @@ -40388,6 +55365,35 @@ msgstr "" "键。" msgid "" +"Represents the localized label printed on the key in the current keyboard " +"layout, which corresponds to one of the [enum Key] constants or any valid " +"Unicode character.\n" +"For keyboard layouts with a single label on the key, it is equivalent to " +"[member keycode].\n" +"To get a human-readable representation of the [InputEventKey], use [code]OS." +"get_keycode_string(event.key_label)[/code] where [code]event[/code] is the " +"[InputEventKey].\n" +"[codeblock]\n" +" +-----+ +-----+\n" +" | Q | | Q | - \"Q\" - keycode\n" +" | Й | | ض | - \"Й\" and \"ض\" - key_label\n" +" +-----+ +-----+\n" +"[/codeblock]" +msgstr "" +"表示当前键盘布局中印在键上的本地化标签,对应于 [enum Key] 常量之一或任何有效" +"的 Unicode 字符。\n" +"对于键上只有一个标签的键盘布局,它等同于 [member keycode]。\n" +"要获得 [InputEventKey] 的人类可读表示,请使用 [code]OS." +"get_keycode_string(event.key_label)[/code],其中 [code]event[/code] 是 " +"[InputEventKey]。\n" +"[codeblock]\n" +" +-----+ +-----+\n" +" | Q | | Q | - \"Q\" - keycode\n" +" | Й | | ض | - \"Й\" and \"ض\" - key_label\n" +" +-----+ +-----+\n" +"[/codeblock]" + +msgid "" "Latin label printed on the key in the current keyboard layout, which " "corresponds to one of the [enum Key] constants.\n" "To get a human-readable representation of the [InputEventKey], use [code]OS." @@ -40412,15 +55418,159 @@ msgstr "" "[/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 [code]OS." +"get_keycode_string(event.keycode)[/code] where [code]event[/code] is the " +"[InputEventKey]." +msgstr "" +"表示 101/102 键美式 QWERTY 键盘上某个键的物理位置,它对应于 [enum Key] 常量之" +"一。\n" +"要获得 [InputEventKey] 的人类可读表示,请使用 [code]OS." +"get_keycode_string(event.keycode)[/code],其中 [code]event[/code] 是 " +"[InputEventKey]。" + +msgid "" "If [code]true[/code], the key's state is pressed. If [code]false[/code], the " "key's state is released." msgstr "" "如果为 [code]true[/code],按键的状态是被按下。如果为 [code]false[/code],该键" "的状态被释放。" +msgid "" +"The key Unicode character code (when relevant), shifted by modifier keys. " +"Unicode character codes for composite characters and complex scripts may not " +"be available unless IME input mode is active. See [method Window." +"set_ime_active] for more information." +msgstr "" +"按键 Unicode 字符代码(当相关时),由修饰键移动。除非 IME 输入模式处于活动状" +"态,否则复合字符和复杂文字的 Unicode 字符代码可能不可用。有关详细信息,请参" +"阅 [method Window.set_ime_active]。" + msgid "Input event for MIDI inputs." msgstr "MIDI 输入的输入事件。" +msgid "" +"InputEventMIDI allows receiving input events from MIDI devices such as a " +"piano. MIDI stands for Musical Instrument Digital Interface.\n" +"MIDI signals can be sent over a 5-pin MIDI connector or over USB, if your " +"device supports both be sure to check the settings in the device to see " +"which output it's using.\n" +"To receive input events from MIDI devices, you need to call [method OS." +"open_midi_inputs]. You can check which devices are detected using [method OS." +"get_connected_midi_inputs].\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" OS.open_midi_inputs()\n" +" print(OS.get_connected_midi_inputs())\n" +"\n" +"func _input(input_event):\n" +" if input_event is InputEventMIDI:\n" +" _print_midi_info(input_event)\n" +"\n" +"func _print_midi_info(midi_event: InputEventMIDI):\n" +" print(midi_event)\n" +" print(\"Channel \" + str(midi_event.channel))\n" +" print(\"Message \" + str(midi_event.message))\n" +" print(\"Pitch \" + str(midi_event.pitch))\n" +" print(\"Velocity \" + str(midi_event.velocity))\n" +" print(\"Instrument \" + str(midi_event.instrument))\n" +" print(\"Pressure \" + str(midi_event.pressure))\n" +" print(\"Controller number: \" + str(midi_event.controller_number))\n" +" print(\"Controller value: \" + str(midi_event.controller_value))\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" OS.OpenMidiInputs();\n" +" GD.Print(OS.GetConnectedMidiInputs());\n" +"}\n" +"\n" +"public override void _Input(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMIDI midiEvent)\n" +" {\n" +" PrintMIDIInfo(midiEvent);\n" +" }\n" +"}\n" +"\n" +"private void PrintMIDIInfo(InputEventMIDI midiEvent)\n" +"{\n" +" GD.Print(midiEvent);\n" +" GD.Print($\"Channel {midiEvent.Channel}\");\n" +" GD.Print($\"Message {midiEvent.Message}\");\n" +" GD.Print($\"Pitch {midiEvent.Pitch}\");\n" +" GD.Print($\"Velocity {midiEvent.Velocity}\");\n" +" GD.Print($\"Instrument {midiEvent.Instrument}\");\n" +" GD.Print($\"Pressure {midiEvent.Pressure}\");\n" +" GD.Print($\"Controller number: {midiEvent.ControllerNumber}\");\n" +" GD.Print($\"Controller value: {midiEvent.ControllerValue}\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Note that Godot does not currently support MIDI output, so there is no way " +"to emit MIDI signals from Godot. Only MIDI input works." +msgstr "" +"InputEventMIDI 允许从 MIDI 设备(如钢琴)接收输入事件。MIDI 代表乐器数字接口" +"(Musical Instrument Digital Interface)。\n" +"MIDI 信号可以通过 5 针 MIDI 连接器或 USB 发送,如果你的设备支持这两种方式,请" +"务必检查设备中的设置以查看它使用的是哪种输出。\n" +"要从 MIDI 设备接收输入事件,需要调用 [method OS.open_midi_inputs]。可以使用 " +"[method OS.get_connected_midi_inputs] 检查检测到哪些设备。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" OS.open_midi_inputs()\n" +" print(OS.get_connected_midi_inputs())\n" +"\n" +"func _input(input_event):\n" +" if input_event is InputEventMIDI:\n" +" _print_midi_info(input_event)\n" +"\n" +"func _print_midi_info(midi_event: InputEventMIDI):\n" +" print(midi_event)\n" +" print(\"Channel \" + str(midi_event.channel))\n" +" print(\"Message \" + str(midi_event.message))\n" +" print(\"Pitch \" + str(midi_event.pitch))\n" +" print(\"Velocity \" + str(midi_event.velocity))\n" +" print(\"Instrument \" + str(midi_event.instrument))\n" +" print(\"Pressure \" + str(midi_event.pressure))\n" +" print(\"Controller number: \" + str(midi_event.controller_number))\n" +" print(\"Controller value: \" + str(midi_event.controller_value))\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" OS.OpenMidiInputs();\n" +" GD.Print(OS.GetConnectedMidiInputs());\n" +"}\n" +"\n" +"public override void _Input(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMIDI midiEvent)\n" +" {\n" +" PrintMIDIInfo(midiEvent);\n" +" }\n" +"}\n" +"\n" +"private void PrintMIDIInfo(InputEventMIDI midiEvent)\n" +"{\n" +" GD.Print(midiEvent);\n" +" GD.Print($\"Channel {midiEvent.Channel}\");\n" +" GD.Print($\"Message {midiEvent.Message}\");\n" +" GD.Print($\"Pitch {midiEvent.Pitch}\");\n" +" GD.Print($\"Velocity {midiEvent.Velocity}\");\n" +" GD.Print($\"Instrument {midiEvent.Instrument}\");\n" +" GD.Print($\"Pressure {midiEvent.Pressure}\");\n" +" GD.Print($\"Controller number: {midiEvent.ControllerNumber}\");\n" +" GD.Print($\"Controller value: {midiEvent.ControllerValue}\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"请注意,Godot 目前不支持 MIDI 输出,因此无法从 Godot 发出 MIDI 信号。只有 " +"MIDI 输入有效。" + msgid "MIDI Message Status Byte List" msgstr "MIDI 消息状态字节列表" @@ -40893,399 +56043,16 @@ msgstr "" "code] 字段(注意有个前缀的点)。这个 [code].order[/code] 字段是属性名称 " "[String] 的 [Array],指定属性的应用顺序(索引为 0 的是第一个)。" -msgid "Integer built-in type." -msgstr "整数内置类型。" - -msgid "" -"Signed 64-bit integer type.\n" -"It can take values in the interval [code][-2^63, 2^63 - 1][/code], i.e. " -"[code][-9223372036854775808, 9223372036854775807][/code]. Exceeding those " -"bounds will wrap around.\n" -"[int] is a [Variant] type, and will thus be used when assigning an integer " -"value to a [Variant]. It can also be enforced with the [code]: int[/code] " -"type hint.\n" -"[codeblocks]\n" -"[gdscript]\n" -"var my_variant = 0 # int, value 0.\n" -"my_variant += 4.2 # float, value 4.2.\n" -"var my_int: int = 1 # int, value 1.\n" -"my_int = 4.2 # int, value 4, the right value is implicitly cast to int.\n" -"my_int = int(\"6.7\") # int, value 6, the String is explicitly cast with " -"int.\n" -"var max_int = 9223372036854775807\n" -"print(max_int) # 9223372036854775807, OK.\n" -"max_int += 1\n" -"print(max_int) # -9223372036854775808, we overflowed and wrapped around.\n" -"[/gdscript]\n" -"[csharp]\n" -"int myInt = (int)\"6.7\".ToFloat(); // int, value 6, the String is " -"explicitly cast with int.\n" -"// We have to use `long` here, because GDSript's `int`\n" -"// is 64 bits long while C#'s `int` is only 32 bits.\n" -"long maxInt = 9223372036854775807;\n" -"GD.Print(maxInt); // 9223372036854775807, OK.\n" -"maxInt++;\n" -"GD.Print(maxInt); // -9223372036854775808, we overflowed and wrapped " -"around.\n" -"\n" -"// Alternatively, if we used C#'s 32-bit `int` type, the maximum value is " -"much smaller:\n" -"int halfInt = 2147483647;\n" -"GD.Print(halfInt); // 2147483647, OK.\n" -"halfInt++;\n" -"GD.Print(halfInt); // -2147483648, we overflowed and wrapped around.\n" -"[/csharp]\n" -"[/codeblocks]" -msgstr "" -"有符号 64 位整数类型。\n" -"可以接受 [code][-2^63, 2^63 - 1][/code] 范围内的值,即 [code]" -"[-9223372036854775808, 9223372036854775807][/code]。超出这个界限后会环绕至另" -"一端。\n" -"[int] 是 [Variant] 类型,因此会在将整数值赋给 [Variant] 时使用。也可以用类型" -"提示 [code]: int[/code] 强制。\n" -"[codeblocks]\n" -"[gdscript]\n" -"var my_variant = 0 # int,值为 0。\n" -"my_variant += 4.2 # float,值为 4.2。\n" -"var my_int: int = 1 # int,值为 1。\n" -"my_int = 4.2 # int,值为 4,右侧的值隐式转换为了 int。\n" -"my_int = int(\"6.7\") # int,值为 6,该 String 显式转换为了 int。\n" -"var max_int = 9223372036854775807\n" -"print(max_int) # 9223372036854775807,正确。\n" -"max_int += 1\n" -"print(max_int) # -9223372036854775808,溢出,环绕至另一端。\n" -"[/gdscript]\n" -"[csharp]\n" -"int myInt = (int)\"6.7\".ToFloat(); // int,值为 6,该 String 显式转换为了 " -"int。\n" -"// 这里我们需要用 `long`,因为 GDSript 的 `int`\n" -"// 为 64 位,而 C# 的 `int` 只有 32 位。\n" -"long maxInt = 9223372036854775807;\n" -"GD.Print(maxInt); // 9223372036854775807,正确。\n" -"maxInt++;\n" -"GD.Print(maxInt); // -9223372036854775808,溢出,环绕至另一端。\n" -"\n" -"// 或者,如果我们使用 C# 的 32 位 `int` 类型,则最大值相对要小很多:\n" -"int halfInt = 2147483647;\n" -"GD.Print(halfInt); // 2147483647,正确。\n" -"halfInt++;\n" -"GD.Print(halfInt); // -2147483648,溢出,环绕至另一端。\n" -"[/csharp]\n" -"[/codeblocks]" - -msgid "Constructs a default-initialized [int] set to [code]0[/code]." -msgstr "构造默认初始化为 [code]0[/code] 的 [int]。" - msgid "Constructs an [int] as a copy of the given [int]." msgstr "构造给定 [int] 的副本。" msgid "" -"Converts a [String] to an [int], following the same rules as [method String." -"to_int]." -msgstr "将 [String] 转换为 [int],遵循与 [method String.to_int] 相同的规则。" - -msgid "" -"Cast a [bool] value to an integer value, [code]int(true)[/code] will be " -"equals to 1 and [code]int(false)[/code] will be equals to 0." -msgstr "" -"将 [bool] 值转换为整数值,[code]int(true)[/code] 将等于 1,[code]int(false)[/" -"code] 将等于 0。" - -msgid "" -"Cast a float value to an integer value, this method simply removes the " -"number fractions (i.e. rounds [param from] towards zero), so for example " -"[code]int(2.7)[/code] will be equals to 2, [code]int(0.1)[/code] will be " -"equals to 0 and [code]int(-2.7)[/code] will be equals to -2. This operation " -"is also called truncation." -msgstr "" -"将浮点值转换为整数值,该方法只是删除数字的小数部分(即,将 [param from] 向零" -"舍入),因此例如 [code]int(2.7)[/code] 将等于 2,[code]int(0.1)[/code] 将等" -"于 0,而 [code]int(-2.7)[/code] 将等于 -2。这个操作也称为截断。" - -msgid "" -"Returns [code]true[/code] if this [int] is not equivalent to the given " -"[float]." -msgstr "如果该 [int] 与给定的 [float] 不等价,则返回 [code]true[/code]。" - -msgid "Returns [code]true[/code] if the integers are not equal." -msgstr "如果两个整数不相等,则返回 [code]true[/code]。" - -msgid "" -"Returns the remainder after dividing two integers. This operation uses " -"truncated division, which is often not desired as it does not work well with " -"negative numbers. Consider using [method @GlobalScope.posmod] instead if you " -"want to handle negative numbers.\n" -"[codeblock]\n" -"print(5 % 2) # 1\n" -"print(12 % 4) # 0\n" -"print(-5 % 3) # -2\n" -"[/codeblock]" -msgstr "" -"返回两个整数相除后的余数。该操作使用截断除法,通常并不希望如此,因为它不适用" -"于负数。如果要处理负数,请考虑改用 [method @GlobalScope.posmod]。\n" -"[codeblock]\n" -"print(5 % 2) # 1\n" -"print(12 % 4) # 0\n" -"print(-5 % 3) # -2\n" -"[/codeblock]" - -msgid "" -"Returns the result of bitwise [code]AND[/code] operation for two integers.\n" -"[codeblock]\n" -"print(3 & 1) # 1\n" -"print(11 & 3) # 3\n" -"[/codeblock]\n" -"It's useful to retrieve binary flags from a variable.\n" -"[codeblock]\n" -"var flags = 5\n" -"# Do something if the first bit is enabled.\n" -"if flags & 1:\n" -" do_stuff()\n" -"[/codeblock]" -msgstr "" -"返回两个整数按位 [code]AND[/code] 运算的结果。\n" -"[codeblock]\n" -"print(3 & 1) # 1\n" -"print(11 & 3) # 3\n" -"[/codeblock]\n" -"从变量中检索二进制标志很有用。\n" -"[codeblock]\n" -"var flags = 5\n" -"# 如果启用了第一位,请执行某些操作。\n" -"if flags & 1:\n" -" do_stuff()\n" -"[/codeblock]" - -msgid "" -"Multiplies each component of the [Quaternion] by the given [int]. This " -"operation is not meaningful on its own, but it can be used as a part of a " -"larger expression." -msgstr "" -"将该 [Quaternion] 的每个分量乘以给定的 [float]。此操作本身没有意义,但可以用" -"作更大表达式的一部分。" - -msgid "" -"Multiplies each component of the [Vector2] by the given [int].\n" -"[codeblock]\n" -"print(2 * Vector2(1, 1)) # Vector2(2, 2)\n" -"[/codeblock]" -msgstr "" -"将该 [Vector2] 的每个分量乘以给定的 [int]。\n" -"[codeblock]\n" -"print(2 * Vector2(1, 1)) # Vector2(2, 2)\n" -"[/codeblock]" - -msgid "Multiplies each component of the [Vector2i] by the given [int]." -msgstr "将该 [Vector2i] 的每个分量乘以给定的 [int]。" - -msgid "Multiplies each component of the [Vector3] by the given [int]." -msgstr "将该 [Vector3] 的每个分量乘以给定的 [int]。" - -msgid "Multiplies each component of the [Vector3i] by the given [int]." -msgstr "将该 [Vector3i] 的每个分量乘以给定的 [int]。" - -msgid "Multiplies each component of the [Vector4] by the given [int]." -msgstr "将该 [Vector4] 的每个分量乘以给定的 [int]。" - -msgid "Multiplies each component of the [Vector4i] by the given [int]." -msgstr "将该 [Vector4i] 的每个分量乘以给定的 [int]。" - -msgid "Multiplies an [int] and a [float]. The result is a [float]." -msgstr "将 [int] 乘以 [float]。结果为 [float]。" - -msgid "Multiplies two [int]s." -msgstr "将两个 [int] 相乘。" - -msgid "" -"Raises an [int] to a power of a [float]. The result is a [float].\n" -"[codeblock]\n" -"print(8**0.25) # 1.68179283050743\n" -"[/codeblock]" -msgstr "" -"将 [int] 提升到 [float] 次幂。结果为 [float]。\n" -"[codeblock]\n" -"print(8**0.25) # 1.68179283050743\n" -"[/codeblock]" - -msgid "" -"Raises an [int] to a power of a [int].\n" -"[codeblock]\n" -"print(5**5) # 3125\n" -"[/codeblock]" -msgstr "" -"将 [int] 提升到 [int] 次幂。\n" -"[codeblock]\n" -"print(5**5) # 3125\n" -"[/codeblock]" - -msgid "Adds an [int] and a [float]. The result is a [float]." -msgstr "将 [int] 加上 [float]。结果为 [float]。" - -msgid "Adds two integers." -msgstr "将两个整数相加。" - -msgid "Subtracts a [float] from an [int]. The result is a [float]." -msgstr "将 [int] 减去 [float]。结果为 [float]。" - -msgid "Subtracts two integers." -msgstr "将两个整数相减。" - -msgid "" -"Divides an [int] by a [float]. The result is a [float].\n" -"[codeblock]\n" -"print(10 / 3.0) # 3.333...\n" -"[/codeblock]" -msgstr "" -"将 [int] 除以 [float]。结果为 [float]。\n" -"[codeblock]\n" -"print(10 / 3.0) # 3.333...\n" -"[/codeblock]" - -msgid "" -"Divides two integers. The decimal part of the result is discarded " -"(truncated).\n" -"[codeblock]\n" -"print(10 / 2) # 5\n" -"print(10 / 3) # 3\n" -"[/codeblock]" -msgstr "" -"将两个整数相除。结果的小数部分被(截断)。\n" -"[codeblock]\n" -"print(10 / 2) # 5\n" -"print(10 / 3) # 3\n" -"[/codeblock]" - -msgid "Returns [code]true[/code] if this [int] is less than the given [float]." -msgstr "如果该 [int] 小于给定的 [float],则返回 [code]true[/code]。" - -msgid "" -"Returns [code]true[/code] if the left integer is less than the right one." -msgstr "如果左侧的整数小于右侧,则返回 [code]true[/code]。" - -msgid "" -"Performs bitwise shift left operation on the integer. Effectively the same " -"as multiplying by a power of 2.\n" -"[codeblock]\n" -"print(10 << 1) # 20\n" -"print(10 << 4) # 160\n" -"[/codeblock]" -msgstr "" -"对该整数执行按位左移操作。效果上与乘以 2 的幂相同。\n" -"[codeblock]\n" -"print(10 << 1) # 20\n" -"print(10 << 4) # 160\n" -"[/codeblock]" - -msgid "" -"Returns [code]true[/code] if this [int] is less than or equal to the given " -"[float]." -msgstr "如果该 [int] 小于等于给定的 [float],则返回 [code]true[/code]。" - -msgid "" -"Returns [code]true[/code] if the left integer is less than or equal to the " -"right one." -msgstr "如果左侧的整数小于等于右侧,则返回 [code]true[/code]。" - -msgid "Returns [code]true[/code] if the integer is equal to the given [float]." -msgstr "如果该整数等于给定的 [float],则返回 [code]true[/code]。" - -msgid "Returns [code]true[/code] if both integers are equal." -msgstr "如果两个整数相等,则返回 [code]true[/code]。" - -msgid "" -"Returns [code]true[/code] if this [int] is greater than the given [float]." -msgstr "如果该 [int] 大于给定的 [float],则返回 [code]true[/code]。" - -msgid "" -"Returns [code]true[/code] if the left integer is greater than the right one." -msgstr "如果左侧的整数大于右侧,则返回 [code]true[/code]。" - -msgid "" -"Returns [code]true[/code] if this [int] is greater than or equal to the " -"given [float]." -msgstr "如果该 [int] 大于等于给定的 [float],则返回 [code]true[/code]。" - -msgid "" -"Returns [code]true[/code] if the left integer is greater than or equal to " -"the right one." -msgstr "如果左侧的整数大于等于右侧,则返回 [code]true[/code]。" - -msgid "" -"Performs bitwise shift right operation on the integer. Effectively the same " -"as dividing by a power of 2.\n" -"[codeblock]\n" -"print(10 >> 1) # 5\n" -"print(10 >> 2) # 2\n" -"[/codeblock]" -msgstr "" -"对该整数执行按位右移操作。效果上与除以 2 的幂相同。\n" -"[codeblock]\n" -"print(10 >> 1) # 5\n" -"print(10 >> 2) # 2\n" -"[/codeblock]" - -msgid "" -"Returns the result of bitwise [code]XOR[/code] operation for two integers.\n" -"[codeblock]\n" -"print(5 ^ 1) # 4\n" -"print(4 ^ 7) # 3\n" -"[/codeblock]" -msgstr "" -"返回两个整数按位 [code]XOR[/code](异或)运算的结果。\n" -"[codeblock]\n" -"print(5 ^ 1) # 4\n" -"print(4 ^ 7) # 3\n" -"[/codeblock]" - -msgid "" "Returns the negated value of the [int]. If positive, turns the number " "negative. If negative, turns the number positive. If zero, does nothing." msgstr "" "返回该 [int] 的相反值。如果为正数,则该将数变为负数。如果为负数,则将该数变为" "正数。如果为零,则不执行任何操作。" -msgid "" -"Returns the result of bitwise [code]OR[/code] operation for two integers.\n" -"[codeblock]\n" -"print(2 | 4) # 6\n" -"print(1 | 3) # 3\n" -"[/codeblock]\n" -"It's useful to store binary flags in a variable.\n" -"[codeblock]\n" -"var flags = 0\n" -"# Turn first and third bit on.\n" -"flags |= 1\n" -"flags |= 4\n" -"[/codeblock]" -msgstr "" -"返回两个整数按位 [code]OR[/code](或)运算的结果。\n" -"[codeblock]\n" -"print(2 | 4) # 6\n" -"print(1 | 3) # 3\n" -"[/codeblock]\n" -"可用于在变量中存储二进制标记。\n" -"[codeblock]\n" -"var flags = 0\n" -"# 置第一和第三位。\n" -"flags |= 1\n" -"flags |= 4\n" -"[/codeblock]" - -msgid "" -"Returns the result of bitwise [code]NOT[/code] operation for the integer. " -"It's effectively equal to [code]-int + 1[/code].\n" -"[codeblock]\n" -"print(~4) # -3\n" -"print(~7) # -6\n" -"[/codeblock]" -msgstr "" -"返回两个整数按位 [code]NOT[/code](反)运算的结果。效果上与 [code]-int + 1[/" -"code] 相同。\n" -"[codeblock]\n" -"print(~4) # -3\n" -"print(~7) # -6\n" -"[/codeblock]" - msgid "Creates an idle interval in a [Tween] animation." msgstr "在 [Tween] 动画中创建空闲间隔。" @@ -41441,6 +56208,59 @@ msgid "" msgstr "提供可选中项目(和/或图标)列表的控件,既可以是单列,也可以是多列。" msgid "" +"This control provides a selectable list of items that may be in a single (or " +"multiple columns) with option of text, icons, or both text and icon. " +"Tooltips are supported and may be different for every item in the list.\n" +"Selectable items in the list may be selected or deselected and multiple " +"selection may be enabled. Selection with right mouse button may also be " +"enabled to allow use of popup context menus. Items may also be \"activated\" " +"by double-clicking them or by pressing [kbd]Enter[/kbd].\n" +"Item text only supports single-line strings, newline characters (e.g. " +"[code]\\n[/code]) in the string won't produce a newline. Text wrapping is " +"enabled in [constant ICON_MODE_TOP] mode, but column's width is adjusted to " +"fully fit its content by default. You need to set [member " +"fixed_column_width] greater than zero to wrap the text.\n" +"All [code]set_*[/code] methods allow negative item index, which makes the " +"item accessed from the last one.\n" +"[b]Incremental search:[/b] Like [PopupMenu] and [Tree], [ItemList] supports " +"searching within the list while the control is focused. Press a key that " +"matches the first letter of an item's name to select the first item starting " +"with the given letter. After that point, there are two ways to perform " +"incremental search: 1) Press the same key again before the timeout duration " +"to select the next item starting with the same letter. 2) Press letter keys " +"that match the rest of the word before the timeout duration to match to " +"select the item in question directly. Both of these actions will be reset to " +"the beginning of the list if the timeout duration has passed since the last " +"keystroke was registered. You can adjust the timeout duration by changing " +"[member ProjectSettings.gui/timers/incremental_search_max_interval_msec]." +msgstr "" +"该控件提供了一个可选择的项目列表,这些项目可能位于单列(或多列)中,并带有文" +"本、图标、或文本和图标选项。支持工具提示,并且列表中的每个项目可能会有所不" +"同。\n" +"可以选择或取消选择列表中的可选项目,并且可以启用多项选择。也可以启用用鼠标右" +"键进行选择,以允许使用弹出上下文菜单。项目也可以通过双击它们,或按 " +"[kbd]Enter[/kbd] 来“激活”。\n" +"项目文本只支持单行字符串,字符串中的换行符(例如 [code]\\n[/code])不会产生换" +"行。在 [constant ICON_MODE_TOP] 模式下会启用文本换行,但默认情况下会调整列的" +"宽度以完全适合其内容。需要将 [member fixed_column_width] 设置得大于零,才能换" +"行文本。\n" +"所有 [code]set_*[/code] 方法都允许负项目索引,这使得项目从末尾访问。\n" +"[b]增量搜索:[/b]与 [PopupMenu] 和 [Tree] 一样,[ItemList] 支持在控件获得焦点" +"时在列表内进行搜索。按下与项目名称的第一个字母匹配的键,以选择以给定字母开头" +"的第一个项目。在该点之后,有两种方法可以执行增量搜索: 1) 在超时持续时间之前" +"再次按下相同的键,以选择下一个以相同字母开头的项目。 2) 在超时时间前,按匹配" +"单词剩余部分的字母键,将直接选择问题项。如果自上次击键被注册后,超时持续时间" +"已过,则这两个动作都将被重置为列表的开头。可以通过更改 [member " +"ProjectSettings.gui/timers/incremental_search_max_interval_msec] 来调整超时持" +"续时间。" + +msgid "" +"Adds an item to the item list with no text, only an icon. Returns the index " +"of an added item." +msgstr "" +"将一个项目添加到项目列表中,没有文本,只有一个图标。返回添加的项的索引。" + +msgid "" "Adds an item to the item list with specified text. Returns the index of an " "added item.\n" "Specify an [param icon], or use [code]null[/code] as the [param icon] for a " @@ -41832,10 +56652,35 @@ msgid "" "Web export." msgstr "单例,在 Web 导出中将引擎与浏览器的 JavaScript 上下文连接。" +msgid "" +"The JavaScriptBridge singleton is implemented only in the Web export. It's " +"used to access the browser's JavaScript context. This allows interaction " +"with embedding pages or calling third-party JavaScript APIs.\n" +"[b]Note:[/b] This singleton can be disabled at build-time to improve " +"security. By default, the JavaScriptBridge singleton is enabled. Official " +"export templates also have the JavaScriptBridge singleton enabled. See " +"[url=$DOCS_URL/contributing/development/compiling/compiling_for_web." +"html]Compiling for the Web[/url] in the documentation for more information." +msgstr "" +"JavaScriptBridge 单例仅在 Web 导出中实现。它用于访问浏览器的 JavaScript 上下" +"文。这允许与嵌入页面或调用第三方 JavaScript API 进行交互。\n" +"[b]注意:[/b]可以在构建时禁用该单例以提高安全性。默认情况下,启用 " +"JavaScriptBridge 单例。官方导出模板也启用了 JavaScriptBridge 单例。有关详细信" +"息,请参阅文档中的[url=$DOCS_URL/contributing/development/compiling/" +"compiling_for_web.html]《为 Web 平台编译》[/url]。" + msgid "Exporting for the Web: Calling JavaScript from script" msgstr "为 Web 导出:从脚本调用 JavaScript" msgid "" +"Creates a reference to a [Callable] that can be used as a callback by " +"JavaScript. The reference must be kept until the callback happens, or it " +"won't be called at all. See [JavaScriptObject] for usage." +msgstr "" +"创建一个对可被 JavaScript 用作回调的 [Callable] 的引用。该引用必须一直保留到" +"回调发生,否则根本不会被调用。有关用法,请参阅 [JavaScriptObject]。" + +msgid "" "Creates a new JavaScript object using the [code]new[/code] constructor. The " "[param object] must a valid property of the JavaScript [code]window[/code]. " "See [JavaScriptObject] for usage." @@ -41879,6 +56724,14 @@ msgstr "" "值。" 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 " +"[FileAccess] to write files." +msgstr "" +"强制同步持久化文件系统(当启用时)。\n" +"[b]注意:[/b]这仅对不能使用 [FileAccess] 写入文件的模块或扩展有用。" + +msgid "" "Returns an interface to a JavaScript object that can be used by scripts. The " "[param interface] must be a valid property of the JavaScript [code]window[/" "code]. The callback must accept a single [Array] argument, which will " @@ -42027,6 +56880,20 @@ msgid "" msgstr "2D 物理中所有关节约束的基础节点。关节采用 2 个实体并应用自定义约束。" msgid "" +"When [member node_a] and [member node_b] move in different directions the " +"[code]bias[/code] controls how fast the joint pulls them back to their " +"original position. The lower the [code]bias[/code] 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] 向不同方向移动时,[code]bias[/code] 控" +"制关节将它们拉回到原始位置的速度。[code]bias[/code] 越低,两个实体对该关节的" +"拉力就越大。\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 "" "如果为 [code]true[/code],则 [member node_a] 和 [member node_b] 无法碰撞。" @@ -42041,6 +56908,14 @@ msgstr "连接到关节的第二个实体。必须继承自 [PhysicsBody2D]。" msgid "Base class for all 3D joints." msgstr "所有 3D 关节的基类。" +msgid "" +"Joints are used to bind together two physics bodies. They have a solver " +"priority and can define if the bodies of the two attached nodes should be " +"able to collide with each other. See also [Generic6DOFJoint3D]." +msgstr "" +"关节用于将两个物理实体绑定在一起。它们具有一个求解器优先级,并且可以定义两个" +"连接节点的实体是否应该能够相互碰撞。另请参阅 [Generic6DOFJoint3D]。" + msgid "3D Truck Town Demo" msgstr "3D 货车镇演示" @@ -42164,6 +57039,40 @@ msgstr "" "息。" msgid "" +"Return the text parsed by [method parse] as long as the function is " +"instructed to keep it." +msgstr "只要该函数被指示以保留该文本,就返回由 [method parse] 解析的文本。" + +msgid "" +"Attempts to parse the [param json_text] provided.\n" +"Returns an [enum Error]. If the parse was successful, it returns [constant " +"OK] and the result can be retrieved using [member data]. If unsuccessful, " +"use [method get_error_line] and [method get_error_message] for identifying " +"the source of the failure.\n" +"Non-static variant of [method parse_string], if you want custom error " +"handling.\n" +"The optional [param keep_text] argument instructs the parser to keep a copy " +"of the original text. This text can be obtained later by using the [method " +"get_parsed_text] function and is used when saving the resource (instead of " +"generating new text from [member data])." +msgstr "" +"尝试解析提供的 [param json_text]。\n" +"返回一个 [enum Error]。如果解析成功,则它返回 [constant OK],并且可以使用 " +"[member data] 检索该结果。如果不成功,请使用 [method get_error_line] 和 " +"[method get_error_message] 来识别失败的原因。\n" +"如果想要自定义错误处理,可以使用的 [method parse_string] 的非静态变体。\n" +"可选的 [param keep_text] 参数指示该解析器保留一份原始文本的副本。该文本稍后可" +"以使用 [method get_parsed_text] 函数获取,并在保存资源时使用(而不是从 " +"[member data] 生成新文本)。" + +msgid "" +"Attempts to parse the [param json_string] provided and returns the parsed " +"data. Returns [code]null[/code] if parse failed." +msgstr "" +"试图解析提供的 [param json_string],并返回解析后的数据。如果解析失败,返回 " +"[code]null[/code]。" + +msgid "" "Converts a [Variant] var to JSON text and returns the result. Useful for " "serializing data to store or send over the network.\n" "[b]Note:[/b] The JSON specification does not define integer or float types, " @@ -42424,10 +57333,90 @@ msgstr "返回移动对象的剩余移动向量。" msgid "Returns the moving object's travel before collision." msgstr "返回移动对象的在碰撞前的运动。" +msgid "Collision data for [method PhysicsBody3D.move_and_collide] collisions." +msgstr "用于 [method PhysicsBody3D.move_and_collide] 碰撞的碰撞数据。" + +msgid "" +"Contains collision data for [method PhysicsBody3D.move_and_collide] " +"collisions. When a [PhysicsBody3D] is moved using [method PhysicsBody3D." +"move_and_collide], it stops if it detects a collision with another body. If " +"a collision is detected, a [KinematicCollision3D] object is returned.\n" +"This object contains information about the collision, including the " +"colliding object, the remaining motion, and the collision position. This " +"information can be used to calculate a collision response." +msgstr "" +"包含用于 [method PhysicsBody3D.move_and_collide] 碰撞的碰撞数据。当使用 " +"[method PhysicsBody3D.move_and_collide] 移动 [PhysicsBody3D] 时,它会在检测到" +"与另一个实体的碰撞时停止。如果检测到碰撞,则返回一个 [KinematicCollision3D] " +"对象。\n" +"该对象包含有关碰撞的信息,包括碰撞对象、剩余运动、和碰撞位置。该信息可用于计" +"算一个碰撞响应。" + +msgid "" +"Returns the collision angle according to [param up_direction], which is " +"[constant Vector3.UP] by default. This value is always positive." +msgstr "" +"根据 [param up_direction] 返回碰撞角度,默认为 [constant Vector3.UP]。该值始" +"终为正。" + +msgid "" +"Returns the colliding body's attached [Object] given a collision index (the " +"deepest collision by default)." +msgstr "" +"给定碰撞索引(默认情况下最深的碰撞),返回该碰撞实体所附加的 [Object]。" + +msgid "" +"Returns the unique instance ID of the colliding body's attached [Object] " +"given a collision index (the deepest collision by default). See [method " +"Object.get_instance_id]." +msgstr "" +"给定碰撞索引(默认情况下最深的碰撞),返回该碰撞实体所附加的 [Object] 的唯一" +"实例 ID。请参阅 [method Object.get_instance_id]。" + +msgid "" +"Returns the colliding body's [RID] used by the [PhysicsServer3D] given a " +"collision index (the deepest collision by default)." +msgstr "" +"给定碰撞索引(默认情况下最深的碰撞),返回被 [PhysicsServer3D] 使用的碰撞实体" +"的 [RID]。" + +msgid "" +"Returns the colliding body's shape given a collision index (the deepest " +"collision by default)." +msgstr "给定碰撞索引(默认情况下最深的碰撞),返回该碰撞实体的形状。" + +msgid "" +"Returns the colliding body's shape index given a collision index (the " +"deepest collision by default). See [CollisionObject3D]." +msgstr "" +"给定碰撞索引(默认情况下最深的碰撞),返回该碰撞实体的形状索引。请参阅 " +"[CollisionObject3D]。" + +msgid "" +"Returns the colliding body's velocity given a collision index (the deepest " +"collision by default)." +msgstr "给定碰撞索引(默认情况下最深的碰撞),返回该碰撞实体的速度。" + msgid "Returns the number of detected collisions." msgstr "返回检测到的碰撞次数。" msgid "" +"Returns the moving object's colliding shape given a collision index (the " +"deepest collision by default)." +msgstr "给定碰撞索引(默认情况下最深的碰撞),返回移动的对象的碰撞形状。" + +msgid "" +"Returns the colliding body's shape's normal at the point of collision given " +"a collision index (the deepest collision by default)." +msgstr "" +"给定碰撞索引(默认情况下最深的碰撞),返回在碰撞点处该碰撞实体的形状的法线。" + +msgid "" +"Returns the point of collision in global coordinates given a collision index " +"(the deepest collision by default)." +msgstr "给定碰撞索引(默认情况下最深的碰撞),返回以全局坐标表示的碰撞点。" + +msgid "" "Displays plain text in a line or wrapped inside a rectangle. For formatted " "text, use [RichTextLabel]." msgstr "" @@ -42457,6 +57446,15 @@ msgid "Returns the number of lines of text the Label has." msgstr "返回该 Label 的文本行数。" msgid "" +"Returns the height of the line [param line].\n" +"If [param line] is set to [code]-1[/code], returns the biggest line height.\n" +"If there are no lines, returns font size in pixels." +msgstr "" +"返回行 [param line] 的高度。\n" +"如果 [param line] 被设置为 [code]-1[/code] ,则返回最大的行高。\n" +"如果没有行,则返回字体大小,单位是像素。" + +msgid "" "Returns the total number of printable characters in the text (excluding " "spaces and newlines)." msgstr "返回文本中可打印的字符总数,不包括空格和换行符。" @@ -42484,6 +57482,13 @@ msgstr "" "剪文本。" msgid "" +"Controls the text's horizontal alignment. Supports left, center, right, and " +"fill, or justify. Set it to one of the [enum HorizontalAlignment] constants." +msgstr "" +"控制文本的水平对齐方式。支持左对齐、居中对齐、右对齐、和填充、或两端对齐。将" +"其设置为 [enum HorizontalAlignment] 常量之一。" + +msgid "" "A [LabelSettings] resource that can be shared between multiple [Label] " "nodes. Takes priority over theme properties." msgstr "" @@ -42509,6 +57514,46 @@ msgstr "要在屏幕上显示的文本。" msgid "If [code]true[/code], all the text displays as UPPERCASE." msgstr "如果为 [code]true[/code],所有文本都将显示为大写。" +msgid "" +"Controls the text's vertical alignment. Supports top, center, bottom, and " +"fill. Set it to one of the [enum VerticalAlignment] constants." +msgstr "" +"控制文本的垂直对齐方式。支持顶部对齐、居中对齐、底部对齐、和填充。将其设置为 " +"[enum VerticalAlignment] 常量之一。" + +msgid "" +"The number of characters to display. If set to [code]-1[/code], all " +"characters are displayed. This can be useful when animating the text " +"appearing in a dialog box.\n" +"[b]Note:[/b] Setting this property updates [member visible_ratio] " +"accordingly." +msgstr "" +"要显示的字符数。如果设置为 [code]-1[/code],则显示所有字符。这用于在对话框中" +"为显示的文本设置动画。\n" +"[b]注意:[/b]设置该属性会相应地更新 [member visible_ratio]。" + +msgid "" +"Sets the clipping behavior when [member visible_characters] or [member " +"visible_ratio] is set. See [enum TextServer.VisibleCharactersBehavior] for " +"more info." +msgstr "" +"设置 [member visible_characters] 或 [member visible_ratio] 被设置时的裁剪行" +"为。有关详细信息,请参阅 [enum TextServer.VisibleCharactersBehavior]。" + +msgid "" +"The fraction of characters to display, relative to the total number of " +"characters (see [method get_total_character_count]). If set to [code]1.0[/" +"code], all characters are displayed. If set to [code]0.5[/code], only half " +"of the characters will be displayed. This can be useful when animating the " +"text appearing in a dialog box.\n" +"[b]Note:[/b] Setting this property updates [member visible_characters] " +"accordingly." +msgstr "" +"相对于字符总数(参见 [method get_total_character_count]),要显示的字符的占" +"比。如果设置为 [code]1.0[/code],则显示所有字符。如果设置为 [code]0.5[/" +"code],则只显示一半的字符。这用于在对话框中为显示的文本设置动画。\n" +"[b]注意:[/b]设置该属性会相应地更新 [member visible_characters]。" + msgid "Default text [Color] of the [Label]." msgstr "[Label] 标签的默认文本颜色 [Color]。" @@ -42609,6 +57654,17 @@ msgstr "如果为 [code]true[/code],则无论距离远近,标签都以相同 msgid "Font configuration used to display text." msgstr "用于显示文本的字体配置。" +msgid "" +"Font size of the [Label3D]'s text. To make the font look more detailed when " +"up close, increase [member font_size] while decreasing [member pixel_size] " +"at the same time.\n" +"Higher font sizes require more time to render new characters, which can " +"cause stuttering during gameplay." +msgstr "" +"[Label3D] 文本的字体大小。为了让字体在近距离时看起来更细腻,可增加 [member " +"font_size],同时减小 [member pixel_size]。\n" +"较大的字体大小需要更多时间来渲染新字符,这可能会导致在游戏过程中卡顿。" + msgid "Vertical space between lines in multiline [Label3D]." msgstr "多行 [Label3D] 中,行与行之间的垂直间距。" @@ -42641,6 +57697,14 @@ msgid "Text outline size." msgstr "文本轮廓大小。" msgid "" +"The size of one pixel's width on the label to scale it in 3D. To make the " +"font look more detailed when up close, increase [member font_size] while " +"decreasing [member pixel_size] at the same time." +msgstr "" +"标签中一个像素宽度对应缩放至的 3D 大小。要让字体在较近距离时也能够看到细节," +"请在减小 [member pixel_size] 的同时增大 [member font_size]。" + +msgid "" "Sets the render priority for the text. Higher priority objects will be " "sorted in front of lower priority objects.\n" "[b]Note:[/b] This only applies if [member alpha_cut] is set to [constant " @@ -42700,6 +57764,39 @@ msgid "Represents the size of the [enum DrawFlags] enum." msgstr "代表 [enum DrawFlags] 枚举的大小。" msgid "" +"This mode performs standard alpha blending. It can display translucent " +"areas, but transparency sorting issues may be visible when multiple " +"transparent materials are overlapping. [member GeometryInstance3D." +"cast_shadow] has no effect when this transparency mode is used; the " +"[Label3D] will never cast shadows." +msgstr "" +"该模式会执行标准的 Alpha 混合。它可以显示半透明区域,但当多个透明材质重叠时," +"可能会出现透明度排序问题。[member GeometryInstance3D.cast_shadow] 在使用该透" +"明模式时无效;[Label3D] 永远不会投射阴影。" + +msgid "" +"This mode only allows fully transparent or fully opaque pixels. Harsh edges " +"will be visible unless some form of screen-space antialiasing is enabled " +"(see [member ProjectSettings.rendering/anti_aliasing/quality/" +"screen_space_aa]). This mode is also known as [i]alpha testing[/i] or [i]1-" +"bit transparency[/i].\n" +"[b]Note:[/b] This mode might have issues with anti-aliased fonts and " +"outlines, try adjusting [member alpha_scissor_threshold] or using MSDF " +"font.\n" +"[b]Note:[/b] When using text with overlapping glyphs (e.g., cursive " +"scripts), this mode might have transparency sorting issues between the main " +"text and the outline." +msgstr "" +"该模式仅允许完全透明、或完全不透明的像素。除非启用了某种形式的屏幕空间抗锯齿" +"(请参阅 [member ProjectSettings.rendering/anti_aliasing/quality/" +"screen_space_aa]),否则会看到粗糙的边缘。该模式也被称为 [i]Alpha 测试[/i] " +"或 [i]1 位透明度[/i]。\n" +"[b]注意:[/b]该模式可能会出现抗锯齿字体和轮廓问题,请尝试调整 [member " +"alpha_scissor_threshold] 或使用 MSDF 字体。\n" +"[b]注意:[/b]当使用具有重叠字形的文本(例如草书)时,该模式可能会在正文和轮廓" +"之间,出现透明度排序问题。" + +msgid "" "This mode draws fully opaque pixels in the depth prepass. This is slower " "than [constant ALPHA_CUT_DISABLED] or [constant ALPHA_CUT_DISCARD], but it " "allows displaying translucent areas and smooth edges while using proper " @@ -42714,6 +57811,11 @@ msgstr "" "[b]注意:[/b]文本中存在重叠的字形时(例如手写体),这个模式可能会造成主文本和" "轮廓的透明度排序问题。" +msgid "" +"This mode draws cuts off all values below a spatially-deterministic " +"threshold, the rest will remain opaque." +msgstr "该模式绘制时会截断所有低于空间确定性阈值的值,其余值将保持不透明。" + msgid "Collection of common settings to customize label text." msgstr "用于自定义标签文本的常见设置合集。" @@ -42831,6 +57933,16 @@ msgid "Shadow filter type. See [enum ShadowFilter] for possible values." msgstr "阴影过滤器类型。可能的取值见 [enum ShadowFilter]。" msgid "" +"Smoothing value for shadows. Higher values will result in softer shadows, at " +"the cost of visible streaks that can appear in shadow rendering. [member " +"shadow_filter_smooth] only has an effect if [member shadow_filter] is " +"[constant SHADOW_FILTER_PCF5] or [constant SHADOW_FILTER_PCF13]." +msgstr "" +"阴影的平滑值。更高的值将导致更柔和的阴影,代价是在阴影渲染中可能出现可见的条" +"纹。只有在 [member shadow_filter] 为 [constant SHADOW_FILTER_PCF5] 或 " +"[constant SHADOW_FILTER_PCF13] 时,[member shadow_filter_smooth] 才有效果。" + +msgid "" "The shadow mask. Used with [LightOccluder2D] to cast shadows. Only occluders " "with a matching [member CanvasItem.light_mask] will cast shadows. See also " "[member range_item_cull_mask], which affects which objects can [i]receive[/" @@ -42892,6 +58004,16 @@ msgstr "" msgid "3D lights and shadows" msgstr "3D 灯光与阴影" +msgid "" +"Returns the [Color] of an idealized blackbody at the given [member " +"light_temperature]. This value is calculated internally based on the [member " +"light_temperature]. This [Color] is multiplied by [member light_color] " +"before being sent to the [RenderingServer]." +msgstr "" +"返回给定 [member light_temperature] 下的理想化黑体的 [Color]。该值是根据 " +"[member light_temperature] 在内部计算得出的。该 [Color] 在被发送到 " +"[RenderingServer] 之前,将乘以 [member light_color]。" + msgid "Returns the value of the specified [enum Light3D.Param] parameter." msgstr "返回指定的 [enum Light3D.Param] 参数的值。" @@ -42899,6 +58021,54 @@ msgid "Sets the value of the specified [enum Light3D.Param] parameter." msgstr "设置指定的 [enum Light3D.Param] 参数的值。" msgid "" +"The distance from the camera at which the light begins to fade away (in 3D " +"units).\n" +"[b]Note:[/b] Only effective for [OmniLight3D] and [SpotLight3D]." +msgstr "" +"光线开始逐渐消失时与相机的距离(单位为 3D 单位)。\n" +"[b]注意:[/b]仅对 [OmniLight3D] 和 [SpotLight3D] 有效。" + +msgid "" +"If [code]true[/code], the light will smoothly fade away when far from the " +"active [Camera3D] starting at [member distance_fade_begin]. This acts as a " +"form of level of detail (LOD). The light will fade out over [member " +"distance_fade_begin] + [member distance_fade_length], after which it will be " +"culled and not sent to the shader at all. Use this to reduce the number of " +"active lights in a scene and thus improve performance.\n" +"[b]Note:[/b] Only effective for [OmniLight3D] and [SpotLight3D]." +msgstr "" +"如果为 [code]true[/code],从 [member distance_fade_begin] 开始,当远离活动的 " +"[Camera3D] 时,灯光会平滑地消失。这充当了一种多细节层次(LOD)形式。灯光将在 " +"[member distance_fade_begin] + [member distance_fade_length] 之外淡出,之后它" +"将被剔除并且根本不会被发送到着色器。使用它可以减少场景中的活动灯光数量,从而" +"提高性能。\n" +"[b]注意:[/b]仅对 [OmniLight3D] 和 [SpotLight3D] 有效。" + +msgid "" +"Distance over which the light and its shadow fades. The light's energy and " +"shadow's opacity is progressively reduced over this distance and is " +"completely invisible at the end.\n" +"[b]Note:[/b] Only effective for [OmniLight3D] and [SpotLight3D]." +msgstr "" +"灯光及其阴影消失的距离。灯光的能量和阴影的不透明度,在此距离内逐渐降低,最终" +"完全不可见。\n" +"[b]注意:[/b]仅对 [OmniLight3D] 和 [SpotLight3D] 有效。" + +msgid "" +"The distance from the camera at which the light's shadow cuts off (in 3D " +"units). Set this to a value lower than [member distance_fade_begin] + " +"[member distance_fade_length] to further improve performance, as shadow " +"rendering is often more expensive than light rendering itself.\n" +"[b]Note:[/b] Only effective for [OmniLight3D] and [SpotLight3D], and only " +"when [member shadow_enabled] is [code]true[/code]." +msgstr "" +"灯光阴影截止处与相机的距离(单位为 3D 单位)。将该属性设置为低于 [member " +"distance_fade_begin] + [member distance_fade_length] 的值,以进一步提高性能," +"因为阴影渲染通常比光线渲染本身更昂贵。\n" +"[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." msgstr "如果为 [code]true[/code],灯光只在编辑器中出现,在运行时将不可见。" @@ -42945,6 +58115,65 @@ msgid "The light will affect objects in the selected layers." msgstr "灯光将影响所选图层中的对象。" msgid "" +"The light's strength multiplier (this is not a physical unit). For " +"[OmniLight3D] and [SpotLight3D], changing this value will only change the " +"light color's intensity, not the light's radius." +msgstr "" +"灯光的强度乘数(不是物理单位)。对于 [OmniLight3D] 和 [SpotLight3D],更改此值" +"只会更改灯光颜色的强度,而不会更改灯光的半径。" + +msgid "" +"Secondary multiplier used with indirect light (light bounces). Used with " +"[VoxelGI] and SDFGI (see [member Environment.sdfgi_enabled]).\n" +"[b]Note:[/b] This property is ignored if [member light_energy] is equal to " +"[code]0.0[/code], as the light won't be present at all in the GI shader." +msgstr "" +"与间接光(光反射)一起使用的辅助乘数。与 [VoxelGI] 和 SDFGI 一起使用(参见 " +"[member Environment.sdfgi_enabled])。\n" +"[b]注意:[/b]如果 [member light_energy] 等于 [code]0.0[/code],则该属性将被忽" +"略,因为在 GI 着色器中,该灯光根本不存在。" + +msgid "" +"Used by positional lights ([OmniLight3D] and [SpotLight3D]) when [member " +"ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is " +"[code]true[/code]. Sets the intensity of the light source measured in " +"Lumens. Lumens are a measure of luminous flux, which is the total amount of " +"visible light emitted by a light source per unit of time.\n" +"For [SpotLight3D]s, we assume that the area outside the visible cone is " +"surrounded by a perfect light absorbing material. Accordingly, the apparent " +"brightness of the cone area does not change as the cone increases and " +"decreases in size.\n" +"A typical household lightbulb can range from around 600 lumens to 1,200 " +"lumens, a candle is about 13 lumens, while a streetlight can be " +"approximately 60,000 lumens." +msgstr "" +"当 [member ProjectSettings.rendering/lights_and_shadows/" +"use_physical_light_units] 为 [code]true[/code] 时,由定位灯([OmniLight3D] " +"和 [SpotLight3D])使用。设置光源的强度,测量单位为流明。流明是对光通量的一种" +"度量,它是光源在单位时间内发出的可见光总量。\n" +"对于 [SpotLight3D],我们假设可见锥体之外的区域将被完美的光吸收材质包围。因" +"此,锥体区域的表观亮度不会随着锥体大小的增大和减小而改变。\n" +"一只典型的家用灯泡的流明范围从 600 流明到 1,200 流明不等,一支蜡烛的流明约为 " +"13 流明,而一盏路灯的流明约为 60,000 流明。" + +msgid "" +"Used by [DirectionalLight3D]s when [member ProjectSettings.rendering/" +"lights_and_shadows/use_physical_light_units] is [code]true[/code]. Sets the " +"intensity of the light source measured in Lux. Lux is a measure of luminous " +"flux per unit area, it is equal to one lumen per square meter. Lux is the " +"measure of how much light hits a surface at a given time.\n" +"On a clear sunny day a surface in direct sunlight may be approximately " +"100,000 lux, a typical room in a home may be approximately 50 lux, while the " +"moonlit ground may be approximately 0.1 lux." +msgstr "" +"当 [member ProjectSettings.rendering/lights_and_shadows/" +"use_physical_light_units] 为 [code]true[/code] 时,由 [DirectionalLight3D] 使" +"用。设置光源的强度,测量单位为勒克斯(Lux)。勒克斯是对单位面积内光通量的度" +"量,等于每平方米一流明。勒克斯是衡量在给定时间有多少光照射到一个表面。\n" +"在晴朗的晴天,阳光直射下的表面可能约为 100,000 勒克斯,家中的一个典型房间可能" +"约为 50 勒克斯,而月光下的地面可能约为 0.1 勒克斯。" + +msgid "" "If [code]true[/code], the light's effect is reversed, darkening areas and " "casting bright shadows." msgstr "" @@ -43002,6 +58231,38 @@ msgstr "" "灯光。当不烘焙发射时,这可用于在发光表面上方放置灯光时避免不真实的反射。" msgid "" +"Sets the color temperature of the light source, measured in Kelvin. This is " +"used to calculate a correlated color temperature which tints the [member " +"light_color].\n" +"The sun on a cloudy day is approximately 6500 Kelvin, on a clear day it is " +"between 5500 to 6000 Kelvin, and on a clear day at sunrise or sunset it " +"ranges to around 1850 Kelvin." +msgstr "" +"设置光源的色温,测量单位为开尔文。这用于计算对 [member light_color] 着色的相" +"关色温。\n" +"阴天的太阳温度约为 6500 开尔文,晴天的太阳温度在 5500 到 6000 开尔文之间,晴" +"天日出或日落时的太阳温度范围为 1850 开尔文左右。" + +msgid "" +"Secondary multiplier multiplied with [member light_energy] then used with " +"the [Environment]'s volumetric fog (if enabled). If set to [code]0.0[/code], " +"computing volumetric fog will be skipped for this light, which can improve " +"performance for large amounts of lights when volumetric fog is enabled.\n" +"[b]Note:[/b] To prevent short-lived dynamic light effects from poorly " +"interacting with volumetric fog, lights used in those effects should have " +"[member light_volumetric_fog_energy] set to [code]0.0[/code] unless [member " +"Environment.volumetric_fog_temporal_reprojection_enabled] is disabled (or " +"unless the reprojection amount is significantly lowered)." +msgstr "" +"与 [member light_energy] 相乘的次级乘数,然后与 [Environment] 的体积雾(如果" +"启用)一起使用。如果设置为 [code]0.0[/code],将用于该灯的体积雾计算将被跳过," +"这可以在启用体积雾时提高大量灯光的性能。\n" +"[b]注意:[/b]除非 [member Environment. " +"volumetric_fog_temporal_reprojection_enabled] 被禁用(或者除非重投影的量显著" +"降低),否则为防止短暂的动态光效与体积雾的互动性差,这些效果中使用的光应将 " +"[member light_volumetric_fog_energy] 设置为 [code]0.0[/code]。" + +msgid "" "Used to adjust shadow appearance. Too small a value results in self-" "shadowing (\"shadow acne\"), while too large a value causes shadows to " "separate from casters (\"peter-panning\"). Adjust as needed." @@ -43009,6 +58270,54 @@ msgstr "" "用于调整阴影表现。值太小会导致自阴影(“阴影失真”),而值太大会导致阴影与之分" "离(“阴影悬浮”)。根据需要进行调整。" +msgid "" +"Blurs the edges of the shadow. Can be used to hide pixel artifacts in low-" +"resolution shadow maps. A high value can impact performance, make shadows " +"appear grainy and can cause other unwanted artifacts. Try to keep as near " +"default as possible." +msgstr "" +"模糊阴影的边缘。可用于隐藏低分辨率阴影贴图中的像素伪影。高值会影响性能,使阴" +"影看起来有颗粒感,并可能导致其他不需要的伪影。尽量保持接近默认值。" + +msgid "" +"If [code]true[/code], the light will cast real-time shadows. This has a " +"significant performance cost. Only enable shadow rendering when it makes a " +"noticeable difference in the scene's appearance, and consider using [member " +"distance_fade_enabled] to hide the light when far away from the [Camera3D]." +msgstr "" +"如果为 [code]true[/code],则灯光将投射实时阴影。这具有显著的性能成本。仅当阴" +"影渲染对场景外观产生明显影响时,才启用阴影渲染,并考虑在远离 [Camera3D] 时使" +"用 [member distance_fade_enabled] 隐藏该灯光。" + +msgid "" +"Offsets the lookup into the shadow map by the object's normal. This can be " +"used to reduce self-shadowing artifacts without using [member shadow_bias]. " +"In practice, this value should be tweaked along with [member shadow_bias] to " +"reduce artifacts as much as possible." +msgstr "" +"通过对象的法线,将查找偏移到阴影贴图中。这可用于在不使用 [member " +"shadow_bias] 的情况下,减少自身阴影伪影。在实践中,这个值应该与 [member " +"shadow_bias] 一起调整,以尽可能减少伪影。" + +msgid "" +"The opacity to use when rendering the light's shadow map. Values lower than " +"[code]1.0[/code] make the light appear through shadows. This can be used to " +"fake global illumination at a low performance cost." +msgstr "" +"渲染灯光的阴影贴图时使用的不透明度。低于 [code]1.0[/code] 的值会使光线透过阴" +"影出现。这可以用于以较低的性能成本,伪造全局照明。" + +msgid "" +"If [code]true[/code], reverses the backface culling of the mesh. This can be " +"useful when you have a flat mesh that has a light behind it. If you need to " +"cast a shadow on both sides of the mesh, set the mesh to use double-sided " +"shadows with [constant GeometryInstance3D." +"SHADOW_CASTING_SETTING_DOUBLE_SIDED]." +msgstr "" +"如果为 [code]true[/code],则反转网格的背面剔除。可用于一个背后有灯光的平面网" +"格。如果需要在该网格的两侧投射阴影,请使用 [constant GeometryInstance3D." +"SHADOW_CASTING_SETTING_DOUBLE_SIDED],将该网格设置为使用双面阴影。" + msgid "Constant for accessing [member light_energy]." msgstr "用于访问 [member light_energy] 的常量。" @@ -43104,10 +58413,147 @@ msgstr "" "量。只在 [member ProjectSettings.rendering/lights_and_shadows/" "use_physical_light_units] 为 [code]true[/code] 时使用。" +msgid "" +"Light is ignored when baking. This is the fastest mode, but the light will " +"be taken into account when baking global illumination. This mode should " +"generally be used for dynamic lights that change quickly, as the effect of " +"global illumination is less noticeable on those lights.\n" +"[b]Note:[/b] Hiding a light does [i]not[/i] affect baking [LightmapGI]. " +"Hiding a light will still affect baking [VoxelGI] and SDFGI (see [member " +"Environment.sdfgi_enabled)." +msgstr "" +"烘焙时灯光将被忽略。这是最快的模式,但是在烘焙全局照明时仍会考虑该灯光。该模" +"式通常应用于快速变化的动态灯光,因为全局照明的效果在这些灯光上不太明显。\n" +"[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." +msgstr "" +"在静态烘焙([VoxelGI]、[LightmapGI]、SDFGI([member Environment." +"sdfgi_enabled]))时,考虑了灯光。灯光可以四处移动或修改,但其全局照明不会实" +"时更新。这适用于细微的变化(例如闪烁的手电筒),但通常不适用于大的变化,例如" +"打开和关闭灯光。" + +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 " +"with global illumination updating in real-time. The light's global " +"illumination appearance will be slightly different compared to [constant " +"BAKE_STATIC]. This has a greater performance cost compared to [constant " +"BAKE_STATIC]." +msgstr "" +"在动态烘焙(仅 [VoxelGI] 和 SDFGI([member Environment.sdfgi_enabled]))时," +"考虑了灯光。灯光可以四处移动或修改,而且全局照明会实时更新。与 [constant " +"BAKE_STATIC] 相比,灯光的全局照明外观会略有不同。与 [constant BAKE_STATIC] 相" +"比,这具有更大的性能成本。" + msgid "Computes and stores baked lightmaps for fast global illumination." msgstr "计算并存储烘焙光照贴图,以实现快速全局照明。" msgid "" +"The [LightmapGI] node is used to compute and store baked lightmaps. " +"Lightmaps are used to provide high-quality indirect lighting with very " +"little light leaking. [LightmapGI] can also provide rough reflections using " +"spherical harmonics if [member directional] is enabled. Dynamic objects can " +"receive indirect lighting thanks to [i]light probes[/i], which can be " +"automatically placed by setting [member generate_probes_subdiv] to a value " +"other than [constant GENERATE_PROBES_DISABLED]. Additional lightmap probes " +"can also be added by creating [LightmapProbe] nodes. The downside is that " +"lightmaps are fully static and cannot be baked in an exported project. " +"Baking a [LightmapGI] node is also slower compared to [VoxelGI].\n" +"[b]Procedural generation:[/b] Lightmap baking functionality is only " +"available in the editor. This means [LightmapGI] is not suited to " +"procedurally generated or user-built levels. For procedurally generated or " +"user-built levels, use [VoxelGI] or SDFGI instead (see [member Environment." +"sdfgi_enabled]).\n" +"[b]Performance:[/b] [LightmapGI] provides the best possible run-time " +"performance for global illumination. It is suitable for low-end hardware " +"including integrated graphics and mobile devices.\n" +"[b]Note:[/b] Due to how lightmaps work, most properties only have a visible " +"effect once lightmaps are baked again.\n" +"[b]Note:[/b] Lightmap baking on [CSGShape3D]s and [PrimitiveMesh]es is not " +"supported, as these cannot store UV2 data required for baking.\n" +"[b]Note:[/b] If no custom lightmappers are installed, [LightmapGI] can only " +"be baked when using the Vulkan backend (Forward+ or Mobile), not OpenGL." +msgstr "" +"[LightmapGI] 节点用于计算和存储烘焙的光照贴图。光照贴图用于提供高质量的间接照" +"明,并且漏光很少。如果启用 [member directional],[LightmapGI] 还可以使用球谐" +"函数,以提供粗略的反射。由于[i]光照探针[/i],动态物体可以接收间接光照,可以通" +"过将 [member generate_probes_subdiv] 设置为 [constant " +"GENERATE_PROBES_DISABLED] 以外的值,来自动放置光照探针。也可以通过创建 " +"[LightmapProbe] 节点,来添加额外的光照贴图探针。缺点是光照贴图是完全静态的," +"不能在导出的项目中烘焙。与 [VoxelGI] 相比,烘焙 [LightmapGI] 节点也更慢。\n" +"[b]程序生成:[/b]光照贴图烘焙功能仅在编辑器中可用。这意味着 [LightmapGI] 不适" +"合程序生成或用户构建的关卡。对于程序生成或用户构建的关卡,请改用 [VoxelGI] " +"或 SDFGI(请参阅 [member Environment.sdfgi_enabled])。\n" +"[b]性能:[/b][LightmapGI] 为全局照明提供最佳的运行时性能。它适用于包括集成显" +"卡和移动设备在内的低端硬件。\n" +"[b]注意:[/b]由于光照贴图的工作方式,大多数属性只有在光照贴图被再次烘焙后,才" +"会产生可见效果。\n" +"[b]注意:[/b]不支持在 [CSGShape3D] 和 [PrimitiveMesh] 上烘焙光照贴图,因为它" +"们无法存储烘焙所需的 UV2 数据。\n" +"[b]注意:[/b]如果没有安装自定义光照贴图,[LightmapGI] 只能在使用 Vulkan 后端" +"(Forward+ 或 Mobile)时进行烘焙,而不能在使用 OpenGL 时烘焙。" + +msgid "" +"The bias to use when computing shadows. Increasing [member bias] can fix " +"shadow acne on the resulting baked lightmap, but can introduce peter-panning " +"(shadows not connecting to their casters). Real-time [Light3D] shadows are " +"not affected by this [member bias] property." +msgstr "" +"计算阴影时使用的偏差。增加 [member bias] 可以修复生成的烘焙光照贴图上的阴影粉" +"刺,但会引入阴影悬浮(阴影未连接到其障碍物)。实时 [Light3D] 阴影不受该 " +"[member bias] 属性的影响。" + +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 " +"bake times. If set to [code]0[/code], only environment lighting, direct " +"light and emissive lighting is baked." +msgstr "" +"烘焙过程中考虑的光反弹次数。较高的值会产生更明亮、更逼真的光线,但代价是更长" +"的烘焙时间。如果设置为 [code]0[/code],则仅烘焙环境光线、直接光线和自发光光" +"线。" + +msgid "" +"The [CameraAttributes] resource that specifies exposure levels to bake at. " +"Auto-exposure and non exposure properties will be ignored. Exposure settings " +"should be used to reduce the dynamic range present when baking. If exposure " +"is too high, the [LightmapGI] will have banding artifacts or may have over-" +"exposure artifacts." +msgstr "" +"[CameraAttributes] 资源,指定要烘焙的曝光级别。自动曝光和非曝光属性将被忽略。" +"应该使用曝光设置来减少烘焙时出现的动态范围。如果曝光度太高,[LightmapGI] 将出" +"现带状伪影,或可能出现过度曝光伪影。" + +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]). 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])。方向信息还" +"用于为静态和动态对象提供粗略的反射。这有一个小的运行时性能成本,因为着色器必" +"须执行更多的工作,来解释来自光照贴图的方向信息。定向光照贴图也需要更长的时间" +"来烘焙并产生更大的文件大小。\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]." msgstr "" @@ -43132,10 +58578,74 @@ msgid "The environment mode to use when baking lightmaps." msgstr "烘焙光照贴图时使用的环境模式。" msgid "" +"The level of subdivision to use when automatically generating " +"[LightmapProbe]s for dynamic object lighting. Higher values result in more " +"accurate indirect lighting on dynamic objects, at the cost of longer bake " +"times and larger file sizes.\n" +"[b]Note:[/b] Automatically generated [LightmapProbe]s are not visible as " +"nodes in the Scene tree dock, and cannot be modified this way after they are " +"generated.\n" +"[b]Note:[/b] Regardless of [member generate_probes_subdiv], direct lighting " +"on dynamic objects is always applied using [Light3D] nodes in real-time." +msgstr "" +"为动态对象照明自动生成 [LightmapProbe] 时使用的细分级别。较高的值会在动态对象" +"上产生更准确的间接照明,但代价是更长的烘焙时间和更大的文件大小。\n" +"[b]注意:[/b]自动生成的 [LightmapProbe],不作为在场景树停靠面板中的节点可见," +"并且生成后无法通过这种方式修改。\n" +"[b]注意:[/b]不管 [member generate_probes_subdiv],动态对象上的直接光照,总是" +"使用 [Light3D] 节点实时应用。" + +msgid "" "If [code]true[/code], ignore environment lighting when baking lightmaps." msgstr "如果为 [code]true[/code],则会在烘焙光照贴图时忽略环境光照。" msgid "" +"The [LightmapGIData] associated to this [LightmapGI] node. This resource is " +"automatically created after baking, and is not meant to be created manually." +msgstr "" +"与该 [LightmapGI] 节点关联的 [LightmapGIData]。该资源是在烘焙后自动创建的,并" +"不意味着要手动创建。" + +msgid "" +"The maximum texture size for the generated texture atlas. Higher values will " +"result in fewer slices being generated, but may not work on all hardware as " +"a result of hardware limitations on texture sizes. Leave [member " +"max_texture_size] at its default value of [code]16384[/code] if unsure." +msgstr "" +"生成的纹理图集的最大纹理大小。更高的值将导致生成的切片更少,但由于硬件对纹理" +"大小的限制,可能无法在所有硬件上工作。如果不确定,请将 [member " +"max_texture_size] 保留为其默认值 [code]16384[/code]。" + +msgid "" +"The quality preset to use when baking lightmaps. This affects bake times, " +"but output file sizes remain mostly identical across quality levels.\n" +"To further speed up bake times, decrease [member bounces], disable [member " +"use_denoiser] and increase the lightmap texel size on 3D scenes in the " +"Import doc." +msgstr "" +"烘焙光照贴图时使用的质量预设。这会影响烘焙时间,但输出文件的大小在所有质量级" +"别上基本相同。\n" +"要进一步加快烘焙时间,请在导入停靠面板中减少 [member bounces]、禁用 [member " +"use_denoiser]、并增加 3D 场景的光照贴图纹素大小。" + +msgid "" +"If [code]true[/code], uses a CPU-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.\n" +"[b]Note:[/b] The built-in denoiser (OpenImageDenoise) may crash when " +"denoising lightmaps in large scenes. If you encounter a crash at the end of " +"lightmap baking, try disabling [member use_denoiser]." +msgstr "" +"如果为 [code]true[/code],则在生成的光照贴图上,使用基于 CPU 的降噪算法。这以" +"更长的烘焙时间为代价,消除了生成的光照贴图中的大部分噪点。尽管无损压缩在压缩" +"降噪图像方面可能做得更好,但使用降噪器通常不会显著影响文件大小。\n" +"[b]注意:[/b]在大场景中对光照贴图进行降噪时,内置降噪器(OpenImageDenoise)可" +"能会崩溃。如果在光照贴图烘焙结束时遇到崩溃,请尝试禁用 [member " +"use_denoiser]。" + +msgid "" "Low bake quality (fastest bake times). The quality of this preset can be " "adjusted by changing [member ProjectSettings.rendering/lightmapping/" "bake_quality/low_quality_ray_count] and [member ProjectSettings.rendering/" @@ -43179,6 +58689,9 @@ msgstr "" "ProjectSettings.rendering/lightmapping/bake_quality/" "ultra_quality_probe_ray_count] 来调整此预设的质量。" +msgid "Don't generate lightmap probes for lighting dynamic objects." +msgstr "不要为光照动态对象生成光照贴图探针。" + msgid "Lowest level of subdivision (fastest bake times, smallest file sizes)." msgstr "最低级别的细分(烘焙时间最快,文件大小最小)。" @@ -43215,15 +58728,50 @@ msgid "" msgstr "光照贴图烘焙失败,原因是资源中没有配置 [LightmapGIData] 保存路径。" msgid "" +"Lightmap baking failed as there are no meshes whose [member " +"GeometryInstance3D.gi_mode] is [constant GeometryInstance3D.GI_MODE_STATIC] " +"and with valid UV2 mapping in the current scene. You may need to select 3D " +"scenes in the Import dock and change their global illumination mode " +"accordingly." +msgstr "" +"光照贴图烘焙失败,原因是当前场景中没有 [member GeometryInstance3D.gi_mode] " +"为 [constant GeometryInstance3D.GI_MODE_STATIC] 且具有有效 UV2 映射的网格。可" +"能需要在导入停靠面板中选择 3D 场景,并相应地更改它们的全局照明模式。" + +msgid "" +"Lightmap baking failed as the lightmapper failed to analyze some of the " +"meshes marked as static for baking." +msgstr "" +"光照贴图烘焙失败,原因是光照贴图器无法分析一些标记为静态的网格以进行烘焙。" + +msgid "" "Lightmap baking failed as the resulting image couldn't be saved or imported " "by Godot after it was saved." msgstr "" "光照贴图烘焙失败,原因是最终的图像无法保存,或保存后无法被 Godot 导入。" +msgid "" +"The user aborted the lightmap baking operation (typically by clicking the " +"[b]Cancel[/b] button in the progress dialog)." +msgstr "" +"用户中止了光照贴图烘焙操作(通常通过点击进度对话框中的[b]取消[/b]按钮)。" + msgid "Ignore environment lighting when baking lightmaps." msgstr "烘焙光照贴图时忽略环境光照。" msgid "" +"Use the scene's environment lighting when baking lightmaps.\n" +"[b]Note:[/b] If baking lightmaps in a scene with no [WorldEnvironment] node, " +"this will act like [constant ENVIRONMENT_MODE_DISABLED]. The editor's " +"preview sky and sun is [i]not[/i] taken into account by [LightmapGI] when " +"baking lightmaps." +msgstr "" +"烘焙光照贴图时,使用场景的环境光照。\n" +"[b]注意:[/b]如果在没有 [WorldEnvironment] 节点的场景中烘焙光照贴图,这将表现" +"得像 [constant ENVIRONMENT_MODE_DISABLED]。在烘焙光照贴图时,[LightmapGI] [i]" +"不会[/i]考虑编辑器的预览天空和太阳。" + +msgid "" "Use [member environment_custom_sky] as a source of environment lighting when " "baking lightmaps." msgstr "" @@ -43237,6 +58785,31 @@ msgstr "" "烘焙光照贴图时,使用 [member environment_custom_color] 和 [member " "environment_custom_energy] 相乘的结果作为环境光照的恒定来源。" +msgid "Contains baked lightmap and dynamic object probe data for [LightmapGI]." +msgstr "包含用于 [LightmapGI] 的烘焙光照贴图和动态对象探测数据。" + +msgid "" +"[LightmapGIData] contains baked lightmap and dynamic object probe data for " +"[LightmapGI]. It is replaced every time lightmaps are baked in [LightmapGI]." +msgstr "" +"[LightmapGIData] 包含用于 [LightmapGI] 的烘焙光照贴图和动态对象探测数据。在 " +"[LightmapGI] 中每当光照贴图被烘焙时都会替换它。" + +msgid "Adds an object that is considered baked within this [LightmapGIData]." +msgstr "添加一个在该 [LightmapGIData] 中被视为已烘焙的对象。" + +msgid "" +"Clear all objects that are considered baked within this [LightmapGIData]." +msgstr "清除在该 [LightmapGIData] 中被视为已烘焙的所有对象。" + +msgid "" +"Returns the number of objects that are considered baked within this " +"[LightmapGIData]." +msgstr "返回在该 [LightmapGIData] 中被视为烘焙的对象的数量。" + +msgid "Returns the [NodePath] of the baked object at index [param user_idx]." +msgstr "返回索引 [param user_idx] 处烘焙对象的 [NodePath]。" + msgid "" "If [code]true[/code], lightmaps were baked with directional information. See " "also [member LightmapGI.directional]." @@ -43331,6 +58904,13 @@ msgstr "" msgid "The [OccluderPolygon2D] used to compute the shadow." msgstr "用于计算阴影的 [OccluderPolygon2D]。" +msgid "" +"The LightOccluder2D's occluder light mask. The LightOccluder2D will cast " +"shadows only from Light2D(s) that have the same light mask(s)." +msgstr "" +"LightOccluder2D 的遮挡器光照掩码。LightOccluder2D 将仅从具有相同光照掩码的 " +"Light2D 投射阴影。" + msgid "A 2D line." msgstr "2D 直线。" @@ -43366,6 +58946,18 @@ msgid "Removes the point at index [param index] from the line." msgstr "移除该直线中索引为 [param index] 的点。" msgid "" +"Overwrites the position of the point at index [param index] with the " +"supplied [param position]." +msgstr "用提供的 [param position] 覆盖索引 [param index] 处的点的位置。" + +msgid "" +"If [code]true[/code], the line'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 "" "Controls the style of the line's first point. Use [enum LineCapMode] " "constants." msgstr "控制直线的第一个点的样式。使用 [enum LineCapMode] 常量。" @@ -43456,12 +59048,107 @@ msgid "" "Takes the left pixels of the texture and renders it over the whole line." msgstr "获取纹理的左侧像素并在整个线条上渲染它。" +msgid "" +"Tiles the texture over the line. [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 line. [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 "Control that provides single-line string editing." msgstr "提供单行字符串编辑功能的控件。" +msgid "" +"LineEdit provides a single-line string editor, used for text fields.\n" +"It features many built-in shortcuts which will always be available " +"([kbd]Ctrl[/kbd] here maps to [kbd]Cmd[/kbd] on macOS):\n" +"- [kbd]Ctrl + C[/kbd]: Copy\n" +"- [kbd]Ctrl + X[/kbd]: Cut\n" +"- [kbd]Ctrl + V[/kbd] or [kbd]Ctrl + Y[/kbd]: Paste/\"yank\"\n" +"- [kbd]Ctrl + Z[/kbd]: Undo\n" +"- [kbd]Ctrl + ~[/kbd]: Swap input direction.\n" +"- [kbd]Ctrl + Shift + Z[/kbd]: Redo\n" +"- [kbd]Ctrl + U[/kbd]: Delete text from the caret position to the beginning " +"of the line\n" +"- [kbd]Ctrl + K[/kbd]: Delete text from the caret position to the end of the " +"line\n" +"- [kbd]Ctrl + A[/kbd]: Select all text\n" +"- [kbd]Up Arrow[/kbd]/[kbd]Down Arrow[/kbd]: Move the caret to the beginning/" +"end of the line\n" +"On macOS, some extra keyboard shortcuts are available:\n" +"- [kbd]Ctrl + F[/kbd]: Same as [kbd]Right Arrow[/kbd], move the caret one " +"character right\n" +"- [kbd]Ctrl + B[/kbd]: Same as [kbd]Left Arrow[/kbd], move the caret one " +"character left\n" +"- [kbd]Ctrl + P[/kbd]: Same as [kbd]Up Arrow[/kbd], move the caret to the " +"previous line\n" +"- [kbd]Ctrl + N[/kbd]: Same as [kbd]Down Arrow[/kbd], move the caret to the " +"next line\n" +"- [kbd]Ctrl + D[/kbd]: Same as [kbd]Delete[/kbd], delete the character on " +"the right side of caret\n" +"- [kbd]Ctrl + H[/kbd]: Same as [kbd]Backspace[/kbd], delete the character on " +"the left side of the caret\n" +"- [kbd]Ctrl + A[/kbd]: Same as [kbd]Home[/kbd], move the caret to the " +"beginning of the line\n" +"- [kbd]Ctrl + E[/kbd]: Same as [kbd]End[/kbd], move the caret to the end of " +"the line\n" +"- [kbd]Cmd + Left Arrow[/kbd]: Same as [kbd]Home[/kbd], move the caret to " +"the beginning of the line\n" +"- [kbd]Cmd + Right Arrow[/kbd]: Same as [kbd]End[/kbd], move the caret to " +"the end of the line" +msgstr "" +"LineEdit 提供了一个单行字符串编辑器,用于文本字段。\n" +"它具有许多始终可用的内置快捷键(此处的 [kbd]Ctrl[/kbd] 映射到 macOS 上的 " +"[kbd]Cmd[/kbd]):\n" +"- [kbd]Ctrl + C[/kbd]:复制\n" +"- [kbd]Ctrl + X[/kbd]:剪切\n" +"- [kbd]Ctrl + V[/kbd] 或 [kbd]Ctrl + Y[/kbd]:粘贴/“拉扯”n\n" +"- [kbd]Ctrl + Z[/kbd]:撤销\n" +"- [kbd]Ctrl + ~[/kbd]:交换输入方向\n" +"- [kbd]Ctrl + Shift + Z[/kbd]:重做\n" +"- [kbd]Ctrl + U[/kbd]:删除从文本光标位置到行首的文本\n" +"- [kbd]Ctrl + K[/kbd]:删除从文本光标位置到行尾的文本\n" +"- [kbd]Ctrl + A[/kbd]:选择所有文本\n" +"- [kbd]Up Arrow[/kbd]/[kbd]Down Arrow[/kbd]:将文本光标移动到行首/行尾\n" +"在 macOS 上,有一些额外的键盘快捷键可用:\n" +"- [kbd]Ctrl + F[/kbd]:同 [kbd]Right Arrow[/kbd],将文本光标向右移动一个字" +"符\n" +"- [kbd]Ctrl + B[/kbd]:同 [kbd]Left Arrow[/kbd],将文本光标向左移动一个字符\n" +"- [kbd]Ctrl + P[/kbd]:同 [kbd]Up Arrow[/kbd],将文本光标移动到上一行\n" +"- [kbd]Ctrl + N[/kbd]:同 [kbd]Down Arrow[/kbd],将文本光标移动到下一行\n" +"- [kbd]Ctrl + D[/kbd]:同 [kbd]Delete[/kbd],删除文本光标右侧的字符\n" +"- [kbd]Ctrl + H[/kbd]:同 [kbd]Backspace[/kbd],删除文本光标左侧的字符\n" +"- [kbd]Ctrl + A[/kbd]:同 [kbd]Home[/kbd],将文本光标移动到行首\n" +"- [kbd]Ctrl + E[/kbd]:同 [kbd]End[/kbd],将文本光标移动到行首尾\n" +"- [kbd]Cmd + Left Arrow[/kbd]:同 [kbd]Home[/kbd],将文本光标移动到行首\n" +"- [kbd]Cmd + Right Arrow[/kbd]:同 [kbd]End[/kbd],将文本光标移动到行尾" + msgid "Erases the [LineEdit]'s [member text]." msgstr "擦除 [LineEdit] 的 [member text]。" +msgid "" +"Deletes one character at the caret's current position (equivalent to " +"pressing [kbd]Delete[/kbd])." +msgstr "删除光标当前位置处的一个字符(相当于按 [kbd]Delete[/kbd])。" + +msgid "" +"Deletes a section of the [member text] going from position [param " +"from_column] to [param to_column]. Both parameters should be within the " +"text's length." +msgstr "" +"删除 [member text] 中从起始列 [param from_column] 到结束列 [param to_column] " +"的部分。两个参数都应该在文本的长度之内。" + msgid "Clears the current selection." msgstr "清除当前选择。" @@ -43557,6 +59244,11 @@ msgstr "" "[b]警告:[/b]这是一个必需的内部节点,移除和释放它可能会导致崩溃。如果希望隐藏" "它或它的任何子节点,请使用它们的 [member Window.visible] 属性。" +msgid "" +"Returns the scroll offset due to [member caret_column], as a number of " +"characters." +msgstr "返回 [member caret_column] 引起的滚动偏移量,单位为字符数。" + msgid "Returns the selection begin column." msgstr "返回选择的开始列。" @@ -43643,6 +59335,15 @@ msgstr "" "如果为 [code]true[/code],则该 [LineEdit] 会始终显示光标,即使焦点丢失。" msgid "" +"Allow moving caret, selecting and removing the individual composite " +"character components.\n" +"[b]Note:[/b] [kbd]Backspace[/kbd] is always removing individual composite " +"character components." +msgstr "" +"允许在单个复合字符的组件中进行移动光标、选中、删除的操作。\n" +"[b]注意:[/b]退格键 [kbd]Backspace[/kbd] 始终按复合字符的组件删除。" + +msgid "" "If [code]true[/code], the [LineEdit] will show a clear button if [code]text[/" "code] is not empty, which can be used to clear the text quickly." msgstr "" @@ -43765,6 +59466,11 @@ msgstr "" "secret_character])。" msgid "" +"The character to use to mask secret input (defaults to \"•\"). Only a single " +"character can be used as the secret character." +msgstr "用于掩盖秘密输入的字符(默认为“•”)。只能用一个字符作为秘密字符。" + +msgid "" "If [code]true[/code], the [LineEdit] will select the whole text when it " "gains focus." msgstr "如果为 [code]true[/code],则在获得焦点时会全选文本。" @@ -43815,6 +59521,16 @@ msgstr "剪切(复制并删除)选中的文本。" msgid "Copies the selected text." msgstr "复制选中的文本。" +msgid "" +"Pastes the clipboard text over the selected text (or at the caret's " +"position).\n" +"Non-printable escape characters are automatically stripped from the OS " +"clipboard via [method String.strip_escapes]." +msgstr "" +"将剪贴板中的文本粘贴到选中文本之上(或者文本光标位置)。\n" +"会使用 [method String.strip_escapes] 自动剥离操作系统剪贴板中不可打印的转义字" +"符。" + msgid "Erases the whole [LineEdit] text." msgstr "删除 [LineEdit] 中的全部文本。" @@ -43930,6 +59646,22 @@ msgstr "禁用编辑时的字体颜色。" msgid "Color of the selection rectangle." msgstr "选择矩形的颜色。" +msgid "" +"The caret's width in pixels. Greater values can be used to improve " +"accessibility by ensuring the caret is easily visible, or to ensure " +"consistency with a large font size." +msgstr "" +"文本光标的像素宽度。使用较大的数值可以提高可访问性,使文本光标更加显眼,或者" +"确保文本与较大字体尺寸的一致性。" + +msgid "" +"Minimum horizontal space for the text (not counting the clear button and " +"content margins). This value is measured in count of 'M' characters (i.e. " +"this number of 'M' characters can be displayed without scrolling)." +msgstr "" +"文本的最小水平空间(不包括清除按钮和内容边距)。这个值以“M”字符的数量来衡量" +"(即能够在不滚动的情况下显示这么多个“M”字符)。" + msgid "Font used for the text." msgstr "文本使用的字体。" @@ -43982,6 +59714,48 @@ msgid "" "for the available modes." msgstr "文本的下划线模式。可用模式见 [enum LinkButton.UnderlineMode]。" +msgid "" +"The [url=https://en.wikipedia.org/wiki/Uniform_Resource_Identifier]URI[/url] " +"for this [LinkButton]. If set to a valid URI, pressing the button opens the " +"URI using the operating system's default program for the protocol (via " +"[method OS.shell_open]). HTTP and HTTPS URLs open the default web browser.\n" +"[b]Examples:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"uri = \"https://godotengine.org\" # Opens the URL in the default web " +"browser.\n" +"uri = \"C:\\SomeFolder\" # Opens the file explorer at the given path.\n" +"uri = \"C:\\SomeImage.png\" # Opens the given image in the default viewing " +"app.\n" +"[/gdscript]\n" +"[csharp]\n" +"Uri = \"https://godotengine.org\"; // Opens the URL in the default web " +"browser.\n" +"Uri = \"C:\\SomeFolder\"; // Opens the file explorer at the given path.\n" +"Uri = \"C:\\SomeImage.png\"; // Opens the given image in the default viewing " +"app.\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"这个 [LinkButton] 的 [url=https://zh.wikipedia.org/wiki/" +"%E7%BB%9F%E4%B8%80%E8%B5%84%E6%BA%90%E6%A0%87%E5%BF%97%E7%AC%A6]URI[/url]。如" +"果设置为有效的 URI,按下按钮就会使用操作系统中与该协议对应的默认程序打开该 " +"URI(使用 [method OS.shell_open])。HTTP 和 HTTPS 的 URL 会打开默认的浏览" +"器。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"uri = \"https://godotengine.org\" # 在默认浏览器中打开 URL。\n" +"uri = \"C:\\SomeFolder\" # 将文件浏览器打开到给定的路径。\n" +"uri = \"C:\\SomeImage.png\" # 在默认查看应用中打开给定的图像。\n" +"[/gdscript]\n" +"[csharp]\n" +"Uri = \"https://godotengine.org\"; // 在默认浏览器中打开 URL。\n" +"Uri = \"C:\\SomeFolder\"; // 将文件浏览器打开到给定的路径。\n" +"Uri = \"C:\\SomeImage.png\"; // 在默认查看应用中打开给定的图像。\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "The LinkButton will always show an underline at the bottom of its text." msgstr "LinkButton 将始终在其文本底部显示下划线。" @@ -44182,6 +59956,18 @@ msgstr "" "如果实现,该方法必须返回一个布尔值。[code]true[/code] 会结束主循环,而 " "[code]false[/code] 会让它继续下一帧。" +msgid "" +"Called each process (idle) frame with the time since the last process frame " +"as argument (in seconds). Equivalent to [method Node._process].\n" +"If implemented, the method must return a boolean value. [code]true[/code] " +"ends the main loop, while [code]false[/code] lets it proceed to the next " +"frame." +msgstr "" +"使用自上一个进程帧以来的时间作为参数(单位为秒),在每个进程(空闲)帧上被调" +"用。相当于 [method Node._process]。\n" +"如果被实现,该方法必须返回一个布尔值。[code]true[/code] 会结束主循环,而 " +"[code]false[/code] 会让它继续到下一帧。" + msgid "Emitted when a user responds to a permission request." msgstr "当用户对权限请求作出反应时发出。" @@ -44242,6 +60028,26 @@ msgstr "" "当应用程序暂停时,从操作系统收到的通知。\n" "仅限 Android 平台。" +msgid "" +"Notification received from the OS when the application is focused, i.e. when " +"changing the focus from the OS desktop or a thirdparty application to any " +"open window of the Godot instance.\n" +"Implemented on desktop platforms." +msgstr "" +"当应用程序获得焦点时从操作系统收到的通知,即焦点将从操作系统桌面或第三方应用" +"程序更改为 Godot 实例的任何一个打开窗口时。\n" +"在桌面平台上被实现。" + +msgid "" +"Notification received from the OS when the application is defocused, i.e. " +"when changing the focus from any open window of the Godot instance to the OS " +"desktop or a thirdparty application.\n" +"Implemented on desktop platforms." +msgstr "" +"当应用程序失去焦点时从操作系统收到通知,即焦点将从 Godot 实例的任何一个打开窗" +"口,更改为操作系统桌面或第三方应用程序时。\n" +"在桌面平台上被实现。" + msgid "Notification received when text server is changed." msgstr "文本服务器被更改时,收到的通知。" @@ -44249,6 +60055,56 @@ msgid "Simple margin container." msgstr "简单的边距容器。" msgid "" +"Adds a top, left, bottom, and right margin to all [Control] nodes that are " +"direct children of the container. To control the [MarginContainer]'s margin, " +"use the [code]margin_*[/code] theme properties listed below.\n" +"[b]Note:[/b] Be careful, [Control] margin values are different from the " +"constant margin values. If you want to change the custom margin values of " +"the [MarginContainer] by code, you should use the following examples:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# This code sample assumes the current script is extending MarginContainer.\n" +"var margin_value = 100\n" +"add_theme_constant_override(\"margin_top\", margin_value)\n" +"add_theme_constant_override(\"margin_left\", margin_value)\n" +"add_theme_constant_override(\"margin_bottom\", margin_value)\n" +"add_theme_constant_override(\"margin_right\", margin_value)\n" +"[/gdscript]\n" +"[csharp]\n" +"// This code sample assumes the current script is extending " +"MarginContainer.\n" +"int marginValue = 100;\n" +"AddThemeConstantOverride(\"margin_top\", marginValue);\n" +"AddThemeConstantOverride(\"margin_left\", marginValue);\n" +"AddThemeConstantOverride(\"margin_bottom\", marginValue);\n" +"AddThemeConstantOverride(\"margin_right\", marginValue);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"为该容器的直接子级 [Control] 节点添加上边距、左边距、下边距以及右边距。要控" +"制 [MarginContainer] 的边距,请使用下列 [code]margin_*[/code] 主题属性。\n" +"[b]注意:[/b]请注意,[Control] 的边距值与常量边距值不同。如果想要通过代码更" +"改 [MarginContainer] 的自定义边距值,应使用以下示例:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 这段代码示例要求当前脚本扩展的是 MarginContainer。\n" +"var margin_value = 100\n" +"add_theme_constant_override(\"margin_top\", margin_value)\n" +"add_theme_constant_override(\"margin_left\", margin_value)\n" +"add_theme_constant_override(\"margin_bottom\", margin_value)\n" +"add_theme_constant_override(\"margin_right\", margin_value)\n" +"[/gdscript]\n" +"[csharp]\n" +"// 这段代码示例要求当前脚本扩展的是 MarginContainer。\n" +"int marginValue = 100;\n" +"AddThemeConstantOverride(\"margin_top\", marginValue);\n" +"AddThemeConstantOverride(\"margin_left\", marginValue);\n" +"AddThemeConstantOverride(\"margin_bottom\", marginValue);\n" +"AddThemeConstantOverride(\"margin_right\", marginValue);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "All direct children of [MarginContainer] will have a bottom margin of " "[code]margin_bottom[/code] pixels." msgstr "" @@ -44459,6 +60315,9 @@ msgstr "" "如果为 [code]true[/code],则 [MenuBar] 会在支持系统全局菜单时使用系统全局菜" "单。" +msgid "Position in the global menu to insert first [MenuBar] item at." +msgstr "在全局菜单中插入第一个 [MenuBar] 项目的位置。" + msgid "" "If [code]true[/code], when the cursor hovers above menu item, it will close " "the current [PopupMenu] and open the other one." @@ -44560,6 +60419,13 @@ msgstr "" "它或它的任何子节点,请使用其 [member Window.visible] 属性。" msgid "" +"Adjusts popup position and sizing for the [MenuButton], then shows the " +"[PopupMenu]. Prefer this over using [code]get_popup().popup()[/code]." +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 [code]switch_on_hover[/code] enabled, " "it will close the current [MenuButton] and open the other one." @@ -44759,6 +60625,15 @@ msgstr "" "PRIMITIVE_TRIANGLES]、[constant PRIMITIVE_TRIANGLE_STRIP]。" msgid "" +"Returns the smallest [AABB] enclosing this mesh in local space. Not affected " +"by [code]custom_aabb[/code].\n" +"[b]Note:[/b] This is only implemented for [ArrayMesh] and [PrimitiveMesh]." +msgstr "" +"返回局部空间中包围这个网格的最小 [AABB]。不受 [code]custom_aabb[/code] 的影" +"响。\n" +"[b]注意:[/b]只针对 [ArrayMesh] 和 [PrimitiveMesh] 进行了实现。" + +msgid "" "Returns all the vertices that make up the faces of the mesh. Each three " "vertices represent one triangle." msgstr "返回网格中所有构成面的顶点。每三个顶点代表一个三角形。" @@ -44776,6 +60651,9 @@ msgstr "" msgid "Returns the blend shape arrays for the requested surface." msgstr "返回请求表面的混合形状数组。" +msgid "Sets a hint to be used for lightmap resolution." +msgstr "设置用于光照贴图分辨率的提示。" + msgid "Render array as points (one vertex equals one point)." msgstr "将数组渲染为点(一个顶点对应一个点)。" @@ -44867,6 +60745,44 @@ msgstr "" "[constant ARRAY_CUSTOM_RG_HALF] 或 [constant ARRAY_CUSTOM_RGBA_HALF],则为 " "[PackedByteArray]。否则为 [PackedFloat32Array]。" +msgid "" +"[PackedFloat32Array] or [PackedInt32Array] of bone indices. Contains either " +"4 or 8 numbers per vertex depending on the presence of the [constant " +"ARRAY_FLAG_USE_8_BONE_WEIGHTS] flag." +msgstr "" +"骨骼索引的 [PackedFloat32Array] 或 [PackedInt32Array]。每个顶点包含 4 个还是 " +"8 个数字取决于是否存在 [constant ARRAY_FLAG_USE_8_BONE_WEIGHTS] 标志。" + +msgid "" +"[PackedFloat32Array] or [PackedFloat64Array] of bone weights in the range " +"[code]0.0[/code] to [code]1.0[/code] (inclusive). Contains either 4 or 8 " +"numbers per vertex depending on the presence of the [constant " +"ARRAY_FLAG_USE_8_BONE_WEIGHTS] flag." +msgstr "" +"骨骼权重的 [PackedFloat32Array] 或 [PackedInt32Array],取值范围为 [code]0.0[/" +"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*'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* 个顶点、法" +"线、切线、颜色、UV 等。这意味着,如果想要沿着一条边有不同的法线或颜色,则必须" +"复制这些顶点。\n" +"对于三角形,索引数组被解释为三元组,指代每个三角形的顶点。对于线条,索引数组" +"成对表示每条线的开始和结束。" + msgid "Represents the size of the [enum ArrayType] enum." msgstr "代表 [enum ArrayType] 枚举的大小。" @@ -44966,6 +60882,15 @@ msgstr "网格数组包含骨骼权重。" msgid "Mesh array uses indices." msgstr "网格数组使用索引。" +msgid "Mask of mesh channels permitted in blend shapes." +msgstr "混合形状中允许使用的网格通道的掩码。" + +msgid "Shift of first custom channel." +msgstr "第一个自定义通道的移位量。" + +msgid "Number of format bits per custom channel. See [enum ArrayCustomFormat]." +msgstr "每个自定义通道的格式位数。请参阅 [enum ArrayCustomFormat]。" + msgid "Amount to shift [enum ArrayCustomFormat] for custom channel index 0." msgstr "自定义通道索引 0 需要对 [enum ArrayCustomFormat] 进行的按位移动量。" @@ -44978,9 +60903,41 @@ msgstr "自定义通道索引 2 需要对 [enum ArrayCustomFormat] 进行的按 msgid "Amount to shift [enum ArrayCustomFormat] for custom channel index 3." msgstr "自定义通道索引 3 需要对 [enum ArrayCustomFormat] 进行的按位移动量。" +msgid "" +"Mask of custom format bits per custom channel. Must be shifted by one of the " +"SHIFT constants. See [enum ArrayCustomFormat]." +msgstr "" +"每个自定义通道的自定义格式位掩码。必须按 SHIFT 常量之一进行移位。请参阅 " +"[enum ArrayCustomFormat]。" + +msgid "" +"Shift of first compress flag. Compress flags should be passed to [method " +"ArrayMesh.add_surface_from_arrays] and [method SurfaceTool.commit]." +msgstr "" +"第一个压缩标志的移位。压缩标志应该被传递给 [method ArrayMesh." +"add_surface_from_arrays] 和 [method SurfaceTool.commit]。" + msgid "Flag used to mark that the array contains 2D vertices." msgstr "用于标记包含 2D 顶点的数组的标志。" +msgid "" +"Flag indices that the mesh data will use [code]GL_DYNAMIC_DRAW[/code] on " +"GLES. Unused on Vulkan." +msgstr "" +"网格数据将在 GLES 上使用 [code]GL_DYNAMIC_DRAW[/code] 的标记索引。在 Vulkan " +"上未被使用。" + +msgid "" +"Flag used to mark that the mesh contains up to 8 bone influences per vertex. " +"This flag indicates that [constant ARRAY_BONES] and [constant ARRAY_WEIGHTS] " +"elements will have double length." +msgstr "" +"用于标记网格每个顶点最多包含 8 个骨骼影响的标志。该标志表示 [constant " +"ARRAY_BONES] 和 [constant ARRAY_WEIGHTS] 元素将具有双倍长度。" + +msgid "Flag used to mark that the mesh intentionally contains no vertex array." +msgstr "用于标记网格有意不包含顶点数组的标志。" + msgid "Blend shapes are normalized." msgstr "混合形状是被归一化了的。" @@ -44990,6 +60947,114 @@ msgstr "混合形状是相对于基础的权重。" msgid "Helper tool to access and edit [Mesh] data." msgstr "用于访问和编辑 [Mesh] 数据的辅助工具。" +msgid "" +"MeshDataTool provides access to individual vertices in a [Mesh]. It allows " +"users to read and edit vertex data of meshes. It also creates an array of " +"faces and edges.\n" +"To use MeshDataTool, load a mesh with [method create_from_surface]. When you " +"are finished editing the data commit the data to a mesh with [method " +"commit_to_surface].\n" +"Below is an example of how MeshDataTool may be used.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var mesh = ArrayMesh.new()\n" +"mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, BoxMesh.new()." +"get_mesh_arrays())\n" +"var mdt = MeshDataTool.new()\n" +"mdt.create_from_surface(mesh, 0)\n" +"for i in range(mdt.get_vertex_count()):\n" +" var vertex = mdt.get_vertex(i)\n" +" # In this example we extend the mesh by one unit, which results in " +"separated faces as it is flat shaded.\n" +" vertex += mdt.get_vertex_normal(i)\n" +" # Save your change.\n" +" mdt.set_vertex(i, vertex)\n" +"mesh.surface_remove(0)\n" +"mdt.commit_to_surface(mesh)\n" +"var mi = MeshInstance.new()\n" +"mi.mesh = mesh\n" +"add_child(mi)\n" +"[/gdscript]\n" +"[csharp]\n" +"var mesh = new ArrayMesh();\n" +"mesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, new BoxMesh()." +"GetMeshArrays());\n" +"var mdt = new MeshDataTool();\n" +"mdt.CreateFromSurface(mesh, 0);\n" +"for (var i = 0; i < mdt.GetVertexCount(); i++)\n" +"{\n" +" Vector3 vertex = mdt.GetVertex(i);\n" +" // In this example we extend the mesh by one unit, which results in " +"separated faces as it is flat shaded.\n" +" vertex += mdt.GetVertexNormal(i);\n" +" // Save your change.\n" +" mdt.SetVertex(i, vertex);\n" +"}\n" +"mesh.SurfaceRemove(0);\n" +"mdt.CommitToSurface(mesh);\n" +"var mi = new MeshInstance();\n" +"mi.Mesh = mesh;\n" +"AddChild(mi);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"See also [ArrayMesh], [ImmediateMesh] and [SurfaceTool] for procedural " +"geometry generation.\n" +"[b]Note:[/b] Godot uses clockwise [url=https://learnopengl.com/Advanced-" +"OpenGL/Face-culling]winding order[/url] for front faces of triangle " +"primitive modes." +msgstr "" +"MeshDataTool 提供对 [Mesh] 中各个顶点的访问。它允许用户读取和编辑网格的顶点数" +"据。它还创建了一系列面和边。\n" +"要使用 MeshDataTool,请使用 [method create_from_surface] 加载一个网格。完成数" +"据编辑后,使用 [method commit_to_surface] 将数据提交到一个网格。\n" +"下面是如何使用 MeshDataTool 的示例。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var mesh = ArrayMesh.new()\n" +"mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, BoxMesh.new()." +"get_mesh_arrays())\n" +"var mdt = MeshDataTool.new()\n" +"mdt.create_from_surface(mesh, 0)\n" +"for i in range(mdt.get_vertex_count()):\n" +" var vertex = mdt.get_vertex(i)\n" +" # 在这个例子中,我们将网格挤出一个单位,这会导致分离的面,因为它是平直着" +"色的。\n" +" vertex += mdt.get_vertex_normal(i)\n" +" # 保存你的更改。\n" +" mdt.set_vertex(i, vertex)\n" +"mesh.surface_remove(0)\n" +"mdt.commit_to_surface(mesh)\n" +"var mi = MeshInstance.new()\n" +"mi.mesh = mesh\n" +"add_child(mi)\n" +"[/gdscript]\n" +"[csharp]\n" +"var mesh = new ArrayMesh();\n" +"mesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, new BoxMesh()." +"GetMeshArrays());\n" +"var mdt = new MeshDataTool();\n" +"mdt.CreateFromSurface(mesh, 0);\n" +"for (var i = 0; i < mdt.GetVertexCount(); i++)\n" +"{\n" +" Vector3 vertex = mdt.GetVertex(i);\n" +" // 在这个例子中,我们将网格挤出一个单位,这会导致分离的面,因为它是平直着" +"色的。\n" +" vertex += mdt.GetVertexNormal(i);\n" +" // 保存你的更改。\n" +" mdt.SetVertex(i, vertex);\n" +"}\n" +"mesh.SurfaceRemove(0);\n" +"mdt.CommitToSurface(mesh);\n" +"var mi = new MeshInstance();\n" +"mi.Mesh = mesh;\n" +"AddChild(mi);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"另请参阅 [ArrayMesh]、[ImmediateMesh]、和 [SurfaceTool],以了解程序化几何生" +"成。\n" +"[b]注意:[/b]对于三角形基元模式的前面,Godot 使用顺时针[url=https://" +"learnopengl.com/Advanced-OpenGL/Face-culling]缠绕顺序[/url]。" + msgid "Clears all data currently in MeshDataTool." msgstr "将当前 MeshDataTool 中所有的数据全部清除。" @@ -45044,6 +61109,20 @@ msgstr "" "返回给定面的指定顶点。\n" "顶点参数必须是 0、1、2 之一,因为面包含 3 个顶点。" +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 " +"normals would return a format of [code]3[/code] because [constant Mesh." +"ARRAY_FORMAT_VERTEX] is [code]1[/code] and [constant Mesh." +"ARRAY_FORMAT_NORMAL] is [code]2[/code].\n" +"See [enum Mesh.ArrayFormat] for a list of format flags." +msgstr "" +"返回该 [Mesh] 的格式。该格式是一个整数,由 [Mesh] 格式标志组合在一起组成。例" +"如,包含顶点和法线的网格将返回为 [code]3[/code] 的格式,因为 [constant Mesh." +"ARRAY_FORMAT_VERTEX] 是 [code]1[/code],而 [constant Mesh." +"ARRAY_FORMAT_NORMAL] 是 [code]2[/code]。\n" +"有关格式标志的列表,请参阅 [enum Mesh.ArrayFormat]。" + msgid "Returns the material assigned to the [Mesh]." msgstr "返回分配给该 [Mesh] 的材质。" @@ -45122,12 +61201,29 @@ msgstr "设置给定顶点的骨骼权重。" msgid "Node used for displaying a [Mesh] in 2D." msgstr "用于在 2D 中显示 [Mesh] 的节点。" +msgid "" +"Node used for displaying a [Mesh] in 2D. A [MeshInstance2D] can be " +"automatically created from an existing [Sprite2D] via a tool in the editor " +"toolbar. Select the [Sprite2D] node, then choose [b]Sprite2D > Convert to " +"MeshInstance2D[/b] at the top of the 2D editor viewport." +msgstr "" +"用于在 2D 中显示 [Mesh] 的节点。可以通过编辑器工具栏中的工具,从现有的 " +"[Sprite2D] 自动创建 [MeshInstance2D]。请选中该 [Sprite2D] 节点,然后在 2D 编" +"辑器视口的顶部选择 [b]Sprite2D > 转换为 MeshInstance2D[/b]。" + msgid "2D meshes" msgstr "2D 网格" msgid "The [Mesh] that will be drawn by the [MeshInstance2D]." msgstr "该 [MeshInstance2D] 绘制的 [Mesh]。" +msgid "" +"The [Texture2D] that will be used if using the default [CanvasItemMaterial]. " +"Can be accessed as [code]TEXTURE[/code] in CanvasItem shader." +msgstr "" +"使用默认 [CanvasItemMaterial] 时,将使用的 [Texture2D]。可以在 CanvasItem 着" +"色器中作为 [code]TEXTURE[/code] 访问。" + msgid "Emitted when the [member texture] is changed." msgstr "当 [member texture] 被改变时触发。" @@ -45166,6 +61262,30 @@ msgstr "" "顶点的数量。默认情况下是禁用的。" msgid "" +"This helper creates a [MeshInstance3D] child node with gizmos at every " +"vertex calculated from the mesh geometry. It's mainly used for testing." +msgstr "" +"该助手创建一个 [MeshInstance3D] 子节点,该子节点在每个顶点处都有小工具,这些" +"顶点是根据该网格几何体计算出的。它主要用于测试。" + +msgid "" +"This helper creates a [StaticBody3D] child node with multiple " +"[ConvexPolygonShape3D] collision shapes calculated from the mesh geometry " +"via convex decomposition. It's mainly used for testing." +msgstr "" +"该助手创建了一个 [StaticBody3D] 子节点,其中包含多个 [ConvexPolygonShape3D] " +"碰撞形状,这些形状是通过凸面分解从网格几何体中计算出来的。它主要用于测试。" + +msgid "" +"This helper creates a [StaticBody3D] child node with a " +"[ConcavePolygonShape3D] collision shape calculated from the mesh geometry. " +"It's mainly used for testing." +msgstr "" +"该助手创建一个 [StaticBody3D] 子节点,该子节点具有一个 " +"[ConcavePolygonShape3D] 碰撞形状,该形状是根据网格几何体计算出来的。它主要用" +"于测试。" + +msgid "" "Returns the index of the blend shape with the given [param name]. Returns " "[code]-1[/code] if no blend shape with this name exists, including when " "[member mesh] is [code]null[/code]." @@ -45192,6 +61312,12 @@ msgstr "" "回 [code]null[/code]。" msgid "" +"Returns the number of blend shapes available. Produces an error if [member " +"mesh] is [code]null[/code]." +msgstr "" +"返回可用混合形状的数量。如果 [member mesh] 为 [code]null[/code] 则会报错。" + +msgid "" "Returns the value of the blend shape at the given [param blend_shape_idx]. " "Returns [code]0.0[/code] and produces an error if [member mesh] is " "[code]null[/code] or doesn't have a blend shape at that index." @@ -45201,6 +61327,16 @@ msgstr "" "个错误。" msgid "" +"Returns the override [Material] for the specified [param surface] of the " +"[Mesh] resource." +msgstr "返回用于 [Mesh] 资源的指定表面 [param surface] 的覆盖 [Material]。" + +msgid "" +"Returns the number of surface override materials. This is equivalent to " +"[method Mesh.get_surface_count]." +msgstr "返回表面覆盖材质的数量。相当于 [method Mesh.get_surface_count]。" + +msgid "" "Sets the value of the blend shape at [param blend_shape_idx] to [param " "value]. Produces an error if [member mesh] is [code]null[/code] or doesn't " "have a blend shape at that index." @@ -45209,9 +61345,20 @@ msgstr "" "[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]." +msgstr "" +"为 [Mesh] 资源的指定表面 [param surface] 设置覆盖 [Material]。与该材质关联的" +"是这个 [MeshInstance3D],不是 [member mesh]。" + msgid "The [Mesh] resource for the instance." msgstr "该实例的 [Mesh] 资源。" +msgid "[NodePath] to the [Skeleton3D] associated with the instance." +msgstr "到与此实例关联的 [Skeleton3D] 的 [NodePath]。" + msgid "The [Skin] to be used by this instance." msgstr "该实例要使用的 [Skin]。" @@ -45312,6 +61459,16 @@ msgstr "设置应用于该项的导航网格的变换。" msgid "Sets a texture to use as the item's preview icon in the editor." msgstr "在编辑器中设置要用作该项预览图标的纹理。" +msgid "" +"Sets an item's collision shapes.\n" +"The array should consist of [Shape3D] objects, each followed by a " +"[Transform3D] that will be applied to it. For shapes that should not have a " +"transform, use [constant Transform3D.IDENTITY]." +msgstr "" +"设置某个项目的碰撞形状。\n" +"该数组应由 [Shape3D] 对象组成,每个对象后跟一个将应用于它的 [Transform3D]。对" +"于不应具有变换的形状,请使用 [constant Transform3D.IDENTITY]。" + msgid "Simple texture that uses a mesh to draw itself." msgstr "简单的纹理,使用一个网格来绘制自己。" @@ -45403,6 +61560,33 @@ msgid "Generic mobile VR implementation." msgstr "通用移动 VR 实现。" msgid "" +"This is a generic mobile VR implementation where you need to provide details " +"about the phone and HMD used. It does not rely on any existing framework. " +"This is the most basic interface we have. For the best effect, you need a " +"mobile phone with a gyroscope and accelerometer.\n" +"Note that even though there is no positional tracking, the camera will " +"assume the headset is at a height of 1.85 meters. You can change this by " +"setting [member eye_height].\n" +"You can initialize this interface as follows:\n" +"[codeblock]\n" +"var interface = XRServer.find_interface(\"Native mobile\")\n" +"if interface and interface.initialize():\n" +" get_viewport().xr = true\n" +"[/codeblock]" +msgstr "" +"这是一个通用的移动 VR 实现,你需要提供有关所用手机和 HMD 的详细信息。它不依赖" +"于任何现有框架。这是我们拥有的最基本的接口。为了获得最佳效果,你需要一部带有" +"陀螺仪和加速度计的手机。\n" +"请注意,即使没有位置跟踪,相机也会假定头戴设备处于 1.85 米的高度。可以通过设" +"置 [member eye_height] 来更改该设置。\n" +"可以按如下方式初始化该接口:\n" +"[codeblock]\n" +"var interface = XRServer.find_interface(\"Native mobile\")\n" +"if interface and interface.initialize():\n" +" get_viewport().xr = true\n" +"[/codeblock]" + +msgid "" "The distance between the display and the lenses inside of the device in " "centimeters." msgstr "显示器与设备内部镜片之间的距离,单位为厘米。" @@ -45411,6 +61595,11 @@ msgid "The width of the display in centimeters." msgstr "显示器的宽度,单位为厘米。" msgid "" +"The height at which the camera is placed in relation to the ground (i.e. " +"[XROrigin3D] node)." +msgstr "相机相对于地面所处的高度(即相对于 [XROrigin3D] 节点)。" + +msgid "" "The interocular distance, also known as the interpupillary distance. The " "distance between the pupils of the left and right eye." msgstr "眼间距离,也称为瞳孔间距离。左眼和右眼瞳孔之间的距离。" @@ -45437,6 +61626,172 @@ 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_path[/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_path[/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 " +"Hz if [method _get_audio_mix_rate] is not overridden." +msgstr "" +"当引擎请求用于录制音频的音频采样率时调用。返回的值必须以 Hz 为单位指定。如果 " +"[method _get_audio_mix_rate] 未被重写,则默认为 48000 Hz。" + +msgid "" +"Called when the audio speaker mode used for recording the audio is requested " +"by the engine. This can affect the number of output channels in the " +"resulting audio file/stream. Defaults to [constant AudioServer." +"SPEAKER_MODE_STEREO] if [method _get_audio_speaker_mode] is not overridden." +msgstr "" +"当引擎请求用于录制音频的音频扬声器模式时调用。这可能会影响生成的音频文件/流中" +"的输出通道数。如果 [method _get_audio_speaker_mode] 未被重写,则默认为 " +"[constant AudioServer.SPEAKER_MODE_STEREO]。" + +msgid "" +"Called when the engine determines whether this [MovieWriter] is able to " +"handle the file at [param path]. Must return [code]true[/code] if this " +"[MovieWriter] is able to handle the given file path, [code]false[/code] " +"otherwise. Typically, [method _handles_file] is overridden as follows to " +"allow the user to record a file at any path with a given file extension:\n" +"[codeblock]\n" +"func _handles_file(path):\n" +" # Allows specifying an output file with a `.mkv` file extension (case-" +"insensitive),\n" +" # either in the Project Settings or with the `--write-movie <path>` " +"command line argument.\n" +" return path.get_extension().to_lower() == \"mkv\"\n" +"[/codeblock]" +msgstr "" +"当引擎确定该 [MovieWriter] 是否能够处理位于 [param path] 的文件时调用。如果" +"该 [MovieWriter] 能够处理给定的文件路径,则必须返回 [code]true[/code],否则返" +"回 [code]false[/code]。通常,[method _handles_file] 如下被重写,以允许用户使" +"用给定文件扩展名,在任何路径下记录一个文件:\n" +"[codeblock]\n" +"func _handles_file(path):\n" +" # 允许指定一个带有 `.mkv` 文件扩展名(不区分大小写)的输出文件,\n" +" # 在项目设置中或使用 `--write-movie <path>` 命令行参数。\n" +" return path.get_extension().to_lower() == \"mkv\"\n" +"[/codeblock]" + +msgid "" +"Called once before the engine starts writing video and audio data. [param " +"movie_size] is the width and height of the video to save. [param fps] is the " +"number of frames per second specified in the project settings or using the " +"[code]--fixed-fps <fps>[/code] [url=$DOCS_URL/tutorials/editor/" +"command_line_tutorial.html]command line argument[/url]." +msgstr "" +"在引擎开始写入视频和音频数据之前调用一次。[param movie_size] 是要保存的视频的" +"宽度和高度。[param fps] 是指定的每秒帧数,在项目设置中、或使用 [code]--fixed-" +"fps <fps>[/code][url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]" +"《命令行参数》[/url]指定。" + +msgid "" +"Called when the engine finishes writing. This occurs when the engine quits " +"by pressing the window manager's close button, or when [method SceneTree." +"quit] is called.\n" +"[b]Note:[/b] Pressing [kbd]Ctrl + C[/kbd] on the terminal running the editor/" +"project does [i]not[/i] result in [method _write_end] being called." +msgstr "" +"当引擎完成写入时调用。当引擎通过按下窗口管理器的关闭按钮退出时,或调用 " +"[method SceneTree.quit] 时,会发生这种情况。\n" +"[b]注意:[/b]在运行编辑器/项目的终端上,按 [kbd]Ctrl + C[/kbd],[i]不会[/i]导" +"致 [method _write_end] 被调用。" + +msgid "" +"Called at the end of every rendered frame. The [param frame_image] and " +"[param audio_frame_block] function arguments should be written to." +msgstr "" +"在每个渲染的帧结束时被调用。应写入 [param frame_image] 和 [param " +"audio_frame_block] 函数参数。" + +msgid "" +"Adds a writer to be usable by the engine. The supported file extensions can " +"be set by overriding [method _handles_file].\n" +"[b]Note:[/b] [method add_writer] must be called early enough in the engine " +"initialization to work, as movie writing is designed to start at the same " +"time as the rest of the engine." +msgstr "" +"添加一个可供引擎使用的编写器。可以通过重写 [method _handles_file],来设置支持" +"的文件扩展名。\n" +"[b]注意:[/b][method add_writer] 必须在引擎初始化期间尽早调用才能工作,因为电" +"影编写被设计为与引擎的其余部分同时启动。" + +msgid "" +"Provides high-performance drawing of a mesh multiple times using GPU " +"instancing." +msgstr "使用 GPU 实例提供单一网格的高性能多次绘制。" + +msgid "" "MultiMesh provides low-level mesh instancing. Drawing thousands of " "[MeshInstance3D] nodes can be slow, since each object is submitted to the " "GPU then drawn individually.\n" @@ -45471,6 +61826,9 @@ msgstr "使用 MultiMeshInstance 动画化数千条鱼" msgid "Optimization using MultiMeshes" msgstr "使用 MultiMesh 进行优化" +msgid "Returns the visibility axis-aligned bounding box in local space." +msgstr "返回局部空间中的可见性轴对齐包围框。" + msgid "Gets a specific instance's color multiplier." msgstr "获取特定实例的颜色倍数。" @@ -45484,6 +61842,23 @@ msgid "Returns the [Transform2D] of a specific instance." msgstr "返回指定实例的 [Transform2D]。" msgid "" +"Sets the color of a specific instance by [i]multiplying[/i] the mesh's " +"existing vertex colors. This allows for different color tinting per " +"instance.\n" +"For the color to take effect, ensure that [member use_colors] is [code]true[/" +"code] on the [MultiMesh] and [member BaseMaterial3D." +"vertex_color_use_as_albedo] is [code]true[/code] on the material. If you " +"intend to set an absolute color instead of tinting, make sure the material's " +"albedo color is set to pure white ([code]Color(1, 1, 1)[/code])." +msgstr "" +"设置一个特定实例的颜色,通过[i]乘以[/i]该网格的现有顶点颜色来设置。这允许每个" +"实例使用不同的颜色。\n" +"要使颜色生效,请确保该 [MultiMesh] 上的 [member use_colors] 为 [code]true[/" +"code],并且材质上的 [member BaseMaterial3D.vertex_color_use_as_albedo] 为 " +"[code]true[/code]。如果打算设置绝对颜色而不是着色,请确保材质的反照率颜色被设" +"置为纯白色 ([code]Color(1, 1, 1)[/code])。" + +msgid "" "Sets custom data for a specific instance. Although [Color] is used, it is " "just a container for 4 floating point numbers.\n" "For the custom data to be used, ensure that [member use_custom_data] is " @@ -45510,6 +61885,26 @@ msgstr "见 [method set_instance_color]。" msgid "See [method set_instance_custom_data]." msgstr "见 [method set_instance_custom_data]。" +msgid "" +"Number of instances that will get drawn. This clears and (re)sizes the " +"buffers. Setting data format or flags afterwards will have no effect.\n" +"By default, all instances are drawn but you can limit this with [member " +"visible_instance_count]." +msgstr "" +"将被绘制的实例数。这会清除缓冲区,并(重新)调整其大小。之后设置的数据格式或" +"标志将无效。\n" +"默认情况下,所有实例都会被绘制,但可以使用 [member visible_instance_count] 来" +"限制它。" + +msgid "" +"[Mesh] resource to be instanced.\n" +"The looks of the individual instances can be modified using [method " +"set_instance_color] and [method set_instance_custom_data]." +msgstr "" +"要被实例化的 [Mesh] 资源。\n" +"各个实例的外观可以通过 [method set_instance_color] 和 [method " +"set_instance_custom_data] 来修改。" + msgid "See [method set_instance_transform_2d]." msgstr "见 [method set_instance_transform_2d]。" @@ -45520,6 +61915,28 @@ msgid "Format of transform used to transform mesh, either 2D or 3D." msgstr "用于变换网格的变换格式,可以是 2D 或 3D。" msgid "" +"If [code]true[/code], the [MultiMesh] will use color data (see [method " +"set_instance_color]). Can only be set when [member instance_count] is " +"[code]0[/code] or less. This means that you need to call this method before " +"setting the instance count, or temporarily reset it to [code]0[/code]." +msgstr "" +"如果为 [code]true[/code],则该 [MultiMesh] 将使用颜色数据(参见 [method " +"set_instance_color])。只有在 [member instance_count] 为 [code]0[/code] 或更" +"少时才能被设置。这意味着需要在设置实例计数之前调用该方法,或者暂时将实例计数" +"重置为 [code]0[/code]。" + +msgid "" +"If [code]true[/code], the [MultiMesh] will use custom data (see [method " +"set_instance_custom_data]). Can only be set when [member instance_count] is " +"[code]0[/code] or less. This means that you need to call this method before " +"setting the instance count, or temporarily reset it to [code]0[/code]." +msgstr "" +"如果为 [code]true[/code],则该 [MultiMesh] 将使用自定义数据(参见 [method " +"set_instance_custom_data])。只有在 [member instance_count] 为 [code]0[/" +"code] 或更少时才能被设置。这意味着需要在设置实例计数之前调用该方法,或者暂时" +"将实例计数重置为 [code]0[/code]。" + +msgid "" "Limits the number of instances drawn, -1 draws all instances. Changing this " "does not change the sizes of the buffers." msgstr "" @@ -45561,13 +61978,57 @@ msgstr "" msgid "Using MultiMeshInstance" msgstr "使用 MultiMeshInstance" +msgid "" +"The [MultiMesh] resource that will be used and shared among all instances of " +"the [MultiMeshInstance3D]." +msgstr "" +"将在 [MultiMeshInstance3D] 的所有实例之间,使用和共享的 [MultiMesh] 资源。" + msgid "High-level multiplayer API interface." msgstr "高阶多人游戏 API 接口。" +msgid "" +"Base class for high-level multiplayer API implementations. See also " +"[MultiplayerPeer].\n" +"By default, [SceneTree] has a reference to an implementation of this class " +"and uses it to provide multiplayer capabilities (i.e. RPCs) across the whole " +"scene.\n" +"It is possible to override the MultiplayerAPI instance used by specific tree " +"branches by calling the [method SceneTree.set_multiplayer] method, " +"effectively allowing to run both client and server in the same scene.\n" +"It is also possible to extend or replace the default implementation via " +"scripting or native extensions. See [MultiplayerAPIExtension] for details " +"about extensions, [SceneMultiplayer] for the details about the default " +"implementation." +msgstr "" +"用于高级多人游戏 API 实现的基类。另请参阅 [MultiplayerPeer]。\n" +"默认情况下,[SceneTree] 引用了这个类的一个实现,并使用它来提供跨整个场景的多" +"人游戏功能(即 RPC)。\n" +"可以通过调用 [method SceneTree.set_multiplayer] 方法,覆盖特定树分支使用的 " +"MultiplayerAPI 实例,从而有效地允许在同一场景中同时运行客户端和服务器。\n" +"也可以通过脚本或本地扩展来扩展或替换默认实现。有关扩展的详细信息,请参阅 " +"[MultiplayerAPIExtension];有关默认实现的详细信息,请参阅 " +"[SceneMultiplayer]。" + msgid "Returns a new instance of the default MultiplayerAPI." msgstr "返回默认 MultiplayerAPI 的新实例。" msgid "" +"Returns the default MultiplayerAPI implementation class name. This is " +"usually [code]\"SceneMultiplayer\"[/code] when [SceneMultiplayer] is " +"available. See [method set_default_interface]." +msgstr "" +"返回默认的 MultiplayerAPI 实现类名称。[SceneMultiplayer] 可用时通常为 " +"[code]\"SceneMultiplayer\"[/code]。见 [method set_default_interface]。" + +msgid "" +"Returns the peer IDs of all connected peers of this MultiplayerAPI's [member " +"multiplayer_peer]." +msgstr "" +"返回这个 MultiplayerAPI 的 [member multiplayer_peer] 所有已连接对等体的对等" +"体 ID。" + +msgid "" "Returns the sender's peer ID for the RPC currently being executed.\n" "[b]Note:[/b] If not inside an RPC this method will return 0." msgstr "" @@ -45575,6 +62036,116 @@ msgstr "" "[b]注意:[/b]如果不在 RPC 内,这个方法将返回 0。" msgid "" +"Returns the unique peer ID of this MultiplayerAPI's [member " +"multiplayer_peer]." +msgstr "返回这个 MultiplayerAPI 的 [member multiplayer_peer] 唯一对等体 ID。" + +msgid "Returns [code]true[/code] if there is a [member multiplayer_peer] set." +msgstr "如果设置了 [member multiplayer_peer],则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this MultiplayerAPI's [member multiplayer_peer] " +"is valid and in server mode (listening for connections)." +msgstr "" +"如果这个 MultiplayerAPI 的 [member multiplayer_peer] 有效,且处于服务器模式" +"(监听连接),则返回 [code]true[/code]。" + +msgid "" +"Notifies the MultiplayerAPI of a new [param configuration] for the given " +"[param object]. This method is used internally by [SceneTree] to configure " +"the root path for this MultiplayerAPI (passing [code]null[/code] and a valid " +"[NodePath] as [param configuration]). This method can be further used by " +"MultiplayerAPI implementations to provide additional features, refer to " +"specific implementation (e.g. [SceneMultiplayer]) for details on how they " +"use it.\n" +"[b]Note:[/b] This method is mostly relevant when extending or overriding the " +"MultiplayerAPI behavior via [MultiplayerAPIExtension]." +msgstr "" +"通知该 MultiplayerAPI,以添加用于给定 [param object] 的新的 [param " +"configuration]。该方法在内部被 [SceneTree] 使用,以配置该 MultiplayerAPI 的根" +"路径(传入 [code]null[/code] 并将一个有效的 [NodePath] 作为 [param " +"configuration])。该方法可以进一步被 MultiplayerAPI 实现使用,以提供其他功" +"能,有关如何使用它的详细信息,请参阅具体实现(例如 [SceneMultiplayer])。\n" +"[b]注意:[/b]当通过 [MultiplayerAPIExtension] 扩展或重写 MultiplayerAPI 行为" +"时,该方法最相关。" + +msgid "" +"Notifies the MultiplayerAPI to remove a [param configuration] for the given " +"[param object]. This method is used internally by [SceneTree] to configure " +"the root path for this MultiplayerAPI (passing [code]null[/code] and an " +"empty [NodePath] as [param configuration]). This method can be further used " +"by MultiplayerAPI implementations to provide additional features, refer to " +"specific implementation (e.g. [SceneMultiplayer]) for details on how they " +"use it.\n" +"[b]Note:[/b] This method is mostly relevant when extending or overriding the " +"MultiplayerAPI behavior via [MultiplayerAPIExtension]." +msgstr "" +"通知该 MultiplayerAPI,以移除用于给定 [param object] 的 [param " +"configuration]。该方法在内部被 [SceneTree] 使用,以配置该 MultiplayerAPI 的根" +"路径(传入 [code]null[/code] 并将一个空的 [NodePath] 作为 [param " +"configuration])。该方法可以进一步被 MultiplayerAPI 实现使用,以提供其他功" +"能,有关如何使用它的详细信息,请参阅具体实现(例如 [SceneMultiplayer])。\n" +"[b]注意:[/b]当通过 [MultiplayerAPIExtension] 扩展或重写 MultiplayerAPI 行为" +"时,该方法最相关。" + +msgid "" +"Method used for polling the MultiplayerAPI. You only need to worry about " +"this if you set [member SceneTree.multiplayer_poll] to [code]false[/code]. " +"By default, [SceneTree] will poll its MultiplayerAPI(s) for you.\n" +"[b]Note:[/b] This method results in RPCs being called, so they will be " +"executed in the same context of this function (e.g. [code]_process[/code], " +"[code]physics[/code], [Thread])." +msgstr "" +"用于轮询 MultiplayerAPI 的方法。如果将 [member SceneTree.multiplayer_poll] 设" +"置为 [code]false[/code],才需要担心这一点。默认情况下,[SceneTree] 将为轮询" +"其 MultiplayerAPI。\n" +"[b]注意:[/b]该方法会导致 RPC 被调用,因此它们将在该函数的同一上下文中被执行" +"(例如 [code]_process[/code]、[code]physics[/code]、[Thread])。" + +msgid "" +"Sends an RPC to the target [param peer]. The given [param method] will be " +"called on the remote [param object] with the provided [param arguments]. The " +"RPC may also be called locally depending on the implementation and RPC " +"configuration. See [method Node.rpc] and [method Node.rpc_config].\n" +"[b]Note:[/b] Prefer using [method Node.rpc], [method Node.rpc_id], or " +"[code]my_method.rpc(peer, arg1, arg2, ...)[/code] (in GDScript), since they " +"are faster. This method is mostly useful in conjunction with " +"[MultiplayerAPIExtension] when augmenting or replacing the multiplayer " +"capabilities." +msgstr "" +"向目标对等体 [param peer] 发送 RPC。会使用提供的参数 [param arguments] 在远程" +"对象 [param object] 上调用给定的方法 [param method]。根据实现和 RPC 配置," +"RPC 可能也可以进行本地调用。见 [method Node.rpc] 和 [method Node." +"rpc_config]。\n" +"[b]注意:[/b]请尽量使用 [method Node.rpc]、[method Node.rpc_id] 或 " +"[code]my_method.rpc(peer, arg1, arg2, ...)[/code](适用于 GDScript),因为速" +"度更快。这个方法主要用于 [MultiplayerAPIExtension] 进行多人游戏能力的增强和替" +"换。" + +msgid "" +"Sets the default MultiplayerAPI implementation class. This method can be " +"used by modules and extensions to configure which implementation will be " +"used by [SceneTree] when the engine starts." +msgstr "" +"设置默认的 MultiplayerAPI 实现类。模块和扩展可以使用这个方法来配置引擎启动时 " +"[SceneTree] 将使用哪个实现。" + +msgid "" +"The peer object to handle the RPC system (effectively enabling networking " +"when set). Depending on the peer itself, the MultiplayerAPI will become a " +"network server (check with [method is_server]) and will set root node's " +"network mode to authority, or it will become a regular client peer. All " +"child nodes are set to inherit the network mode by default. Handling of " +"networking-related events (connection, disconnection, new clients) is done " +"by connecting to MultiplayerAPI's signals." +msgstr "" +"处理 RPC 系统的对等体对象(设置后会启用网络)。根据对等体本身的不同,该 " +"MultiplayerAPI 可能会成为网络服务器(使用 [method is_server] 判断)并将根节点" +"的网络模式设置为控制者,也可能会成为普通的客户端对等体。所有子节点默认会继承" +"其网络模式。网络相关事件(连接、断开连接、新客户端)的处理是通过连接 " +"MultiplayerAPI 的信号来完成的。" + +msgid "" "Emitted when this MultiplayerAPI's [member multiplayer_peer] successfully " "connected to a server. Only emitted on clients." msgstr "" @@ -45613,9 +62184,198 @@ msgstr "" "当此 MultiplayerAPI 的 [member multiplayer_peer] 与服务器断开连接时发出。仅在" "客户端上发出。" +msgid "" +"Used with [method Node.rpc_config] to disable a method or property for all " +"RPC calls, making it unavailable. Default for all methods." +msgstr "" +"在 [method Node.rpc_config] 中使用,可以为所有 RPC 调用禁用某个方法或属性,使" +"其不可用。所有方法的默认值。" + +msgid "" +"Used with [method Node.rpc_config] to set a method to be callable remotely " +"by any peer. Analogous to the [code]@rpc(\"any_peer\")[/code] annotation. " +"Calls are accepted from all remote peers, no matter if they are node's " +"authority or not." +msgstr "" +"在 [method Node.rpc_config] 中使用,可以将某个方法设置为能够被任何对等体远程" +"调用。类似于 [code]@rpc(\"any_peer\")[/code] 注解。接受来自所有远程对等体的调" +"用,无论是否为节点的控制者。" + +msgid "" +"Used with [method Node.rpc_config] to set a method to be callable remotely " +"only by the current multiplayer authority (which is the server by default). " +"Analogous to the [code]@rpc(\"authority\")[/code] annotation. See [method " +"Node.set_multiplayer_authority]." +msgstr "" +"在 [method Node.rpc_config] 中使用,可以将某个方法设置为仅能够被当前的多人控" +"制者远程调用(默认为服务器)。类似于 [code]@rpc(\"authority\")[/code] 注解。" +"见 [method Node.set_multiplayer_authority]。" + 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 passthourgh 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" +"# Log RPC being made and forward it to the default multiplayer.\n" +"func _rpc(peer: int, object: Object, method: StringName, args: Array) -> " +"int: # 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) -> int: # 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) -> int: # 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" +"# 记录正在进行的 RPC 并将其转发到默认的多人游戏。\n" +"func _rpc(peer: int, object: Object, method: StringName, args: Array) -> " +"int: # 错误代码\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) -> int: # 错误代码\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) -> int: # 错误代" +"码\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] 时调用。" + msgid "Callback for [method MultiplayerAPI.get_peers]." msgstr "[method MultiplayerAPI.get_peers] 的回调。" @@ -45637,23 +62397,147 @@ msgstr "[method MultiplayerAPI.poll] 的回调。" msgid "Callback for [method MultiplayerAPI.rpc]." msgstr "[method MultiplayerAPI.rpc] 的回调。" +msgid "Called when the [member MultiplayerAPI.multiplayer_peer] is set." +msgstr "在设置 [member MultiplayerAPI.multiplayer_peer] 时调用。" + msgid "" "Abstract class for specialized [PacketPeer]s used by the [MultiplayerAPI]." msgstr "特化 [PacketPeer] 的抽象类,[MultiplayerAPI] 会用到。" +msgid "" +"Manages the connection with one or more remote peers acting as server or " +"client and assigning unique IDs to each of them. See also [MultiplayerAPI].\n" +"[b]Note:[/b] The [MultiplayerAPI] protocol is an implementation detail and " +"isn't meant to be used by non-Godot servers. It may change without notice.\n" +"[b]Note:[/b] When exporting to Android, make sure to enable the " +"[code]INTERNET[/code] permission in the Android export preset before " +"exporting the project or using one-click deploy. Otherwise, network " +"communication of any kind will be blocked by Android." +msgstr "" +"管理与一个或多个作为服务器或客户端的远程对等体的连接,并为每个对等体分配唯一" +"的 ID。另请参阅 [MultiplayerAPI]。\n" +"[b]注意:[/b][MultiplayerAPI] 协议是一个实现细节,并不打算由非 Godot 服务器使" +"用。它可能会更改,恕不另行通知。\n" +"[b]注意:[/b]当导出到 Android 时,在导出项目或使用一键部署之前,确保在 " +"Android 导出预设中启用了 [code]INTERNET[/code] 权限。否则,任何类型的网络通信" +"都会被安卓阻止。" + msgid "WebRTC Signaling Demo" msgstr "WebRTC 信号演示" msgid "" +"Immediately close the multiplayer peer returning to the state [constant " +"CONNECTION_DISCONNECTED]. Connected peers will be dropped without emitting " +"[signal peer_disconnected]." +msgstr "" +"立即关闭多人对等体,返回到 [constant CONNECTION_DISCONNECTED] 状态。已连接的" +"对等体将被丢弃,不会发出 [signal peer_disconnected]。" + +msgid "" +"Disconnects the given [param peer] from this host. If [param force] is " +"[code]true[/code] the [signal peer_disconnected] signal will not be emitted " +"for this peer." +msgstr "" +"断开给定的 [param peer] 与该主机的连接。如果 [param force] 为 [code]true[/" +"code],则不会为该对等体发出 [signal peer_disconnected] 信号。" + +msgid "" +"Returns a randomly generated integer that can be used as a network unique ID." +msgstr "返回随机生成的整数,可用作网络唯一 ID。" + +msgid "" "Returns the current state of the connection. See [enum ConnectionStatus]." msgstr "返回连接的当前状态。见 [enum ConnectionStatus]。" +msgid "" +"Returns the channel over which the next available packet was received. See " +"[method PacketPeer.get_available_packet_count]." +msgstr "" +"返回下一个可用数据包被接收使用的通道。请参阅 [method PacketPeer." +"get_available_packet_count]。" + +msgid "" +"Returns the [enum MultiplayerPeer.TransferMode] the remote peer used to send " +"the next available packet. See [method PacketPeer." +"get_available_packet_count]." +msgstr "" +"返回用于发送下一个可用数据包的远程对等体的 [enum MultiplayerPeer." +"TransferMode]。请参阅 [method PacketPeer.get_available_packet_count]。" + +msgid "" +"Returns the ID of the [MultiplayerPeer] who sent the next available packet. " +"See [method PacketPeer.get_available_packet_count]." +msgstr "" +"返回发送下一个可用数据包的 [MultiplayerPee] 的 ID。见 [method PacketPeer." +"get_available_packet_count]。" + msgid "Returns the ID of this [MultiplayerPeer]." msgstr "返回该 [MultiplayerPeer] 的 ID。" +msgid "" +"Returns true if the server can act as a relay in the current configuration " +"(i.e. if the higher level [MultiplayerAPI] should notify connected clients " +"of other peers, and implement a relay protocol to allow communication " +"between them)." +msgstr "" +"如果服务器在当前配置中可以充当中继者,则返回 true(也就是说,如果更高级别的 " +"[MultiplayerAPI] 应该通知连接的客户端有其他对等体,并实现一个中继协议以允许它" +"们之间的通信)。" + msgid "Waits up to 1 second to receive a new network event." msgstr "等待最多 1 秒以接收一个新的网络事件。" +msgid "" +"Sets the peer to which packets will be sent.\n" +"The [param id] can be one of: [constant TARGET_PEER_BROADCAST] to send to " +"all connected peers, [constant TARGET_PEER_SERVER] to send to the peer " +"acting as server, a valid peer ID to send to that specific peer, a negative " +"peer ID to send to all peers except that one. By default, the target peer is " +"[constant TARGET_PEER_BROADCAST]." +msgstr "" +"设置数据包将被发送至的对等体。\n" +"[param id] 可以是以下之一:[constant TARGET_PEER_BROADCAST],以发送到所有连接" +"的对等体;[constant TARGET_PEER_SERVER],以发送到充当服务器的对等体;一个有效" +"的对等体 ID ,以发送到那个特定的对等体;一个负的对等体 ID,以发送到除那个对等" +"体以外的所有对等体。默认情况下,目标对等体是 [constant " +"TARGET_PEER_BROADCAST]。" + +msgid "If [code]true[/code], this [MultiplayerPeer] refuses new connections." +msgstr "如果为 [code]true[/code],则这个 [MultiplayerPeer] 拒绝新的连接。" + +msgid "" +"The channel to use to send packets. Many network APIs such as ENet and " +"WebRTC allow the creation of multiple independent channels which behaves, in " +"a way, like separate connections. This means that reliable data will only " +"block delivery of other packets on that channel, and ordering will only be " +"in respect to the channel the packet is being sent on. Using different " +"channels to send [b]different and independent[/b] state updates is a common " +"way to optimize network usage and decrease latency in fast-paced games.\n" +"[b]Note:[/b] The default channel ([code]0[/code]) actually works as 3 " +"separate channels (one for each [enum TransferMode]) so that [constant " +"TRANSFER_MODE_RELIABLE] and [constant TRANSFER_MODE_UNRELIABLE_ORDERED] does " +"not interact with each other by default. Refer to the specific network API " +"documentation (e.g. ENet or WebRTC) to learn how to set up channels " +"correctly." +msgstr "" +"用于发送数据包的通道。许多网络 API,例如 ENet 和 WebRTC,允许创建多个独立的通" +"道,这些通道的行为在某种程度上类似于单独的连接。这意味着可靠数据只会阻止该通" +"道上其他数据包的传递,并且排序将仅与正在发送数据包的通道有关。使用不同的通道" +"发送[b]不同且独立的[/b]状态更新,是优化快节奏游戏的网络使用和减少延迟的常用方" +"法。\n" +"[b]注意:[/b]默认通道([code]0[/code])实际上作为 3 个独立的通道工作(每种 " +"[enum TransferMode] 一个),因此默认情况下,[constant " +"TRANSFER_MODE_RELIABLE] 和 [constant TRANSFER_MODE_UNRELIABLE_ORDERED] 不会相" +"互交互。请参阅特定的网络 API 文档(例如 ENet 或 WebRTC),以了解如何正确地设" +"置通道。" + +msgid "" +"The manner in which to send packets to the target peer. See [enum " +"TransferMode], and the [method set_target_peer] method." +msgstr "" +"向目标对等体发送数据包的方式。请参阅 [enum TransferMode] 和 [method " +"set_target_peer] 方法。" + msgid "Emitted when a remote peer connects." msgstr "远程对等体连接时发出。" @@ -45710,6 +62594,21 @@ msgstr "" "尽量少用。" msgid "" +"Class that can be inherited to implement custom multiplayer API networking " +"layers via GDExtension." +msgstr "可以通过 GDExtension 继承,从而实现自定义多人 API 网络层的类。" + +msgid "" +"This class is designed to be inherited from a GDExtension plugin to " +"implement custom networking layers for the multiplayer API (such as WebRTC). " +"All the methods below [b]must[/b] be implemented to have a working custom " +"multiplayer implementation. See also [MultiplayerAPI]." +msgstr "" +"该类旨在被一个 GDExtension 插件继承,以实现多人游戏 API(例如 WebRTC)的自定" +"义网络层。下面的所有方法都[b]必须[/b]被实现,才能实现一个有效的自定义多人游戏" +"实现。另请参阅 [MultiplayerAPI]。" + +msgid "" "Called when the multiplayer peer should be immediately closed (see [method " "MultiplayerPeer.close])." msgstr "" @@ -45740,6 +62639,205 @@ msgid "" msgstr "[MultiplayerAPI] 请求最大允许的数据包大小(单位为字节)时调用。" msgid "" +"Called when a packet needs to be received by the [MultiplayerAPI], with " +"[param r_buffer_size] being the size of the binary [param r_buffer] in bytes." +msgstr "" +"[MultiplayerAPI] 需要接收一个数据包时调用,[param r_buffer_size] 是二进制缓冲" +"区 [param r_buffer] 的字节大小。" + +msgid "" +"Called when the ID of the [MultiplayerPeer] who sent the most recent packet " +"is requested (see [method MultiplayerPeer.get_packet_peer])." +msgstr "" +"请求最近数据包发送方 [MultiplayerPeer] 的 ID 时调用(见 [method " +"MultiplayerPeer.get_packet_peer])。" + +msgid "" +"Called when a packet needs to be received by the [MultiplayerAPI], if " +"[method _get_packet] isn't implemented. Use this when extending this class " +"via GDScript." +msgstr "" +"如果 [method _get_packet] 未实现,则在有数据包需要被 [MultiplayerAPI] 接收时" +"调用。使用 GDScript 扩展这个类时请使用。" + +msgid "" +"Called when the transfer channel to use is read on this [MultiplayerPeer] " +"(see [member MultiplayerPeer.transfer_channel])." +msgstr "" +"读取 [MultiplayerPeer] 所使用的传输通道时调用(见 [member MultiplayerPeer." +"transfer_channel])。" + +msgid "" +"Called when the transfer mode to use is read on this [MultiplayerPeer] (see " +"[member MultiplayerPeer.transfer_mode])." +msgstr "" +"读取 [MultiplayerPeer] 所使用的传输模式时调用(见 [member MultiplayerPeer." +"transfer_mode])。" + +msgid "" +"Called when the unique ID of this [MultiplayerPeer] is requested (see " +"[method MultiplayerPeer.get_unique_id])." +msgstr "" +"请求 [MultiplayerPeer] 的唯一 ID 时调用(见 [method MultiplayerPeer." +"get_unique_id])。" + +msgid "" +"Called when the \"refuse new connections\" status is requested on this " +"[MultiplayerPeer] (see [member MultiplayerPeer.refuse_new_connections])." +msgstr "" +"请求 [MultiplayerPeer] 的“拒绝新连接”状态时调用(见 [method MultiplayerPeer." +"refuse_new_connections])。" + +msgid "" +"Called when the \"is server\" status is requested on the [MultiplayerAPI]. " +"See [method MultiplayerAPI.is_server]." +msgstr "" +"请求 [MultiplayerPeer] 的“是否为服务器”状态时调用(见 [method " +"MultiplayerPeer.refuse_new_connections])。" + +msgid "" +"Called when the [MultiplayerAPI] is polled. See [method MultiplayerAPI.poll]." +msgstr "" +"轮询 [MultiplayerPeer] 时调用(见 [method MultiplayerPeer." +"refuse_new_connections])。" + +msgid "" +"Called when a packet needs to be sent by the [MultiplayerAPI], with [param " +"p_buffer_size] being the size of the binary [param p_buffer] in bytes." +msgstr "" +"需要让 [MultiplayerAPI] 发送数据包时调用,[param p_buffer_size] 是二进制缓冲" +"区 [param p_buffer] 的字节大小。" + +msgid "" +"Called when a packet needs to be sent by the [MultiplayerAPI], if [method " +"_put_packet] isn't implemented. Use this when extending this class via " +"GDScript." +msgstr "" +"如果 [method _put_packet] 未实现,则在需要让 [MultiplayerAPI] 发送数据包时调" +"用。使用 GDScript 扩展这个类时请使用。" + +msgid "" +"Called when the \"refuse new connections\" status is set on this " +"[MultiplayerPeer] (see [member MultiplayerPeer.refuse_new_connections])." +msgstr "" +"设置 [MultiplayerPeer] 的“拒绝新连接”状态时调用(见 [method MultiplayerPeer." +"refuse_new_connections])。" + +msgid "" +"Called when the target peer to use is set for this [MultiplayerPeer] (see " +"[method MultiplayerPeer.set_target_peer])." +msgstr "" +"设置 [MultiplayerPeer] 所使用的目标对等体时调用(见 [method MultiplayerPeer." +"set_target_peer])。" + +msgid "" +"Called when the channel to use is set for this [MultiplayerPeer] (see " +"[member MultiplayerPeer.transfer_channel])." +msgstr "" +"设置 [MultiplayerPeer] 所使用的通道时调用(见 [method MultiplayerPeer." +"transfer_channel])。" + +msgid "" +"Called when the transfer mode is set on this [MultiplayerPeer] (see [member " +"MultiplayerPeer.transfer_mode])." +msgstr "" +"设置 [MultiplayerPeer] 所使用的传输模式时调用(见 [method MultiplayerPeer." +"transfer_mode])。" + +msgid "" +"Automatically replicates spawnable nodes from the authority to other " +"multiplayer peers." +msgstr "自动将可出生节点从授权端复制到其他多人对等体。" + +msgid "" +"Spawnable scenes can be configured in the editor or through code (see " +"[method add_spawnable_scene]).\n" +"Also supports custom node spawns through [method spawn], calling [member " +"spawn_function] on all peers.\n" +"Internally, [MultiplayerSpawner] uses [method MultiplayerAPI." +"object_configuration_add] to notify spawns passing the spawned node as the " +"[code]object[/code] and itself as the [code]configuration[/code], and " +"[method MultiplayerAPI.object_configuration_remove] to notify despawns in a " +"similar way." +msgstr "" +"可出生的场景可以在编辑器中或通过代码配置(参阅 [method " +"add_spawnable_scene])。\n" +"还支持通过在所有对等体上调用 [member spawn_function],通过 [method spawn] 自" +"定义节点出生。\n" +"在内部,[MultiplayerSpawner] 使用 [method MultiplayerAPI." +"object_configuration_add] 来通知出生, 需将出生的节点作为 [code]object[/" +"code],并将其自身作为 [code]configuration[/code] 传入;并使用 [method " +"MultiplayerAPI.object_configuration_remove] 以类似的方式通知消失。" + +msgid "" +"Adds a scene path to spawnable scenes, making it automatically replicated " +"from the multiplayer authority to other peers when added as children of the " +"node pointed by [member spawn_path]." +msgstr "" +"将场景路径添加到可出生的场景中,使其在添加为 [member spawn_path] 指向的节点的" +"子节点时,自动从多人游戏授权端,复制到其他对等体。" + +msgid "" +"Clears all spawnable scenes. Does not despawn existing instances on remote " +"peers." +msgstr "清除所有可生成的场景。不会在远程对等体上消除现有实例。" + +msgid "Returns the spawnable scene path by index." +msgstr "按索引返回可生成场景的路径。" + +msgid "Returns the count of spawnable scene paths." +msgstr "返回可生成场景路径的数量。" + +msgid "" +"Requests a custom spawn, with [code]data[/code] passed to [member " +"spawn_function] on all peers. Returns the locally spawned node instance " +"already inside the scene tree, and added as a child of the node pointed by " +"[member spawn_path].\n" +"[b]Note:[/b] Spawnable scenes are spawned automatically. [method spawn] is " +"only needed for custom spawns." +msgstr "" +"请求一个自定义出生,[code]data[/code] 将被传递给所有对等体的 [member " +"spawn_function]。返回本地出生的节点实例,该节点实例已经在场景树中,并被添加" +"为 [member spawn_path] 指向的节点的子节点。\n" +"[b]注意:[/b]可出生的场景是自动出生的。[method spawn] 仅在自定义出生时需要。" + +msgid "" +"Method called on all peers when for every custom [method spawn] requested by " +"the authority. Will receive the [code]data[/code] parameter, and should " +"return a [Node] that is not in the scene tree.\n" +"[b]Note:[/b] The returned node should [b]not[/b] be added to the scene with " +"[method Node.add_child]. This is done automatically." +msgstr "" +"当每个自定义 [method spawn] 被授权端请求时,在所有对等体上调用的方法。将接收 " +"[code]data[/code] 参数,并且应该返回一个不在场景树中的 [Node]。\n" +"[b]注意:[/b]返回的节点[b]不[/b]应该用 [method Node.add_child] 添加到场景中。" +"这是自动完成的。" + +msgid "" +"Maximum nodes that is allowed to be spawned by this spawner. Includes both " +"spawnable scenes and custom spawns.\n" +"When set to [code]0[/code] (the default), there is no limit." +msgstr "" +"该出生器允许出生的最大节点数。包括可出生场景和自定义出生。\n" +"当设置为 [code]0[/code](默认值)时,没有限制。" + +msgid "" +"Path to the spawn root. Spawnable scenes that are added as direct children " +"are replicated to other peers." +msgstr "" +"到出生的根的路径。作为直接子节点被添加的可出生场景,会被复制到其他对等体。" + +msgid "" +"Emitted when a spawnable scene or custom spawn was despawned by the " +"multiplayer authority. Only called on puppets." +msgstr "当可生成场景或自定义生成被多人游戏授权端消除时发出。只在傀儡端调用。" + +msgid "" +"Emitted when a spawnable scene or custom spawn was spawned by the " +"multiplayer authority. Only called on puppets." +msgstr "当可生成场景或自定义生成被多人游戏授权端生成时发出。只在傀儡端调用。" + +msgid "" "Synchronizes properties from the multiplayer authority to the remote peers." msgstr "将属性从多人游戏权威同步到远程对等体。" @@ -45877,6 +62975,17 @@ msgstr "" "[b]注意:[/b]如果线程已经拥有互斥锁的所有权,该函数将无阻塞地返回。" msgid "" +"Tries locking this [Mutex], but does not block. Returns [code]true[/code] on " +"success, [code]false[/code] otherwise.\n" +"[b]Note:[/b] This function returns [constant OK] if the thread already has " +"ownership of the mutex." +msgstr "" +"尝试锁定该 [Mutex],但不会阻塞。成功时返回 [code]true[/code],否则返回 " +"[code]false[/code]。\n" +"[b]注意:[/b]如果该线程已经拥有了该 Mutex 的所有权,则函数返回 [constant " +"OK]。" + +msgid "" "Unlocks this [Mutex], leaving it to other threads.\n" "[b]Note:[/b] If a thread called [method lock] or [method try_lock] multiple " "times while already having ownership of the mutex, it must also call [method " @@ -45911,6 +63020,54 @@ msgid "Using NavigationAgents" msgstr "使用 NavigationAgent" msgid "" +"Returns the distance to the target position, using the agent's global " +"position. The user must set [member target_position] in order for this to be " +"accurate." +msgstr "" +"返回与目标位置的距离,使用的是代理的全局位置。用户必须设置 [member " +"target_position] 才能获得精确结果。" + +msgid "" +"Returns this agent's current path from start to finish in global " +"coordinates. The path only updates when the target position is changed or " +"the agent requires a repath. The path array is not intended to be used in " +"direct path movement as the agent has its own internal path logic that would " +"get corrupted by changing the path array manually. Use the intended [method " +"get_next_path_position] once every physics frame to receive the next path " +"point for the agents movement as this function also updates the internal " +"path logic." +msgstr "" +"返回这个代理从起点到终点的当前路径,使用全局坐标。该路径只会在目标位置发生变" +"化,或者代理要求重新计算路径时更新。路径数组不应用于直接路径移动,因为代理有" +"自己的内部路径逻辑,手动更改路径数组可能会破坏该逻辑。每个物理帧上使用一次预" +"期的 [method get_next_path_position],来接收用于该代理移动的下一个路径点,因" +"为该函数还会更新内部路径逻辑。" + +msgid "" +"Returns which index the agent is currently on in the navigation path's " +"[PackedVector2Array]." +msgstr "返回该代理当前位于导航路径 [PackedVector2Array] 中的哪一个索引。" + +msgid "" +"Returns the path query result for the path the agent is currently following." +msgstr "返回该代理目前正在使用的路径所对应的路径查询结果。" + +msgid "" +"Returns the reachable final position in global coordinates. This can change " +"if the navigation path is altered in any way. Because of this, it would be " +"best to check this each frame." +msgstr "" +"返回可到达的最终位置的全局坐标。如果导航路径由于任何原因发生改变,这个位置也" +"可能发生变化。因此,最好每一帧都检查一下。" + +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." +msgstr "" +"返回 [member navigation_layers] 位掩码中指定的层是否启用,给定的 [param " +"layer_number] 应在 1 和 32 之间。" + +msgid "" "Returns the [RID] of the navigation map for this NavigationAgent node. This " "function returns always the map set on the NavigationAgent node and not the " "map of the abstract agent on the NavigationServer. If the agent map is " @@ -45925,6 +63082,23 @@ msgstr "" "不会感知到地图的变化的。请使用 [method set_navigation_map] 修改该 " "NavigationAgent 的导航地图,能够同时在 NavigationServer 上的代理。" +msgid "" +"Returns the next position in global coordinates that can be moved to, making " +"sure that there are no static objects in the way. If the agent does not have " +"a navigation path, it will return the position of the agent's parent. The " +"use of this function once every physics frame is required to update the " +"internal path logic of the NavigationAgent." +msgstr "" +"返回可以移动至的下一个位置,使用全局坐标,确保中途没有静态对象的阻挡。如果该" +"代理没有导航路径,则会返回该代理父节点的位置。这个函数每个物理帧都必须调用一" +"次,更新 NavigationAgent 内部的路径逻辑。" + +msgid "Returns the [RID] of this agent on the [NavigationServer2D]." +msgstr "返回这个代理在 [NavigationServer2D] 上的 [RID]。" + +msgid "Returns true if the navigation path's final position has been reached." +msgstr "如果到达了导航路径的终点位置,则返回 true。" + msgid "Returns true if [member target_position] is reachable." msgstr "如果可到达 [member target_position],则返回 true。" @@ -45937,6 +63111,14 @@ msgstr "" "位置应该总是可达的。见 [method get_final_location]。" msgid "" +"Based on [param value], enables or disables the specified layer in the " +"[member navigation_layers] bitmask, given a [param layer_number] between 1 " +"and 32." +msgstr "" +"根据 [param value],启用或禁用 [member navigation_layer] 中指定的层,给定的 " +"[param layer_number] 应在 1 和 32 之间。" + +msgid "" "Sets the [RID] of the navigation map this NavigationAgent node should use " "and also updates the [code]agent[/code] on the NavigationServer." msgstr "" @@ -46013,10 +63195,32 @@ msgstr "" "上的点,可能导致其离开该导航网格。如果这个值设得太小,该 NavigationAgent 将陷" "入重新寻路的死循环,因为它在每次物理帧更新后都会超过或者到不了下一个点。" +msgid "" +"The maximum distance the agent is allowed away from the ideal path to the " +"final position. This can happen due to trying to avoid collisions. When the " +"maximum distance is exceeded, it recalculates the ideal path." +msgstr "" +"允许代理偏离通往最终位置的理想路径的最大距离。可能为了防撞而产生偏离。超出最" +"大距离时,会重新计算理想路径。" + msgid "Additional information to return with the navigation path." msgstr "与导航路径一起返回的附加信息。" msgid "" +"The radius of the avoidance agent. This is the \"body\" of the avoidance " +"agent and not the avoidance maneuver starting radius (which is controlled by " +"[member neighbor_distance]).\n" +"Does not affect normal pathfinding. To change an actor's pathfinding radius " +"bake [NavigationMesh] resources with a different [member NavigationMesh." +"agent_radius] property and use different navigation maps for each actor size." +msgstr "" +"该避障代理的半径。这是该避障代理的“身体”,不是避障机制的起始半径(由 [member " +"neighbor_dist] 控制)。\n" +"不会影响正常的寻路。要修改角色的寻路半径,请在烘焙 [NavigationMesh] 资源时使" +"用不同的 [member NavigationMesh.agent_radius] 属性,针对不同的角色大小使用不" +"同的导航地图。" + +msgid "" "The distance threshold before the final target point is considered to be " "reached. This will allow an agent to not have to hit the point of the final " "target exactly, but only the area. If this value is set to low the " @@ -46029,6 +63233,21 @@ msgstr "" "寻路的死循环,因为它在每次物理帧更新后都会超过或者到不了最终的目标点。" msgid "" +"The user-defined target position. Setting this property will clear the " +"current navigation path." +msgstr "用户定义的目标位置。设置这个属性会清空当前的导航路径。" + +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 " +"other agents. The larger the number, the sooner the agent will respond to " +"other agents, but less freedom in choosing its velocities. Must be positive." +msgstr "" +"该代理速度的最短时间。这些代理速度是使用碰撞回避算法计算的,该代理相对于其他" +"代理的安全速度。数字越大,该代理对其他代理的反应越快,但选择速度的自由度越" +"小。必须是正的。" + +msgid "" "Notifies when a navigation link has been reached.\n" "The details dictionary may contain the following keys depending on the value " "of [member path_metadata_flags]:\n" @@ -46066,6 +63285,25 @@ msgstr "导航路径改变时发出通知。" msgid "Notifies when the player-defined [member target_position] is reached." msgstr "抵达玩家定义的目标位置 [member target_position] 时发出通知。" +msgid "" +"Notifies when a waypoint along the path has been reached.\n" +"The details dictionary may contain the following keys depending on the value " +"of [member path_metadata_flags]:\n" +"- [code]position[/code]: The position of the waypoint that was reached.\n" +"- [code]type[/code]: The type of navigation primitive (region or link) that " +"contains this waypoint.\n" +"- [code]rid[/code]: The [RID] of the containing navigation primitive (region " +"or link).\n" +"- [code]owner[/code]: The object which manages the containing navigation " +"primitive (region or link)." +msgstr "" +"当已到达路径上的一个路标时发出通知。\n" +"根据 [member path_metadata_flags] 的值,详细信息字典可能包含以下键:\n" +"- [code]position[/code]:到达的路标点的位置。\n" +"- [code]type[/code]:包含该路标的导航基元(区块或链接)的类型。\n" +"- [code]rid[/code]:包含的导航基元(区块或链接)的 [RID]。\n" +"- [code]owner[/code]:管理包含的导航基元(区块或链接)的对象。" + msgid "3D Agent used in navigation for collision avoidance." msgstr "在导航中用来避免碰撞的 3D 代理。" @@ -46088,6 +63326,14 @@ msgstr "" "数返回的向量位置应该用作该代理的父节点的下一次移动位置。" msgid "" +"Returns which index the agent is currently on in the navigation path's " +"[PackedVector3Array]." +msgstr "返回该代理当前位于导航路径 [PackedVector3Array] 中的哪一个索引。" + +msgid "Returns the [RID] of this agent on the [NavigationServer3D]." +msgstr "返回这个代理在 [NavigationServer3D] 上的 [RID]。" + +msgid "" "The NavigationAgent height offset is subtracted from the y-axis value of any " "vector path position for this NavigationAgent. The NavigationAgent height " "offset does not change or influence the navigation mesh or pathfinding query " @@ -46105,15 +63351,6 @@ msgid "" msgstr "忽略 Y 轴上的碰撞。必须为 true 才能在水平面上移动。" msgid "" -"A bitfield determining what navigation layers of navigation regions this " -"NavigationAgent will use to calculate path. Changing it runtime will clear " -"current navigation path and generate new one, according to new navigation " -"layers." -msgstr "" -"位域,确定该 NavigationAgent 将使用导航区域的哪些导航层来计算路径。运行时修改" -"将清除当前导航路径,并根据新的导航层生成新的导航路径。" - -msgid "" "Notifies when a navigation link has been reached.\n" "The details dictionary may contain the following keys depending on the value " "of [member path_metadata_flags]:\n" @@ -46144,6 +63381,13 @@ msgstr "" msgid "" "Creates a link between two positions that [NavigationServer2D] can route " +"agents through." +msgstr "" +"在两个位置之间创建一个链接,[NavigationServer2D] 可以通过该链接对代理进行路" +"由。" + +msgid "" +"Creates a link between two positions that [NavigationServer2D] can route " "agents through. Links can be used to express navigation methods that aren't " "just traveling along the surface of the navigation mesh, like zip-lines, " "teleporters, or jumping across gaps." @@ -46165,6 +63409,13 @@ msgid "" msgstr "返回该链接的 [member start_position] 的全局位置。" msgid "" +"Returns whether or not the specified layer of the [member navigation_layers] " +"bitmask is enabled, given a [code]layer_number[/code] between 1 and 32." +msgstr "" +"给定一个介于 1 和 32 之间的 [code]layer_number[/code],返回 [member " +"navigation_layers] 位掩码的指定层是否被启用。" + +msgid "" "Sets the [member end_position] that is relative to the link from a global " "[param position]." msgstr "设置该链接的 [member end_position] 的全局位置。" @@ -46175,13 +63426,129 @@ msgid "" msgstr "设置该链接的 [member start_position] 的全局位置。" msgid "" +"Based on [code]value[/code], enables or disables the specified layer in the " +"[member navigation_layers] bitmask, given a [code]layer_number[/code] " +"between 1 and 32." +msgstr "" +"根据 [code]value[/code],和给定的一个介于 1 和 32 之间的 [code]layer_number[/" +"code],启用或禁用 [member navigation_layers] 位掩码中的指定层。" + +msgid "" +"Whether this link can be traveled in both directions or only from [member " +"start_position] to [member end_position]." +msgstr "" +"返回这个连接是可以双向通行,还是只能从 [member start_position] 通向 [member " +"end_position]。" + +msgid "" +"Whether this link is currently active. If [code]false[/code], [method " +"NavigationServer2D.map_get_path] will ignore this link." +msgstr "" +"该链接当前是否处于活动状态。如果为 [code]false[/code] ,则 [method " +"NavigationServer2D.map_get_path] 会忽略这个链接。" + +msgid "" +"Ending position of the link.\n" +"This position will search out the nearest polygon in the navigation mesh to " +"attach to.\n" +"The distance the link will search is controlled by [method " +"NavigationServer2D.map_set_link_connection_radius]." +msgstr "" +"链接的结束位置。\n" +"链接会搜索导航网格中最接近这个位置的多边形,并将自身与该多边形相关联。\n" +"链接搜索的距离由 [method NavigationServer2D.map_set_link_connection_radius] " +"控制。" + +msgid "" +"When pathfinding enters this link from another regions navigation mesh the " +"[code]enter_cost[/code] value is added to the path distance for determining " +"the shortest path." +msgstr "" +"当寻路从另一个区块导航网格进入该链接时,[code]enter_cost[/code] 值将被加到路" +"径距离上,以确定最短路径。" + +msgid "" +"A bitfield determining all navigation layers the link belongs to. These " +"navigation layers will be checked when requesting a path with [method " +"NavigationServer2D.map_get_path]." +msgstr "" +"决定链接所属导航层的位域。使用 [method NavigationServer2D.map_get_path] 请求" +"路径时会检查这些导航层。" + +msgid "" +"Starting position of the link.\n" +"This position will search out the nearest polygon in the navigation mesh to " +"attach to.\n" +"The distance the link will search is controlled by [method " +"NavigationServer2D.map_set_link_connection_radius]." +msgstr "" +"链接的起始位置。\n" +"链接会搜索导航网格中最接近这个位置的多边形,并将自身与该多边形相关联。\n" +"链接搜索的距离由 [method NavigationServer2D.map_set_link_connection_radius] " +"控制。" + +msgid "" +"When pathfinding moves along the link the traveled distance is multiplied " +"with [code]travel_cost[/code] for determining the shortest path." +msgstr "" +"当寻路沿着链接移动时,行进距离将乘以 [code]travel_cost[/code],以确定最短路" +"径。" + +msgid "" +"Creates a link between two positions that [NavigationServer3D] can route " +"agents through." +msgstr "" +"创建两个位置之间的链接,[NavigationServer3D] 为代理规划路径时可以穿越这个链" +"接。" + +msgid "" "Creates a link between two positions that [NavigationServer3D] can route " "agents through. Links can be used to express navigation methods that aren't " "just traveling along the surface of the navigation mesh, like zip-lines, " "teleporters, or jumping across gaps." msgstr "" -"在 [NavigationServer3D] 可以路由代理的两个位置之间创建链接。链接可用于表示不" -"仅仅是沿着导航网格的表面行进的导航方法,例如滑索、传送器或跳跃间隙。" +"创建两个位置之间的链接,[NavigationServer3D] 为代理规划路径时可以穿越这个链" +"接。链接可用于表示不仅仅是沿着导航网格的表面行进的导航方法,例如滑索、传送器" +"或跳跃间隙。" + +msgid "" +"Whether this link is currently active. If [code]false[/code], [method " +"NavigationServer3D.map_get_path] will ignore this link." +msgstr "" +"该链接当前是否处于活动状态。如果为 [code]false[/code] ,则 [method " +"NavigationServer3D.map_get_path] 会忽略这个链接。" + +msgid "" +"Ending position of the link.\n" +"This position will search out the nearest polygon in the navigation mesh to " +"attach to.\n" +"The distance the link will search is controlled by [method " +"NavigationServer3D.map_set_link_connection_radius]." +msgstr "" +"链接的结束位置。\n" +"链接会搜索导航网格中最接近这个位置的多边形,并将自身与该多边形相关联。\n" +"链接搜索的距离由 [method NavigationServer3D.map_set_link_connection_radius] " +"控制。" + +msgid "" +"A bitfield determining all navigation layers the link belongs to. These " +"navigation layers will be checked when requesting a path with [method " +"NavigationServer3D.map_get_path]." +msgstr "" +"决定链接所属导航层的位域。使用 [method NavigationServer3D.map_get_path] 请求" +"路径时会检查这些导航层。" + +msgid "" +"Starting position of the link.\n" +"This position will search out the nearest polygon in the navigation mesh to " +"attach to.\n" +"The distance the link will search is controlled by [method " +"NavigationServer3D.map_set_link_connection_radius]." +msgstr "" +"链接的起始位置。\n" +"链接会搜索导航网格中最接近这个位置的多边形,并将自身与该多边形相关联。\n" +"链接搜索的距离由 [method NavigationServer3D.map_set_link_connection_radius] " +"控制。" msgid "A mesh to approximate the walkable areas and obstacles." msgstr "用于模拟可步行区域和障碍物的网格。" @@ -46219,10 +63586,36 @@ msgstr "" "[b]注意:[/b]给定的 [param mesh] 必须是 [constant Mesh.PRIMITIVE_TRIANGLES] " "类型,并且有一个索引数组。" +msgid "" +"Returns whether or not the specified layer of the [member " +"geometry_collision_mask] is enabled, given a [param layer_number] between 1 " +"and 32." +msgstr "" +"返回是否启用了 [member geometry_collision_mask] 中的指定层,给定的 [param " +"layer_number] 在 1 和 32 之间。" + +msgid "" +"Returns a [PackedInt32Array] containing the indices of the vertices of a " +"created polygon." +msgstr "返回创建多边形的顶点索引,形式为 [PackedInt32Array]。" + msgid "Returns the number of polygons in the navigation mesh." msgstr "返回导航网格中的多边形数量。" msgid "" +"Returns a [PackedVector3Array] containing all the vertices being used to " +"create the polygons." +msgstr "返回用于创建该多边形的所有顶点,形式为 [PackedVector3Array]。" + +msgid "" +"Based on [param value], enables or disables the specified layer in the " +"[member geometry_collision_mask], given a [param layer_number] between 1 and " +"32." +msgstr "" +"根据 [param value] 启用或禁用 [member geometry_collision_mask] 中的指定层,给" +"定的 [param layer_number] 在 1 和 32 之间。" + +msgid "" "Sets the vertices that can be then indexed to create polygons with the " "[method add_polygon] method." msgstr "设置顶点,可以使用 [method add_polygon] 方法对其进行索引,创建多边形。" @@ -46392,6 +63785,20 @@ msgid "Represents the size of the [enum SamplePartitionType] enum." msgstr "代表 [enum SamplePartitionType] 枚举的大小。" msgid "" +"Parses mesh instances as geometry. This includes [MeshInstance3D], " +"[CSGShape3D], and [GridMap] nodes." +msgstr "" +"将网格实例解析为几何体。包括 [MeshInstance3D]、[CSGShape3D]、[GridMap] 等节" +"点。" + +msgid "" +"Parses [StaticBody3D] colliders as geometry. The collider should be in any " +"of the layers specified by [member geometry_collision_mask]." +msgstr "" +"将 [StaticBody3D] 碰撞器解析为几何体。碰撞器应在由 [member " +"geometry_collision_mask] 指定的层中。" + +msgid "" "Both [constant PARSED_GEOMETRY_MESH_INSTANCES] and [constant " "PARSED_GEOMETRY_STATIC_COLLIDERS]." msgstr "" @@ -46424,6 +63831,89 @@ msgstr "代表 [enum SourceGeometryMode] 枚举的大小。" msgid "Helper class for creating and clearing navigation meshes." msgstr "对导航网格进行创建和清理的辅助类。" +msgid "" +"This class is responsible for creating and clearing 3D navigation meshes " +"used as [NavigationMesh] resources inside [NavigationRegion3D]. The " +"[NavigationMeshGenerator] has very limited to no use for 2D as the " +"navigation mesh baking process expects 3D node types and 3D source geometry " +"to parse.\n" +"The entire navigation mesh baking is best done in a separate thread as the " +"voxelization, collision tests and mesh optimization steps involved are very " +"performance and time hungry operations.\n" +"Navigation mesh baking happens in multiple steps and the result depends on " +"3D source geometry and properties of the [NavigationMesh] resource. In the " +"first step, starting from a root node and depending on [NavigationMesh] " +"properties all valid 3D source geometry nodes are collected from the " +"[SceneTree]. Second, all collected nodes are parsed for their relevant 3D " +"geometry data and a combined 3D mesh is build. Due to the many different " +"types of parsable objects, from normal [MeshInstance3D]s to [CSGShape3D]s or " +"various [CollisionObject3D]s, some operations to collect geometry data can " +"trigger [RenderingServer] and [PhysicsServer3D] synchronizations. Server " +"synchronization can have a negative effect on baking time or framerate as it " +"often involves [Mutex] locking for thread security. Many parsable objects " +"and the continuous synchronization with other threaded Servers can increase " +"the baking time significantly. On the other hand only a few but very large " +"and complex objects will take some time to prepare for the Servers which can " +"noticeably stall the next frame render. As a general rule the total number " +"of parsable objects and their individual size and complexity should be " +"balanced to avoid framerate issues or very long baking times. The combined " +"mesh is then passed to the Recast Navigation Object to test the source " +"geometry for walkable terrain suitable to [NavigationMesh] agent properties " +"by creating a voxel world around the meshes bounding area.\n" +"The finalized navigation mesh is then returned and stored inside the " +"[NavigationMesh] for use as a resource inside [NavigationRegion3D] nodes.\n" +"[b]Note:[/b] Using meshes to not only define walkable surfaces but also " +"obstruct navigation baking does not always work. The navigation baking has " +"no concept of what is a geometry \"inside\" when dealing with mesh source " +"geometry and this is intentional. Depending on current baking parameters, as " +"soon as the obstructing mesh is large enough to fit a navigation mesh area " +"inside, the baking will generate navigation mesh areas that are inside the " +"obstructing source geometry mesh." +msgstr "" +"该类负责创建和清除用作 [NavigationRegion3D] 内的 [NavigationMesh] 资源的 3D " +"导航网格。[NavigationMeshGenerator] 在 2D 中的用途非常有限,因为导航网格烘焙" +"过程需要 3D 节点类型和 3D 源几何体来解析。\n" +"整个导航网格的烘焙最好在单独的线程中完成,因为所涉及的体素化、碰撞测试、和网" +"格优化步骤是非常耗费性能和时间的操作。\n" +"导航网格的烘焙分成若干步进行,最终结果取决于 [NavigationMesh] 资源的 3D 源几" +"何体和该资源的属性。第一步是从根节点开始,并根据 [NavigationMesh] 的属性从 " +"[SceneTree] 收集所有有效的 3D 源几何体节点。第二步会对所有收集的节点进行解" +"析,以获得其相关的 3D 几何体数据,合并构造成一个 3D 网格。由于可解析的对象类" +"型众多,从普通的 [MeshInstance3D] 到 [CSGShape3D] 再到各种 " +"[CollisionObject3D],其中某些收集几何数据的操作可能会触发 [RenderingServer] " +"和 [PhysicsServer3D] 的同步。服务器同步通常涉及 [Mutex] 锁定以确保线程安全," +"这会对烘焙时间或帧率产生负面影响。可解析对象过多,以及与多线程服务器之间的连" +"续同步,都会大幅影响烘焙时间。而如果对象数量较少,但都是非常大而且复杂的对" +"象,那么就会在为服务器准备数据上花费时间,这可能会明显拖延下一帧渲染。一般而" +"言,可解析对象的总数与它们各自的大小和复杂度之间应该达到平衡,防止出现帧率问" +"题和超长的烘焙时间。合并后的网格后续会被交给 Recast 导航对象,通过在网格的包" +"围区域周边创建体素世界,来测试适合 [NavigationMesh] 代理属性的可行走地形的源" +"几何体。\n" +"最终的导航网格然后将被返回并被存储在 [NavigationMesh] 中,用作 " +"[NavigationRegion3D] 节点内的资源。\n" +"[b]注意:[/b]使用网格不仅定义可行走的表面的导航烘焙,而且定义障碍的导航烘焙," +"并不总会有效。在处理网格源几何体时,导航烘焙没有什么是几何体“位于内部”的概" +"念,这是有意为之的。根据当前的烘焙参数,一旦障碍网格足够大,大到足以在内部容" +"纳一个导航网格区域,则烘焙时将生成位于障碍源几何体网格内部的导航网格区域。" + +msgid "" +"Bakes navigation data to the provided [param navigation_mesh] by parsing " +"child nodes under the provided [param root_node] or a specific group of " +"nodes for potential source geometry. The parse behavior can be controlled " +"with the [member NavigationMesh.geometry_parsed_geometry_type] and [member " +"NavigationMesh.geometry_source_geometry_mode] properties on the " +"[NavigationMesh] resource." +msgstr "" +"通过解析所提供的 [param root_node] 下的子节点或潜在源几何体的一组特定节点,将" +"导航数据烘焙到提供的 [param navigation_mesh]。可以使用 [NavigationMesh] 资源" +"上的 [member NavigationMesh.geometry_parsed_geometry_type] 和 [member " +"NavigationMesh.geometry_source_geometry_mode] 属性控制该解析行为。" + +msgid "" +"Removes all polygons and vertices from the provided [param navigation_mesh] " +"resource." +msgstr "从提供的 [param navigation_mesh] 资源中移除所有多边形和顶点。" + msgid "2D Obstacle used in navigation for collision avoidance." msgstr "在导航中用来避免碰撞的 2D 障碍物。" @@ -46449,6 +63939,32 @@ msgid "Using NavigationObstacles" msgstr "使用 NavigationObstacle" msgid "" +"Returns the [RID] of the navigation map for this NavigationObstacle node. " +"This function returns always the map set on the NavigationObstacle node and " +"not the map of the abstract agent on the NavigationServer. If the agent map " +"is changed directly with the NavigationServer API the NavigationObstacle " +"node will not be aware of the map change. Use [method set_navigation_map] to " +"change the navigation map for the NavigationObstacle and also update the " +"agent on the NavigationServer." +msgstr "" +"返回该 NavigationObstacle 节点的导航地图的 [RID]。该函数始终返回在 " +"NavigationObstacle 节点上设置的地图,而不是 NavigationServer 上抽象代理所使用" +"的地图。如果该代理地图使用 NavigationServer API 直接更改,则该 " +"NavigationObstacle 节点将不会察觉该地图的更改。使用 [method " +"set_navigation_map] 更改 NavigationObstacle 的导航地图,也会更新 " +"NavigationServer 上的代理。" + +msgid "Returns the [RID] of this obstacle on the [NavigationServer2D]." +msgstr "返回这个障碍物在 [NavigationServer2D] 上的 [RID]。" + +msgid "" +"Sets the [RID] of the navigation map this NavigationObstacle node should use " +"and also updates the [code]agent[/code] on the NavigationServer." +msgstr "" +"设置该 NavigationObstacle 节点应使用的导航地图的 [RID],并会更新 " +"NavigationServer 上的 [code]agent[/code]。" + +msgid "" "Enables radius estimation algorithm which uses parent's collision shapes to " "determine the obstacle radius." msgstr "启用半径估算算法,使用父项的碰撞形状确定障碍物的半径。" @@ -46479,15 +63995,37 @@ msgstr "" "理在半径范围内移动时,会被推向半随机的方向。持续移动的物体如果无法进行高效的" "(重新)烘焙,障碍物应作为不得已的手段。" +msgid "Returns the [RID] of this obstacle on the [NavigationServer3D]." +msgstr "返回这个障碍物在 [NavigationServer3D] 上的 [RID]。" + +msgid "Parameters to be sent to a 2D navigation path query." +msgstr "要发送到 2D 导航路径查询的参数。" + +msgid "" +"This class contains the start and target position and other parameters to be " +"used with [method NavigationServer2D.query_path]." +msgstr "" +"该类包含要与 [method NavigationServer2D.query_path] 一起使用的起始位置、目标" +"位置、以及其他参数。" + msgid "Using NavigationPathQueryObjects" msgstr "使用 NavigationPathQueryObject" msgid "The navigation [code]map[/code] [RID] used in the path query." msgstr "在路径查询中使用的导航地图 [code]map[/code] [RID]。" +msgid "Additional information to include with the navigation path." +msgstr "包含在导航路径中的额外信息。" + msgid "The navigation layers the query will use (as a bitmask)." msgstr "查询所使用的导航层(形式为位掩码)。" +msgid "" +"The path postprocessing applied to the raw path corridor found by the " +"[member pathfinding_algorithm]." +msgstr "" +"对 [member pathfinding_algorithm] 找到的原始路径走廊应用的路径后期处理。" + msgid "The pathfinding algorithm used in the path query." msgstr "路径查询中使用的寻路算法。" @@ -46497,6 +64035,72 @@ msgstr "寻路起始点,使用全局坐标。" msgid "The pathfinding target position in global coordinates." msgstr "寻路目标点,使用全局坐标。" +msgid "The path query uses the default A* pathfinding algorithm." +msgstr "路径查询使用默认的 A* 寻路算法。" + +msgid "" +"Applies a funnel algorithm to the raw path corridor found by the pathfinding " +"algorithm. This will result in the shortest path possible inside the path " +"corridor. This postprocessing very much depends on the navigation mesh " +"polygon layout and the created corridor. Especially tile- or gridbased " +"layouts can face artificial corners with diagonal movement due to a jagged " +"path corridor imposed by the cell shapes." +msgstr "" +"将漏斗算法应用于寻路算法找到的原始路径走廊。这将导致最短路径可能在路径走廊" +"内。该后处理在很大程度上取决于导航网格多边形布局和创建的走廊。特别是基于图块" +"和网格的布局,可能会由于单元格形状强加的锯齿状的路径走廊,而面临对角线移动的" +"人工角落。" + +msgid "" +"Centers every path position in the middle of the traveled navigation mesh " +"polygon edge. This creates better paths for tile- or gridbased layouts that " +"restrict the movement to the cells center." +msgstr "" +"将路径上的所有位置在经过的导航网格多边形边缘上居中。这样就把移动限制在了单元" +"格的中心,能够为基于图块或栅格的布局创建更好的路径。" + +msgid "Don't include any additional metadata about the returned path." +msgstr "不要包含任何关于返回路径的额外元数据。" + +msgid "" +"Include the type of navigation primitive (region or link) that each point of " +"the path goes through." +msgstr "包含路径上的各个点所经过的导航图元类型(地区或链接)。" + +msgid "" +"Include the [RID]s of the regions and links that each point of the path goes " +"through." +msgstr "包含路径上的各个点所经过的地区和链接的 [RID]。" + +msgid "" +"Include the [code]ObjectID[/code]s of the [Object]s which manage the regions " +"and links each point of the path goes through." +msgstr "" +"包含管理路径上的各个点所经过的地区和链接的 [Object] 的 [code]ObjectID[/" +"code]。" + +msgid "Include all available metadata about the returned path." +msgstr "包含关于返回路径的所有可用元数据。" + +msgid "Parameters to be sent to a 3D navigation path query." +msgstr "要发送到 3D 导航路径查询的参数。" + +msgid "" +"This class contains the start and target position and other parameters to be " +"used with [method NavigationServer3D.query_path]." +msgstr "" +"该类包含要与 [method NavigationServer3D.query_path] 一起使用的起始位置、目标" +"位置、以及其他参数。" + +msgid "Result from a [NavigationPathQueryParameters2D] navigation path query." +msgstr "[NavigationPathQueryParameters2D] 导航路径查询的结果。" + +msgid "" +"This class contains the result of a navigation path query from [method " +"NavigationServer2D.query_path]." +msgstr "" +"这个类包含了 [method NavigationServer2D.query_path] 导航路径查询的结果。" + msgid "" "Reset the result object to its initial state. This is useful to reuse the " "object across multiple queries." @@ -46504,6 +64108,52 @@ msgstr "" "将结果对象重置为其初始状态。这对于在多次查询中重复使用该对象是很有用的。" msgid "" +"The resulting path array from the navigation query. All path array positions " +"are in global coordinates. Without customized query parameters this is the " +"same path as returned by [method NavigationServer2D.map_get_path]." +msgstr "" +"导航查询的路径数组结果。所有的路径数组位置都使用全局坐标。未自定义查询参数" +"时,与 [method NavigationServer2D.map_get_path] 返回的路径相同。" + +msgid "" +"The [code]ObjectID[/code]s of the [Object]s which manage the regions and " +"links each point of the path goes through." +msgstr "" +"管理路径上的各个点所经过的地区和链接的 [Object] 的 [code]ObjectID[/code]。" + +msgid "" +"The [RID]s of the regions and links that each point of the path goes through." +msgstr "路径上的各个点所经过的地区和链接的 [RID]。" + +msgid "" +"The type of navigation primitive (region or link) that each point of the " +"path goes through." +msgstr "路径上的各个点所经过的导航图元类型(地区或链接)。" + +msgid "This segment of the path goes through a region." +msgstr "这一段路径穿过了某个地区。" + +msgid "This segment of the path goes through a link." +msgstr "这一段路径穿过了某个链接。" + +msgid "Result from a [NavigationPathQueryParameters3D] navigation path query." +msgstr "[NavigationPathQueryParameters3D] 导航路径查询的结果。" + +msgid "" +"This class contains the result of a navigation path query from [method " +"NavigationServer3D.query_path]." +msgstr "" +"这个类包含了 [method NavigationServer3D.query_path] 导航路径查询的结果。" + +msgid "" +"The resulting path array from the navigation query. All path array positions " +"are in global coordinates. Without customized query parameters this is the " +"same path as returned by [method NavigationServer3D.map_get_path]." +msgstr "" +"导航查询的路径数组结果。所有的路径数组位置都使用全局坐标。未自定义查询参数" +"时,与 [method NavigationServer3D.map_get_path] 返回的路径相同。" + +msgid "" "A node that has methods to draw outlines or use indices of vertices to " "create navigation polygons." msgstr "具有绘制轮廓或使用顶点索引来创建导航多边形的方法的节点。" @@ -46603,6 +64253,26 @@ 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. You have to call [method " +"make_polygons_from_outlines] in order for this array to be converted to " +"polygons that the engine will use." +msgstr "" +"将包含轮廓顶点的 [PackedVector2Array],追加到包含所有轮廓的内部数组。必须调" +"用 [method make_polygons_from_outlines] 才能将该数组转换为引擎将使用的多边" +"形。" + +msgid "" +"Adds a [PackedVector2Array] that contains the vertices of an outline to the " +"internal array that contains all the outlines at a fixed position. You have " +"to call [method make_polygons_from_outlines] in order for this array to be " +"converted to polygons that the engine will use." +msgstr "" +"将包含轮廓顶点的 [PackedVector2Array],添加到包含位于固定位置处的所有轮廓的内" +"部数组。必须调用 [method make_polygons_from_outlines] 才能将该数组转换为引擎" +"将使用的多边形。" + +msgid "" "Clears the array of the outlines, but it doesn't clear the vertices and the " "polygons that were created by them." msgstr "清除轮廓数组,但不清除顶点和由顶点创建的多边形。" @@ -46613,6 +64283,22 @@ msgid "" msgstr "清除多边形数组,但不清除轮廓和顶点数组。" msgid "" +"Returns the [NavigationMesh] resulting from this navigation polygon. This " +"navigation mesh can be used to update the navigation mesh of a region with " +"the [method NavigationServer3D.region_set_navigation_mesh] API directly (as " +"2D uses the 3D server behind the scene)." +msgstr "" +"返回由该导航多边形产生的 [NavigationMesh]。该导航网格可用于使用 [method " +"NavigationServer3D.region_set_navigation_mesh] API 直接更新区块的导航网格(因" +"为 2D 在幕后使用 3D 服务器)。" + +msgid "" +"Returns a [PackedVector2Array] containing the vertices of an outline that " +"was created in the editor or by script." +msgstr "" +"返回一个 [PackedVector2Array],其中包含在编辑器中或通过脚本创建的轮廓的顶点。" + +msgid "" "Returns the number of outlines that were created in the editor or by script." msgstr "返回在编辑器或脚本中创建的轮廓的数量。" @@ -46770,6 +64456,27 @@ msgstr "" "及大量同步操作。另外,请注意在无法使用线程的操作系统(例如禁用线程的 Web)" "上,会自动禁用独立线程烘焙。" +msgid "" +"Returns the [RID] of this region on the [NavigationServer3D]. Combined with " +"[method NavigationServer3D.map_get_closest_point_owner] can be used to " +"identify the [NavigationRegion3D] closest to a point on the merged " +"navigation map." +msgstr "" +"返回 [NavigationServer3D] 上该区块的 [RID]。结合 [method NavigationServer3D." +"map_get_closest_point_owner] 可用于识别距离该合并导航地图上的点最近的 " +"[NavigationRegion3D]。" + +msgid "Determines if the [NavigationRegion3D] is enabled or disabled." +msgstr "决定该 [NavigationRegion3D] 是启用还是禁用。" + +msgid "" +"A bitfield determining all navigation layers the region belongs to. These " +"navigation layers can be checked upon when requesting a path with [method " +"NavigationServer3D.map_get_path]." +msgstr "" +"确定该区块所属的所有导航层的位字段。当使用 [method NavigationServer3D." +"map_get_path] 请求一个路径时,可以检查这些导航层。" + msgid "The [NavigationMesh] resource to use." msgstr "使用的 [NavigationMesh] 资源。" @@ -46782,12 +64489,66 @@ msgstr "[NavigationMesh] 发生变化时发出通知。" msgid "Server interface for low-level 2D navigation access." msgstr "用于低级 2D 导航访问的服务器接口。" +msgid "" +"NavigationServer2D is the server responsible for all 2D navigation. It " +"handles several objects, namely maps, regions and agents.\n" +"Maps are made up of regions, which are made of navigation polygons. " +"Together, they define the navigable areas in the 2D world.\n" +"[b]Note:[/b] Most NavigationServer 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 SceneTree 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 NavigationServer2D." +"region_set_navigation_layers], which then can be checked upon when " +"requesting a path with [method NavigationServer2D.map_get_path]. This allows " +"allowing or forbidding some areas to 2D 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 as-is might lead to pushing and agent outside of a " +"navigable 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 "" +"NavigationServer2D 是负责所有 2D 导航的服务器。它处理多种对象,即地图、区块和" +"代理。\n" +"地图由区块组成,区块由导航多边形组成。它们共同定义了 2D 世界中的可导航区" +"域。\n" +"[b]注意:[/b]大多数 NavigationServer 更改,在下一个物理帧之后生效,而不是立即" +"生效。这些更改包括通过 SceneTree 中的导航相关节点或通过脚本对地图、区块或代理" +"所做的所有更改。\n" +"对于要相互连接的两个区块,它们必须共享一条相似的边。如果一条边的两个顶点到另" +"一条边的顶点的距离,都小于 [code]edge_connection_margin[/code],则认为这条边" +"与另一条边相连。\n" +"可以使用 [method NavigationServer2D.region_set_navigation_layers] 将导航层分" +"配给区块,然后可以在使用 [method NavigationServer2D.map_get_path] 请求路径时" +"对其进行检查。这允许允许或禁止某些区域到 2D 对象。\n" +"要使用碰撞回避系统,可以使用代理。可以设置代理的目标速度,然后服务器将以修改" +"后的速度发出回调。\n" +"[b]注意:[/b]碰撞回避系统忽略区块。按原样使用修改后的速度,可能会导致推挤,甚" +"至代理超出可导航区域。这是碰撞回避系统的一个限制,任何更复杂的情况,可能都需" +"要使用物理引擎。\n" +"该服务器会跟踪任何调用并在同步阶段执行它们。这意味着对地图进行任何更改的任何" +"请求,都可以使用线程,而无需担心出现问题。" + msgid "Using NavigationServer" msgstr "使用 NavigationServer" msgid "Creates the agent." msgstr "创建代理。" +msgid "" +"Returns the navigation map [RID] the requested [param agent] is currently " +"assigned to." +msgstr "返回请求 [param agent] 目前分配到的导航地图 [RID]。" + msgid "Returns true if the map got changed the previous frame." msgstr "如果该地图在上一帧发生了改变,则返回 true。" @@ -46874,6 +64635,11 @@ msgstr "返回该 [code]link[/code] 的结束位置。" msgid "Returns the enter cost of this [param link]." msgstr "返回 [param link] 链接的进入消耗。" +msgid "" +"Returns the navigation map [RID] the requested [code]link[/code] is " +"currently assigned to." +msgstr "返回请求的 [code]link[/code] 所关联的导航地图的 [RID]。" + msgid "Returns the navigation layers for this [code]link[/code]." msgstr "返回 [code]link[/code] 的导航层。" @@ -46904,6 +64670,13 @@ msgstr "设置 [code]link[/code] 的进入消耗 [code]enter_cost[/code]。" msgid "Sets the navigation map [RID] for the link." msgstr "设置该链接的导航地图 [RID]。" +msgid "" +"Set the links's navigation layers. This allows selecting links from a path " +"request (when using [method NavigationServer2D.map_get_path])." +msgstr "" +"设置该链接的导航层。可以在(使用 [method NavigationServer2D.map_get_path])进" +"行路径请求时选择链接。" + msgid "Set the [code]ObjectID[/code] of the object which manages this link." msgstr "设置管理该链接的对象的 [code]ObjectID[/code]。" @@ -46959,10 +64732,20 @@ msgstr "" "NavigationServer 命令队列。这不仅会严重影响游戏的性能,而且如果缺乏远见且使用" "不当,还会引入 bug。" +msgid "" +"Returns all navigation agents [RID]s that are currently assigned to the " +"requested navigation [param map]." +msgstr "返回所有与请求的导航地图 [param map] 关联的导航代理的 [RID]。" + msgid "Returns the map cell size." msgstr "返回地图的单元格大小。" msgid "" +"Returns the point closest to the provided [param to_point] on the navigation " +"mesh surface." +msgstr "返回导航网格表面上与提供的 [param to_point] 距离最近的点。" + +msgid "" "Returns the owner region RID for the point returned by [method " "map_get_closest_point]." msgstr "返回由 [method map_get_closest_point] 返回的点的所有者地区的 RID。" @@ -46972,6 +64755,31 @@ msgid "" "a distance used to connect two regions." msgstr "返回地图的边界连接边距。边界连接边距是用于连接两个地区的距离。" +msgid "" +"Returns the link connection radius of the map. This distance is the maximum " +"range any link will search for navigation mesh polygons to connect to." +msgstr "" +"返回该地图的链接连接半径。该距离是任何链接将搜索要连接的导航网格多边形的最大" +"范围。" + +msgid "" +"Returns all navigation link [RID]s that are currently assigned to the " +"requested navigation [code]map[/code]." +msgstr "返回当前分配给所请求的导航 [code]map[/code] 的所有导航链接的 [RID]。" + +msgid "" +"Returns the navigation path to reach the destination from the origin. [param " +"navigation_layers] is a bitmask of all region navigation layers that are " +"allowed to be in the path." +msgstr "" +"返回从原点到达目的地的导航路径。[param navigation_layers] 是被允许在路径中的" +"所有区块导航层的位掩码。" + +msgid "" +"Returns all navigation regions [RID]s that are currently assigned to the " +"requested navigation [param map]." +msgstr "返回当前分配给所请求的导航 [param map] 的所有导航区块的 [RID]。" + msgid "Returns true if the map is active." msgstr "如果地图处于活动状态,则返回 true。" @@ -46985,12 +64793,53 @@ msgid "" "Set the map edge connection margin used to weld the compatible region edges." msgstr "设置用于焊接兼容地区边界的地图边界连接边距。" +msgid "" +"Set the map's link connection radius used to connect links to navigation " +"polygons." +msgstr "设置该地图用于连接链接和导航多边形的链接连接半径。" + +msgid "" +"Queries a path in a given navigation map. Start and target position and " +"other parameters are defined through [NavigationPathQueryParameters2D]. " +"Updates the provided [NavigationPathQueryResult2D] result object with the " +"path among other results requested by the query." +msgstr "" +"在给定导航地图中查询路径。起点、目标点以及其他参数通过 " +"[NavigationPathQueryParameters2D] 定义。会使用路径和其他查询中请求的信息更新" +"提供的 [NavigationPathQueryResult2D]。" + msgid "Creates a new region." msgstr "创建一个新的地区。" +msgid "" +"Returns the ending point of a connection door. [param connection] is an " +"index between 0 and the return value of [method " +"region_get_connections_count]." +msgstr "" +"返回连接门的终点。[param connection] 是一个索引,介于 0 和 [method " +"region_get_connections_count] 的返回值之间。" + +msgid "" +"Returns the starting point of a connection door. [param connection] is an " +"index between 0 and the return value of [method " +"region_get_connections_count]." +msgstr "" +"返回连接门的起点。[param connection] 是一个索引,介于 0 和 [method " +"region_get_connections_count] 的返回值之间。" + +msgid "" +"Returns how many connections this [param region] has with other regions in " +"the map." +msgstr "返回 [param region] 地区与其他地区在地图上有多少连接。" + msgid "Returns the enter cost of this [param region]." msgstr "返回 [param region] 地区的进入消耗。" +msgid "" +"Returns the navigation map [RID] the requested [param region] is currently " +"assigned to." +msgstr "返回请求的 [param region] 地区所关联的导航地图的 [RID]。" + msgid "Returns the region's navigation layers." msgstr "返回该地区的导航层。" @@ -47058,10 +64907,77 @@ msgid "" "Emitted when a navigation map is updated, when a region moves or is modified." msgstr "当导航地图更新时、地区移动或被修改时发出。" +msgid "" +"Emitted when navigation debug settings are changed. Only available in debug " +"builds." +msgstr "当导航调试设置更改时发出。仅在调试版本中可用。" + msgid "Server interface for low-level 3D navigation access." msgstr "用于低级 3D 导航访问的服务器接口。" msgid "" +"NavigationServer3D is the server responsible for all 3D navigation. It " +"handles several objects, namely maps, regions and agents.\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 NavigationServer 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 SceneTree 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 allows " +"allowing or forbidding some areas to 3D 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 as-is might lead to pushing and agent outside of a " +"navigable 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 是负责所有 3D 导航的服务器。它处理多种对象,即地图、区块和" +"代理。\n" +"地图由区块组成,区块由导航网格组成。它们共同定义了 3D 世界中的可导航区域。\n" +"[b]注意:[/b]大多数 NavigationServer 更改,在下一个物理帧之后生效,而不是立即" +"生效。这些更改包括通过 SceneTree 中的导航相关节点或通过脚本对地图、区块或代理" +"所做的所有更改。\n" +"对于要相互连接的两个区块,它们必须共享一条相似的边。如果一条边的两个顶点到另" +"一条边的顶点的距离,都小于 [code]edge_connection_margin[/code],则认为这条边" +"与另一条边相连。\n" +"可以使用 [method NavigationServer3D.region_set_navigation_layers] 将导航层分" +"配给区块,然后可以在使用 [method NavigationServer3D.map_get_path] 请求路径时" +"对其进行检查。这允许允许或禁止某些区域到 3D 对象。\n" +"要使用碰撞回避系统,可以使用代理。可以设置代理的目标速度,然后服务器将以修改" +"后的速度发出回调。\n" +"[b]注意:[/b]碰撞回避系统忽略区块。按原样使用修改后的速度,可能会导致推挤,甚" +"至代理超出可导航区域。这是碰撞回避系统的一个限制,任何更复杂的情况,可能都需" +"要使用物理引擎。\n" +"该服务器会跟踪任何调用并在同步阶段执行它们。这意味着对地图进行任何更改的任何" +"请求,都可以使用线程,而无需担心出现问题。" + +msgid "" +"Returns information about the current state of the NavigationServer. See " +"[enum ProcessInfo] for a list of available states." +msgstr "" +"返回有关 NavigationServer 当前状态的信息。有关可用状态的列表,请参阅 [enum " +"ProcessInfo]。" + +msgid "" +"Set the links's navigation layers. This allows selecting links from a path " +"request (when using [method NavigationServer3D.map_get_path])." +msgstr "" +"设置该链接的导航层。这允许从路径请求中选择链接(当使用 [method " +"NavigationServer3D.map_get_path] 时)。" + +msgid "" "Returns the normal for the point returned by [method map_get_closest_point]." msgstr "返回 [method map_get_closest_point] 所返回的点的法线。" @@ -47082,6 +64998,23 @@ msgid "Sets the map up direction." msgstr "设置地图的上方向。" msgid "" +"Queries a path in a given navigation map. Start and target position and " +"other parameters are defined through [NavigationPathQueryParameters3D]. " +"Updates the provided [NavigationPathQueryResult3D] result object with the " +"path among other results requested by the query." +msgstr "" +"在给定导航地图中查询路径。起点、目标点以及其他参数通过 " +"[NavigationPathQueryParameters3D] 定义。会使用路径和其他查询中请求的信息更新" +"提供的 [NavigationPathQueryResult3D]。" + +msgid "" +"Bakes the [param navigation_mesh] with bake source geometry collected " +"starting from the [param root_node]." +msgstr "" +"使用从 [param root_node] 开始收集的烘焙源几何体,来烘焙 [param " +"navigation_mesh]。" + +msgid "" "Set the region's navigation layers. This allows selecting regions from a " "path request (when using [method NavigationServer3D.map_get_path])." msgstr "" @@ -47111,7 +65044,23 @@ msgid "Constant to get the number of navigation mesh polygons." msgstr "常量,用于获取导航网格多边形的数量。" msgid "Constant to get the number of navigation mesh polygon edges." -msgstr "常量,用于获取导航网格多边形边的数量。" +msgstr "常量,用于获取导航网格多边形的边的数量。" + +msgid "" +"Constant to get the number of navigation mesh polygon edges that were merged " +"due to edge key overlap." +msgstr "常量,用于获取由于边键重叠而被合并的导航网格多边形的边的数量。" + +msgid "" +"Constant to get the number of navigation mesh polygon edges that are " +"considered connected by edge proximity." +msgstr "常量,用以获取被认为由于边接近而连接的导航网格多边形的边的数量。" + +msgid "" +"Constant to get the number of navigation mesh polygon edges that could not " +"be merged but may be still connected by edge proximity or with links." +msgstr "" +"常量,用于获取无法合并但仍可通过边接近或链接连接的导航网格多边形的边的数量。" msgid "" "Scalable texture-based frame that tiles the texture's centers and sides, but " @@ -47491,6 +65440,32 @@ msgstr "" "被调用。" msgid "" +"Called when an [InputEvent] hasn't been consumed by [method _input] or any " +"GUI [Control] item. The input event propagates up through the node tree " +"until a node consumes it.\n" +"It is only called if unhandled input processing is enabled, which is done " +"automatically if this method is overridden, and can be toggled with [method " +"set_process_unhandled_input].\n" +"To consume the input event and stop it propagating further to other nodes, " +"[method Viewport.set_input_as_handled] can be called.\n" +"For gameplay input, this and [method _unhandled_key_input] are usually a " +"better fit than [method _input] as they allow the GUI to intercept the " +"events first.\n" +"[b]Note:[/b] This method is only called if the node is present in the scene " +"tree (i.e. if it's not an orphan)." +msgstr "" +"当一个 [InputEvent] 尚未被 [method _input] 或任何 GUI [Control] 项消耗时调" +"用。输入事件通过节点树向上传播,直到一个节点消耗它。\n" +"只有在未处理的输入处理被启用时,才会被调用,如果该方法被重写,则会自动被调" +"用,并且可以使用 [method set_process_unhandled_input] 进行切换。\n" +"要消耗输入事件,并阻止它进一步传播到其他节点,可以调用 [method Viewport." +"set_input_as_handled]。\n" +"对于游戏输入,该函数和 [method _unhandled_key_input] 通常比 [method _input] " +"更适合,因为它们允许 GUI 首先拦截事件。\n" +"[b]注意:[/b]仅当该节点存在于场景树中(即,如果它不是一个孤儿节点)时,该方法" +"才会被调用。" + +msgid "" "Called when an [InputEventKey] hasn't been consumed by [method _input] or " "any GUI [Control] item. The input event propagates up through the node tree " "until a node consumes it.\n" @@ -47527,91 +65502,30 @@ msgstr "" "被调用。" msgid "" -"Adds a child [param node]. Nodes can have any number of children, but every " -"child must have a unique name. Child nodes are automatically deleted when " -"the parent node is deleted, so an entire scene can be removed by deleting " -"its topmost node.\n" +"Adds a [param sibling] node to current's node parent, at the same level as " +"that node, right below it.\n" "If [param force_readable_name] is [code]true[/code], improves the " -"readability of the added [param node]. If not named, the [param node] is " -"renamed to its type, and if it shares [member name] with a sibling, a number " -"is suffixed more appropriately. This operation is very slow. As such, it is " -"recommended leaving this to [code]false[/code], which assigns a dummy name " -"featuring [code]@[/code] in both situations.\n" -"If [param internal] is different than [constant INTERNAL_MODE_DISABLED], the " -"child will be added as internal node. Such nodes are ignored by methods like " -"[method get_children], unless their parameter [code]include_internal[/code] " -"is [code]true[/code].The intended usage is to hide the internal nodes from " -"the user, so the user won't accidentally delete or modify them. Used by some " -"GUI nodes, e.g. [ColorPicker]. See [enum InternalMode] for available modes.\n" -"[b]Note:[/b] If the child node already has a parent, the function will fail. " -"Use [method remove_child] first to remove the node from its current parent. " -"For example:\n" -"[codeblocks]\n" -"[gdscript]\n" -"var child_node = get_child(0)\n" -"if child_node.get_parent():\n" -" child_node.get_parent().remove_child(child_node)\n" -"add_child(child_node)\n" -"[/gdscript]\n" -"[csharp]\n" -"Node childNode = GetChild(0);\n" -"if (childNode.GetParent() != null)\n" -"{\n" -" childNode.GetParent().RemoveChild(childNode);\n" -"}\n" -"AddChild(childNode);\n" -"[/csharp]\n" -"[/codeblocks]\n" -"If you need the child node to be added below a specific node in the list of " -"children, use [method add_sibling] instead of this method.\n" -"[b]Note:[/b] If you want a child to be persisted to a [PackedScene], you " -"must set [member owner] in addition to calling [method add_child]. This is " -"typically relevant for [url=$DOCS_URL/tutorials/plugins/" -"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/" -"tutorials/plugins/editor/index.html]editor plugins[/url]. If [method " -"add_child] is called without setting [member owner], the newly added [Node] " -"will not be visible in the scene tree, though it will be visible in the " -"2D/3D view." -msgstr "" -"添加一个子节点 [param node]。节点可以有任意数量的子节点,但每个子节点必须有一" -"个唯一的名字。删除父节点时会自动删除子节点,因此可以通过删除最顶层的节点来删" -"除整个场景。\n" -"如果 [param force_readable_name] 为 [code]true[/code],则将提高所添加的 " -"[param node] 的可读性。如果尚未命名,[param node] 将重命名为它的类型,如果它" -"与兄弟共享 [member name],则使用更合适的数字后缀。这个操作很慢。因此,建议将" -"其保留为 [code]false[/code],在这两种情况下,这会分配一个以 [code]@[/code] 为" -"特色的虚拟名称。\n" -"如果 [param internal] 不同于 [constant INTERNAL_MODE_DISABLED],则子节点将被" -"添加为内部节点。该类节点会被 [method get_children] 等方法忽略,除非它们的参" -"数 [code]include_internal[/code] 为 [code]true[/code]。预期用途是对用户隐藏内" -"部节点,这样用户就不会意外删除或修改它们。由一些 GUI 节点使用,例如 " -"[ColorPicker]。有关可用模式,请参阅 [enum InternalMode]。\n" -"[b]注意:[/b]如果子节点已经有一个父节点,该函数将失败。需要首先使用 [method " -"remove_child] 将节点从其当前父节点中移除。 例如:\n" -"[codeblocks]\n" -"[gdscript]\n" -"var child_node = get_child(0)\n" -"if child_node.get_parent():\n" -" child_node.get_parent().remove_child(child_node)\n" -"add_child(child_node)\n" -"[/gdscript]\n" -"[csharp]\n" -"Node childNode = GetChild(0);\n" -"if (childNode.GetParent() != null)\n" -"{\n" -" childNode.GetParent().RemoveChild(childNode);\n" -"}\n" -"AddChild(childNode);\n" -"[/csharp]\n" -"[/codeblocks]\n" -"如果您需要将子节点添加到子节点列表中特定节点的下方,请使用 [method " -"add_sibling] 而不是该方法。\n" -"[b]注意:[/b]如果想让一个子节点持久化到一个 [PackedScene],除了调用 [method " -"add_child] 外,还必须设置 [member owner] 。这通常在[url=$DOCS_URL/tutorials/" -"plugins/running_code_in_the_editor.html]工具脚本[/url]和[url=$DOCS_URL/" -"tutorials/plugins/editor/index.html]编辑器插件[/url]中会用到。如果在没有设置 " -"[member owner] 的情况下调用 [method add_child],则新添加的 [Node] 在场景树中" -"将不可见,但在 2D/3D 视图中却是可见的。" +"readability of the added [param sibling]. If not named, the [param sibling] " +"is renamed to its type, and if it shares [member name] with a sibling, a " +"number is suffixed more appropriately. This operation is very slow. As such, " +"it is recommended leaving this to [code]false[/code], which assigns a dummy " +"name featuring [code]@[/code] in both situations.\n" +"Use [method add_child] instead of this method if you don't need the child " +"node to be added below a specific node in the list of children.\n" +"[b]Note:[/b] If this node is internal, the new sibling will be internal too " +"(see [code]internal[/code] parameter in [method add_child])." +msgstr "" +"将一个 [param sibling] 节点添加到当前节点的父节点,与该节点处于同一级别,就在" +"它的正下方。\n" +"如果 [param force_readable_name] 为 [code]true[/code],则提高添加的 [param " +"sibling] 的可读性。如果没有命名,[param sibling] 将被重命名为它的类型,如果它" +"与一个同级节点共享 [member name],则添加一个更合适的数字后缀。这个操作很慢。" +"因此,建议将其保留为 [code]false[/code],这会在两种情况下分配一个以 [code]@[/" +"code] 为特色的虚拟名称。\n" +"如果不需要将该子节点添加到子列表中特定节点的下方,请使用 [method add_child] " +"而不是该方法。\n" +"[b]注意:[/b]如果这个节点是内部的,则新的同级节点也将是内部的(参见 [method " +"add_child] 中的 [code]internal[/code] 参数)。" msgid "" "Adds the node to a group. Groups are helpers to name and organize a subset " @@ -47635,6 +65549,42 @@ msgstr "" "因为它可能因项目运行而异。" msgid "" +"Returns [code]true[/code] if the node can process while the scene tree is " +"paused (see [member process_mode]). Always returns [code]true[/code] if the " +"scene tree is not paused, and [code]false[/code] if the node is not in the " +"tree." +msgstr "" +"如果场景树暂停时节点可以处理(请参阅 [member process_mode]),则返回 " +"[code]true[/code]。如果场景树未被暂停,则始终返回 [code]true[/code],如果该节" +"点不在树中,则始终返回 [code]false[/code]。" + +msgid "" +"Creates a new [Tween] and binds it to this node. This is equivalent of " +"doing:\n" +"[codeblocks]\n" +"[gdscript]\n" +"get_tree().create_tween().bind_node(self)\n" +"[/gdscript]\n" +"[csharp]\n" +"GetTree().CreateTween().BindNode(this);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The Tween will start automatically on the next process frame or physics " +"frame (depending on [enum Tween.TweenProcessMode])." +msgstr "" +"新建 [Tween] 并将其绑定到这个节点。与如下操作等价:\n" +"[codeblocks]\n" +"[gdscript]\n" +"get_tree().create_tween().bind_node(self)\n" +"[/gdscript]\n" +"[csharp]\n" +"GetTree().CreateTween().BindNode(this);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"该 Tween 将在下一个处理帧或物理处理帧时自动开始(取决于 [enum Tween." +"TweenProcessMode])。" + +msgid "" "Duplicates the node, returning a new node.\n" "You can fine-tune the behavior using the [param flags] (see [enum " "DuplicateFlags]).\n" @@ -47649,92 +65599,6 @@ msgstr "" "下被复制。" msgid "" -"Finds the first descendant of this node whose name matches [param pattern] " -"as in [method String.match].\n" -"[param pattern] does not match against the full path, just against " -"individual node names. It is case-sensitive, with [code]\"*\"[/code] " -"matching zero or more characters and [code]\"?\"[/code] matching any single " -"character except [code]\".\"[/code]).\n" -"If [param recursive] is [code]true[/code], all child nodes are included, " -"even if deeply nested. Nodes are checked in tree order, so this node's first " -"direct child is checked first, then its own direct children, etc., before " -"moving to the second direct child, and so on. If [param recursive] is " -"[code]false[/code], only this node's direct children are matched.\n" -"If [param owned] is [code]true[/code], this method only finds nodes who have " -"an assigned [member Node.owner]. This is especially important for scenes " -"instantiated through a script, because those scenes don't have an owner.\n" -"Returns [code]null[/code] if no matching [Node] is found.\n" -"[b]Note:[/b] As this method walks through all the descendants of the node, " -"it is the slowest way to get a reference to another node. Whenever possible, " -"consider using [method get_node] with unique names instead (see [member " -"unique_name_in_owner]), or caching the node references into variable.\n" -"[b]Note:[/b] To find all descendant nodes matching a pattern or a class " -"type, see [method find_children]." -msgstr "" -"查找此节点的后代中,其名称与 [method String.match] 中的 [param pattern] 匹配" -"的第一个节点。\n" -"[param pattern] 不匹配完整路径,只匹配单个节点名称。它区分大小写," -"[code]\"*\"[/code] 匹配零个或多个字符,[code]\"?\"[/code] 匹配除 [code]\"." -"\"[/code] 之外的任意单个字符。\n" -"如果 [param recursive] 为 [code]true[/code],则查找范围包括所有子节点,即使嵌" -"套很深。节点按树顺序检查,因此首先检查该节点的第一个直接子节点,然后是该直接" -"子节点的直接子节点,等等,然后移动到第二个直接子节点,依此类推。如果 [param " -"recursive] 为 [code]false[/code],则仅匹配该节点的直接子节点。\n" -"如果 [param owned] 为 [code]true[/code],则该方法仅查找分配有 [member Node." -"owner] 的节点。这对于通过脚本实例化的场景尤其重要,因为这些场景没有所有者。\n" -"如果找不到匹配的 [Node],则返回 [code]null[/code]。\n" -"[b]注意:[/b]由于该方法会遍历节点的所有后代,因此它是获取对另一个节点的引用的" -"最慢方法。只要有可能,请考虑改用使用唯一名称的 [method get_node](请参阅 " -"[member unique_name_in_owner]),或将该节点引用缓存到变量中。\n" -"[b]注意:[/b]要查找匹配一个模式或类类型的所有后代节点,请参见 [method " -"find_children]。" - -msgid "" -"Finds descendants of this node whose name matches [param pattern] as in " -"[method String.match], and/or type matches [param type] as in [method Object." -"is_class].\n" -"[param pattern] does not match against the full path, just against " -"individual node names. It is case-sensitive, with [code]\"*\"[/code] " -"matching zero or more characters and [code]\"?\"[/code] matching any single " -"character except [code]\".\"[/code]).\n" -"[param type] will check equality or inheritance, and is case-sensitive. " -"[code]\"Object\"[/code] will match a node whose type is [code]\"Node\"[/" -"code] but not the other way around.\n" -"If [param recursive] is [code]true[/code], all child nodes are included, " -"even if deeply nested. Nodes are checked in tree order, so this node's first " -"direct child is checked first, then its own direct children, etc., before " -"moving to the second direct child, and so on. If [param recursive] is " -"[code]false[/code], only this node's direct children are matched.\n" -"If [param owned] is [code]true[/code], this method only finds nodes who have " -"an assigned [member Node.owner]. This is especially important for scenes " -"instantiated through a script, because those scenes don't have an owner.\n" -"Returns an empty array if no matching nodes are found.\n" -"[b]Note:[/b] As this method walks through all the descendants of the node, " -"it is the slowest way to get references to other nodes. Whenever possible, " -"consider caching the node references into variables.\n" -"[b]Note:[/b] If you only want to find the first descendant node that matches " -"a pattern, see [method find_child]." -msgstr "" -"查找该节点的后代节点,其名称与 [method String.match] 中的 [param pattern] 匹" -"配,和/或类型与 [method Object.is_class] 中的 [param type] 匹配。\n" -"[param pattern] 不匹配完整路径,只匹配单个节点名称。它区分大小写," -"[code]\"*\"[/code] 匹配零个或多个字符,[code]\"?\"[/code] 匹配除 [code]\"." -"\"[/code] 之外的任意单个字符。\n" -"[param type] 将检查相等性或继承关系,并且区分大小写。[code]\"Object\"[/code] " -"会匹配类型为 [code]\"Node\"[/code] 的节点,但反之则不然。\n" -"如果 [param recursive] 为 [code]true[/code],则匹配范围包括所有子节点,即使嵌" -"套很深。节点按树顺序检查,因此首先检查该节点的第一个直接子节点,然后是该直接" -"子节点的直接子节点,等等,然后移动到第二个直接子节点,依此类推。如果 [param " -"recursive] 为 [code]false[/code],则仅匹配该节点的直接子节点。\n" -"如果 [param owned] 为 [code]true[/code],则该方法仅查找分配有 [member Node." -"owner] 的节点。这对于通过脚本实例化的场景尤其重要,因为这些场景没有所有者。\n" -"如果找不到匹配的节点,则返回一个空数组。\n" -"[b]注意:[/b]由于该方法会遍历节点的所有后代,因此它是获取对其他节点的引用的最" -"慢方法。只要有可能,请考虑将节点引用缓存到变量中。\n" -"[b]注意:[/b]如果只想查找匹配模式的第一个后代节点,请参见 [method " -"find_child]。" - -msgid "" "Finds the first parent of the current node whose name matches [param " "pattern] as in [method String.match].\n" "[param pattern] does not match against the full path, just against " @@ -47780,6 +65644,16 @@ msgstr "" "[method add_child] 的 [code]internal[/code] 参数)。" msgid "" +"Returns an array of references to node's children.\n" +"If [param include_internal] is [code]false[/code], the returned array won't " +"include internal children (see [code]internal[/code] parameter in [method " +"add_child])." +msgstr "" +"返回一组对节点子节点的引用。\n" +"如果 [param include_internal] 为 [code]false[/code],则返回的数组将不包含内部" +"子节点(请参阅 [method add_child] 中的 [code]internal[/code] 参数)。" + +msgid "" "Returns an array listing the groups that the node is a member of.\n" "[b]Note:[/b] For performance reasons, the order of node groups is [i]not[/i] " "guaranteed. The order of node groups should not be relied upon as it can " @@ -47833,6 +65707,153 @@ msgstr "" "[/codeblocks]" msgid "" +"Returns the node's order in the scene tree branch. For example, if called on " +"the first child node the position is [code]0[/code].\n" +"If [param include_internal] is [code]false[/code], the index won't take " +"internal children into account, i.e. first non-internal child will have " +"index of 0 (see [code]internal[/code] parameter in [method add_child])." +msgstr "" +"返回节点在场景树分支中的顺序。例如,如果在第一个子节点上调用,则位置为 " +"[code]0[/code]。\n" +"如果 [param include_internal] 为 [code]false[/code],则索引将不会考虑内部子节" +"点,即第一个非内部子节点的索引将为 0(请参阅 [method add_child] 中的 " +"[code]internal[/code] 参数)。" + +msgid "" +"Returns the peer ID of the multiplayer authority for this node. See [method " +"set_multiplayer_authority]." +msgstr "" +"返回这个节点多人游戏控制者的对等体 ID。见 [method " +"set_multiplayer_authority]。" + +msgid "" +"Fetches a node. The [NodePath] can be either a relative path (from the " +"current node) or an absolute path (in the scene tree) to a node. If the path " +"does not exist, [code]null[/code] is returned and an error is logged. " +"Attempts to access methods on the return value will result in an \"Attempt " +"to call <method> on a null instance.\" error.\n" +"[b]Note:[/b] Fetching absolute paths only works when the node is inside the " +"scene tree (see [method is_inside_tree]).\n" +"[b]Example:[/b] Assume your current node is Character and the following " +"tree:\n" +"[codeblock]\n" +"/root\n" +"/root/Character\n" +"/root/Character/Sword\n" +"/root/Character/Backpack/Dagger\n" +"/root/MyGame\n" +"/root/Swamp/Alligator\n" +"/root/Swamp/Mosquito\n" +"/root/Swamp/Goblin\n" +"[/codeblock]\n" +"Possible paths are:\n" +"[codeblocks]\n" +"[gdscript]\n" +"get_node(\"Sword\")\n" +"get_node(\"Backpack/Dagger\")\n" +"get_node(\"../Swamp/Alligator\")\n" +"get_node(\"/root/MyGame\")\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode(\"Sword\");\n" +"GetNode(\"Backpack/Dagger\");\n" +"GetNode(\"../Swamp/Alligator\");\n" +"GetNode(\"/root/MyGame\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"获取一个节点。[NodePath] 可以是到一个节点的相对路径(从当前节点)或绝对路径" +"(在场景树中)。如果该路径不存在,则返回 [code]null[/code] 并记录一个错误。尝" +"试访问该返回值上的方法,将产生一个“尝试在一个 null 实例上调用 <method>。”错" +"误。\n" +"[b]注意:[/b]获取绝对路径,仅在节点位于场景树内部时有效(参见 [method " +"is_inside_tree])。\n" +"[b]示例:[/b]假设你当前的节点是 Character 和以下树:\n" +"[codeblock]\n" +"/root\n" +"/root/Character\n" +"/root/Character/Sword\n" +"/root/Character/Backpack/Dagger\n" +"/root/MyGame\n" +"/root/Swamp/Alligator\n" +"/root/Swamp/Mosquito\n" +"/root/Swamp/Goblin\n" +"[/codeblock]\n" +"可能的路径有:\n" +"[codeblocks]\n" +"[gdscript]\n" +"get_node(\"Sword\")\n" +"get_node(\"Backpack/Dagger\")\n" +"get_node(\"../Swamp/Alligator\")\n" +"get_node(\"/root/MyGame\")\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode(\"Sword\");\n" +"GetNode(\"Backpack/Dagger\");\n" +"GetNode(\"../Swamp/Alligator\");\n" +"GetNode(\"/root/MyGame\");\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Fetches a node and one of its resources as specified by the [NodePath]'s " +"subname (e.g. [code]Area2D/CollisionShape2D:shape[/code]). If several nested " +"resources are specified in the [NodePath], the last one will be fetched.\n" +"The return value is an array of size 3: the first index points to the [Node] " +"(or [code]null[/code] if not found), the second index points to the " +"[Resource] (or [code]null[/code] if not found), and the third index is the " +"remaining [NodePath], if any.\n" +"For example, assuming that [code]Area2D/CollisionShape2D[/code] is a valid " +"node and that its [code]shape[/code] property has been assigned a " +"[RectangleShape2D] resource, one could have this kind of output:\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(get_node_and_resource(\"Area2D/CollisionShape2D\")) # " +"[[CollisionShape2D:1161], Null, ]\n" +"print(get_node_and_resource(\"Area2D/CollisionShape2D:shape\")) # " +"[[CollisionShape2D:1161], [RectangleShape2D:1156], ]\n" +"print(get_node_and_resource(\"Area2D/CollisionShape2D:shape:extents\")) # " +"[[CollisionShape2D:1161], [RectangleShape2D:1156], :extents]\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(GetNodeAndResource(\"Area2D/CollisionShape2D\")); // " +"[[CollisionShape2D:1161], Null, ]\n" +"GD.Print(GetNodeAndResource(\"Area2D/CollisionShape2D:shape\")); // " +"[[CollisionShape2D:1161], [RectangleShape2D:1156], ]\n" +"GD.Print(GetNodeAndResource(\"Area2D/CollisionShape2D:shape:extents\")); // " +"[[CollisionShape2D:1161], [RectangleShape2D:1156], :extents]\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"按照 [NodePath] 的子名称(例如 [code]Area2D/CollisionShape2D:shape[/code])指" +"定的方式,获取节点及其一个资源。如果在 [NodePath] 中指定了多个嵌套资源,则将" +"获取最后一个。\n" +"返回值是一个大小为 3 的数组:第一个索引指向该 [Node](如果未找到,则为 " +"[code]null[/code]),第二个索引指向 [Resource](或者未找到时为 [code]null[/" +"code]),第三个索引是剩余的 [NodePath],如果有的话。\n" +"例如,假设 [code]Area2D/CollisionShape2D[/code] 是一个有效的节点,并且它的 " +"[code]shape[/code] 属性已被分配了一个 [RectangleShape2D] 资源,那么可以得到这" +"样的输出:\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(get_node_and_resource(\"Area2D/CollisionShape2D\")) # " +"[[CollisionShape2D:1161], Null, ]\n" +"print(get_node_and_resource(\"Area2D/CollisionShape2D:shape\")) # " +"[[CollisionShape2D:1161], [RectangleShape2D:1156], ]\n" +"print(get_node_and_resource(\"Area2D/CollisionShape2D:shape:extents\")) # " +"[[CollisionShape2D:1161], [RectangleShape2D:1156], :extents]\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(GetNodeAndResource(\"Area2D/CollisionShape2D\")); // " +"[[CollisionShape2D:1161], Null, ]\n" +"GD.Print(GetNodeAndResource(\"Area2D/CollisionShape2D:shape\")); // " +"[[CollisionShape2D:1161], [RectangleShape2D:1156], ]\n" +"GD.Print(GetNodeAndResource(\"Area2D/CollisionShape2D:shape:extents\")); // " +"[[CollisionShape2D:1161], [RectangleShape2D:1156], :extents]\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Similar to [method get_node], but does not log an error if [param path] does " "not point to a valid [Node]." msgstr "" @@ -47852,6 +65873,32 @@ msgstr "" "is_inside_tree])。" msgid "" +"Returns the relative [NodePath] from this node to the specified [param " +"node]. Both nodes must be in the same scene or the function will fail.\n" +"If [param use_unique_path] is [code]true[/code], returns the shortest path " +"considering unique node.\n" +"[b]Note:[/b] If you get a relative path which starts from a unique node, the " +"path may be longer than a normal relative path due to the addition of the " +"unique node's name." +msgstr "" +"返回从该节点到指定节点 [param node] 的相对 [NodePath]。这两个节点都必须在同一" +"个场景中,否则函数会失败。\n" +"如果 [param use_unique_path] 为 [code]true[/code],则会返回考虑唯一节点的最短" +"路径。\n" +"[b]注意:[/b]如果你获取了从唯一节点开始的相对路径,则该路径可能由于唯一节点的" +"名称长度而比普通的相对路径长。" + +msgid "" +"Returns the time elapsed (in seconds) since the last physics-bound frame " +"(see [method _physics_process]). This is always a constant value in physics " +"processing unless the frames per second is changed via [member Engine." +"physics_ticks_per_second]." +msgstr "" +"返回自上一个物理绑定帧以来经过的时间(单位为秒)(参见 [method " +"_physics_process])。除非通过 [member Engine.physics_ticks_per_second] 更改每" +"秒帧数,否则这在物理处理中始终是一个恒定值。" + +msgid "" "Returns the time elapsed (in seconds) since the last process callback. This " "value may vary from frame to frame." msgstr "返回自上次处理回调以来经过的时间(单位为秒)。这个值可能因帧而异。" @@ -47930,6 +65977,11 @@ msgid "" msgstr "如果该节点当前在 [SceneTree] 中,返回 [code]true[/code]。" msgid "" +"Returns [code]true[/code] if the local system is the multiplayer authority " +"of this node." +msgstr "如果本地系统为这个节点的多人游戏控制者,则返回 [code]true[/code]。" + +msgid "" "Returns [code]true[/code] if physics processing is enabled (see [method " "set_physics_process])." msgstr "" @@ -47963,6 +66015,13 @@ msgstr "" "set_process_internal])。" msgid "" +"Returns [code]true[/code] if the node is processing shortcuts (see [method " +"set_process_shortcut_input])." +msgstr "" +"如果节点正在处理快捷键,则返回 [code]true[/code](见 [method " +"set_process_shortcut_input])。" + +msgid "" "Returns [code]true[/code] if the node is processing unhandled input (see " "[method set_process_unhandled_input])." msgstr "" @@ -48029,6 +66088,32 @@ msgstr "" "[/codeblock]" msgid "" +"Similar to [method print_tree], this prints the tree to stdout. 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 print_tree],会将树打印到标准输出。这个版本显示了一种更加图形" +"化的表示方式,类似于在场景面板中显示的内容。非常适合检查较大的树。\n" +"[b]输出示例:[/b]\n" +"[codeblock]\n" +" ┖╴TheGame\n" +" ┠╴Menu\n" +" ┃ ┠╴Label\n" +" ┃ ┖╴Camera2D\n" +" ┖╴SplashScreen\n" +" ┖╴Camera2D\n" +"[/codeblock]" + +msgid "" "Calls the given method (if present) with the arguments given in [param args] " "on this node and recursively on all its children. If the [param " "parent_first] argument is [code]true[/code], the method will be called on " @@ -48048,6 +66133,17 @@ msgstr "" "子节点。" msgid "" +"Queues a node for deletion at the end of the current frame. When deleted, " +"all of its child nodes will be deleted as well. This method ensures it's " +"safe to delete the node, contrary to [method Object.free]. Use [method " +"Object.is_queued_for_deletion] to check whether a node will be deleted at " +"the end of the frame." +msgstr "" +"将节点加入队列,在当前帧结束时删除。当删除节点时,它的所有子节点也将被删除。" +"与 [method Object.free] 不同,这个方法能够确保节点能够被安全删除。请使用 " +"[method Object.is_queued_for_deletion] 检查某个节点是否将在帧结束时被删除。" + +msgid "" "Removes a child node. The node is NOT deleted and must be deleted manually.\n" "[b]Note:[/b] This function may set the [member owner] of the removed Node " "(or its descendants) to be [code]null[/code], if that [member owner] is no " @@ -48058,6 +66154,26 @@ msgstr "" "点(或其后代)的 [member owner] 设置为 [code]null[/code]。" msgid "" +"Removes a node from the [param group]. Does nothing if the node is not in " +"the [param group]. See notes in the description, and the group methods in " +"[SceneTree]." +msgstr "" +"从 [param group] 中移除一个节点。如果该节点不在 [param group] 中,则不执行任" +"何操作。见描述中的注意项,以及 [SceneTree] 中的分组方法。" + +msgid "" +"Changes the parent of this [Node] to the [param new_parent]. The node needs " +"to already have a parent.\n" +"If [param keep_global_transform] is [code]true[/code], the node's global " +"transform will be preserved if supported. [Node2D], [Node3D] and [Control] " +"support this argument (but [Control] keeps only position)." +msgstr "" +"将这个 [Node] 的父节点更改为 [param new_parent]。该节点需要拥有父节点。\n" +"如果 [param keep_global_transform] 为 [code]true[/code],则会在支持时保持该节" +"点的全局变换。[Node2D]、[Node3D]、[Control] 支持这个参数(但 [Control] 只会保" +"留位置)。" + +msgid "" "Replaces a node in a scene by the given one. Subscriptions that pass through " "this node will be lost.\n" "If [param keep_groups] is [code]true[/code], the [param node] is added to " @@ -48117,6 +66233,86 @@ msgstr "" "CONNECTION_CONNECTED[/code] 来跟踪。" msgid "" +"Changes the RPC mode for the given [param method] with the given [param " +"config] which should be [code]null[/code] (to disable) or a [Dictionary] in " +"the form:\n" +"[codeblock]\n" +"{\n" +" rpc_mode = MultiplayerAPI.RPCMode,\n" +" transfer_mode = MultiplayerPeer.TranferMode,\n" +" call_local = false,\n" +" channel = 0,\n" +"}\n" +"[/codeblock]\n" +"See [enum MultiplayerAPI.RPCMode] and [enum MultiplayerPeer.TransferMode]. " +"An alternative is annotating methods and properties with the corresponding " +"[annotation @GDScript.@rpc] annotation ([code]@rpc(\"any_peer\")[/code], " +"[code]@rpc(\"authority\")[/code]). By default, methods are not exposed to " +"networking (and RPCs)." +msgstr "" +"将给定的 [param method] 的 RPC 模式更改为给定的配置 [param config]。配置应该" +"是 [code]null[/code](表示禁用)或者是以下形式的 [Dictionary]:\n" +"[codeblock]\n" +"{\n" +"rpc_mode = MultiplayerAPI.RPCMode,\n" +"transfer_mode = MultiplayerPeer.TranferMode,\n" +"call_local = false,\n" +"channel = 0,\n" +"}\n" +"[/codeblock]\n" +"见 [enum MultiplayerAPI.RPCMode] 和 [enum MultiplayerPeer.TransferMode]。另一" +"种选择是使用相应的 [annotation @GDScript.@rpc] 注解对方法和属性进行注解(例" +"如 [code]@rpc(\"any_peer\")[/code]、[code]@rpc(\"authority\")[/code])。默认" +"情况下,方法不会被暴露给网络(和 RPC)。" + +msgid "" +"Sends a [method rpc] to a specific peer identified by [param peer_id] (see " +"[method MultiplayerPeer.set_target_peer]). Returns [code]null[/code]." +msgstr "" +"向指定的对等体发送 [method rpc],对等体由 [param peer_id] 标识(见 [method " +"MultiplayerPeer.set_target_peer])。返回 [code]null[/code]。" + +msgid "" +"Sets the folded state of the node in the Scene dock. This method is only " +"intended for use with editor tooling." +msgstr "设置该节点在“场景”面板中的折叠状态。这个方法仅适用于编辑器工具。" + +msgid "" +"Sets the editable children state of [param node] relative to this node. This " +"method is only intended for use with editor tooling." +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]. Inherited from the parent node by default, which " +"ultimately 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." +msgstr "" +"将该节点的多人游戏授权端设置为具有给定对等体 ID 的对等体。多人游戏授权端是对" +"网络上的节点具有权限的对等体。与 [method rpc_config] 和 [MultiplayerAPI] 结合" +"使用很有用。默认从父节点继承,最终默认为对等体 ID 1(服务器)。如果 [param " +"recursive],则给定的对等体被递归设置为该节点所有子节点的授权端。" + +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 a fixed (usually 60 FPS, see [member Engine." +"physics_ticks_per_second] to change) interval (and the [method " +"_physics_process] callback will be called if exists). Enabled automatically " +"if [method _physics_process] is overridden. Any calls to this before [method " +"_ready] will be ignored." +msgstr "" +"启用或禁用物理(即固定帧率)处理。当一个节点正在被处理时,它会在一个固定的" +"(通常是 60 FPS,参见 [member Engine.physics_ticks_per_second] 以更改)时间间" +"隔,接收一个 [constant NOTIFICATION_PHYSICS_PROCESS] (如果存在 [method " +"_physics_process] 回调,该回调将被调用)。如果 [method _physics_process] 被重" +"写,则自动被启用。在 [method _ready] 之前对该函数的任何调用,都将被忽略。" + +msgid "" "Enables or disables internal physics for this node. Internal physics " "processing happens in isolation from the normal [method _physics_process] " "calls and is used by some nodes internally to guarantee proper functioning " @@ -48286,6 +66482,16 @@ msgstr "" "级值[i]较低[/i]的节点将首先执行其处理回调。" msgid "" +"If a scene is instantiated from a file, its topmost node contains the " +"absolute file path from which it was loaded in [member scene_file_path] (e." +"g. [code]res://levels/1.tscn[/code]). Otherwise, [member scene_file_path] is " +"set to an empty string." +msgstr "" +"如果一个场景是从一个文件实例化来的,则其最顶层的节点的 [member " +"scene_file_path] 中,将包含它从何处被加载的绝对文件路径(例如 [code]res://" +"levels/1.tscn[/code])。否则 [member scene_file_path] 被设置为一个空字符串。" + +msgid "" "Sets this node's name as a unique name in its [member owner]. This allows " "the node to be accessed as [code]%Name[/code] instead of the full path, from " "any node within that scene.\n" @@ -48309,6 +66515,19 @@ msgstr "" "tree_entered] [i]之后[/i]触发。" msgid "" +"Emitted when a child node is about to exit the scene tree, either because it " +"is being removed or freed directly, or because this node is exiting the " +"tree.\n" +"When this signal is received, the child [param node] is still in the tree " +"and valid. This signal is emitted [i]after[/i] the child node's own [signal " +"tree_exiting] and [constant NOTIFICATION_EXIT_TREE]." +msgstr "" +"当一个子节点即将退出场景树时发出,要么是因为它正在被移除或直接释放,要么是因" +"为该节点正在退出树。\n" +"当收到这个信号时,子 [param node] 仍然在树中并且有效。该信号在子节点自己的 " +"[signal tree_exiting] 和 [constant NOTIFICATION_EXIT_TREE] [i]之后[/i]发出。" + +msgid "" "Emitted when the node is ready. Comes after [method _ready] callback and " "follows the same rules." msgstr "当该节点就绪时发出。在 [method _ready] 回调之后发出,遵循相同的规则。" @@ -48783,6 +67002,13 @@ msgstr "将小工具附加到该 [code]Node3D[/code] 上。" msgid "Clear all gizmos attached to this [code]Node3D[/code]." msgstr "清除附加于该 [code]Node3D[/code] 的所有小工具。" +msgid "" +"Clears subgizmo selection for this node in the editor. Useful when subgizmo " +"IDs become invalid after a property change." +msgstr "" +"在编辑器中,清除该节点的子小工具选择。在一个属性更改后,子小工具 ID 变得无效" +"时很有用。" + msgid "Returns all the gizmos attached to this [code]Node3D[/code]." msgstr "返回附加到该 [code]Node3D[/code] 的所有小工具。" @@ -48821,11 +67047,22 @@ msgid "" msgstr "禁用该节点的渲染。会将 [member visible] 改为 [code]false[/code]。" msgid "" +"Returns whether node notifies about its local transformation changes. " +"[Node3D] will not propagate this by default." +msgstr "返回该节点是否通知其局部变换的更改。[Node3D] 默认不会传播此属性。" + +msgid "" "Returns whether this node uses a scale of [code](1, 1, 1)[/code] or its " "local transformation scale." msgstr "返回该节点是否使用 [code](1, 1, 1)[/code] 的比例或其本地变换比例。" msgid "" +"Returns whether the node notifies about its global and local transformation " +"changes. [Node3D] will not propagate this by default." +msgstr "" +"返回该节点是否通知其全局和局部变换的更改。[Node3D] 默认不会传播此属性。" + +msgid "" "Returns [code]true[/code] if the node is present in the [SceneTree], its " "[member visible] property is [code]true[/code] and all its antecedents are " "also visible. If any antecedent is hidden, this node will not be visible in " @@ -48836,6 +67073,42 @@ msgstr "" "被隐藏,则该节点在场景树中将不可见。" msgid "" +"Rotates the node so that the local forward axis (-Z) points toward the " +"[param target] position.\n" +"The local up axis (+Y) points as close to the [param up] vector as possible " +"while staying perpendicular to the local forward axis. The resulting " +"transform is orthogonal, and the scale is preserved. Non-uniform scaling may " +"not work correctly.\n" +"The [param target] position cannot be the same as the node's position, the " +"[param up] vector cannot be zero, and the direction from the node's position " +"to the [param target] vector cannot be parallel to the [param up] vector.\n" +"Operations take place in global space, which means that the node must be in " +"the scene tree." +msgstr "" +"旋转该节点,使其局部前向轴(-Z)指向 [param target] 位置。\n" +"局部向上轴(+Y)指向尽可能靠近 [param up] 向量,同时保持垂直于局部前向轴。产" +"生的变换是正交的,并且保留了缩放。非均匀缩放可能无法正常工作。\n" +"[param target] 位置不能与该节点位置相同,[param up] 向量不能为零,节点位置到 " +"[param target] 向量的方向不能与 [param up] 向量平行。\n" +"操作发生在全局空间中,这意味着该节点必须在场景树中。" + +msgid "" +"Moves the node to the specified [param position], and then rotates the node " +"to point toward the [param target] as per [method look_at]. Operations take " +"place in global space." +msgstr "" +"将节点移动到指定的 [param position],然后根据 [method look_at] 旋转该节点以指" +"向 [param target]。操作发生在全局空间中。" + +msgid "" +"Resets this node's transformations (like scale, skew and taper) preserving " +"its rotation and translation by performing Gram-Schmidt orthonormalization " +"on this node's [Transform3D]." +msgstr "" +"通过在该节点的 [Transform3D] 上执行 Gram-Schmidt 正交归一化,重置该节点的变换" +"(如缩放、倾斜和锥度),以保留其旋转和平移。" + +msgid "" "Rotates the local transformation around axis, a unit [Vector3], by specified " "angle in radians." msgstr "围绕轴(单位 [Vector3])旋转局部变换,指定角度(弧度)。" @@ -48877,7 +67150,23 @@ msgstr "重置此节点的所有变换(将其 [Transform3D] 设置为单位矩 msgid "" "Sets whether the node ignores notification that its transformation (global " "or local) changed." -msgstr "设置节点是否忽略其转换(全局或局部)改变的通知。" +msgstr "设置该节点是否忽略其转换(全局或局部)改变的通知。" + +msgid "" +"Sets whether the node notifies about its local transformation changes. " +"[Node3D] will not propagate this by default." +msgstr "设置该节点是否通知其局部变换的更改。[Node3D] 默认不会传播此属性。" + +msgid "" +"Sets whether the node notifies about its global and local transformation " +"changes. [Node3D] will not propagate this by default, unless it is in the " +"editor context and it has a valid gizmo." +msgstr "" +"设置该节点是否通知其全局和局部变换的更改。[Node3D] 默认不会传播此属性,除非位" +"于编辑器上下文中,并且存在有效的小工具。" + +msgid "Set subgizmo selection for this node in the editor." +msgstr "在编辑器中为该节点设置子小工具选择。" msgid "" "Enables rendering of this node. Changes [member visible] to [code]true[/" @@ -48941,6 +67230,18 @@ msgid "World3D space (global) [Transform3D] of this node." msgstr "该节点在 World3D 空间的(全局)[Transform3D]。" msgid "" +"Local position or translation of this node relative to the parent. This is " +"equivalent to [code]transform.origin[/code]." +msgstr "" +"该节点相对于父节点的局部位置或平移。相当于 [code]transform.origin[/code]。" + +msgid "" +"Access to the node rotation as a [Quaternion]. This property is ideal for " +"tweening complex rotations." +msgstr "" +"以一个 [Quaternion] 的形式访问该节点的旋转。该属性非常适合补间复杂的旋转。" + +msgid "" "Rotation part of the local transformation in radians, specified in terms of " "Euler angles. The angles construct a rotaton in the order specified by the " "[member rotation_order] property.\n" @@ -48967,10 +67268,57 @@ msgid "Specify how rotation (and scale) will be presented in the editor." msgstr "指定旋转(和缩放)在编辑器中的显示方式。" msgid "" +"Specify the axis rotation order of the [member rotation] property. The final " +"orientation is constructed by rotating the Euler angles in the order " +"specified by this property." +msgstr "" +"指定 [member rotation] 属性的轴旋转顺序。最终的方向是通过按该属性指定的顺序旋" +"转欧拉角来构建的。" + +msgid "" +"Scale part of the local transformation.\n" +"[b]Note:[/b] Mixed negative scales in 3D are not decomposable from the " +"transformation matrix. Due to the way scale is represented with " +"transformation matrices in Godot, the scale values will either be all " +"positive or all negative.\n" +"[b]Note:[/b] Not all nodes are visually scaled by the [member scale] " +"property. For example, [Light3D]s are not visually affected by [member " +"scale]." +msgstr "" +"局部变换的缩放部分。\n" +"[b]注意:[/b]3D 中,变换矩阵是无法分解出正负混合的缩放的。由于 Godot 中使用变" +"换矩阵来表示缩放,得到的缩放值要么全正、要么全负。\n" +"[b]注意:[/b]并不是所有节点的外观都会被 [member scale] 属性缩放。例如," +"[Light3D] 的外观就不受 [member scale] 影响。" + +msgid "" +"If [code]true[/code], the node will not inherit its transformations from its " +"parent. Node transformations are only in global space." +msgstr "" +"如果为 [code]true[/code],则该节点将不会从其父节点继承其变换。节点变换仅在全" +"局空间中。" + +msgid "" "Local space [Transform3D] of this node, with respect to the parent node." msgstr "该节点的局部空间 [Transform3D],相对于父节点。" msgid "" +"Defines the visibility range parent for this node and its subtree. The " +"visibility parent must be a GeometryInstance3D. Any visual instance will " +"only be visible if the visibility parent (and all of its visibility " +"ancestors) is hidden by being closer to the camera than its own [member " +"GeometryInstance3D.visibility_range_begin]. Nodes hidden via the [member " +"Node3D.visible] property are essentially removed from the visibility " +"dependency tree, so dependent instances will not take the hidden node or its " +"ancestors into account." +msgstr "" +"定义该节点及其子树的可见性范围父级。可见性父级必须是一个 GeometryInstance3D。" +"仅当可见性父级(及其所有可见性祖先)通过比其自身 [member GeometryInstance3D." +"visibility_range_begin] 更靠近相机而被隐藏时,任何视觉实例才会可见。通过 " +"[member Node3D.visible] 属性隐藏的节点,基本上可以从可见性依赖树中移除,因此" +"依赖实例不会考虑隐藏节点或其祖先。" + +msgid "" "If [code]true[/code], this node is drawn. The node is only visible if all of " "its antecedents are visible as well (in other words, [method " "is_visible_in_tree] must return [code]true[/code])." @@ -49101,6 +67449,133 @@ msgstr "" "[code]^\"example\"[/code]。" msgid "" +"Creates a NodePath from a string, e.g. [code]\"Path2D/PathFollow2D/Sprite2D:" +"texture:size\"[/code]. A path is absolute if it starts with a slash. " +"Absolute paths are only valid in the global scene tree, not within " +"individual scenes. In a relative path, [code]\".\"[/code] and [code]\"..\"[/" +"code] indicate the current node and its parent.\n" +"The \"subnames\" optionally included after the path to the target node can " +"point to resources or properties, and can also be nested.\n" +"Examples of valid NodePaths (assuming that those nodes exist and have the " +"referenced resources or properties):\n" +"[codeblock]\n" +"# Points to the Sprite2D node.\n" +"\"Path2D/PathFollow2D/Sprite2D\"\n" +"# Points to the Sprite2D node and its \"texture\" resource.\n" +"# get_node() would retrieve \"Sprite2D\", while get_node_and_resource()\n" +"# would retrieve both the Sprite2D node and the \"texture\" resource.\n" +"\"Path2D/PathFollow2D/Sprite2D:texture\"\n" +"# Points to the Sprite2D node and its \"position\" property.\n" +"\"Path2D/PathFollow2D/Sprite2D:position\"\n" +"# Points to the Sprite2D node and the \"x\" component of its \"position\" " +"property.\n" +"\"Path2D/PathFollow2D/Sprite2D:position:x\"\n" +"# Absolute path (from \"root\")\n" +"\"/root/Level/Path2D\"\n" +"[/codeblock]" +msgstr "" +"从一个字符串,例如 [code]\"Path2D/PathFollow2D/Sprite2D:texture:size\"[/" +"code],创建一个 NodePath。如果路径以斜杠开头,则该路径是绝对路径。绝对路径仅" +"在全局场景树中有效,在单个场景中无效。在相对路径中,[code]\".\"[/code] 和 " +"[code]\"..\"[/code] 表示当前节点及其父节点。\n" +"在到目标节点的路径后可以选择包含“子名称”,它可以指向资源或属性,也可以被嵌" +"套。\n" +"有效 NodePath 的示例(假设这些节点存在,并具有引用的资源或属性):\n" +"[codeblock]\n" +"# 指向 Sprite2D 节点。\n" +"\"Path2D/PathFollow2D/Sprite2D\"\n" +"# 指向 Sprite2D 节点及其“纹理(texture)”资源。\n" +"# get_node() 将检索“Sprite2D”,而 get_node_and_resource()\n" +"# 将同时检索该 Sprite2D 节点和其“纹理(texture)”资源。\n" +"\"Path2D/PathFollow2D/Sprite2D:texture\"\n" +"# 指向 Sprite2D 节点及其“位置(position)”属性。\n" +"\"Path2D/PathFollow2D/Sprite2D:position\"\n" +"# 指向 Sprite2D 节点及其“位置(position)”属性的“x”分量。\n" +"\"Path2D/PathFollow2D/Sprite2D:position:x\"\n" +"# 绝对路径(从 “root” 开始)\n" +"“/root/Level/Path2D”\n" +"[/codeblock]" + +msgid "" +"Returns a node path with a colon character ([code]:[/code]) prepended, " +"transforming it to a pure property path with no node name (defaults to " +"resolving from the current node).\n" +"[codeblocks]\n" +"[gdscript]\n" +"# This will be parsed as a node path to the \"x\" property in the " +"\"position\" node.\n" +"var node_path = NodePath(\"position:x\")\n" +"# This will be parsed as a node path to the \"x\" component of the " +"\"position\" property in the current node.\n" +"var property_path = node_path.get_as_property_path()\n" +"print(property_path) # :position:x\n" +"[/gdscript]\n" +"[csharp]\n" +"// This will be parsed as a node path to the \"x\" property in the " +"\"position\" node.\n" +"var nodePath = new NodePath(\"position:x\");\n" +"// This will be parsed as a node path to the \"x\" component of the " +"\"position\" property in the current node.\n" +"NodePath propertyPath = nodePath.GetAsPropertyPath();\n" +"GD.Print(propertyPath); // :position:x\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回前面带有冒号字符([code]:[/code])的节点路径,将其转换为没有节点名称的纯" +"属性路径(默认为从当前节点解析)。\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 这将被解析为一个到“position”节点中“x”属性的节点路径。\n" +"var node_path = NodePath(\"position:x\")\n" +"# 这将被解析为一个到当前节点中“position”属性的“x”分量的节点路径。\n" +"var property_path = node_path.get_as_property_path()\n" +"print(property_path) # :position:x\n" +"[/gdscript]\n" +"[csharp]\n" +"// 这将被解析为一个到“position”节点中“x”属性的节点路径。\n" +"var nodePath = new NodePath(\"position:x\");\n" +"// 这将被解析为一个到当前节点中“position”属性的“x”分量的节点路径。\n" +"NodePath propertyPath = nodePath.GetAsPropertyPath();\n" +"GD.Print(propertyPath); // :position:x\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns all paths concatenated with a slash character ([code]/[/code]) as " +"separator without subnames." +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 nodepath = NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:load_path\")\n" +"print(nodepath.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 nodepath = NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:load_path\")\n" +"print(nodepath.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" "[codeblocks]\n" @@ -49144,40 +67619,6 @@ msgstr "" "例如,[code]\"Path2D/PathFollow2D/Sprite2D\"[/code] 中有 3 个名称。" msgid "" -"Gets the resource or property name indicated by [param idx] (0 to [method " -"get_subname_count]).\n" -"[codeblocks]\n" -"[gdscript]\n" -"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" -"load_path\")\n" -"print(node_path.get_subname(0)) # texture\n" -"print(node_path.get_subname(1)) # load_path\n" -"[/gdscript]\n" -"[csharp]\n" -"var nodePath = new NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" -"load_path\");\n" -"GD.Print(nodePath.GetSubname(0)); // texture\n" -"GD.Print(nodePath.GetSubname(1)); // load_path\n" -"[/csharp]\n" -"[/codeblocks]" -msgstr "" -"获取由 [param idx](0 到 [method get_subname_count])指示的资源或属性名称。\n" -"[codeblocks]\n" -"[gdscript]\n" -"var node_path = NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" -"load_path\")\n" -"print(node_path.get_subname(0)) # texture\n" -"print(node_path.get_subname(1)) # load_path\n" -"[/gdscript]\n" -"[csharp]\n" -"var nodePath = new NodePath(\"Path2D/PathFollow2D/Sprite2D:texture:" -"load_path\");\n" -"GD.Print(nodePath.GetSubname(0)); // texture\n" -"GD.Print(nodePath.GetSubname(1)); // load_path\n" -"[/csharp]\n" -"[/codeblocks]" - -msgid "" "Gets the number of resource or property names (\"subnames\") in the path. " "Each subname is listed after a colon character ([code]:[/code]) in the node " "path.\n" @@ -49221,6 +67662,22 @@ msgid "Abstract base class for noise generators." msgstr "噪声生成器的抽象基类。" msgid "" +"This class defines the interface for noise generation libraries to inherit " +"from.\n" +"A default get_seamless_noise() implementation is provided for libraries that " +"do not provide seamless noise. This function requests a larger image from " +"get_image(), 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" +"为不提供无缝噪声的库提供一个默认的 get_seamless_noise() 实现。该函数从 " +"get_image() 请求更大的图像,反转该图像的象限,然后使用额外宽度的条带在接缝处" +"混合。\n" +"继承的噪声类可以选择性地重写该函数,以提供更优化的算法。" + +msgid "" "Returns a 2D [Image] noise image.\n" "Note: With [param normalize] set to [code]false[/code] the default " "implementation expects the noise generator to return values in the range " @@ -49249,6 +67706,9 @@ msgstr "" "注意:[param normalize] 为 [code]false[/code] 时,默认实现要求噪声生成器返回 " "[code]-1.0[/code] 到 [code]1.0[/code] 之间的值。" +msgid "A texture filled with noise generated by a [Noise] object." +msgstr "由 [Noise] 对象生成的噪声所填充的纹理。" + msgid "" "Uses [FastNoiseLite] or other libraries to fill the texture data of your " "desired size.\n" @@ -49289,12 +67749,38 @@ msgid "" "Strength of the bump maps used in this texture. A higher value will make the " "bump maps appear larger while a lower value will make them appear softer." msgstr "" -"此纹理中使用的凹凸贴图的强度。较高的值会使凹凸贴图看起来更大,而较低的值会使" +"该纹理中使用的凹凸贴图的强度。更高的值会使凹凸贴图看起来更大,而更低的值会使" "它们看起来更柔和。" +msgid "" +"A [Gradient] which is used to map the luminance of each pixel to a color " +"value." +msgstr "[Gradient],用于将每个像素的亮度映射到一个颜色值。" + +msgid "" +"Determines whether mipmaps are generated for this texture.\n" +"Enabling this results in less texture aliasing, but the noise texture " +"generation may take longer.\n" +"Requires (anisotropic) mipmap filtering to be enabled for a material to have " +"an effect." +msgstr "" +"确定是否为该纹理生成 mipmap。\n" +"启用该属性可减少纹理混叠,但噪声纹理生成可能需要更长的时间。\n" +"需要启用(各向异性)mipmap 过滤才能使材质产生效果。" + msgid "Height of the generated texture." msgstr "生成的纹理的高度。" +msgid "" +"Determines whether the noise image is calculated in 3D space. May result in " +"reduced contrast." +msgstr "决定是否在 3D 空间中计算噪声图像。可能会导致对比度降低。" + +msgid "" +"If [code]true[/code], inverts the noise texture. White becomes black, black " +"becomes white." +msgstr "如果为 [code]true[/code],则反转该噪声纹理。白变黑,黑变白。" + msgid "The instance of the [Noise] object." msgstr "[Noise] 对象的实例。" @@ -49308,12 +67794,131 @@ msgstr "" "[code]0.0[/code] 到 [code]1.0[/code]。\n" "关闭归一化会影响对比度,并允许生成非重复的可平铺噪声纹理。" +msgid "" +"If [code]true[/code], a seamless texture is requested from the [Noise] " +"resource.\n" +"[b]Note:[/b] Seamless noise textures may take longer to generate and/or can " +"have a lower contrast compared to non-seamless noise depending on the used " +"[Noise] resource. This is because some implementations use higher dimensions " +"for generating seamless noise." +msgstr "" +"如果为 [code]true[/code],则从 [Noise] 资源请求一个无缝纹理。\n" +"[b]注意:[/b]与非无缝噪声相比,无缝噪声纹理可能需要更长的时间来生成,和/或可" +"能具有较低的对比度,具体取决于所使用的 [Noise] 资源。这是因为一些实现使用更高" +"的维度来生成无缝噪声。" + +msgid "" +"Used for the default/fallback implementation of the seamless texture " +"generation. It determines the distance over which the seams are blended. " +"High values may result in less details and contrast. See [Noise] for further " +"details." +msgstr "" +"用于无缝纹理生成的默认/回退实现。它决定接缝混合的距离。较高的值可能会导致较少" +"的细节和对比度。有关详细信息,请参阅 [Noise]。" + msgid "Width of the generated texture." 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 Object[/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 " +"Object[/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 类介绍" @@ -49324,6 +67929,273 @@ 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<Godot.Collections.Dictionary> " +"_GetPropertyList()\n" +"{\n" +" return new Godot.Collections.Array<Godot.Collections.Dictionary>()\n" +" {\n" +" new Godot.Collections.Dictionary()\n" +" {\n" +" { \"name\", \"FakeProperty\" },\n" +" { \"type\", (int)Variant.Type.Int }\n" +" }\n" +" };\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"重写该方法以自定义 [method 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<Godot.Collections.Dictionary> " +"_GetPropertyList()\n" +"{\n" +" return new Godot.Collections.Array<Godot.Collections.Dictionary>()\n" +" {\n" +" new Godot.Collections.Dictionary()\n" +" {\n" +" { \"name\", \"FakeProperty\" },\n" +" { \"type\", (int)Variant.Type.Int }\n" +" }\n" +" };\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Override this method to customize how script properties should be handled by " +"the engine.\n" +"Should return a property list, as an [Array] of dictionaries. The result is " +"added to the array of [method get_property_list], and should be formatted in " +"the same way. Each [Dictionary] must at least contain the [code]name[/code] " +"and [code]type[/code] entries.\n" +"The example below displays [code]hammer_type[/code] in the Inspector dock, " +"only if [code]holding_hammer[/code] is [code]true[/code]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends Node2D\n" +"\n" +"@export var holding_hammer = false:\n" +" set(value):\n" +" holding_hammer = value\n" +" notify_property_list_changed()\n" +"var hammer_type = 0\n" +"\n" +"func _get_property_list():\n" +" # By default, `hammer_type` is not visible in the editor.\n" +" var property_usage = PROPERTY_USAGE_NO_EDITOR\n" +"\n" +" if holding_hammer:\n" +" property_usage = PROPERTY_USAGE_DEFAULT\n" +"\n" +" var properties = []\n" +" properties.append({\n" +" \"name\": \"hammer_type\",\n" +" \"type\": TYPE_INT,\n" +" \"usage\": property_usage, # See above assignment.\n" +" \"hint\": PROPERTY_HINT_ENUM,\n" +" \"hint_string\": \"Wooden,Iron,Golden,Enchanted\"\n" +" })\n" +"\n" +" return properties\n" +"[/gdscript]\n" +"[csharp]\n" +"[Tool]\n" +"public partial class MyNode2D : Node2D\n" +"{\n" +" private bool _holdingHammer;\n" +"\n" +" [Export]\n" +" public bool HoldingHammer\n" +" {\n" +" get => _holdingHammer;\n" +" set\n" +" {\n" +" _holdingHammer = value;\n" +" NotifyPropertyListChanged();\n" +" }\n" +" }\n" +"\n" +" public int HammerType { get; set; }\n" +"\n" +" public override Godot.Collections.Array<Godot.Collections.Dictionary> " +"_GetPropertyList()\n" +" {\n" +" // By default, `HammerType` is not visible in the editor.\n" +" var propertyUsage = PropertyUsageFlags.NoEditor;\n" +"\n" +" if (HoldingHammer)\n" +" {\n" +" propertyUsage = PropertyUsageFlags.Default;\n" +" }\n" +"\n" +" var properties = new Godot.Collections.Array<Godot.Collections." +"Dictionary>();\n" +" properties.Add(new Godot.Collections.Dictionary()\n" +" {\n" +" { \"name\", \"HammerType\" },\n" +" { \"type\", (int)Variant.Type.Int },\n" +" { \"usage\", (int)propertyUsage }, // See above assignment.\n" +" { \"hint\", (int)PropertyHint.Enum },\n" +" { \"hint_string\", \"Wooden,Iron,Golden,Enchanted\" }\n" +" });\n" +"\n" +" return properties;\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This method is intended for advanced purposes. For most common " +"use cases, the scripting languages offer easier ways to handle properties. " +"See [annotation @GDScript.@export], [annotation @GDScript.@export_enum], " +"[annotation @GDScript.@export_group], etc.\n" +"[b]Note:[/b] If the object's script is not [annotation @GDScript.@tool], " +"this method will not be called in the editor." +msgstr "" +"重写该方法以自定义引擎处理脚本属性的方式。\n" +"应该返回一个属性列表,作为字典的 [Array]。该结果被添加到 [method " +"get_property_list] 的数组中,并且应该以相同的方式进行格式化。每个 " +"[Dictionary] 必须至少包含 [code]name[/code] 和 [code]type[/code] 条目。\n" +"以下示例仅在 [code]holding_hammer[/code] 为 [code]true[/code] 时,在检查器停" +"靠面板中显示 [code]hammer_type[/code]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"@tool\n" +"extends Node2D\n" +"\n" +"@export var holding_hammer = false:\n" +" set(value):\n" +" holding_hammer = value\n" +" notify_property_list_changed()\n" +"var hammer_type = 0\n" +"\n" +"func _get_property_list():\n" +" # 默认情况下,`hammer_type` 在编辑器中不可见。\n" +" var property_usage = PROPERTY_USAGE_NO_EDITOR\n" +"\n" +" if holding_hammer:\n" +" property_usage = PROPERTY_USAGE_DEFAULT\n" +"\n" +" var properties = []\n" +" properties.append({\n" +" \"name\": \"hammer_type\",\n" +" \"type\": TYPE_INT,\n" +" \"usage\": property_usage, # 参见上面的赋值。\n" +" \"hint\": PROPERTY_HINT_ENUM,\n" +" \"hint_string\": \"Wooden,Iron,Golden,Enchanted\"\n" +" })\n" +"\n" +" return properties\n" +"[/gdscript]\n" +"[csharp]\n" +"[Tool]\n" +"public partial class MyNode2D : Node2D\n" +"{\n" +" private bool _holdingHammer;\n" +"\n" +" [Export]\n" +" public bool HoldingHammer\n" +" {\n" +" get => _holdingHammer;\n" +" set\n" +" {\n" +" _holdingHammer = value;\n" +" NotifyPropertyListChanged();\n" +" }\n" +" }\n" +"\n" +" public int HammerType { get; set; }\n" +"\n" +" public override Godot.Collections.Array<Godot.Collections.Dictionary> " +"_GetPropertyList()\n" +" {\n" +" // 默认情况下,`HammerType` 在编辑器中不可见。\n" +" var propertyUsage = PropertyUsageFlags.NoEditor;\n" +"\n" +" if (HoldingHammer)\n" +" {\n" +" propertyUsage = PropertyUsageFlags.Default;\n" +" }\n" +"\n" +" var properties = new Godot.Collections.Array<Godot.Collections." +"Dictionary>();\n" +" properties.Add(new Godot.Collections.Dictionary()\n" +" {\n" +" { \"name\", \"HammerType\" },\n" +" { \"type\", (int)Variant.Type.Int },\n" +" { \"usage\", (int)propertyUsage }, // 参见上面的赋值。\n" +" { \"hint\", (int)PropertyHint.Enum },\n" +" { \"hint_string\", \"Wooden,Iron,Golden,Enchanted\" }\n" +" });\n" +"\n" +" return properties;\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]该方法旨在用于高级目的。对于大多数常见用例,脚本语言提供了更简单" +"的方法来处理属性。参见 [annotation @GDScript.@export]、[annotation @GDScript." +"@export_enum]、[annotation @GDScript.@export_group]、等。\n" +"[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 Object[/code] in C#). It can be also defined to take in " @@ -49342,6 +68214,79 @@ msgstr "" "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 " +"notification].\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _notification(what):\n" +" if what == NOTIFICATION_PREDELETE:\n" +" print(\"Goodbye!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Notification(long what)\n" +"{\n" +" if (what == NotificationPredelete)\n" +" {\n" +" GD.Print(\"Goodbye!\");\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] The base [Object] defines a few notifications ([constant " +"NOTIFICATION_POSTINITIALIZE] and [constant NOTIFICATION_PREDELETE]). " +"Inheriting classes such as [Node] define a lot more notifications, which are " +"also received by this method." +msgstr "" +"当对象收到一个通知时被调用,该通知可以通过将其与常量进行比较来在 [param " +"what] 中识别。另请参阅 [method notification]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _notification(what):\n" +" if what == NOTIFICATION_PREDELETE:\n" +" print(\"再见!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Notification(long what)\n" +"{\n" +" if (what == NotificationPredelete)\n" +" {\n" +" GD.Print(\"再见!\");\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]基类 [Object] 定义了一些通知([constant " +"NOTIFICATION_POSTINITIALIZE] 和 [constant NOTIFICATION_PREDELETE])。[Node] " +"等继承类定义了更多通知,这些通知也由该方法接收。" + +msgid "" +"Override this method to customize the given [param property]'s revert " +"behavior. Should return [code]true[/code] if the [param property] can be " +"reverted in the Inspector dock. Use [method _property_get_revert] to specify " +"the [param property]'s default value.\n" +"[b]Note:[/b] This method must return consistently, regardless of the current " +"value of the [param property]." +msgstr "" +"重写该方法以自定义给定 [param property] 的还原行为。如果 [param property] 可" +"以在检查器停靠面板中恢复,则应该返回 [code]true[/code]。使用 [method " +"_property_get_revert] 来指定 [param property] 的默认值。\n" +"[b]注意:[/b]无论 [param property] 的当前值如何,该方法都必须始终如一地返回。" + +msgid "" +"Override this method to customize the given [param property]'s revert " +"behavior. Should return the default value for the [param property]. If the " +"default value differs from the [param property]'s current value, a revert " +"icon is displayed in the Inspector dock.\n" +"[b]Note:[/b] [method _property_can_revert] must also be overridden for this " +"method to be called." +msgstr "" +"重写该方法以自定义给定 [param property] 的还原行为。应返回 [param property] " +"的默认值。如果默认值与 [param property] 的当前值不同,则检查器停靠面板中会显" +"示一个还原图标。\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 " @@ -49435,6 +68380,29 @@ msgstr "" "[/codeblocks]" msgid "" +"Override this method to customize the return value of [method to_string], " +"and therefore the object's representation as a [String].\n" +"[codeblock]\n" +"func _to_string():\n" +" return \"Welcome to Godot 4!\"\n" +"\n" +"func _init():\n" +" print(self) # Prints Welcome to Godot 4!\"\n" +" var a = str(self) # a is \"Welcome to Godot 4!\"\n" +"[/codeblock]" +msgstr "" +"重写该方法以自定义 [method to_string] 的返回值,从而将对象表示为一个 " +"[String]。\n" +"[codeblock]\n" +"func _to_string():\n" +" return \"欢迎来到 Godot 4!\"\n" +"\n" +"func _init():\n" +" print(self) # 输出“欢迎来到 Godot 4!”\n" +" var a = str(self) # a 是“欢迎来到 Godot 4!”\n" +"[/codeblock]" + +msgid "" "Adds a user-defined [param signal]. Optional arguments for the signal can be " "added as an [Array] of dictionaries, each defining a [code]name[/code] " "[String] and a [code]type[/code] [int] (see [enum Variant.Type]). See also " @@ -49608,6 +68576,336 @@ msgstr "" "code]。另见 [method set_message_translation]。" 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]Object.connect()[/code] or [code]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]Object.connect()[/code] 还是 [code]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 " "make sure that the connection exists." @@ -49616,6 +68914,106 @@ msgstr "" "个错误。使用 [method is_connected] 确保该连接存在。" msgid "" +"Emits the given [param signal] by name. The signal must exist, so it should " +"be a built-in signal of this class or one of its inherited classes, or a " +"user-defined signal (see [method add_user_signal]). This method supports a " +"variable number of arguments, so parameters can be passed as a comma " +"separated list.\n" +"Returns [constant ERR_UNAVAILABLE] if [param signal] does not exist or the " +"parameters are invalid.\n" +"[codeblocks]\n" +"[gdscript]\n" +"emit_signal(\"hit\", \"sword\", 100)\n" +"emit_signal(\"game_over\")\n" +"[/gdscript]\n" +"[csharp]\n" +"EmitSignal(SignalName.Hit, \"sword\", 100);\n" +"EmitSignal(SignalName.GameOver);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] In C#, [param signal] must be in snake_case when referring to " +"built-in Godot signals. Prefer using the names exposed in the " +"[code]SignalName[/code] class to avoid allocating a new [StringName] on each " +"call." +msgstr "" +"按名称发出给定的 [param signal]。该信号必须存在,所以它应该是该类或其继承类之" +"一的内置信号,或者是用户定义的信号(参见 [method add_user_signal])。该方法支" +"持可变数量的参数,所以参数可以以逗号分隔的列表形式传递。\n" +"如果 [param signal] 不存在或参数无效,则返回 [constant ERR_UNAVAILABLE]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"emit_signal(\"hit\", \"剑\", 100)\n" +"emit_signal(\"game_over\")\n" +"[/gdscript]\n" +"[csharp]\n" +"EmitSignal(SignalName.Hit, \"剑\", 100);\n" +"EmitSignal(SignalName.GameOver);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]在C#中,在引用内置 Godot 信号时,[param signal] 必须是 " +"snake_case。最好使用 [code]SignalName[/code] 类中公开的名称,以避免在每次调用" +"时分配一个新的 [StringName]。" + +msgid "" +"Deletes the object from memory. Pre-existing references to the object become " +"invalid, and any attempt to access them will result in a run-time error. " +"Checking the references with [method @GlobalScope.is_instance_valid] will " +"return [code]false[/code]." +msgstr "" +"从内存中删除该对象。对该对象的预先存在的引用会变得无效,并且任何访问它们的尝" +"试都将会产生一个运行时错误。使用 [method @GlobalScope.is_instance_valid] 检查" +"引用时将返回 [code]false[/code]。" + +msgid "" +"Returns the [Variant] value of the given [param property]. If the [param " +"property] does not exist, this method returns [code]null[/code].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node2D.new()\n" +"node.rotation = 1.5\n" +"var a = node.get(\"rotation\") # a is 1.5\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node2D();\n" +"node.Rotation = 1.5f;\n" +"var a = node.Get(\"rotation\"); // a is 1.5\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] In C#, [param property] must be in snake_case when referring to " +"built-in Godot properties. Prefer using the names exposed in the " +"[code]PropertyName[/code] class to avoid allocating a new [StringName] on " +"each call." +msgstr "" +"返回给定 [param property] 的 [Variant] 值。如果 [param property] 不存在,则该" +"方法返回 [code]null[/code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node2D.new()\n" +"node.rotation = 1.5\n" +"var a = node.get(\"rotation\") # a 为 1.5\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node2D();\n" +"node.Rotation = 1.5f;\n" +"var a = node.Get(\"rotation\"); // a 为 1.5\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]在 C# 中,在引用 Godot 内置属性时,[param property] 必须是 " +"snake_case。最好使用 [code]PropertyName[/code] 类中公开的名称,以避免在每次调" +"用时分配一个新的 [StringName]。" + +msgid "" +"Returns the object's built-in class name, as a [String]. See also [method " +"is_class].\n" +"[b]Note:[/b] This method ignores [code]class_name[/code] declarations. If " +"this object's script has defined a [code]class_name[/code], the base, built-" +"in class name is returned instead." +msgstr "" +"返回该对象的内置类名,作为一个 [String]。另请参阅 [method is_class]。\n" +"[b]注意:[/b]该方法将忽略 [code]class_name[/code] 声明。如果该对象的脚本定义" +"了一个 [code]class_name[/code],则改为返回内置基类名称。" + +msgid "" "Returns an [Array] of signal connections received by this object. Each " "connection is represented as a [Dictionary] that contains three entries:\n" "- [code]signal[/code] is a reference to the [Signal];\n" @@ -49629,6 +69027,59 @@ msgstr "" "- [code]flags[/code] 是 [enum ConnectFlags] 的组合。" msgid "" +"Gets the object's property indexed by the given [param property_path]. The " +"path should be a [NodePath] relative to the current object and can use the " +"colon character ([code]:[/code]) to access nested properties.\n" +"[b]Examples:[/b] [code]\"position:x\"[/code] or [code]\"material:next_pass:" +"blend_mode\"[/code].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node2D.new()\n" +"node.position = Vector2(5, -10)\n" +"var a = node.get_indexed(\"position\") # a is Vector2(5, -10)\n" +"var b = node.get_indexed(\"position:y\") # b is -10\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node2D();\n" +"node.Position = new Vector2(5, -10);\n" +"var a = node.GetIndexed(\"position\"); // a is Vector2(5, -10)\n" +"var b = node.GetIndexed(\"position:y\"); // b is -10\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] In C#, [param property_path] must be in snake_case when " +"referring to built-in Godot properties. Prefer using the names exposed in " +"the [code]PropertyName[/code] class to avoid allocating a new [StringName] " +"on each call.\n" +"[b]Note:[/b] This method does not support actual paths to nodes in the " +"[SceneTree], only sub-property paths. In the context of nodes, use [method " +"Node.get_node_and_resource] instead." +msgstr "" +"获取该对象的某个属性,该属性的属性路径由 [param property_path] 给出。该路径应" +"该是相对于当前对象的 [NodePath],可是使用英文冒号([code]:[/code])访问内嵌属" +"性。\n" +"[b]示例:[/b][code]\"position:x\"[/code] 或 [code]\"material:next_pass:" +"blend_mode\"[/code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node2D.new()\n" +"node.position = Vector2(5, -10)\n" +"var a = node.get_indexed(\"position\") # a 为 Vector2(5, -10)\n" +"var b = node.get_indexed(\"position:y\") # b 为 -10\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node2D();\n" +"node.Position = new Vector2(5, -10);\n" +"var a = node.GetIndexed(\"position\"); // a 为 Vector2(5, -10)\n" +"var b = node.GetIndexed(\"position:y\"); // b 为 -10\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]在 C# 中引用内置 Godot 属性时 [param property_path] 必须为 " +"snake_case 蛇形大小写。请优先使用 [code]PropertyName[/code] 类中暴露的名称," +"避免每次调用都重新分配一个 [StringName]。\n" +"[b]注意:[/b]这个方法不支持指向 [SceneTree] 中节点的路径,仅支持子属性路径。" +"在节点语境下,请改用 [method Node.get_node_and_resource]。" + +msgid "" "Returns the object's unique instance ID. This ID can be saved in " "[EncodedObjectAsID], and can be used to retrieve this object instance with " "[method @GlobalScope.instance_from_id]." @@ -49636,6 +69087,20 @@ 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] Metadata that has a [param name] starting with an underscore " +"([code]_[/code]) is considered editor-only. Editor-only metadata is not " +"displayed in the Inspector dock and should not be edited." +msgstr "" +"返回给定条目 [param name] 的对象的元数据值。如果该条目不存在,则返回 [param " +"default]。如果 [param default] 为 [code]null[/code],也会产生一个错误。\n" +"[b]注意:[/b]具有以下划线([code]_[/code])开头的 [param name] 的元数据,被视" +"为是仅供编辑器使用的。仅限编辑器的元数据不会显示在检查器停靠面板中,也不应该" +"被编辑。" + msgid "Returns the object's metadata entry names as a [PackedStringArray]." msgstr "将该对象的元数据作为 [PackedStringArray] 返回。" @@ -49666,6 +69131,30 @@ msgstr "" "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]." +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] 的组合。" + +msgid "" "Returns the object's [Script] instance, or [code]null[/code] if no script is " "attached." msgstr "" @@ -49685,6 +69174,56 @@ msgstr "" "- [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 " +"similarly to the returned values of [method get_method_list]." +msgstr "" +"将现有信号的列表返回为字典的一个 [Array] 。\n" +"[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] Metadata that has a [param 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]具有以下划线([code]_[/code])开头的 [param name] 的元数据,被视" +"为是仅供编辑器使用的。仅限编辑器的元数据不会显示在检查器停靠面板中,也不应该" +"被编辑,但它仍可以被该方法找到。" + +msgid "" +"Returns [code]true[/code] if the the given [param method] name exists in the " +"object.\n" +"[b]Note:[/b] In C#, [param method] must be in snake_case when referring to " +"built-in Godot methods. Prefer using the names exposed in the " +"[code]MethodName[/code] class to avoid allocating a new [StringName] on each " +"call." +msgstr "" +"如果该对象中存在给定的方法名 [param method],则返回 [code]true[/code]。\n" +"[b]注意:[/b]在 C# 中引用内置 Godot 方法时 [param method] 必须为 snake_case " +"蛇形大小写。请优先使用 [code]MethodName[/code] 类中暴露的名称,避免每次调用都" +"重新分配一个 [StringName]。" + +msgid "" +"Returns [code]true[/code] if the given [param signal] name exists in the " +"object.\n" +"[b]Note:[/b] In C#, [param signal] must be in snake_case when referring to " +"built-in Godot methods. Prefer using the names exposed in the " +"[code]SignalName[/code] class to avoid allocating a new [StringName] on each " +"call." +msgstr "" +"如果该对象中存在给定的信号名 [param signal],则返回 [code]true[/code]。\n" +"[b]注意:[/b]在 C# 中引用内置 Godot 信号时 [param signal] 必须为 snake_case " +"蛇形大小写。请优先使用 [code]SignalName[/code] 类中暴露的名称,避免每次调用都" +"重新分配一个 [StringName]。" + +msgid "" "Returns [code]true[/code] if the given user-defined [param signal] name " "exists. Only signals added with [method add_user_signal] are included." msgstr "" @@ -49737,12 +69276,321 @@ msgstr "" "[b]注意:[/b]此方法忽略对象脚本中的 [code]class_name[/code] 声明。" msgid "" +"Returns [code]true[/code] if a connection exists between the given [param " +"signal] name and [param callable].\n" +"[b]Note:[/b] In C#, [param signal] must be in snake_case when referring to " +"built-in Godot methods. Prefer using the names exposed in the " +"[code]SignalName[/code] class to avoid allocating a new [StringName] on each " +"call." +msgstr "" +"如果给定的 [param signal] 名称和 [param callable] 之间存在连接,则返回 " +"[code]true[/code]。\n" +"[b]注意:[/b]在 C# 中,在引用 Godot 内置方法时,[param signal] 必须是 " +"snake_case。最好使用 [code]SignalName[/code] 类中公开的名称,以避免在每次调用" +"时分配一个新的 [StringName]。" + +msgid "" "Returns [code]true[/code] if the [method Node.queue_free] method was called " "for the object." msgstr "" "如果为该对象调用了 [method Node.queue_free] 方法,则返回 [code]true[/code]。" msgid "" +"Sends the given [param what] notification to all classes inherited by the " +"object, triggering calls to [method _notification], starting from the " +"highest ancestor (the [Object] class) and going down to the object's " +"script.\n" +"If [param reversed] is [code]true[/code], the call order is reversed.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var player = Node2D.new()\n" +"player.set_script(load(\"res://player.gd\"))\n" +"\n" +"player.notification(NOTIFICATION_ENTER_TREE)\n" +"# The call order is Object -> Node -> Node2D -> player.gd.\n" +"\n" +"player.notification(NOTIFICATION_ENTER_TREE, true)\n" +"# The call order is player.gd -> Node2D -> Node -> Object.\n" +"[/gdscript]\n" +"[csharp]\n" +"var player = new Node2D();\n" +"player.SetScript(GD.Load(\"res://player.gd\"));\n" +"\n" +"player.Notification(NotificationEnterTree);\n" +"// The call order is GodotObject -> Node -> Node2D -> player.gd.\n" +"\n" +"player.Notification(NotificationEnterTree, true);\n" +"// The call order is player.gd -> Node2D -> Node -> GodotObject.\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将给定的 [param what] 通知发送给对象继承的所有类,触发对 [method " +"_notification] 的调用,从最高祖先([Object] 类)开始,向下一直到对象的脚" +"本。\n" +"如果 [param reversed] 为 [code]true[/code],则调用顺序会被颠倒。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var player = Node2D.new()\n" +"player.set_script(load(\"res://player.gd\"))\n" +"\n" +"player.notification(NOTIFICATION_ENTER_TREE)\n" +"# 调用顺序是 Object -> Node -> Node2D -> player.gd。\n" +"\n" +"player.notification(NOTIFICATION_ENTER_TREE, true)\n" +"# 调用顺序是 player.gd -> Node2D -> Node -> Object。\n" +"[/gdscript]\n" +"[csharp]\n" +"var player = new Node2D();\n" +"player.SetScript(GD.Load(\"res://player.gd\"));\n" +"\n" +"player.Notification(NotificationEnterTree);\n" +"// 调用顺序是 GodotObject -> Node -> Node2D -> player.gd。\n" +"\n" +"player.Notification(NotificationEnterTree, true);\n" +"// 调用顺序是 player.gd -> Node2D -> Node -> GodotObject。\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Emits the [signal property_list_changed] signal. This is mainly used to " +"refresh the editor, so that the Inspector and editor plugins are properly " +"updated." +msgstr "" +"发出 [signal property_list_changed] 信号。这主要是用来刷新编辑器,以让检查器" +"和编辑器插件被正确更新。" + +msgid "" +"Returns [code]true[/code] if the given [param property] has a custom default " +"value. Use [method property_get_revert] to get the [param property]'s " +"default value.\n" +"[b]Note:[/b] This method is used by the Inspector dock to display a revert " +"icon. The object must implement [method _property_can_revert] to customize " +"the default value. If [method _property_can_revert] is not implemented, this " +"method returns [code]false[/code]." +msgstr "" +"如果给定的属性 [param property] 有自定义的默认值,则返回 [code]true[/code]。" +"请使用 [method property_get_revert] 获取 [param property] 的默认值。\n" +"[b]注意:[/b]“检查器”面板会使用这个方法来显示恢复图标。该对象必须实现 " +"[method _property_can_revert] 来自定义默认值。如果未实现 [method " +"_property_can_revert],则这个方法返回 [code]false[/code]。" + +msgid "" +"Returns the custom default value of the given [param property]. Use [method " +"property_can_revert] to check if the [param property] has a custom default " +"value.\n" +"[b]Note:[/b] This method is used by the Inspector dock to display a revert " +"icon. The object must implement [method _property_get_revert] to customize " +"the default value. If [method _property_get_revert] is not implemented, this " +"method returns [code]null[/code]." +msgstr "" +"返回给定的属性 [param property] 的自定义默认值。请使用 [method " +"property_can_revert] 检查 [param property] 是否有自定义的默认值。\n" +"[b]注意:[/b]“检查器”面板会使用这个方法来显示恢复图标。该对象必须实现 " +"[method _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] Metadata that has a [param 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." +msgstr "" +"从对象的元数据中移除给定的条目 [param name]。另请参阅 [method has_meta]、" +"[method get_meta]、和 [method set_meta]。\n" +"[b]注意:[/b]具有以下划线([code]_[/code])开头的 [param name] 的元数据,被视" +"为是仅供编辑器使用的。仅限编辑器的元数据不会显示在检查器停靠面板中,也不应该" +"被编辑。" + +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" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node2D.new()\n" +"node.set(\"global_scale\", Vector2(8, 2.5))\n" +"print(node.global_scale) # Prints (8, 2.5)\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node2D();\n" +"node.Set(\"global_scale\", new Vector2(8, 2.5));\n" +"GD.Print(node.GlobalScale); // Prints Vector2(8, 2.5)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] In C#, [param property] must be in snake_case when referring to " +"built-in Godot properties. Prefer using the names exposed in the " +"[code]PropertyName[/code] class to avoid allocating a new [StringName] on " +"each call." +msgstr "" +"将给定属性 [param property] 的值分配为 [param value]。如果该属性不存在,或者" +"给定 [param value] 的类型不匹配,则不会发生任何事情。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node2D.new()\n" +"node.set(\"global_scale\", Vector2(8, 2.5))\n" +"print(node.global_scale) # 输出 (8, 2.5)\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node2D();\n" +"node.Set(\"global_scale\", new Vector2(8, 2.5));\n" +"GD.Print(node.GlobalScale); // 输出 Vector2(8, 2.5)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]在 C# 中引用内置 Godot 属性时 [param property] 必须为 " +"snake_case 蛇形大小写。请优先使用 [code]PropertyName[/code] 类中暴露的名称," +"避免每次调用都重新分配一个 [StringName]。" + +msgid "" +"If set to [code]true[/code], the object becomes unable to emit signals. As " +"such, [method emit_signal] and signal connections will not work, until it is " +"set to [code]false[/code]." +msgstr "" +"如果设置为 [code]true[/code],这该对象将无法发出信号。因此,[method " +"emit_signal] 和信号连接将不起作用,直到该属性被设置为 [code]false[/code]。" + +msgid "" +"Assigns [param value] to the given [param property], after the current " +"frame's physics step. This is equivalent to calling [method set] through " +"[method call_deferred].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node2D.new()\n" +"add_child(node)\n" +"\n" +"node.rotation = 45.0\n" +"node.set_deferred(\"rotation\", 90.0)\n" +"print(node.rotation) # Prints 45.0\n" +"\n" +"await get_tree().process_frame\n" +"print(node.rotation) # Prints 90.0\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node2D();\n" +"node.Rotation = 45f;\n" +"node.SetDeferred(\"rotation\", 90f);\n" +"GD.Print(node.Rotation); // Prints 45.0\n" +"\n" +"await ToSignal(GetTree(), SceneTree.SignalName.ProcessFrame);\n" +"GD.Print(node.Rotation); // Prints 90.0\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] In C#, [param property] must be in snake_case when referring to " +"built-in Godot properties. Prefer using the names exposed in the " +"[code]PropertyName[/code] class to avoid allocating a new [StringName] on " +"each call." +msgstr "" +"在当前帧的物理步骤后,将给定属性 [param property] 的值分配为 [param value]。" +"等价于通过 [method call_deferred] 调用 [method set]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node2D.new()\n" +"add_child(node)\n" +"\n" +"node.rotation = 45.0\n" +"node.set_deferred(\"rotation\", 90.0)\n" +"print(node.rotation) # 输出 45.0\n" +"\n" +"await get_tree().process_frame\n" +"print(node.rotation) # 输出 90.0\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node2D();\n" +"node.Rotation = 45f;\n" +"node.SetDeferred(\"rotation\", 90f);\n" +"GD.Print(node.Rotation); // 输出 45.0\n" +"\n" +"await ToSignal(GetTree(), SceneTree.SignalName.ProcessFrame);\n" +"GD.Print(node.Rotation); // 输出 90.0\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]在 C# 中引用内置 Godot 属性时 [param property] 必须为 " +"snake_case 蛇形大小写。请优先使用 [code]PropertyName[/code] 类中暴露的名称," +"避免每次调用都重新分配一个 [StringName]。" + +msgid "" +"Assigns a new [param value] to the property identified by the [param " +"property_path]. The path should be a [NodePath] relative to this object, and " +"can use the colon character ([code]:[/code]) to access nested properties.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node2D.new()\n" +"node.set_indexed(\"position\", Vector2(42, 0))\n" +"node.set_indexed(\"position:y\", -10)\n" +"print(node.position) # Prints (42, -10)\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node2D();\n" +"node.SetIndexed(\"position\", new Vector2(42, 0));\n" +"node.SetIndexed(\"position:y\", -10);\n" +"GD.Print(node.Position); // Prints (42, -10)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] In C#, [param property_path] must be in snake_case when " +"referring to built-in Godot properties. Prefer using the names exposed in " +"the [code]PropertyName[/code] class to avoid allocating a new [StringName] " +"on each call." +msgstr "" +"将由属性路径 [param property_path] 标识的属性的值分配为 [param value]。该路径" +"应为相对于这个对象的 [NodePath],可以使用英文冒号([code]:[/code])访问内嵌属" +"性。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var node = Node2D.new()\n" +"node.set_indexed(\"position\", Vector2(42, 0))\n" +"node.set_indexed(\"position:y\", -10)\n" +"print(node.position) # 输出 (42, -10)\n" +"[/gdscript]\n" +"[csharp]\n" +"var node = new Node2D();\n" +"node.SetIndexed(\"position\", new Vector2(42, 0));\n" +"node.SetIndexed(\"position:y\", -10);\n" +"GD.Print(node.Position); // 输出 (42, -10)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]在 C# 中引用内置 Godot 属性时 [param property_path] 必须为 " +"snake_case 蛇形大小写。请优先使用 [code]PropertyName[/code] 类中暴露的名称," +"避免每次调用都重新分配一个 [StringName]。" + +msgid "" +"If set to [code]true[/code], allows the object to translate messages with " +"[method tr] and [method tr_n]. Enabled by default. See also [method " +"can_translate_messages]." +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] Metadata that has a [param name] starting with an underscore " +"([code]_[/code]) is considered editor-only. Editor-only metadata is not " +"displayed in the Inspector dock and should not be edited." +msgstr "" +"添加或更改对象元数据中的条目 [param name]。该元数据 [param value] 可以是任何 " +"[Variant],尽管某些类型不能被正确序列化。\n" +"如果 [param value] 为 [code]null[/code],则该条目被移除。这相当于使用 " +"[method remove_meta]。另请参阅 [method has_meta] 和 [method get_meta]。\n" +"[b]注意:[/b]具有以下划线([code]_[/code])开头的 [param name] 的元数据,被视" +"为是仅供编辑器使用的。仅限编辑器的元数据不会显示在检查器停靠面板中,也不应该" +"被编辑。" + +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 " +"functionality.\n" +"If a script already exists, its instance is detached, and its property " +"values and state are lost. Built-in property values are still kept." +msgstr "" +"将脚本 [param script] 附加至该对象,并进行实例化。因此会调用该脚本的 [method " +"_init]。[Script] 可用于扩展对象的功能。\n" +"如果已存在脚本,则该脚本的实例会被分离,其属性值和状态会丢失。仍会保留内置属" +"性的值。" + +msgid "" "Returns a [String] representing the object. Defaults to " "[code]\"<ClassName#RID>\"[/code]. Override [method _to_string] to customize " "the string representation of the object." @@ -49750,6 +69598,51 @@ msgstr "" "返回表示对象的 [String]。默认为 [code]\"<ClassName#RID>\"[/code]。覆盖 " "[method _to_string] 以自定义对象的字符串表示形式。" +msgid "" +"Translates a [param message], using the translation catalogs configured in " +"the Project Settings. Further [param context] can be specified to help with " +"the translation.\n" +"If [method can_translate_messages] is [code]false[/code], or no translation " +"is available, this method returns the [param message] without changes. See " +"[method set_message_translation].\n" +"For detailed examples, see [url=$DOCS_URL/tutorials/i18n/" +"internationalizing_games.html]Internationalizing games[/url]." +msgstr "" +"使用项目设置中配置的翻译目录,翻译一个 [param message]。可以进一步指定 " +"[param context] 来帮助翻译。\n" +"如果 [method can_translate_messages] 为 [code]false[/code],或者没有翻译可" +"用,则该方法将返回 [param message] 而不做任何更改。请参阅 [method " +"set_message_translation]。\n" +"有关详细示例,请参阅[url=$DOCS_URL/tutorials/i18n/internationalizing_games." +"html]《国际化游戏》[/url]。" + +msgid "" +"Translates a [param message] or [param plural_message], using the " +"translation catalogs configured in the Project Settings. Further [param " +"context] can be specified to help with the translation.\n" +"If [method can_translate_messages] is [code]false[/code], or no translation " +"is available, this method returns [param message] or [param plural_message], " +"without changes. See [method set_message_translation].\n" +"The [param n] is the number, or amount, of the message's subject. It is used " +"by the translation system to fetch the correct plural form for the current " +"language.\n" +"For detailed examples, see [url=$DOCS_URL/tutorials/i18n/" +"localization_using_gettext.html]Localization using gettext[/url].\n" +"[b]Note:[/b] Negative and [float] numbers may not properly apply to some " +"countable subjects. It's recommended handling these cases with [method tr]." +msgstr "" +"使用项目设置中配置的翻译目录,翻译一个 [param message] 或 [param " +"plural_message]。可以进一步指定 [param context] 来帮助翻译。\n" +"如果 [method can_translate_messages] 为 [code]false[/code],或者没有翻译可" +"用,则该方法将返回 [param message] 或 [param plural_message],而不做任何更" +"改。请参阅 [method set_message_translation]。\n" +"[param n] 是消息主题的数字或数量。它被翻译系统用来获取当前语言的正确复数形" +"式。\n" +"有关详细示例,请参阅[url=$DOCS_URL/tutorials/i18n/localization_using_gettext." +"html]《使用 gettext 进行本地化》[/url]。\n" +"[b]注意:[/b]负数和 [float] 数字可能不适用于某些可数科目。建议使用 [method " +"tr] 处理这些情况。" + msgid "Emitted when [method notify_property_list_changed] is called." msgstr "调用 [method notify_property_list_changed] 时发出。" @@ -49797,6 +69690,20 @@ msgstr "" "引用计数连接可以多次分配给同一个 [Callable]。每断开一次连接会让内部计数器减" "一。信号会在计数器变为 0 时完全断开连接。" +msgid "" +"Occluder shape resource for use with occlusion culling in " +"[OccluderInstance3D]." +msgstr "用于与 [OccluderInstance3D] 中的遮挡剔除一起使用的遮挡物形状资源。" + +msgid "" +"[Occluder3D] stores an occluder shape that can be used by the engine's " +"occlusion culling system.\n" +"See [OccluderInstance3D]'s documentation for instructions on setting up " +"occlusion culling." +msgstr "" +"[Occluder3D] 存储一个遮挡器形状,可供引擎的遮挡剔除系统使用。\n" +"有关设置遮挡剔除的说明,请参阅 [OccluderInstance3D] 的文档。" + msgid "Returns the occluder shape's vertex indices." msgstr "返回该遮挡器形状的顶点索引。" @@ -49808,6 +69715,122 @@ msgid "" "closed areas." msgstr "为 3D 节点提供遮挡剔除,可以提高封闭区域的性能。" +msgid "" +"Occlusion culling can improve rendering performance in closed/semi-open " +"areas by hiding geometry that is occluded by other objects.\n" +"The occlusion culling system is mostly static. [OccluderInstance3D]s can be " +"moved or hidden at run-time, but doing so will trigger a background " +"recomputation that can take several frames. It is recommended to only move " +"[OccluderInstance3D]s sporadically (e.g. for procedural generation " +"purposes), rather than doing so every frame.\n" +"The occlusion culling system works by rendering the occluders on the CPU in " +"parallel using [url=https://www.embree.org/]Embree[/url], drawing the result " +"to a low-resolution buffer then using this to cull 3D nodes individually. In " +"the 3D editor, you can preview the occlusion culling buffer by choosing " +"[b]Perspective > Debug Advanced... > Occlusion Culling Buffer[/b] in the top-" +"left corner of the 3D viewport. The occlusion culling buffer quality can be " +"adjusted in the Project Settings.\n" +"[b]Baking:[/b] Select an [OccluderInstance3D] node, then use the [b]Bake " +"Occluders[/b] button at the top of the 3D editor. Only opaque materials will " +"be taken into account; transparent materials (alpha-blended or alpha-tested) " +"will be ignored by the occluder generation.\n" +"[b]Note:[/b] Occlusion culling is only effective if [member ProjectSettings." +"rendering/occlusion_culling/use_occlusion_culling] is [code]true[/code]. " +"Enabling occlusion culling has a cost on the CPU. Only enable occlusion " +"culling if you actually plan to use it. Large open scenes with few or no " +"objects blocking the view will generally not benefit much from occlusion " +"culling. Large open scenes generally benefit more from mesh LOD and " +"visibility ranges ([member GeometryInstance3D.visibility_range_begin] and " +"[member GeometryInstance3D.visibility_range_end]) compared to occlusion " +"culling." +msgstr "" +"遮挡剔除可以通过隐藏被其他对象遮挡的几何体,来提高封闭/半开放区域的渲染性" +"能。\n" +"遮挡剔除系统大多是静态的。[OccluderInstance3D] 可以在运行时移动或隐藏,但这样" +"做会触发可能需要几帧的背景重新计算。建议仅偶尔移动 [OccluderInstance3D](例" +"如,出于程序生成目的),而不是每帧都这样做。\n" +"遮挡剔除系统的工作原理是,使用 [url=https://www.embree.org/]Embree[/url] 在 " +"CPU 上并行渲染遮挡物,将结果绘制到一个低分辨率缓冲区,然后使用它来单独剔除 " +"3D 的节点。在 3D 编辑器中,可以通过选择 3D 视口左上角的[b]透视图 > 高级调" +"试... > 遮挡剔除缓冲区[/b],来预览遮挡剔除缓冲区。可以在项目设置中调整遮挡剔" +"除缓冲区的质量。\n" +"[b]烘焙:[/b]选择一个 [OccluderInstance3D] 节点,然后使用 3D 编辑器顶部的[b]" +"烘焙遮挡物[/b]按钮。只考虑不透明的材质;遮挡器生成将忽略透明材质(alpha 混合" +"或 alpha 测试)。\n" +"[b]注意:[/b]遮挡剔除只有在 [member ProjectSettings.rendering/" +"occlusion_culling/use_occlusion_culling] 为 [code]true[/code] 时才有效。启用" +"遮挡剔除会消耗一定的 CPU。仅当确实打算使用遮挡剔除时才启用它。具有很少或没有" +"物体,将阻挡视口的大型开放场景,通常不会从遮挡剔除中受益更多。与遮挡剔除相" +"比,大型开放场景通常从网格 LOD 和可见性范围([member GeometryInstance3D." +"visibility_range_begin] 和 [member GeometryInstance3D.visibility_range_end])" +"中受益更多。" + +msgid "" +"The visual layers to account for when baking for occluders. Only " +"[MeshInstance3D]s whose [member VisualInstance3D.layers] match with this " +"[member bake_mask] will be included in the generated occluder mesh. By " +"default, all objects with [i]opaque[/i] materials are taken into account for " +"the occluder baking.\n" +"To improve performance and avoid artifacts, it is recommended to exclude " +"dynamic objects, small objects and fixtures from the baking process by " +"moving them to a separate visual layer and excluding this layer in [member " +"bake_mask]." +msgstr "" +"烘焙遮挡物时要考虑的可视层。只有其 [member VisualInstance3D.layers] 与该 " +"[member bake_mask] 匹配的 [MeshInstance3D],才会被包含在生成的遮挡物网格中。" +"默认情况下,所有具有[i]不透明[/i]材质的对象,都将被考虑用于遮挡物烘焙。\n" +"为了提高性能并避免伪影,建议将动态对象、小对象和固定装置从烘焙过程中排除,方" +"法是将它们移动到一个单独的可视层,并在 [member bake_mask] 中排除该层。" + +msgid "" +"The simplification distance to use for simplifying the generated occluder " +"polygon (in 3D units). Higher values result in a less detailed occluder " +"mesh, which improves performance but reduces culling accuracy.\n" +"The occluder geometry is rendered on the CPU, so it is important to keep its " +"geometry as simple as possible. Since the buffer is rendered at a low " +"resolution, less detailed occluder meshes generally still work well. The " +"default value is fairly aggressive, so you may have to decrase it if you run " +"into false negatives (objects being occluded even though they are visible by " +"the camera). A value of [code]0.01[/code] will act conservatively, and will " +"keep geometry [i]perceptually[/i] unaffected in the occlusion culling " +"buffer. Depending on the scene, a value of [code]0.01[/code] may still " +"simplify the mesh noticeably compared to disabling simplification entirely.\n" +"Setting this to [code]0.0[/code] disables simplification entirely, but " +"vertices in the exact same position will still be merged. The mesh will also " +"be re-indexed to reduce both the number of vertices and indices.\n" +"[b]Note:[/b] This uses the [url=https://meshoptimizer.org/]meshoptimizer[/" +"url] library under the hood, similar to LOD generation." +msgstr "" +"用于简化生成的遮挡物多边形的简化距离(单位为 3D 单位)。更高的值会导致遮挡物" +"网格的细节更少,这会提高性能但会降低剔除精度。\n" +"遮挡物几何体是在 CPU 上渲染的,因此保持其几何体尽可能简单很重要。由于缓冲区以" +"低分辨率渲染,因此细节较少的遮挡网格通常仍能正常工作。默认值相当激进,因此如" +"果遇到误报(即使相机可见的对象也被遮挡),可能必须降低该属性。[code]0.01[/" +"code] 的值将保守地起作用,并将保持几何体[i]感知[/i]在遮挡剔除缓冲区中不受影" +"响。根据场景的不同,与完全禁用简化相比,[code]0.01[/code] 的值仍能显著简化网" +"格。\n" +"将该属性设置为 [code]0.0[/code] 将会完全禁用简化,但仍会合并位置完全相同的顶" +"点。网格也将被重新索引以减少顶点和索引的数量。\n" +"[b]注意:[/b]这在底层使用了 [url=https://meshoptimizer.org/]meshoptimizer[/" +"url] 库,类似于 LOD 生成。" + +msgid "" +"The occluder resource for this [OccluderInstance3D]. You can generate an " +"occluder resource by selecting an [OccluderInstance3D] node then using the " +"[b]Bake Occluders[/b] button at the top of the editor.\n" +"You can also draw your own 2D occluder polygon by adding a new " +"[PolygonOccluder3D] resource to the [member occluder] property in the " +"Inspector.\n" +"Alternatively, you can select a primitive occluder to use: [QuadOccluder3D], " +"[BoxOccluder3D] or [SphereOccluder3D]." +msgstr "" +"这个 [OccluderInstance3D] 的遮挡器资源。要生成遮挡器资源,你可以先选中 " +"[OccluderInstance3D] 节点,然后使用编辑器顶部的[b]烘焙遮挡器[/b]按钮。\n" +"你还可以通过在“检查器”中为 [member occluder] 属性添加新的 " +"[PolygonOccluder3D] 资源来绘制自己的 2D 遮挡器多边形。\n" +"另外,你也可以选择要使用的基本遮挡器:[QuadOccluder3D]、[BoxOccluder3D]、" +"[SphereOccluder3D]。" + msgid "Defines a 2D polygon for LightOccluder2D." msgstr "为 LightOccluder2D 定义一个 2D 多边形。" @@ -49850,15 +69873,38 @@ msgstr "按逆时针方向进行剔除。见 [member cull_mode]。" msgid "A [MultiplayerPeer] which is always connected and acts as a server." msgstr "始终连接并用作服务器的 [MultiplayerPeer]。" +msgid "" +"This is the default [member MultiplayerAPI.multiplayer_peer] for the [member " +"Node.multiplayer]. It mimics the behavior of a server with no peers " +"connected.\n" +"This means that the [SceneTree] will act as the multiplayer authority by " +"default. Calls to [method MultiplayerAPI.is_server] will return [code]true[/" +"code], and calls to [method MultiplayerAPI.get_unique_id] will return " +"[constant MultiplayerPeer.TARGET_PEER_SERVER]." +msgstr "" +"这是 [member Node.multiplayer] 的默认 [member MultiplayerAPI." +"multiplayer_peer]。会模仿未连接任何对等体的服务器的行为。\n" +"这意味着 [SceneTree] 会默认作为多人游戏控制方。调用 [method MultiplayerAPI." +"is_server] 会返回 [code]true[/code],调用 [method MultiplayerAPI." +"get_unique_id] 会返回 [constant MultiplayerPeer.TARGET_PEER_SERVER]。" + msgid "A sequence of Ogg packets." msgstr "Ogg 数据包序列。" msgid "The length of this stream, in seconds." msgstr "该流的长度,以秒为单位。" +msgid "Contains the granule positions for each page in this packet sequence." +msgstr "包含该数据包序列中每个页面的粒度位置。" + msgid "Contains the raw packets that make up this OggPacketSequence." msgstr "包含构成此 OggPacketSequence 的原始数据包。" +msgid "" +"Holds sample rate information about this sequence. Must be set by another " +"class that actually understands the codec." +msgstr "保存有关该序列的采样率信息。必须由另一个真正理解编解码器的类设置。" + msgid "Omnidirectional light, such as a light bulb or a candle." msgstr "全向光,如灯泡或蜡烛。" @@ -49912,6 +69958,20 @@ msgstr "" "素,且同时产生相同的亮度)。要提高性能,请为试图实现的视觉效果使用尽可能低的 " "[member omni_attenuation] 值。" +msgid "" +"The light's radius. Note that the effectively lit area may appear to be " +"smaller depending on the [member omni_attenuation] in use. No matter the " +"[member omni_attenuation] in use, the light will never reach anything " +"outside this radius.\n" +"[b]Note:[/b] [member omni_range] is not affected by [member Node3D.scale] " +"(the light's scale or its parent's scale)." +msgstr "" +"该灯光的半径。请注意,根据使用的 [member omni_attenuation],有效照明区域可能" +"看起来更小。无论使用 [member omni_attenuation] 为何值,光线永远不会到达该半径" +"之外的任何地方。\n" +"[b]注意:[/b][member omni_range] 不受 [member Node3D.scale](无论是该灯光的缩" +"放还是其父节点的缩放)的影响。" + msgid "See [enum ShadowMode]." msgstr "见 [enum ShadowMode]。" @@ -49930,6 +69990,37 @@ msgstr "" msgid "An OpenXR action." msgstr "OpenXR 动作。" +msgid "" +"This resource defines an OpenXR action. Actions can be used both for inputs " +"(buttons/joystick/trigger/etc) and outputs (haptics).\n" +"OpenXR performs automatic conversion between action type and input type " +"whenever possible. An analog trigger bound to a boolean action will thus " +"return [code]false[/code] if the trigger is depressed and [code]true[/code] " +"if pressed fully.\n" +"Actions are not directly bound to specific devices, instead OpenXR " +"recognizes a limited number of top level paths that identify devices by " +"usage. We can restrict which devices an action can be bound to by these top " +"level paths. For instance an action that should only be used for hand held " +"controllers can have the top level paths \"/user/hand/left\" and \"/user/" +"hand/right\" associated with them. See the [url=https://www.khronos.org/" +"registry/OpenXR/specs/1.0/html/xrspec.html#semantic-path-reserved]reserved " +"path section in the OpenXR specification[/url] for more info on the top " +"level paths.\n" +"Note that the name of the resource is used to register the action with." +msgstr "" +"该资源定义了一个 OpenXR 动作。动作可用于输入(按钮/操纵杆/触发器/等)和输出" +"(触觉)。\n" +"只要有可能,OpenXR 就会在动作类型和输入类型之间执行自动转换。因此,如果触发器" +"被按下,则绑定到一个布尔动作的模拟触发器将返回 [code]false[/code],如果完全按" +"下则返回 [code]true[/code]。\n" +"动作并不被直接绑定到特定设备,相反,OpenXR 识别了有限数量的顶级路径,这些路径" +"按用途识别设备。我们可以通过这些顶级路径来限制一个动作可以被绑定到哪些设备" +"上。例如,一个只应用于手持控制器的动作,可以具有与其关联的顶级路径“/user/" +"hand/left”和“/user/hand/right”。有关顶级路径的详细信息,请参阅 OpenXR 规范中" +"的[url=https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec." +"html#semantic-path-reserved]保留路径部分[/url]。\n" +"注意,资源的名字是用来注册动作的。" + msgid "The type of action." msgstr "动作的类型。" @@ -49950,12 +70041,37 @@ msgstr "" "输入。" msgid "" +"This action provides a [Vector2] value and can be bound to embedded " +"trackpads and joysticks." +msgstr "该动作提供 [Vector2] 值,可以和嵌入式控制板与操纵杆绑定。" + +msgid "" "Collection of [OpenXRActionSet] and [OpenXRInteractionProfile] resources for " "the OpenXR module." msgstr "" "用于 OpenXR 模块的 [OpenXRActionSet] 和 [OpenXRInteractionProfile] 资源的合" "集。" +msgid "" +"OpenXR uses an action system similar to Godots Input map system to bind " +"inputs and outputs on various types of XR controllers to named actions. " +"OpenXR specifies more detail on these inputs and outputs than Godot " +"supports.\n" +"Another important distinction is that OpenXR offers no control over these " +"bindings. The bindings we register are suggestions, it is up to the XR " +"runtime to offer users the ability to change these bindings. This allows the " +"XR runtime to fill in the gaps if new hardware becomes available.\n" +"The action map therefore needs to be loaded at startup and can't be changed " +"afterwards. This resource is a container for the entire action map." +msgstr "" +"OpenXR 使用类似于 Godots 输入映射系统的动作系统,将各种类型的 XR 控制器上的输" +"入和输出绑定到命名的动作。OpenXR 规范了比 Godot 支持的更多关于这些输入和输出" +"的细节。\n" +"另一个重要的区别是 OpenXR 不提供对这些绑定的控制。我们注册的绑定是建议,取决" +"于 XR 运行时是否为用户提供更改这些绑定的能力。如果有新硬件可用,这允许 XR 运" +"行时填补空白。\n" +"因此,动作映射需要在启动时加载,之后无法更改。该资源是整个动作映射的容器。" + msgid "Add an action set." msgstr "添加动作集。" @@ -49999,6 +70115,24 @@ msgstr "[OpenXRInteractionProfile] 的合集,是该动作映射的一部分。 msgid "Collection of [OpenXRAction] resources that make up an action set." msgstr "[OpenXRAction] 资源的合集,构成动作集。" +msgid "" +"Action sets in OpenXR define a collection of actions that can be activated " +"in unison. This allows games to easily change between different states that " +"require different inputs or need to reinterpret inputs. For instance we " +"could have an action set that is active when a menu is open, an action set " +"that is active when the player is freely walking around and an action set " +"that is active when the player is controlling a vehicle.\n" +"Action sets can contain the same action with the same name, if such action " +"sets are active at the same time the action set with the highest priority " +"defines which binding is active." +msgstr "" +"OpenXR 中的动作集定义了一组可以统一激活的动作。这允许游戏在需要不同输入或需要" +"重新解释输入的不同状态之间轻松切换。例如,我们可以有一个在菜单打开时处于活动" +"状态的动作集,一个在玩家自由走动时处于活动状态的动作集,以及一个在玩家控制车" +"辆时处于活动状态的动作集。\n" +"动作集可以包含具有相同名称的相同动作,如果这些动作集同时处于活动状态,则具有" +"最高优先级的动作集定义了哪个绑定是活动的。" + msgid "Add an action to this action set." msgstr "向该动作集中添加某个动作。" @@ -50020,6 +70154,24 @@ msgstr "该动作集的优先级。" msgid "Node supporting finger tracking in OpenXR." msgstr "在 OpenXR 中提供手指跟踪的节点。" +msgid "" +"This node enables OpenXR's hand tracking functionality. The node should be a " +"child node of an [XROrigin3D] node, tracking will update its position to " +"where the player's actual hand is positioned. This node also updates the " +"skeleton of a properly skinned hand model. The hand mesh should be a child " +"node of this node." +msgstr "" +"该节点启用 OpenXR 的手部跟踪功能。该节点应该是 [XROrigin3D] 节点的一个子节" +"点,跟踪会将其位置更新为玩家的实际手所在的位置。该节点还更新了适当蒙皮的手部" +"模型的骨架。手部网格应该是该节点的一个子节点。" + +msgid "" +"Specifies whether this node tracks the left or right hand of the player." +msgstr "指定该节点是追踪玩家的左手还是右手。" + +msgid "Set a [Skeleton3D] node for which the pose positions will be updated." +msgstr "设置一个[Skeleton3D]节点,该节点的姿势位置将被更新。" + msgid "Set the motion range (if supported) limiting the hand motion." msgstr "设置限制手部运动的运动范围(前提是支持)。" @@ -50043,9 +70195,55 @@ msgstr "玩家抓握时,手部骨架遵循玩家所持的控制器。" msgid "Maximum supported motion ranges." msgstr "最大支持的运动范围。" +msgid "Suggested bindings object for OpenXR." +msgstr "用于 OpenXR 的建议绑定对象。" + +msgid "" +"This object stores suggested bindings for an interaction profile. " +"Interaction profiles define the meta data 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 "检索在该索引处的绑定。" + +msgid "Get the number of bindings in this interaction profile." +msgstr "获取该交互配置中的绑定数量。" + +msgid "Action bindings for this interaction profile." +msgstr "用于该交互配置的动作绑定。" + +msgid "The interaction profile path identifying the XR device." +msgstr "标识该 XR 设备的交互配置路径。" + msgid "Our OpenXR interface." msgstr "OpenXR 接口。" +msgid "" +"The OpenXR interface allows Godot to interact with OpenXR runtimes and make " +"it possible to create XR experiences and games.\n" +"Due to the needs of OpenXR this interface works slightly different than " +"other plugin based XR interfaces. It needs to be initialized when Godot " +"starts. You need to enable OpenXR, settings for this can be found in your " +"games project settings under the XR heading. You do need to mark a viewport " +"for use with XR in order for Godot to know which render result should be " +"output to the headset." +msgstr "" +"OpenXR 接口允许 Godot 与 OpenXR 运行时进行交互,并使创建 XR 体验和游戏成为可" +"能。\n" +"由于 OpenXR 的需要,该接口的工作方式与其他基于插件的 XR 接口略有不同。它需要" +"在 Godot 启动时被初始化。若需要启用 OpenXR,相关设置可以在游戏项目设置中的 " +"XR 标题下找到。你确实需要标记一个视口以与 XR 一起使用,以便 Godot 知道应该将" +"哪个渲染结果输出到头戴式设备。" + msgid "Setting up XR" msgstr "设置 XR" @@ -50054,9 +70252,78 @@ msgid "" "map at runtime)." msgstr "返回向 Godot 注册的动作集的列表(在运行时从动作映射加载)。" +msgid "" +"Returns display refresh rates supported by the current HMD. Only returned if " +"this feature is supported by the OpenXR runtime and after the interface has " +"been initialized." +msgstr "" +"返回当前 HMD 支持的显示刷新率。仅当 OpenXR 运行时支持该功能并且接口已被初始化" +"后才会返回。" + +msgid "Returns [code]true[/code] if the given action set is active." +msgstr "如果给定的动作集处于活动状态,则返回 [code]true[/code]。" + +msgid "Sets the given action set as active or inactive." +msgstr "将给定的动作集设置为活动或非活动。" + +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 " +"initialized." +msgstr "" +"当前 HMD 的显示刷新率。仅当 OpenXR 运行时支持该功能并且接口已被初始化后才会有" +"效。" + +msgid "Informs the user queued a recenter of the player position." +msgstr "通知用户队列玩家位置的重新居中。" + +msgid "Informs our OpenXR session has been started." +msgstr "通知我们的 OpenXR 会话已经开始。" + +msgid "Informs our OpenXR session now has focus." +msgstr "通知我们的 OpenXR 会话现在获得了焦点。" + +msgid "Informs our OpenXR session is stopping." +msgstr "通知我们的 OpenXR 会话正在停止。" + +msgid "" +"Informs our OpenXR session is now visible (output is being sent to the HMD)." +msgstr "通知我们的 OpenXR 会话现在可见(输出正在发送到 HMD)。" + +msgid "Defines a binding between an [OpenXRAction] and an XR input or output." +msgstr "定义 [OpenXRAction] 和 XR 输入或输出之间的绑定。" + +msgid "" +"This binding resource binds an [OpenXRAction] to inputs or outputs. As most " +"controllers have left hand and right versions that are handled by the same " +"interaction profile we can specify multiple bindings. For instance an action " +"\"Fire\" could be bound to both \"/user/hand/left/input/trigger\" and \"/" +"user/hand/right/input/trigger\"." +msgstr "" +"该绑定资源将一个 [OpenXRAction] 绑定到输入或输出。由于大多数控制器都有由相同" +"交互配置处理的左手和右手版本,我们可以指定多个绑定。例如,一个动作“开火”可以" +"同时被绑定到“/user/hand/left/input/trigger”和“/user/hand/right/input/" +"trigger”。" + +msgid "Add an input/output path to this binding." +msgstr "为该绑定添加输入/输出路径。" + +msgid "Get the number of input/output paths in this binding." +msgstr "获取该绑定中输入/输出路径的数量。" + +msgid "" +"Returns [code]true[/code] if this input/output path is part of this binding." +msgstr "如果该输入/输出路径是该绑定的一部分,则返回 [code]true[/code]。" + +msgid "Removes this input/output path from this binding." +msgstr "从该绑定中移除该输入/输出路径。" + msgid "[OpenXRAction] that is bound to these paths." msgstr "绑定到这些路径的 [OpenXRAction]。" +msgid "Paths that define the inputs or outputs bound on the device." +msgstr "定义该设备上绑定的输入或输出的路径。" + msgid "Optimized translation." msgstr "优化的翻译。" @@ -50073,6 +70340,47 @@ msgstr "从给定的 [Translation] 资源生成并设置优化的翻译。" msgid "Button control that provides selectable options when pressed." msgstr "按下时提供可选选项的按钮控件。" +msgid "" +"OptionButton is a type button that provides a selectable list of 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] Properties [member Button.text] and [member Button.icon] are " +"automatically set based on the selected item. They shouldn't be changed " +"manually." +msgstr "" +"OptionButton 是一种按下后会提供可选项列表的按钮。所选项目将成为“当前”项目,并" +"显示为按钮文本。\n" +"另请参阅 [BaseButton],其中包含与此节点关联的常用属性和方法。\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 " +"used as the item's ID. New items are appended at the end." +msgstr "" +"添加一个菜单项,图标为 [param texture],文本为 [param label],(可选)ID 为 " +"[param id]。如果没有传入 [param id],则会将菜单项的索引用作 ID。新菜单项会追" +"加到末尾。" + +msgid "" +"Adds an item, with text [param label] and (optionally) [param id]. If no " +"[param id] is passed, the item index will be used as the item's ID. New " +"items are appended at the end." +msgstr "" +"添加一个菜单项,文本为 [param label],(可选)ID 为 [param id]。如果没有传入 " +"[param id],则会将菜单项的索引用作 ID。新菜单项会追加到末尾。" + +msgid "" +"Adds a separator to the list of items. Separators help to group items, and " +"can optionally be given a [param text] header. A separator also gets an " +"index assigned, and is appended at the end of the item list." +msgstr "" +"在菜单项列表中添加分隔符。分隔符可以用来对菜单项进行分组,还可以给出标题文本 " +"[param text]。分隔符也设有索引,会追加到菜单项列表的末尾。" + msgid "Clears all the items in the [OptionButton]." msgstr "清除[OptionButton]中的所有项目。" @@ -50099,6 +70407,16 @@ msgid "Returns the tooltip of the item at index [param idx]." msgstr "返回索引为 [param idx] 的菜单项的工具提示。" msgid "" +"Returns the index of the first item which is not disabled, or marked as a " +"separator. If [param from_last] is [code]true[/code], the items will be " +"searched in reverse order.\n" +"Returns [code]-1[/code] if no item is found." +msgstr "" +"返回第一个处于非禁用状态或被标记为分隔符的菜单项的索引。如果 [param " +"from_last] 为 [code]true[/code],则会逆序搜索菜单项。\n" +"如果没有找到则返回 [code]-1[/code]。" + +msgid "" "Returns the ID of the selected item, or [code]-1[/code] if no item is " "selected." msgstr "返回所选项目的 ID,如果没有选择项目,则返回 [code]-1[/code]。" @@ -50109,6 +70427,13 @@ msgid "" msgstr "" "获取选定项的元数据。可以使用 [method set_item_metadata] 设置项的元数据。" +msgid "" +"Returns [code]true[/code] if this button contains at least one item which is " +"not disabled, or marked as a separator." +msgstr "" +"如果这个按钮至少包含一个未禁用或被标记为分隔符的菜单项,则返回 [code]true[/" +"code]。" + msgid "Returns [code]true[/code] if the item at index [param idx] is disabled." msgstr "如果索引为 [param idx] 的菜单项被禁用,则返回 [code]true[/code]。" @@ -50129,6 +70454,16 @@ msgstr "" "按索引选择项并使其为当前选中项。即使该项是禁用的,这也将起作用。\n" "将 [code]-1[/code] 作为索引传入会取消选中任何当前选中的项目。" +msgid "" +"Sets whether the item at index [param idx] is disabled.\n" +"Disabled items are drawn differently in the dropdown and are not selectable " +"by the user. If the current selected item is set as disabled, it will remain " +"selected." +msgstr "" +"设置是否禁用索引为 [param idx] 的菜单项。\n" +"处于禁用状态的菜单项在下拉列表中绘制的方式不同,用户无法选中这个菜单项。如果" +"将当前选中的菜单项设为了禁用,则仍然会处于选中状态。" + msgid "Sets the icon of the item at index [param idx]." msgstr "设置索引为 [param idx] 的菜单项的图标。" @@ -50155,6 +70490,16 @@ msgstr "" "调整 [OptionButton] 弹出项的位置和大小,然后显示 [PopupMenu]。请优先使用这个" "方法,而不是 [code]get_popup().popup()[/code]。" +msgid "" +"If [code]true[/code], minimum size will be determined by the longest item's " +"text, instead of the currently selected one's.\n" +"[b]Note:[/b] For performance reasons, the minimum size doesn't update " +"immediately when adding, removing or modifying items." +msgstr "" +"如果为 [code]true[/code],最小尺寸将由最长项目的文本确定,而不是当前选定的文" +"本。\n" +"[b]注意:[/b]出于性能原因,在添加、移除、或修改项目时,最小尺寸不会立即更新。" + msgid "The number of items to select from." msgstr "可供挑选的菜单项的数量。" @@ -50164,6 +70509,14 @@ msgid "" msgstr "当前选定项的索引,如果没有选定项,则为[code]-1[/code]。" msgid "" +"Emitted when the user navigates to an item using the [member ProjectSettings." +"input/ui_up] or [member ProjectSettings.input/ui_down] input actions. The " +"index of the item selected is passed as argument." +msgstr "" +"当用户使用 [member ProjectSettings.input/ui_up] 或 [member ProjectSettings." +"input/ui_down] 输入动作导航到某个项目时发出。所选项目的索引将作为参数传递。" + +msgid "" "Emitted when the current item has been changed by the user. The index of the " "item selected is passed as argument." msgstr "当用户更改当前项时触发。所选项目的索引作为参数传递。" @@ -50282,6 +70635,14 @@ msgid "" "can use an ORM texture." msgstr "基于物理的渲染(PBR)材质,可以应用于 3D 对象,可以使用 ORM 纹理。" +msgid "" +"ORMMaterial3D's properties are inherited from [BaseMaterial3D]. Unlike " +"[StandardMaterial3D], ORMMaterial3D uses a single texture for ambient " +"occlusion, roughness and metallic maps, known as an ORM texture." +msgstr "" +"ORMMaterial3D 的属性继承自 [BaseMaterial3D]。与 [StandardMaterial3D] 不同," +"ORMMaterial3D 对环境光遮蔽、粗糙度和金属度贴图使用单一纹理,称为 ORM 纹理。" + msgid "Standard Material 3D and ORM Material 3D" msgstr "标准 3D 材质与 ORM 3D 材质" @@ -50289,19 +70650,6 @@ msgid "Operating System functions." msgstr "操作系统函数。" msgid "" -"Operating System functions. [OS] wraps the most common functionality to " -"communicate with the host operating system, such as the clipboard, video " -"driver, delays, environment variables, execution of binaries, command line, " -"etc.\n" -"[b]Note:[/b] In Godot 4, [OS] functions related to window management were " -"moved to the [DisplayServer] singleton." -msgstr "" -"操作系统功能。OS 封装了与主机操作系统通信的最常见功能,如剪贴板、视频驱动、延" -"时、环境变量、二进制文件的执行、命令行等。\n" -"[b]注意:[/b]在 Godot 4 中,窗口管理相关的 [OS] 函数已移动至 [DisplayServer] " -"单例。" - -msgid "" "Displays a modal dialog box using the host OS' facilities. Execution is " "blocked until the dialog is closed." msgstr "" @@ -50327,6 +70675,75 @@ msgstr "" "(按推荐顺序排列)。另见 [method kill]。" msgid "" +"Creates a new instance of Godot that runs independently. The [param " +"arguments] are used in the given order and separated by a space.\n" +"If the process creation succeeds, the method will return the new process ID, " +"which you can use to monitor the process (and potentially terminate it with " +"[method kill]). If the process creation fails, the method will return " +"[code]-1[/code].\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and " +"Windows." +msgstr "" +"创建一个独立运行的 Godot 新实例。[param arguments] 按给定顺序使用,并以空格分" +"隔。\n" +"如果进程创建成功,则该方法将返回新的进程 ID,可以使用它来监视该进程(并可能使" +"用 [method kill] 终止它)。如果进程创建失败,则该方法将返回 [code]-1[/" +"code]。\n" +"[b]注意:[/b]该方法在 Android、iOS、Linux、macOS 和 Windows 上实现。" + +msgid "" +"Creates a new process that runs independently of Godot. It will not " +"terminate if Godot terminates. The path specified in [param path] must exist " +"and be executable file or macOS .app bundle. Platform path resolution will " +"be used. The [param arguments] are used in the given order and separated by " +"a space.\n" +"On Windows, if [param open_console] is [code]true[/code] and the process is " +"a console app, a new terminal window will be opened. This is ignored on " +"other platforms.\n" +"If the process creation succeeds, the method will return the new process ID, " +"which you can use to monitor the process (and potentially terminate it with " +"[method kill]). If the process creation fails, the method will return " +"[code]-1[/code].\n" +"For example, running another instance of the project:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var pid = OS.create_process(OS.get_executable_path(), [])\n" +"[/gdscript]\n" +"[csharp]\n" +"var pid = OS.CreateProcess(OS.GetExecutablePath(), new string[] {});\n" +"[/csharp]\n" +"[/codeblocks]\n" +"See [method execute] if you wish to run an external command and retrieve the " +"results.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and " +"Windows.\n" +"[b]Note:[/b] On macOS, sandboxed applications are limited to run only " +"embedded helper executables, specified during export or system .app bundle, " +"system .app bundles will ignore arguments." +msgstr "" +"创建一个独立于 Godot 运行的新进程。如果 Godot 终止,它也不会终止。[param " +"path] 中指定的路径必须存在,并且是可执行文件或 macOS .app 包。将使用平台路径" +"解析。[param arguments] 按给定顺序使用,并以空格分隔。\n" +"在 Windows 上,如果 [param open_console] 为 [code]true[/code],并且该进程是一" +"个控制台应用程序,则一个新的终端窗口将被打开。这在其他平台上将被忽略。\n" +"如果进程创建成功,则该方法将返回新的进程 ID,可以使用它来监视进程(并可能使" +"用 [method kill] 终止它)。如果进程创建失败,则该方法将返回 [code]-1[/" +"code]。\n" +"例如,运行项目的另一个实例:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var pid = OS.create_process(OS.get_executable_path(), [])\n" +"[/gdscript]\n" +"[csharp]\n" +"var pid = OS.CreateProcess(OS.GetExecutablePath(), new string[] {});\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果希望运行一个外部命令并检索结果,请参阅 [method execute]。\n" +"[b]注意:[/b]该方法在 Android、iOS、Linux、macOS 和 Windows 上实现。\n" +"[b]注意:[/b]在 macOS 上,沙盒应用程序被限制为只能运行嵌入式辅助可执行文件," +"在导出或系统 .app 包期间指定,系统 .app 包将忽略参数。" + +msgid "" "Delays execution of the current thread by [param msec] milliseconds. [param " "msec] must be greater than or equal to [code]0[/code]. Otherwise, [method " "delay_msec] will do nothing and will print an error message.\n" @@ -50492,6 +70909,24 @@ msgid "Returns the keycode of the given string (e.g. \"Escape\")." msgstr "返回给定字符串(例如“Escape”)的键码。" msgid "" +"Returns the [i]global[/i] cache data directory according to the operating " +"system's standards. On the Linux/BSD platform, this path can be overridden " +"by setting the [code]XDG_CACHE_HOME[/code] environment variable before " +"starting the project. See [url=$DOCS_URL/tutorials/io/data_paths.html]File " +"paths in Godot projects[/url] in the documentation for more information. See " +"also [method get_config_dir] and [method get_data_dir].\n" +"Not to be confused with [method get_user_data_dir], which returns the " +"[i]project-specific[/i] user data path." +msgstr "" +"根据操作系统的标准返回[i]全局[/i]缓存数据目录。在 Linux/BSD 平台上,可以通过" +"在启动项目之前设置 [code]XDG_CACHE_HOME[/code] 环境变量来覆盖该路径。有关详细" +"信息,请参阅文档中的[url=$DOCS_URL/tutorials/io/data_paths.html]《Godot 项目" +"中的文件路径》[/url]。另请参阅 [method get_config_dir] 和 [method " +"get_data_dir]。\n" +"不要与 [method get_user_data_dir] 混淆,后者返回[i]项目特定的[/i]用户数据路" +"径。" + +msgid "" "Returns the command-line arguments passed to the engine.\n" "Command-line arguments can be written in any form, including both [code]--" "key value[/code] and [code]--key=value[/code] forms so they can be properly " @@ -50584,6 +71019,97 @@ msgstr "" "取。" msgid "" +"Similar to [method get_cmdline_args], but this returns the user arguments " +"(any argument passed after the double dash [code]--[/code] or double plus " +"[code]++[/code] argument). These are left untouched by Godot for the user. " +"[code]++[/code] can be used in situations where [code]--[/code] is " +"intercepted by another program (such as [code]startx[/code]).\n" +"For example, in the command line below, [code]--fullscreen[/code] will not " +"be returned in [method get_cmdline_user_args] and [code]--level 1[/code] " +"will only be returned in [method get_cmdline_user_args]:\n" +"[codeblock]\n" +"godot --fullscreen -- --level 1\n" +"# Or:\n" +"godot --fullscreen ++ --level 1\n" +"[/codeblock]" +msgstr "" +"类似于 [method get_cmdline_args],但它返回用户参数(在双破折号 [code]--[/" +"code] 或双加号 [code]++[/code] 参数之后传递的任何参数)。这些都是 Godot 为用" +"户留下的,不做任何改动。[code]++[/code] 可用于 [code]--[/code] 被其他程序拦截" +"的情况(如 [code]startx[/code])。\n" +"例如,在下面的命令行中,[code]--fullscreen[/code] 不会在 [method " +"get_cmdline_user_args] 中返回,[code]--level 1[/code] 只会在 [method " +"get_cmdline_user_args] 中返回:\n" +"[codeblock]\n" +"godot --fullscreen -- --level 1\n" +"# 或:\n" +"godot --fullscreen ++ --level 1\n" +"[/codeblock]" + +msgid "" +"Returns the [i]global[/i] user configuration directory according to the " +"operating system's standards. On the Linux/BSD platform, this path can be " +"overridden by setting the [code]XDG_CONFIG_HOME[/code] environment variable " +"before starting the project. See [url=$DOCS_URL/tutorials/io/data_paths." +"html]File paths in Godot projects[/url] in the documentation for more " +"information. See also [method get_cache_dir] and [method get_data_dir].\n" +"Not to be confused with [method get_user_data_dir], which returns the " +"[i]project-specific[/i] user data path." +msgstr "" +"根据操作系统的标准,返回[i]全局[/i]用户配置目录。在 Linux/BSD 平台上,可以通" +"过在启动项目之前设置 [code]XDG_CONFIG_HOME[/code] 环境变量来覆盖该路径。有关" +"详细信息,请参阅文档中的[url=$DOCS_URL/tutorials/io/data_paths.html]《Godot " +"项目中的文件路径》[/url]。另请参阅 [method get_cache_dir] 和 [method " +"get_data_dir]。\n" +"不要与 [method get_user_data_dir] 混淆,后者返回[i]项目专用的[/i]用户数据路" +"径。" + +msgid "" +"Returns an array of MIDI device names.\n" +"The returned array will be empty if the system MIDI driver has not " +"previously been initialized with [method open_midi_inputs].\n" +"[b]Note:[/b] This method is implemented on Linux, macOS and Windows." +msgstr "" +"返回 MIDI 设备名称数组。\n" +"如果系统 MIDI 驱动程序之前没有使用 [method open_midi_inputs] 进行初始化,则返" +"回的数组将为空。\n" +"[b]注意:[/b]该方法在 Linux、macOS 和 Windows 上实现。" + +msgid "" +"Returns the [i]global[/i] user data directory according to the operating " +"system's standards. On the Linux/BSD platform, this path can be overridden " +"by setting the [code]XDG_DATA_HOME[/code] environment variable before " +"starting the project. See [url=$DOCS_URL/tutorials/io/data_paths.html]File " +"paths in Godot projects[/url] in the documentation for more information. See " +"also [method get_cache_dir] and [method get_config_dir].\n" +"Not to be confused with [method get_user_data_dir], which returns the " +"[i]project-specific[/i] user data path." +msgstr "" +"根据操作系统的标准返回[i]全局[/i]用户数据目录。在 Linux/BSD 平台上,可以通过" +"在启动项目之前设置 [code]XDG_DATA_HOME[/code] 环境变量来覆盖该路径。有关详细" +"信息,请参阅文档中的[url=$DOCS_URL/tutorials/io/data_paths.html]《Godot 项目" +"中的文件路径》[/url]。另请参阅 [method get_cache_dir] 和 [method " +"get_config_dir]。\n" +"不要与 [method get_user_data_dir] 混淆,后者返回[i]项目专用的[/i]用户数据路" +"径。" + +msgid "" +"Returns the name of the distribution for Linux and BSD platforms (e.g. " +"Ubuntu, Manjaro, OpenBSD, etc.).\n" +"Returns the same value as [method get_name] for stock Android ROMs, but " +"attempts to return the custom ROM name for popular Android derivatives such " +"as LineageOS.\n" +"Returns the same value as [method get_name] for other platforms.\n" +"[b]Note:[/b] This method is not supported on the web platform. It returns an " +"empty string." +msgstr "" +"返回 Linux 和 BSD 平台的发行版名称(例如 Ubuntu、Manjaro、OpenBSD 等)。\n" +"对于原生 Android 系统,返回与 [method get_name] 相同的值,但对于 LineageOS 等" +"流行的 Android 派生系统,尝试返回自定义 ROM 名称。\n" +"对于其他平台,返回与 [method get_name] 相同的值。\n" +"[b]注意:[/b]Web 平台上不支持这个方法。返回的是空字符串。" + +msgid "" "Returns the value of an environment variable. Returns an empty string if the " "environment variable doesn't exist.\n" "[b]Note:[/b] Double-check the casing of [param variable]. Environment " @@ -50832,6 +71358,14 @@ msgstr "" "[b]注意:[/b]这个方法仅在 Windows、macOS、Linux 和 iOS 上实现。在 Android、" "Web 和 UWP 平台,[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 is_restart_on_exit_set]." +msgstr "" +"返回当项目使用 [method set_restart_on_exit] 自动重新启动时,将使用的命令行参" +"数列表。另请参阅 [method is_restart_on_exit_set]。" + msgid "Returns the maximum amount of static memory used (only works in debug)." msgstr "返回使用的静态内存的最大数量(仅在调试时有效)。" @@ -50914,6 +71448,25 @@ msgstr "" "[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 on Web and UWP, as this method isn't " +"implemented on those platforms yet." +msgstr "" +"返回特定于该设备的一个字符串。\n" +"[b]注意:[/b]如果用户重新安装/升级他们的操作系统或更改他们的硬件,该字符串可" +"能会更改,恕不另行通知。这意味着它通常不应用于加密持久数据,因为在意外的 ID " +"更改会使之前保存的数据将变得不可访问。返回的字符串也可能会被外部程序伪造,因" +"此出于安全目的,不要依赖 [method get_unique_id] 返回的字符串。\n" +"[b]注意:[/b]在 Web 和 UWP 上返回一个空字符串,因为该方法尚未在这些平台上实" +"现。" + +msgid "" "Returns the absolute directory path where user data is written ([code]user://" "[/code]).\n" "On Windows, this is [code]%AppData%\\Godot\\app_userdata\\[project_name][/" @@ -50954,6 +71507,58 @@ msgstr "" "户主目录。" 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 UWP, the device family version is returned.\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" +"对于 UWP,会返回设备系列的版本。\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.\n" +"The first element holds the driver name, such as [code]nvidia[/code], " +"[code]amdgpu[/code], etc.\n" +"The second element holds the driver version. For e.g. the [code]nvidia[/" +"code] driver on a Linux/BSD platform, the version is in the format " +"[code]510.85.02[/code]. For Windows, the driver's format is " +"[code]31.0.15.1659[/code].\n" +"[b]Note:[/b] This method is only supported on the platforms Linux/BSD and " +"Windows when not running in headless mode. It returns an empty array on " +"other platforms." +msgstr "" +"返回用户当前激活的显卡的视频适配器驱动程序名称和版本。\n" +"第一个元素保存驱动程序的名称,如 [code]nvidia[/code]、[code]amdgpu[/code] " +"等。\n" +"第二个元素保存驱动程序的版本。例如 Linux/BSD 平台上的 [code]nvidia[/code] 驱" +"动程序,其版本格式为 [code]510.85.02[/code]。对于 Windows,其驱动程序的格式" +"是 [code]31.0.15.1659[/code]。\n" +"[b]注意:[/b]该方法仅在 Linux/BSD 和 Windows 平台上不以无头模式运行时才受支" +"持。在其他平台上返回一个空数组。" + +msgid "" "Returns [code]true[/code] if the environment variable with the name [param " "variable] exists.\n" "[b]Note:[/b] Double-check the casing of [param variable]. Environment " @@ -50964,6 +71569,37 @@ msgstr "" "之外的所有平台上都区分大小写。" 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." +msgstr "" +"如果当前运行的实例支持给定功能标签的功能,则返回 [code]true[/code],具体取决" +"于平台、构建等。可用于检查当前是否正在运行一个调试构建,是否在某个平台或架构" +"上,等等。请参阅[url=$DOCS_URL/tutorials/export/feature_tags.html]《功能标" +"签》[/url]文档以了解更多详细信息。\n" +"[b]注意:[/b]标签名称区分大小写。" + +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" +"Returns [code]false[/code] if the Godot binary used to run the project is a " +"[i]release[/i] export template.\n" +"To check whether the Godot binary used to run the project is an export " +"template (debug or release), use [code]OS.has_feature(\"template\")[/code] " +"instead." +msgstr "" +"如果用于运行项目的 Godot 二进制文件是[i]调试[/i]导出模板,或是在编辑器中运行" +"时,则返回 [code]true[/code]。\n" +"如果用于运行项目的 Godot 二进制文件是[i]发布[/i]导出模板,则返回 " +"[code]false[/code]。\n" +"要检查用于运行项目的 Godot 二进制文件是否是导出模板(调试或发布),请改用 " +"[code]OS.has_feature(\"template\")[/code]。" + +msgid "" "Returns [code]true[/code] if the input keycode corresponds to a Unicode " "character." msgstr "如果输入键码对应一个 Unicode 字符,则返回 [code]true[/code]。" @@ -50981,6 +71617,35 @@ msgstr "" "[b]注意:[/b]该方法在 Android、iOS、Linux、macOS 和 Windows 上实现。" msgid "" +"Returns [code]true[/code] if the project will automatically restart when it " +"exits for any reason, [code]false[/code] otherwise. See also [method " +"set_restart_on_exit] and [method get_restart_on_exit_arguments]." +msgstr "" +"如果项目因任何原因退出时将自动重新启动,则返回 [code]true[/code],否则返回 " +"[code]false[/code]。另请参阅 [method set_restart_on_exit] 和 [method " +"get_restart_on_exit_arguments]。" + +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 " +"ProjectSettings.debug/settings/stdout/verbose_stdout] is [code]true[/code]. " +"See also [method @GlobalScope.print_verbose]." +msgstr "" +"如果引擎是使用 [code]--verbose[/code] 或 [code]-v[/code] 命令行参数执行的,或" +"者如果 [member ProjectSettings.debug/settings/ stdout/verbose_stdout] 为 " +"[code]true[/code],则返回 [code]true[/code]。另请参阅 [method @GlobalScope." +"print_verbose]。" + +msgid "" +"If [code]true[/code], the [code]user://[/code] file system is persistent, so " +"that its state is the same after a player quits and starts the game again. " +"Relevant to the Web platform, where this persistence may be unavailable." +msgstr "" +"如果为 [code]true[/code],则 [code]user://[/code] 文件系统是持久的,所以在玩" +"家退出并再次开始游戏后,它的状态是相同的。与 Web 平台相关时,该持久性可能不可" +"用。" + +msgid "" "Kill (terminate) the process identified by the given process ID ([param " "pid]), e.g. the one returned by [method execute] in non-blocking mode. See " "also [method crash].\n" @@ -51037,6 +71702,21 @@ msgstr "" "[b]注意:[/b]该方法在 Linux、macOS、Windows 上实现。" msgid "" +"Reads a user input string from the standard input (usually the terminal). " +"This operation is [i]blocking[/i], which causes the window to freeze if " +"[method read_string_from_stdin] is called on the main thread. The thread " +"calling [method read_string_from_stdin] will block until the program " +"receives a line break in standard input (usually by the user pressing " +"[kbd]Enter[/kbd]).\n" +"[b]Note:[/b] This method is implemented on Linux, macOS and Windows." +msgstr "" +"从标准输入(通常是终端)读取一个用户输入字符串。这个操作是[i]阻塞的[/i] ,如" +"果在主线程上调用 [method read_string_from_stdin],就会导致窗口冻结。调用 " +"[method read_string_from_stdin] 的线程将被阻塞,直到程序在标准输入中接收到一" +"个断行(通常由用户按下 [kbd]Enter[/kbd])。\n" +"[b]注意:[/b]该方法在 Linux、macOS 和 Windows 上实现。" + +msgid "" "At the moment this function is only used by [code]AudioDriverOpenSL[/code] " "to request permission for [code]RECORD_AUDIO[/code] on Android." msgstr "" @@ -51109,6 +71789,44 @@ msgid "Enables backup saves if [param enabled] is [code]true[/code]." msgstr "如果 [param enabled] 为 [code]true[/code],则启用备份保存。" msgid "" +"Requests the OS to open a resource with the most appropriate program. For " +"example:\n" +"- [code]OS.shell_open(\"C:\\\\Users\\name\\Downloads\")[/code] on Windows " +"opens the file explorer at the user's Downloads folder.\n" +"- [code]OS.shell_open(\"https://godotengine.org\")[/code] opens the default " +"web browser on the official Godot website.\n" +"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] opens the " +"default email client with the \"To\" field set to [code]example@example.com[/" +"code]. See [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - The " +"[code]mailto[/code] URL scheme[/url] for a list of fields that can be " +"added.\n" +"Use [method ProjectSettings.globalize_path] to convert a [code]res://[/code] " +"or [code]user://[/code] path into a system path for use with this method.\n" +"[b]Note:[/b] Use [method String.uri_encode] to encode characters within URLs " +"in a URL-safe, portable way. This is especially required for line breaks. " +"Otherwise, [method shell_open] may not work correctly in a project exported " +"to the Web platform.\n" +"[b]Note:[/b] This method is implemented on Android, iOS, Web, Linux, macOS " +"and Windows." +msgstr "" +"请求操作系统使用最合适的程序打开资源。例如:\n" +"- [code]OS.shell_open(\"C:\\\\Users\\name\\Downloads\")[/code] 在 Windows 上" +"会用资源管理器打开用户的 Downloads 文件夹。\n" +"- [code]OS.shell_open(\"https://godotengine.org\")[/code] 会使用默认网页浏览" +"器打开 Godot 官方网站。\n" +"- [code]OS.shell_open(\"mailto:example@example.com\")[/code] 会打开默认电子邮" +"件客户端并将“收件人”字段设置为 [code]example@example.com[/code]。其他支持自定" +"义的字段见 [url=https://datatracker.ietf.org/doc/html/rfc2368]RFC 2368 - " +"[code]mailto[/code] URL 方案[/url]。\n" +"可以使用 [method ProjectSettings.globalize_path] 将 [code]res://[/code] 和 " +"[code]user://[/code] 路径转换为本方法所使用的系统路径。\n" +"[b]注意:[/b]请使用 [method String.uri_encode] 对 URL 中的字符进行编码,得到" +"的 URL 才能安全使用、可移植。尤其是在包含换行的情况下。否则项目导出至 Web 平" +"台后 [method shell_open] 可能无法正常工作。\n" +"[b]注意:[/b]这个方法在 Android、iOS、HTML5、Linux、macOS、以及 Windows 上实" +"现。" + +msgid "" "Removes the environment [param variable] from the current environment, if it " "exists. The environment variable will be removed for the Godot process and " "any process executed with [method execute] after running [method " @@ -51732,6 +72450,21 @@ msgstr "" "返回新的 [PackedColorArray],新数组的内容为此数组在末尾加上 [param right]。为" "了提高性能,请考虑改用 [method append_array]。" +msgid "" +"Returns [code]true[/code] if contents of both arrays are the same, i.e. they " +"have all equal [Color]s at the corresponding indices." +msgstr "" +"如果两个数组的内容相同,即对应索引号的 [Color] 相等,则返回 [code]true[/" +"code]。" + +msgid "" +"Returns the [Color] at index [param index]. Negative indices can be used to " +"access the elements starting from the end. Using index out of array's bounds " +"will result in an error." +msgstr "" +"返回索引 [param index] 处的[Color]。负数索引可以从末端开始访问元素。使用超出" +"数组范围的索引将导致出错。" + msgid "Reference-counted version of [PackedDataContainer]." msgstr "[PackedDataContainer] 的引用计数版本。" @@ -51786,6 +72519,15 @@ msgstr "" "slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" msgid "" +"Returns a copy of the data converted to a [PackedByteArray], where each " +"element have been encoded as 4 bytes.\n" +"The size of the new array will be [code]float32_array.size() * 4[/code]." +msgstr "" +"返回数据的副本,将其中的每个元素都编码为 4 个字节,放入 [PackedByteArray] " +"中。\n" +"新数组的大小为 [code]float32_array.size() * 4[/code]。" + +msgid "" "Returns a new [PackedFloat32Array] with contents of [param right] added at " "the end of this array. For better performance, consider using [method " "append_array] instead." @@ -51793,6 +72535,22 @@ msgstr "" "返回新的 [PackedFloat32Array],新数组的内容为此数组在末尾加上 [param right]。" "为了提高性能,请考虑改用 [method append_array]。" +msgid "" +"Returns [code]true[/code] if contents of both arrays are the same, i.e. they " +"have all equal floats at the corresponding indices." +msgstr "" +"如果两个数组的内容相同,即对应索引号的浮点数相等,则返回 [code]true[/code]。" + +msgid "" +"Returns the [float] at index [param index]. Negative indices can be used to " +"access the elements starting from the end. Using index out of array's bounds " +"will result in an error.\n" +"Note that [float] type is 64-bit, unlike the values stored in the array." +msgstr "" +"返回索引 [param index] 处的 [float]。负的索引可用于访问从末尾开始的元素。使用" +"超出数组范围的索引将产生一个错误。\n" +"请注意,[float] 类型是 64 位的,这与存储在数组中的值不同。" + msgid "A packed array of 64-bit floating-point values." msgstr "64 位浮点数紧缩数组。" @@ -51843,6 +72601,15 @@ msgstr "" "slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" msgid "" +"Returns a copy of the data converted to a [PackedByteArray], where each " +"element have been encoded as 8 bytes.\n" +"The size of the new array will be [code]float64_array.size() * 8[/code]." +msgstr "" +"返回数据的副本,将其中的每个元素都编码为 8 个字节,放入 [PackedByteArray] " +"中。\n" +"新数组的大小为 [code]float64_array.size() * 8[/code]。" + +msgid "" "Returns a new [PackedFloat64Array] with contents of [param right] added at " "the end of this array. For better performance, consider using [method " "append_array] instead." @@ -51850,6 +72617,21 @@ msgstr "" "返回新的 [PackedFloat64Array],新数组的内容为此数组在末尾加上 [param right]。" "为了提高性能,请考虑改用 [method append_array]。" +msgid "" +"Returns [code]true[/code] if contents of both arrays are the same, i.e. they " +"have all equal doubles at the corresponding indices." +msgstr "" +"如果两个数组的内容相同,即对应索引号的双精度浮点数相等,则返回 [code]true[/" +"code]。" + +msgid "" +"Returns the [float] at index [param index]. Negative indices can be used to " +"access the elements starting from the end. Using index out of array's bounds " +"will result in an error." +msgstr "" +"返回索引 [param index] 处的 [float]。负数索引可以从末尾开始访问元素。使用超出" +"数组范围的索引会导致出错。" + msgid "A packed array of 32-bit integers." msgstr "32 位整数紧缩数组。" @@ -51884,6 +72666,13 @@ msgstr "构造新 [PackedInt32Array]。你还可以传入通用 [Array] 进行 msgid "Appends a [PackedInt32Array] at the end of this array." msgstr "在该数组的末尾追加一个 [PackedInt32Array]。" +msgid "" +"Inserts a new integer at a given position in the array. The position must be " +"valid, or at the end of the array ([code]idx == size()[/code])." +msgstr "" +"在数组中的给定位置插入新的整数。位置必须有效,或者位于数组末尾([code]idx == " +"size()[/code])。" + msgid "Changes the integer at the given index." msgstr "更改给定索引处的整数。" @@ -51907,6 +72696,15 @@ msgstr "" "slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" msgid "" +"Returns a copy of the data converted to a [PackedByteArray], where each " +"element have been encoded as 4 bytes.\n" +"The size of the new array will be [code]int32_array.size() * 4[/code]." +msgstr "" +"返回数据的副本,将其中的每个元素都编码为 4 个字节,放入 [PackedByteArray] " +"中。\n" +"新数组的大小为 [code]int32_array.size() * 4[/code]。" + +msgid "" "Returns a new [PackedInt32Array] with contents of [param right] added at the " "end of this array. For better performance, consider using [method " "append_array] instead." @@ -51914,6 +72712,22 @@ msgstr "" "返回新的 [PackedInt32Array],新数组的内容为此数组在末尾加上 [param right]。为" "了提高性能,请考虑改用 [method append_array]。" +msgid "" +"Returns [code]true[/code] if contents of both arrays are the same, i.e. they " +"have all equal ints at the corresponding indices." +msgstr "" +"如果两个数组的内容相同,即对应索引号的整数相等,则返回 [code]true[/code]。" + +msgid "" +"Returns the [int] at index [param index]. Negative indices can be used to " +"access the elements starting from the end. Using index out of array's bounds " +"will result in an error.\n" +"Note that [int] type is 64-bit, unlike the values stored in the array." +msgstr "" +"返回索引 [param index] 处的 [int]。负数索引可以从末尾开始访问元素。使用超出数" +"组范围的索引会导致出错。\n" +"注意,[int] 类型为 64 位,与该数组中所存储的值不同。" + msgid "A packed array of 64-bit integers." msgstr "64 位整数紧缩数组。" @@ -51968,6 +72782,15 @@ msgstr "" "slice(0, -2)[/code] 是 [code]arr.slice(0, arr.size() - 2)[/code] 的简写)。" msgid "" +"Returns a copy of the data converted to a [PackedByteArray], where each " +"element have been encoded as 8 bytes.\n" +"The size of the new array will be [code]int64_array.size() * 8[/code]." +msgstr "" +"返回数据的副本,将其中的每个元素都编码为 8 个字节,放入 [PackedByteArray] " +"中。\n" +"新数组的大小为 [code]int64_array.size() * 8[/code]。" + +msgid "" "Returns a new [PackedInt64Array] with contents of [param right] added at the " "end of this array. For better performance, consider using [method " "append_array] instead." @@ -52177,6 +73000,26 @@ msgstr "" "的“editable_instances”,信号连接的“conn_count”和“conns”,以及 PackedScene 格" "式样式的版本“version”。" +msgid "If passed to [method instantiate], blocks edits to the scene state." +msgstr "如果传递给 [method instantiate],则会阻止对场景状态的编辑。" + +msgid "" +"If passed to [method instantiate], provides local scene resources to the " +"local scene.\n" +"[b]Note:[/b] Only available in editor builds." +msgstr "" +"如果传递给 [method instantiate],则会向本地场景提供本地场景资源。\n" +"[b]注意:[/b]仅在编辑器构建中可用。" + +msgid "" +"If passed to [method instantiate], provides local scene resources to the " +"local scene. Only the main scene should receive the main edit state.\n" +"[b]Note:[/b] Only available in editor builds." +msgstr "" +"如果传递给 [method instantiate],则会向本地场景提供本地场景资源。只有主场景应" +"该接收主编辑状态。\n" +"[b]注意:[/b]仅在编辑器构建中可用。" + msgid "" "It's similar to [constant GEN_EDIT_STATE_MAIN], but for the case where the " "scene is being instantiated to be the base of another one.\n" @@ -52259,6 +73102,21 @@ msgstr "" "返回新的 [PackedStringArray],新数组的内容为此数组在末尾加上 [param right]。" "为了提高性能,请考虑改用 [method append_array]。" +msgid "" +"Returns [code]true[/code] if contents of both arrays are the same, i.e. they " +"have all equal [String]s at the corresponding indices." +msgstr "" +"如果两个数组的内容相同,即对应索引号的 [String] 相等,则返回 [code]true[/" +"code]。" + +msgid "" +"Returns the [String] at index [param index]. Negative indices can be used to " +"access the elements starting from the end. Using index out of array's bounds " +"will result in an error." +msgstr "" +"返回索引为 [param index] 的 [String]。负数索引能从末尾开始访问元素。使用数组" +"范围外的索引会导致出错。" + msgid "A packed array of [Vector2]s." msgstr "[Vector2] 紧缩数组。" @@ -52328,6 +73186,21 @@ msgstr "" "返回新的 [PackedVector2Array],新数组的内容为此数组在末尾加上 [param right]。" "为了提高性能,请考虑改用 [method append_array]。" +msgid "" +"Returns [code]true[/code] if contents of both arrays are the same, i.e. they " +"have all equal [Vector2]s at the corresponding indices." +msgstr "" +"如果两个数组的内容相同,即对应索引号的 [Vector2] 相等,则返回 [code]true[/" +"code]。" + +msgid "" +"Returns the [Vector2] at index [param index]. Negative indices can be used " +"to access the elements starting from the end. Using index out of array's " +"bounds will result in an error." +msgstr "" +"返回索引为 [param index] 的 [Vector2]。负数索引能从末尾开始访问元素。使用数组" +"范围外的索引会导致出错。" + msgid "A packed array of [Vector3]s." msgstr "[Vector3] 紧缩数组。" @@ -52391,6 +73264,21 @@ msgstr "" "返回新的 [PackedVector3Array],新数组的内容为此数组在末尾加上 [param right]。" "为了提高性能,请考虑改用 [method append_array]。" +msgid "" +"Returns [code]true[/code] if contents of both arrays are the same, i.e. they " +"have all equal [Vector3]s at the corresponding indices." +msgstr "" +"如果两个数组的内容相同,即对应索引号的 [Vector3] 相等,则返回 [code]true[/" +"code]。" + +msgid "" +"Returns the [Vector3] at index [param index]. Negative indices can be used " +"to access the elements starting from the end. Using index out of array's " +"bounds will result in an error." +msgstr "" +"返回索引为 [param index] 的 [Vector3]。负数索引能从末尾开始访问元素。使用数组" +"范围外的索引会导致出错。" + msgid "Abstraction and base class for packet-based protocols." msgstr "基于包的协议的抽象和基类。" @@ -52671,6 +73559,33 @@ msgstr "" msgid "The style of [PanelContainer]'s background." msgstr "[PanelContainer] 的背景样式。" +msgid "A [Material] used with [Sky] to draw a background texture." +msgstr "[Sky] 使用的 [Material],用于绘制背景纹理。" + +msgid "" +"A resource referenced in a [Sky] that is used to draw a background. The " +"Panorama sky material 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 "" +"在 [Environment] 中引用的用于绘制背景的资源。全景天空的功能类似于其他引擎的天" +"空盒,区别在于它使用的是等距圆柱投影的天空贴图而不是立方体贴图。\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." +msgstr "布尔值,用于确定背景纹理是否应被过滤。" + msgid "[Texture2D] to be applied to the [PanoramaSkyMaterial]." msgstr "应用于该 [PanoramaSkyMaterial] 的 [Texture2D]。" @@ -53058,6 +73973,15 @@ msgid "" "[GPUParticlesCollision3D] nodes." msgstr "粒子没有碰撞。粒子会穿过 [GPUParticlesCollision3D] 节点。" +msgid "" +"Hide particles instantly when colliding with a [GPUParticlesCollision3D] " +"node. This can be combined with a subemitter that uses the [constant " +"COLLISION_RIGID] collision mode to \"replace\" the parent particle with the " +"subemitter on impact." +msgstr "" +"与 [GPUParticlesCollision3D] 节点碰撞时立即隐藏粒子。可以和使用 [constant " +"COLLISION_RIGID] 碰撞模式的子发射器组合,在撞击时将父粒子“替换”为子发射器。" + msgid "Represents the size of the [enum CollisionMode] enum." msgstr "代表 [enum CollisionMode] 枚举的大小。" @@ -53125,6 +74049,23 @@ msgstr "" "如果为 [code]true[/code],路径长度以外的任何偏移都将环绕,而不是在结束时停" "止。对于循环路径使用它。" +msgid "" +"The distance along the path, in pixels. Changing this value sets this node's " +"position to a point within the path." +msgstr "" +"沿路径走过的距离,单位为像素。改变这个值会将这个节点的位置设置为路径上的某个" +"点。" + +msgid "" +"The distance along the path as a number in the range 0.0 (for the first " +"vertex) to 1.0 (for the last). This is just another way of expressing the " +"progress within the path, as the offset supplied is multiplied internally by " +"the path's length." +msgstr "" +"沿路径走过的距离,用 0.0(第一个顶点)到 1.0(最后一个顶点)范围内的数字表" +"示。这只是表示路径内偏移量的另一种方式,提供的偏移量在内部会与路径的长度相" +"乘。" + msgid "The node's offset perpendicular to the curve." msgstr "节点垂直于曲线的偏移量。" @@ -53371,6 +74312,16 @@ msgid "" msgstr "" "该物体的摩擦,从 [code]0[/code](无摩擦)到 [code]1[/code](最大摩擦)。" +msgid "" +"This is multiplied by the global 3D gravity setting found in [b]Project > " +"Project Settings > Physics > 3d[/b] to produce the body's gravity. For " +"example, a value of 1 will be normal gravity, 2 will apply double gravity, " +"and 0.5 will apply half gravity to this object." +msgstr "" +"与[b]设置 > 项目设置 > 物理 > 3D[/b] 中的全局 3D 重力设置相乘,得到该物体的重" +"力。例如,取值为 1 就是正常重力,2 就是双倍重力,0.5 会让应用到这个对象的重力" +"减半。" + msgid "Sets the joint's transform." msgstr "设置该关节的变换。" @@ -53534,6 +74485,11 @@ msgid "Base class for all objects affected by physics in 3D space." msgstr "在 3D 空间中受物理影响的所有对象的基类。" msgid "" +"Returns [code]true[/code] if the specified linear or rotational [param axis] " +"is locked." +msgstr "如果指定的线性或旋转轴 [param axis] 被锁定,则返回 [code]true[/code]。" + +msgid "" "Moves the body along the vector [param motion]. In order to be frame rate " "independent in [method Node._physics_process] or [method Node._process], " "[param motion] should be computed using [code]delta[/code].\n" @@ -53564,6 +74520,11 @@ msgstr "" "[param max_collisions] 可用于检索多次碰撞的结果。" msgid "" +"Locks or unlocks the specified linear or rotational [param axis] depending " +"on the value of [param lock]." +msgstr "根据 [param lock] 的值锁定或解锁指定的线性或旋转轴 [param axis]。" + +msgid "" "Checks for collisions without moving the body. In order to be frame rate " "independent in [method Node._physics_process] or [method Node._process], " "[param motion] should be computed using [code]delta[/code].\n" @@ -53708,6 +74669,9 @@ msgstr "" "[b]注意:[/b]默认情况下,除非物体被设为监视接触者,否则返回 0。见 [member " "RigidBody2D.contact_monitor]。" +msgid "Returns the impulse created by the contact." +msgstr "返回接触造成的冲量。" + msgid "Returns the local normal at the contact point." msgstr "返回接触点处的局部法线。" @@ -53910,6 +74874,10 @@ msgid "A material for physics properties." msgstr "具有物理属性的材质。" msgid "" +"Provides a means of modifying the collision properties of a [PhysicsBody3D]." +msgstr "提供修改 [PhysicsBody3D] 碰撞属性的方法。" + +msgid "" "If [code]true[/code], subtracts the bounciness from the colliding object's " "bounciness instead of adding it." msgstr "" @@ -53933,6 +74901,9 @@ msgstr "" "的摩擦。如果 [code]false[/code],物理引擎将使用所有碰撞物体的最低摩擦力来代" "替。如果两个碰撞的对象都为 [code]true[/code],物理引擎将使用最高的摩擦力。" +msgid "Parameters to be sent to a 2D point physics query." +msgstr "要发送到 2D 点物理查询的参数。" + msgid "" "If different from [code]0[/code], restricts the query to a specific canvas " "layer specified by its instance ID. See [method Object.get_instance_id].\n" @@ -53956,6 +74927,13 @@ msgstr "要查询的位置,使用全局坐标。" msgid "Parameters to be sent to a 3D point physics query." msgstr "要发送到 3D 点物理查询的参数。" +msgid "" +"This class contains the position and other parameters to be used for [method " +"PhysicsDirectSpaceState3D.intersect_point]." +msgstr "" +"这个类包含要用于 [method PhysicsDirectSpaceState3D.intersect_point] 的位置和" +"其他参数。" + msgid "If [code]true[/code], the query will take [Area3D]s into account." msgstr "如果为 [code]true[/code],则查询将考虑 [Area3D]。" @@ -53966,6 +74944,13 @@ msgstr "如果为 [code]true[/code],则查询将考虑 [PhysicsBody3D]。" msgid "Parameters to be sent to a 2D ray physics query." msgstr "要发送到 2D 射线物理查询的参数。" +msgid "" +"This class contains the ray position and other parameters to be used for " +"[method PhysicsDirectSpaceState2D.intersect_ray]." +msgstr "" +"这个类包含要用于 [method PhysicsDirectSpaceState2D.intersect_ray] 的射线位置" +"和其他参数。" + msgid "The starting point of the ray being queried for, in global coordinates." msgstr "要查询的射线起点,使用全局坐标。" @@ -53984,6 +74969,13 @@ msgid "Parameters to be sent to a 3D ray physics query." msgstr "要发送到 3D 射线物理查询的参数。" msgid "" +"This class contains the ray position and other parameters to be used for " +"[method PhysicsDirectSpaceState3D.intersect_ray]." +msgstr "" +"这个类包含要用于 [method PhysicsDirectSpaceState3D.intersect_ray] 的射线位置" +"和其他参数。" + +msgid "" "If [code]true[/code], the query will detect a hit when starting inside " "shapes. In this case the collision normal will be [code]Vector3(0, 0, 0)[/" "code]. Does not affect concave polygon shapes or heightmap shapes." @@ -54206,6 +75198,11 @@ msgstr "" "进入或退出其他区域时,会调用其他区域的区域监视回调。" msgid "" +"Sets the value of the given area parameter. See [enum AreaParameter] for the " +"list of available parameters." +msgstr "设置给定的区域参数的值。可用参数列表见 [enum AreaParameter]。" + +msgid "" "Replaces the area's shape at the given index by another shape, while not " "affecting the [code]transform[/code] and [code]disabled[/code] properties at " "the same index." @@ -54222,6 +75219,10 @@ msgstr "" "code],则该形状将不会检测任何其他形状进入或退出它。" msgid "" +"Sets the local transform matrix of the area's shape with the given index." +msgstr "设置该区域给定索引的形状的局部变换。" + +msgid "" "Adds the area to the given space, after removing the area from the " "previously assigned space (if any).\n" "[b]Note:[/b] To remove an area from a space without immediately adding it " @@ -54319,6 +75320,13 @@ msgstr "" "返回附加到该实体的画布的 [code]ObjectID[/code]。可使用 [method @GlobalScope." "instance_from_id] 从非零 [code]ObjectID[/code] 检索一个 [CanvasLayer]。" +msgid "Returns the physics layer or layers the body belongs to, as a bitmask." +msgstr "返回物体所属的物理层,形式为位掩码。" + +msgid "" +"Returns the physics layer or layers the body can collide with, as a bitmask." +msgstr "返回物体可以碰撞的物理层,形式为位掩码。" + msgid "" "Returns the body's collision priority. This is used in the depenetration " "phase of [method body_test_motion]. The higher the priority is, the lower " @@ -54512,6 +75520,12 @@ msgstr "" "shape_set_data] 设置凸多边形的点。" msgid "" +"Returns information about the current state of the 2D physics engine. See " +"[enum ProcessInfo] for the list of available states." +msgstr "" +"返回关于 2D 物理引擎当前状态的信息。可用状态的列表见 [enum ProcessInfo]。" + +msgid "" "Destroys the joint with the given [RID], creates a new uninitialized joint, " "and makes the [RID] refer to this new joint." msgstr "" @@ -54528,6 +75542,16 @@ msgstr "" "[method joint_make_damped_spring]、[method joint_make_groove] 或 [method " "joint_make_pin]。可使用 [method joint_set_param] 设置通用关节参数。" +msgid "" +"Sets whether the bodies attached to the [Joint2D] will collide with each " +"other." +msgstr "设置附加到该 [Joint2D] 的物体能否互相碰撞。" + +msgid "" +"Returns the value of the given joint parameter. See [enum JointParam] for " +"the list of available parameters." +msgstr "返回给定关节参数的值。可用参数的列表见 [enum JointParam]。" + msgid "Returns the joint's type (see [enum JointType])." msgstr "返回该关节的类型(见 [enum JointType])。" @@ -54561,6 +75585,11 @@ msgstr "" "销关节的参数,请参阅 [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 "" "Creates a 2D rectangle shape in the physics server, and returns the [RID] " "that identifies it. Use [method shape_set_data] to set the rectangle's half-" "extents." @@ -54672,6 +75701,21 @@ msgstr "" "制其中实体的物理模拟的步骤。" msgid "" +"Returns the state of a space, a [PhysicsDirectSpaceState2D]. This object can " +"be used for collision/intersection queries." +msgstr "" +"返回空间的状态,即 [PhysicsDirectSpaceState2D]。该对象可用于进行碰撞/相交的查" +"询。" + +msgid "" +"Returns the value of the given space parameter. See [enum SpaceParameter] " +"for the list of available parameters." +msgstr "返回给定空间参数的值。可用参数的列表见 [enum SpaceParameter]。" + +msgid "Returns [code]true[/code] if the space is active." +msgstr "如果该空间处于活动状态,则返回 [code]true[/code]。" + +msgid "" "Activates or deactivates the space. If [param active] is [code]false[/code], " "then the physics server will not do anything with this space in its physics " "step." @@ -54680,6 +75724,11 @@ msgstr "" "会在它的物理步骤中对这个空间做任何事情。" msgid "" +"Sets the value of the given space parameter. See [enum SpaceParameter] for " +"the list of available parameters." +msgstr "设置给定空间参数的值。可用参数的列表见 [enum SpaceParameter]。" + +msgid "" "Creates a 2D world boundary shape in the physics server, and returns the " "[RID] that identifies it. Use [method shape_set_data] to set the shape's " "normal direction and distance properties." @@ -54716,6 +75765,33 @@ msgstr "" "contact_max_allowed_penetration]。" msgid "" +"Constant to set/get the maximum time of activity. A body marked as " +"potentially inactive for both linear and angular velocity will be put to " +"sleep after this time. The default value of this parameter is [member " +"ProjectSettings.physics/2d/time_before_sleep]." +msgstr "" +"常量,用于设置/获得最大的活动时间。一个被标记为线速度和角速度都可能不活动的物" +"体,在这个时间之后将被置入睡眠状态。" + +msgid "" +"Constant to set/get the number of solver iterations for all contacts and " +"constraints. The greater the number of iterations, the more accurate the " +"collisions will be. However, a greater number of iterations requires more " +"CPU power, which can decrease performance. The default value of this " +"parameter is [member ProjectSettings.physics/2d/solver/solver_iterations]." +msgstr "" +"常量,用于设置/获取所有接触与约束的求解器迭代数。迭代次数越多,碰撞越准确。但" +"是,大量的迭代会需要更多的 CPU 能力,会降低性能。" + +msgid "" +"This is the constant for creating world boundary shapes. A world boundary " +"shape is an [i]infinite[/i] line with an origin point, and a normal. Thus, " +"it can be used for front/behind checks." +msgstr "" +"常量,用于创建世界边界形状。一个世界边界形状,是具有原点和法线的[i]无限[/i]直" +"线。因此,它可以用于前面/背面检查。" + +msgid "" "This is the constant for creating circle shapes. A circle shape only has a " "radius. It can be used for intersections and inside/outside checks." msgstr "" @@ -54846,6 +75922,30 @@ msgstr "" "区域。" msgid "" +"Constant for static bodies. In this mode, a body can be only moved by user " +"code and doesn't collide with other bodies along its path when moved." +msgstr "" +"常量,用于静态物体。在这种模式下,物体只能由用户代码移动,移动时不会与路径上" +"的其他物体发生碰撞。" + +msgid "" +"Constant for kinematic bodies. In this mode, a body can be only moved by " +"user code and collides with other bodies along its path." +msgstr "" +"常量,用于运动学物体。在这种模式下,物体只能由用户代码移动,会与路径上的其他" +"物体发生碰撞。" + +msgid "" +"Constant for rigid bodies. In this mode, a body can be pushed by other " +"bodies and has forces applied." +msgstr "常量,用于刚体。在这种模式下,物体可以被其他物体推动,能够对其施加力。" + +msgid "" +"Constant for linear rigid bodies. In this mode, a body can not rotate, and " +"only its linear velocity is affected by external forces." +msgstr "常量,用于线性刚体。在这种模式下,物体不能旋转,只有线速度受外力影响。" + +msgid "" "Constant to set/get a body's bounce factor. The default value of this " "parameter is [code]0.0[/code]." msgstr "常量,用于设置/获取物体的反弹系数。该参数的默认值为 [code]0.0[/code]。" @@ -54902,20 +76002,46 @@ msgid "" msgstr "常量,用于设置/获取物体的重力倍数。该参数的默认值为 [code]1.0[/code]。" msgid "" +"Constant to set/get a body's linear damping mode. See [enum BodyDampMode] " +"for possible values. The default value of this parameter is [constant " +"BODY_DAMP_MODE_COMBINE]." +msgstr "" +"常量,用于设置/获取物体的线性阻尼模式。可能的值见 [enum BodyDampMode]。这个参" +"数的默认值为 [constant BODY_DAMP_MODE_COMBINE]。" + +msgid "" +"Constant to set/get a body's angular damping mode. See [enum BodyDampMode] " +"for possible values. The default value of this parameter is [constant " +"BODY_DAMP_MODE_COMBINE]." +msgstr "" +"常量,用于设置/获取物体的角度阻尼模式。可能的值见 [enum BodyDampMode]。这个参" +"数的默认值为 [constant BODY_DAMP_MODE_COMBINE]。" + +msgid "" "Constant to set/get a body's linear damping factor. The default value of " "this parameter is [code]0.0[/code]." msgstr "" -"常数,用于设置/获取物体的线性阻尼系数。该参数的默认值为 [code]0.0[/code]。" +"常量,用于设置/获取物体的线性阻尼系数。该参数的默认值为 [code]0.0[/code]。" msgid "" "Constant to set/get a body's angular damping factor. The default value of " "this parameter is [code]0.0[/code]." msgstr "" -"常数,用于设置/获取物体的角度阻尼系数。该参数的默认值为 [code]0.0[/code]。" +"常量,用于设置/获取物体的角度阻尼系数。该参数的默认值为 [code]0.0[/code]。" msgid "Represents the size of the [enum BodyParameter] enum." msgstr "代表 [enum BodyParameter] 枚举的大小。" +msgid "" +"The body's damping value is added to any value set in areas or the default " +"value." +msgstr "物体的阻尼值会叠加到替换区域中所设置的值或默认值。" + +msgid "" +"The body's damping value replaces any value set in areas or the default " +"value." +msgstr "物体的阻尼值会替换区域中所设置的值或默认值。" + msgid "Constant to set/get the current transform matrix of the body." msgstr "常量,用于设置/获取物体的当前变换矩阵。" @@ -55007,6 +76133,13 @@ msgstr "" "衡(临界阻尼)。该参数的默认值为 [code]1.5[/code]。" msgid "" +"Disables continuous collision detection. This is the fastest way to detect " +"body collisions, but it can miss small and/or fast-moving objects." +msgstr "" +"禁用连续碰撞检测。这是检测物体碰撞的最快方法,但可能会错过较小和/或快速移动的" +"物体。" + +msgid "" "Enables continuous collision detection by raycasting. It is faster than " "shapecasting, but less precise." msgstr "通过射线投射实现连续的碰撞检测。它比形状投射更快,但不够精确。" @@ -55039,10 +76172,44 @@ msgstr "常量,用以获取可能发生碰撞的空间区域数。" msgid "Manager for 2D physics server implementations." msgstr "2D 物理服务器实现的管理器。" +msgid "" +"[PhysicsServer2DManager] is the API for registering [PhysicsServer2D] " +"implementations, and for setting the default implementation.\n" +"[b]Note:[/b] It is not possible to switch physics servers at runtime. This " +"class is only used on startup at the server initialization level, by Godot " +"itself and possibly by GDExtensions." +msgstr "" +"[PhysicsServer2DManager] 是用于注册 [PhysicsServer2D] 实现的 API,可用于设置" +"默认实现。\n" +"[b]注意:[/b]无法在运行时切换物理服务器。这个类只在启动时在服务器初始化级别使" +"用,可能由 Godot 本身使用,也可能由 GDExtension 使用。" + +msgid "" +"Register a [PhysicsServer2D] implementation by passing a [param name] and a " +"[Callable] that returns a [PhysicsServer2D] object." +msgstr "" +"注册 [PhysicsServer2D] 实现,传入名称 [param name] 和返回 [PhysicsServer2D] " +"对象的 [Callable]。" + +msgid "" +"Set the default [PhysicsServer2D] implementation to the one identified by " +"[param name], if [param priority] is greater than the priority of the " +"current default implementation." +msgstr "" +"如果优先级 [param priority] 比当前默认实现的优先级高,则将由名称 [param " +"name] 标识的 [PhysicsServer2D] 实现设置为默认实现。" + msgid "Server interface for low-level physics access." msgstr "用于低级物理访问的服务器接口。" msgid "" +"PhysicsServer3D is the server responsible for all 3D physics. It can create " +"many kinds of physics objects, but does not insert them on the node tree." +msgstr "" +"PhysicsServer3D 是负责所有 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." msgstr "" @@ -55103,26 +76270,6 @@ msgid "Sets which physics layers the area will monitor." msgstr "设置区域将监控的物理层。" msgid "" -"Sets the function to call when any body/area enters or exits the area. This " -"callback will be called for any object interacting with the area, and takes " -"five parameters:\n" -"1: [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED], depending on " -"whether the object entered or exited the area.\n" -"2: [RID] of the object that entered/exited the area.\n" -"3: Instance ID of the object that entered/exited the area.\n" -"4: The shape index of the object that entered/exited the area.\n" -"5: The shape index of the area where the object entered/exited." -msgstr "" -"设置当任何主体/区域进入或退出该区域时调用的函数。这个回调函数将被任何与区域交" -"互的对象调用,并接受 5 个参数:\n" -"1:[constant AREA_BODY_ADDED] 或 [constant AREA_BODY_REMOVED],取决于对象是否" -"进入或退出该区域。\n" -"2:进入/退出该区域对象的 [RID]。\n" -"3:进入/退出该区域对象的实例 ID。\n" -"4:进入/离开该区域的物体的形状指数。\n" -"5:物体进入/离开区域的形状指数。" - -msgid "" "Sets the value for an area parameter. A list of available parameters is on " "the [enum AreaParameter] constants." msgstr "设置面积参数的值。可用参数列表位于 [enum AreaParameter] 常量上。" @@ -55178,6 +76325,13 @@ msgid "Returns the body's collision priority." msgstr "返回该物体的碰撞优先级。" msgid "" +"Returns the [PhysicsDirectBodyState3D] of the body. Returns [code]null[/" +"code] if the body is destroyed or removed from the physics space." +msgstr "" +"返回该物体的 [PhysicsDirectBodyState3D]。如果该物体已被销毁或从物理空间中移" +"除,则返回 [code]null[/code]。" + +msgid "" "Returns the maximum contacts that can be reported. See [method " "body_set_max_contacts_reported]." msgstr "返回可报告的最大接触数。见 [method body_set_max_contacts_reported]。" @@ -55269,6 +76423,9 @@ msgid "" "BodyParameter] constants." msgstr "设置物体参数。可用参数列表位于 [enum BodyParameter] 常量上。" +msgid "Sets the body pickable with rays if [param enable] is set." +msgstr "如果设置了 [param enable],则将该物体设置为可通过射线拾取。" + msgid "" "Substitutes a given body shape by another. The old shape is selected by its " "index, the new one by its [RID]." @@ -55294,6 +76451,14 @@ msgid "" msgstr "设置圆锥体扭曲关节参数(见 [enum ConeTwistJointParam] 常量)。" msgid "" +"Destroys any of the objects created by PhysicsServer3D. If the [RID] passed " +"is not one of the objects that can be created by PhysicsServer3D, an error " +"will be sent to the console." +msgstr "" +"销毁由 PhysicsServer3D 创建的任何对象。如果传入的 [RID] 不是由 " +"PhysicsServer3D 创建的对象,则会向控制台发送错误。" + +msgid "" "Gets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants)." msgstr "获取 generic_6_DOF_joit 标志(见 [enum G6DOFJointAxisFlag] 常量)。" @@ -55311,6 +76476,12 @@ msgid "" "constants)." msgstr "设置 generic_6_DOF_joint 参数(见 [enum G6DOFJointAxisParam] 常量)。" +msgid "" +"Returns information about the current state of the 3D physics engine. See " +"[enum ProcessInfo] for a list of available states." +msgstr "" +"返回有关 3D 物理引擎当前状态的信息。可用状态的列表见 [enum ProcessInfo]。" + msgid "Gets a hinge_joint flag (see [enum HingeJointFlag] constants)." msgstr "获取 hinge_joint 标志(见 [enum HingeJointFlag] 常量)。" @@ -55390,6 +76561,13 @@ msgstr "" "[method area_set_space] 分配给一个区域,或者通过 [method body_set_space] 分配" "给一个主体。" +msgid "" +"Returns the state of a space, a [PhysicsDirectSpaceState3D]. This object can " +"be used to make collision/intersection queries." +msgstr "" +"返回空间的状态,即 [PhysicsDirectSpaceState3D]。该对象可用于进行碰撞/相交的查" +"询。" + msgid "Returns the value of a space parameter." msgstr "返回空间参数的值。" @@ -55728,9 +76906,45 @@ msgstr "" "常量,用于设置/获得最大的活动时间。一个被标记为线速度和角速度都可能不活动的物" "体,在这个时间之后将被置入睡眠状态。" +msgid "Manager for 3D physics server implementations." +msgstr "3D 物理服务器实现的管理器。" + +msgid "" +"[PhysicsServer3DManager] is the API for registering [PhysicsServer3D] " +"implementations, and for setting the default implementation.\n" +"[b]Note:[/b] It is not possible to switch physics servers at runtime. This " +"class is only used on startup at the server initialization level, by Godot " +"itself and possibly by GDExtensions." +msgstr "" +"[PhysicsServer3DManager] 是用于注册 [PhysicsServer3D] 实现的 API,也用于设置" +"默认的实现。\n" +"[b]注意:[/b]运行时无法切换物理服务器。这个类只在启动时在服务器初始化级别使" +"用,Godot 本身会用到,GDExtensions 也可能会用到。" + +msgid "" +"Register a [PhysicsServer3D] implementation by passing a [param name] and a " +"[Callable] that returns a [PhysicsServer3D] object." +msgstr "" +"注册 [PhysicsServer3D] 实现,传入名称 [param name] 和返回 [PhysicsServer3D] " +"对象的 [Callable]。" + +msgid "" +"Set the default [PhysicsServer3D] implementation to the one identified by " +"[param name], if [param priority] is greater than the priority of the " +"current default implementation." +msgstr "" +"如果优先级 [param priority] 比当前默认实现的优先级高,则将由名称 [param " +"name] 标识的 [PhysicsServer3D] 实现设置为默认实现。" + msgid "Parameters to be sent to a 2D shape physics query." msgstr "要发送到 2D 形状物理查询的参数。" +msgid "" +"This class contains the shape and other parameters for " +"[PhysicsDirectSpaceState2D] intersection/collision queries." +msgstr "" +"这个类中包含的是 [PhysicsDirectSpaceState2D] 相交/碰撞查询的形状和其他参数。" + msgid "The collision margin for the shape." msgstr "形状的碰撞边距。" @@ -55743,6 +76957,69 @@ msgstr "被查询形状的变换矩阵。" msgid "Parameters to be sent to a 3D shape physics query." msgstr "要发送到 3D 形状物理查询的参数。" +msgid "" +"This class contains the shape and other parameters for " +"[PhysicsDirectSpaceState3D] intersection/collision queries." +msgstr "" +"这个类中包含的是 [PhysicsDirectSpaceState3D] 相交/碰撞查询的形状和其他参数。" + +msgid "Parameters to be sent to a 2D body motion test." +msgstr "要发送到 2D 物体运动测试的参数。" + +msgid "" +"This class contains parameters used in [method PhysicsServer2D." +"body_test_motion]." +msgstr "" +"这个类中包含的是 [method PhysicsServer2D.body_test_motion] 中使用的参数。" + +msgid "" +"Transform in global space where the motion should start. Usually set to " +"[member Node2D.global_transform] for the current body's transform." +msgstr "" +"运动开始处的全局空间变换。通常设为 [member Node2D.global_transform],使用当前" +"物体的变换。" + +msgid "Motion vector to define the length and direction of the motion to test." +msgstr "运动向量,定义要测试的运动的长度和方向。" + +msgid "" +"If set to [code]true[/code], any depenetration from the recovery phase is " +"reported as a collision; this is used e.g. by [CharacterBody2D] for " +"improving floor detection during floor snapping.\n" +"If set to [code]false[/code], only collisions resulting from the motion are " +"reported, which is generally the desired behavior." +msgstr "" +"如果设置为 [code]true[/code],则把恢复阶段的穿透汇报为碰撞;使用场景包括 " +"[CharacterBody2D] 提升地面吸附阶段的地面检测。\n" +"如果设置为 [code]false[/code],则只会汇报移动造成的碰撞,一般符合预期行为。" + +msgid "Parameters to be sent to a 3D body motion test." +msgstr "要发送到 3D 物体运动测试的参数。" + +msgid "" +"This class contains parameters used in [method PhysicsServer3D." +"body_test_motion]." +msgstr "" +"这个类中包含的是 [method PhysicsServer3D.body_test_motion] 中使用的参数。" + +msgid "" +"Transform in global space where the motion should start. Usually set to " +"[member Node3D.global_transform] for the current body's transform." +msgstr "" +"运动开始处的全局空间变换。通常设为 [member Node3D.global_transform],使用当前" +"物体的变换。" + +msgid "" +"If set to [code]true[/code], any depenetration from the recovery phase is " +"reported as a collision; this is used e.g. by [CharacterBody3D] for " +"improving floor detection during floor snapping.\n" +"If set to [code]false[/code], only collisions resulting from the motion are " +"reported, which is generally the desired behavior." +msgstr "" +"如果设置为 [code]true[/code],则把恢复阶段的穿透汇报为碰撞;使用场景包括 " +"[CharacterBody3D] 提升地面吸附阶段的地面检测。\n" +"如果设置为 [code]false[/code],则只会汇报移动造成的碰撞,一般符合预期行为。" + msgid "Result from a 2D body motion test." msgstr "2D 物体运动的测试结果。" @@ -55776,6 +77053,24 @@ msgstr "如果发生了碰撞,则返回相撞物体形状的索引。见 [Coll msgid "Returns the colliding body's velocity, if a collision occurred." msgstr "如果发生了碰撞,则返回相撞物体的速度。" +msgid "" +"Returns the length of overlap along the collision normal, if a collision " +"occurred." +msgstr "如果发生了碰撞,则返回沿碰撞法线的重叠长度。" + +msgid "Returns the moving object's colliding shape, if a collision occurred." +msgstr "如果发生了碰撞,则返回移动对象的碰撞形状。" + +msgid "" +"Returns the colliding body's shape's normal at the point of collision, if a " +"collision occurred." +msgstr "如果发生了碰撞,则返回碰撞物体形状在碰撞点处的法线。" + +msgid "" +"Returns the point of collision in global coordinates, if a collision " +"occurred." +msgstr "如果发生了碰撞,则返回使用全局坐标表示的碰撞点。" + msgid "Result from a 3D body motion test." msgstr "3D 物体运动的测试结果。" @@ -55822,6 +77117,35 @@ msgstr "" "如果发生了碰撞,则返回相撞物体的速度。见 [method Object.get_instance_id]。" msgid "" +"Returns the length of overlap along the collision normal given a collision " +"index (the deepest collision by default), if a collision occurred." +msgstr "" +"如果发生了碰撞,则在给定碰撞索引(默认为最深碰撞)的情况下,返回沿碰撞法线的" +"重叠长度。" + +msgid "" +"Returns the moving object's colliding shape given a collision index (the " +"deepest collision by default), if a collision occurred." +msgstr "" +"如果发生了碰撞,则在给定碰撞索引(默认为最深碰撞)的情况下,返回移动对象的碰" +"撞形状。" + +msgid "" +"Returns the colliding body's shape's normal at the point of collision given " +"a collision index (the deepest collision by default), if a collision " +"occurred." +msgstr "" +"如果发生了碰撞,则在给定碰撞索引(默认为最深碰撞)的情况下,返回碰撞物体形状" +"在碰撞点处的法线。" + +msgid "" +"Returns the point of collision in global coordinates given a collision index " +"(the deepest collision by default), if a collision occurred." +msgstr "" +"如果发生了碰撞,则在给定碰撞索引(默认为最深碰撞)的情况下,返回使用全局坐标" +"表示的碰撞点。" + +msgid "" "The higher this value, the more the bond to the pinned partner can flex." msgstr "这个值越高,与被牵制的两个物体之间的的联系就越灵活。" @@ -55850,6 +77174,9 @@ msgstr "材质的占位类。" msgid "Placeholder class for a mesh." msgstr "网格的占位类。" +msgid "The smallest [AABB] enclosing this mesh in local space." +msgstr "局部空间中,包含这个网格的最小 [AABB]。" + msgid "Placeholder class for a 2-dimensional texture." msgstr "二维纹理的占位类。" @@ -56036,6 +77363,13 @@ msgstr "" msgid "Class representing a planar [PrimitiveMesh]." msgstr "表示平面 [PrimitiveMesh] 的类。" +msgid "Offset of the generated plane. Useful for particles." +msgstr "生成平面的偏移量。可用于粒子。" + +msgid "" +"Direction that the [PlaneMesh] is facing. See [enum Orientation] for options." +msgstr "[PlaneMesh] 的朝向。可选项见 [enum Orientation]。" + msgid "Size of the generated plane." msgstr "生成平面的大小。" @@ -56059,6 +77393,9 @@ msgid "" "QuadMesh in Godot 3.x." msgstr "[PlaneMesh] 将面向 Z 轴正方向。与 Godot 3.x 中 QuadMesh 的行为一致。" +msgid "Positional 2D light source." +msgstr "位置性 2D 光源。" + msgid "" "Casts light in a 2D environment. This light's shape is defined by a (usually " "grayscale) texture." @@ -56097,6 +77434,9 @@ msgstr "设置与指定骨骼相关联的节点的路径。" msgid "Sets the weight values for the specified bone." msgstr "设置指定骨骼的权重值。" +msgid "If [code]true[/code], polygon edges will be anti-aliased." +msgstr "如果为 [code]true[/code],则多边形边缘将进行抗锯齿。" + msgid "" "The polygon's fill color. If [code]texture[/code] is defined, it will be " "multiplied by this color. It will also be the default color for vertices not " @@ -56153,10 +77493,97 @@ msgstr "" "每个顶点的颜色.颜色在顶点之间插值,从而获得平滑的渐变.每个多边形顶点应有一个." "如果数量少,则未定义的顶点将使用[code]color[/code]." +msgid "" +"Flat 2D polygon shape for use with occlusion culling in [OccluderInstance3D]." +msgstr "平面 2D 多边形形状,用于 [OccluderInstance3D] 的遮挡剔除。" + +msgid "" +"[PolygonOccluder3D] stores a polygon shape that can be used by the engine's " +"occlusion culling system. When an [OccluderInstance3D] with a " +"[PolygonOccluder3D] is selected in the editor, an editor will appear at the " +"top of the 3D viewport so you can add/remove points. All points must be " +"placed on the same 2D plane, which means it is not possible to create " +"arbitrary 3D shapes with a single [PolygonOccluder3D]. To use arbitrary 3D " +"shapes as occluders, use [ArrayOccluder3D] or [OccluderInstance3D]'s baking " +"feature instead.\n" +"See [OccluderInstance3D]'s documentation for instructions on setting up " +"occlusion culling." +msgstr "" +"[PolygonOccluder3D] 储存的是多边形形状,可用于引擎的遮挡剔除系统。在编辑器中" +"选中具有 [PolygonOccluder3D] 的 [OccluderInstance3D] 时,3D 视口的顶部会出现" +"用于添加/移除顶点的编辑器。所有的顶点都必须在相同的 2D 平面中放置,也就是说," +"使用单个 [PolygonOccluder3D] 是无法任意创建 3D 形状的。要将任意 3D 形状作为遮" +"挡器,请改用 [ArrayOccluder3D] 或 [OccluderInstance3D] 的烘焙功能。\n" +"设置遮挡剔除的步骤见 [OccluderInstance3D] 的文档。" + +msgid "" +"The polygon to use for occlusion culling. The polygon can be convex or " +"concave, but it should have as few points as possible to maximize " +"performance.\n" +"The polygon must [i]not[/i] have intersecting lines. Otherwise, " +"triangulation will fail (with an error message printed)." +msgstr "" +"用于遮挡剔除的多边形。既可以是凸多边形,也可以是凹多边形,但只有让顶点的数量" +"尽可能地少,才能够让性能最大化。\n" +"多边形必须[i]不存在[/i]相交的线。否则三角形化会失败(同时会输出错误信息)。" + +msgid "Popup is a base window container for popup-like subwindows." +msgstr "Popup 是弹出式子窗口的基本窗口容器。" + +msgid "" +"Popup is a base window container for popup-like subwindows. It's a modal by " +"default (see [member Window.popup_window]) and has helpers for custom popup " +"behavior." +msgstr "" +"Popup 是弹出式子窗口的基本窗口容器。默认情况下是模态的(见 [member Window." +"popup_window]),还可以自定义弹出行为。" + +msgid "Emitted when the popup is hidden." +msgstr "当该弹出窗口被隐藏时发出。" + msgid "PopupMenu displays a list of options." msgstr "PopupMenu 会显示一个选项列表。" msgid "" +"[PopupMenu] is a modal window used to display a list of options. They are " +"popular in toolbars or context menus.\n" +"The size of a [PopupMenu] can be limited by using [member Window.max_size]. " +"If the height of the list of items is larger than the maximum height of the " +"[PopupMenu], a [ScrollContainer] within the popup will allow the user to " +"scroll the contents.\n" +"If no maximum size is set, or if it is set to 0, the [PopupMenu] height will " +"be limited by its parent rect.\n" +"All [code]set_*[/code] methods allow negative item index, which makes the " +"item accessed from the last one.\n" +"[b]Incremental search:[/b] Like [ItemList] and [Tree], [PopupMenu] supports " +"searching within the list while the control is focused. Press a key that " +"matches the first letter of an item's name to select the first item starting " +"with the given letter. After that point, there are two ways to perform " +"incremental search: 1) Press the same key again before the timeout duration " +"to select the next item starting with the same letter. 2) Press letter keys " +"that match the rest of the word before the timeout duration to match to " +"select the item in question directly. Both of these actions will be reset to " +"the beginning of the list if the timeout duration has passed since the last " +"keystroke was registered. You can adjust the timeout duration by changing " +"[member ProjectSettings.gui/timers/incremental_search_max_interval_msec]." +msgstr "" +"[PopupMenu] 是用于显示选项列表的模态窗口,常见于工具栏和上下文菜单。\n" +"[PopupMenu] 的大小可以使用 [member Window.max_size] 限制。如果菜单项列表的高" +"度大于 [PopupMenu] 的最大高度,会在弹出框中使用 [ScrollContainer] 让用户滚动" +"内容。\n" +"如果没有设置最大尺寸或者设为了 0,则该 [PopupMenu] 的高度会被限制在父级的矩形" +"框之中。\n" +"所有的 [code]set_*[/code] 方法都允许使用负数菜单项索引,会从最后一个菜单项开" +"始访问。\n" +"[b]增量搜索:[/b]与 [ItemList] 和 [Tree] 类似,[PopupMenu] 也支持在聚焦控件时" +"在列表中进行搜索。按下与某个条目名称首字母一致的按键,就会选中以该字母开头的" +"第一个条目。在此之后,进行增量搜索的办法有两种:1)在超时前再次按下同一个按" +"键,选中以该字母开头的下一个条目。2)在超时前按下剩余字母对应的按键,直接匹配" +"并选中所需的条目。这两个动作都会在最后一次按键超时后重置回列表顶端。你可以通" +"过 [member ProjectSettings.gui/timers/incremental_search_max_interval_msec] " +"修改超时时长。" + +msgid "" "Adds a new checkable item with text [param label].\n" "An [param id] can optionally be provided, as well as an accelerator ([param " "accel]). If no [param id] is provided, one will be created from the index. " @@ -56227,6 +77654,21 @@ msgstr "" "[b]注意:[/b]可勾选项只显示一个勾选标记,但没有任何内置的勾选行为,必须手动勾" "选/取消勾选。有关如何控制它的更多信息,请参阅 [method set_item_checked]。" +msgid "" +"Adds a new item with text [param label] and icon [param texture].\n" +"An [param id] can optionally be provided, as well as an accelerator ([param " +"accel]). If no [param id] is provided, one will be created from the index. " +"If no [param accel] is provided, then the default value of 0 (corresponding " +"to [constant @GlobalScope.KEY_NONE]) will be assigned to the item (which " +"means it won't have any accelerator). See [method get_item_accelerator] for " +"more info on accelerators." +msgstr "" +"添加带有文本 [param label] 和图标 [param texture] 的新菜单项。\n" +"还可以提供 [param id] 和快捷键([param accel])。如果没有提供 [param id],则" +"会根据索引来创建。如果没有提供 [param accel],则会为该菜单项分配默认的 0(对" +"应 [constant @GlobalScope.KEY_NONE],在这里表示没有快捷键)。更多快捷键相关的" +"信息见 [method get_item_accelerator]。" + msgid "Same as [method add_icon_check_item], but uses a radio check button." msgstr "与 [method add_icon_check_item] 相同,但使用单选按钮。" @@ -56235,6 +77677,16 @@ msgid "" 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." +msgstr "" +"添加新的菜单项,并为其分配指定的 [Shortcut] 和图标 [param texture]。复选框的" +"标签会被设为 [Shortcut] 的名称。\n" +"还可以提供 [param id]。如果没有提供 [param id],则会根据索引来创建。" + +msgid "" "Adds a new item with text [param label].\n" "An [param id] can optionally be provided, as well as an accelerator ([param " "accel]). If no [param id] is provided, one will be created from the index. " @@ -56256,6 +77708,28 @@ msgstr "" "[code]index[/code] 参数无关。" msgid "" +"Adds a new multistate item with text [param label].\n" +"Contrarily to normal binary items, multistate items can have more than two " +"states, as defined by [param max_states]. Each press or activate of the item " +"will increase the state by one. The default value is defined by [param " +"default_state].\n" +"An [param id] can optionally be provided, as well as an accelerator ([param " +"accel]). If no [param id] is provided, one will be created from the index. " +"If no [param accel] is provided, then the default value of 0 (corresponding " +"to [constant @GlobalScope.KEY_NONE]) will be assigned to the item (which " +"means it won't have any accelerator). See [method get_item_accelerator] for " +"more info on accelerators." +msgstr "" +"添加文本为 [param label] 的新多状态菜单项。\n" +"与普通的双态菜单项不同,多状态菜单项的状态可以超过两个,数量由 [param " +"max_states] 定义。菜单项每按下或激活一次,状态就会加一。默认值由 [param " +"default_state] 定义。\n" +"还可以提供 [param id] 和快捷键([param accel])。如果没有提供 [param id],则" +"会根据索引来创建。如果没有提供 [param accel],则会为该菜单项分配默认的 0(对" +"应 [constant @GlobalScope.KEY_NONE],在这里表示没有快捷键)。更多快捷键相关的" +"信息见 [method get_item_accelerator]。" + +msgid "" "Adds a new radio check button with text [param label].\n" "An [param id] can optionally be provided, as well as an accelerator ([param " "accel]). If no [param id] is provided, one will be created from the index. " @@ -56290,6 +77764,34 @@ msgstr "" "[b]注意:[/b]可勾选项只显示一个勾选标记,但没有任何内置的勾选行为,必须手动勾" "选/取消勾选。有关如何控制它的更多信息,请参阅 [method set_item_checked]。" +msgid "" +"Adds a separator between items. Separators also occupy an index, which you " +"can set by using the [param id] parameter.\n" +"A [param label] can optionally be provided, which will appear at the center " +"of the separator." +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." +msgstr "" +"添加 [ShortCut]。\n" +"还可以提供 [param id]。如果没有提供 [param id],则会根据索引来创建。" + +msgid "" +"Adds an item that will act as a submenu of the parent [PopupMenu] node when " +"clicked. The [param submenu] argument is the name of the child [PopupMenu] " +"node that will be shown when the item is clicked.\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] 节点的名称,会在点击菜单项时显示。\n" +"还可以提供 [param id]。如果没有提供 [param id],则会根据索引来创建。" + msgid "Removes all items from the [PopupMenu]." msgstr "从该 [PopupMenu] 中移除所有项目。" @@ -56298,6 +77800,23 @@ msgid "" "no item is focused." msgstr "返回当前焦点项目的索引。如果没有焦点,则返回 [code]-1[/code]。" +msgid "" +"Returns the accelerator of the item at the given [param index]. An " +"accelerator is a keyboard shortcut that can be pressed to trigger the menu " +"button even if it's not currently open. The return value is an integer which " +"is generally a combination of [enum KeyModifierMask]s and [enum Key]s using " +"bitwise OR such as [code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]). " +"If no accelerator is defined for the specified [param index], [method " +"get_item_accelerator] returns [code]0[/code] (corresponding to [constant " +"@GlobalScope.KEY_NONE])." +msgstr "" +"返回给定 [param index] 处项目的加速器。加速器是一种键盘快捷键,即使当前未打开" +"菜单按钮,也可以按下它来触发菜单按钮。返回值是一个整数,通常是 [enum " +"KeyModifierMask] 和 [enum Key] 使用按位或操作的组合,例如 " +"[code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + A[/kbd])。如果没有为指定的 " +"[param index] 定义加速器,则 [method get_item_accelerator] 返回 [code]0[/" +"code](对应于 [constant @GlobalScope.KEY_NONE])。" + msgid "Returns the icon of the item at the given [param index]." msgstr "返回给定 [param index] 处的项的图标。" @@ -56400,6 +77919,10 @@ msgstr "" "[b]注意:[/b]被移除的项后面的项的索引将移动一位。" msgid "" +"Moves the scroll view to make the item at the given [param index] visible." +msgstr "移动滚动视图,使位于给定 [param index] 的菜单项可见。" + +msgid "" "Sets the currently focused item as the given [param index].\n" "Passing [code]-1[/code] as the index makes so that no item is focused." msgstr "" @@ -56407,6 +77930,18 @@ msgstr "" "将 [code]-1[/code] 作为索引传入将不会聚焦任何项。" msgid "" +"Sets the accelerator of the item at the given [param index]. An accelerator " +"is a keyboard shortcut that can be pressed to trigger the menu button even " +"if it's not currently open. [param accel] is generally a combination of " +"[enum KeyModifierMask]s and [enum Key]s using bitwise OR such as " +"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd])." +msgstr "" +"在给定的 [param index] 处设置项目的加速器。加速器是一种键盘快捷键,即使当前未" +"打开菜单按钮,也可以按下它来触发菜单按钮。[param accel] 通常是 [enum " +"KeyModifierMask] 和 [enum Key] 使用按位或操作的组合,例如 " +"[code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + A[/kbd])。" + +msgid "" "Sets whether the item at the given [param index] has a checkbox. If " "[code]false[/code], sets the type of the item to plain text.\n" "[b]Note:[/b] Checkable items just display a checkmark, but don't have any " @@ -56432,9 +77967,27 @@ msgstr "" "将给定 [param index] 处的项标记为分隔符,这意味着它将显示为直线段。如果为 " "[code]false[/code],则将项的类型设置为纯文本。" +msgid "Sets the checkstate status of the item at the given [param index]." +msgstr "设置位于给定的 [param index] 的菜单项的勾选状态。" + +msgid "" +"Enables/disables the item at the given [param index]. When it is disabled, " +"it can't be selected and its action can't be invoked." +msgstr "" +"启用/禁用位于给定 [param index] 的菜单项。处于禁用状态的菜单项无法被选中,也" +"无法调用其动作。" + msgid "Replaces the [Texture2D] icon of the item at the given [param index]." msgstr "替换索引为 [param index] 的菜单项的 [Texture2D] 图标。" +msgid "" +"Sets the [param id] of the item at the given [param index].\n" +"The [param id] is used in [signal id_pressed] and [signal id_focused] " +"signals." +msgstr "" +"设置位于给定 [param index] 的菜单项的 [param id]。\n" +"[signal id_pressed] 和 [signal id_focused] 等信号中会用到 [param id]。" + msgid "Sets the horizontal offset of the item at the given [param index]." msgstr "设置索引为 [param index] 的菜单项的水平偏移量。" @@ -56457,6 +78010,14 @@ msgstr "设置索引为 [param index] 的菜单项的 [Shortcut]。" msgid "Disables the [Shortcut] of the item at the given [param index]." msgstr "禁用索引为 [param index] 的菜单项的 [Shortcut]。" +msgid "" +"Sets the submenu of the item at the given [param index]. The submenu is the " +"name of a child [PopupMenu] node that would be shown when the item is " +"clicked." +msgstr "" +"设置位于给定 [param index] 的菜单项的子菜单。子菜单为点击该菜单项后应该显示的" +"子 [PopupMenu] 节点的名称。" + msgid "Sets the text of the item at the given [param index]." msgstr "设置索引为 [param index] 的菜单项的文本。" @@ -56496,6 +78057,32 @@ msgstr "" "菜单的子菜单(作为子菜单),它将继承父菜单项的延迟时间。" msgid "" +"Emitted when the user navigated to an item of some [param id] using the " +"[member ProjectSettings.input/ui_up] or [member ProjectSettings.input/" +"ui_down] input action." +msgstr "" +"用户使用 [member ProjectSettings.input/ui_up] 或 [member ProjectSettings." +"input/ui_down] 输入动作移动至 ID 为 [param id] 的菜单项时发出。" + +msgid "" +"Emitted when an item of some [param id] is pressed or its accelerator is " +"activated.\n" +"[b]Note:[/b] If [param id] is negative (either explicitly or due to " +"overflow), this will return the corresponding index instead." +msgstr "" +"ID 为 [param id] 的菜单项被按下或者由快捷键激活时发出。\n" +"[b]注意:[/b]如果 [param id] 为负数(无论是明确指定的还是由于溢出导致的),将" +"返回相应的索引来代替。" + +msgid "" +"Emitted when an item of some [param index] is pressed or its accelerator is " +"activated." +msgstr "索引为 [param index] 的菜单项被按下或者由快捷键激活时发出。" + +msgid "Emitted when any item is added, modified or removed." +msgstr "发生菜单项的添加、修改、删除时发出。" + +msgid "" "The text [Color] used for shortcuts and accelerators that show next to the " "menu item name when defined. See [method get_item_accelerator] for more info " "on accelerators." @@ -56606,15 +78193,84 @@ msgstr "用于分隔符的 [StyleBox]。请参阅 [method add_separator]。" msgid "Class for displaying popups with a panel background." msgstr "用于显示带有面板背景的弹出窗口的类。" +msgid "" +"Class for displaying popups with a panel background. In some cases it might " +"be simpler to use than [Popup], since it provides a configurable background. " +"If you are making windows, better check [Window].\n" +"If any [Control] node is added as a child of this [PopupPanel], it will be " +"stretched to fit the panel's size (similar to how [PanelContainer] works)." +msgstr "" +"用于显示带有面板背景的弹出框的类。某些情况下比使用 [Popup] 要简单,因为提供了" +"可配置的背景。如果你是在制作窗口,最好看一下 [Window]。\n" +"如果向这个 [PopupPanel] 中加入了任何 [Control] 子节点,则这个子节点会被拉伸至" +"该面板的大小(类似于 [PanelContainer] 的原理)。" + msgid "The background panel style of this [PopupPanel]." msgstr "这个 [PopupPanel] 的背景面板样式。" +msgid "" +"Provides a compressed texture for disk and/or VRAM in a way that is portable." +msgstr "为磁盘和/或显存提供可移植的压缩纹理。" + +msgid "" +"This class allows storing compressed textures as self contained (not " +"imported) resources.\n" +"For 2D usage (compressed on disk, uncompressed on VRAM), the lossy and " +"lossless modes are recommended. For 3D usage (compressed on VRAM) it depends " +"on the target platform.\n" +"If you intend to only use desktop, S3TC or BPTC are recommended. For only " +"mobile, ETC2 is recommended.\n" +"For portable, self contained 3D textures that work on both desktop and " +"mobile, Basis Universal is recommended (although it has a small quality cost " +"and longer compression time as a tradeoff).\n" +"This resource is intended to be created from code." +msgstr "" +"这个类能够将压缩纹理存储为自包含的资源(与导入资源相对)。\n" +"用于 2D 时(在磁盘上压缩、在显存中不压缩)推荐使用有损和无损模式。用于 3D 时" +"(在显存中压缩)则取决于目标平台。\n" +"如果你只想用于桌面平台,则推荐使用 S3TC 或 BPTC。如果只用于移动平台,则推荐使" +"用 ETC2。\n" +"如果要实现可移植、自包含的 3D 纹理,让这种纹理能同时在桌面和移动平台使用,则" +"推荐 Basis Universal(尽管代价是有较小的质量损耗和更长的压缩时间)。\n" +"这个资源应使用代码创建。" + +msgid "" +"Initializes the compressed texture from a base image. The compression mode " +"must be provided.\n" +"[param normal_map] is recommended to ensure optimum quality if this image " +"will be used as a normal map.\n" +"If lossy compression is requested, the quality setting can optionally be " +"provided. This maps to Lossy WebP compression quality." +msgstr "" +"使用基础图像初始化压缩纹理。必须提供压缩模式。\n" +"如果该图像会用作法线贴图,则推荐使用 [param normal_map],确保达到最佳质量。\n" +"如果请求了有损压缩,还可以提供质量设置。会映射至有损 WebP 压缩质量。" + msgid "Return the compression mode used (valid after initialized)." msgstr "返回使用的压缩模式(初始化后有效)。" msgid "Return the image format used (valid after initialized)." msgstr "返回使用的图像格式(初始化后有效)。" +msgid "Return whether the flag is overridden for all textures of this type." +msgstr "返回是否为所有该类型的纹理覆盖该标志。" + +msgid "" +"Overrides the flag globally for all textures of this type. This is used " +"primarily by the editor." +msgstr "为该类型的所有纹理全局覆盖该标志。主要由编辑器使用。" + +msgid "" +"When running on the editor, this class will keep the source compressed data " +"in memory. Otherwise, the source compressed data is lost after loading and " +"the resource can't be re saved.\n" +"This flag allows to keep the compressed data in memory if you intend it to " +"persist after loading." +msgstr "" +"在编辑器中运行时,这个类会将来源压缩数据保持在内存中。否则加载资源后来源压缩" +"数据就会丢失,资源也无法重新保存。\n" +"如果你要在加载后再次进行持久化,这个标志能够让压缩数据保持在内存中。" + msgid "Allow overriding the texture size (for 2D only)." msgstr "允许覆盖纹理大小(仅限 2D)。" @@ -56623,6 +78279,68 @@ msgid "" "primitive mesh." msgstr "所有图元网格的基类。处理将 [Material] 应用到图元网格的问题。" +msgid "" +"Base class for all primitive meshes. Handles applying a [Material] to a " +"primitive mesh. Examples include [BoxMesh], [CapsuleMesh], [CylinderMesh], " +"[PlaneMesh], [PrismMesh], and [SphereMesh]." +msgstr "" +"所有基本网格的基类,能够处理将 [Material] 应用到基本网格的操作。有 " +"[BoxMesh]、[CapsuleMesh]、[CylinderMesh]、[PlaneMesh]、[PrismMesh]、" +"[SphereMesh] 等基本网格。" + +msgid "" +"Returns mesh arrays used to constitute surface of [Mesh]. The result can be " +"passed to [method ArrayMesh.add_surface_from_arrays] to create a new " +"surface. For example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var c = CylinderMesh.new()\n" +"var arr_mesh = ArrayMesh.new()\n" +"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, c." +"get_mesh_arrays())\n" +"[/gdscript]\n" +"[csharp]\n" +"var c = new CylinderMesh();\n" +"var arrMesh = new ArrayMesh();\n" +"arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, c." +"GetMeshArrays());\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回用于构成 [Mesh] 表面的网格数组。结果可以传递给 [method ArrayMesh." +"add_surface_from_arrays] 创建新的表面。例如:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var c = CylinderMesh.new()\n" +"var arr_mesh = ArrayMesh.new()\n" +"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, c." +"get_mesh_arrays())\n" +"[/gdscript]\n" +"[csharp]\n" +"var c = new CylinderMesh();\n" +"var arrMesh = new ArrayMesh();\n" +"arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, c." +"GetMeshArrays());\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"If set, generates UV2 UV coordinates applying a padding using the [member " +"uv2_padding] setting. UV2 is needed for lightmapping." +msgstr "" +"打开后将生成 UV2 UV 坐标,使用 [member uv2_padding] 设置的间距。光照映射需要 " +"UV2。" + +msgid "" +"If set, the order of the vertices in each triangle are reversed resulting in " +"the backside of the mesh being drawn.\n" +"This gives the same result as using [constant BaseMaterial3D.CULL_FRONT] in " +"[member BaseMaterial3D.cull_mode]." +msgstr "" +"打开后会颠倒各个三角形中顶点的顺序,导致绘制网格的背面。\n" +"和在 [member BaseMaterial3D.cull_mode] 中使用 [constant BaseMaterial3D." +"CULL_FRONT] 的效果一致。" + msgid "The current [Material] of the primitive mesh." msgstr "该图元网格的当前 [Material]。" @@ -56661,12 +78379,21 @@ msgid "Number of added edge loops along the X axis." msgstr "沿 X 轴添加的边循环数。" msgid "" +"A [Material] used with [Sky] to generate a background based on user input " +"parameters." +msgstr "用于 [Sky] 的 [Material],能够根据用户输入的参数生成背景。" + +msgid "" "How quickly the [member ground_horizon_color] fades into the [member " "ground_bottom_color]." msgstr "" "从 [member ground_horizon_color] 渐变到 [member ground_bottom_color] 的速度。" msgid "" +"Multiplier for ground color. A higher value will make the ground brighter." +msgstr "地面颜色的乘数。值越高,地面越亮。" + +msgid "" "The sky cover texture to use. This texture must use an equirectangular " "projection (similar to [PanoramaSkyMaterial]). The texture's colors will be " "[i]added[/i] to the existing sky color, and will be multiplied by [member " @@ -56709,6 +78436,26 @@ msgstr "填充方向。可能的取值见 [enum FillMode]。" msgid "If [code]true[/code], the fill percentage is displayed on the bar." msgstr "为 [code]true[/code] 时,将在进度条上显示百分比。" +msgid "" +"The progress bar fills from begin to end horizontally, according to the " +"language direction. If [method Control.is_layout_rtl] returns [code]false[/" +"code], it fills from left to right, and if it returns [code]true[/code], it " +"fills from right to left." +msgstr "" +"进度条从开头到结尾水平填充,开头和结尾的位置取决于语言的方向。如果 [method " +"Control.is_layout_rtl] 返回 [code]false[/code] 则为从左至右填充,如果返回 " +"[code]true[/code] 则为从右至左填充。" + +msgid "" +"The progress bar fills from end to begin horizontally, according to the " +"language direction. If [method Control.is_layout_rtl] returns [code]false[/" +"code], it fills from right to left, and if it returns [code]true[/code], it " +"fills from left to right." +msgstr "" +"进度条从结尾到开头水平填充,开头和结尾的位置取决于语言的方向。如果 [method " +"Control.is_layout_rtl] 返回 [code]false[/code] 则为从左至右填充,如果返回 " +"[code]true[/code] 则为从右至左填充。" + msgid "The progress fills from top to bottom." msgstr "进度从上到下填充。" @@ -56773,10 +78520,107 @@ msgstr "将 Projection 作为给定 [Transform3D] 的副本进行构造。" msgid "Constructs a Projection from four [Vector4] values (matrix columns)." msgstr "从四个 [Vector4] 值(矩阵列)构造 Projection。" +msgid "" +"Creates a new [Projection] that projects positions from a depth range of " +"[code]-1[/code] to [code]1[/code] to one that ranges from [code]0[/code] to " +"[code]1[/code], and flips the projected positions vertically, according to " +"[param flip_y]." +msgstr "" +"创建新的 [Projection],将位置从深度 [code]-1[/code] 到 [code]1[/code] 的范围" +"投影到 [code]0[/code] 到 [code]1[/code] 的范围,并将投影后的位置根据 [param " +"flip_y] 垂直翻转。" + +msgid "" +"Creates a new [Projection] that scales a given projection to fit around a " +"given [AABB] in projection space." +msgstr "" +"创建新的 [Projection],将给定的投影进行缩放,从而适应投影空间中的给定 " +"[AABB]。" + +msgid "" +"Creates a new [Projection] that projects positions in a frustum with the " +"given clipping planes." +msgstr "" +"创建新的 [Projection],将位置投影至平截头台中,平截头台由给定的裁剪平面指定。" + +msgid "" +"Creates a new [Projection] that projects positions into the given [Rect2]." +msgstr "创建新的 [Projection],将位置投影至给定的 [Rect2]。" + +msgid "" +"Creates a new [Projection] that projects positions using an orthogonal " +"projection with the given clipping planes." +msgstr "创建新的 [Projection],使用给定裁剪平面的正交投影对位置进行投影。" + +msgid "" +"Returns a copy of this [Projection] with the signs of the values of the Y " +"column flipped." +msgstr "返回这个 [Projection] 的副本,Y 列中数值的符号都进行了翻转。" + msgid "Returns the X:Y aspect ratio of this [Projection]'s viewport." msgstr "返回该 [Projection] 视口的 X:Y 纵横比。" msgid "" +"Returns the dimensions of the far clipping plane of the projection, divided " +"by two." +msgstr "返回投影远裁剪平面的尺寸除以二。" + +msgid "Returns the horizontal field of view of the projection (in degrees)." +msgstr "返回该投影的水平视野(单位为度)。" + +msgid "" +"Returns the clipping plane of this [Projection] whose index is given by " +"[param plane].\n" +"[param plane] should be equal to one of [constant PLANE_NEAR], [constant " +"PLANE_FAR], [constant PLANE_LEFT], [constant PLANE_TOP], [constant " +"PLANE_RIGHT], or [constant PLANE_BOTTOM]." +msgstr "" +"返回这个 [Projection] 的裁剪平面,索引由 [param plane] 给定。\n" +"[param plane] 应该等于 [constant PLANE_NEAR]、[constant PLANE_FAR]、" +"[constant PLANE_LEFT]、[constant PLANE_TOP]、[constant PLANE_RIGHT] 或 " +"[constant PLANE_BOTTOM]。" + +msgid "" +"Returns the dimensions of the viewport plane that this [Projection] projects " +"positions onto, divided by two." +msgstr "返回视口平面的尺寸除以二,这个 [Project] 会把位置投影至该平面。" + +msgid "" +"Returns the distance for this [Projection] beyond which positions are " +"clipped." +msgstr "返回该 [Projection] 中的距离,超过这个距离的位置会被裁剪。" + +msgid "" +"Returns the distance for this [Projection] before which positions are " +"clipped." +msgstr "返回该 [Projection] 中的距离,未达到这个距离的位置会被裁剪。" + +msgid "" +"Returns a [Projection] that performs the inverse of this [Projection]'s " +"projective transformation." +msgstr "返回执行这个 [Projection] 的逆投影变换的 [Projection]。" + +msgid "" +"Returns [code]true[/code] if this [Projection] performs an orthogonal " +"projection." +msgstr "如果该 [Projection] 进行的是正交投影,则返回 [code]true[/code]。" + +msgid "" +"Returns a [Projection] with the X and Y values from the given [Vector2] " +"added to the first and second values of the final column respectively." +msgstr "" +"返回一个 [Projection],X 和 Y 的取值由给定的 [Vector2] 和最后一列中对应的第一" +"个和第二个值相加而来。" + +msgid "" +"Returns a [Projection] with the near clipping distance adjusted to be [param " +"new_znear].\n" +"[b]Note:[/b] The original [Projection] must be a perspective projection." +msgstr "" +"返回一个 [Projection],将其近裁剪距离调整为 [param new_znear]。\n" +"[b]注意:[/b]原始的 [Projection] 必须为透视投影。" + +msgid "" "The projection matrix's W vector (column 3). Equivalent to array index " "[code]3[/code]." msgstr "投影矩阵的 W 向量(第 3 列)。相当于数组索引 [code]3[/code]。" @@ -56837,6 +78681,15 @@ msgstr "" "code] 。可能会在 Godot 的未来版本中添加 [code]is_equal_approx[/code] 方法。" msgid "" +"Returns a [Projection] that applies the combined transformations of this " +"[Projection] and [param right]." +msgstr "" +"返回一个 [Projection],应用了这个 [Projection] 和 [param right] 的组合变换。" + +msgid "Projects (multiplies) the given [Vector4] by this [Projection] matrix." +msgstr "使用这个 [Projection] 矩阵将给定的 [Vector4] 进行投影(相乘)。" + +msgid "" "Returns [code]true[/code] if the projections are equal.\n" "[b]Note:[/b] Due to floating-point precision errors, this may return " "[code]false[/code], even if the projections are virtually equal. An " @@ -56926,6 +78779,80 @@ msgid "" msgstr "返回配置值的顺序(保存到配置文件时会产生影响)。" msgid "" +"Returns the value of the setting identified by [param name]. If the setting " +"doesn't exist and [param default_value] is specified, the value of [param " +"default_value] is returned. Otherwise, [code]null[/code] is returned.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(ProjectSettings.get_setting(\"application/config/name\"))\n" +"print(ProjectSettings.get_setting(\"application/config/custom_description\", " +"\"No description specified.\"))\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(ProjectSettings.GetSetting(\"application/config/name\"));\n" +"GD.Print(ProjectSettings.GetSetting(\"application/config/" +"custom_description\", \"No description specified.\"));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This method doesn't take potential feature overrides into " +"account automatically. Use [method get_setting_with_override] to handle " +"seamlessly." +msgstr "" +"返回由名称 [param name] 标识的设置项的值。如果该设置项不存在,并且指定了默认" +"值 [param default_value],则会返回 [param default_value] 的值。否则返回 " +"[code]null[/code]。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(ProjectSettings.get_setting(\"application/config/name\"))\n" +"print(ProjectSettings.get_setting(\"application/config/custom_description\", " +"\"未指定描述。\"))\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(ProjectSettings.GetSetting(\"application/config/name\"));\n" +"GD.Print(ProjectSettings.GetSetting(\"application/config/" +"custom_description\", \"未指定描述。\"));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]这个方法不会自动考虑可能的特性覆盖项。如需无缝处理,请使用 " +"[method get_setting_with_override]。" + +msgid "" +"Similar to [method get_setting], but applies feature tag overrides if any " +"exists and is valid.\n" +"[b]Example:[/b]\n" +"If the following setting override exists \"application/config/name." +"windows\", and the following code is executed:\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(ProjectSettings.get_setting_with_override(\"application/config/" +"name\"))\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(ProjectSettings.GetSettingWithOverride(\"application/config/" +"name\"));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Then the overridden setting will be returned instead if the project is " +"running on the [i]Windows[/i] operating system." +msgstr "" +"类似于 [method get_setting],但会应用有效的特性标签覆盖项。\n" +"[b]示例:[/b]\n" +"如果存在设置覆盖项“application/config/name.windows”并且执行了下列代码:\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(ProjectSettings.get_setting_with_override(\"application/config/" +"name\"))\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(ProjectSettings.GetSettingWithOverride(\"application/config/" +"name\"));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"那么项目在 [i]Windows[/i] 操作系统上运行时会返回覆盖的设置值。" + +msgid "" "Returns the absolute, native OS path corresponding to the localized [param " "path] (starting with [code]res://[/code] or [code]user://[/code]). The " "returned path will vary depending on the operating system and user " @@ -57050,6 +78977,32 @@ msgstr "" "[b]注意:[/b]这只是向用户显示的提示,提示必须重新启动编辑器才能使更改生效。启" "用 [method set_restart_if_changed] [i]不[/i]会延迟在更改时设置的设置。" +msgid "" +"Sets the value of a setting.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"ProjectSettings.set_setting(\"application/config/name\", \"Example\")\n" +"[/gdscript]\n" +"[csharp]\n" +"ProjectSettings.SetSetting(\"application/config/name\", \"Example\");\n" +"[/csharp]\n" +"[/codeblocks]\n" +"This can also be used to erase custom project settings. To do this change " +"the setting value to [code]null[/code]." +msgstr "" +"设置设置项的值。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"ProjectSettings.set_setting(\"application/config/name\", \"Example\")\n" +"[/gdscript]\n" +"[csharp]\n" +"ProjectSettings.SetSetting(\"application/config/name\", \"Example\");\n" +"[/csharp]\n" +"[/codeblocks]\n" +"也可以用来擦除自定义项目设置。方法是将设置项的值设置为 [code]null[/code]。" + msgid "Background color for the boot splash." msgstr "启动界面的背景色。" @@ -57185,6 +79138,27 @@ msgstr "" "data-user]Godot 项目中的文件路径[/url]。该设置仅在桌面平台上有效。" msgid "" +"If [code]true[/code], the project will use a hidden directory ([code].godot[/" +"code]) for storing project-specific data (metadata, shader cache, etc.).\n" +"If [code]false[/code], a non-hidden directory ([code]godot[/code]) will be " +"used instead.\n" +"[b]Note:[/b] Restart the application after changing this setting.\n" +"[b]Note:[/b] Changing this value can help on platforms or with third-party " +"tools where hidden directory patterns are disallowed. Only modify this " +"setting if you know that your environment requires it, as changing the " +"default can impact compatibility with some external tools or plugins which " +"expect the default [code].godot[/code] folder." +msgstr "" +"如果为 [code]true[/code],该项目会使用隐藏目录([code].godot[/code])来存储项" +"目特定的数据(元数据、着色器缓存等)。\n" +"如果为 [code]false[/code],将改用非隐藏目录([code]godot[/code])。\n" +"[b]注意:[/b]请在更改此设置后重新启动应用程序。\n" +"[b]注意:[/b]修改这个值可能有助于在禁止使用隐藏目录模式的平台或第三方工具上使" +"用。但是,仅在你确定你的环境需要更改此设置时才进行修改,因为某些外部工具或插" +"件可能使用默认的 [code].godot[/code] 文件夹,因此更改默认设置可能会影响它们的" +"使用。" + +msgid "" "Icon set in [code].ico[/code] format used on Windows to set the game's icon. " "This is done automatically on start by calling [method DisplayServer." "set_native_icon]." @@ -57193,6 +79167,31 @@ msgstr "" "用 [method DisplayServer.set_native_icon] 自动完成。" msgid "" +"If [code]true[/code], disables printing to standard error. If [code]true[/" +"code], this also hides error and warning messages printed by [method " +"@GlobalScope.push_error] and [method @GlobalScope.push_warning]. See also " +"[member application/run/disable_stdout].\n" +"Changes to this setting will only be applied upon restarting the application." +msgstr "" +"如果为 [code]true[/code],则禁用打印到标准错误。如果为 [code]true[/code],也" +"会隐藏由 [method @GlobalScope.push_error] 和 [method @GlobalScope." +"push_warning] 打印的错误和警告消息。另见 [member application/run/" +"disable_stdout]。\n" +"对该设置项的更改将只在重新启动应用程序后生效。" + +msgid "" +"If [code]true[/code], disables printing to standard output. This is " +"equivalent to starting the editor or project with the [code]--quiet[/code] " +"[url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line " +"argument[/url]. See also [member application/run/disable_stderr].\n" +"Changes to this setting will only be applied upon restarting the application." +msgstr "" +"如果为 [code]true[/code],则禁用打印到标准输出。相当于使用 [code]--quiet[/" +"code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]命令行参数[/" +"url]启动编辑器或项目。另见 [member application/run/disable_stderr]。\n" +"对该设置项的更改将只在重新启动应用程序后生效。" + +msgid "" "If [code]true[/code], flushes the standard output stream every time a line " "is printed. This affects both terminal logging and file logging.\n" "When running a project, this setting must be enabled if you want logs to be " @@ -57286,6 +79285,42 @@ msgstr "" "统。" msgid "" +"The base strength of the panning effect for all [AudioStreamPlayer2D] nodes. " +"The panning strength can be further scaled on each Node using [member " +"AudioStreamPlayer2D.panning_strength]. A value of [code]0.0[/code] disables " +"stereo panning entirely, leaving only volume attenuation in place. A value " +"of [code]1.0[/code] completely mutes one of the channels if the sound is " +"located exactly to the left (or right) of the listener.\n" +"The default value of [code]0.5[/code] is tuned for headphones. When using " +"speakers, you may find lower values to sound better as speakers have a lower " +"stereo separation compared to headphones." +msgstr "" +"所有 [AudioStreamPlayer2D] 节点的声像效果的基本强度。可以使用 [member " +"AudioStreamPlayer2D.panning_strength] 在每个节点上进一步缩放声像强度。" +"[code]0.0[/code] 的值会完全禁用立体声声像,只保留音量衰减。如果声音恰好位于听" +"者的左侧(或右侧),则 [code]1.0[/code] 的值会使其中一个通道完全静音。\n" +"[code]0.5[/code] 的默认值是针对耳机进行调谐的。当使用扬声器时,可能会发现较低" +"的值效果更好,因为与耳机相比,扬声器的立体声分离度较低。" + +msgid "" +"The base strength of the panning effect for all [AudioStreamPlayer3D] nodes. " +"The panning strength can be further scaled on each Node using [member " +"AudioStreamPlayer3D.panning_strength]. A value of [code]0.0[/code] disables " +"stereo panning entirely, leaving only volume attenuation in place. A value " +"of [code]1.0[/code] completely mutes one of the channels if the sound is " +"located exactly to the left (or right) of the listener.\n" +"The default value of [code]0.5[/code] is tuned for headphones. When using " +"speakers, you may find lower values to sound better as speakers have a lower " +"stereo separation compared to headphones." +msgstr "" +"所有 [AudioStreamPlayer3D] 节点的声像效果的基本强度。可以使用 [member " +"AudioStreamPlayer3D.panning_strength] 在每个节点上进一步缩放声像强度。" +"[code]0.0[/code] 的值会完全禁用立体声声像,只保留音量衰减。如果声音恰好位于听" +"者的左侧(或右侧),则 [code]1.0[/code] 的值会使其中一个通道完全静音。\n" +"[code]0.5[/code] 的默认值是针对耳机进行调谐的。当使用扬声器时,可能会发现较低" +"的值效果更好,因为与耳机相比,扬声器的立体声分离度较低。" + +msgid "" "Setting to hardcode audio delay when playing video. Best to leave this " "untouched unless you know what you are doing." msgstr "" @@ -57894,6 +79929,13 @@ msgstr "" "护程序不会接管。适用于桌面和移动平台。" msgid "" +"Editor-only override for [member display/window/energy_saving/" +"keep_screen_on]. Does not affect exported projects in debug or release mode." +msgstr "" +"[member display/window/energy_saving/keep_screen_on] 的编辑器覆盖项。不影响调" +"试模式和发布模式下导出的项目。" + +msgid "" "The default screen orientation to use on mobile devices. See [enum " "DisplayServer.ScreenOrientation] for possible values.\n" "[b]Note:[/b] When set to a portrait orientation, this project setting does " @@ -57908,6 +79950,13 @@ msgstr "" "display/window/size/viewport_height]。" msgid "" +"If [code]true[/code], iOS devices that support high refresh rate/" +"\"ProMotion\" will be allowed to render at up to 120 frames per second." +msgstr "" +"如果为 [code]true[/code],则允许支持高刷新率“ProMotion”的 iOS 设备以每秒 120 " +"帧的速度渲染。" + +msgid "" "If [code]true[/code], the home indicator is hidden automatically. This only " "affects iOS devices without a physical home button." msgstr "" @@ -58096,6 +80145,33 @@ msgstr "" "用 [method DisplayServer.window_set_vsync_mode]。" msgid "" +"Name of the .NET assembly. This name is used as the name of the [code]." +"csproj[/code] and [code].sln[/code] files. By default, it's set to the name " +"of the project ([member application/config/name]) allowing to change it in " +"the future without affecting the .NET assembly." +msgstr "" +".NET 程序集的名称。这个名称会被用作 [code].csproj[/code] 和 [code].sln[/" +"code] 文件的名称。默认情况下,它被设置为项目的名称([member application/" +"config/name]),这样将来进行修改时就不会影响 .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 " +"[code]project.godot[/code] and [code].csproj[/code] files.\n" +"Changing this value allows setting up a multi-project scenario where there " +"are multiple [code].csproj[/code]. Keep in mind that the Godot project is " +"considered one of the C# projects in the workspace and it's root directory " +"should contain the [code]project.godot[/code] and [code].csproj[/code] next " +"to each other." +msgstr "" +"包含 [code].sln[/code] 文件的目录。默认情况下,[code].sln[/code] 文件在项目目" +"录的根部,和 [code]project.godot[/code] 和 [code].csproj[/code] 文件在同一个" +"目录。\n" +"改变这个值可以设置包含多个 [code].csproj[/code] 的多项目方案。请记住,Godot " +"项目被认为是工作空间中的 C# 项目之一,根目录应该包含 [code]project.godot[/" +"code] 和[code].csproj[/code]。" + +msgid "" "If [code]true[/code], requests V-Sync to be disabled when writing a movie " "(similar to setting [member display/window/vsync/vsync_mode] to [b]Disabled[/" "b]). This can speed up video writing if the hardware is fast enough to " @@ -58187,6 +80263,12 @@ msgid "" msgstr "用什么来分隔节点名称和编号。这主要是一个编辑器的设置。" msgid "" +"When generating file names from scene root node, set the type of casing in " +"this project. This is mostly an editor setting." +msgstr "" +"根据场景根节点生成文件名时,设置这个项目中的大小写类型。主要是编辑器设置。" + +msgid "" "The command-line arguments to append to Godot's own command line when " "running the project. This doesn't affect the editor itself.\n" "It is possible to make another executable run Godot by using the " @@ -58241,6 +80323,20 @@ msgstr "" "置 Blender 可执行文件的路径。需要 Blender 3.0 或更高版本。" msgid "" +"Override for [member filesystem/import/blender/enabled] on Android where " +"Blender can't easily be accessed from Godot." +msgstr "" +"[member filesystem/import/blender/enabled] 在 Android 上的覆盖项,Godot 无法" +"轻易访问到 Blender。" + +msgid "" +"Override for [member filesystem/import/blender/enabled] on the Web where " +"Blender can't easily be accessed from Godot." +msgstr "" +"[member filesystem/import/blender/enabled] 在 Web 上的覆盖项,Godot 无法轻易" +"访问到 Blender。" + +msgid "" "If [code]true[/code], Autodesk FBX 3D scene files with the [code].fbx[/code] " "extension will be imported by converting them to glTF 2.0.\n" "This requires configuring a path to a FBX2glTF executable in the editor " @@ -58252,12 +80348,40 @@ msgstr "" "置 FBX2glTF 可执行文件的路径。" msgid "" +"Override for [member filesystem/import/fbx/enabled] on Android where " +"FBX2glTF can't easily be accessed from Godot." +msgstr "" +"[member filesystem/import/fbx/enabled] 在 Android 上的覆盖项,Godot 无法轻易" +"访问到 FBX2glTF。" + +msgid "" +"Override for [member filesystem/import/fbx/enabled] on the Web where " +"FBX2glTF can't easily be accessed from Godot." +msgstr "" +"[member filesystem/import/fbx/enabled] 在 Web 上的覆盖项,Godot 无法轻易访问" +"到 FBX2glTF。" + +msgid "" "Default value for [member ScrollContainer.scroll_deadzone], which will be " "used for all [ScrollContainer]s unless overridden." msgstr "" "[member ScrollContainer.scroll_deadzone],它将用于所有 [ScrollContainer],除" "非fug。" +msgid "" +"If [code]true[/code], swaps [b]Cancel[/b] and [b]OK[/b] buttons in dialogs " +"on Windows and UWP to follow interface conventions. [method DisplayServer." +"get_swap_cancel_ok] can be used to query whether buttons are swapped at run-" +"time.\n" +"[b]Note:[/b] This doesn't affect native dialogs such as the ones spawned by " +"[method DisplayServer.dialog_show]." +msgstr "" +"如果为 [code]true[/code] ,则会在 Windows 和 UWP 上交换对话框中的[b]确定[/b]" +"和[b]取消[/b]按钮,从而遵循界面规范。可以使用 [method DisplayServer." +"get_swap_cancel_ok] 查询运行时是否交换这两个按钮。\n" +"[b]注意:[/b]由 [method DisplayServer.dialog_show] 等生成的原生对话框不受影" +"响。" + msgid "Maximum undo/redo history size for [TextEdit] fields." msgstr "[TextEdit] 字段的最大撤销/重做历史大小。" @@ -58571,6 +80695,28 @@ msgstr "" "间切换。影响文本编辑控件([LineEdit]、[TextEdit])。" msgid "" +"If a selection is currently active with the last caret in text fields, " +"searches for the next occurrence of the selection, adds a caret and selects " +"the next occurrence.\n" +"If no selection is currently active with the last caret in text fields, " +"selects the word currently under the caret.\n" +"The action can be performed sequentially for all occurrences of the " +"selection of the last caret and for all existing carets.\n" +"The viewport is adjusted to the latest newly added caret.\n" +"[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " +"necessary for the internal logic of several [Control]s. The events assigned " +"to the action can however be modified." +msgstr "" +"如果文本字段的最近一个光标处存在选中的文本,则会搜索所选内容下一次出现的位" +"置,在那个位置添加一个光标,然后选中该处的内容。\n" +"如果文本字段的最近一个光标处没有选中文本,则会选中当前光标下的单词。\n" +"该动作可以连续执行,选中最近一个光标所选文本的所有出现位置,所有现存光标均适" +"用。\n" +"视口会根据最近新添加的文本光标进行调整。\n" +"[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" +"的,无法删除。但是可以修改分配给该动作的事件。" + +msgid "" "Default [InputEventAction] to delete the character before the text cursor.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " "necessary for the internal logic of several [Control]s. The events assigned " @@ -58592,6 +80738,11 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"macOS specific override for the shortcut to delete all text before the text " +"cursor." +msgstr "针对 macOS 的快捷键覆盖项,对应删除文本光标前所有文本的快捷键。" + +msgid "" "Default [InputEventAction] to delete all characters before the cursor up " "until a whitespace or punctuation character.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " @@ -58602,6 +80753,9 @@ msgstr "" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" +msgid "macOS specific override for the shortcut to delete a word." +msgstr "针对 macOS 的快捷键覆盖项,对应删除单词的快捷键。" + msgid "" "Default [InputEventAction] to add an additional caret above every caret of a " "text." @@ -58609,7 +80763,7 @@ msgstr "默认 [InputEventAction],用于在文本中各个光标上方再添 msgid "" "macOS specific override for the shortcut to add a caret above every caret." -msgstr "macOS 特有的用于在每个光标上方添加一个光标的快捷键的覆盖。" +msgstr "针对 macOS 的快捷键覆盖项,对应在各个光标上方再添加一个光标的快捷键。" msgid "" "Default [InputEventAction] to add an additional caret below every caret of a " @@ -58618,7 +80772,7 @@ msgstr "默认 [InputEventAction],用于在文本中各个光标下方再添 msgid "" "macOS specific override for the shortcut to add a caret below every caret." -msgstr "macOS 特有的用于在每个光标下方添加一个光标的快捷键的覆盖。" +msgstr "针对 macOS 的快捷键覆盖项,对应在各个光标下方再添加一个光标的快捷键。" msgid "" "Default [InputEventAction] to move the text cursor the the end of the text.\n" @@ -58631,6 +80785,11 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"macOS specific override for the shortcut to move the text cursor to the end " +"of the text." +msgstr "针对 macOS 的快捷键覆盖项,对应将文本光标移动到文本末尾的快捷键。" + +msgid "" "Default [InputEventAction] to move the text cursor to the start of the " "text.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " @@ -58642,6 +80801,11 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"macOS specific override for the shortcut to move the text cursor to the " +"start of the text." +msgstr "针对 macOS 的快捷键覆盖项,对应将文本光标移动到文本开头的快捷键。" + +msgid "" "Default [InputEventAction] to move the text cursor down.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " "necessary for the internal logic of several [Control]s. The events assigned " @@ -58672,6 +80836,11 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"macOS specific override for the shortcut to move the text cursor to the end " +"of the line." +msgstr "针对 macOS 的快捷键覆盖项,对应将文本光标移动到改行末尾的快捷键。" + +msgid "" "Default [InputEventAction] to move the text cursor to the start of the " "line.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " @@ -58683,6 +80852,11 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"macOS specific override for the shortcut to move the text cursor to the " +"start of the line." +msgstr "针对 macOS 的快捷键覆盖项,对应将文本光标移动到改行开头的快捷键。" + +msgid "" "Default [InputEventAction] to move the text cursor down one page.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " "necessary for the internal logic of several [Control]s. The events assigned " @@ -58734,6 +80908,11 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"macOS specific override for the shortcut to move the text cursor back one " +"word." +msgstr "针对 macOS 的快捷键覆盖项,对应将文本光标向后移动一个单词的快捷键。" + +msgid "" "Default [InputEventAction] to move the text cursor right to the next " "whitespace or punctuation.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " @@ -58745,6 +80924,11 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"macOS specific override for the shortcut to move the text cursor forward one " +"word." +msgstr "针对 macOS 的快捷键覆盖项,对应将文本光标向前移动一个单词的快捷键。" + +msgid "" "If there's only one caret active and with a selection, clears the " "selection.\n" "In case there's more than one caret active, removes the secondary carets and " @@ -58820,6 +81004,11 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"macOS specific override for the shortcut to delete all text after the text " +"cursor." +msgstr "针对 macOS 的快捷键覆盖项,对应删除文本光标后所有文本的快捷键。" + +msgid "" "Default [InputEventAction] to delete all characters after the cursor up " "until a whitespace or punctuation character.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " @@ -58831,6 +81020,11 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"macOS specific override for the shortcut to delete a word after the text " +"cursor." +msgstr "针对 macOS 的快捷键覆盖项,对应删除文本光标前的单词的快捷键。" + +msgid "" "Default [InputEventAction] to indent the current line.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " "necessary for the internal logic of several [Control]s. The events assigned " @@ -58881,6 +81075,9 @@ msgstr "" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" +msgid "macOS specific override for the shortcut to scroll down one line." +msgstr "针对 macOS 的快捷键覆盖项,对应向下滚动一行的快捷键。" + msgid "" "Default [InputEventAction] to scroll up one line of text.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " @@ -58891,6 +81088,9 @@ msgstr "" "[b]注意:[/b]默认的 [code]ui_*[/code] 动作是部分 [Control] 的内部逻辑所必需" "的,无法删除。但是可以修改分配给该动作的事件。" +msgid "macOS specific override for the shortcut to scroll up one line." +msgstr "针对 macOS 的快捷键覆盖项,对应向上滚动一行的快捷键。" + msgid "" "Default [InputEventAction] to select all text.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " @@ -58902,6 +81102,11 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"macOS specific override for the shortcut to select the word currently under " +"the caret." +msgstr "针对 macOS 的快捷键覆盖项,对应选中光标处单词的快捷键。" + +msgid "" "Default [InputEventAction] to submit a text field.\n" "[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are " "necessary for the internal logic of several [Control]s. The events assigned " @@ -58945,6 +81150,18 @@ msgstr "" "的,无法删除。但是可以修改分配给该动作的事件。" msgid "" +"Specifies the tablet driver to use. If left empty, the default driver will " +"be used.\n" +"[b]Note:[/b] The driver in use can be overridden at runtime via the [code]--" +"tablet-driver[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial." +"html]command line argument[/url]." +msgstr "" +"指定要使用的平板驱动。如果留空,则会使用默认驱动。\n" +"[b]注意:[/b]所使用的驱动可以通过 [code]--tablet-driver[/code] " +"[url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]命令行参数[/url]在" +"运行时进行覆盖。" + +msgid "" "If [code]true[/code], sends mouse input events when tapping or swiping on " "the touchscreen." msgstr "如果为 [code]true[/code],则在点击或滑动触摸屏时发送鼠标输入事件。" @@ -58973,6 +81190,34 @@ msgid "Suffix that will be appended to the pseudolocalized string." msgstr "将被追加到伪本地化字符串的后缀。" msgid "" +"Specifies the [TextServer] to use. If left empty, the default will be used.\n" +"\"ICU / HarfBuzz / Graphite\" is the most advanced text driver, supporting " +"right-to-left typesetting and complex scripts (for languages like Arabic, " +"Hebrew, etc). The \"Fallback\" text driver does not support right-to-left " +"typesetting and complex scripts.\n" +"[b]Note:[/b] The driver in use can be overridden at runtime via the [code]--" +"text-driver[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial." +"html]command line argument[/url].\n" +"[b]Note:[/b] There is an additional [code]Dummy[/code] text driver " +"available, which disables all text rendering and font-related functionality. " +"This driver is not listed in the project settings, but it can be enabled " +"when running the editor or project using the [code]--text-driver Dummy[/" +"code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command " +"line argument[/url]." +msgstr "" +"指定要使用的 [TextServer]。如果留空,则会使用默认服务器。\n" +"“ICU / HarfBuzz / Graphite”是最先进的文本驱动,支持从右至左的排版和复杂文字" +"(用于阿拉伯语、希伯来语等语言)。“Fallback”文本驱动不支持从右至左的排版和复" +"杂文字。\n" +"[b]注意:[/b]在运行时可以通过 [code]--text-driver[/code] [url=$DOCS_URL/" +"tutorials/editor/command_line_tutorial.html]命令行参数[/url]覆盖使用的驱动程" +"序。\n" +"[b]注意:[/b]另外还提供了 [code]Dummy[/code] 文本驱动,它禁用了所有文本渲染和" +"字体相关的功能。这个驱动没有在项目设置中列出,但可以在运行编辑器或项目时使用 " +"[code]--text-driver Dummy[/code] [url=$DOCS_URL/tutorials/editor/" +"command_line_tutorial.html]命令行参数[/url]启用。" + +msgid "" "Optional name for the 2D navigation layer 1. If left empty, the layer will " "display as \"Layer 1\"." msgstr "2D 导航层 1 的可选名称。留空则会显示为“层 1”。" @@ -60399,6 +82644,16 @@ msgstr "" "屏幕空间环境光遮蔽将以全尺寸渲染。" msgid "" +"Sets the quality of the screen-space ambient occlusion effect. Higher values " +"take more samples and so will result in better quality, at the cost of " +"performance. Setting to [code]Ultra[/code] will use the [member rendering/" +"environment/ssao/adaptive_target] setting." +msgstr "" +"设置屏幕空间环境光遮蔽效果的质量。值越高,采样数量越多,因此最终的质量也越" +"高,但代价是消耗性能。设为 [code]Ultra[/code] 会使用 [member rendering/" +"environment/ssao/adaptive_target] 设置。" + +msgid "" "Quality target to use when [member rendering/environment/ssil/quality] is " "set to [code]Ultra[/code]. A value of [code]0.0[/code] provides a quality " "and speed similar to [code]Medium[/code] while a value of [code]1.0[/code] " @@ -60444,6 +82699,16 @@ msgstr "" "情况。" msgid "" +"Sets the quality of the screen-space indirect lighting effect. Higher values " +"take more samples and so will result in better quality, at the cost of " +"performance. Setting to [code]Ultra[/code] will use the [member rendering/" +"environment/ssil/adaptive_target] setting." +msgstr "" +"设置屏幕空间间接照明效果的质量。值越高,采样数量越多,因此最终的质量也越高," +"但代价是消耗性能。设为 [code]Ultra[/code] 会使用 [member rendering/" +"environment/ssil/adaptive_target] 设置。" + +msgid "" "Sets the driver to be used by the renderer when using the Compatibility " "renderer. This property can not be edited directly, instead, set the driver " "using the platform-specific overrides." @@ -60481,6 +82746,66 @@ msgstr "" "象都在同一帧中被绘制,请提高这个限制。" msgid "" +"The number of rays to use for baking dynamic object lighting in " +"[LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI." +"BAKE_QUALITY_HIGH]." +msgstr "" +"当 [member LightmapGI.quality] 为 [constant LightmapGI.BAKE_QUALITY_HIGH] " +"时,用于在 [LightmapProbe] 中烘焙动态对象光照的光线数。" + +msgid "" +"The number of rays to use for baking lightmaps with [LightmapGI] when " +"[member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_HIGH]." +msgstr "" +"当 [member LightmapGI.quality] 为 [constant LightmapGI.BAKE_QUALITY_HIGH] " +"时,用于使用 [LightmapGI] 烘焙光照贴图的光线数。" + +msgid "" +"The number of rays to use for baking dynamic object lighting in " +"[LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI." +"BAKE_QUALITY_LOW]." +msgstr "" +"当 [member LightmapGI.quality] 为 [constant LightmapGI.BAKE_QUALITY_LOW] 时," +"用于在 [LightmapProbe] 中烘焙动态对象光照的光线数。" + +msgid "" +"The number of rays to use for baking lightmaps with [LightmapGI] when " +"[member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_LOW]." +msgstr "" +"当 [member LightmapGI.quality] 为 [constant LightmapGI.BAKE_QUALITY_LOW] 时," +"用于使用 [LightmapGI] 烘焙光照贴图的光线数。" + +msgid "" +"The number of rays to use for baking dynamic object lighting in " +"[LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI." +"BAKE_QUALITY_MEDIUM]." +msgstr "" +"当 [member LightmapGI.quality] 为 [constant LightmapGI.BAKE_QUALITY_MEDIUM] " +"时,用于在 [LightmapProbe] 中烘焙动态对象光照的光线数。" + +msgid "" +"The number of rays to use for baking lightmaps with [LightmapGI] when " +"[member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_MEDIUM]." +msgstr "" +"当 [member LightmapGI.quality] 为 [constant LightmapGI.BAKE_QUALITY_MEDIUM] " +"时,用于使用 [LightmapGI] 烘焙光照贴图的光线数。" + +msgid "" +"The number of rays to use for baking dynamic object lighting in " +"[LightmapProbe]s when [member LightmapGI.quality] is [constant LightmapGI." +"BAKE_QUALITY_ULTRA]." +msgstr "" +"当 [member LightmapGI.quality] 为 [constant LightmapGI.BAKE_QUALITY_ULTRA] " +"时,用于在 [LightmapProbe] 中烘焙动态对象光照的光线数。" + +msgid "" +"The number of rays to use for baking lightmaps with [LightmapGI] when " +"[member LightmapGI.quality] is [constant LightmapGI.BAKE_QUALITY_ULTRA]." +msgstr "" +"当 [member LightmapGI.quality] 为 [constant LightmapGI.BAKE_QUALITY_ULTRA] " +"时,用于使用 [LightmapGI] 烘焙光照贴图的光线数。" + +msgid "" "The directional shadow's size in pixels. Higher values will result in " "sharper shadows, at the cost of performance. The value will be rounded up to " "the nearest power of 2." @@ -60510,6 +82835,11 @@ msgid "" msgstr "阴影贴图的细分象限大小。请参阅阴影映射文档。" msgid "" +"Size for shadow atlas (used for OmniLights and SpotLights). See " +"documentation." +msgstr "阴影图集的大小(用于 OmniLight 和 SpotLight)。请参阅文档。" + +msgid "" "Lower-end override for [member rendering/lights_and_shadows/" "positional_shadow/atlas_size] on mobile devices, due to performance concerns " "or driver support." @@ -60669,6 +82999,31 @@ msgstr "" "Compatibility 无效。如果使用不兼容的渲染方法,FSR 将回退到双线性缩放。" msgid "" +"Scales the 3D render buffer based on the viewport size uses an image filter " +"specified in [member rendering/scaling_3d/mode] to scale the output image to " +"the full viewport size. Values lower than [code]1.0[/code] can be used to " +"speed up 3D rendering at the cost of quality (undersampling). Values greater " +"than [code]1.0[/code] are only valid for bilinear mode and can be used to " +"improve 3D rendering quality at a high performance cost (supersampling). See " +"also [member rendering/anti_aliasing/quality/msaa_3d] for multi-sample " +"antialiasing, which is significantly cheaper but only smooths the edges of " +"polygons." +msgstr "" +"根据视口大小缩放 3D 渲染缓冲区,使用 [member rendering/scaling_3d/mode] 中指" +"定的图像过滤器将输出图像缩放至完整的视口大小。比 [code]1.0[/code] 小的值可以" +"牺牲质量(欠采样)换取更高的 3D 渲染速度。比 [code]1.0[/code] 大的值仅对双线" +"性模式有效,可以大幅牺牲性能(超采样)换取 3D 渲染质量的提升。另见 [member " +"rendering/anti_aliasing/quality/msaa_3d] 多重采样抗锯齿,性能成本显著降低,但" +"仅平滑多边形的边缘。" + +msgid "" +"Enable the shader cache, which stores compiled shaders to disk to prevent " +"stuttering from shader compilation the next time the shader is needed." +msgstr "" +"启用着色器缓存,编译后的着色器会存储在磁盘上,防止在下次需要该着色器时因为编" +"译着色器而带来卡顿。" + +msgid "" "If [code]true[/code], uses faster but lower-quality Lambert material " "lighting model instead of Burley." msgstr "" @@ -60723,6 +83078,61 @@ msgstr "" "如果为 [code]true[/code],纹理导入器将使用 PNG 格式导入无损纹理。否则默认使" "用 WebP。" +msgid "" +"The default compression factor for lossless WebP. Decompression speed is " +"mostly unaffected by the compression factor. Supported values are 0 to 100." +msgstr "" +"无损 WebP 的默认压缩系数。解压速度通常不受压缩系数的影响。支持的值为 0 到 " +"100。" + +msgid "" +"If [code]true[/code], enables [member Viewport.transparent_bg] on the root " +"viewport. This allows per-pixel transparency to be effective after also " +"enabling [member display/window/size/transparent] and [member display/window/" +"per_pixel_transparency/allowed]." +msgstr "" +"如果为 [code]true[/code] ,则在根视口上启用 [member Viewport." +"transparent_bg] 。这样在同时启用 [member display/window/size/transparent] 和 " +"[member display/window/per_pixel_transparency/allowed] 之后,逐像素透明就会生" +"效。" + +msgid "" +"If [member rendering/vrs/mode] is set to [b]Texture[/b], this is the path to " +"default texture loaded as the VRS image.\n" +"The texture [i]must[/i] use a lossless compression format so that colors can " +"be matched precisely. The following VRS densities are mapped to various " +"colors, with brighter colors representing a lower level of shading " +"precision:\n" +"[codeblock]\n" +"- 1x1 = rgb(0, 0, 0) - #000000\n" +"- 1x2 = rgb(0, 85, 0) - #005500\n" +"- 2x1 = rgb(85, 0, 0) - #550000\n" +"- 2x2 = rgb(85, 85, 0) - #555500\n" +"- 2x4 = rgb(85, 170, 0) - #55aa00\n" +"- 4x2 = rgb(170, 85, 0) - #aa5500\n" +"- 4x4 = rgb(170, 170, 0) - #aaaa00\n" +"- 4x8 = rgb(170, 255, 0) - #aaff00 - Not supported on most hardware\n" +"- 8x4 = rgb(255, 170, 0) - #ffaa00 - Not supported on most hardware\n" +"- 8x8 = rgb(255, 255, 0) - #ffff00 - Not supported on most hardware\n" +"[/codeblock]" +msgstr "" +"如果 [member rendering/vrs/mode] 为 [b]Texture[/b],则这是 VRS 图像所加载的默" +"认纹理的路径。\n" +"该纹理[i]必须[/i]使用无损压缩格式,以便可以精确匹配颜色。以下 VRS 密度会映射" +"为各种颜色,较亮的颜色代表较低的着色精度。\n" +"[codeblock]\n" +"- 1x1 = rgb(0, 0, 0) - #000000\n" +"- 1x2 = rgb(0, 85, 0) - #005500\n" +"- 2x1 = rgb(85, 0, 0) - #550000\n" +"- 2x2 = rgb(85, 85, 0) - #555500\n" +"- 2x4 = rgb(85, 170, 0) - #55aa00\n" +"- 4x2 = rgb(170, 85, 0) - #aa5500\n" +"- 4x4 = rgb(170, 170, 0) - #aaaa00\n" +"- 4x8 = rgb(170, 255, 0) - #aaff00 - 大多数硬件不支持\n" +"- 8x4 = rgb(255, 170, 0) - #ffaa00 - 大多数硬件不支持\n" +"- 8x8 = rgb(255, 255, 0) - #ffff00 - 大多数硬件不支持\n" +"[/codeblock]" + msgid "Action map configuration to load by default." msgstr "默认加载的动作映射配置。" @@ -61056,6 +83466,13 @@ msgstr "" "例请参考 [ScrollBar] 和 [Slider]。" msgid "" +"Sets the [Range]'s current value to the specified [param value], without " +"emitting the [signal value_changed] signal." +msgstr "" +"将 [Range] 的当前值设置为指定的 [param value] 而不发出 [signal " +"value_changed] 信号。" + +msgid "" "Binds two [Range]s together along with any ranges previously grouped with " "either of them. When any of range's member variables change, it will share " "the new value with all other ranges in its group." @@ -61122,6 +83539,15 @@ msgstr "" "四舍五入为 [code]step[/code] 的倍数,然后舍入为最近的整数。" msgid "" +"Range's current value. Changing this property (even via code) will trigger " +"[signal value_changed] signal. Use [method set_value_no_signal] if you want " +"to avoid it." +msgstr "" +"Range 的当前值。更改这个属性(即便是通过代码修改的)会触发 [signal " +"value_changed] 信号。如果你想避免触发信号,请使用 [method " +"set_value_no_signal]。" + +msgid "" "Emitted when [member min_value], [member max_value], [member page], or " "[member step] change." msgstr "" @@ -61245,6 +83671,15 @@ msgstr "" "撞法线将为 [code]Vector3(0, 0, 0)[/code]。不会影响无体积的形状,如凹多边形和" "高度图。" +msgid "2D axis-aligned bounding box using floating point coordinates." +msgstr "使用浮点数坐标的 2D 轴对齐边界框。" + +msgid "" +"Constructs a default-initialized [Rect2] with default (zero) values of " +"[member position] and [member size]." +msgstr "" +"默认构造 [Rect2],[member position] 和 [member size] 均为默认值(零)。" + msgid "Constructs a [Rect2] as a copy of the given [Rect2]." msgstr "构造给定 [Rect2] 的副本。" @@ -61262,8 +83697,8 @@ msgid "" "top-left corner is the origin and [code]width[/code] and [code]height[/code] " "are positive." msgstr "" -"返回具有相同位置和面积的 [Rect2],经过修改,使左上角为原点,[code]width[/" -"code] 和 [code]height[/code] 为正数。" +"返回具有等效位置和面积的 [Rect2],该矩形将左上角修改为原点,将 [code]width[/" +"code] 和 [code]height[/code] 修改为正数。" msgid "" "Returns [code]true[/code] if this [Rect2] completely encloses another one." @@ -61313,6 +83748,23 @@ msgid "" msgstr "返回该 [Rect2] 的中心,等于 [member position] + ([member size] / 2)。" msgid "" +"Returns a copy of the [Rect2] grown by the specified [param amount] on all " +"sides." +msgstr "返回该 [Rect2] 的副本,该副本的所有边都增长了指定的量 [param amount]。" + +msgid "" +"Returns a copy of the [Rect2] grown by the specified amount on each side " +"individually." +msgstr "返回该 [Rect2] 的副本,该副本的各个边都增长了指定的量。" + +msgid "" +"Returns a copy of the [Rect2] grown by the specified [param amount] on the " +"specified [enum Side]." +msgstr "" +"返回该 [Rect2] 的副本,该副本的指定边 [enum Side] 增长了指定的量 [param " +"amount]。" + +msgid "" "Returns [code]true[/code] if the [Rect2] has area, and [code]false[/code] if " "the [Rect2] is linear, empty, or has a negative [member size]. See also " "[method get_area]." @@ -61335,6 +83787,13 @@ msgstr "" "abs] 获取等价的正数大小矩形再检查是否包含某个点。" msgid "" +"Returns the intersection of this [Rect2] and [param b].\n" +"If the rectangles do not intersect, an empty [Rect2] is returned." +msgstr "" +"返回该 [Rect2] 和 [param b] 的交集。\n" +"如果矩形不相交,将返回空的 [Rect2]。" + +msgid "" "Returns [code]true[/code] if the [Rect2] overlaps with [code]b[/code] (i.e. " "they have at least one point in common).\n" "If [param include_borders] is [code]true[/code], they will also be " @@ -61359,6 +83818,9 @@ msgstr "" "如果该 [Rect2] 是有限的,则返回 [code]true[/code],判断方法是在每个分量上调" "用 [method @GlobalScope.is_finite]。" +msgid "Returns a larger [Rect2] that contains this [Rect2] and [param b]." +msgstr "返回包含这个 [Rect2] 和 [param b] 的更大的 [Rect2]。" + msgid "" "Returns [code]true[/code] if the rectangles are not equal.\n" "[b]Note:[/b] Due to floating-point precision errors, consider using [method " @@ -61377,6 +83839,15 @@ msgstr "" "[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" "靠。" +msgid "2D axis-aligned bounding box using integer coordinates." +msgstr "使用整数坐标的 2D 轴对齐边界框。" + +msgid "" +"Constructs a default-initialized [Rect2i] with default (zero) values of " +"[member position] and [member size]." +msgstr "" +"默认构造 [Rect2i],[member position] 和 [member size] 均为默认值(零)。" + msgid "Constructs a [Rect2i] as a copy of the given [Rect2i]." msgstr "构造给定 [Rect2i] 的副本。" @@ -61392,6 +83863,18 @@ msgid "Constructs a [Rect2i] by x, y, width, and height." msgstr "按 x、y、宽度和高度构造 [Rect2i]。" msgid "" +"Returns a [Rect2i] with equivalent position and area, modified so that the " +"top-left corner is the origin and [code]width[/code] and [code]height[/code] " +"are positive." +msgstr "" +"返回具有等效位置和面积的 [Rect2i],该矩形将左上角修改为原点,将 [code]width[/" +"code] 和 [code]height[/code] 修改为正数。" + +msgid "" +"Returns [code]true[/code] if this [Rect2i] completely encloses another one." +msgstr "如果该 [Rect2i] 完全包含另一个,则返回 [code]true[/code]。" + +msgid "" "Returns a copy of this [Rect2i] expanded so that the borders align with the " "given point.\n" "[codeblocks]\n" @@ -61461,7 +83944,19 @@ msgid "Returns [code]true[/code] if the rectangles are equal." msgstr "如果矩形相等,则返回 [code]true[/code]。" msgid "Rectangle shape resource for 2D physics." -msgstr "矩形形状资源,用于 2D 物理。" +msgstr "用于 2D 物理的矩形形状资源。" + +msgid "" +"2D rectangle shape to be added as a [i]direct[/i] child of a [PhysicsBody2D] " +"or [Area2D] using a [CollisionShape2D] node. This shape is useful for " +"modeling box-like 2D objects.\n" +"[b]Performance:[/b] Being a primitive collision shape, [RectangleShape2D] is " +"fast to check collisions against (though not as fast as [CircleShape2D])." +msgstr "" +"使用 [CollisionShape2D] 节点作为 [PhysicsBody2D] 或 [Area2D] 的[i]直接[/i]子" +"节点时,可被添加的 2D 矩形形状。该形状对于建模类似盒子的 2D 对象很有用。\n" +"[b]性能:[/b]作为一种原始的碰撞形状,[RectangleShape2D] 可以快速检测碰撞(尽" +"管不如 [CircleShape2D] 快)。" msgid "The rectangle's width and height." msgstr "该矩形的宽度和高度。" @@ -61575,6 +84070,9 @@ msgstr "" "须在网格上增加 [member GeometryInstance3D.extra_cull_margin]。否则,反射探针" "可能在网格上不可见。" +msgid "Reflection probes" +msgstr "反射探针" + msgid "" "If [code]true[/code], enables box projection. This makes reflections look " "more correct in rectangle-shaped rooms by offsetting the reflection center " @@ -61600,6 +84098,9 @@ msgid "" "reflection." msgstr "定义反射强度。" +msgid "If [code]true[/code], reflections will ignore sky contribution." +msgstr "如果为 [code]true[/code],则反射将忽略天空的贡献。" + msgid "" "Sets how frequently the [ReflectionProbe] is updated. Can be [constant " "UPDATE_ONCE] or [constant UPDATE_ALWAYS]." @@ -61797,6 +84298,24 @@ msgid "" msgstr "与搜索模式一起使用的源字符串,以找到这个匹配结果。" msgid "" +"RemoteTransform2D pushes its own [Transform2D] to another [Node2D] derived " +"node in the scene." +msgstr "" +"RemoteTransform2D 会将自己的 [Transform2D] 推送到场景中另一个派生自 " +"[CanvasItem] 的节点。" + +msgid "" +"RemoteTransform2D pushes its own [Transform2D] to another [Node2D] derived " +"node (called the remote node) in the scene.\n" +"It can be set to update another node's position, rotation and/or scale. It " +"can use either global or local coordinates." +msgstr "" +"RemoteTransform2D 会将自己的 [Transform2D] 推送到场景中另一个派生自 " +"[CanvasItem] 的节点(称为远程节点)。\n" +"可以设置更新另一个节点的位置、旋转和/或比例。可以使用全局坐标,也可以使用局部" +"坐标。" + +msgid "" "[RemoteTransform2D] caches the remote node. It may not notice if the remote " "node disappears; [method force_update_cache] forces it to update the cache " "again." @@ -61825,6 +84344,37 @@ msgstr "" "如果为 [code]true[/code],则使用全局坐标。如果 [code]false[/code],则使用本地" "坐标。" +msgid "" +"RemoteTransform3D pushes its own [Transform3D] to another [Node3D] derived " +"Node in the scene." +msgstr "" +"RemoteTransform3D 会将自己的 [Transform3D] 推送到场景中另一个派生自 [Node3D] " +"的节点。" + +msgid "" +"RemoteTransform3D pushes its own [Transform3D] to another [Node3D] derived " +"Node (called the remote node) in the scene.\n" +"It can be set to update another Node's position, rotation and/or scale. It " +"can use either global or local coordinates." +msgstr "" +"RemoteTransform3D 会将自己的 [Transform3D] 推送到场景中另一个派生自 [Node3D] " +"的节点(称为远程节点)。\n" +"可以设置更新另一个 Node 的位置、旋转和/或比例。可以使用全局坐标,也可以使用局" +"部坐标。" + +msgid "" +"[RemoteTransform3D] caches the remote node. It may not notice if the remote " +"node disappears; [method force_update_cache] forces it to update the cache " +"again." +msgstr "" +"[RemoteTransform3D] 缓存了远程节点。如果远程节点消失了,它可能不会通知;" +"[method force_update_cache] 强制它再次更新缓存。" + +msgid "" +"The [NodePath] to the remote node, relative to the RemoteTransform3D's " +"position in the scene." +msgstr "到远程节点的 [NodePath],相对于 RemoteTransform3D 在场景中的位置。" + msgid "Abstraction for working with modern low-level graphics APIs." msgstr "用于处理现代低阶图形 API 的抽象。" @@ -62136,9 +84686,6 @@ msgstr "" msgid "Clears the [CanvasItem] and removes all commands in it." msgstr "清除[CanvasItem]并删除其中的所有命令。" -msgid "Creates a new [CanvasItem] instance and returns its [RID]." -msgstr "新建 [CanvasItem] 实例并返回其 [RID]。" - msgid "Sets the [CanvasItem] to copy a rect to the backbuffer." msgstr "设置 [CanvasItem] 以将矩形复制到后台缓冲区。" @@ -62152,6 +84699,14 @@ msgid "Sets if the [CanvasItem] uses its parent's material." msgstr "设置 [CanvasItem] 是否使用其父级的材质。" msgid "" +"Sets the rendering visibility layer associated with this [CanvasItem]. Only " +"[Viewport] nodes with a matching rendering mask will render this " +"[CanvasItem]." +msgstr "" +"设置与这个 [CanvasItem] 关联的渲染可见性层。只有渲染掩码与此匹配的 " +"[Viewport] 节点才会渲染这个 [CanvasItem]。" + +msgid "" "If this is enabled, the Z index of the parent will be added to the " "children's Z index." msgstr "如果启用此选项,则父项的 Z 索引将添加到子项的 Z 索引中。" @@ -62167,6 +84722,18 @@ msgid "" msgstr "将画布灯连接到画布上,并将其从以前的画布中取出。" msgid "" +"Creates a canvas light and adds it to the RenderingServer. It can be " +"accessed with the RID that is returned. This RID will be used in all " +"[code]canvas_light_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method." +msgstr "" +"创建画布灯光并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在所有 [code]canvas_light_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。" + +msgid "" "Attaches a light occluder to the canvas. Removes it from its previous canvas." msgstr "将光遮挡物添加到画布上,并将其从之前的画布中移除。" @@ -62252,6 +84819,19 @@ msgstr "" "[member Light2D.range_z_max]。" msgid "" +"Creates a new light occluder polygon and adds it to the RenderingServer. It " +"can be accessed with the RID that is returned. This RID will be used in all " +"[code]canvas_occluder_polygon_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method." +msgstr "" +"新建一个光线遮挡多边形并将其添加到 RenderingServer。可以通过返回的 RID 进行访" +"问。这个 RID 会在所有 [code]canvas_occluder_polygon_*[/code] RenderingServer " +"函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。" + +msgid "" "Sets an occluder polygons cull mode. See [enum " "CanvasOccluderPolygonCullMode] constants." msgstr "设置遮挡多边形剔除模式。详见 [enum CanvasOccluderPolygonCullMode] 。" @@ -62268,6 +84848,18 @@ msgid "Modulates all colors in the given canvas." msgstr "调制给定画布中的所有颜色。" msgid "" +"Creates a RenderingDevice that can be used to do draw and compute operations " +"on a separate thread. Cannot draw to the screen nor share data with the " +"global RenderingDevice.\n" +"[b]Note:[/b] When using the OpenGL backend or when running in headless mode, " +"this function always returns [code]null[/code]." +msgstr "" +"创建一个 RenderingDevice,可以用来在单独的线程上进行绘制和计算操作。不能绘制" +"到屏幕上,也不能与全局的 RenderingDevice 共享数据。\n" +"[b]注意:[/b]使用 OpenGL 后端或在无头模式下运行时,这个函数始终返回 " +"[code]null[/code] 。" + +msgid "" "Sets the values to be used with the \"Adjustment\" post-process effect. See " "[Environment] for more details." msgstr "设置用于 \"调整 \"后处理效果的数值。参阅[Environment]以了解更多细节。" @@ -62290,6 +84882,25 @@ msgid "Sets the maximum layer to use if using Canvas background mode." msgstr "如果使用画布背景模式,设置要使用的最大层数。" msgid "" +"Sets the variables to be used with the screen-space ambient occlusion (SSAO) " +"post-process effect. See [Environment] for more details." +msgstr "" +"设置屏幕空间环境光遮蔽(SSAO)后期处理效果所使用的变量。详情见 " +"[Environment]。" + +msgid "" +"Sets the quality level of the screen-space ambient occlusion (SSAO) post-" +"process effect. See [Environment] for more details." +msgstr "" +"设置屏幕空间环境光遮蔽(SSAO)后期处理效果的质量级别。详情见 [Environment]。" + +msgid "" +"Sets the quality level of the screen-space indirect lighting (SSIL) post-" +"process effect. See [Environment] for more details." +msgstr "" +"设置屏幕空间间接照明(SSIL)后期处理效果的质量级别。详情见 [Environment]。" + +msgid "" "Sets the variables to be used with the \"screen space reflections\" post-" "process effect. See [Environment] for more details." msgstr "设置用于“屏幕空间反射”后处理效果的变量。详情请参阅 [Environment]。" @@ -62299,6 +84910,42 @@ msgid "" "[Environment] for more details." msgstr "设置用于“色调映射”后处理效果的变量。详情请参阅 [Environment]。" +msgid "" +"Sets the [Material] of the fog volume. Can be either a [FogMaterial] or a " +"custom [ShaderMaterial]." +msgstr "" +"设置该雾体积的 [Material]。可以是 [FogMaterial],也可以是自定义的 " +"[ShaderMaterial]。" + +msgid "" +"Sets the shape of the fog volume to either [constant RenderingServer." +"FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer." +"FOG_VOLUME_SHAPE_CONE], [constant RenderingServer." +"FOG_VOLUME_SHAPE_CYLINDER], [constant RenderingServer.FOG_VOLUME_SHAPE_BOX] " +"or [constant RenderingServer.FOG_VOLUME_SHAPE_WORLD]." +msgstr "" +"将雾体积的形状设置为 [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID]、" +"[constant RenderingServer.FOG_VOLUME_SHAPE_CONE]、[constant RenderingServer." +"FOG_VOLUME_SHAPE_CYLINDER]、[constant RenderingServer.FOG_VOLUME_SHAPE_BOX] " +"或 [constant RenderingServer.FOG_VOLUME_SHAPE_WORLD]。" + +msgid "Tries to free an object in the RenderingServer." +msgstr "尝试释放 RenderingServer 中的某个对象。" + +msgid "" +"Returns the default clear color which is used when a specific clear color " +"has not been selected." +msgstr "返回未选择特定清除颜色时所使用的默认清除颜色。" + +msgid "" +"Returns the global RenderingDevice.\n" +"[b]Note:[/b] When using the OpenGL backend or when running in headless mode, " +"this function always returns [code]null[/code]." +msgstr "" +"返回全局的 RenderingDevice。\n" +"[b]注意:[/b]当使用 OpenGL 后端或在无头模式下运行时,这个函数始终返回 " +"[code]null[/code]。" + msgid "Returns the parameters of a shader." msgstr "返回着色器的参数。" @@ -62341,10 +84988,24 @@ msgstr "" msgid "Returns the ID of a white texture. Creates one if none exists." msgstr "返回白色纹理的 ID。如果不存在,则创建一个。" +msgid "" +"Returns [code]true[/code] if changes have been made to the RenderingServer's " +"data. [method force_draw] is usually called if this happens." +msgstr "" +"如果对 RenderingServer 的数据进行了更改,则返回 [code]true[/code]。如果发生这" +"种情况,通常会调用 [method force_draw]。" + msgid "Not yet implemented. Always returns [code]false[/code]." msgstr "还没有实现。总是返回 [code]false[/code]。" msgid "" +"Returns [code]true[/code] if the OS supports a certain [param feature]. " +"Features might be [code]s3tc[/code], [code]etc[/code], and [code]etc2[/code]." +msgstr "" +"如果操作系统支持某个特性 [param feature],则返回 [code]true[/code]。特性可以" +"是 [code]s3tc[/code]、[code]etc[/code]、[code]etc2[/code]。" + +msgid "" "Attaches a unique Object ID to instance. Object ID must be attached to " "instance for proper culling with [method instances_cull_aabb], [method " "instances_cull_convex], and [method instances_cull_ray]." @@ -62359,6 +85020,18 @@ msgid "" msgstr "将骨架附加到实例。并从实例中移除之前骨架。" msgid "" +"Creates a visual instance, adds it to the RenderingServer, and sets both " +"base and scenario. It can be accessed with the RID that is returned. This " +"RID will be used in all [code]instance_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method." +msgstr "" +"创建可视实例并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在大多数 [code]instance_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。" + +msgid "" "Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for " "more details." msgstr "" @@ -62373,6 +85046,23 @@ msgid "" msgstr "设置实例所在的场景。场景是对象将在其中显示的 3D 世界。" msgid "" +"Sets the override material of a specific surface. Equivalent to [method " +"MeshInstance3D.set_surface_override_material]." +msgstr "" +"设置指定表面的覆盖材质。相当于 [method MeshInstance3D." +"set_surface_override_material]。" + +msgid "" +"Sets the world space transform of the instance. Equivalent to [member Node3D." +"transform]." +msgstr "设置该实例的世界空间变换。相当于 [member Node3D.transform]。" + +msgid "" +"Sets the visibility parent for the given instance. Equivalent to [member " +"Node3D.visibility_parent]." +msgstr "设置给定实例的可见性父级。相当于 [member Node3D.visibility_parent]。" + +msgid "" "Sets whether an instance is drawn or not. Equivalent to [member Node3D." "visible]." msgstr "设置是否绘制实例。相当于 [member Node3D.visible]。" @@ -62381,11 +85071,22 @@ msgid "" "Sets the color of the light. Equivalent to [member Light3D.light_color]." msgstr "设置灯光的颜色。相当于 [member Light3D.light_color]。" +msgid "" +"Sets the specified light parameter. See [enum LightParam] for options. " +"Equivalent to [method Light3D.set_param]." +msgstr "" +"设置指定的灯光参数。选项见 [enum LightParam]。相当于 [method Light3D." +"set_param]。" + msgid "Not implemented in Godot 3.x." msgstr "在 Godot 3.x 中没有实现。" -msgid "Creates a new [LightmapGI] instance." -msgstr "创建新的 [LightmapGI] 实例。" +msgid "" +"If [code]true[/code], light will cast shadows. Equivalent to [member Light3D." +"shadow_enabled]." +msgstr "" +"如果为 [code]true[/code],则灯光会投射阴影。相当于 [member Light3D." +"shadow_enabled]。" msgid "Returns the value of a certain material's parameter." msgstr "返回特定材质的参数值。" @@ -62521,6 +85222,29 @@ msgstr "" "要放置在场景中,请使用 [method instance_set_base] 使用该返回的 RID 将该全向灯" "附加到一个实例。" +msgid "" +"Creates a particle system and adds it to the RenderingServer. It can be " +"accessed with the RID that is returned. This RID will be used in all " +"[code]particles_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"To place in a scene, attach these particles to an instance using [method " +"instance_set_base] using the returned RID." +msgstr "" +"创建粒子系统并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在所有 [code]particles_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"如果要将这些粒子放置到场景中,请使用返回的 RID 调用 [method " +"instance_set_base],将其附加至某个实例上。" + +msgid "" +"Calculates and returns the axis-aligned bounding box that contains all the " +"particles. Equivalent to [method GPUParticles3D.capture_aabb]." +msgstr "" +"计算并返回包含所有粒子的轴对齐边界框。相当于 [method GPUParticles3D." +"capture_aabb]。" + msgid "Returns [code]true[/code] if particles are currently set to emitting." msgstr "如果当前粒子被设置发射,则返回 [code]true[/code]。" @@ -62540,6 +85264,152 @@ msgstr "" "instances_cull_ray] 时进行。" msgid "" +"Reset the particles on the next update. Equivalent to [method GPUParticles3D." +"restart]." +msgstr "下次更新时重置粒子。相当于 [method GPUParticles3D.restart]。" + +msgid "" +"Sets the number of particles to be drawn and allocates the memory for them. " +"Equivalent to [member GPUParticles3D.amount]." +msgstr "" +"设置要绘制的粒子的数量,并为其分配内存。相当于 [member GPUParticles3D." +"amount]。" + +msgid "" +"Sets a custom axis-aligned bounding box for the particle system. Equivalent " +"to [member GPUParticles3D.visibility_aabb]." +msgstr "" +"设置粒子系统的自定义轴对齐边界框。相当于 [member GPUParticles3D." +"visibility_aabb]。" + +msgid "" +"Sets the draw order of the particles to one of the named enums from [enum " +"ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent " +"to [member GPUParticles3D.draw_order]." +msgstr "" +"将粒子的绘制顺序设置为命名枚举 [enum ParticlesDrawOrder]。选项见 [enum " +"ParticlesDrawOrder]。相当于 [member GPUParticles3D.draw_order]。" + +msgid "" +"Sets the mesh to be used for the specified draw pass. Equivalent to [member " +"GPUParticles3D.draw_pass_1], [member GPUParticles3D.draw_pass_2], [member " +"GPUParticles3D.draw_pass_3], and [member GPUParticles3D.draw_pass_4]." +msgstr "" +"设置用于指定绘制阶段的网格。相当于 [member GPUParticles3D.draw_pass_1]、" +"[member GPUParticles3D.draw_pass_2]、[member GPUParticles3D.draw_pass_3]、和 " +"[member GPUParticles3D.draw_pass_4]。" + +msgid "" +"Sets the number of draw passes to use. Equivalent to [member GPUParticles3D." +"draw_passes]." +msgstr "" +"设置要使用的绘制阶段的数量。相当于 [member GPUParticles3D.draw_passes]。" + +msgid "" +"Sets the [Transform3D] that will be used by the particles when they first " +"emit." +msgstr "设置粒子首次发射时使用的 [Transform3D]。" + +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 GPUParticles3D.emitting]." +msgstr "" +"如果为 [code]true[/code],则粒子将随时间发射。设置为 false 不会重置粒子,只会" +"停止发射。相当于 [member GPUParticles3D.emitting]。" + +msgid "" +"Sets the explosiveness ratio. Equivalent to [member GPUParticles3D." +"explosiveness]." +msgstr "设置爆发比例。相当于 [member GPUParticles3D.explosiveness]。" + +msgid "" +"Sets the frame rate that the particle system rendering will be fixed to. " +"Equivalent to [member GPUParticles3D.fixed_fps]." +msgstr "设置粒子系统渲染的固定帧率。相当于 [member GPUParticles3D.fixed_fps]。" + +msgid "" +"If [code]true[/code], uses fractional delta which smooths the movement of " +"the particles. Equivalent to [member GPUParticles3D.fract_delta]." +msgstr "" +"如果为 [code]true[/code],则使用分数增量来平滑粒子的运动。相当于 [member " +"GPUParticles3D.fract_delta]。" + +msgid "" +"Sets the lifetime of each particle in the system. Equivalent to [member " +"GPUParticles3D.lifetime]." +msgstr "" +"设置系统中每个粒子的生命周期。相当于 [member GPUParticles3D.lifetime]。" + +msgid "" +"If [code]true[/code], particles will emit once and then stop. Equivalent to " +"[member GPUParticles3D.one_shot]." +msgstr "" +"如果为 [code]true[/code],则粒子将发射一次然后停止。相当于 [member " +"GPUParticles3D.one_shot]。" + +msgid "" +"Sets the preprocess time for the particles' animation. This lets you delay " +"starting an animation until after the particles have begun emitting. " +"Equivalent to [member GPUParticles3D.preprocess]." +msgstr "" +"设置粒子动画的预处理时间。这样可以让动画延迟到粒子开始发射之后再开始。相当于 " +"[member GPUParticles3D.preprocess]。" + +msgid "" +"Sets the material for processing the particles.\n" +"[b]Note:[/b] This is not the material used to draw the materials. Equivalent " +"to [member GPUParticles3D.process_material]." +msgstr "" +"设置用于处理粒子的材质。\n" +"[b]注意:[/b]这不是用来绘制材质的材质。相当于 [member GPUParticles3D." +"process_material]。" + +msgid "" +"Sets the emission randomness ratio. This randomizes the emission of " +"particles within their phase. Equivalent to [member GPUParticles3D." +"randomness]." +msgstr "" +"设置发射随机性比例。会随机化该粒子在其相位内的发射。相当于 [member " +"GPUParticles3D.randomness]。" + +msgid "" +"Sets the speed scale of the particle system. Equivalent to [member " +"GPUParticles3D.speed_scale]." +msgstr "设置粒子系统的速度缩放。相当于 [member GPUParticles3D.speed_scale]。" + +msgid "" +"If [code]true[/code], particles use local coordinates. If [code]false[/code] " +"they use global coordinates. Equivalent to [member GPUParticles3D." +"local_coords]." +msgstr "" +"如果为 [code]true[/code],则粒子使用局部坐标。如果为 [code]false[/code] 则使" +"用全局坐标。相当于 [member GPUParticles3D.local_coords]。" + +msgid "" +"Creates a reflection probe and adds it to the RenderingServer. It can be " +"accessed with the RID that is returned. This RID will be used in all " +"[code]reflection_probe_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"To place in a scene, attach this reflection probe to an instance using " +"[method instance_set_base] using the returned RID." +msgstr "" +"创建反射探针并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在所有 [code]reflection_probe_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"如果要将这个反射探针放置到场景中,请使用返回的 RID 调用 [method " +"instance_set_base],将其附加至某个实例上。" + +msgid "" +"If [code]true[/code], reflections will ignore sky contribution. Equivalent " +"to [member ReflectionProbe.interior]." +msgstr "" +"如果为 [code]true[/code],则反射将忽略天空的贡献。相当于 [member " +"ReflectionProbe.interior]。" + +msgid "" "Sets the render cull mask for this reflection probe. Only instances with a " "matching cull mask will be rendered by this probe. Equivalent to [member " "ReflectionProbe.cull_mask]." @@ -62585,12 +85455,35 @@ msgstr "" "ReflectionProbe.origin_offset]。" msgid "" +"Sets the size of the area that the reflection probe will capture. Equivalent " +"to [member ReflectionProbe.size]." +msgstr "设置反射探针将捕获的区域的大小。相当于 [member ReflectionProbe.size]。" + +msgid "" "Sets how often the reflection probe updates. Can either be once or every " "frame. See [enum ReflectionProbeUpdateMode] for options." msgstr "" "设置反射探针的更新频率。可以是一次,也可以是每一帧。参阅 [enum " "ReflectionProbeUpdateMode] 选项。" +msgid "" +"Schedules a callback to the given callable after a frame has been drawn." +msgstr "安排对给定可调用体的回调,会在一帧绘制完成后回调。" + +msgid "" +"Creates a scenario and adds it to the RenderingServer. It can be accessed " +"with the RID that is returned. This RID will be used in all " +"[code]scenario_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"The scenario is the 3D world that all the visual instances exist in." +msgstr "" +"创建场景并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID " +"会在大多数 [code]scenario_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"场景是所有可视实例存在的 3D 世界。" + msgid "Sets the environment that will be used with this scenario." msgstr "设置将用于此场景的环境。" @@ -62624,10 +85517,30 @@ msgid "" "not been selected." msgstr "设置未选择特定透明色时使用的默认透明色。" +msgid "" +"Creates an empty shader and adds it to the RenderingServer. It can be " +"accessed with the RID that is returned. This RID will be used in all " +"[code]shader_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method." +msgstr "" +"创建空的着色器并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这" +"个 RID 会在所有 [code]shader_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。" + msgid "Returns a shader's code." msgstr "返回着色器的代码。" msgid "" +"Returns a default texture from a shader searched by name.\n" +"[b]Note:[/b] If the sampler array is used use [param index] to access the " +"specified texture." +msgstr "" +"返回着色器中的默认纹理,根据名称搜索。\n" +"[b]注意:[/b]如果使用了采样器数组,请使用 [param index] 访问指定的纹理。" + +msgid "" "Sets a shader's default texture. Overwrites the texture given by name.\n" "[b]Note:[/b] If the sampler array is used use [param index] to access the " "specified texture." @@ -62647,9 +85560,57 @@ msgstr "设置该骨架中指定骨骼的 [Transform3D]。" msgid "Sets the [Transform2D] for a specific bone of this skeleton." msgstr "设置该骨架中指定骨骼的 [Transform2D]。" +msgid "" +"Creates a skeleton and adds it to the RenderingServer. It can be accessed " +"with the RID that is returned. This RID will be used in all " +"[code]skeleton_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method." +msgstr "" +"创建骨架并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 RID " +"会在所有 [code]skeleton_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。" + msgid "Returns the number of bones allocated for this skeleton." msgstr "返回分配给这个骨架的骨骼数量。" +msgid "" +"Creates an empty sky and adds it to the RenderingServer. It can be accessed " +"with the RID that is returned. This RID will be used in all [code]sky_*[/" +"code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method." +msgstr "" +"创建空的天空并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在所有 [code]sky_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。" + +msgid "" +"Sets the material that the sky uses to render the background and reflection " +"maps." +msgstr "设置天空用于渲染背景和反射贴图的材质。" + +msgid "" +"Creates a spot light and adds it to the RenderingServer. It can be accessed " +"with the RID that is returned. This RID can be used in most [code]light_*[/" +"code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method.\n" +"To place in a scene, attach this spot light to an instance using [method " +"instance_set_base] using the returned RID." +msgstr "" +"创建聚光灯并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在大多数 [code]light_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。\n" +"如果要将这个聚光灯放置到场景中,请使用返回的 RID 调用 [method " +"instance_set_base],将其附加至某个实例上。" + +msgid "Returns a texture [RID] that can be used with [RenderingDevice]." +msgstr "返回可用于 [RenderingDevice] 的纹理 [RID]。" + msgid "Sets a viewport's camera." msgstr "设置视图的相机。" @@ -62695,6 +85656,18 @@ msgstr "" "使用它可以带来显著的优化,尤其是在低端设备上。但是,这是以必须手动管理视口为" "代价的。进一步优化请参见 [method viewport_set_render_direct_to_screen]。" +msgid "" +"Creates an empty viewport and adds it to the RenderingServer. It can be " +"accessed with the RID that is returned. This RID will be used in all " +"[code]viewport_*[/code] RenderingServer functions.\n" +"Once finished with your RID, you will want to free the RID using the " +"RenderingServer's [method free_rid] static method." +msgstr "" +"创建空的视口并将其添加到 RenderingServer。可以通过返回的 RID 进行访问。这个 " +"RID 会在所有 [code]viewport_*[/code] RenderingServer 函数中使用。\n" +"RID 使用结束后,应该使用 RenderingServer 的 [method free_rid] 静态方法进行释" +"放。" + msgid "Returns the viewport's last rendered frame." msgstr "返回视口的最后渲染帧。" @@ -62705,6 +85678,23 @@ msgid "If [code]true[/code], sets the viewport active, else sets it inactive." msgstr "" "如果为 [code]true[/code],则将视口设置为活动状态,否则将其设置为非活动状态。" +msgid "" +"Sets the rendering mask associated with this [Viewport]. Only [CanvasItem] " +"nodes with a matching rendering visibility layer will be rendered by this " +"[Viewport]." +msgstr "" +"设置与此 [Viewport] 关联的渲染掩码。渲染可见层与之匹配的 [CanvasItem] 节点才" +"会被此 [Viewport] 渲染。" + +msgid "" +"Sets the stacking order for a viewport's canvas.\n" +"[param layer] is the actual canvas layer, while [param sublayer] specifies " +"the stacking order of the canvas among those in the same layer." +msgstr "" +"设置视口画布的堆叠顺序。\n" +"[param layer] 是实际的画布层,而 [param sublayer] 指定的是该画布在同一层中的" +"堆叠顺序。" + msgid "Sets the transformation of a viewport's canvas." msgstr "设置视口画布的变换。" @@ -62739,6 +85729,16 @@ msgstr "" msgid "Sets the viewport's global transformation matrix." msgstr "设置视口的全局变换矩阵。" +msgid "" +"Sets the multisample anti-aliasing mode for 2D/Canvas. See [enum " +"ViewportMSAA] for options." +msgstr "设置 2D/画布的多重采样抗锯齿模式。选项见 [enum ViewportMSAA]。" + +msgid "" +"Sets the multisample anti-aliasing mode for 3D. See [enum ViewportMSAA] for " +"options." +msgstr "设置 3D 的多重采样抗锯齿模式。选项见 [enum ViewportMSAA]。" + msgid "Sets the viewport's parent to another viewport." msgstr "设置视口的父视口到另一个视口。" @@ -62778,6 +85778,14 @@ msgstr "" "个属性,那么只会绘制适合窗口的部分, 无法自动缩放,即使游戏场景明显大于窗口大" "小。" +msgid "" +"Sets a viewport's scenario.\n" +"The scenario contains information about environment information, reflection " +"atlas etc." +msgstr "" +"设置视口的场景。\n" +"该场景包含环境、反射图集等信息。" + msgid "Sets the viewport's width and height." msgstr "设置视口的宽度和高度。" @@ -62801,6 +85809,17 @@ msgstr "" "如果为 [code]false[/code],则完全禁用渲染,但引擎逻辑仍在处理中。即使禁用渲" "染,您也可以调用 [method force_draw] 来绘制帧。" +msgid "" +"Emitted at the end of the frame, after the RenderingServer has finished " +"updating all the Viewports." +msgstr "" +"在该帧的结尾发出,此时 RenderingServer 刚刚完成对所有 Viewport 的更新。" + +msgid "" +"Emitted at the beginning of the frame, before the RenderingServer updates " +"all the Viewports." +msgstr "在该帧的开头发出,此后 RenderingServer 会更新所有 Viewport。" + msgid "Marks an error that shows that the index array is empty." msgstr "标记一个错误,表明索引数组为空。" @@ -62925,6 +85944,72 @@ msgstr "使用 [Transform2D] 存储 MultiMesh 变换。" msgid "Use [Transform3D] to store MultiMesh transform." msgstr "使用 [Transform3D] 存储 MultiMesh 变换。" +msgid "" +"Nearest-neighbor filter for light projectors (use for pixel art light " +"projectors). No mipmaps are used for rendering, which means light projectors " +"at a distance will look sharp but grainy. This has roughly the same " +"performance cost as using mipmaps." +msgstr "" +"光线投射器的最近邻过滤(用于像素风光线投射器)。渲染时不使用 mipmap,这意味着" +"较远处的光线投射器看上去会很锐利,但会有颗粒状的图案。与使用 mipmap 的性能开" +"销大致相同。" + +msgid "" +"Linear filter for light projectors (use for non-pixel art light projectors). " +"No mipmaps are used for rendering, which means light projectors at a " +"distance will look smooth but blurry. This has roughly the same performance " +"cost as using mipmaps." +msgstr "" +"光线投射器的线性过滤(用于非像素风光线投射器)。渲染时不使用 mipmap,这意味着" +"较远处的光线投射器看上去会很平滑,但会有模糊的效果。与使用 mipmap 的性能开销" +"大致相同。" + +msgid "" +"Nearest-neighbor filter for light projectors (use for pixel art light " +"projectors). Isotropic mipmaps are used for rendering, which means light " +"projectors at a distance will look smooth but blurry. This has roughly the " +"same performance cost as not using mipmaps." +msgstr "" +"光线投射器的最近邻过滤(用于像素风光线投射器)。渲染时使用各向同性的 mipmap," +"这意味着较远处的光线投射器看上去会很平滑,但会有模糊的效果。与不使用 mipmap " +"的性能开销大致相同。" + +msgid "" +"Linear filter for light projectors (use for non-pixel art light projectors). " +"Isotropic mipmaps are used for rendering, which means light projectors at a " +"distance will look smooth but blurry. This has roughly the same performance " +"cost as not using mipmaps." +msgstr "" +"光线投射器的线性过滤(用于非像素风光线投射器)。渲染时使用各向同性的 mipmap," +"这意味着较远处的光线投射器看上去会很平滑,但会有模糊的效果。与不使用 mipmap " +"的性能开销大致相同。" + +msgid "" +"Nearest-neighbor filter for light projectors (use for pixel art light " +"projectors). Anisotropic mipmaps are used for rendering, which means light " +"projectors at a distance will look smooth and sharp when viewed from oblique " +"angles. This looks better compared to isotropic mipmaps, but is slower. The " +"level of anisotropic filtering is defined by [member ProjectSettings." +"rendering/textures/default_filters/anisotropic_filtering_level]." +msgstr "" +"光线投射器的最近邻过滤(用于像素风光线投射器)。渲染时使用各向异性的 mipmap," +"这意味着光线投射器从斜角度观察会既平滑又锐利。比各向同性的 mipmap 更好看,但" +"也更慢。各向异性的级别由 [member ProjectSettings.rendering/textures/" +"default_filters/anisotropic_filtering_level] 定义。" + +msgid "" +"Linear filter for light projectors (use for non-pixel art light projectors). " +"Anisotropic mipmaps are used for rendering, which means light projectors at " +"a distance will look smooth and sharp when viewed from oblique angles. This " +"looks better compared to isotropic mipmaps, but is slower. The level of " +"anisotropic filtering is defined by [member ProjectSettings.rendering/" +"textures/default_filters/anisotropic_filtering_level]." +msgstr "" +"光线投射器的线性过滤(用于非像素风光线投射器)。渲染时使用各向异性的 mipmap," +"这意味着光线投射器从斜角度观察会既平滑又锐利。比各向同性的 mipmap 更好看,但" +"也更慢。各向异性的级别由 [member ProjectSettings.rendering/textures/" +"default_filters/anisotropic_filtering_level] 定义。" + msgid "Is a directional (sun) light." msgstr "是平行光(日光)。" @@ -63031,6 +86116,67 @@ msgid "" "moving objects." msgstr "反射探针将每帧更新。这种模式对于捕捉移动物体是必要的。" +msgid "" +"Nearest-neighbor filter for decals (use for pixel art decals). No mipmaps " +"are used for rendering, which means decals at a distance will look sharp but " +"grainy. This has roughly the same performance cost as using mipmaps." +msgstr "" +"贴花的最近邻过滤(用于像素风贴花)。渲染时不使用 mipmap,这意味着较远处的贴花" +"看上去会很锐利,但会有颗粒状的图案。与使用 mipmap 的性能开销大致相同。" + +msgid "" +"Linear filter for decals (use for non-pixel art decals). No mipmaps are used " +"for rendering, which means decals at a distance will look smooth but blurry. " +"This has roughly the same performance cost as using mipmaps." +msgstr "" +"贴花的线性过滤(用于非像素风贴花)。渲染时不使用 mipmap,这意味着较远处的贴花" +"看上去会很平滑,但会有模糊的效果。与使用 mipmap 的性能开销大致相同。" + +msgid "" +"Nearest-neighbor filter for decals (use for pixel art decals). Isotropic " +"mipmaps are used for rendering, which means decals at a distance will look " +"smooth but blurry. This has roughly the same performance cost as not using " +"mipmaps." +msgstr "" +"贴花的最近邻过滤(用于像素风贴花)。渲染时使用各向同性的 mipmap,这意味着较远" +"处的贴花看上去会很平滑,但会有模糊的效果。与不使用 mipmap 的性能开销大致相" +"同。" + +msgid "" +"Linear filter for decals (use for non-pixel art decals). Isotropic mipmaps " +"are used for rendering, which means decals at a distance will look smooth " +"but blurry. This has roughly the same performance cost as not using mipmaps." +msgstr "" +"贴花的线性过滤(用于非像素风贴花)。渲染时使用各向同性的 mipmap,这意味着较远" +"处的贴花看上去会很平滑,但会有模糊的效果。与不使用 mipmap 的性能开销大致相" +"同。" + +msgid "" +"Nearest-neighbor filter for decals (use for pixel art decals). Anisotropic " +"mipmaps are used for rendering, which means decals at a distance will look " +"smooth and sharp when viewed from oblique angles. This looks better compared " +"to isotropic mipmaps, but is slower. The level of anisotropic filtering is " +"defined by [member ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level]." +msgstr "" +"贴花的最近邻过滤(用于像素风贴花)。渲染时使用各向异性的 mipmap,这意味着贴花" +"从斜角度观察会既平滑又锐利。比各向同性的 mipmap 更好看,但也更慢。各向异性的" +"级别由 [member ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level] 定义。" + +msgid "" +"Linear filter for decals (use for non-pixel art decals). Anisotropic mipmaps " +"are used for rendering, which means decals at a distance will look smooth " +"and sharp when viewed from oblique angles. This looks better compared to " +"isotropic mipmaps, but is slower. The level of anisotropic filtering is " +"defined by [member ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level]." +msgstr "" +"贴花的线性过滤(用于非像素风贴花)。渲染时使用各向异性的 mipmap,这意味着贴花" +"从斜角度观察会既平滑又锐利。比各向同性的 mipmap 更好看,但也更慢。各向异性的" +"级别由 [member ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level] 定义。" + msgid "Draw particles in the order that they appear in the particles array." msgstr "按照粒子数组中出现的顺序绘制粒子。" @@ -63098,9 +86244,21 @@ msgstr "调试绘制被禁用。默认设置。" msgid "Objects are displayed without light information." msgstr "显示的对象没有光照信息。" +msgid "Objects are displayed with only light information." +msgstr "仅使用光照信息显示对象。" + msgid "Debug draw draws objects in wireframe." msgstr "调试绘制,将对象用线框形式绘制。" +msgid "Objects are displayed with only the albedo value from [VoxelGI]s." +msgstr "仅使用来自 [VoxelGI] 的反照率值显示对象。" + +msgid "Objects are displayed with only the lighting value from [VoxelGI]s." +msgstr "仅使用来自 [VoxelGI] 的照明值显示对象。" + +msgid "Objects are displayed with only the emission color from [VoxelGI]s." +msgstr "仅使用来自 [VoxelGI] 的自发光颜色显示对象。" + msgid "VRS is disabled." msgstr "VRS 已禁用。" @@ -63165,6 +86323,17 @@ msgstr "" "使用电影级色调映射器。可以避免对高光的截断,最终的图像一般比 [constant " "ENV_TONE_MAPPER_REINHARD] 看上去更鲜艳。" +msgid "Low quality of roughness filter for screen-space reflections." +msgstr "屏幕空间反射的较低质量粗糙度过滤器。" + +msgid "Medium quality of roughness filter for screen-space reflections." +msgstr "屏幕空间反射的中等质量粗糙度过滤器。" + +msgid "" +"High quality of roughness filter for screen-space reflections. This is the " +"slowest option." +msgstr "屏幕空间反射的较高质量粗糙度过滤器。这是最慢的选项。" + msgid "Lowest quality of screen-space ambient occlusion." msgstr "最低质量的屏幕空间环境光遮蔽。" @@ -63498,6 +86667,57 @@ msgstr "" "个函数将返回原始的 [RID]。" msgid "" +"Emits the [signal setup_local_to_scene_requested] signal. If [member " +"resource_local_to_scene] is set to [code]true[/code], this method is called " +"from [method PackedScene.instantiate] by the newly duplicated resource " +"within the scene instance.\n" +"For most resources, this method performs no logic of its own. Custom " +"behavior can be defined by connecting [signal " +"setup_local_to_scene_requested] from a script, [b]not[/b] by overriding this " +"method.\n" +"[b]Example:[/b] Assign a random value to [code]health[/code] for every " +"duplicated Resource from an instantiated scene, excluding the original.\n" +"[codeblock]\n" +"extends Resource\n" +"\n" +"var health = 0\n" +"\n" +"func _init():\n" +" setup_local_to_scene_requested.connect(randomize_health)\n" +"\n" +"func randomize_health():\n" +" health = randi_range(10, 40)\n" +"[/codeblock]" +msgstr "" +"发射 [signal setup_local_to_scene_requested] 信号。如果 [member " +"resource_local_to_scene] 为 [code]true[/code],则会在 [method PackedScene." +"instantiate] 中由该场景实例中新制作的资源副本调用这个方法。\n" +"对于大多数资源,这个方法本身不执行任何逻辑。可以在脚本中连接 [signal " +"setup_local_to_scene_requested] 信号来实现自定义行为,[b]不要[/b]覆盖这个方" +"法。\n" +"[b]示例:[/b]为实例化的场景中的每一个 Resource 副本的 [code]health[/code] 分" +"配随机值,不包括原始版本。\n" +"[codeblock]\n" +"extends Resource\n" +"\n" +"var health = 0\n" +"\n" +"func _init():\n" +" setup_local_to_scene_requested.connect(randomize_health)\n" +"\n" +"func randomize_health():\n" +" health = randi_range(10, 40)\n" +"[/codeblock]" + +msgid "" +"Sets the [member resource_path] to [param path], potentially overriding an " +"existing cache entry for this path. Further attempts to load an overridden " +"resource by path will instead return this resource." +msgstr "" +"将 [member resource_path] 设置为 [param path],可能会覆盖这个路径对应的已有缓" +"存条目。后续尝试通过路径加载覆盖后的资源时,会返回这个资源。" + +msgid "" "If [code]true[/code], the resource is duplicated for each instance of all " "scenes using it. At run-time, the resource can be modified in one scene " "without affecting other instances (see [method PackedScene.instantiate]).\n" @@ -63509,10 +86729,85 @@ 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." +msgstr "" +"这个资源的可选名称。定义后会在“检查器”面板中显示这个值来代表该资源。对于内置" +"脚本,该名称会在脚本编辑器中作为选项卡名称的一部分显示。" + +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 " +"scene, the value will be the [PackedScene]'s filepath, followed by an unique " +"identifier.\n" +"[b]Note:[/b] Setting this property manually may fail if a resource with the " +"same path has already been previously loaded. If necessary, use [method " +"take_over_path]." +msgstr "" +"该资源的唯一路径。如果已被保存到磁盘,该值将是其文件路径。如果该资源仅包含在" +"某一个场景中,该值将是 [PackedScene] 的文件路径后加上一个唯一标识符。\n" +"[b]注意:[/b]如果之前已经加载了具有相同路径的资源,手动设置该属性可能会失败。" +"如果有必要,请使用 [method take_over_path]。" + +msgid "" +"Emitted when the resource changes, usually when one of its properties is " +"modified. See also [method emit_changed].\n" +"[b]Note:[/b] This signal is not emitted automatically for properties of " +"custom resources. If necessary, a setter needs to be created to emit the " +"signal." +msgstr "" +"当资源发生更改时发出信号,通常是当其属性之一被修改时。另请参见 [method " +"emit_changed] 。\n" +"[b]注意:[/b] 自定义资源的属性不会自动发出此信号。如有必要,需要创建一个 " +"setter 来触发。" + +msgid "" +"Emitted when [method setup_local_to_scene] is called, usually by a newly " +"duplicated resource with [member resource_local_to_scene] set to [code]true[/" +"code]. Custom behavior can be defined by connecting this signal." +msgstr "" +"当调用 [method setup_local_to_scene] 时发出信号,通常是由将 [member " +"resource_local_to_scene] 设置为 [code]true[/code] 的新复制资源调用。可以通过" +"连接此信号来定义自定义行为。" + msgid "Loads a specific resource type from a file." msgstr "从文件中加载特定资源类型。" msgid "" +"Godot loads resources in the editor or in exported games using " +"ResourceFormatLoaders. They are queried automatically via the " +"[ResourceLoader] singleton, or when a resource with internal dependencies is " +"loaded. Each file type may load as a different resource type, so multiple " +"ResourceFormatLoaders are registered in the engine.\n" +"Extending this class allows you to define your own loader. Be sure to " +"respect the documented return types and values. You should give it a global " +"class name with [code]class_name[/code] for it to be registered. Like built-" +"in ResourceFormatLoaders, it will be called automatically when loading " +"resources of its handled type(s). You may also implement a " +"[ResourceFormatSaver].\n" +"[b]Note:[/b] You can also extend [EditorImportPlugin] if the resource type " +"you need exists but Godot is unable to load its format. Choosing one way " +"over another depends on if the format is suitable or not for the final " +"exported game. For example, it's better to import [code].png[/code] textures " +"as [code].ctex[/code] ([CompressedTexture2D]) first, so they can be loaded " +"with better efficiency on the graphics card." +msgstr "" +"Godot 在编辑器或导出的游戏中使用 ResourceFormatLoaders 来加载资源。它们通过 " +"[ResourceLoader] 单例自动查询,或在加载具有内部依赖项的资源时自动查询。每种文" +"件类型可以作为不同的资源类型加载,因此在引擎中注册多个 " +"ResourceFormatLoaders。\n" +"扩展此类可让您定义自己的加载器。请确保遵守文档中记录的返回类型和值。您应该使" +"用 [code]class_name[/code] 给它一个全局类名以进行注册。像内置的 " +"ResourceFormatLoaders 一样,当加载其处理的类型的资源时,它将自动被调用。您还" +"可以实现 [ResourceFormatSaver]。\n" +"[b]注意:[/b] 如果您需要的资源类型存在,但 Godot 无法加载其格式,则也可以扩展 " +"[EditorImportPlugin]。选择哪种方法取决于该格式是否适用于最终导出的游戏。例" +"如,最好首先将 [code].png[/code] 纹理作为 [code].ctex[/code] " +"([CompressedTexture2D]) 导入,以便在图形卡上能更高效的加载它们。" + +msgid "" "If implemented, gets the dependencies of a given resource. If [param " "add_types] is [code]true[/code], paths should be appended [code]::TypeName[/" "code], where [code]TypeName[/code] is the class name of the dependency.\n" @@ -63529,6 +86824,14 @@ msgid "Gets the list of extensions for files this loader is able to read." msgstr "获取该加载器能够读取的文件的扩展名列表。" msgid "" +"Returns the script class name associated with the [Resource] under the given " +"[param path]. If the resource has no script or the script isn't a named " +"class, it should return [code]\"\"[/code]." +msgstr "" +"返回与给定的 [param path] 下的 [Resource] 关联的脚本类名称。如果资源没有脚本" +"或脚本不是一个命名的类,则应返回 [code]\"\"[/code]。" + +msgid "" "Gets the class name of the resource associated with the given path. If the " "loader cannot handle it, it should return [code]\"\"[/code].\n" "[b]Note:[/b] Custom resource types defined by scripts aren't known by the " @@ -63563,6 +86866,19 @@ msgstr "" "息,请参阅 [enum CacheMode]。" msgid "" +"Tells whether or not this loader should load a resource from its resource " +"path for a given type.\n" +"If it is not implemented, the default behavior returns whether the path's " +"extension is within the ones provided by [method " +"_get_recognized_extensions], and if the type is within the ones provided by " +"[method _get_resource_type]." +msgstr "" +"判断该加载器是否应对于给定类型从其资源路径加载资源。\n" +"如果未实现,则默认行为是检查路径的扩展名是否在[method " +"_get_recognized_extensions]提供的范围内,以及类型是否在[method " +"_get_resource_type]提供的范围内。" + +msgid "" "If implemented, renames dependencies within the given resource and saves it. " "[param renames] is a dictionary [code]{ String => String }[/code] mapping " "old dependency paths to new paths.\n" @@ -63597,10 +86913,40 @@ msgstr "" "便它被注册。与内置的 ResourceFormatSaver 一样,它会在保存其识别类型的资源时自" "动调用。你也可以实现一个 [ResourceFormatLoader]。" +msgid "" +"Returns the list of extensions available for saving the resource object, " +"provided it is recognized (see [method _recognize])." +msgstr "" +"返回可用于保存资源对象的扩展名列表,前提是该资源对象已被识别(请参见[method " +"_recognize])。" + msgid "Returns whether the given resource object can be saved by this saver." msgstr "返回此保存程序能否保存给定的资源对象。" msgid "" +"Returns [code]true[/code] if this saver handles a given save path and " +"[code]false[/code] otherwise.\n" +"If this method is not implemented, the default behavior returns whether the " +"path's extension is within the ones provided by [method " +"_get_recognized_extensions]." +msgstr "" +"如果该saver可以处理给定的保存路径,则返回[code]true[/code],否则返回" +"[code]false[/code]。\n" +"如果未实现该方法,则默认行为是检查路径的扩展名是否在[method " +"_get_recognized_extensions]提供的范围内。" + +msgid "" +"Saves the given resource object to a file at the target [param path]. [param " +"flags] is a bitmask composed with [enum ResourceSaver.SaverFlags] " +"constants.\n" +"Returns [constant OK] on success, or an [enum Error] constant in case of " +"failure." +msgstr "" +"将给定的资源对象保存到目标[param path]中的文件中。 [param flags]是一个位掩" +"码,由[enum ResourceSaver.SaverFlags]常量组成。\n" +"成功时返回[constant OK],失败时返回[enum Error]常量。" + +msgid "" "Sets a new UID for the resource at the given [param path]. Returns [constant " "OK] on success, or an [enum Error] constant in case of failure." msgstr "" @@ -63634,9 +86980,136 @@ msgstr "" msgid "Singleton used to load resource files." msgstr "用于加载资源文件的单例。" +msgid "" +"Singleton used to load resource files from the filesystem.\n" +"It uses the many [ResourceFormatLoader] classes registered in the engine " +"(either built-in or from a plugin) to load files into memory and convert " +"them to a format that can be used by the engine.\n" +"[b]Note:[/b] You have to import the files into the engine first to load them " +"using [method load]. If you want to load [Image]s at run-time, you may use " +"[method Image.load]. If you want to import audio files, you can use the " +"snippet described in [member AudioStreamMP3.data]." +msgstr "" +"单例,用于从文件系统加载资源文件。\n" +"它使用引擎中注册的许多[ResourceFormatLoader]类(内置或插件)将文件加载到内存" +"中并将其转换为引擎可以使用的格式。\n" +"[b]注意:[/b]您必须先将文件导入引擎,才能使用[method load]加载它们。如果您想" +"在运行时加载[Image],可以使用[method Image.load]。如果您想导入音频文件,可以" +"使用[member AudioStreamMP3.data]中描述的代码段。" + +msgid "" +"Registers a new [ResourceFormatLoader]. The ResourceLoader will use the " +"ResourceFormatLoader as described in [method load].\n" +"This method is performed implicitly for ResourceFormatLoaders written in " +"GDScript (see [ResourceFormatLoader] for more information)." +msgstr "" +"注册一个新的[ResourceFormatLoader]。ResourceLoader将会按照[method load]中的描" +"述使用ResourceFormatLoader。\n" +"对于用GDScript编写的ResourceFormatLoader,此方法将隐式执行(有关详细信息,请" +"参见[ResourceFormatLoader])。" + +msgid "" +"Returns whether a recognized resource exists for the given [param path].\n" +"An optional [param type_hint] can be used to further specify the [Resource] " +"type that should be handled by the [ResourceFormatLoader]. Anything that " +"inherits from [Resource] can be used as a type hint, for example [Image]." +msgstr "" +"返回给定路径 [param path] 是否存在已识别的资源。\n" +"可选的 [param type_hint] 可用于进一步指定 [ResourceFormatLoader] 应处理的 " +"[Resource] 类型。任何继承自 [Resource] 的内容都可以用作类型提示,例如 " +"[Image]。" + +msgid "Returns the dependencies for the resource at the given [param path]." +msgstr "返回给定路径 [param path] 处资源的依赖关系。" + msgid "Returns the list of recognized extensions for a resource type." msgstr "返回资源类型的已识别扩展名列表。" +msgid "" +"Returns the ID associated with a given resource path, or [code]-1[/code] " +"when no such ID exists." +msgstr "" +"返回与一个给定资源路径关联的 ID,如果不存在此类 ID,则返回 [code]-1[/code]。" + +msgid "" +"Returns whether a cached resource is available for the given [param path].\n" +"Once a resource has been loaded by the engine, it is cached in memory for " +"faster access, and future calls to the [method load] method will use the " +"cached version. The cached resource can be overridden by using [method " +"Resource.take_over_path] on a new resource for that same path." +msgstr "" +"返回给定 [param path] 的缓存资源是否可用。\n" +"一旦引擎加载了资源,它将被缓存在内存中以加快访问速度,未来调用 [method load] " +"方法将使用缓存版本。可以通过在具有相同路径的新资源上使用 [method Resource." +"take_over_path] 来覆盖缓存资源。" + +msgid "" +"Loads a resource at the given [param path], caching the result for further " +"access.\n" +"The registered [ResourceFormatLoader]s are queried sequentially to find the " +"first one which can handle the file's extension, and then attempt loading. " +"If loading fails, the remaining ResourceFormatLoaders are also attempted.\n" +"An optional [param type_hint] can be used to further specify the [Resource] " +"type that should be handled by the [ResourceFormatLoader]. Anything that " +"inherits from [Resource] can be used as a type hint, for example [Image].\n" +"The [param cache_mode] property defines whether and how the cache should be " +"used or updated when loading the resource. See [enum CacheMode] for " +"details.\n" +"Returns an empty resource if no [ResourceFormatLoader] could handle the " +"file.\n" +"GDScript has a simplified [method @GDScript.load] built-in method which can " +"be used in most situations, leaving the use of [ResourceLoader] for more " +"advanced scenarios." +msgstr "" +"在给定的 [param path] 中加载资源,并将结果缓存以供进一步访问。\n" +"按顺序查询注册的 [ResourceFormatLoader],以找到可以处理文件扩展名的第一个 " +"[ResourceFormatLoader],然后尝试加载。如果加载失败,则还会尝试其余的 " +"[ResourceFormatLoader]。\n" +"可选的 [param type_hint] 可用于进一步指定 [ResourceFormatLoader] 应处理的 " +"[Resource] 类型。任何继承自 [Resource] 的东西都可以用作类型提示,例如 " +"[Image]。\n" +"[param cache_mode] 属性定义在加载资源时是否以及如何使用或更新缓存。有关详细信" +"息,请参见 [enum CacheMode]。\n" +"如果没有 [ResourceFormatLoader] 可以处理该文件,则返回空资源。\n" +"GDScript 具有一个简化的 [method @GDScript.load] 内置方法,可在大多数情况下使" +"用,而 [ResourceLoader] 供更高级的情况使用。" + +msgid "" +"Returns the resource loaded by [method load_threaded_request].\n" +"If this is called before the loading thread is done (i.e. [method " +"load_threaded_get_status] is not [constant THREAD_LOAD_LOADED]), the calling " +"thread will be blocked until the resource has finished loading." +msgstr "" +"返回由 [method load_threaded_request] 加载的资源。\n" +"如果在加载线程完成之前调用此方法(即 [method load_threaded_get_status] 不是 " +"[constant THREAD_LOAD_LOADED]),则调用线程将被阻塞,直到资源加载完成。" + +msgid "" +"Returns the status of a threaded loading operation started with [method " +"load_threaded_request] for the resource at [param path]. See [enum " +"ThreadLoadStatus] for possible return values.\n" +"An array variable can optionally be passed via [param progress], and will " +"return a one-element array containing the percentage of completion of the " +"threaded loading." +msgstr "" +"返回使用 [method load_threaded_request] 在 [param path] 处启动的线程加载操作" +"的状态。有关可能的返回值,请参见 [enum ThreadLoadStatus]。\n" +"可以通过 [param progress] 可选地传递一个数组变量,并返回一个包含线程加载完成" +"百分比的单元素的数组。" + +msgid "" +"Loads the resource using threads. If [param use_sub_threads] is [code]true[/" +"code], multiple threads will be used to load the resource, which makes " +"loading faster, but may affect the main thread (and thus cause game " +"slowdowns).\n" +"The [param cache_mode] property defines whether and how the cache should be " +"used or updated when loading the resource. See [enum CacheMode] for details." +msgstr "" +"使用线程加载资源。如果 [param use_sub_threads] 为 [code]true[/code],将使用多" +"个线程来加载资源,这会使加载更快,但可能会影响主线程(从而导致游戏降速)。\n" +"[param cache_mode] 属性定义在加载资源时是否以及如何使用或更新缓存。有关详细信" +"息,请参见 [enum CacheMode]。" + msgid "Unregisters the given [ResourceFormatLoader]." msgstr "取消注册给定的 [ResourceFormatLoader]。" @@ -63645,6 +87118,52 @@ msgid "" "abort loading." msgstr "更改缺少子资源时的行为。默认行为是中止加载。" +msgid "" +"The resource is invalid, or has not been loaded with [method " +"load_threaded_request]." +msgstr "该资源无效,或尚未使用 [method load_threaded_request] 加载。" + +msgid "The resource is still being loaded." +msgstr "该资源仍在加载中。" + +msgid "Some error occurred during loading and it failed." +msgstr "加载过程中发生了错误,导致失败。" + +msgid "" +"The resource was loaded successfully and can be accessed via [method " +"load_threaded_get]." +msgstr "资源成功加载,可以通过 [method load_threaded_get] 访问。" + +msgid "Preloads a list of resources inside a scene." +msgstr "预加载场景中的一组资源。" + +msgid "" +"This node is used to preload sub-resources inside a scene, so when the scene " +"is loaded, all the resources are ready to use and can be retrieved from the " +"preloader. You can add the resources using the ResourcePreloader tab when " +"the node is selected.\n" +"GDScript has a simplified [method @GDScript.preload] built-in method which " +"can be used in most situations, leaving the use of [ResourcePreloader] for " +"more advanced scenarios." +msgstr "" +"这个节点可以预加载场景中的子资源,这样场景加载完成时,所有的资源就都处于就绪" +"可用状态,可以从预加载器获取。选中该节点后,可以使用 ResourcePreloader 选项卡" +"来添加资源。\n" +"GDScript 提供了简化的 [method @GDScript.preload] 内置方法,可以在大多数场景使" +"用,[ResourcePreloader] 则可用于更高阶的场合。" + +msgid "" +"Adds a resource to the preloader with the given [param name]. If a resource " +"with the given [param name] already exists, the new resource will be renamed " +"to \"[param name] N\" where N is an incrementing number starting from 2." +msgstr "" +"将资源以给定的名称 [param name] 添加至预加载器。如果已存在名为 [param name] " +"的资源,则新资源会被重命名为 \"[param name] N\",这里的 N 是从 2 开始递增的数" +"字。" + +msgid "Returns the resource associated to [param name]." +msgstr "返回与 [param name] 关联的资源。" + msgid "Returns the list of resources inside the preloader." msgstr "返回预加载器内的资源列表。" @@ -63654,6 +87173,13 @@ msgid "" msgstr "" "如果预加载器包含一个与 [param name] 关联的资源,则返回 [code]true[/code]。" +msgid "Removes the resource associated to [param name] from the preloader." +msgstr "从预加载器中删除与 [param name] 关联的资源。" + +msgid "" +"Renames a resource inside the preloader from [param name] to [param newname]." +msgstr "将预加载器中的资源从 [param name] 重命名为 [param newname]。" + msgid "Singleton for saving Godot-specific resource types." msgstr "用于保存 Godot 特定资源类型的单例。" @@ -63670,10 +87196,40 @@ msgstr "" "tscn[/code])或二进制文件(如 [code].res[/code] 或 [code].scn[/code])。" msgid "" +"Registers a new [ResourceFormatSaver]. The ResourceSaver will use the " +"ResourceFormatSaver as described in [method save].\n" +"This method is performed implicitly for ResourceFormatSavers written in " +"GDScript (see [ResourceFormatSaver] for more information)." +msgstr "" +"注册一个新的 [ResourceFormatSaver]。 ResourceSaver 将使用 " +"ResourceFormatSaver,如 [method save] 中所述。\n" +"对于用 GDScript 编写的 ResourceFormatSaver,此方法将隐式执行(有关详细信息," +"请参见 [ResourceFormatSaver])。" + +msgid "" "Returns the list of extensions available for saving a resource of a given " "type." 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." +msgstr "" +"使用识别资源对象的 [ResourceFormatSaver] 将资源保存到给定路径。如果 [param " +"path] 为空,则 [ResourceSaver] 将尝试使用 [member Resource.resource_path]。\n" +"可以指定 [param flags] 位掩码以使用 [enum SaverFlags] 标志自定义保存行为。\n" +"成功时返回 [constant OK]。" + +msgid "No resource saving option." +msgstr "没有资源保存选项。" + msgid "Save the resource with a path relative to the scene which uses it." msgstr "用相对于使用该资源的场景的路径来保存该资源。" @@ -63709,6 +87265,40 @@ msgid "Singleton for managing a cache of resource UIDs within a project." msgstr "用于管理项目中资源 UID 缓存的单例。" msgid "" +"Resources can not only be referenced using their resource paths [code]res://" +"[/code], but alternatively through a unique identifier specified via " +"[code]uid://[/code].\n" +"Using UIDs allows for the engine to keep references between resources " +"intact, even if the files get renamed or moved.\n" +"This singleton is responsible for keeping track of all registered resource " +"UIDs of a project, generating new UIDs and converting between the string and " +"integer representation." +msgstr "" +"资源不仅可以通过资源路径 [code]res://[/code] 引用,还可以通过 [code]uid://[/" +"code] 指定的唯一标识符进行引用。\n" +"使用 UID 可以使引擎保持资源之间引用关系的完整性,即使文件发生重命名或移动。\n" +"这个单例负责跟踪项目中所有已注册的资源 UID,生成新的 UID,以及在资源 ID 的字" +"符串表示和整数表示之间进行转换。" + +msgid "" +"Adds a new UID value which is mapped to the given resource path.\n" +"Fails with an error if the UID already exists, so be sure to check [method " +"has_id] beforehand, or use [method set_id] instead." +msgstr "" +"添加一个新的 UID 值,将其映射到给定的资源路径。\n" +"如果 UID 已经存在,则会返回错误,因此请务必先使用 [method has_id] 进行检查," +"或者改用 [method set_id]。" + +msgid "" +"Generates a random resource UID which is guaranteed to be unique within the " +"list of currently loaded UIDs.\n" +"In order for this UID to be registered, you must call [method add_id] or " +"[method set_id]." +msgstr "" +"生成随机的资源 UID,该 UID 在当前加载的 UID 列表中保证唯一。\n" +"要注册这个 UID,你必须调用 [method add_id] 或 [method set_id]。" + +msgid "" "Returns the path that the given UID value refers to.\n" "Fails with an error if the UID does not exist, so be sure to check [method " "has_id] beforehand." @@ -63722,13 +87312,74 @@ msgstr "返回给定的 UID 值是否为缓存所知。" msgid "Converts the given UID to a [code]uid://[/code] string value." msgstr "将给定的 UID 转换为 [code]uid://[/code] 字符串值。" +msgid "" +"Removes a loaded UID value from the cache.\n" +"Fails with an error if the UID does not exist, so be sure to check [method " +"has_id] beforehand." +msgstr "" +"从缓存中删除一个已加载的 UID 值。\n" +"如果 UID 不存在则失败并报错,因此请务必提前使用 [method has_id] 检查。" + +msgid "" +"Updates the resource path of an existing UID.\n" +"Fails with an error if the UID does not exist, so be sure to check [method " +"has_id] beforehand, or use [method add_id] instead." +msgstr "" +"更新现有 UID 的资源路径。\n" +"如果 UID 不存在,则失败并出现错误,因此请务必提前使用 [method has_id] 检查," +"或者改用 [method add_id]。" + msgid "Extracts the UID value from the given [code]uid://[/code] string." msgstr "从给定的 [code]uid://[/code] 字符串中提取 UID 值。" +msgid "" +"The value to use for an invalid UID, for example if the resource could not " +"be loaded.\n" +"Its text representation is [code]uid://<invalid>[/code]." +msgstr "" +"用于无效 UID 的值,例如无法加载的资源。\n" +"对应的文本表示为 [code]uid://<invalid>[/code]。" + msgid "A custom effect for use with [RichTextLabel]." msgstr "与 [RichTextLabel] 一起使用的自定义效果。" msgid "" +"A custom effect for use with [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]\n" +"# The RichTextEffect will be usable like this: `[example]Some text[/" +"example]`\n" +"var bbcode = \"example\"\n" +"[/gdscript]\n" +"[csharp]\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]\n" +"# 使用 RichTextEffect 的方式是这样的:`[example]Some text[/example]`\n" +"var bbcode = \"example\"\n" +"[/gdscript]\n" +"[csharp]\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. If the method returns [code]false[/code], it will skip " @@ -63817,6 +87468,67 @@ msgid "Clears the tag stack and sets [member text] to an empty string." msgstr "清空标签堆栈,并将 [member text] 设置为空字符串。" msgid "" +"Returns the line number of the character position provided.\n" +"[b]Note:[/b] If [member threaded] is enabled, this method returns a value " +"for the loaded part of the document. Use [method is_ready] or [signal " +"finished] to determine whether document is fully loaded." +msgstr "" +"返回提供的字符位置的行号。\n" +"[b]注意:[/b]如果启用了 [member threaded],则此方法返回的是文档已加载部分的" +"值。请使用 [method is_ready] 或 [signal finished] 来确定文档是否已完全加载。" + +msgid "" +"Returns the paragraph number of the character position provided.\n" +"[b]Note:[/b] If [member threaded] is enabled, this method returns a value " +"for the loaded part of the document. Use [method is_ready] or [signal " +"finished] to determine whether document is fully loaded." +msgstr "" +"返回提供的字符位置的段号。\n" +"[b]注意:[/b]如果启用了 [member threaded],则此方法返回的是文档已加载部分的" +"值。请使用 [method is_ready] 或 [signal finished] 来确定文档是否已完全加载。" + +msgid "" +"Returns the height of the content.\n" +"[b]Note:[/b] If [member threaded] is enabled, this method returns a value " +"for the loaded part of the document. Use [method is_ready] or [signal " +"finished] to determine whether document is fully loaded." +msgstr "" +"返回内容的高度。\n" +"[b]注意:[/b]如果启用了 [member threaded],则此方法返回的是文档已加载部分的" +"值。请使用 [method is_ready] 或 [signal finished] 来确定文档是否已完全加载。" + +msgid "" +"Returns the width of the content.\n" +"[b]Note:[/b] If [member threaded] is enabled, this method returns a value " +"for the loaded part of the document. Use [method is_ready] or [signal " +"finished] to determine whether document is fully loaded." +msgstr "" +"返回内容的宽度。\n" +"[b]注意:[/b]如果启用了 [member threaded],则此方法返回的是文档已加载部分的" +"值。请使用 [method is_ready] 或 [signal finished] 来确定文档是否已完全加载。" + +msgid "" +"Returns the total number of lines in the text. Wrapped text is counted as " +"multiple lines.\n" +"[b]Note:[/b] If [member threaded] is enabled, this method returns a value " +"for the loaded part of the document. Use [method is_ready] or [signal " +"finished] to determine whether document is fully loaded." +msgstr "" +"返回文本中的总行数。自动换行的文本计为多行。\n" +"[b]注意:[/b]如果启用了 [member threaded],则此方法返回的是文档已加载部分的" +"值。请使用 [method is_ready] 或 [signal finished] 来确定文档是否已完全加载。" + +msgid "" +"Returns the vertical offset of the line found at the provided index.\n" +"[b]Note:[/b] If [member threaded] is enabled, this method returns a value " +"for the loaded part of the document. Use [method is_ready] or [signal " +"finished] to determine whether document is fully loaded." +msgstr "" +"返回位于提供的索引处的行的垂直偏移量。\n" +"[b]注意:[/b]如果启用了 [member threaded],则此方法返回的是文档已加载部分的" +"值。请使用 [method is_ready] 或 [signal finished] 来确定文档是否已完全加载。" + +msgid "" "Returns the [PopupMenu] of this [RichTextLabel]. By default, this menu is " "displayed when right-clicking on the [RichTextLabel].\n" "You can add custom menu items or remove standard ones. Make sure your IDs " @@ -63908,6 +87620,23 @@ msgstr "" "[b]警告:[/b]这是必要的内部节点,将其移除或释放可能导致崩溃。如果你想要将其隐" "藏,或者隐藏其子节点,请使用其 [member Window.visible] 属性。" +msgid "" +"Returns the total number of paragraphs (newlines or [code]p[/code] tags in " +"the tag stack's text tags). Considers wrapped text as one paragraph." +msgstr "" +"返回段落的总数(换行符或标记栈文本标签中的 [code]p[/code] 标签)。自动换行的" +"文本视为一个段落。" + +msgid "" +"Returns the vertical offset of the paragraph found at the provided index.\n" +"[b]Note:[/b] If [member threaded] is enabled, this method returns a value " +"for the loaded part of the document. Use [method is_ready] or [signal " +"finished] to determine whether document is fully loaded." +msgstr "" +"返回位于提供的索引处的段落的垂直偏移量。\n" +"[b]注意:[/b]如果启用了 [member threaded],则此方法返回的是文档已加载部分的" +"值。请使用 [method is_ready] 或 [signal finished] 来确定文档是否已完全加载。" + msgid "Returns the text without BBCode mark-up." msgstr "返回没有 BBCode 标记的文本。" @@ -63915,10 +87644,57 @@ msgid "Returns the current selection text. Does not include BBCodes." msgstr "返回当前选中的文本。不包括 BBCode。" msgid "" +"Returns the current selection first character index if a selection is " +"active, [code]-1[/code] otherwise. Does not include BBCodes." +msgstr "" +"如果选区处于活动状态,则返回当前选区第一个字符的索引,否则返回 [code]-1[/" +"code]。不包括 BBCode。" + +msgid "" +"Returns the current selection last character index if a selection is active, " +"[code]-1[/code] otherwise. Does not include BBCodes." +msgstr "" +"如果选择处于活动状态,则返回当前选区最后一个字符的索引,否则返回 [code]-1[/" +"code]。不包括 BBCode。" + +msgid "" "Returns the total number of characters from text tags. Does not include " "BBCodes." msgstr "返回文本标签的总字符数。不包括 BBCode。" +msgid "" +"Returns the number of visible lines.\n" +"[b]Note:[/b] If [member threaded] is enabled, this method returns a value " +"for the loaded part of the document. Use [method is_ready] or [signal " +"finished] to determine whether document is fully loaded." +msgstr "" +"返回可见行数。\n" +"[b]注意:[/b]如果启用了 [member threaded],则此方法返回的是文档已加载部分的" +"值。请使用 [method is_ready] 或 [signal finished] 来确定文档是否已完全加载。" + +msgid "" +"Returns the number of visible paragraphs. A paragraph is considered visible " +"if at least one of its lines is visible.\n" +"[b]Note:[/b] If [member threaded] is enabled, this method returns a value " +"for the loaded part of the document. Use [method is_ready] or [signal " +"finished] to determine whether document is fully loaded." +msgstr "" +"返回可见段落的数量。如果段落中至少有一行是可见的,则该段落被认为是可见的。\n" +"[b]注意:[/b] 如果启用了 [member threaded],则此方法返回文档已加载部分的值。" +"使用 [method is_ready] 或 [signal finished] 来确定文档是否已完全加载。" + +msgid "" +"Installs a custom effect. [param effect] should be a valid [RichTextEffect]." +msgstr "安装自定义效果。[param effect] 应该是有效的 [RichTextEffect]。" + +msgid "" +"If [member threaded] is enabled, returns [code]true[/code] if the background " +"thread has finished text processing, otherwise always return [code]true[/" +"code]." +msgstr "" +"如果启用了 [member threaded],则在后台线程完成文本处理后,返回 [code]true[/" +"code],否则始终返回 [code]true[/code]。" + msgid "Adds a newline tag to the tag stack." msgstr "在标签栈中添加一个换行标签。" @@ -63969,6 +87745,14 @@ msgstr "" "将一个自定义效果标签添加到标签栈。效果不需要在 [member custom_effects] 中。环" "境被直接传入给效果。" +msgid "" +"Adds a [code][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][dropcap][/code] 标签添加到标签堆栈中。首字下沉(dropped capital)是" +"一个装饰性元素,位于段落开头,比其余文本要大。" + msgid "Adds a [code][fgcolor][/code] tag to the tag stack." msgstr "向标签栈中添加 [code][fgcolor][/code] 标签。" @@ -64006,6 +87790,13 @@ msgstr "" "code] 标签,这与添加 [code][i][/code] 标签相同。" msgid "" +"Adds [code][ol][/code] or [code][ul][/code] tag to the tag stack. Multiplies " +"[param level] by current [member tab_size] to determine new margin length." +msgstr "" +"将 [code][ol][/code] 或 [code][ul][/code] 标签添加到标签堆栈中。将 [param " +"level] 乘以当前 [member tab_size] 来确定新的边距长度。" + +msgid "" "Adds a meta tag to the tag stack. Similar to the BBCode [code][url=something]" "{text}[/url][/code], but supports non-[String] metadata types." msgstr "" @@ -64100,6 +87891,14 @@ msgstr "" "素。\n" "如果 [param expand] 为 [code]false[/code],则该列将不会对总比率产生影响。" +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 " +"behaves, see [enum TextServer.AutowrapMode]." +msgstr "" +"如果设置为 [constant TextServer.AUTOWRAP_OFF] 以外的值,则文本将在节点的边界" +"矩形内换行。要了解每种模式的行为,请参见 [enum TextServer.AutowrapMode]。" + msgid "If [code]true[/code], the label uses BBCode formatting." msgstr "如果为 [code]true[/code],则该标签使用 BBCode 格式。" @@ -64115,6 +87914,20 @@ msgstr "" "要添加一个自定义效果,使用[method install_effect]会更方便。" msgid "" +"If [code]true[/code], the label's minimum size will be automatically updated " +"to fit its content, matching the behavior of [Label]." +msgstr "" +"如果为 [code]true[/code],该标签的最小尺寸会自动更新,适应其内容,与 [Label] " +"的行为相匹配。" + +msgid "" +"If [code]true[/code], the label underlines hint tags such as [code]" +"[hint=description]{text}[/hint][/code]." +msgstr "" +"如果为 [code]true[/code],则该标签节点会在 hint 标记下,加下划线,例如 [code]" +"[hint=description]{text}[/hint][/code]。" + +msgid "" "If [code]true[/code], the label underlines meta tags such as [code][url]" "{text}[/url][/code]." msgstr "" @@ -64122,6 +87935,15 @@ msgstr "" "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" +"[b]Note:[/b] Progress bar is displayed only if [member threaded] is enabled." +msgstr "" +"加载进度条显示的延迟时间,单位为毫秒。将其设置为 [code]-1[/code] 将完全禁用进" +"度条。\n" +"[b]注意:[/b]仅当 [member threaded] 已启用时才会显示进度条。" + +msgid "" "If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/" "code] does not block scrolling completely. See [method scroll_to_line]." msgstr "" @@ -64150,6 +87972,26 @@ 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 [code]text[/code] (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]text += \"some string\"[/code] 这样的 [code]+=[/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],则文本处理在后台线程中完成。" @@ -64435,6 +88277,31 @@ msgstr "" "inertia]。" msgid "" +"Returns a list of the bodies colliding with this one. Requires [member " +"contact_monitor] to be set to [code]true[/code] and [member " +"max_contacts_reported] to be set high enough to detect all the collisions.\n" +"[b]Note:[/b] The result of this test is not immediate after moving objects. " +"For performance, list of collisions is updated once per frame and before the " +"physics step. Consider using signals instead." +msgstr "" +"返回与此物体发生碰撞的物体的列表。需要将 [member contact_monitor] 设置为 " +"[code]true[/code],并将 [member max_contacts_reported] 设置足够高以侦测所有碰" +"撞。\n" +"[b]注意:[/b]此测试的结果不会立即在移动物体后得出。为了提高性能,碰撞列表每帧" +"更新一次,且在物理步骤之前进行。可考虑改用信号来代替。" + +msgid "" +"Returns the number of contacts this body has with other bodies. By default, " +"this returns 0 unless bodies are configured to monitor contacts (see [member " +"contact_monitor]).\n" +"[b]Note:[/b] To retrieve the colliding bodies, use [method " +"get_colliding_bodies]." +msgstr "" +"返回此物体与其他物体的接触数。默认情况下,除非配置监视接触的物体(请参见 " +"[member contact_monitor]),否则返回0。\n" +"[b]注意:[/b] 要获取正在碰撞的物体,请使用 [method get_colliding_bodies]。" + +msgid "" "Sets the body's velocity on the given axis. The velocity in the given vector " "axis will be set as the given vector length. This is useful for jumping " "behavior." @@ -64443,6 +88310,67 @@ msgstr "" "行为很有用。" msgid "" +"Damps the body's rotation. By default, the body will use the [b]Default " +"Angular Damp[/b] in [b]Project > Project Settings > Physics > 2d[/b] or any " +"value override set by an [Area2D] the body is in. Depending on [member " +"angular_damp_mode], you can set [member angular_damp] to be added to or to " +"replace the body's damping value.\n" +"See [member ProjectSettings.physics/2d/default_angular_damp] for more " +"details about damping." +msgstr "" +"减缓物体的旋转。默认情况下,物体将使用 [b] 项目> 项目设置> 物理> 2D [/b] 中" +"的 [b]默认角阻尼[/b],或由 [Area2D] 设置的任何值覆盖。根据 [member " +"angular_damp_mode],您可以设置 [member angular_damp_mode] 以添加到或替换物体" +"的阻尼值。\n" +"有关阻尼的更多详细信息,请参见 [member ProjectSettings.physics/2d/" +"default_angular_damp] 。" + +msgid "" +"If [code]true[/code], the body can enter sleep mode when there is no " +"movement. See [member sleeping]." +msgstr "" +"如果[code]true[/code],当未运动时,物体可以进入睡眠模式。请参见 [member " +"sleeping] 。" + +msgid "" +"The body's custom center of mass, relative to the body's origin position, " +"when [member center_of_mass_mode] is set to [constant " +"CENTER_OF_MASS_MODE_CUSTOM]. This is the balanced point of the body, where " +"applied forces only cause linear acceleration. Applying forces outside of " +"the center of mass causes angular acceleration.\n" +"When [member center_of_mass_mode] is set to [constant " +"CENTER_OF_MASS_MODE_AUTO] (default value), the center of mass is " +"automatically computed." +msgstr "" +"当 [member center_of_mass_mode] 设置为 [constant CENTER_OF_MASS_MODE_CUSTOM] " +"时,物体的自定义质心相对于物体原点位置的位置。这是物体的平衡点,只有施加在质" +"心内的力才会引起线性加速度。施加在质心之外的力会引起角加速度。\n" +"当 [member center_of_mass_mode] 设置为 [constant CENTER_OF_MASS_MODE_AUTO]" +"(默认值)时,会自动计算质心。" + +msgid "" +"Defines the way the body's center of mass is set. See [enum " +"CenterOfMassMode] for possible values." +msgstr "" +"定义设置物体质心的方式。请参见 [enum CenterOfMassMode] 以获取可能的值。" + +msgid "" +"The body's total constant positional forces applied during each physics " +"update.\n" +"See [method add_constant_force] and [method add_constant_central_force]." +msgstr "" +"在每个物理更新期间施加到物体的总恒定位置的力。\n" +"请参见 [method add_constant_force] 和 [method add_constant_central_force] 。" + +msgid "" +"The body's total constant rotational forces applied during each physics " +"update.\n" +"See [method add_constant_torque]." +msgstr "" +"在每个物理更新期间施加的物体的总恒定旋转力。\n" +"请参见 [method add_constant_torque] 。" + +msgid "" "If [code]true[/code], the RigidBody2D will emit signals when it collides " "with another RigidBody2D.\n" "[b]Note:[/b] By default the maximum contacts reported is set to 0, meaning " @@ -64475,6 +88403,27 @@ msgstr "" "[method _integrate_forces] 函数确定的方式移动。" msgid "" +"If [code]true[/code], the body is frozen. Gravity and forces are not applied " +"anymore.\n" +"See [member freeze_mode] to set the body's behavior when frozen.\n" +"For a body that is always frozen, use [StaticBody2D] or [AnimatableBody2D] " +"instead." +msgstr "" +"如果位 [code]true[/code],则物体被冻结。不再施加重力和力。\n" +"请参阅 [member freeze_mode],以设置冻结时,物体的行为。\n" +"对于始终冻结的物体,请改用 [StaticBody2D] 或 [AnimatableBody2D]。" + +msgid "" +"The body's freeze mode. Can be used to set the body's behavior when [member " +"freeze] is enabled. See [enum FreezeMode] for possible values.\n" +"For a body that is always frozen, use [StaticBody2D] or [AnimatableBody2D] " +"instead." +msgstr "" +"该物体的冻结模式。可以设置该物体在启用 [member freeze] 时的行为。可能的值见 " +"[enum FreezeMode]。\n" +"对于始终冻结的物体,请改用 [StaticBody3D] 或 [AnimatableBody3D]。" + +msgid "" "Multiplies the gravity applied to the body. The body's gravity is calculated " "from the [b]Default Gravity[/b] value in [b]Project > Project Settings > " "Physics > 2d[/b] and/or any additional gravity vector applied by [Area2D]s." @@ -64546,6 +88495,22 @@ msgstr "" "[/codeblocks]" msgid "" +"Damps the body's movement. By default, the body will use the [b]Default " +"Linear Damp[/b] in [b]Project > Project Settings > Physics > 2d[/b] or any " +"value override set by an [Area2D] the body is in. Depending on [member " +"linear_damp_mode], you can set [member linear_damp] to be added to or to " +"replace the body's damping value.\n" +"See [member ProjectSettings.physics/2d/default_linear_damp] for more details " +"about damping." +msgstr "" +"阻碍物体的运动。默认情况下,物体将使用 [b]项目 > 项目设置 > Physics > 2d[/b] " +"中的 [b]默认线性阻尼(Default Linear Damp)[/b]、或物体所在的 [Area2D] 设置的" +"任何值覆盖。取决于 [member linear_damp_mode],您可以将 [member linear_damp] " +"设置为添加或替换物体的阻尼值。\n" +"有关阻尼的更多详细信息,请参见 [member ProjectSettings.physics/2d/" +"default_linear_damp]。" + +msgid "" "The body's linear velocity in pixels per second. Can be used sporadically, " "but [b]don't set this every frame[/b], because physics may run in another " "thread and runs at a different granularity. Use [method _integrate_forces] " @@ -64556,6 +88521,28 @@ msgstr "" "_integrate_forces] 作为你的进程循环,以精确控制物体状态。" msgid "" +"If [code]true[/code], the body cannot rotate. Gravity and forces only apply " +"linear movement." +msgstr "如果为 [code]true[/code],则该物体不能旋转。重力和力只施加线性运动。" + +msgid "" +"The maximum number of contacts that will be recorded. Requires a value " +"greater than 0 and [member contact_monitor] to be set to [code]true[/code] " +"to start to register contacts. Use [method get_contact_count] to retrieve " +"the count or [method get_colliding_bodies] to retrieve bodies that have been " +"collided with.\n" +"[b]Note:[/b] The number of contacts is different from the number of " +"collisions. Collisions between parallel edges will result in two contacts " +"(one at each end), and collisions between parallel faces will result in four " +"contacts (one at each corner)." +msgstr "" +"将记录的最大接触点数。需要一个大于 0 的值,并将 [member contact_monitor] 设置" +"为 [code]true[/code] 以开始注册接触。使用 [method get_contact_count] 检索计数" +"或使用 [method get_colliding_bodies] 检索已发生碰撞的物体。\n" +"[b]注意:[/b] 接触点的数量不同于碰撞的数量。平行边之间的碰撞将导致两个接触点" +"(每个端点一个),平行面之间的碰撞将导致四个接触点(每个角落一个)。" + +msgid "" "The physics material override for the body.\n" "If a material is assigned to this property, it will be used instead of any " "other physics material, such as an inherited one." @@ -64565,6 +88552,15 @@ msgstr "" "质。" msgid "" +"If [code]true[/code], the body will not move and will not calculate forces " +"until woken up by another body through, for example, a collision, or by " +"using the [method apply_impulse] or [method apply_force] methods." +msgstr "" +"如果为 [code]true[/code] ,该刚体将不会移动,也不会计算受力,直到被另一个物体" +"唤醒,例如通过碰撞或使用 [method apply_impulse] 或 [method apply_force] 方" +"法。" + +msgid "" "Emitted when a collision with another [PhysicsBody2D] or [TileMap] occurs. " "Requires [member contact_monitor] to be set to [code]true[/code] and [member " "max_contacts_reported] to be set high enough to detect all the collisions. " @@ -64676,6 +88672,34 @@ msgstr "" "时,它才会被发出。" msgid "" +"Static body freeze mode (default). The body is not affected by gravity and " +"forces. It can be only moved by user code and doesn't collide with other " +"bodies along its path." +msgstr "" +"静态物体冻结模式(默认)。物体不受重力和力的影响。它只能由用户的代码移动,并" +"且其他物体沿其路径运动时,不会与之发生碰撞。" + +msgid "" +"Kinematic body freeze mode. Similar to [constant FREEZE_MODE_STATIC], but " +"collides with other bodies along its path when moved. Useful for a frozen " +"body that needs to be animated." +msgstr "" +"运动物体的冻结模式。类似于 [constant FREEZE_MODE_STATIC] ,但是在移动时会与其" +"路径上的其他物体发生碰撞。适用于需要动画的冻结物体。" + +msgid "" +"In this mode, the body's center of mass is calculated automatically based on " +"its shapes." +msgstr "在此模式下,该物体的质心将基于其形状自动计算。" + +msgid "" +"In this mode, the body's center of mass is set through [member " +"center_of_mass]. Defaults to the body's origin position." +msgstr "" +"在此模式下,物体的质心通过 [member center_of_mass] 设置。默认为物体的原点位" +"置。" + +msgid "" "Continuous collision detection disabled. This is the fastest way to detect " "body collisions, but can miss small, fast-moving objects." msgstr "" @@ -64758,6 +88782,12 @@ msgstr "" "动的 [CollisionShape3D] 必须是该节点的一个子节点,或者可以手动设置 [member " "inertia]。" +msgid "" +"Returns the inverse inertia tensor basis. This is used to calculate the " +"angular acceleration resulting from a torque applied to the [RigidBody3D]." +msgstr "" +"返回逆惯性张量基础。这用于计算施加到 [RigidBody3D] 上的扭矩产生的角加速度。" + msgid "The RigidBody3D's rotational velocity in [i]radians[/i] per second." msgstr "该 RigidBody3D 的旋转速度,单位为[i]弧度[/i]每秒。" @@ -64786,6 +88816,37 @@ msgstr "" "使用连续碰撞检测的计算速度更快,但可能会错过小的、快速移动的物体。" msgid "" +"If [code]true[/code], the body is frozen. Gravity and forces are not applied " +"anymore.\n" +"See [member freeze_mode] to set the body's behavior when frozen.\n" +"For a body that is always frozen, use [StaticBody3D] or [AnimatableBody3D] " +"instead." +msgstr "" +"如果为 [code]true[/code],则该物体被冻结。不再施加重力和力。\n" +"要设置冻结时物体的行为,见 [member freeze_mode]。\n" +"对于始终冻结的物体,请改用 [StaticBody3D] 或 [AnimatableBody3D]。" + +msgid "" +"The body's freeze mode. Can be used to set the body's behavior when [member " +"freeze] is enabled. See [enum FreezeMode] for possible values.\n" +"For a body that is always frozen, use [StaticBody3D] or [AnimatableBody3D] " +"instead." +msgstr "" +"物体的冻结模式。可用于设置当 [member freeze] 启用时,物体的行为。有关可能的" +"值,请参见 [enum FreezeMode] 。\n" +"对于始终冻结的物体,请使用 [StaticBody3D] 或 [AnimatableBody3D]。" + +msgid "" +"This is multiplied by the global 3D gravity setting found in [b]Project > " +"Project Settings > Physics > 3d[/b] to produce RigidBody3D's gravity. For " +"example, a value of 1 will be normal gravity, 2 will apply double gravity, " +"and 0.5 will apply half gravity to this object." +msgstr "" +"此值将乘以在 [b]项目 > 项目设置 > 物理 > 3D[/b] 中获取的全局 3D 重力设置,以" +"产生 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 " @@ -64953,6 +89014,22 @@ msgstr "" msgid "Editor-only helper for setting up root motion in [AnimationTree]." msgstr "在 [AnimationTree] 中设置根运动的仅编辑器可用的辅助工具。" +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 [AnimationTree].\n" +"[b]Note:[/b] [RootMotionView] is only visible in the editor. It will be " +"hidden automatically in the running project." +msgstr "" +"[i]根运动[/i](Root Motion)是一种动画技术,通过使用网格的骨架为角色提供推" +"力。在处理 3D 动画时,动画师通常使用根骨骼来为其余的骨骼提供动作,从而使得角" +"色的动画能够准确地匹配地面,并实现在电影中与物体的精确交互。另请参阅 " +"[AnimationTree]。\n" +"[b]注意:[/b][RootMotionView] 仅在编辑器中可见。在运行的项目中将自动隐藏。" + msgid "Using AnimationTree - Root motion" msgstr "使用 AnimationTree - 根运动" @@ -65012,6 +89089,113 @@ msgstr "" "Android 阻止。" msgid "" +"Clears the current SceneMultiplayer network state (you shouldn't call this " +"unless you know what you are doing)." +msgstr "" +"清除当前 SceneMultiplayer 的网络状态(除非你知道你在做什么,否则不应该调用这" +"个函数)。" + +msgid "" +"Mark the authentication step as completed for the remote peer identified by " +"[param id]. The [signal MultiplayerAPI.peer_connected] signal will be " +"emitted for this peer once the remote side also completes the " +"authentication. No further authentication messages are expected to be " +"received from this peer.\n" +"If a peer disconnects before completing authentication, either due to a " +"network issue, the [member auth_timeout] expiring, or manually calling " +"[method disconnect_peer], the [signal peer_authentication_failed] signal " +"will be emitted instead of [signal MultiplayerAPI.peer_disconnected]." +msgstr "" +"完成对由 [param id] 标识的远程对等体的身份验证步骤。远程端也完成身份验证之" +"后,将会为这个对等体发出 [signal MultiplayerAPI.peer_connected] 信号。不会再" +"从此对等体接收到身份验证消息。\n" +"如果对等体在完成身份验证之前断开连接,无论是由于网络问题、[member " +"auth_timeout] 过期还是手动调用 [method disconnect_peer],都会发出 [signal " +"peer_authentication_failed] 信号,而不是 [signal MultiplayerAPI." +"peer_disconnected] 信号。" + +msgid "" +"Disconnects the peer identified by [param id], removing it from the list of " +"connected peers, and closing the underlying connection with it." +msgstr "" +"断开由 [param id] 标识的对等体的连接,将其从连接的对等体列表中移除,并关闭与" +"它的底层连接。" + +msgid "" +"Returns the IDs of the peers currently trying to authenticate with this " +"[MultiplayerAPI]." +msgstr "返回当前尝试使用此 [MultiplayerAPI] 进行身份验证的对等方的 ID。" + +msgid "" +"Sends the specified [param data] to the remote peer identified by [param id] " +"as part of an authentication message. This can be used to authenticate " +"peers, and control when [signal MultiplayerAPI.peer_connected] is emitted " +"(and the remote peer accepted as one of the connected peers)." +msgstr "" +"将指定的 [param data] 作为身份验证消息的一部分发送到由 [param id] 标识的远程" +"对等方。这可用于验证对等方,并控制何时发出 [signal MultiplayerAPI." +"peer_connected](并接受远程对等方作为连接的对等方之一)。" + +msgid "" +"Sends the given raw [code]bytes[/code] to a specific peer identified by " +"[code]id[/code] (see [method MultiplayerPeer.set_target_peer]). Default ID " +"is [code]0[/code], i.e. broadcast to all peers." +msgstr "" +"向由 [code]id[/code] 标识的特定对等方发送给定的原始 [code]bytes[/code](请参" +"见 [method MultiplayerPeer.set_target_peer])。默认 ID 为 [code]0[/code],即" +"广播到所有对等方。" + +msgid "" +"If [code]true[/code], the MultiplayerAPI will allow encoding and decoding of " +"object during RPCs.\n" +"[b]Warning:[/b] Deserialized objects can contain code which gets executed. " +"Do not use this option if the serialized object comes from untrusted sources " +"to avoid potential security threat such as remote code execution." +msgstr "" +"如果为 [code]true[/code],则 MultiplayerAPI 将允许在远程过程调用期间对对象进" +"行编码和解码。\n" +"[b]警告:[/b]反序列化的对象可能包含要执行的代码。如果序列化的对象来自不受信任" +"的来源,请勿使用此选项,以避免潜在的安全威胁,例如远程代码执行。" + +msgid "" +"The callback to execute when when receiving authentication data sent via " +"[method send_auth]. If the [Callable] is empty (default), peers will be " +"automatically accepted as soon as they connect." +msgstr "" +"当通过 [method send_auth] 接收身份验证数据时要执行的回调函数。如果 " +"[Callable] 为空(默认),对等方将在连接后立即自动接受。" + +msgid "" +"If set to a value greater than [code]0.0[/code], the maximum amount of time " +"peers can stay in the authenticating state, after which the authentication " +"will automatically fail. See the [signal peer_authenticating] and [signal " +"peer_authentication_failed] signals." +msgstr "" +"如果将其设置为大于 [code]0.0[/code] 的值,则对等方可以停留在正在验证状态的最" +"长时间,之后身份验证将自动失败。请参阅 [signal peer_authenticating] 和 " +"[signal peer_authentication_failed] 信号。" + +msgid "" +"If [code]true[/code], the MultiplayerAPI's [member MultiplayerAPI." +"multiplayer_peer] refuses new incoming connections." +msgstr "" +"如果为 [code]true[/code],则 MultiplayerAPI 的 [member MultiplayerAPI." +"multiplayer_peer] 将拒绝新的传入连接。" + +msgid "" +"The root path to use for RPCs and replication. Instead of an absolute path, " +"a relative path will be used to find the node upon which the RPC should be " +"executed.\n" +"This effectively allows to have different branches of the scene tree to be " +"managed by different MultiplayerAPI, allowing for example to run both client " +"and server in the same scene." +msgstr "" +"用于 RPC 和复制的根路径。将使用相对路径,而不是绝对路径,来查找 RPC 应该在其" +"上被执行的节点。\n" +"这有效地允许场景树的不同分支,由不同的 MultiplayerAPI 管理,例如允许在同一场" +"景中,同时运行客户端和服务器。" + +msgid "" "Enable or disable the server feature that notifies clients of other peers' " "connection/disconnection, and relays messages between them. When this option " "is [code]false[/code], clients won't be automatically notified of other " @@ -65030,9 +89214,34 @@ msgstr "" "[method MultiplayerPeer.is_server_relay_supported]。" msgid "" +"Emitted when this MultiplayerAPI's [member MultiplayerAPI.multiplayer_peer] " +"connects to a new peer and a valid [member auth_callback] is set. In this " +"case, the [signal MultiplayerAPI.peer_connected] will not be emitted until " +"[method complete_auth] is called with given peer [param id]. While in this " +"state, the peer will not be included in the list returned by [method " +"MultiplayerAPI.get_peers] (but in the one returned by [method " +"get_authenticating_peers]), and only authentication data will be sent or " +"received. See [method send_auth] for sending authentication data." +msgstr "" +"当此 MultiplayerAPI 的 [member MultiplayerAPI.multiplayer_peer] 连接到一个新" +"对等体并设置有效的 [member auth_callback] 时,将发出此信号。在这种情况下,只" +"有在调用 [method complete_auth] 并传递给定的对等体 [param id] 时,才会发出 " +"[signal MultiplayerAPI.peer_connected]。在此状态下,该对等体不会包含在 " +"[method MultiplayerAPI.get_peers] 返回的列表中(但会包含在 [method " +"get_authenticating_peers] 返回的列表中),且只会发送和接收身份验证数据。有关" +"发送身份验证数据的信息,请参阅 [method send_auth]。" + +msgid "" "Configuration for properties to synchronize with a [MultiplayerSynchronizer]." msgstr "配置,能够让 [MultiplayerSynchronizer] 对属性进行同步。" +msgid "" +"Adds the property identified by the given [code]path[/code] to the list of " +"the properties being synchronized, optionally passing an [code]index[/code]." +msgstr "" +"将属性添加至同步属性列表,该属性由 [code]path[/code] 指定,还可以传入索引 " +"[code]index[/code]。" + msgid "Returns a list of synchronized property [NodePath]s." msgstr "返回同步属性的 [NodePath] 列表。" @@ -65044,6 +89253,31 @@ msgstr "返回给定的 [code]path[/code] 是否配置为同步。" msgid "Finds the index of the given [code]path[/code]." msgstr "查找给定 [code]path[/code] 的索引。" +msgid "" +"Returns whether the property identified by the given [code]path[/code] is " +"configured to be synchronized on spawn." +msgstr "返回属性是否配置为在出生时同步,该属性由 [code]path[/code] 指定。" + +msgid "" +"Returns whether the property identified by the given [code]path[/code] is " +"configured to be synchronized on process." +msgstr "返回属性是否配置为在处理时同步,该属性由 [code]path[/code] 指定。" + +msgid "" +"Sets whether the property identified by the given [code]path[/code] is " +"configured to be synchronized on spawn." +msgstr "设置属性是否配置为在出生时同步,该属性由 [code]path[/code] 指定。" + +msgid "" +"Sets whether the property identified by the given [code]path[/code] is " +"configured to be synchronized on process." +msgstr "设置属性是否配置为在处理时同步,该属性由 [code]path[/code] 指定。" + +msgid "" +"Removes the property identified by the given [code]path[/code] from the " +"configuration." +msgstr "从配置中移除属性,该属性由 [code]path[/code] 指定。" + msgid "A script interface to a scene file's data." msgstr "场景文件数据的脚本接口。" @@ -65158,6 +89392,41 @@ msgstr "" "如果 [param idx] 处的节点是一个 [InstancePlaceholder],则返回 [code]true[/" "code]。" +msgid "" +"If passed to [method PackedScene.instantiate], blocks edits to the scene " +"state." +msgstr "" +"如果传递给 [method PackedScene.instantiate],则会阻止对场景状态的编辑。" + +msgid "" +"If passed to [method PackedScene.instantiate], provides inherited scene " +"resources to the local scene.\n" +"[b]Note:[/b] Only available in editor builds." +msgstr "" +"如果传递给 [method PackedScene.instantiate],则会把继承的场景资源提供给本地场" +"景。\n" +"[b]注意:[/b]仅在编辑器构建中可用。" + +msgid "" +"If passed to [method PackedScene.instantiate], provides local scene " +"resources to the local scene. Only the main scene should receive the main " +"edit state.\n" +"[b]Note:[/b] Only available in editor builds." +msgstr "" +"如果传递给 [method PackedScene.instantiate],则会为本地场景提供本地场景资源。" +"只有主场景应该接收主编辑状态。\n" +"[b]注意:[/b]仅在编辑器构建中可用。" + +msgid "" +"If passed to [method PackedScene.instantiate], it's similar to [constant " +"GEN_EDIT_STATE_MAIN], but for the case where the scene is being instantiated " +"to be the base of another one.\n" +"[b]Note:[/b] Only available in editor builds." +msgstr "" +"如果传递给 [method PackedScene.instantiate],则类似于 [constant " +"GEN_EDIT_STATE_MAIN],但适用于该场景被实例化为另一个场景的基类的情况。\n" +"[b]注意:[/b]仅在编辑器构建中可用。" + msgid "Manages the game loop via a hierarchy of nodes." msgstr "通过节点层次结构管理游戏循环。" @@ -65304,6 +89573,20 @@ msgstr "" "计时器将在其时间结束后被自动释放。" msgid "" +"Creates and returns a new [Tween]. The Tween will start automatically on the " +"next process frame or physics frame (depending on [enum Tween." +"TweenProcessMode])." +msgstr "" +"创建并返回新的 [Tween]。该 Tween 会在下一个处理帧或物理帧中自动开始(取决于 " +"[enum Tween.TweenProcessMode])。" + +msgid "" +"Returns the first node in the specified group, or [code]null[/code] if the " +"group is empty or does not exist." +msgstr "" +"返回指定组中的第一个节点,如果组为空或不存在,则返回 [code]null[/code]。" + +msgid "" "Returns the current frame number, i.e. the total frame count since the " "application started." msgstr "返回当前的帧数,即自应用程序启动以来的总帧数。" @@ -65314,10 +89597,45 @@ msgstr "返回此 [SceneTree] 中的节点数。" msgid "Returns a list of all nodes assigned to the given group." msgstr "返回一个分配给给定组的所有节点的列表。" +msgid "" +"Returns an array of currently existing [Tween]s in the [SceneTree] (both " +"running and paused)." +msgstr "" +"返回在 [SceneTree] 中当前存在的 [Tween] 的数组(包括正在运行的和已暂停的)。" + msgid "Returns [code]true[/code] if the given group exists." msgstr "如果给定的组存在,返回 [code]true[/code]。" msgid "" +"Sends the given notification to all members of the [param group].\n" +"[b]Note:[/b] [method notify_group] will immediately notify all members at " +"once, which can cause stuttering if an expensive method is called as a " +"result of sending the notification lots of members. To wait for one frame, " +"use [method notify_group_flags] with the [constant GROUP_CALL_DEFERRED] flag." +msgstr "" +"向 [param group] 中的所有成员发送给定的通知。\n" +"[b]注意:[/b][method notify_group] 通知所有成员,如果这样导致在很多成员上调用" +"消耗较高的方法,则会导致卡顿。如果想等待一帧,可以使用 [constant " +"GROUP_CALL_DEFERRED] 标志调用 [method set_group_flags]。" + +msgid "" +"Sends the given notification to all members of the [param group], respecting " +"the given [enum GroupCallFlags].\n" +"[b]Note:[/b] Group call flags are used to control the notification sending " +"behavior. By default, notifications will be sent immediately in a way " +"similar to [method notify_group]. However, if the [constant " +"GROUP_CALL_DEFERRED] flag is present in the [param call_flags] argument, " +"notifications will be sent with a one-frame delay in a way similar to using " +"[code]Object.call_deferred(\"notification\", ...)[/code]." +msgstr "" +"将给定的通知发送到 [param group] 中的所有成员,同时遵循给定的 [enum " +"GroupCallFlags]。\n" +"[b]注意:[/b]分组调用标志用于控制通知发送的行为。默认情况下通知会立即发送,类" +"似于 [method notify_group]。但是,如果 [param call_flags] 参数中包含 " +"[constant GROUP_CALL_DEFERRED] 标志,则通知将被延迟一帧发送,类似于使用 " +"[code]Object.call_deferred(\"notification\", ...)[/code]。" + +msgid "" "Queues the given object for deletion, delaying the call to [method Object." "free] to after the current frame." msgstr "将给定的对象排队准备删除,即在当前帧之后调用 [method Object.free] 。" @@ -65355,11 +89673,36 @@ msgstr "" "[constant ERR_CANT_CREATE]。" msgid "" -"If [code]true[/code], the application automatically accepts quitting.\n" -"For mobile platforms, see [member quit_on_go_back]." +"Sets the given [param property] to [param value] on all members of the given " +"group.\n" +"[b]Note:[/b] [method set_group] will set the property immediately on all " +"members at once, which can cause stuttering if a property with an expensive " +"setter is set on lots of members. To wait for one frame, use [method " +"set_group_flags] with the [constant GROUP_CALL_DEFERRED] flag." +msgstr "" +"将给定分组中所有成员的 [param property] 设置为 [param value]。\n" +"[b]注意:[/b][method set_group] 会立即在所有成员上设置属性,如果对许多成员设" +"置具有大量耗费的 setter 的属性,则可能会导致卡顿。如果想等待一帧后再设置属" +"性,可以在 [constant GROUP_CALL_DEFERRED] 调用 [method set_group_flags]。" + +msgid "" +"Sets the given [param property] to [param value] on all members of the given " +"group, respecting the given [enum GroupCallFlags].\n" +"[b]Note:[/b] Group call flags are used to control the property setting " +"behavior. By default, properties will be set immediately in a way similar to " +"[method set_group]. However, if the [constant GROUP_CALL_DEFERRED] flag is " +"present in the [param call_flags] argument, properties will be set with a " +"one-frame delay in a way similar to [method Object.call_deferred]." msgstr "" -"为 [code]true[/code] 时应用程序将自动接受退出。\n" -"对于移动平台,请参阅 [member quit_on_go_back]。" +"将给定分组中所有成员的 [param property] 设置为 [param value],设置时会考虑给" +"定的 [enum GroupCallFlags]。\n" +"[b]注意:[/b]分组调用标志可用于控制属性设置的行为。默认情况下会立即设置属性," +"类似于 [method set_group]。但是,如果在 [param call_flags] 参数中存在 " +"[constant GROUP_CALL_DEFERRED] 标志,则属性将延迟一帧再设置,类似于 [method " +"Object.call_deferred]。" + +msgid "If a current scene is loaded, calling this method will unload it." +msgstr "如果当前场景已加载,调用此方法将进行卸载。" msgid "The current scene." msgstr "当前场景。" @@ -65402,6 +89745,9 @@ msgstr "" "- 节点不再调用 [method Node._process]、[method Node._physics_process] 和 " "[method Node._input]。" +msgid "The [SceneTree]'s root [Window]." +msgstr "[SceneTree] 的根 [Window]。" + msgid "Emitted whenever a node is added to the [SceneTree]." msgstr "当将节点添加到 [SceneTree] 时发出。" @@ -65434,12 +89780,23 @@ msgid "" "renamed, etc.)." msgstr "当 [SceneTree] 层次结构发生变化(移动或重命名子项等)时发出。" +msgid "" +"This signal is only emitted in the editor, it allows the editor to update " +"the visibility of disabled nodes. Emitted whenever any node's [member Node." +"process_mode] is changed." +msgstr "" +"该信号仅在编辑器中发出,允许编辑器更新被禁用节点的可见性。任何节点的 [member " +"Node.process_mode] 更改时发出。" + msgid "Call a group with no flags (default)." msgstr "对分组进行调用时,不使用标志(默认)。" msgid "Call a group in reverse scene order." msgstr "对分组进行调用时,使用逆场景序。" +msgid "Call a group with a one-frame delay (idle frame, not physics)." +msgstr "延迟一帧对分组进行调用(空闲帧,不是物理帧)。" + msgid "" "Call a group only once even if the call is executed many times.\n" "[b]Note:[/b] Arguments are not taken into account when deciding whether the " @@ -65453,6 +89810,54 @@ msgstr "" msgid "One-shot timer." msgstr "一次性定时器。" +msgid "" +"A one-shot timer managed by the scene tree, which emits [signal timeout] on " +"completion. See also [method SceneTree.create_timer].\n" +"As opposed to [Timer], it does not require the instantiation of a node. " +"Commonly used to create a one-shot delay timer as in the following example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func some_function():\n" +" print(\"Timer started.\")\n" +" await get_tree().create_timer(1.0).timeout\n" +" print(\"Timer ended.\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public async Task SomeFunction()\n" +"{\n" +" GD.Print(\"Timer started.\");\n" +" await ToSignal(GetTree().CreateTimer(1.0f), SceneTreeTimer.SignalName." +"Timeout);\n" +" GD.Print(\"Timer ended.\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The timer will be dereferenced after its time elapses. To preserve the " +"timer, you can keep a reference to it. See [RefCounted]." +msgstr "" +"由场景树管理的一次性定时器,完成时会发出 [signal timeout]。另见 [method " +"SceneTree.create_timer]。\n" +"与 [Timer] 不同,它不需要实例化节点。通常用于创建一次性的延迟定时器,如下例所" +"示:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func some_function():\n" +" print(\"计时开始。\")\n" +" await get_tree().create_timer(1.0).timeout\n" +" print(\"计时结束。\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public async void SomeFunction()\n" +"{\n" +" GD.Print(\"计时开始。\");\n" +" await ToSignal(GetTree().CreateTimer(1.0f), \"timeout\");\n" +" GD.Print(\"计时结束。\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"该计时器将在计时结束后取消引用。要保留该计时器,可以保留对它的引用。见 " +"[RefCounted]。" + msgid "The time remaining (in seconds)." msgstr "剩余时间(单位为秒)。" @@ -65551,6 +89956,10 @@ msgstr "" "[b]注意:[/b]这个类不应该被直接实例化。相反,使用 [method EditorInterface." "get_script_editor] 来访问这个单例。" +msgid "" +"Returns the [ScriptEditorBase] object that the user is currently editing." +msgstr "返回用户当前正在编辑的 [ScriptEditorBase] 对象。" + msgid "Returns a [Script] that is currently active in editor." msgstr "返回当前在编辑器中处于活动状态的 [Script]。" @@ -65583,6 +89992,11 @@ msgstr "用于在 [ScriptEditor] 中编辑脚本的基础编辑器,不包含 msgid "Adds a [EditorSyntaxHighlighter] to the open script." msgstr "将 [EditorSyntaxHighlighter] 添加到打开的脚本中。" +msgid "" +"Returns the underlying [Control] used for editing scripts. For text scripts, " +"this is a [CodeEdit]." +msgstr "返回用于编辑脚本的底层 [Control]。文本脚本对应 [CodeEdit]。" + msgid "Emitted after script validation." msgstr "校验脚本后发出。" @@ -65686,6 +90100,26 @@ msgstr "" "[/codeblock]" msgid "" +"Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].\n" +"[b]Warning:[/b] This is a required internal node, removing and freeing it " +"may cause a crash. If you wish to disable or hide a scrollbar, you can use " +"[member horizontal_scroll_mode]." +msgstr "" +"返回该 [ScrollContainer] 的水平滚动条 [HScrollBar]。\n" +"[b]警告:[/b]这是一个必要的内部节点,移除和释放它可能会导致崩溃。如果你想禁用" +"或隐藏滚动条,可以使用 [member horizontal_scroll_mode]。" + +msgid "" +"Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].\n" +"[b]Warning:[/b] This is a required internal node, removing and freeing it " +"may cause a crash. If you wish to disable or hide a scrollbar, you can use " +"[member vertical_scroll_mode]." +msgstr "" +"返回该 [ScrollContainer] 的垂直滚动条 [VScrollBar]。\n" +"[b]警告:[/b]这是一个必要的内部节点,移除和释放它可能会导致崩溃。如果你想禁用" +"或隐藏滚动条,可以使用 [member vertical_scroll_mode]。" + +msgid "" "If [code]true[/code], the ScrollContainer will automatically scroll to " "focused children (including indirect children) to make sure they are fully " "visible." @@ -65693,12 +90127,27 @@ msgstr "" "如果为 [code]true[/code],则 ScrollContainer 将自动滚动到获得焦点的子项(包括" "间接子项)以确保它们完全可见。" +msgid "" +"Controls whether horizontal scrollbar can be used and when it should be " +"visible. See [enum ScrollMode] for options." +msgstr "控制水平滚动条是否可用、应该何时可见。选项见 [enum ScrollMode]。" + +msgid "" +"Deadzone for touch scrolling. Lower deadzone makes the scrolling more " +"sensitive." +msgstr "触摸滚动的死区。较低的死区使滚动更加敏感。" + msgid "The current horizontal scroll value." msgstr "当前水平滚动值。" msgid "The current vertical scroll value." msgstr "当前垂直滚动值。" +msgid "" +"Controls whether vertical scrollbar can be used and when it should be " +"visible. See [enum ScrollMode] for options." +msgstr "控制垂直滚动条是否可用、应该何时可见。选项见 [enum ScrollMode]。" + msgid "Emitted when scrolling stops." msgstr "滚动停止时发出。" @@ -65725,6 +90174,19 @@ msgstr "[ScrollContainer] 的背景 [StyleBox]。" msgid "Segment shape resource for 2D physics." msgstr "用于 2D 物理的线段形状资源。" +msgid "" +"2D segment shape to be added as a [i]direct[/i] child of a [PhysicsBody2D] " +"or [Area2D] using a [CollisionShape2D] node. Consists of two points, " +"[code]a[/code] and [code]b[/code].\n" +"[b]Performance:[/b] Being a primitive collision shape, [SegmentShape2D] is " +"fast to check collisions against (though not as fast as [CircleShape2D])." +msgstr "" +"使用 [CollisionShape2D] 节点作为 [PhysicsBody2D] 或 [Area2D] 的[i]直接[/i]子" +"节点时,可被添加的 2D 线段形状。由两点组成,[code]a[/code] 和 [code]b[/" +"code]。\n" +"[b]性能:[/b]作为一种原始的碰撞形状,[SegmentShape2D] 可以快速检测碰撞(尽管" +"不如 [CircleShape2D] 快)。" + msgid "The segment's first point position." msgstr "该段的第一点的位置。" @@ -65742,6 +90204,9 @@ msgstr "" "可用于同步多个 [Thread] 的同步信号量。创建时初始化为零。小心避免死锁。对于二" "进制版本,请参阅 [Mutex]。" +msgid "Lowers the [Semaphore], allowing one more thread in." +msgstr "降低 [Semaphore],额外允许一个线程进入。" + msgid "" "Like [method wait], but won't block, so if the value is zero, fails " "immediately and returns [code]false[/code]. If non-zero, it returns " @@ -65750,9 +90215,46 @@ msgstr "" "与 [method wait] 类似,但不会阻塞,所以如果值为零,则会立即失败并返回 " "[code]false[/code]。如果非零,则返回 [code]true[/code] 以报告成功。" +msgid "Waits for the [Semaphore], if its value is zero, blocks until non-zero." +msgstr "等待该 [Semaphore],如果它的值为零,则阻塞到变为非零为止。" + +msgid "Separation ray shape resource for 2D physics." +msgstr "用于 2D 物理的分离射线形状资源。" + +msgid "" +"2D separation ray shape to be added as a [i]direct[/i] child of a " +"[PhysicsBody2D] or [Area2D] using a [CollisionShape2D] node. A ray is not " +"really a collision body; instead, it tries to separate itself from whatever " +"is touching its far endpoint. It's often useful for characters.\n" +"[b]Performance:[/b] Being a primitive collision shape, " +"[SeparationRayShape2D] is fast to check collisions against." +msgstr "" +"使用 [CollisionShape2D] 节点作为 [PhysicsBody2D] 或 [Area2D] 的[i]直接[/i]子" +"节点时,可被添加的 2D 分离射线形状。射线并不是真正的碰撞体;相反,它试图将自" +"己与接触其远端的任何东西分开。它通常用于角色。\n" +"[b]性能:[/b]作为一种原始的碰撞形状,[SeparationRayShape2D] 可以快速检测碰" +"撞。" + msgid "The ray's length." msgstr "射线的长度。" +msgid "Separation ray shape resource for 3D physics." +msgstr "用于 3D 物理的分离射线形状资源。" + +msgid "" +"3D separation ray shape to be added as a [i]direct[/i] child of a " +"[PhysicsBody3D] or [Area3D] using a [CollisionShape3D] node. A ray is not " +"really a collision body; instead, it tries to separate itself from whatever " +"is touching its far endpoint. It's often useful for characters.\n" +"[b]Performance:[/b] Being a primitive collision shape, " +"[SeparationRayShape3D] is fast to check collisions against." +msgstr "" +"使用 [CollisionShape3D] 节点作为 [PhysicsBody3D] 或 [Area3D] 的[i]直接[/i]子" +"节点时,可被添加的 3D 分离射线形状。射线并不是真正的碰撞体;相反,它试图将自" +"己与接触其远端的任何大小分开。它通常用于角色。\n" +"[b]性能:[/b]作为一种原始的碰撞形状,[SeparationRayShape3D] 可以快速检测碰" +"撞。" + msgid "Base class for separators." msgstr "分隔器的基类。" @@ -65827,6 +90329,14 @@ msgid "" "used for drawing." msgstr "用于基于每个粒子计算粒子信息的模式。不用于绘图。" +msgid "" +"Mode used for drawing skies. Only works with shaders attached to [Sky] " +"objects." +msgstr "用于绘制天空的模式。仅适用于附加到 [Sky] 对象的着色器。" + +msgid "Mode used for setting the color and density of volumetric fog effect." +msgstr "用于设置体积雾效果的颜色和密度的模式。" + msgid "A material that uses a custom [Shader] program." msgstr "使用自定义 [Shader] 程序的材质。" @@ -65912,17 +90422,24 @@ msgid "Base class for all 3D shape resources." msgstr "所有 3D 形状资源的基类。" msgid "" -"The collision margin for the shape. Used in Bullet Physics only.\n" -"Collision margins allow collision detection to be more efficient by adding " -"an extra shell around shapes. Collision algorithms are more expensive when " -"objects overlap by more than their margin, so a higher value for margins is " -"better for performance, at the cost of accuracy around edges as it makes " -"them less sharp." +"Base class for all 3D shape resources. Nodes that inherit from this can be " +"used as shapes for a [PhysicsBody3D] or [Area3D] objects." msgstr "" -"形状的碰撞边距。只在Bullet物理运算中使用。\n" -"碰撞边距允许通过在形状周围添加额外的外壳来使碰撞检测更有效。当物体重叠的部分" -"超过其边距时,碰撞算法的成本会更高,所以边距的数值越高对性能越好,但代价是边" -"缘的精度会降低。" +"所有 3D 形状资源的基类。派生节点可用作 [PhysicsBody3D] 或 [Area3D] 对象的形" +"状。" + +msgid "" +"Adds a collision exception so the shape does not report collisions with the " +"specified [CollisionObject2D] node." +msgstr "添加碰撞例外,使该形状不汇报与指定 [CollisionObject2D] 节点的碰撞。" + +msgid "" +"Adds a collision exception so the shape does not report collisions with the " +"specified [RID]." +msgstr "添加碰撞例外,使该形状不汇报与指定 [RID] 节点的碰撞。" + +msgid "Removes all collision exceptions for this shape." +msgstr "移除该形状的所有碰撞例外。" msgid "" "Removes a collision exception so the shape does report collisions with the " @@ -65937,6 +90454,13 @@ msgstr "移除碰撞例外,使该形状能够汇报与指定 [RID] 的碰撞 msgid "The [Shape2D]-derived shape to be used for collision queries." msgstr "派生自 [Shape2D] 的形状,用于碰撞查询。" +msgid "" +"The shape's destination point, relative to this node's [code]position[/code]." +msgstr "该形状的目标点,相对于该节点的 [code]position[/code]。" + +msgid "Removes all collision exceptions for this [ShapeCast3D]." +msgstr "移除该 [ShapeCast3D] 的所有碰撞例外。" + msgid "The [Shape3D]-derived shape to be used for collision queries." msgstr "派生自 [Shape3D] 的形状,用于碰撞查询。" @@ -66147,9 +90671,20 @@ msgid "" "Skeleton2D." msgstr "返回由 Skeleton2D 为父节点的节点层次结构中 [Bone2D] 节点的数量。" +msgid "Returns the local pose override transform for [param bone_idx]." +msgstr "返回骨骼 [param bone_idx] 的局部姿势覆盖变换。" + +msgid "" +"Returns the [SkeletonModificationStack2D] attached to this skeleton, if one " +"exists." +msgstr "如果存在,则返回附加到此骨架的 [SkeletonModificationStack2D]。" + msgid "Returns the [RID] of a Skeleton2D instance." msgstr "返回 Skeleton2D 实例的 [RID]。" +msgid "Sets the [SkeletonModificationStack2D] attached to this skeleton." +msgstr "设置附加到此骨架的 [SkeletonModificationStack2D]。" + msgid "Skeleton for characters and animated objects." msgstr "角色和动画对象的骨架。" @@ -66174,9 +90709,32 @@ msgstr "" "要设置不同类型的反向运动学,请考虑使用 [SkeletonIK3D],或在 [method Node." "_process] 中添加一个自定义 IK 实现作为子节点。" +msgid "" +"Adds a bone, with name [param name]. [method get_bone_count] will become the " +"bone index." +msgstr "" +"添加骨骼,名称为 [param name]。[method get_bone_count] 将成为该骨骼的索引。" + msgid "Clear all the bones in this skeleton." msgstr "清除这个骨架上的所有骨骼。" +msgid "Removes the global pose override on all bones in the skeleton." +msgstr "移除骨架中所有骨骼上的全局姿势覆盖。" + +msgid "Returns the bone index that matches [param name] as its name." +msgstr "返回名称与 [param name] 匹配的骨骼的索引。" + +msgid "Force updates the bone transforms/poses for all bones in the skeleton." +msgstr "强制更新该骨架中所有骨骼的变换/姿势。" + +msgid "" +"Force updates the bone transform for the bone at [param bone_idx] and all of " +"its children." +msgstr "强制更新索引为 [param bone_idx] 的骨骼及其所有子项的变换/姿势。" + +msgid "Returns the number of bones in the skeleton." +msgstr "返回骨架中骨骼的数量。" + msgid "" "Returns the overall transform of the specified bone, with respect to the " "skeleton. Being relative to the skeleton frame, this is not the actual " @@ -66193,6 +90751,15 @@ msgstr "" "返回指定骨骼的整体变换,相对于骨架,不包含任何全局姿势覆盖。由于是相对于骨架" "的,这不是该骨骼的实际“全局”变换。" +msgid "Returns the global pose override transform for [param bone_idx]." +msgstr "返回 [param bone_idx] 骨骼的全局姿势覆盖变换。" + +msgid "Returns the global rest transform for [param bone_idx]." +msgstr "返回 [param bone_idx] 骨骼的全局放松变换。" + +msgid "Returns the name of the bone at index [param bone_idx]." +msgstr "返回索引为 [param bone_idx] 的骨骼的名称。" + msgid "" "Returns the bone index which is the parent of the bone at [param bone_idx]. " "If -1, then bone has no parent.\n" @@ -66209,6 +90776,9 @@ msgstr "" "返回指定骨骼的姿势变换。姿势应用于自定义姿势之上,自定义姿势应用于放松姿势之" "上。" +msgid "Returns the rest transform for a bone [param bone_idx]." +msgstr "返回骨骼 [param bone_idx] 的放松变换。" + msgid "Returns all bones in the skeleton to their rest poses." msgstr "将骨架中的所有骨骼都恢复到放松姿势。" @@ -66388,6 +90958,13 @@ msgstr "" "使用节点变换,并忽略此属性。" msgid "" +"Target node [NodePath] for the IK chain. If available, the node's current " +"[Transform3D] is used instead of the [member target] property." +msgstr "" +"IK 链的目标节点 [NodePath]。如果有的话,将使用节点当前的 [Transform3D],而不" +"是 [member target] 属性。" + +msgid "" "The name of the current tip bone, the last bone in the IK chain placed at " "the [member target] transform (or [member target_node] if defined)." msgstr "" @@ -66406,6 +90983,11 @@ msgid "A resource that operates on [Bone2D] nodes in a [Skeleton2D]." msgstr "对 [Skeleton2D] 中的 [Bone2D] 节点进行操作的资源。" msgid "" +"A modification that uses CCDIK to manipulate a series of bones to reach a " +"target in 2D." +msgstr "使用 CCDIK 操纵一系列骨骼到达某个 2D 目标的修改器。" + +msgid "" "Returns the [Bone2D] node assigned to the CCDIK joint at [param joint_idx]." msgstr "返回分配给位于 [param joint_idx] 的 CCDIK 关节的 [Bone2D] 节点。" @@ -66415,6 +90997,13 @@ msgid "" msgstr "返回分配给位于 [param joint_idx] 的 CCDIK 关节的 [Bone2D] 节点的索引。" msgid "" +"Returns whether the CCDIK joint at [param joint_idx] uses an inverted joint " +"constraint. See [method set_ccdik_joint_constraint_angle_invert] for details." +msgstr "" +"返回索引为 [param joint_idx] 的 CCDIK 关节是否使用反向关节约束。详见 [method " +"set_ccdik_joint_constraint_angle_invert]。" + +msgid "" "Returns the maximum angle constraint for the joint at [param joint_idx]." msgstr "返回索引为 [param joint_idx] 的关节的最大角约束。" @@ -66423,19 +91012,49 @@ msgid "" msgstr "返回索引为 [param joint_idx] 的关节的最小角约束。" msgid "" +"Returns whether angle constraints on the CCDIK joint at [param joint_idx] " +"are enabled." +msgstr "返回索引为 [param joint_idx] 的 CCDIK 关节是否启用角度约束。" + +msgid "" "Sets the [Bone2D] node assigned to the CCDIK joint at [param joint_idx]." msgstr "设置分配给位于 [param joint_idx] 的 CCDIK 关节的 [Bone2D] 节点。" +msgid "" +"Sets whether the CCDIK joint at [param joint_idx] uses an inverted joint " +"constraint.\n" +"An inverted joint constraint only constraints the CCDIK joint to the angles " +"[i]outside of[/i] the inputted minimum and maximum angles. For this reason, " +"it is referred to as an inverted joint constraint, as it constraints the " +"joint to the outside of the inputted values." +msgstr "" +"设置索引为 [param joint_idx] 的 CCDIK 关节是否使用反向关节约束。\n" +"反向关节约束只会将该 CCDIK 关节的角度约束在输入的最大最小角度范围[i]之外[/" +"i]。因此,它被称为反向关节约束,因为它将关节约束在输入值的外部。" + msgid "Sets the maximum angle constraint for the joint at [param joint_idx]." msgstr "设置索引为 [param joint_idx] 的关节的最大角约束。" msgid "Sets the minimum angle constraint for the joint at [param joint_idx]." msgstr "设置索引为 [param joint_idx] 的关节的最小角约束。" +msgid "" +"Determines whether angle constraints on the CCDIK joint at [param joint_idx] " +"are enabled. When [code]true[/code], constraints will be enabled and taken " +"into account when solving." +msgstr "" +"决定是否启用 [param joint_idx] 处 CCDIK 关节上的角度约束。为 [code]true[/" +"code] 时将启用约束,在求解时纳入考虑范围。" + msgid "The number of CCDIK joints in the CCDIK modification." msgstr "CCDIK 修改中 CCDIK 关节的数量。" msgid "" +"A modification that uses FABRIK to manipulate a series of [Bone2D] nodes to " +"reach a target." +msgstr "使用 FABRIK 操纵一系列 [Bone2D] 到达某个目标的修改器。" + +msgid "" "Returns the [Bone2D] node assigned to the FABRIK joint at [param joint_idx]." msgstr "返回分配给位于 [param joint_idx] 的 FABRIK 关节的 [Bone2D] 节点。" @@ -66452,6 +91071,187 @@ msgstr "设置分配给位于 [param joint_idx] 的 FABRIK 关节的 [Bone2D] msgid "The number of FABRIK joints in the FABRIK modification." msgstr "FABRIK 修改中 FABRIK 关节的数量。" +msgid "" +"A modification that jiggles [Bone2D] nodes as they move towards a target." +msgstr "让 [Bone2D] 节点在朝某个目标移动的过程中产生摇晃的修改器。" + +msgid "" +"This modification moves a series of bones, typically called a bone chain, " +"towards a target. What makes this modification special is that it calculates " +"the velocity and acceleration for each bone in the bone chain, and runs a " +"very light physics-like calculation using the inputted values. This allows " +"the bones to overshoot the target and \"jiggle\" around. It can be " +"configured to act more like a spring, or sway around like cloth might.\n" +"This modification is useful for adding additional motion to things like " +"hair, the edges of clothing, and more. It has several settings to that allow " +"control over how the joint moves when the target moves.\n" +"[b]Note:[/b] The Jiggle modifier has [code]jiggle_joints[/code], which are " +"the data objects that hold the data for each joint in the Jiggle chain. This " +"is different from than [Bone2D] nodes! Jiggle joints hold the data needed " +"for each [Bone2D] in the bone chain used by the Jiggle modification." +msgstr "" +"这种修改器会将一系列的骨骼朝某个目标移动,这些骨骼通常称作骨骼链。这种修改器" +"的特点在于,它会为骨骼链中的每一个骨骼计算速度和加速度,并使用输入值运行一段" +"非常轻量级的类物理计算。这样这些骨骼就能够越过目标并来回“摇晃”(Jiggle)。根" +"据配置的不同,可以得到类似弹簧的摇晃,也可以得到类似布料的摇晃。\n" +"这种修改器可用于为头发、衣服边缘等添加额外的运动。可以通过不同的设置控制目标" +"移动时关节的移动方式。\n" +"[b]注意:[/b]Jiggle 修改器的 [code]jiggle_joints[/code] 属性中保存的是数据对" +"象,记录 Jiggle 链中各个关节的数据。这一点与 [Bone2D] 节点不同!Jiggle 关节保" +"存了 Jiggle 修改器使用的骨骼链中各个 [Bone2D] 所需的数据。" + +msgid "" +"Returns the collision mask used by the Jiggle modifier when collisions are " +"enabled." +msgstr "返回在启用碰撞时 Jiggle 修改器所使用的碰撞掩码。" + +msgid "" +"Returns the [Bone2D] node assigned to the Jiggle joint at [param joint_idx]." +msgstr "返回 [param joint_idx] 处 Jiggle 关节所分配的 [Bone2D] 节点。" + +msgid "" +"Returns the index of the [Bone2D] node assigned to the Jiggle joint at " +"[param joint_idx]." +msgstr "返回 [param joint_idx] 处 Jiggle 关节所分配 [Bone2D] 节点的索引。" + +msgid "Returns the amount of damping of the Jiggle joint at [param joint_idx]." +msgstr "返回 [param joint_idx] 处 Jiggle 关节的阻尼大小。" + +msgid "" +"Returns a [Vector2] representing the amount of gravity the Jiggle joint at " +"[param joint_idx] is influenced by." +msgstr "返回表示 [param joint_idx] 处 Jiggle 关节所受到的重力的 [Vector2]。" + +msgid "Returns the amount of mass of the jiggle joint at [param joint_idx]." +msgstr "返回 [param joint_idx] 处 Jiggle 关节的质量大小。" + +msgid "" +"Returns a boolean that indicates whether the joint at [param joint_idx] is " +"overriding the default Jiggle joint data defined in the modification." +msgstr "" +"返回表示 [param joint_idx] 处 Jiggle 关节是否覆盖修改器中定义的默认 Jiggle 关" +"节数据的布尔值。" + +msgid "Returns the stiffness of the Jiggle joint at [param joint_idx]." +msgstr "返回 [param joint_idx] 处 Jiggle 关节的刚度。" + +msgid "" +"Returns a boolean that indicates whether the joint at [param joint_idx] is " +"using gravity or not." +msgstr "返回表示 [param joint_idx] 处 Jiggle 关节是否使用重力的布尔值。" + +msgid "" +"Returns whether the jiggle modifier is taking physics colliders into account " +"when solving." +msgstr "返回 [param joint_idx] 处 Jiggle 关节在求解时是否考虑物理碰撞器。" + +msgid "" +"Sets the collision mask that the Jiggle modifier will use when reacting to " +"colliders, if the Jiggle modifier is set to take colliders into account." +msgstr "" +"在 Jiggle 修改器被设为考虑碰撞器时,设置该 Jiggle 修改器所需作出反应的碰撞器" +"的碰撞掩码。" + +msgid "" +"Sets the [Bone2D] node assigned to the Jiggle joint at [param joint_idx]." +msgstr "设置 [param joint_idx] 处 Jiggle 关节所分配的 [Bone2D] 节点。" + +msgid "" +"Sets the bone index, [param bone_idx], of the Jiggle joint at [param " +"joint_idx]. When possible, this will also update the [code]bone2d_node[/" +"code] of the Jiggle joint based on data provided by the linked skeleton." +msgstr "" +"设置 [param joint_idx] 处 Jiggle 关节的骨骼索引 [param bone_idx]。如果适用," +"还会根据所链接骨架提供的数据来更新 Jiggle 关节的 [code]bone2d_node[/code]。" + +msgid "Sets the amount of damping of the Jiggle joint at [param joint_idx]." +msgstr "设置 [param joint_idx] 处 Jiggle 关节的阻尼量。" + +msgid "Sets the gravity vector of the Jiggle joint at [param joint_idx]." +msgstr "设置 [param joint_idx] 处 Jiggle 关节的重力向量。" + +msgid "Sets the of mass of the Jiggle joint at [param joint_idx]." +msgstr "设置 [param joint_idx] 处 Jiggle 关节的质量。" + +msgid "" +"Sets whether the Jiggle joint at [param joint_idx] should override the " +"default Jiggle joint settings. Setting this to [code]true[/code] will make " +"the joint use its own settings rather than the default ones attached to the " +"modification." +msgstr "" +"设置 [param joint_idx] 处 Jiggle 关节是否应覆盖默认 Jiggle 关节设置。设置为 " +"[code]true[/code] 会使该关节使用自身的设置,不使用附加至修改器的设置。" + +msgid "Sets the of stiffness of the Jiggle joint at [param joint_idx]." +msgstr "设置 [param joint_idx] 处 Jiggle 关节的刚度。" + +msgid "Sets whether the Jiggle joint at [param joint_idx] should use gravity." +msgstr "设置 [param joint_idx] 处 Jiggle 关节是否应使用重力。" + +msgid "" +"If [code]true[/code], the Jiggle modifier will take colliders into account, " +"keeping them from entering into these collision objects." +msgstr "" +"如果为 [code]true[/code],则 Jiggle 修改器将考虑碰撞器,防止它们进入这些碰撞" +"对象。" + +msgid "" +"The default amount of damping applied to the Jiggle joints, if they are not " +"overridden. Higher values lead to more of the calculated velocity being " +"applied." +msgstr "" +"未被覆盖时,Jiggle 关节所受到的默认阻尼大小。值约高,所应用的计算得到的速度也" +"就约多。" + +msgid "" +"The default amount of gravity applied to the Jiggle joints, if they are not " +"overridden." +msgstr "未被覆盖时,Jiggle 关节所受到的默认重力大小。" + +msgid "The amount of Jiggle joints in the Jiggle modification." +msgstr "该 Jiggle 修改器中的 Jiggle 关节的数量。" + +msgid "" +"The default amount of mass assigned to the Jiggle joints, if they are not " +"overridden. Higher values lead to faster movements and more overshooting." +msgstr "" +"未被覆盖时,Jiggle 关节所分配的默认质量大小。值约高,移动速度也就约快,超出的" +"距离也就越大。" + +msgid "" +"The default amount of stiffness assigned to the Jiggle joints, if they are " +"not overridden. Higher values act more like springs, quickly moving into the " +"correct position." +msgstr "" +"未被覆盖时,Jiggle 关节所分配的默认刚度大小。值约高越像弹簧,会很快到达正确的" +"位置。" + +msgid "" +"The NodePath to the node that is the target for the Jiggle modification. " +"This node is what the Jiggle chain will attempt to rotate the bone chain to." +msgstr "" +"该 Jiggle 修改器目标节点的 NodePath 路径。这个节点是 Jiggle 链所要旋转至的目" +"标。" + +msgid "" +"Whether the gravity vector, [member gravity], should be applied to the " +"Jiggle joints, assuming they are not overriding the default settings." +msgstr "" +"假设 Jiggle 关节没有覆盖默认设置的前提下,是否应该对这些关节施加重力向量 " +"[member gravity]。" + +msgid "A modification that rotates a [Bone2D] node to look at a target." +msgstr "对 [Bone2D] 节点进行旋转,让它看向某个目标的修改器。" + +msgid "" +"This [SkeletonModification2D] rotates a bone to look a target. This is " +"extremely helpful for moving character's head to look at the player, " +"rotating a turret to look at a target, or any other case where you want to " +"make a bone rotate towards something quickly and easily." +msgstr "" +"这种 [SkeletonModification2D] 会对骨骼进行旋转,让它看向某个目标。适合让角色" +"的头部看向玩家、让炮塔看向目标以及其他需要让骨骼朝某个东西快速旋转的情况。" + msgid "Returns the constraint's maximum allowed angle." msgstr "返回该约束允许的最大角度。" @@ -66464,6 +91264,93 @@ msgstr "设置该约束允许的最大角度。" msgid "Sets the constraint's minimum allowed angle." msgstr "设置该约束允许的最小角度。" +msgid "The [Bone2D] node that the modification will operate on." +msgstr "要修改的 [Bone2D] 节点。" + +msgid "" +"A modification that applies the transforms of [PhysicalBone2D] nodes to " +"[Bone2D] nodes." +msgstr "将 [PhysicalBone2D] 节点的变换应用到 [Bone2D] 节点的修改器。" + +msgid "Returns the [PhysicalBone2D] node at [param joint_idx]." +msgstr "返回位于 [param joint_idx] 的 [PhysicalBone2D] 节点。" + +msgid "The number of [PhysicalBone2D] nodes linked in this modification." +msgstr "在这个修改器中链接的 [PhysicalBone2D] 节点的数量。" + +msgid "A modification that holds and executes a [SkeletonModificationStack2D]." +msgstr "存放并执行 [SkeletonModificationStack2D] 的修改器。" + +msgid "" +"This [SkeletonModification2D] holds a reference to a " +"[SkeletonModificationStack2D], allowing you to use multiple modification " +"stacks on a single [Skeleton2D].\n" +"[b]Note:[/b] The modifications in the held [SkeletonModificationStack2D] " +"will only be executed if their execution mode matches the execution mode of " +"the SkeletonModification2DStackHolder." +msgstr "" +"这种 [SkeletonModification2D] 可以存放对 [SkeletonModificationStack2D] 的引" +"用,让你能够对单个 [Skeleton2D] 使用多个修改器栈。\n" +"[b]注意:[/b][SkeletonModificationStack2D] 中所存放的修改器只有在各自的执行模" +"式与 SkeletonModification2DStackHolder 的执行模式匹配时才会执行。" + +msgid "" +"Returns the [SkeletonModificationStack2D] that this modification is holding." +msgstr "返回该修改器中存放的 [SkeletonModificationStack2D]。" + +msgid "" +"Sets the [SkeletonModificationStack2D] that this modification is holding. " +"This modification stack will then be executed when this modification is " +"executed." +msgstr "" +"设置该修改器中存放的 [SkeletonModificationStack2D]。这个修改器栈会在该修改器" +"执行时执行。" + +msgid "" +"A modification that rotates two bones using the law of cosigns to reach the " +"target." +msgstr "这种修改器会让两个骨骼按照余弦定理进行旋转,最终抵达目标。" + +msgid "" +"Returns the [Bone2D] node that is being used as the first bone in the " +"TwoBoneIK modification." +msgstr "返回 TwoBoneIK 修改器中作为第一个骨骼的 [Bone2D] 节点。" + +msgid "" +"Returns the index of the [Bone2D] node that is being used as the first bone " +"in the TwoBoneIK modification." +msgstr "返回 TwoBoneIK 修改器中作为第一个骨骼的 [Bone2D] 节点的索引。" + +msgid "" +"Returns the [Bone2D] node that is being used as the second bone in the " +"TwoBoneIK modification." +msgstr "返回 TwoBoneIK 修改器中作为第二个骨骼的 [Bone2D] 节点。" + +msgid "" +"Returns the index of the [Bone2D] node that is being used as the second bone " +"in the TwoBoneIK modification." +msgstr "返回 TwoBoneIK 修改器中作为第二个骨骼的 [Bone2D] 节点的索引。" + +msgid "" +"Sets the [Bone2D] node that is being used as the first bone in the TwoBoneIK " +"modification." +msgstr "设置 TwoBoneIK 修改器中作为第一个骨骼的 [Bone2D] 节点。" + +msgid "" +"Sets the index of the [Bone2D] node that is being used as the first bone in " +"the TwoBoneIK modification." +msgstr "设置 TwoBoneIK 修改器中作为第一个骨骼的 [Bone2D] 节点的索引。" + +msgid "" +"Sets the [Bone2D] node that is being used as the second bone in the " +"TwoBoneIK modification." +msgstr "设置 TwoBoneIK 修改器中作为第二个骨骼的 [Bone2D] 节点。" + +msgid "" +"Sets the index of the [Bone2D] node that is being used as the second bone in " +"the TwoBoneIK modification." +msgstr "设置 TwoBoneIK 修改器中作为第二个骨骼的 [Bone2D] 节点的索引。" + msgid "A resource that holds a stack of [SkeletonModification2D]s." msgstr "存放 [SkeletonModification2D] 栈的资源。" @@ -66473,12 +91360,40 @@ msgstr "将传入的 [SkeletonModification2D] 入栈。" msgid "Enables all [SkeletonModification2D]s in the stack." msgstr "启用栈中的所有 [SkeletonModification2D]。" +msgid "" +"Returns the [SkeletonModification2D] at the passed-in index, [param mod_idx]." +msgstr "返回传入索引 [param mod_idx] 处的 [SkeletonModification2D]。" + +msgid "" +"Returns the [Skeleton2D] node that the SkeletonModificationStack2D is bound " +"to." +msgstr "返回 SkeletonModification2D 绑定到的 [Skeleton2D] 节点。" + +msgid "The number of modifications in the stack." +msgstr "栈中修改器的数量。" + msgid "Returns the group of the bone at [param bone_idx]." msgstr "返回索引为 [param bone_idx] 的骨骼的分组。" +msgid "Returns the reference pose transform for bone [param bone_idx]." +msgstr "返回索引为 [param bone_idx] 的骨骼的参考姿势变换。" + +msgid "Returns the tail direction of the bone at [param bone_idx]." +msgstr "返回索引为 [param bone_idx] 的骨骼的尾部方向。" + msgid "Sets the group of the bone at [param bone_idx]." msgstr "设置索引为 [param bone_idx] 的骨骼的分组。" +msgid "Sets the reference pose transform for bone [param bone_idx]." +msgstr "设置骨骼 [param bone_idx] 的参考姿势变换。" + +msgid "" +"A bone name that will be used as the root bone in [AnimationTree]. This " +"should be the bone of the parent of hips that exists at the world origin." +msgstr "" +"会被用作 [AnimationTree] 中根骨骼的骨骼名称。应该是髋部父级的骨骼,位于世界原" +"点。" + msgid "" "A bone name which will use model's height as the coefficient for " "normalization. For example, [SkeletonProfileHumanoid] defines it as " @@ -66496,6 +91411,28 @@ msgstr "人形 [SkeletonProfile] 预设。" msgid "Background that uses a [Material] to draw a sky." msgstr "使用 [Material] 绘制天空的背景。" +msgid "" +"The [Sky]'s radiance map size. The higher the radiance map size, the more " +"detailed the lighting from the [Sky] will be.\n" +"See [enum RadianceSize] constants for values.\n" +"[b]Note:[/b] Some hardware will have trouble with higher radiance sizes, " +"especially [constant RADIANCE_SIZE_512] and above. Only use such high values " +"on high-end hardware." +msgstr "" +"该 [Sky] 的辐照度贴图大小。辐射度贴图尺寸越大,来自 [Sky] 的照明就越详细。\n" +"取值见 [enum RadianceSize] 常量。\n" +"[b]注意:[/b]某些硬件在使用较高的辐照度大小,尤其是 [constant " +"RADIANCE_SIZE_512] 及以上时,会遇到问题。请仅在高端硬件上使用如此高的值。" + +msgid "" +"[Material] used to draw the background. Can be [PanoramaSkyMaterial], " +"[ProceduralSkyMaterial], [PhysicalSkyMaterial], or even a [ShaderMaterial] " +"if you want to use your own custom shader." +msgstr "" +"用于绘制该背景的 [Material]。可以是 [PanoramaSkyMaterial]、" +"[ProceduralSkyMaterial]、[PhysicalSkyMaterial],如果你想使用自定义着色器也可" +"以是 [ShaderMaterial]。" + msgid "Radiance texture size is 32×32 pixels." msgstr "辐照度纹理尺寸为 32×32 像素。" @@ -66613,6 +91550,20 @@ msgid "Returns [code]true[/code] if vertex is set to pinned." msgstr "如果顶点设置为固定,则返回 [code]true[/code]。" msgid "" +"Based on [code]value[/code], enables or disables the specified layer in the " +"[member collision_layer], given a [param layer_number] between 1 and 32." +msgstr "" +"根据 [code]value[/code],启用或禁用 [member collision_layer] 中指定的层,给定" +"的 [param layer_number] 在 1 和 32 之间。" + +msgid "" +"Based on [code]value[/code], enables or disables the specified layer in the " +"[member collision_mask], given a [param layer_number] between 1 and 32." +msgstr "" +"根据 [code]value[/code],启用或禁用 [member collision_mask] 中指定的层,给定" +"的 [param layer_number] 在 1 和 32 之间。" + +msgid "" "Sets the pinned state of a surface vertex. When set to [code]true[/code], " "the optional [param attachment_path] can define a [Node3D] the pinned vertex " "will be attached to." @@ -66693,12 +91644,28 @@ msgstr "球体半径." msgid "Number of segments along the height of the sphere." msgstr "沿着球体高度的段数。" +msgid "Spherical shape for use with occlusion culling in [OccluderInstance3D]." +msgstr "在 [OccluderInstance3D] 中进行遮挡剔除的球体形状。" + msgid "The sphere's radius in 3D units." msgstr "球体半径,使用 3D 单位。" msgid "Sphere shape resource for 3D collisions." msgstr "用于 3D 碰撞的球体形状资源。" +msgid "" +"3D sphere shape to be added as a [i]direct[/i] child of a [PhysicsBody3D] or " +"[Area3D] using a [CollisionShape3D] node. This shape is useful for modeling " +"sphere-like 3D objects.\n" +"[b]Performance:[/b] Being a primitive collision shape, [SphereShape3D] is " +"the fastest collision shape to check collisions against, as it only requires " +"a distance check with the shape's origin." +msgstr "" +"使用 [CollisionShape3D] 节点作为 [PhysicsBody3D] 或 [Area3D] 的[i]直接[/i]子" +"节点时,可被添加的 3D 球体形状。该形状可用于对类球体 3D 对象进行建模。\n" +"[b]性能:[/b]作为一种原始的碰撞形状,[SphereShape3D] 是检测碰撞的最快碰撞形" +"状,因为它只需要与该形状的原点进行距离检测。" + msgid "The sphere's radius. The shape's diameter is double the radius." msgstr "球体的半径。形状的直径是半径的两倍。" @@ -66735,10 +91702,21 @@ msgid "" msgstr "在 [SpinBox] 的数值前添加指定的 [code]prefix[/code] 字符串。" 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 " +"behavior." +msgstr "" +"如果为 [code]true[/code],则该 [SpinBox] 会在 [LineEdit] 获得焦点时选中整个文" +"本。点击上下箭头不会触发这种行为。" + +msgid "" "Adds the specified [code]suffix[/code] string after the numerical value of " "the [SpinBox]." msgstr "在 [SpinBox] 的数值后添加指定的 [code]suffix[/code] 字符串。" +msgid "Sets a custom [Texture2D] for up and down arrows of the [SpinBox]." +msgstr "为该 [SpinBox] 的上下箭头设置自定义的 [Texture2D]。" + msgid "Container for splitting and adjusting." msgstr "用于拆分和调整的容器。" @@ -66771,6 +91749,15 @@ msgstr "" "两个 [Control] 之间拆分的初始偏移量,[code]0[/code] 位于第一个 [Control] 的末" "尾。" +msgid "" +"If [code]true[/code], the [SplitContainer] will arrange its children " +"vertically, rather than horizontally.\n" +"Can't be changed when using [HSplitContainer] and [VSplitContainer]." +msgstr "" +"如果为 [code]true[/code],则该 [SplitContainer] 会垂直排列其子代,而不是水平" +"排列。\n" +"在使用 [HSplitContainer] 和 [VSplitContainer] 时无法改变。" + msgid "Emitted when the dragger is dragged by user." msgstr "当用户拖动拖动器时发出。" @@ -66873,10 +91860,19 @@ msgstr "" "将具有给定 [RID] 的 [PhysicsBody3D] 对象,添加到从碰撞检查中排除的 " "[PhysicsBody3D] 对象列表中。" +msgid "" +"Clears the list of [PhysicsBody3D] objects excluded from the collision check." +msgstr "清空碰撞检测排除 [PhysicsBody3D] 对象的列表。" + msgid "Returns the spring arm's current length." msgstr "返回弹簧臂的当前长度。" msgid "" +"Removes the given [RID] from the list of [PhysicsBody3D] objects excluded " +"from the collision check." +msgstr "从碰撞检测排除 [PhysicsBody3D] 对象的列表中移除给定的 [RID]。" + +msgid "" "The layers against which the collision check shall be done. See " "[url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-" "and-masks]Collision layers and masks[/url] in the documentation for more " @@ -66993,6 +91989,13 @@ msgstr "" "region_rect]。" msgid "" +"If [code]true[/code], the outermost pixels get blurred out. [member " +"region_enabled] must be [code]true[/code]." +msgstr "" +"如果为 [code]true[/code],则最外侧的像素会变得模糊。[member region_enabled] " +"必须为 [code]true[/code]。" + +msgid "" "The region of the atlas texture to display. [member region_enabled] must be " "[code]true[/code]." msgstr "" @@ -67022,12 +92025,40 @@ msgstr "" "在 3D 环境中显示 2D 纹理的节点。显示的纹理可以是来自较大图集纹理的区域,也可" "以是来自精灵表动画的帧。另见 [SpriteBase3D],定义有公告板模式等属性。" +msgid "" +"If [code]true[/code], the sprite will use [member region_rect] and display " +"only the specified part of its texture." +msgstr "" +"如果为 [code]true[/code],则该精灵会使用 [member region_rect],只显示纹理中的" +"指定部分。" + +msgid "" +"[Texture2D] object to draw. If [member GeometryInstance3D.material_override] " +"is used, this will be overridden. The size information is still used." +msgstr "" +"要绘制的 [Texture2D] 对象。如果使用 [member GeometryInstance3D." +"material_override],则这个属性会被覆盖。仍会使用尺寸信息。" + msgid "2D sprite node in 3D environment." msgstr "3D 环境中的 2D 精灵节点。" +msgid "" +"A node that displays 2D texture information in a 3D environment. See also " +"[Sprite3D] where many other properties are defined." +msgstr "" +"在 3D 环境中显示 2D 纹理信息的节点。另请参阅 [Sprite3D],其中定义了许多其他属" +"性。" + msgid "Returns the rectangle representing this sprite." msgstr "返回表示此精灵的矩形。" +msgid "" +"If [code]true[/code], the specified flag will be enabled. See [enum " +"SpriteBase3D.DrawFlags] for a list of flags." +msgstr "" +"如果 [code]true[/code],则指定的标志将被启用。标志列表见 [enum SpriteBase3D." +"DrawFlags]。" + msgid "The direction in which the front of the texture faces." msgstr "纹理正面朝向的方向。" @@ -67064,6 +92095,12 @@ msgstr "" "方式。这是因为不透明对象不被排序,而透明对象则从后往前排序(取决于优先级)。" msgid "" +"If [code]true[/code], the [Light3D] in the [Environment] has effects on the " +"sprite." +msgstr "" +"如果为 [code]true[/code],则 [Environment] 中的 [Light3D] 对该精灵有影响。" + +msgid "" "If [code]true[/code], the texture's transparency and the opacity are used to " "make those parts of the sprite invisible." msgstr "" @@ -67098,6 +92135,13 @@ msgstr "" msgid "Adds a new [param anim] animation to the library." msgstr "向库中添加新动画 [param anim]。" +msgid "" +"Adds a frame to the [param anim] animation. If [param at_position] is " +"[code]-1[/code], the frame will be added to the end of the animation." +msgstr "" +"向 [param anim] 动画中添加一帧。如果 [param at_position] 为 [code]-1[/code]," +"则该帧会添加至该动画的末尾。" + msgid "Removes all frames from the [param anim] animation." msgstr "删除 [param anim] 动画中的所有帧。" @@ -67140,10 +92184,38 @@ msgstr "移除 [param anim] 动画中索引为 [param idx] 的帧。" msgid "Changes the [param anim] animation's name to [param newname]." msgstr "将 [param anim] 动画的名称更改为 [param newname]。" +msgid "" +"If [param loop] is [code]true[/code], the [param anim] animation will loop " +"when it reaches the end, or the start if it is played in reverse." +msgstr "" +"如果 [param loop] 为 [code]true[/code],则 [param anim] 动画会在到达结尾时循" +"环,逆序播放时则为到达开头时循环。" + msgid "Sets the speed for the [param anim] animation in frames per second." msgstr "设置 [param anim] 动画的速度,单位为帧每秒。" msgid "" +"Sets the [param texture] and the [param duration] of the frame [param idx] " +"in the [param anim] animation." +msgstr "" +"设置 [param anim] 动画中索引为 [param idx] 的帧的纹理 [param texture] 和持续" +"时间 [param duration]。" + +msgid "" +"Physically based rendering (PBR) material that can be applied to 3D objects." +msgstr "基于物理的渲染(PBR)材质,可以对 3D 对象应用。" + +msgid "" +"[StandardMaterial3D]'s properties are inherited from [BaseMaterial3D]. " +"[StandardMaterial3D] uses separate textures for ambient occlusion, roughness " +"and metallic maps. To use a single ORM map for all 3 textures, use an " +"[ORMMaterial3D] instead." +msgstr "" +"[StandardMaterial3D] 的属性继承自 [BaseMaterial3D]。[StandardMaterial3D] 为环" +"境光遮蔽、粗糙度和金属性贴图使用单独的纹理。要为所有 3 个纹理使用一个 ORM 贴" +"图,请使用 [ORMMaterial3D] 代替。" + +msgid "" "Physics body for 2D physics which is static or moves only by script. Useful " "for floor and walls." msgstr "静态或者只能被脚本移动的 2D 物理物体。可用于地面和墙体。" @@ -67493,7 +92565,11 @@ msgid "Stream peer handling GZIP and deflate compression/decompresison." msgstr "处理 GZIP 和 deflate 压缩/解压缩的流对等体。" msgid "Clears this stream, resetting the internal state." -msgstr "将流清空,重设内部状态。" +msgstr "清空该流,重设内部状态。" + +msgid "" +"Finalizes the stream, compressing or decompressing any buffered chunk left." +msgstr "终止该流,对缓冲中剩余的数据块进行压缩或解压缩。" msgid "" "Start the stream in compression mode with the given [param buffer_size], if " @@ -69118,6 +94194,72 @@ msgid "Returns the character code at position [param at]." msgstr "返回位于 [param at] 处的字符的代码。" msgid "" +"Decodes the string from its URL-encoded format. This method is meant to " +"properly decode the parameters in a URL when receiving an HTTP request. See " +"also [method uri_encode].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"print(url.uri_decode()) # Prints \"$DOCS_URL/?highlight=Godot Engine:docs\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"GD.Print(url.URIDecode()) // Prints \"$DOCS_URL/?highlight=Godot Engine:" +"docs\"\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将该字符串从 URL 编码格式中解码。该方法的目的是在收到 HTTP 请求时正确解码 " +"URL 中的参数。另见 [method uri_encode]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"print(url.uri_decode()) # 输出 \"$DOCS_URL/?highlight=Godot Engine:docs\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var url = \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"GD.Print(url.URIDecode()) // 输出 \"$DOCS_URL/?highlight=Godot Engine:" +"docs\"\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Encodes the string to URL-friendly format. This method is meant to properly " +"encode the parameters in a URL when sending an HTTP request. See also " +"[method uri_decode].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prefix = \"$DOCS_URL/?highlight=\"\n" +"var url = prefix + \"Godot Engine:docs\".uri_encode()\n" +"\n" +"print(url) # Prints \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var prefix = \"$DOCS_URL/?highlight=\";\n" +"var url = prefix + \"Godot Engine:docs\".URIEncode();\n" +"\n" +"GD.Print(url); // Prints \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将该字符串按照对 URL 友好的格式进行编码。该方法的目的是在发送 HTTP 请求时,正" +"确编码 URL 中的参数。另见 [method uri_decode]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prefix = \"$DOCS_URL/?highlight=\"\n" +"var url = prefix + \"Godot Engine:docs\".uri_encode()\n" +"\n" +"print(url) # 输出 \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var prefix = \"$DOCS_URL/?highlight=\";\n" +"var url = prefix + \"Godot Engine:docs\".URIEncode();\n" +"\n" +"GD.Print(url); // 输出 \"$DOCS_URL/?highlight=Godot%20Engine%3%docs\"\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Returns a copy of the string with all characters that are not allowed in " "[method is_valid_filename] replaced with underscores." msgstr "" @@ -69486,6 +94628,30 @@ msgstr "" "[code]pressed[/code] 的 [StyleBox]之上。这样的行为有助于 [code]focus[/code] " "[StyleBox] 在不同节点上复用。" +msgid "" +"Virtual method to be implemented by the user. Returns a custom minimum size " +"that the stylebox must respect when drawing. By default [method " +"get_minimum_size] only takes content margins into account. This method can " +"be overridden to add another size restriction. A combination of the default " +"behavior and the output of this method will be used, to account for both " +"sizes." +msgstr "" +"可以由用户实现的虚拟方法。样式盒在绘制时必须遵循所返回的自定义最小尺寸。默认" +"情况下,[method get_minimum_size] 仅考虑边距。可以覆盖这个方法添加其他尺寸限" +"制。会使用默认行为和这个方法输出的组合,两个大小均进行考虑。" + +msgid "" +"Draws this stylebox using a canvas item identified by the given [RID].\n" +"The [RID] value can either be the result of [method CanvasItem." +"get_canvas_item] called on an existing [CanvasItem]-derived node, or " +"directly from creating a canvas item in the [RenderingServer] with [method " +"RenderingServer.canvas_item_create]." +msgstr "" +"使用由给定 [RID] 标识的画布项目绘制此样式盒。\n" +"[RID] 值可以通过在现有 [CanvasItem] 派生节点上调用 [method CanvasItem." +"get_canvas_item] 得到,也可以在 [RenderingServer] 中使用 [method " +"RenderingServer.canvas_item_create] 直接创建。" + msgid "Returns the default margin of the specified [enum Side]." msgstr "返回指定边 [enum Side] 的默认边距。" @@ -70239,6 +95405,21 @@ msgstr "" "为每个顶点生成切向量。要求每个顶点已经设置了 UV 和法线,参阅 [method " "generate_normals]。" +msgid "Returns the axis-aligned bounding box of the vertex positions." +msgstr "返回顶点位置的轴对齐边界框。" + +msgid "" +"Returns the format for custom [param channel_index] (currently up to 4). " +"Returns [constant CUSTOM_MAX] if this custom channel is unused." +msgstr "" +"返回索引为 [param channel_index] 的自定义通道的格式(索引最多为 4)。如果这个" +"自定义通道尚未使用,则返回 [constant CUSTOM_MAX]。" + +msgid "" +"Returns the type of mesh geometry, such as [constant Mesh." +"PRIMITIVE_TRIANGLES]." +msgstr "返回网格几何体的类型,例如 [constant Mesh.PRIMITIVE_TRIANGLES]。" + msgid "" "Shrinks the vertex array by creating an index array. This can improve " "performance by avoiding vertex reuse." @@ -70249,6 +95430,26 @@ msgid "" "must contain 4 integers." msgstr "指定用于[i]下一个[/i]顶点的骨骼数组。[param bones] 必须包含 4 个整数。" +msgid "" +"Sets the custom value on this vertex for [param channel_index].\n" +"[method set_custom_format] must be called first for this [param " +"channel_index]. Formats which are not RGBA will ignore other color channels." +msgstr "" +"设置这个顶点的 [param channel_index] 通道的自定义值。\n" +"必须先为 [param channel_index] 通道调用 [method set_custom_format]。非 RGBA " +"格式会忽略其他颜色通道。" + +msgid "" +"Sets the color format for this custom [param channel_index]. Use [constant " +"CUSTOM_MAX] to disable.\n" +"Must be invoked after [method begin] and should be set before [method " +"commit] or [method commit_to_arrays]." +msgstr "" +"设置索引为 [param channel_index] 的自定义通道的颜色格式。禁用请使用 " +"[constant CUSTOM_MAX]。\n" +"必须在 [method begin] 之后调用,应当在 [method commit] 或 [method " +"commit_to_arrays] 之前设置。" + msgid "Sets [Material] to be used by the [Mesh] you are constructing." msgstr "设置要由您正在构建的 [Mesh] 使用的 [Material]。" @@ -70304,6 +95505,22 @@ msgstr "" "顶点都需要设置该信息,且为第一个顶点提交失败,则可能根本不会使用该信息。" msgid "" +"Limits range of data passed to [method set_custom] to unsigned normalized 0 " +"to 1 stored in 8 bits per channel. See [constant Mesh." +"ARRAY_CUSTOM_RGBA8_UNORM]." +msgstr "" +"将传递给 [method set_custom] 的数据限制到无符号归一化的 0 到 1 范围内,每个通" +"道存储 8 个比特位。见 [constant Mesh.ARRAY_CUSTOM_RGBA8_UNORM]。" + +msgid "" +"Limits range of data passed to [method set_custom] to signed normalized -1 " +"to 1 stored in 8 bits per channel. See [constant Mesh." +"ARRAY_CUSTOM_RGBA8_SNORM]." +msgstr "" +"将传递给 [method set_custom] 的数据限制到带符号归一化的 -1 到 1 范围内,每个" +"通道存储 8 个比特位。见 [constant Mesh.ARRAY_CUSTOM_RGBA8_SNORM]。" + +msgid "" "Stores data passed to [method set_custom] as half precision floats, and uses " "only red and green color channels. See [constant Mesh.ARRAY_CUSTOM_RG_HALF]." msgstr "" @@ -70379,6 +95596,15 @@ msgid "Returns the associated [TextEdit] node." msgstr "返回关联的 [TextEdit] 节点。" msgid "" +"Font loaded from a system font.\n" +"[b]Note:[/b] This class is implemented on iOS, Linux, macOS and Windows, on " +"other platforms it will fallback to default theme font." +msgstr "" +"从系统字体加载的字体。\n" +"[b]注意:[/b]这个类在 iOS、Linux、macOS 和 Windows 上实现,在其他平台上它会回" +"退到默认的主题字体。" + +msgid "" "[SystemFont] loads a font from a system font with the first matching name " "from [member font_names].\n" "It will attempt to match font style, but it's not guaranteed.\n" @@ -70510,6 +95736,16 @@ msgid "Removes the tab at index [param tab_idx]." msgstr "删除索引 [param tab_idx] 处的选项卡。" 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 " +"clickable (See [signal tab_button_pressed]). Giving it a [code]null[/code] " +"value will hide the button." +msgstr "" +"设置索引为 [param tab_idx] 的选项卡按钮的图标 [param icon](位于右侧,在关闭" +"按钮之前),会将该按钮设为可见且可点击(见 [signal tab_button_pressed])。给" +"定 [code]null[/code] 值会隐藏该按钮。" + +msgid "" "If [param disabled] is [code]true[/code], disables the tab at index [param " "tab_idx], making it non-interactable." msgstr "" @@ -70572,6 +95808,9 @@ msgstr "" "设置关闭按钮何时出现在选项卡上。有关详细信息,请参阅 [enum " "CloseButtonDisplayPolicy]。" +msgid "The number of tabs currently in the bar." +msgstr "选项卡栏中当前的选项卡数量。" + msgid "" "Emitted when the active tab is rearranged via mouse drag. See [member " "drag_to_rearrange_enabled]." @@ -70597,6 +95836,11 @@ msgid "" "enabled." msgstr "右键单击选项卡时发出。必须启用 [member select_with_rmb]。" +msgid "" +"Emitted when a tab is selected via click or script, even if it is the " +"current tab." +msgstr "通过点击或脚本选中某个选项卡时发出,即便该选项卡本来就是当前选项卡。" + msgid "Places tabs to the left." msgstr "将选项卡置于左侧。" @@ -70747,6 +95991,13 @@ msgstr "返回索引为 [param tab_idx] 的选项卡的 [Control] 节点。" msgid "Returns the number of tabs." msgstr "返回选项卡的数量。" +msgid "" +"Returns the index of the tab tied to the given [param control]. The control " +"must be a child of the [TabContainer]." +msgstr "" +"返回与给定的 [param control] 绑定的标签的索引。该控件必须为 [TabContainer] 的" +"子节点。" + msgid "Sets the button icon from the tab at index [param tab_idx]." msgstr "设置索引为 [param tab_idx] 的选项卡的按钮图标。" @@ -70769,6 +96020,11 @@ msgstr "" "会被设为 [code]true[/code],其他所有都设置为 [code]false[/code]。" msgid "" +"Sets the position at which tabs will be placed. See [enum TabBar." +"AlignmentMode] for details." +msgstr "设置选项卡的放置位置。详情见 [enum TabBar.AlignmentMode]。" + +msgid "" "If [code]true[/code], tabs are visible. If [code]false[/code], tabs' content " "and titles are hidden." msgstr "" @@ -70933,9 +96189,21 @@ msgstr "" "在给定的位置添加新的光标。返回新光标的索引,如果位置无效则返回 [code]-1[/" "code]。" +msgid "" +"Adds an additional caret above or below every caret. If [param below] is " +"true the new caret will be added below and above otherwise." +msgstr "" +"在每个光标上方或下方添加一个额外的光标。如果 [param below] 为 true,则会在下" +"方添加新光标,否则为上方。" + msgid "Adjust the viewport so the caret is visible." msgstr "调整视口,让光标可见。" +msgid "" +"Called when the user presses the backspace key. Can be overridden with " +"[method _backspace]." +msgstr "用户按下退格键时调用。可以用 [method _backspace] 覆盖。" + msgid "Performs a full reset of [TextEdit], including undo history." msgstr "执行对 [TextEdit] 的完全重置,包括撤消历史。" @@ -71357,6 +96625,15 @@ msgstr "将当前版本标记为已保存。" msgid "Perform undo operation." msgstr "执行撤销操作。" +msgid "Sets if the caret should blink." +msgstr "设置文本光标是否应该闪烁。" + +msgid "Sets if multiple carets are allowed." +msgstr "设置是否允许使用多个文本光标。" + +msgid "Set the type of caret to draw." +msgstr "设置要绘制的文本光标的类型。" + msgid "If [code]true[/code], allow drag and drop of selected text." msgstr "如果为 [code]true[/code],则允许拖放选中的文本。" @@ -71398,6 +96675,9 @@ msgid "" "scroll value in pixels." msgstr "如果有一个水平滚动条,这决定了当前的水平滚动值,单位是像素。" +msgid "Allow scrolling past the last line into \"virtual\" space." +msgstr "允许滚动过最后一行,进入“虚拟”空间。" + msgid "" "If there is a vertical scrollbar, this determines the current vertical " "scroll value in line numbers, starting at 0 for the top line." @@ -71562,6 +96842,30 @@ msgstr "" "向文本缓冲中添加内联对象,[param key] 必须唯一。在文本中,对象使用 [param " "length] 个对象替换字符表示。" +msgid "Adds text span and font to draw it." +msgstr "添加文本区间以及用于绘制的字体。" + +msgid "" +"Returns the text ascent (number of pixels above the baseline for horizontal " +"layout or to the left of baseline for vertical)." +msgstr "" +"返回该文本的升部(水平排版时为基线上方的像素数,垂直排版时为基线左侧的像素" +"数)。" + +msgid "" +"Returns the text descent (number of pixels below the baseline for horizontal " +"layout or to the right of baseline for vertical)." +msgstr "" +"返回该文本的降部(水平排版时为基线下方的像素数,垂直排版时为基线右侧的像素" +"数)。" + +msgid "Returns thickness of the underline." +msgstr "返回下划线的粗细度。" + +msgid "" +"Returns width (for horizontal layout) or height (for vertical) of the text." +msgstr "返回文本的宽度(对于水平排版)或高度(对于垂直排版)。" + msgid "Returns array of inline objects." msgstr "返回内联对象的数组。" @@ -71680,9 +96984,27 @@ msgid "" "Returns the size of the bounding box of the paragraph, without line breaks." msgstr "返回段落边界框的大小,不带换行符。" +msgid "Returns the size of the bounding box of the paragraph." +msgstr "返回段落边界框的大小。" + +msgid "Aligns paragraph to the given tab-stops." +msgstr "将段落与给定的制表位对齐。" + msgid "Paragraph horizontal alignment." msgstr "段落的水平对齐。" +msgid "Line breaking rules. For more info see [TextServer]." +msgstr "断行规则。详情见 [TextServer]。" + +msgid "" +"Custom punctuation character list, used for word breaking. If set to empty " +"string, server defaults are used." +msgstr "" +"自定义标点字符列表,用于分词。如果设置为空字符串,则使用服务器的默认值。" + +msgid "Limits the lines of text shown." +msgstr "限制显示文本的行数。" + msgid "Paragraph width." msgstr "段落宽度。" @@ -71846,6 +97168,9 @@ msgstr "设置字体微调模式。仅由动态字体使用。" msgid "Adds override for [method font_is_language_supported]." msgstr "为 [method font_is_language_supported] 添加覆盖。" +msgid "Sets source font size used to generate MSDF textures." +msgstr "设置用于生成 MSDF 纹理的源字体大小。" + msgid "Sets the font family name." msgstr "设置该字体的家族名称。" @@ -71855,6 +97180,31 @@ msgstr "设置字体 OpenType 特性集覆盖。" msgid "Adds override for [method font_is_script_supported]." msgstr "为 [method font_is_script_supported] 添加覆盖。" +msgid "" +"Sets font stretch amount, compared to a normal width. A percentage value " +"between [code]50%[/code] and [code]200%[/code].\n" +"[b]Note:[/b] This value is used for font matching only and will not affect " +"font rendering. Use [method font_set_face_index], [method " +"font_set_variation_coordinates], or [method font_set_transform] instead." +msgstr "" +"设置字体相对于普通宽度的拉伸量,是在 [code]50%[/code] 和 [code]200%[/code] 之" +"间的百分比值。\n" +"[b]注意:[/b]这个值仅用于匹配字体,不会影响字体的渲染。请改用 [method " +"font_set_face_index]、[method font_set_variation_coordinates] 或 [method " +"font_set_transform]。" + +msgid "" +"Sets the font style flags, see [enum FontStyle].\n" +"[b]Note:[/b] This value is used for font matching only and will not affect " +"font rendering. Use [method font_set_face_index], [method " +"font_set_variation_coordinates], [method font_set_embolden], or [method " +"font_set_transform] instead." +msgstr "" +"设置字体样式标志,见 [enum FontStyle]。\n" +"[b]注意:[/b]这个值仅用于匹配字体,不会影响字体的渲染。请改用 [method " +"font_set_face_index]、[method font_set_variation_coordinates]、[method " +"font_set_embolden] 或 [method font_set_transform]。" + msgid "Sets the font style name." msgstr "设置字体的样式名称。" @@ -71864,6 +97214,20 @@ msgstr "设置字体的次像素字形定位模式。" msgid "Sets font cache texture image data." msgstr "设置字体的缓存纹理图像数据。" +msgid "" +"Sets weight (boldness) of the font. A value in the [code]100...999[/code] " +"range, normal font weight is [code]400[/code], bold font weight is " +"[code]700[/code].\n" +"[b]Note:[/b] This value is used for font matching only and will not affect " +"font rendering. Use [method font_set_face_index], [method " +"font_set_variation_coordinates], or [method font_set_embolden] instead." +msgstr "" +"设置字体的字重(粗度)。字重是在 [code]100...999[/code] 范围内的值,普通字重" +"为 [code]400[/code],粗体字重为 [code]700[/code]。\n" +"[b]注意:[/b]这个值仅用于匹配字体,不会影响字体的渲染。请改用 [method " +"font_set_face_index]、[method font_set_variation_coordinates]、[method " +"font_set_embolden] 或 [method font_set_transform]。" + msgid "Returns the dictionary of the supported OpenType features." msgstr "返回支持的 OpenType 特性的字典。" @@ -71884,6 +97248,11 @@ msgstr "释放由该 [TextServer] 创建的某个对象。" msgid "Returns text server features, see [enum Feature]." msgstr "返回文本服务器的功能,见 [enum Feature]。" +msgid "" +"Returns size of the replacement character (box with character hexadecimal " +"code that is drawn in place of invalid characters)." +msgstr "返回替换字符的大小(在无效字符处绘制的带十六进制字符代码的框)。" + msgid "Returns the name of the server interface." msgstr "返回该服务器接口的名称。" @@ -71897,25 +97266,136 @@ msgid "" "description." msgstr "返回 TextServer 数据库(例如 ICU 中断迭代器和字典)的描述。" +msgid "" +"Returns [code]true[/code] if [param rid] is valid resource owned by this " +"text server." +msgstr "" +"如果 [param rid] 是该文本服务器拥有的有效资源,则返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the server supports a feature." +msgstr "如果服务器支持某个功能,则返回 [code]true[/code]。" + msgid "Returns [code]true[/code] if locale is right-to-left." msgstr "如果区域设置为从右至左,则返回 [code]true[/code]。" msgid "" +"Returns [code]true[/code] is [param string] is a valid identifier.\n" +"If the text server supports the [constant FEATURE_UNICODE_IDENTIFIERS] " +"feature, a valid identifier must:\n" +"- Conform to normalization form C.\n" +"- Begin with a Unicode character of class XID_Start or [code]\"_\"[/code].\n" +"- May contain Unicode characters of class XID_Continue in the other " +"positions.\n" +"- Use UAX #31 recommended scripts only (mixed scripts are allowed).\n" +"If the [constant FEATURE_UNICODE_IDENTIFIERS] feature is not supported, a " +"valid identifier must:\n" +"- Begin with a Unicode character of class XID_Start or [code]\"_\"[/code].\n" +"- May contain Unicode characters of class XID_Continue in the other " +"positions." +msgstr "" +"如果 [param string] 为有效的标识符,则返回 [code]true[/code]。\n" +"如果文字服务器支持 [constant FEATURE_UNICODE_IDENTIFIERS] 特性,则有效的标识" +"符必须:\n" +"- 遵循 C 范式。\n" +"- 开头是 XID_Start 类的 Unicode 字符或 [code]\"_\"[/code]。\n" +"- 其他位置可以包含 XID_Continue 类的 Unicode 字符。\n" +"- 仅使用 UAX #31 推荐的文字(允许混合文字)。\n" +"如果不支持 [constant FEATURE_UNICODE_IDENTIFIERS] 特性,则有效的标识符必" +"须:\n" +"- 开头是 XID_Start 类的 Unicode 字符或 [code]\"_\"[/code]。\n" +"- 其他位置可以包含 XID_Continue 类的 Unicode 字符。" + +msgid "" +"Converts readable feature, variation, script or language name to OpenType " +"tag." +msgstr "将特性、变体、文字、语言的可读名称转换为 OpenType 标记。" + +msgid "" "Converts [param number] from the numeral systems used in [param language] to " "Western Arabic (0..9)." msgstr "" "将数字 [param number] 从 [param language] 的记数系统转换为阿拉伯数字" "(0..9)。" +msgid "" +"Default implementation of the BiDi algorithm override function. See [enum " +"StructuredTextParser] for more info." +msgstr "" +"BiDi 算法覆盖函数的默认实现。有关详细信息,请参阅 [enum " +"StructuredTextParser]。" + +msgid "Returns percent sign used in the [param language]." +msgstr "返回语言 [param language] 中使用的百分比符号。" + +msgid "" +"Returns number of text spans added using [method shaped_text_add_string] or " +"[method shaped_text_add_object]." +msgstr "" +"返回使用 [method shape_text_add_string] 或 [method shape_text_add_object] 添" +"加的文本区间的数量。" + +msgid "Returns text span metadata." +msgstr "返回文本区间的元数据。" + +msgid "" +"Changes text span font, font size and OpenType features, without changing " +"the text." +msgstr "在不更改文本的情况下,更改文本区间的字体、字体大小和 OpenType 功能。" + +msgid "Adds text span and font to draw it to the text buffer." +msgstr "添加文本区间和字体,将其绘制到文本缓冲中。" + msgid "Clears text buffer (removes text and inline objects)." msgstr "清空文本缓冲(移除文本和内联对象)。" msgid "Returns direction of the text." msgstr "返回文本的方向。" +msgid "Returns dominant direction of in the range of text." +msgstr "返回文本范围内的主要书写方向。" + +msgid "Returns number of glyphs in the ellipsis." +msgstr "返回省略号中的字形数。" + +msgid "Returns array of the glyphs in the ellipsis." +msgstr "返回省略号中的字形数组。" + +msgid "Returns position of the ellipsis." +msgstr "返回省略号的位置。" + +msgid "Returns number of glyphs in the buffer." +msgstr "返回缓冲区中的字形数。" + +msgid "Returns an array of glyphs in the visual order." +msgstr "返回字形数组,按视觉顺序排序。" + msgid "Returns text orientation." msgstr "返回文本朝向。" +msgid "Returns the parent buffer from which the substring originates." +msgstr "返回子字符串源自哪个父缓冲区。" + +msgid "" +"Returns [code]true[/code] if text buffer is configured to display control " +"characters." +msgstr "如果文本缓冲区被配置为显示控制字符,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if text buffer is configured to display " +"hexadecimal codes in place of invalid characters.\n" +"[b]Note:[/b] If set to [code]false[/code], nothing is displayed in place of " +"invalid characters." +msgstr "" +"如果文本缓冲区被配置为在无效字符处显示十六进制代码,则返回 [code]true[/" +"code]。\n" +"[b]注意:[/b]如果设置为 [code]false[/code],则在无效字符处不显示任何内容。" + +msgid "Returns substring buffer character range in the parent buffer." +msgstr "返回父缓冲区中子字符串缓冲区的字符范围。" + +msgid "Returns selection rectangles for the specified character range." +msgstr "返回用于指定字符范围的选区矩形。" + msgid "Returns size of the text." msgstr "返回该文本的大小。" @@ -71937,12 +97417,70 @@ msgstr "" "返回字素的索引,该字素位于基线上指定像素偏移的位置,如果没有找到,则返回 " "[code]-1[/code]。" +msgid "Returns composite character end position closest to the [param pos]." +msgstr "返回距离 [param pos] 最近的组合字符结束位置。" + msgid "Trims text if it exceeds the given width." msgstr "如果文本超出给定宽度,则修剪文本。" +msgid "Returns composite character start position closest to the [param pos]." +msgstr "返回距离 [param pos] 最近的组合字符开始位置。" + +msgid "" +"If set to [code]true[/code] text buffer will display control characters." +msgstr "如果设置为 [code]true[/code],则文本缓冲区将显示控制字符。" + +msgid "" +"If set to [code]true[/code] text buffer will display invalid characters as " +"hexadecimal codes, otherwise nothing is displayed." +msgstr "" +"如果设置为 [code]true[/code],则文本缓冲区会将无效字符显示为十六进制代码,否" +"则不显示任何内容。" + +msgid "Sets extra spacing added between glyphs or lines in pixels." +msgstr "设置字形之间或行与行之间添加的额外像素间距。" + msgid "Aligns shaped text to the given tab-stops." msgstr "将塑形文本与给定的制表位对齐。" +msgid "" +"Returns the string converted to lowercase.\n" +"[b]Note:[/b] Casing is locale dependent and context sensitive if server " +"support [constant FEATURE_CONTEXT_SENSITIVE_CASE_CONVERSION] feature " +"(supported by [TextServerAdvanced]).\n" +"[b]Note:[/b] The result may be longer or shorter than the original." +msgstr "" +"返回转换为小写的字符串。\n" +"[b]注意:[/b]如果服务器支持 [constant " +"FEATURE_CONTEXT_SENSITIVE_CASE_CONVERSION] 特性([TextServerAdvanced] 支" +"持),则大小写取决于区域设置,并且对上下文敏感。\n" +"[b]注意:[/b]得到的字符串可能比原来的更长,也可能更短。" + +msgid "" +"Returns the string converted to uppercase.\n" +"[b]Note:[/b] Casing is locale dependent and context sensitive if server " +"support [constant FEATURE_CONTEXT_SENSITIVE_CASE_CONVERSION] feature " +"(supported by [TextServerAdvanced]).\n" +"[b]Note:[/b] The result may be longer or shorter than the original." +msgstr "" +"返回转换为大写的字符串。\n" +"[b]注意:[/b]如果服务器支持 [constant " +"FEATURE_CONTEXT_SENSITIVE_CASE_CONVERSION] 特性([TextServerAdvanced] 支" +"持),则大小写取决于区域设置,并且对上下文敏感。\n" +"[b]注意:[/b]得到的字符串可能比原来的更长,也可能更短。" + +msgid "" +"Strips diacritics from the string.\n" +"[b]Note:[/b] The result may be longer or shorter than the original." +msgstr "" +"从字符串中剥离变音符号。\n" +"[b]注意:[/b]得到的字符串可能比原来的更长,也可能更短。" + +msgid "" +"Converts OpenType tag to readable feature, variation, script or language " +"name." +msgstr "将 OpenType 标签转换为可读的特性、变体、文字或语言的名称。" + msgid "Font glyphs are rasterized as 1-bit bitmaps." msgstr "字体字形栅格化为 1 位的位图。" @@ -72020,6 +97558,19 @@ msgstr "仅对最后一个制表符之后的文本应用两端对齐。" msgid "Autowrap is disabled." msgstr "自动换行已禁用。" +msgid "" +"Wraps the text inside the node's bounding rectangle by allowing to break " +"lines at arbitrary positions, which is useful when very limited space is " +"available." +msgstr "" +"让文本在节点的边界矩形内自动换行,允许在任意位置断行,在空间非常有限的情况下" +"非常有用。" + +msgid "" +"Wraps the text inside the node's bounding rectangle by soft-breaking between " +"words." +msgstr "让文本在节点的边界矩形内自动换行,允许在单词之间进行软换行。" + msgid "Do not break the line." msgstr "不换行。" @@ -72405,6 +97956,20 @@ msgstr "" "[b]注意:[/b]由于图形硬件的限制,最大的纹理尺寸是 16384×16384 像素。较大的纹" "理可能无法导入。" +msgid "" +"Called when the entire [Texture2D] is requested to be drawn over a " +"[CanvasItem], with the top-left offset specified in [param pos]. [param " +"modulate] specifies a multiplier for the colors being drawn, while [param " +"transpose] specifies whether drawing should be performed in column-major " +"order instead of row-major order (resulting in 90-degree clockwise " +"rotation).\n" +"[b]Note:[/b] This is only used in 2D rendering, not 3D." +msgstr "" +"当请求在 [CanvasItem] 上绘制整个 [Texture2D] 时调用,左上角的偏移量由 [param " +"pos] 指定。[param modulate] 指定绘制颜色的乘数,[param transpose] 指定绘制是" +"否应按列主顺序而不是行主顺序执行(会导致顺时针旋转 90 度)。\n" +"[b]注意:[/b]仅用于 2D 渲染,不用于 3D。" + msgid "Called when the [Texture2D]'s height is queried." msgstr "查询该 [Texture2D] 的高度时调用。" @@ -72447,6 +98012,12 @@ msgid "Returns [code]true[/code] if this [Texture2D] has an alpha channel." msgstr "如果该 [Texture2D] 具有 Alpha 通道,则返回 [code]true[/code]。" msgid "" +"A single texture resource which consists of multiple, separate images. Each " +"image has the same dimensions and number of mipmap levels." +msgstr "" +"由多个独立图像构成的单个纹理资源。每个图像的尺寸和 mipmap 级别数都相同。" + +msgid "" "Creates a placeholder version of this resource ([PlaceholderTexture2DArray])." msgstr "创建该资源的占位符版本([PlaceholderTexture2DArray])。" @@ -72476,6 +98047,21 @@ msgid "" msgstr "创建该资源的占位符版本([PlaceholderTexture3D])。" msgid "" +"Returns the [Texture3D]'s data as an array of [Image]s. Each [Image] " +"represents a [i]slice[/i] of the [Texture3D], with different slices mapping " +"to different depth (Z axis) levels." +msgstr "" +"将该 [Texture3D] 的数据作为 [Image] 数组返回。每个 [Image] 代表该 " +"[Texture3D] 的一个[i]切片[/i],不同的切片映射到不同的深度(Z 轴)级别。" + +msgid "" +"Returns the [Texture3D]'s depth in pixels. Depth is typically represented by " +"the Z axis (a dimension not present in [Texture2D])." +msgstr "" +"返回该 [Texture3D] 的深度,单位为像素。深度通常由 Z 轴表示([Texture2D] 中没" +"有这个维度)。" + +msgid "" "Returns the current format being used by this texture. See [enum Image." "Format] for details." msgstr "返回纹理当前使用的格式。详情见 [enum Image.Format]。" @@ -72573,6 +98159,11 @@ msgid "" msgstr "缩放纹理,使较短的一边适应边界矩形。另一边则裁剪到节点的界限内。" msgid "" +"Base class for texture types which contain the data of multiple [Image]s. " +"Each image is of the same size and format." +msgstr "包含多个 [Image] 的纹理类型的基类。每个图像的大小和格式都是一样的。" + +msgid "" "Base class for [ImageTextureLayered]. Cannot be used directly, but contains " "all the functions necessary for accessing the derived resource types. See " "also [Texture3D].\n" @@ -72617,6 +98208,16 @@ msgid "" "by the Y axis." msgstr "返回该纹理的高度,单位为像素。高度通常由 Y 轴表示。" +msgid "Returns an [Image] resource with the data from specified [param layer]." +msgstr "返回带有指定 [param layer] 层数据的 [Image] 图像资源。" + +msgid "" +"Returns the [TextureLayered]'s type. The type determines how the data is " +"accessed, with cubemaps having special types." +msgstr "" +"返回该 [TextureLayered] 的类型。类型决定了数据的访问方式,立方体图有特殊的类" +"型。" + msgid "Returns the number of referenced [Image]s." msgstr "返回引用的 [Image] 数。" @@ -72625,6 +98226,9 @@ msgid "" "by the X axis." msgstr "返回该纹理的宽度,单位为像素。宽度通常由 X 轴表示。" +msgid "Returns [code]true[/code] if the layers have generated mipmaps." +msgstr "如果层生成了 mipmap 则返回 [code]true[/code]。" + msgid "Texture is a generic [Texture2DArray]." msgstr "纹理为通用的 [Texture2DArray]。" @@ -72640,6 +98244,16 @@ msgid "" msgstr "基于纹理的进度条。适用于加载屏幕和生命或体力条。" msgid "" +"Returns the stretch margin with the specified index. See [member " +"stretch_margin_bottom] and related properties." +msgstr "返回给定索引的拉伸边距。见 [member stretch_margin_bottom] 及相关属性。" + +msgid "" +"Sets the stretch margin with the specified index. See [member " +"stretch_margin_bottom] and related properties." +msgstr "设置给定索引的拉伸边距。见 [member stretch_margin_bottom] 及相关属性。" + +msgid "" "If [code]true[/code], Godot treats the bar's textures like in " "[NinePatchRect]. Use the [code]stretch_margin_*[/code] properties like " "[member stretch_margin_bottom] to set up the nine patch's 3×3 grid. When " @@ -72942,6 +98556,13 @@ msgstr "" "[b]注意:[/b]这个方法类似于调用相应的数据类型特定方法,但可以用于更通用逻辑。" msgid "" +"Unmarks [param theme_type] as being a variation of another theme type. See " +"[method set_type_variation]." +msgstr "" +"取消将主题类型 [param theme_type] 标记为任何主题类型的变种。见 [method " +"set_type_variation]。" + +msgid "" "Returns the [Color] property defined by [param name] and [param theme_type], " "if it exists.\n" "Returns the default color value if the property doesn't exist. Use [method " @@ -73109,6 +98730,20 @@ msgstr "" "get_type_list] 获取所有主题类型。" msgid "" +"Returns the theme property of [param data_type] defined by [param name] and " +"[param theme_type], if it exists.\n" +"Returns the engine fallback value if the property doesn't exist (see " +"[ThemeDB]). Use [method has_theme_item] to check for existence.\n" +"[b]Note:[/b] This method is analogous to calling the corresponding data type " +"specific method, but can be used for more generalized logic." +msgstr "" +"如果存在由 [param name] 和 [param theme_type] 定义的 [param data_type] 属性," +"则将其返回。\n" +"如果不存在则返回引擎的回退值(见 [ThemeDB])。请使用 [method has_theme_item] " +"检查是否存在。\n" +"[b]注意:[/b]这个方法类似于调用相应的数据类型特定方法,但可以用于更通用逻辑。" + +msgid "" "Returns a list of names for properties of [param data_type] defined with " "[param theme_type]. Use [method get_theme_item_type_list] to get a list of " "possible theme type names.\n" @@ -73131,6 +98766,24 @@ msgstr "" "[b]注意:[/b]这个方法类似于调用相应的数据类型特定方法,但可以用于更通用逻辑。" msgid "" +"Returns a list of all unique theme type names. Use the appropriate " +"[code]get_*_type_list[/code] method to get a list of unique theme types for " +"a single data type." +msgstr "" +"返回所有唯一主题类型名称的列表。获取单一数据类型的唯一主题类型列表请使用对应" +"的 [code]get_*_type_list[/code] 方法。" + +msgid "" +"Returns the name of the base theme type if [param theme_type] is a valid " +"variation type. Returns an empty string otherwise." +msgstr "" +"如果 [param theme_type] 是有效的变种类型,则返回其基础主题类型的名称。否则返" +"回空字符串。" + +msgid "Returns a list of all type variations for the given [param base_type]." +msgstr "返回给定基础类型 [param base_type] 的所有类型变种列表。" + +msgid "" "Returns [code]true[/code] if the [Color] property defined by [param name] " "and [param theme_type] exists.\n" "Returns [code]false[/code] if it doesn't exist. Use [method set_color] to " @@ -73576,6 +99229,24 @@ msgid "Thread-safe APIs" msgstr "线程安全的 API" 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 been called, this returns an empty string." +msgstr "" +"返回当前 [Thread] 的 ID,能够在所有线程中唯一标识该线程。如果该 [Thread] 尚未" +"运行,或者已经调用过 [method wait_to_finish],则返回空字符串。" + +msgid "" +"Returns [code]true[/code] if this [Thread] is currently running the provided " +"function. This is useful for determining if [method wait_to_finish] can be " +"called without blocking the calling thread.\n" +"To check if a [Thread] is joinable, use [method is_started]." +msgstr "" +"如果这个 [Thread] 当前正在运行,则返回 [code]true[/code]。可用于确定调用 " +"[method wait_to_finish] 是否可以不阻塞调用的线程。\n" +"要检查 [Thread] 是否可被并入,请使用 [method is_started]。" + +msgid "" "Returns [code]true[/code] if this [Thread] has been started. Once started, " "this will return [code]true[/code] until it is joined using [method " "wait_to_finish]. For checking if a [Thread] is still executing its task, use " @@ -73620,6 +99291,15 @@ msgstr "" "也可以在运行时使用 [method TileMap._tile_data_runtime_update] 进行修改。" msgid "" +"Adds a collision polygon to the tile on the given TileSet physics layer." +msgstr "为该图块在给定的 TileSet 物理层上添加碰撞多边形。" + +msgid "" +"Returns how many polygons the tile has for TileSet physics layer with index " +"[param layer_id]." +msgstr "设置该图块中索引为 [param layer_id] 的 TileSet 物理层中多边形的数量。" + +msgid "" "Returns the constant angular velocity applied to objects colliding with this " "tile." msgstr "返回恒定角速度,将应用于与此图块碰撞的对象。" @@ -73641,6 +99321,25 @@ msgstr "" "返回自定义数据层的自定义数据值,自定义数据层用索引 [param layer_id] 指定。" msgid "" +"Returns the navigation polygon of the tile for the TileSet navigation layer " +"with index [param layer_id]." +msgstr "返回该图块中索引为 [param layer_id] 的 TileSet 导航层的导航多边形。" + +msgid "" +"Returns the occluder polygon of the tile for the TileSet occlusion layer " +"with index [param layer_id]." +msgstr "返回该图块中索引为 [param layer_id] 的 TileSet 遮挡层的遮挡器多边形。" + +msgid "" +"Returns the tile's terrain bit for the given [param peering_bit] direction." +msgstr "返回该图块给定 [param peering_bit] 方向的地形位。" + +msgid "" +"Sets the polygons count for TileSet physics layer with index [param " +"layer_id]." +msgstr "设置索引为 [param layer_id] 的 TileSet 物理层中多边形的数量。" + +msgid "" "Sets the constant angular velocity. This does not rotate the tile. This " "angular velocity is applied to objects colliding with this tile." msgstr "设置恒定角速度。不会旋转图块。会对与该图块发生碰撞的对象应用该角速度。" @@ -73667,6 +99366,20 @@ msgstr "" "设置该图块的自定义数据值,TileSet 自定义数据层由索引 [param layer_id] 指定。" msgid "" +"Sets the navigation polygon for the TileSet navigation layer with index " +"[param layer_id]." +msgstr "设置索引为 [param layer_id] 的 TileSet 导航层的导航多边形。" + +msgid "" +"Sets the occluder for the TileSet occlusion layer with index [param " +"layer_id]." +msgstr "设置索引为 [param layer_id] 的 TileSet 遮挡层的遮挡器。" + +msgid "" +"Sets the tile's terrain bit for the given [param peering_bit] direction." +msgstr "设置该图块给定 [param peering_bit] 方向的地形位。" + +msgid "" "If [code]true[/code], the tile will have its texture flipped horizontally." msgstr "如果为 [code]true[/code],则该图块的纹理会被水平翻转。" @@ -73803,6 +99516,38 @@ msgstr "" "和受影响的图块(例如,将经常更新的图块放在专门的层中)。" msgid "" +"Returns the tile alternative ID of the cell on layer [param layer] at [param " +"coords]. If [param use_proxies] is [code]false[/code], ignores the " +"[TileSet]'s tile proxies, returning the raw alternative identifier. See " +"[method TileSet.map_tile_proxy]." +msgstr "" +"返回 [param layer] 层中位于坐标 [param coords] 单元格的图块备选 ID。如果 " +"[param use_proxies] 为 [code]false[/code],则会忽略该 [TileSet] 的图块代理," +"返回原始的备选标识符。见 [method TileSet.map_tile_proxy]。" + +msgid "" +"Returns the tile atlas coordinates ID of the cell on layer [param layer] at " +"coordinates [param coords]. If [param use_proxies] is [code]false[/code], " +"ignores the [TileSet]'s tile proxies, returning the raw alternative " +"identifier. See [method TileSet.map_tile_proxy]." +msgstr "" +"返回 [param layer] 层中位于坐标 [param coords] 单元格的图块图集坐标 ID。如果 " +"[param use_proxies] 为 [code]false[/code],则会忽略该 [TileSet] 的图块代理," +"返回原始的备选标识符。见 [method TileSet.map_tile_proxy]。" + +msgid "" +"Returns the tile source ID of the cell on layer [param layer] at coordinates " +"[param coords]. Returns [code]-1[/code] if the cell does not exist.\n" +"If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile " +"proxies, returning the raw alternative identifier. See [method TileSet." +"map_tile_proxy]." +msgstr "" +"返回 [param layer] 层中位于坐标 [param coords] 单元格的图块源 ID。如果该单元" +"格不存在,则返回 [code]-1[/code]。\n" +"如果 [param use_proxies] 为 [code]false[/code],则会忽略该 [TileSet] 的图块代" +"理,返回原始的备选标识符。见 [method TileSet.map_tile_proxy]。" + +msgid "" "Returns the coordinates of the tile for given physics body RID. Such RID can " "be retrieved from [method KinematicCollision2D.get_collider_rid], when " "colliding with a tile." @@ -73905,6 +99650,19 @@ msgstr "" "算 [code]position_in_tile_map + coords_in_pattern[/code] 工作。" msgid "" +"Returns the centered position of a cell in the TileMap's local coordinate " +"space. To convert the returned value into global coordinates, use [method " +"Node2D.to_global]. See also [method local_to_map].\n" +"[b]Note:[/b] This may not correspond to the visual position of the tile, i." +"e. it ignores the [member TileData.texture_origin] property of individual " +"tiles." +msgstr "" +"返回单元格的中心位置,使用 TileMap 的局部坐标。要将返回值转换为全局坐标,请使" +"用 [method Node2D.to_global]。另见 [method local_to_map]。\n" +"[b]注意:[/b]可能与图块的可视位置没有对应关系,即忽略各个图块的 [member " +"TileData.texture_origin] 属性。" + +msgid "" "Moves the layer at index [param layer] to the given position [param " "to_position] in the array." msgstr "" @@ -73914,6 +99672,15 @@ msgid "Removes the layer at index [param layer]." msgstr "移除索引为 [param layer] 的层。" msgid "" +"Enables or disables the layer [param layer]. A disabled layer is not " +"processed at all (no rendering, no physics, etc...).\n" +"If [param layer] is negative, the layers are accessed from the last one." +msgstr "" +"启用或禁用图层 [param layer]。被禁用的图层根本不会被处理(没有渲染、物理" +"等)。\n" +"如果 [param layer] 为负数,则从最后一个图层开始访问。" + +msgid "" "Sets a layer's color. It will be multiplied by tile's color and TileMap's " "modulate.\n" "If [code]layer[/code] is negative, the layers are accessed from the last one." @@ -74124,6 +99891,13 @@ msgstr "" "遮挡层能够为图集图块分配遮挡多边形。" msgid "" +"Adds a [TileMapPattern] to be stored in the TileSet resource. If provided, " +"insert it at the given [param index]." +msgstr "" +"添加存储在 TileSet 资源中的 [TileMapPattern]。如果提供了 [param index],则会" +"插入到给定的位置。" + +msgid "" "Adds a physics layer to the TileSet at the given position [param " "to_position] in the array. If [param to_position] is -1, adds it at the end " "of the array.\n" @@ -74134,6 +99908,17 @@ msgstr "" "物理层能够为图集图块分配碰撞多边形。" msgid "" +"Adds a [TileSetSource] to the TileSet. If [param atlas_source_id_override] " +"is not -1, also set its source ID. Otherwise, a unique identifier is " +"automatically generated.\n" +"The function returns the added source source ID or -1 if the source could " +"not be added." +msgstr "" +"在 TileSet 中添加 [TileSetSource]。如果 [param atlas_source_id_override] 不" +"为 -1,则还会设置其源 ID。否则会自动生成唯一标识符。\n" +"函数返回添加的源 ID,如果无法添加源则返回 -1。" + +msgid "" "Adds a new terrain to the given terrain set [param terrain_set] at the given " "position [param to_position] in the array. If [param to_position] is -1, " "adds it at the end of the array." @@ -74156,6 +99941,28 @@ msgid "Clears all tile proxies." msgstr "清除所有图块代理。" msgid "" +"Returns the alternative-level proxy for the given identifiers. The returned " +"array contains the three proxie's target identifiers (source ID, atlas " +"coords ID and alternative tile ID).\n" +"If the TileSet has no proxy for the given identifiers, returns an empty " +"Array." +msgstr "" +"返回给定标识符的备选级代理。返回的数组包含三个代理的目标标识符(源 ID、图集坐" +"标 ID 和备选图块 ID)。\n" +"如果该 TileSet 没有给定标识符的代理,则返回空数组。" + +msgid "" +"Returns the coordinate-level proxy for the given identifiers. The returned " +"array contains the two target identifiers of the proxy (source ID and atlas " +"coordinates ID).\n" +"If the TileSet has no proxy for the given identifiers, returns an empty " +"Array." +msgstr "" +"返回给定标识符的坐标级代理。返回的数组包含代理的两个目标标识符(源 ID 和图集" +"坐标 ID)。\n" +"如果该 TileSet 没有给定标识符的代理,则返回空数组。" + +msgid "" "Returns the index of the custom data layer identified by the given name." msgstr "返回自定义数据层的索引,该自定义数据层由名称表示。" @@ -74170,18 +99977,53 @@ msgstr "返回自定义数据层的类型,该自定义数据层由索引表示 msgid "Returns the custom data layers count." msgstr "返回自定义数据层的数量。" +msgid "" +"Returns whether or not the specified navigation layer of the TileSet " +"navigation data layer identified by the given [param layer_index] is " +"enabled, given a navigation_layers [param layer_number] between 1 and 32." +msgstr "" +"返回由给定的 [param layer_index] 标识的 TileSet 导航数据层是否启用了指定的导" +"航层,导航层 [param layer_number] 在 1 和 32 之间。" + msgid "Returns the navigation layers count." msgstr "返回导航层的数量。" +msgid "" +"Returns a new unused source ID. This generated ID is the same that a call to " +"[code]add_source[/code] would return." +msgstr "" +"返回新的未使用的源 ID。这个生成的 ID 与调用 [code]add_source[/code] 将返回的 " +"ID 相同。" + msgid "Returns the light mask of the occlusion layer." msgstr "返回遮挡层的光照掩码。" +msgid "" +"Returns if the occluders from this layer use [code]sdf_collision[/code]." +msgstr "返回这个层的遮挡器是否使用 [code]sdf_collision[/code]。" + msgid "Returns the occlusion layers count." msgstr "返回遮挡层的数量。" msgid "Returns the [TileMapPattern] at the given [param index]." msgstr "返回给定 [param index] 处的 [TileMapPattern]。" +msgid "Returns the number of [TileMapPattern] this tile set handles." +msgstr "返回此图块集处理的 [TileMapPattern] 的数量。" + +msgid "" +"Returns the collision layer (as in the physics server) bodies on the given " +"TileSet's physics layer are in." +msgstr "返回给定 TileSet 物理层中的物体所在的(物理服务器中的)碰撞层。" + +msgid "" +"Returns the collision mask of bodies on the given TileSet's physics layer." +msgstr "返回给定 TileSet 物理层中物体的碰撞遮罩。" + +msgid "" +"Returns the physics material of bodies on the given TileSet's physics layer." +msgstr "返回给定 TileSet 物理层中物体的碰撞材质。" + msgid "Returns the physics layers count." msgstr "返回物理层的数量。" @@ -74194,6 +100036,13 @@ msgstr "返回该 TileSet 中 [TileSetSource] 的数量。" msgid "Returns the source ID for source with index [param index]." msgstr "返回索引为 [param index] 的源的源 ID。" +msgid "" +"Returns the source-level proxy for the given source identifier.\n" +"If the TileSet has no proxy for the given identifier, returns -1." +msgstr "" +"返回给定源标识符的源级别代理。\n" +"如果 TileSet 没有给定标识符的代理,则返回 -1。" + msgid "Returns a terrain's color." msgstr "返回地形的颜色。" @@ -74222,6 +100071,51 @@ msgstr "返回该 TileSet 中是否存在给定源 ID 的源。" msgid "Returns if there is a source-level proxy for the given source ID." msgstr "返回给定的源 ID 是否存在源级别的代理。" +msgid "" +"Moves the custom data layer at index [param layer_index] to the given " +"position [param to_position] in the array. Also updates the atlas tiles " +"accordingly." +msgstr "" +"将索引为 [param layer_index] 的自定义数据层移动到数组中给定的 [param " +"to_position] 位置。还会更新相应的图集图块。" + +msgid "" +"Moves the navigation layer at index [param layer_index] to the given " +"position [param to_position] in the array. Also updates the atlas tiles " +"accordingly." +msgstr "" +"将索引为 [param layer_index] 的导航层移动到数组中给定的 [param to_position] " +"位置。还会更新相应的图集图块。" + +msgid "" +"Moves the occlusion layer at index [param layer_index] to the given position " +"[param to_position] in the array. Also updates the atlas tiles accordingly." +msgstr "" +"将索引为 [param layer_index] 的遮挡层移动到数组中给定的 [param to_position] " +"位置。还会更新相应的图集图块。" + +msgid "" +"Moves the physics layer at index [param layer_index] to the given position " +"[param to_position] in the array. Also updates the atlas tiles accordingly." +msgstr "" +"将索引为 [param layer_index] 的物理层移动到数组中给定的 [param to_position] " +"位置。还会更新相应的图集图块。" + +msgid "" +"Moves the terrain at index [param terrain_index] for terrain set [param " +"terrain_set] to the given position [param to_position] in the array. Also " +"updates the atlas tiles accordingly." +msgstr "" +"将地形集 [param terrain_set] 中索引为 [param terrain_index] 的地形移动到数组" +"中给定的 [param to_position] 位置。还会更新相应的图集图块。" + +msgid "" +"Moves the terrain set at index [param terrain_set] to the given position " +"[param to_position] in the array. Also updates the atlas tiles accordingly." +msgstr "" +"将索引为 [param terrain_set] 的地形集移动到数组中给定的 [param to_position] " +"位置。还会更新相应的图集图块。" + msgid "Removes an alternative-level proxy for the given identifiers." msgstr "移除具有给定标识符的备选级别代理。" @@ -74274,9 +100168,14 @@ msgid "Sets the type of the custom data layer identified by the given index." msgstr "设置自定义数据层的类型,该自定义数据层由索引表示。" msgid "" -"Sets the navigation layers (as in the navigation server) for navigation " -"regions is the given TileSet navigation layer." -msgstr "设置给定 TileSet 导航层中导航区域的导航层(导航服务器中使用)。" +"Based on [param value], enables or disables the specified navigation layer " +"of the TileSet navigation data layer identified by the given [param " +"layer_index], given a navigation_layers [param layer_number] between 1 and " +"32." +msgstr "" +"根据 [param value],启用或禁用 TileSet 导航数据层中指定的导航层,导航数据层由" +"给定的 [param layer_index] 标识,给定的 [param layer_number] 应在 1 和 32 之" +"间。" msgid "" "Sets the occlusion layer (as in the rendering server) for occluders in the " @@ -74284,11 +100183,6 @@ msgid "" msgstr "设置给定 TileSet 遮挡层中遮挡器的遮挡层(渲染服务器中使用)。" msgid "" -"Enables or disables sdf collision for occluders in the given TileSet " -"occlusion layer." -msgstr "启用或禁用给定 TileSet 遮挡层中遮挡器的 SDF 碰撞。" - -msgid "" "Sets the physics layer (as in the physics server) for bodies in the given " "TileSet physics layer." msgstr "设置给定 TileSet 物理层中物体的物理层(物理服务器中使用)。" @@ -74459,6 +100353,11 @@ msgid "Exposes a 2D atlas texture as a set of tiles for a [TileSet] resource." msgstr "以一组图块的形式向 [TileSet] 资源暴露 2D 图集纹理。" msgid "" +"Creates a new tile at coordinates [param atlas_coords] with the given [param " +"size]." +msgstr "在坐标 [param atlas_coords] 处新建给定大小 [param size] 的图块。" + +msgid "" "Returns how many columns the tile at [param atlas_coords] has in its " "animation layout." msgstr "返回位于坐标 [param atlas_coords] 的图块的动画布局中有多少列。" @@ -74485,6 +100384,66 @@ msgid "" "Returns the animation speed of the tile at coordinates [param atlas_coords]." msgstr "返回位于坐标 [param atlas_coords] 的图块的动画速度。" +msgid "" +"Returns the [TileData] object for the given atlas coordinates and " +"alternative ID." +msgstr "返回给定图集坐标和备选 ID 对应的 [TileData] 对象。" + +msgid "" +"Returns the size of the tile (in the grid coordinates system) at coordinates " +"[param atlas_coords]." +msgstr "返回位于坐标 [param atlas_coords] 的图块的大小(使用栅格坐标系)。" + +msgid "Remove a tile and its alternative at coordinates [param atlas_coords]." +msgstr "移除位于坐标 [param atlas_coords] 的图块及其备选项。" + +msgid "" +"Change a tile's alternative ID from [param alternative_tile] to [param " +"new_id].\n" +"Calling this function with [param new_id] of 0 will fail, as the base tile " +"alternative cannot be moved." +msgstr "" +"将图块的备选 ID 从 [param alternative_tile] 改为 [param new_id]。\n" +"调用这个函数时将 [param new_id] 设为 0 会导致失败,因为基础图块备选项无法移" +"动。" + +msgid "" +"Sets the number of columns in the animation layout of the tile at " +"coordinates [param atlas_coords]. If set to 0, then the different frames of " +"the animation are laid out as a single horizontal line in the atlas." +msgstr "" +"设置位于坐标 [param atlas_coords] 的图块的动画布局中的列数。如果设置为 0,则" +"动画帧在图集中水平排列。" + +msgid "" +"Sets the animation frame [param duration] of frame [param frame_index] for " +"the tile at coordinates [param atlas_coords]." +msgstr "" +"设置位于坐标 [param atlas_coords] 的图块动画帧 [param frame_index] 的持续时" +"间 [param duration]。" + +msgid "" +"Sets how many animation frames the tile at coordinates [param atlas_coords] " +"has." +msgstr "设置位于坐标 [param atlas_coords] 的图块有多少动画帧。" + +msgid "" +"Sets the margin (in grid tiles) between each tile in the animation layout of " +"the tile at coordinates [param atlas_coords] has." +msgstr "" +"设置位于坐标 [param atlas_coords] 的图块的动画布局中,图块的间距(单位为栅格" +"图块)。" + +msgid "" +"Sets the animation speed of the tile at coordinates [param atlas_coords] has." +msgstr "设置位于坐标 [param atlas_coords] 的图块的动画速度。" + +msgid "Margins, in pixels, to offset the origin of the grid in the texture." +msgstr "边距,单位为像素,用于偏移纹理中栅格的原点。" + +msgid "Separation, in pixels, between each tile texture region of the grid." +msgstr "间隔,单位为像素,是栅格的纹理区域中图块之间的间距。" + msgid "The atlas texture." msgstr "图集纹理。" @@ -74499,6 +100458,18 @@ msgid "Exposes a set of scenes as tiles for a [TileSet] resource." msgstr "以图块的形式向 [TileSet] 资源暴露一组场景。" msgid "" +"Creates a scene-based tile out of the given scene.\n" +"Returns a newly generated unique ID." +msgstr "" +"从给定的场景创建基于场景的图块。\n" +"返回新生成的唯一 ID。" + +msgid "" +"Returns the scene ID a following call to [method create_scene_tile] would " +"return." +msgstr "返回后续调用 [method create_scene_tile] 时会返回的场景 ID。" + +msgid "" "Returns whether the scene tile with [param id] displays a placeholder in the " "editor." msgstr "返回 ID 为 [param id] 的场景图块是否在编辑器中显示占位图。" @@ -74518,6 +100489,14 @@ msgstr "返回该 TileSet 源是否包含 ID 为 [param id] 的场景图块。" msgid "Remove the scene tile with [param id]." msgstr "移除 ID 为 [param id] 的场景图块。" +msgid "" +"Sets whether or not the scene tile with [param id] should display a " +"placeholder in the editor. This might be useful for scenes that are not " +"visible." +msgstr "" +"设置 ID 为 [param id] 的场景图块是否应该在编辑器中显示为占位符。对不可见的场" +"景可能有用。" + msgid "Exposes a set of tiles for a [TileSet] resource." msgstr "向 [TileSet] 资源暴露一组图块。" @@ -75265,88 +101244,6 @@ msgid "" msgstr "返回使用正交基(90 度)以及归一化的轴向量(缩放为 1 或 -1)的变换。" msgid "" -"Returns a copy of the transform rotated by the given [param angle] (in " -"radians).\n" -"This method is an optimized version of multiplying the given transform " -"[code]X[/code]\n" -"with a corresponding rotation transform [code]R[/code] from the left, i.e., " -"[code]R * X[/code].\n" -"This can be seen as transforming with respect to the global/parent frame." -msgstr "" -"返回该变换的副本,该副本进行了夹角为 [parma angle] 的旋转操作(单位为弧" -"度)。\n" -"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code]\n" -"从左侧相乘一致,即 [code]R * X[/code],但进行了优化。\n" -"可以视作在全局/父级坐标系中的变换。" - -msgid "" -"Returns a copy of the transform rotated by the given [param angle] (in " -"radians).\n" -"This method is an optimized version of multiplying the given transform " -"[code]X[/code]\n" -"with a corresponding rotation transform [code]R[/code] from the right, i.e., " -"[code]X * R[/code].\n" -"This can be seen as transforming with respect to the local frame." -msgstr "" -"返回该变换的副本,该副本进行了夹角为 [parma angle] 的旋转操作(单位为弧" -"度)。\n" -"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code]\n" -"从右侧相乘一致,即 [code]X * R[/code],但进行了优化。\n" -"可以视作在局部坐标系中的变换。" - -msgid "" -"Returns a copy of the transform scaled by the given [param scale] factor.\n" -"This method is an optimized version of multiplying the given transform " -"[code]X[/code]\n" -"with a corresponding scaling transform [code]S[/code] from the left, i.e., " -"[code]S * X[/code].\n" -"This can be seen as transforming with respect to the global/parent frame." -msgstr "" -"返回该变换的副本,该副本进行了系数为 [parma scale] 的缩放操作。\n" -"这个方法的结果和让 [code]X[/code] 变换与相应的缩放变换 [code]S[/code]\n" -"从左侧相乘一致,即 [code]S * X[/code],但进行了优化。\n" -"可以视作在全局/父级坐标系中的变换。" - -msgid "" -"Returns a copy of the transform scaled by the given [param scale] factor.\n" -"This method is an optimized version of multiplying the given transform " -"[code]X[/code]\n" -"with a corresponding scaling transform [code]S[/code] from the right, i.e., " -"[code]X * S[/code].\n" -"This can be seen as transforming with respect to the local frame." -msgstr "" -"返回该变换的副本,该副本进行了系数为 [parma scale] 的缩放操作。\n" -"这个方法的结果和让 [code]X[/code] 变换与相应的缩放变换 [code]S[/code]\n" -"从右侧相乘一致,即 [code]X * S[/code],但进行了优化。\n" -"可以视作在局部坐标系中的变换。" - -msgid "" -"Returns a copy of the transform translated by the given [param offset].\n" -"This method is an optimized version of multiplying the given transform " -"[code]X[/code]\n" -"with a corresponding translation transform [code]T[/code] from the left, i." -"e., [code]T * X[/code].\n" -"This can be seen as transforming with respect to the global/parent frame." -msgstr "" -"返回该变换的副本,该副本进行了偏移量为 [parma offset] 的平移操作。\n" -"这个方法的结果和让 [code]X[/code] 变换与相应的平移变换 [code]T[/code]\n" -"从左侧相乘一致,即 [code]T * X[/code],但进行了优化。\n" -"可以视作在全局/父级坐标系中的变换。" - -msgid "" -"Returns a copy of the transform translated by the given [param offset].\n" -"This method is an optimized version of multiplying the given transform " -"[code]X[/code]\n" -"with a corresponding translation transform [code]T[/code] from the right, i." -"e., [code]X * T[/code].\n" -"This can be seen as transforming with respect to the local frame." -msgstr "" -"返回该变换的副本,该副本进行了偏移量为 [parma offset] 的平移操作。\n" -"这个方法的结果和让 [code]X[/code] 变换与相应的平移变换 [code]T[/code]\n" -"从右侧相乘一致,即 [code]X * T[/code],但进行了优化。\n" -"可以视作在局部坐标系中的变换。" - -msgid "" "The origin vector (column 2, the third column). Equivalent to array index " "[code]2[/code]. The origin vector represents translation." msgstr "" @@ -75391,6 +101288,13 @@ msgid "" msgstr "使用给定的 [Transform2D] 矩阵将该 [Vector2] 进行变换(相乘)。" msgid "" +"This operator multiplies all components of the [Transform2D], including the " +"origin vector, which scales it uniformly." +msgstr "" +"这个运算符对该 [Transform2D] 的所有分量进行乘运算,包括原点向量,进行统一缩" +"放。" + +msgid "" "Returns [code]true[/code] if the transforms are exactly equal.\n" "[b]Note:[/b] Due to floating-point precision errors, consider using [method " "is_equal_approx] instead, which is more reliable." @@ -75441,40 +101345,6 @@ msgstr "" "target] 和 [param up] 向量不能为零,不能相互平行,并且在全局/父空间中定义。" msgid "" -"Returns a copy of the transform rotated around the given [param axis] by the " -"given [param angle] (in radians).\n" -"The [param axis] must be a normalized vector.\n" -"This method is an optimized version of multiplying the given transform " -"[code]X[/code]\n" -"with a corresponding rotation transform [code]R[/code] from the left, i.e., " -"[code]R * X[/code].\n" -"This can be seen as transforming with respect to the global/parent frame." -msgstr "" -"返回该变换的副本,该副本围绕给定的 [param axis] 轴进行了夹角为 [parma angle] " -"的旋转操作(单位为弧度)。\n" -"[param axis] 必须为归一化的向量。\n" -"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code]\n" -"从左侧相乘一致,即 [code]R * X[/code],但进行了优化。\n" -"可以视作在全局/父级坐标系中的变换。" - -msgid "" -"Returns a copy of the transform rotated around the given [param axis] by the " -"given [param angle] (in radians).\n" -"The [param axis] must be a normalized vector.\n" -"This method is an optimized version of multiplying the given transform " -"[code]X[/code]\n" -"with a corresponding rotation transform [code]R[/code] from the right, i.e., " -"[code]X * R[/code].\n" -"This can be seen as transforming with respect to the local frame." -msgstr "" -"返回该变换的副本,该副本围绕给定的 [param axis] 轴进行了夹角为 [parma angle] " -"的旋转操作(单位为弧度)。\n" -"[param axis] 必须为归一化的向量。\n" -"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code]\n" -"从右侧相乘一致,即 [code]R * X[/code],但进行了优化。\n" -"可以视作在局部坐标系中的变换。" - -msgid "" "The basis is a matrix containing 3 [Vector3] as its columns: X axis, Y axis, " "and Z axis. These vectors can be interpreted as the basis vectors of local " "coordinate system traveling with the object." @@ -75494,6 +101364,15 @@ msgstr "" "没有应用平移、旋转、缩放的 [Transform3D]。当应用于其他数据结构时,[constant " "IDENTITY] 不执行变换。" +msgid "[Transform3D] with mirroring applied perpendicular to the YZ plane." +msgstr "应用了垂直于 YZ 平面镜像操作的 [Transform3D]。" + +msgid "[Transform3D] with mirroring applied perpendicular to the XZ plane." +msgstr "应用了垂直于 XZ 平面镜像操作的 [Transform3D]。" + +msgid "[Transform3D] with mirroring applied perpendicular to the XY plane." +msgstr "应用了垂直于 XY 平面镜像操作的 [Transform3D]。" + msgid "Transforms (multiplies) the [AABB] by the given [Transform3D] matrix." msgstr "使用给定的 [Transform3D] 矩阵对 [AABB] 进行变换(相乘)。" @@ -75512,6 +101391,13 @@ msgid "" "Transforms (multiplies) the [Vector3] by the given [Transform3D] matrix." msgstr "使用给定的 [Transform3D] 矩阵对 [Vector3] 进行变换(相乘)。" +msgid "" +"This operator multiplies all components of the [Transform3D], including the " +"origin vector, which scales it uniformly." +msgstr "" +"这个运算符对该 [Transform3D] 的所有分量进行乘运算,包括原点向量,进行统一缩" +"放。" + msgid "Language Translation." msgstr "语言翻译。" @@ -75544,6 +101430,9 @@ msgstr "返回现有信息的数量。" msgid "Returns all the messages (keys)." msgstr "返回所有的信息(键值)。" +msgid "Returns all the messages (translated text)." +msgstr "返回所有信息(翻译后的文本)。" + msgid "The locale of the translation." msgstr "翻译的区域设置。" @@ -75614,6 +101503,15 @@ msgstr "" "[b]注意:[/b]从导出后的项目中调用时,返回值与 [method get_locale] 相同。" msgid "" +"Returns the [Translation] instance based on the [param locale] passed in.\n" +"It will return [code]null[/code] if there is no [Translation] instance that " +"matches the [param locale]." +msgstr "" +"根据传入的 [param locale] 返回 [Translation] 实例。\n" +"如果没有与 [param locale] 匹配的 [Translation] 实例,则返回 [code]null[/" +"code]。" + +msgid "" "Returns the pseudolocalized string based on the [param message] passed in." msgstr "根据传入的 [param message] 返回伪本地化字符串。" @@ -75641,6 +101539,11 @@ msgstr "" "返回标准化的 [param locale] 字符串,以匹配已知的语言环境(例如 [code]en-US[/" "code] 将与 [code]en_US[/code] 匹配)。" +msgid "" +"Returns the current locale's translation for the given message (key) and " +"context." +msgstr "返回给定消息(键)和上下文的翻译,使用当前区域设置。" + msgid "Control to show a tree of items." msgstr "以树状形式显示项目的控件。" @@ -75663,6 +101566,13 @@ msgstr "" "项。" msgid "" +"Deselects all tree items (rows and columns). In [constant SELECT_MULTI] mode " +"also removes selection cursor." +msgstr "" +"取消选中树中的所有项目(行和列)。在 [constant SELECT_MULTI] 模式中还会移除选" +"择光标。" + +msgid "" "Edits the selected tree item as if it was clicked. The item must be set " "editable with [method TreeItem.set_editable]. Returns [code]true[/code] if " "the item could be edited. Fails if no item is selected." @@ -75770,10 +101680,29 @@ msgstr "" "SELECT_MULTI] 模式下,焦点列是焦点光标下的列,但不一定有列被选中。\n" "要判断一个项的某一列是否被选中,请使用 [method TreeItem.is_selected]。" +msgid "" +"Returns [code]true[/code] if the column has enabled clipping (see [method " +"set_column_clip_content])." +msgstr "" +"如果该列启用了裁剪,则返回 [code]true[/code](见 [method " +"set_column_clip_content])。" + +msgid "" +"Returns [code]true[/code] if the column has enabled expanding (see [method " +"set_column_expand])." +msgstr "" +"如果该列启用了扩展,则返回 [code]true[/code](见 [method " +"set_column_expand])。" + msgid "Causes the [Tree] to jump to the specified [TreeItem]." msgstr "使 [Tree] 跳转到指定的 [TreeItem]。" msgid "" +"Allows to enable clipping for column's content, making the content size " +"ignored." +msgstr "允许对列的内容进行裁剪,会忽略内容大小。" + +msgid "" "Overrides the calculated minimum width of a column. It can be set to " "[code]0[/code] to restore the default behavior. Columns that have the " "\"Expand\" flag will use their \"min_width\" in a similar fashion to [member " @@ -75783,6 +101712,10 @@ msgstr "" "有“扩展”标志的列将以与 [member Control.size_flags_stretch_ratio] 类似的方式使" "用它们的最小宽度“min_width”。" +msgid "" +"Sets the relative expand ratio for a column. See [method set_column_expand]." +msgstr "设置列的相对扩展比。见 [method set_column_expand]。" + msgid "Sets the title of a column." msgstr "设置某一列的标题。" @@ -76199,6 +102132,16 @@ msgstr "重置指定列默认的背景颜色。" msgid "Resets the color for the given column to default." msgstr "重置指定列默认的颜色。" +msgid "" +"Creates an item and adds it as a child.\n" +"The new item will be inserted as position [param index] (the default value " +"[code]-1[/code] means the last position), or it will be the last child if " +"[param index] is higher than the child count." +msgstr "" +"创建项目并添加为子项。\n" +"新建的项目会插入到索引 [param index] 位置(默认的 [code]-1[/code] 表示最后的" +"位置),如果 [param index] 比子项数量大则会作为最后一项。" + msgid "Deselects the given column." msgstr "取消选择指定列。" @@ -76240,6 +102183,9 @@ msgstr "返回该列的单元格模式。" msgid "Returns the number of child items." msgstr "返回子项的数量。" +msgid "Returns an array of references to the item's children." +msgstr "返回引用该项目子级的数组。" + msgid "Returns the custom background color of column [param column]." msgstr "返回列 [param column] 的自定义背景色。" @@ -76533,6 +102479,22 @@ msgid "Mesh type used internally for collision calculations." msgstr "内部用于碰撞计算的网格类型。" msgid "" +"If [code]true[/code], generates a cap at the bottom of the tube. This can be " +"set to [code]false[/code] to speed up generation and rendering when the cap " +"is never seen by the camera." +msgstr "" +"如果为 [code]true[/code] ,则在管子的底部生成盖子。如果相机永远不可能见到盖" +"子,那么设置为 [code]false[/code] 可以加快生成和渲染的速度。" + +msgid "" +"If [code]true[/code], generates a cap at the top of the tube. This can be " +"set to [code]false[/code] to speed up generation and rendering when the cap " +"is never seen by the camera." +msgstr "" +"如果为 [code]true[/code] ,则在管子的顶部生成盖子。如果相机永远不可能见到盖" +"子,那么设置为 [code]false[/code] 可以加快生成和渲染的速度。" + +msgid "" "Lightweight object used for general-purpose animation via script, using " "[Tweener]s." msgstr "通过脚本进行通用动画的轻量级对象,使用 [Tweener]。" @@ -76590,6 +102552,19 @@ msgstr "" "[/codeblocks]" msgid "" +"Processes the [Tween] by the given [param delta] value, in seconds. This is " +"mostly useful for manual control when the [Tween] is paused. It can also be " +"used to end the [Tween] animation immediately, by setting [param delta] " +"longer than the whole duration of the [Tween] animation.\n" +"Returns [code]true[/code] if the [Tween] still has [Tweener]s that haven't " +"finished." +msgstr "" +"使用给定的增量秒数 [param delta] 处理该 [Tween]。最常见的用法是在该 [Tween] " +"暂停时对其进行手动控制。也可用于立即停止该 [Tween] 的动画,将 [param delta] " +"设得比完整长度更大即可。\n" +"如果该 [Tween] 仍然有未完成的 [Tweener],则返回 [code]true[/code]。" + +msgid "" "Returns the total time in seconds the [Tween] has been animating (i.e. the " "time since it started, not counting pauses etc.). The time is affected by " "[method set_speed_scale], and [method stop] will reset it to [code]0[/" @@ -77112,6 +103087,13 @@ msgstr "" "[/codeblocks]" msgid "" +"Emitted when the [Tween] has finished all tweening. Never emitted when the " +"[Tween] is set to infinite looping (see [method set_loops])." +msgstr "" +"该 [Tween] 完成所有补间时发出。该 [Tween] 设为无限循环时不会发出(见 [method " +"set_loops])。" + +msgid "" "Emitted when a full loop is complete (see [method set_loops]), providing the " "loop index. This signal is not emitted after the final loop, use [signal " "finished] instead for this case." @@ -77221,6 +103203,256 @@ msgid "Helper class to implement a UDP server." msgstr "用于实现 UDP 服务器的辅助类。" msgid "" +"A simple server that opens a UDP socket and returns connected " +"[PacketPeerUDP] upon receiving new packets. See also [method PacketPeerUDP." +"connect_to_host].\n" +"After starting the server ([method listen]), you will need to [method poll] " +"it at regular intervals (e.g. inside [method Node._process]) for it to " +"process new packets, delivering them to the appropriate [PacketPeerUDP], and " +"taking new connections.\n" +"Below a small example of how it can be used:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# server_node.gd\n" +"class_name ServerNode\n" +"extends Node\n" +"\n" +"var server := UDPServer.new()\n" +"var peers = []\n" +"\n" +"func _ready():\n" +" server.listen(4242)\n" +"\n" +"func _process(delta):\n" +" server.poll() # Important!\n" +" if server.is_connection_available():\n" +" var peer: PacketPeerUDP = server.take_connection()\n" +" var packet = peer.get_packet()\n" +" print(\"Accepted peer: %s:%s\" % [peer.get_packet_ip(), peer." +"get_packet_port()])\n" +" print(\"Received data: %s\" % [packet.get_string_from_utf8()])\n" +" # Reply so it knows we received the message.\n" +" peer.put_packet(packet)\n" +" # Keep a reference so we can keep contacting the remote peer.\n" +" peers.append(peer)\n" +"\n" +" for i in range(0, peers.size()):\n" +" pass # Do something with the connected peers.\n" +"[/gdscript]\n" +"[csharp]\n" +"// ServerNode.cs\n" +"using Godot;\n" +"using System.Collections.Generic;\n" +"\n" +"public partial class ServerNode : Node\n" +"{\n" +" private UdpServer _server = new UdpServer();\n" +" private List<PacketPeerUdp> _peers = new List<PacketPeerUdp>();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _server.Listen(4242);\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" _server.Poll(); // Important!\n" +" if (_server.IsConnectionAvailable())\n" +" {\n" +" PacketPeerUdp peer = _server.TakeConnection();\n" +" byte[] packet = peer.GetPacket();\n" +" GD.Print($\"Accepted Peer: {peer.GetPacketIP()}:{peer." +"GetPacketPort()}\");\n" +" GD.Print($\"Received Data: {packet.GetStringFromUtf8()}\");\n" +" // Reply so it knows we received the message.\n" +" peer.PutPacket(packet);\n" +" // Keep a reference so we can keep contacting the remote peer.\n" +" _peers.Add(peer);\n" +" }\n" +" foreach (var peer in _peers)\n" +" {\n" +" // Do something with the peers.\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# client_node.gd\n" +"class_name ClientNode\n" +"extends Node\n" +"\n" +"var udp := PacketPeerUDP.new()\n" +"var connected = false\n" +"\n" +"func _ready():\n" +" udp.connect_to_host(\"127.0.0.1\", 4242)\n" +"\n" +"func _process(delta):\n" +" if !connected:\n" +" # Try to contact server\n" +" udp.put_packet(\"The answer is... 42!\".to_utf8())\n" +" if udp.get_available_packet_count() > 0:\n" +" print(\"Connected: %s\" % udp.get_packet().get_string_from_utf8())\n" +" connected = true\n" +"[/gdscript]\n" +"[csharp]\n" +"// ClientNode.cs\n" +"using Godot;\n" +"\n" +"public partial class ClientNode : Node\n" +"{\n" +" private PacketPeerUdp _udp = new PacketPeerUdp();\n" +" private bool _connected = false;\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" if (!_connected)\n" +" {\n" +" // Try to contact server\n" +" _udp.PutPacket(\"The Answer Is..42!\".ToUtf8());\n" +" }\n" +" if (_udp.GetAvailablePacketCount() > 0)\n" +" {\n" +" GD.Print($\"Connected: {_udp.GetPacket()." +"GetStringFromUtf8()}\");\n" +" _connected = true;\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"简易服务器,会打开 UDP 套接字,并在收到新数据包时返回已连接的 " +"[PacketPeerUDP]。另见 [method PacketPeerUDP.connect_to_host]。\n" +"服务器启动后([method listen]),你需要调用 [method poll] 按照一定的间隔轮询" +"(例如在 [method Node._process] 中)才能处理新数据包、将它们传递给合适的 " +"[PacketPeerUDP]、获取新连接。\n" +"下面是简单的用法示例:\n" +"[codeblocks]\n" +"[gdscript]\n" +"# server_node.gd\n" +"class_name ServerNode\n" +"extends Node\n" +"\n" +"var server := UDPServer.new()\n" +"var peers = []\n" +"\n" +"func _ready():\n" +" server.listen(4242)\n" +"\n" +"func _process(delta):\n" +" server.poll() # 重要!\n" +" if server.is_connection_available():\n" +" var peer: PacketPeerUDP = server.take_connection()\n" +" var packet = peer.get_packet()\n" +" print(\"接受对等体:%s:%s\" % [peer.get_packet_ip(), peer." +"get_packet_port()])\n" +" print(\"接收到数据:%s\" % [packet.get_string_from_utf8()])\n" +" # 进行回复,这样对方就知道我们收到了消息。\n" +" peer.put_packet(packet)\n" +" # 保持引用,这样我们就能继续与远程对等体联系。\n" +" peers.append(peer)\n" +"\n" +" for i in range(0, peers.size()):\n" +" pass # 针对已连接的对等体进行操作。\n" +"[/gdscript]\n" +"[csharp]\n" +"// ServerNode.cs\n" +"using Godot;\n" +"using System.Collections.Generic;\n" +"\n" +"public partial class ServerNode : Node\n" +"{\n" +" private UdpServer _server = new UdpServer();\n" +" private List<PacketPeerUdp> _peers = new List<PacketPeerUdp>();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _server.Listen(4242);\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" _server.Poll(); // 重要!\n" +" if (_server.IsConnectionAvailable())\n" +" {\n" +" PacketPeerUdp peer = _server.TakeConnection();\n" +" byte[] packet = peer.GetPacket();\n" +" GD.Print($\"接受对等体:{peer.GetPacketIP()}:{peer." +"GetPacketPort()}\");\n" +" GD.Print($\"接收到数据:{packet.GetStringFromUtf8()}\");\n" +" // 进行回复,这样对方就知道我们收到了消息。\n" +" peer.PutPacket(packet);\n" +" // 保持引用,这样我们就能继续与远程对等体联系。\n" +" _peers.Add(peer);\n" +" }\n" +" foreach (var peer in _peers)\n" +" {\n" +" // 针对已连接的对等体进行操作。\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# client_node.gd\n" +"class_name ClientNode\n" +"extends Node\n" +"\n" +"var udp := PacketPeerUDP.new()\n" +"var connected = false\n" +"\n" +"func _ready():\n" +" udp.connect_to_host(\"127.0.0.1\", 4242)\n" +"\n" +"func _process(delta):\n" +" if !connected:\n" +" # 尝试连接服务器\n" +" udp.put_packet(\"答案是……42!\".to_utf8())\n" +" if udp.get_available_packet_count() > 0:\n" +" print(\"已连接:%s\" % udp.get_packet().get_string_from_utf8())\n" +" connected = true\n" +"[/gdscript]\n" +"[csharp]\n" +"// ClientNode.cs\n" +"using Godot;\n" +"\n" +"public partial class ClientNode : Node\n" +"{\n" +" private PacketPeerUdp _udp = new PacketPeerUdp();\n" +" private bool _connected = false;\n" +"\n" +" public override void _Ready()\n" +" {\n" +" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n" +" }\n" +"\n" +" public override void _Process(double delta)\n" +" {\n" +" if (!_connected)\n" +" {\n" +" // 尝试联系服务器\n" +" _udp.PutPacket(\"答案是……42!\".ToUtf8());\n" +" }\n" +" if (_udp.GetAvailablePacketCount() > 0)\n" +" {\n" +" GD.Print($\"已连接:{_udp.GetPacket().GetStringFromUtf8()}\");\n" +" _connected = true;\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" "Returns [code]true[/code] if a packet with a new address/port combination " "was received on the socket." msgstr "" @@ -77281,134 +103513,6 @@ msgstr "" "弃。把这个值设置为[code]0[/code]可以有效地防止任何新的待定连接被接受,例如," "当你的所有玩家都连接时。" -msgid "Helper to manage undo/redo operations in the editor or custom tools." -msgstr "在编辑器或自定义工具中管理撤销及重做操作的辅助工具。" - -msgid "" -"Helper to manage undo/redo operations in the editor or custom tools. It " -"works by registering methods and property changes inside \"actions\".\n" -"Common behavior is to create an action, then add do/undo calls to functions " -"or property changes, then committing the action.\n" -"Here's an example on how to add an action to the Godot editor's own " -"[UndoRedo], from a plugin:\n" -"[codeblocks]\n" -"[gdscript]\n" -"var undo_redo = get_undo_redo() # Method of EditorPlugin.\n" -"\n" -"func do_something():\n" -" pass # Put your code here.\n" -"\n" -"func undo_something():\n" -" pass # Put here the code that reverts what's done by " -"\"do_something()\".\n" -"\n" -"func _on_my_button_pressed():\n" -" var node = get_node(\"MyNode2D\")\n" -" undo_redo.create_action(\"Move the node\")\n" -" undo_redo.add_do_method(self, \"do_something\")\n" -" undo_redo.add_undo_method(self, \"undo_something\")\n" -" undo_redo.add_do_property(node, \"position\", Vector2(100,100))\n" -" undo_redo.add_undo_property(node, \"position\", node.position)\n" -" undo_redo.commit_action()\n" -"[/gdscript]\n" -"[csharp]\n" -"private UndoRedo _undoRedo;\n" -"\n" -"public override void _Ready()\n" -"{\n" -" _undoRedo = GetUndoRedo(); // Method of EditorPlugin.\n" -"}\n" -"\n" -"public void DoSomething()\n" -"{\n" -" // Put your code here.\n" -"}\n" -"\n" -"public void UndoSomething()\n" -"{\n" -" // Put here the code that reverts what's done by \"DoSomething()\".\n" -"}\n" -"\n" -"private void OnMyButtonPressed()\n" -"{\n" -" var node = GetNode<Node2D>(\"MyNode2D\");\n" -" _undoRedo.CreateAction(\"Move the node\");\n" -" _undoRedo.AddDoMethod(new Callable(this, MethodName.DoSomething));\n" -" _undoRedo.AddUndoMethod(new Callable(this, MethodName.UndoSomething));\n" -" _undoRedo.AddDoProperty(node, \"position\", new Vector2(100, 100));\n" -" _undoRedo.AddUndoProperty(node, \"position\", node.Position);\n" -" _undoRedo.CommitAction();\n" -"}\n" -"[/csharp]\n" -"[/codeblocks]\n" -"[method create_action], [method add_do_method], [method add_undo_method], " -"[method add_do_property], [method add_undo_property], and [method " -"commit_action] should be called one after the other, like in the example. " -"Not doing so could lead to crashes.\n" -"If you don't need to register a method, you can leave [method add_do_method] " -"and [method add_undo_method] out; the same goes for properties. You can also " -"register more than one method/property." -msgstr "" -"在编辑器或自定义工具中管理撤销及重做操作的辅助工具。它的工作原理是" -"在“action”(动作)中注册方法和属性更改。\n" -"常见行为是创建一个动作,然后添加对函数或属性更改的执行及撤消调用,然后提交该" -"动作。\n" -"这是一个关于如何从插件向 Godot 编辑器拥有的 [UndoRedo] 添加一个动作的示例:\n" -"[codeblocks]\n" -"[gdscript]\n" -"var undo_redo = get_undo_redo() # EditorPlugin 的方法。\n" -"\n" -"func do_something():\n" -" pass # 在此处添加你的代码。\n" -"\n" -"func undo_something():\n" -" pass # 在此处添加用于恢复“do_something()”所做修改的代码。\n" -"\n" -"func _on_my_button_pressed():\n" -" var node = get_node(\"MyNode2D\")\n" -" undo_redo.create_action(\"移动节点\")\n" -" undo_redo.add_do_method(self, \"do_something\")\n" -" undo_redo.add_undo_method(self, \"undo_something\")\n" -" undo_redo.add_do_property(node, \"position\", Vector2(100,100))\n" -" undo_redo.add_undo_property(node, \"position\", node.position)\n" -" undo_redo.commit_action()\n" -"[/gdscript]\n" -"[csharp]\n" -"private UndoRedo _undoRedo;\n" -"\n" -"public override void _Ready()\n" -"{\n" -" _undoRedo = GetUndoRedo(); // EditorPlugin 的方法。\n" -"}\n" -"\n" -"public void DoSomething()\n" -"{\n" -" // 在此处添加你的代码。\n" -"}\n" -"\n" -"public void UndoSomething()\n" -"{\n" -" // 在此处添加用于恢复“do_something()”所做修改的代码。\n" -"}\n" -"\n" -"private void OnMyButtonPressed()\n" -"{\n" -" var node = GetNode<Node2D>(\"MyNode2D\");\n" -" _undoRedo.CreateAction(\"移动节点\");\n" -" _undoRedo.AddDoMethod(new Callable(this, MethodName.DoSomething));\n" -" _undoRedo.AddUndoMethod(new Callable(this, MethodName.UndoSomething));\n" -" _undoRedo.AddDoProperty(node, \"position\", new Vector2(100, 100));\n" -" _undoRedo.AddUndoProperty(node, \"position\", node.Position);\n" -" _undoRedo.CommitAction();\n" -"}\n" -"[/csharp]\n" -"[/codeblocks]\n" -"[method create_action]、[method add_do_method]、[method add_undo_method]、" -"[method add_do_property]、[method add_undo_property]、和 [method " -"commit_action] 应该如示例所示依次调用。否则可能会导致崩溃。\n" -"如果不需要注册某个方法,可以省略 [method add_do_method] 和 [method " -"add_undo_method];属性也是如此。也可以注册多个方法/属性。" - msgid "Register a [Callable] that will be called when the action is committed." msgstr "注册 [Callable],会在提交动作时调用。" @@ -78144,20 +104248,20 @@ msgstr "" "的 XY 平面中,并使用它们的叉积的 Z 分量作为类比。" msgid "" -"Cubically interpolates between this vector and [param b] using [param pre_a] " -"and [param post_b] as handles, and returns the result at position [param " -"weight]. [param weight] is on the range of 0.0 to 1.0, representing the " -"amount of interpolation." +"Performs a cubic interpolation between this vector and [param b] using " +"[param pre_a] and [param post_b] as handles, and returns the result at " +"position [param weight]. [param weight] is on the range of 0.0 to 1.0, " +"representing the amount of interpolation." msgstr "" "返回该向量和 [param b] 之间进行三次插值 [param weight] 处的结果,使用 [param " "pre_a] 和 [param post_b] 作为控制柄。[param weight] 在 0.0 到 1.0 的范围内," "代表插值的量。" msgid "" -"Cubically interpolates between this vector and [param b] using [param pre_a] " -"and [param post_b] as handles, and returns the result at position [param " -"weight]. [param weight] is on the range of 0.0 to 1.0, representing the " -"amount of interpolation.\n" +"Performs a cubic interpolation between this vector and [param b] using " +"[param pre_a] and [param post_b] as handles, and returns the result at " +"position [param weight]. [param weight] is on the range of 0.0 to 1.0, " +"representing the amount of interpolation.\n" "It can perform smoother interpolation than [code]cubic_interpolate()[/code] " "by the time values." msgstr "" @@ -78238,12 +104342,6 @@ msgstr "" "@GlobalScope.is_finite]。" msgid "" -"Returns [code]true[/code] if the vector is normalized, [code]false[/code] " -"otherwise." -msgstr "" -"如果向量被归一化,返回 [code]true[/code],否则返回 [code]false[/code]。" - -msgid "" "Returns [code]true[/code] if this vector's values are approximately zero, by " "running [method @GlobalScope.is_zero_approx] on each component.\n" "This method is faster than using [method is_equal_approx] with one value as " @@ -78266,6 +104364,15 @@ msgstr "" "平方距离时,更喜欢用它。" msgid "" +"Returns the result of the linear interpolation between this vector and " +"[param to] by amount [param weight]. [param weight] is on the range of " +"[code]0.0[/code] to [code]1.0[/code], representing the amount of " +"interpolation." +msgstr "" +"返回此向量和 [param to] 之间,按数量 [param weight] 线性插值结果。[param " +"weight] 在 [code]0.0[/code] 到 [code]1.0[/code] 的范围内,代表插值的量。" + +msgid "" "Returns the vector with a maximum length by limiting its length to [param " "length]." msgstr "返回应用了最大长度限制的向量,长度被限制到 [param length]。" @@ -78294,27 +104401,52 @@ msgstr "" "终值。" msgid "" -"Returns a new vector scaled to unit length. Equivalent to [code]v / v." -"length()[/code]." -msgstr "" -"返回一个新向量,该向量缩放到了单位长度。相当于 [code]v/v.length()[/code]。" - -msgid "" "Returns a perpendicular vector rotated 90 degrees counter-clockwise compared " "to the original, with the same length." msgstr "返回一个与原来相比逆时针旋转 90 度的垂直向量,长度不变。" msgid "" +"Returns a vector composed of the [method @GlobalScope.fposmod] of this " +"vector's components and [param mod]." +msgstr "" +"返回由该向量的分量与 [param mod] 执行 [method @GlobalScope.fposmod] 运算后组" +"成的向量。" + +msgid "" +"Returns a vector composed of the [method @GlobalScope.fposmod] of this " +"vector's components and [param modv]'s components." +msgstr "" +"返回由该向量的分量与 [param modv] 的分量执行 [method @GlobalScope.fposmod] 运" +"算后组成的向量。" + +msgid "" "Returns the result of projecting the vector onto the given vector [param b]." msgstr "返回将该向量投影到给定向量 [param b] 上的结果。" msgid "" +"Returns the result of rotating this vector by [param angle] (in radians). " +"See also [method @GlobalScope.deg_to_rad]." +msgstr "" +"返回将这个向量旋转 [param angle] 的结果(单位为弧度)。另见 [method " +"@GlobalScope.deg_to_rad]。" + +msgid "" "Returns a new vector with all components rounded to the nearest integer, " "with halfway cases rounded away from zero." msgstr "" "返回所有分量都被四舍五入为最接近的整数的向量,中间情况向远离零的方向舍入。" msgid "" +"Returns a new vector with each component set to [code]1.0[/code] if it's " +"positive, [code]-1.0[/code] if it's negative, and [code]0.0[/code] if it's " +"zero. The result is identical to calling [method @GlobalScope.sign] on each " +"component." +msgstr "" +"返回新的向量,分量如果为正则设为 [code]1.0[/code],如果为负则设为 " +"[code]-1.0[/code],如果为零则设为 [code]0.0[/code]。结果与对每个分量调用 " +"[method @GlobalScope.sign] 一致。" + +msgid "" "The vector's X component. Also accessible by using the index position [code]" "[0][/code]." msgstr "向量的 X 分量。也可以通过使用索引位置 [code][0][/code] 访问。" @@ -78360,6 +104492,15 @@ msgid "Down unit vector. Y is down in 2D, so this vector points +Y." msgstr "下单位向量。在 2D 中 Y 是向下的,所以这个向量指向 +Y。" msgid "" +"Returns [code]true[/code] if the vectors are not equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"is_equal_approx] instead, which is more reliable." +msgstr "" +"如果向量不相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + +msgid "" "Multiplies each component of the [Vector2] by the components of the given " "[Vector2].\n" "[codeblock]\n" @@ -78514,6 +104655,16 @@ msgstr "从 [Vector2] 构造新的 [Vector2i]。浮点数坐标将被截断。" msgid "Constructs a new [Vector2i] from the given [param x] and [param y]." msgstr "从给定的 [param x] 和 [param y] 构造新的 [Vector2i]。" +msgid "" +"Returns a new vector with each component set to [code]1[/code] if it's " +"positive, [code]-1[/code] if it's negative, and [code]0[/code] if it's zero. " +"The result is identical to calling [method @GlobalScope.sign] on each " +"component." +msgstr "" +"返回一个新的向量,如果是正数,每个分量被设置为[code]1[/code] ,如果是负数," +"[code]-1[/code] ,如果是零,[code]0[/code] 。其结果与对每个分量调用[method " +"@GlobalScope.sign]相同。" + msgid "Returns [code]true[/code] if the vectors are not equal." msgstr "如果向量不相等,则返回 [code]true[/code]。" @@ -78541,6 +104692,9 @@ msgstr "" "print(Vector2i(10, 15) * 0.9) # 输出 \"(9, 13.5)\"\n" "[/codeblock]" +msgid "Multiplies each component of the [Vector2i] by the given [int]." +msgstr "将该 [Vector2i] 的每个分量乘以给定的 [int]。" + msgid "" "Adds each component of the [Vector2i] by the components of the given " "[Vector2i].\n" @@ -78635,6 +104789,14 @@ msgstr "" "量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值。该运算符可用" "于向量排序。" +msgid "" +"Returns the negative value of the [Vector2i]. This is the same as writing " +"[code]Vector2i(-v.x, -v.y)[/code]. This operation flips the direction of the " +"vector while keeping the same magnitude." +msgstr "" +"返回该 [Vector2i] 的负值。和写 [code]Vector2i(-v.x, -v.y)[/code] 是一样的。该" +"操作在保持相同幅度的同时,翻转向量的方向。" + msgid "Vector used for 3D math using floating point coordinates." msgstr "浮点数坐标向量,用于 3D 数学。" @@ -78684,29 +104846,6 @@ msgid "Returns the cross product of this vector and [param with]." msgstr "返回该向量与 [param with] 的叉积。" msgid "" -"Performs a cubic interpolation between this vector and [param b] using " -"[param pre_a] and [param post_b] as handles, and returns the result at " -"position [param weight]. [param weight] is on the range of 0.0 to 1.0, " -"representing the amount of interpolation." -msgstr "" -"返回该向量和 [param b] 之间进行三次插值 [param weight] 处的结果,使用 [param " -"pre_a] 和 [param post_b] 作为控制柄。[param weight] 在 0.0 到 1.0 的范围内," -"代表插值的量。" - -msgid "" -"Performs a cubic interpolation between this vector and [param b] using " -"[param pre_a] and [param post_b] as handles, and returns the result at " -"position [param weight]. [param weight] is on the range of 0.0 to 1.0, " -"representing the amount of interpolation.\n" -"It can perform smoother interpolation than [code]cubic_interpolate()[/code] " -"by the time values." -msgstr "" -"返回该向量和 [param b] 之间进行三次插值 [param weight] 处的结果,使用 [param " -"pre_a] 和 [param post_b] 作为控制柄。[param weight] 在 0.0 到 1.0 的范围内," -"代表插值的量。\n" -"通过使用时间值,可以比 [code]cubic_interpolate()[/code] 进行更平滑的插值。" - -msgid "" "Returns the axis of the vector's lowest value. See [code]AXIS_*[/code] " "constants. If all components are equal, this method returns [constant " "AXIS_Z]." @@ -78802,6 +104941,9 @@ msgstr "" "print(Vector3(10, 20, 30) * Vector3(3, 4, 5)) # 输出 \"(30, 80, 150)\"\n" "[/codeblock]" +msgid "Multiplies each component of the [Vector3] by the given [int]." +msgstr "将该 [Vector3] 的每个分量乘以给定的 [int]。" + msgid "" "Adds each component of the [Vector3] by the components of the given " "[Vector3].\n" @@ -78888,6 +105030,15 @@ msgstr "" "的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算符" "可用于向量排序。" +msgid "" +"Access vector components using their [param index]. [code]v[0][/code] is " +"equivalent to [code]v.x[/code], [code]v[1][/code] is equivalent to [code]v." +"y[/code], and [code]v[2][/code] is equivalent to [code]v.z[/code]." +msgstr "" +"使用向量分量的 [param index] 来访问向量分量。[code]v[0][/code] 等价于 " +"[code]v.x[/code],[code]v[1][/code] 等价于 [code]v.y[/code],[code]v[2][/" +"code] 等价于 [code]v.z[/code]。" + msgid "Vector used for 3D math using integer coordinates." msgstr "整数坐标向量,用于 3D 数学。" @@ -78950,6 +105101,9 @@ msgstr "" "print(Vector3i(10, 15, 20) * 0.9) # 输出 \"(9, 13.5, 18)\"\n" "[/codeblock]" +msgid "Multiplies each component of the [Vector3i] by the given [int]." +msgstr "将该 [Vector3i] 的每个分量乘以给定的 [int]。" + msgid "" "Adds each component of the [Vector3i] by the components of the given " "[Vector3i].\n" @@ -79045,6 +105199,14 @@ msgstr "" "量的 X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值。该运算" "符可用于向量排序。" +msgid "" +"Returns the negative value of the [Vector3i]. This is the same as writing " +"[code]Vector3i(-v.x, -v.y, -v.z)[/code]. This operation flips the direction " +"of the vector while keeping the same magnitude." +msgstr "" +"返回该 [Vector3i] 的负值。和写 [code]Vector3i(-v.x, -v.y, -v.z)[/code] 是一样" +"的。该操作在保持相同幅度的同时,翻转向量的方向。" + msgid "Vector used for 4D math using floating point coordinates." msgstr "浮点数坐标向量,用于 4D 数学。" @@ -79087,11 +105249,6 @@ msgid "Returns the dot product of this vector and [param with]." msgstr "返回该向量与 [param with] 的点积。" msgid "" -"Returns [code]true[/code] if the vector is normalized, i.e. its length is " -"equal to 1." -msgstr "如果该向量时归一化的,即长度等于 1,则返回 [code]true[/code]。" - -msgid "" "Returns the squared length (squared magnitude) of this vector. This method " "runs faster than [method length]." msgstr "" @@ -79106,6 +105263,11 @@ msgstr "" "法返回 [constant AXIS_W]。" msgid "" +"The vector's W component. Also accessible by using the index position [code]" +"[3][/code]." +msgstr "该向量的 W 分量。也可以通过使用索引位置 [code][3][/code] 访问。" + +msgid "" "Enumerated value for the W axis. Returned by [method max_axis_index] and " "[method min_axis_index]." msgstr "" @@ -79136,6 +105298,9 @@ msgstr "" "print(Vector4(10, 20, 30, 40) * 2) # 输出 \"(20, 40, 60, 80)\"\n" "[/codeblock]" +msgid "Multiplies each component of the [Vector4] by the given [int]." +msgstr "将该 [Vector4] 的每个分量乘以给定的 [int]。" + msgid "" "Adds each component of the [Vector4] by the components of the given " "[Vector4].\n" @@ -79236,6 +105401,16 @@ msgstr "" "X 值。如果 X 值完全相等,则用相同的方法检查两个向量的 Y 值、Z 值、W 值。该运" "算符可用于向量排序。" +msgid "" +"Access vector components using their [param index]. [code]v[0][/code] is " +"equivalent to [code]v.x[/code], [code]v[1][/code] is equivalent to [code]v." +"y[/code], [code]v[2][/code] is equivalent to [code]v.z[/code], and [code]v[3]" +"[/code] is equivalent to [code]v.w[/code]." +msgstr "" +"使用向量分量的 [param index] 来访问向量分量。[code]v[0][/code] 等价于 " +"[code]v.x[/code],[code]v[1][/code] 等价于 [code]v.y[/code],[code]v[2][/" +"code] 等价于 [code]v.z[/code],[code]v[3][/code] 等价于 [code]v.w[/code]。" + msgid "Vector used for 4D math using integer coordinates." msgstr "整数坐标向量,用于 4D 数学。" @@ -79293,6 +105468,9 @@ msgstr "" "print(Vector4i(10, 20, 30, 40) * 2) # 输出 \"(20, 40, 60, 80)\"\n" "[/codeblock]" +msgid "Multiplies each component of the [Vector4i] by the given [int]." +msgstr "将该 [Vector4i] 的每个分量乘以给定的 [int]。" + msgid "" "Adds each component of the [Vector4i] by the components of the given " "[Vector4i].\n" @@ -79586,6 +105764,9 @@ msgstr "返回音频通道的数量。" msgid "Returns the video duration in seconds, if known, or 0 if unknown." msgstr "视频时长已知时返回视频时长,未知时返回 0。" +msgid "Returns the audio sample rate used for mixing." +msgstr "返回用于混音的音频采样率。" + msgid "" "Return the current playback timestamp. Called in response to the [member " "VideoStreamPlayer.stream_position] getter." @@ -79776,6 +105957,13 @@ msgstr "" "world_2d] 属性中查找。" msgid "" +"Returns the first valid [World3D] for this viewport, searching the [member " +"world_3d] property of itself and any Viewport ancestor." +msgstr "" +"返回这个视口的第一个有效 [World3D],会在自身和 Viewport 祖先的 [member " +"world_3d] 属性中搜索。" + +msgid "" "Returns the currently active 2D camera. Returns null if there are no active " "cameras." msgstr "返回当前活动的 2D 相机。如果没有活动的相机,则返回 null。" @@ -79787,13 +105975,65 @@ msgid "Returns an individual bit on the rendering layer mask." msgstr "返回渲染层遮罩上的某个比特位。" msgid "" +"Returns the transform from the viewport's coordinate system to the " +"embedder's coordinate system." +msgstr "返回从该视口的坐标系到嵌入器坐标系统的变换。" + +msgid "" "Returns the mouse's position in this [Viewport] using the coordinate system " "of this [Viewport]." msgstr "返回该 [Viewport] 中鼠标的位置,使用该 [Viewport] 的坐标系。" +msgid "" +"Returns the [enum PositionalShadowAtlasQuadrantSubdiv] of the specified " +"quadrant." +msgstr "返回指定象限的 [enum PositionalShadowAtlasQuadrantSubdiv]。" + +msgid "" +"Returns the transform from the Viewport's coordinates to the screen " +"coordinates of the containing window manager window." +msgstr "返回从视口的坐标到包含窗口管理器窗口的屏幕坐标的变换。" + +msgid "" +"Returns the viewport's texture.\n" +"[b]Note:[/b] When trying to store the current texture (e.g. in a file), it " +"might be completely black or outdated if used too early, especially when " +"used in e.g. [method Node._ready]. To make sure the texture you get is " +"correct, you can await [signal RenderingServer.frame_post_draw] signal.\n" +"[codeblock]\n" +"func _ready():\n" +" await RenderingServer.frame_post_draw\n" +" $Viewport.get_texture().get_image().save_png(\"user://Screenshot.png\")\n" +"[/codeblock]" +msgstr "" +"返回该视口的纹理\n" +"[b]注意:[/b]保存当前纹理时(例如保存到文件中),如果时机过早则可能是全黑或过" +"时的图片,尤其是在 [method Node._ready] 等函数中使用时。要确保获得正确的纹" +"理,你可以等待 [signal RenderingServer.frame_post_draw] 信号。\n" +"[codeblock]\n" +"func _ready():\n" +" await RenderingServer.frame_post_draw\n" +" $Viewport.get_texture().get_image().save_png(\"user://Screenshot.png\")\n" +"[/codeblock]" + +msgid "Returns the viewport's RID from the [RenderingServer]." +msgstr "返回该视口在 [RenderingServer] 的 RID。" + msgid "Returns the visible rectangle in global screen coordinates." msgstr "返回全局屏幕坐标中的可见矩形。" +msgid "" +"Returns the drag data from the GUI, that was previously returned by [method " +"Control._get_drag_data]." +msgstr "" +"返回 GUI 的拖动数据,该数据先前由 [method Control._get_drag_data] 返回。" + +msgid "" +"Returns the [Control] having the focus within this viewport. If no [Control] " +"has the focus, returns null." +msgstr "" +"返回这个视口中聚焦的 [Control]。如果没有聚焦任何 [Control] 则返回 null。" + msgid "Returns [code]true[/code] if the drag operation is successful." msgstr "如果拖拽操作成功,则返回 [code]true[/code]。" @@ -79807,6 +106047,18 @@ msgstr "" "如果你更倾向于对其进行轮询,那么就可以作为 [constant Node." "NOTIFICATION_DRAG_BEGIN] 和 [constant Node.NOTIFICATION_DRAG_END] 的替代品。" +msgid "" +"Removes the focus from the currently focused [Control] within this viewport. " +"If no [Control] has the focus, does nothing." +msgstr "" +"移除这个视口中当前聚焦 [Control] 的焦点。如果没有聚焦任何 [Control],则什么都" +"不做。" + +msgid "" +"Set/clear individual bits on the rendering layer mask. This simplifies " +"editing this [Viewport]'s layers." +msgstr "设置或清除碰撞掩码上的比特位。可以简化 [Viewport] 层的编辑。" + msgid "Stops the input from propagating further down the [SceneTree]." msgstr "阻止输入沿着 [SceneTree] 继续向下传播。" @@ -79878,11 +106130,27 @@ msgid "If [code]true[/code], the viewport will not receive input events." msgstr "如果为 [code]true[/code],该视口将不接收输入事件。" msgid "" +"If [code]true[/code], sub-windows (popups and dialogs) will be embedded " +"inside application window as control-like nodes. If [code]false[/code], they " +"will appear as separate windows handled by the operating system." +msgstr "" +"如果为 [code]true[/code],子窗口(弹出窗口和对话框)将和控件等节点一样嵌入到" +"应用程序窗口中。如果为 [code]false[/code],它们将显示为操作系统处理的独立窗" +"口。" + +msgid "" "If [code]true[/code], the GUI controls on the viewport will lay pixel " "perfectly." msgstr "如果为 [code]true[/code],该视口上的 GUI 控件将完美地放置像素。" msgid "" +"If [code]true[/code], the viewport will use a unique copy of the [World3D] " +"defined in [member world_3d]." +msgstr "" +"如果为 [code]true[/code],则该视口会使用 [member world_3d] 中定义的 " +"[World3D] 的唯一副本。" + +msgid "" "If [code]true[/code], the objects rendered by viewport become subjects of " "mouse picking process." msgstr "如果为 [code]true[/code],该视口渲染的对象将成为鼠标拾取过程的对象。" @@ -79943,6 +106211,49 @@ msgstr "" "在某些情况下,去条带可能会引入稍微明显的抖动图案。建议仅在实际需要时才启用去" "条带,因为抖动图案会使无损压缩的屏幕截图变大。" +msgid "" +"The Variable Rate Shading (VRS) mode that is used for this viewport. Note, " +"if hardware does not support VRS this property is ignored." +msgstr "" +"用于这个视口的可变速率着色(Variable Rate Shading,VRS)模式。请注意,如果硬" +"件不支持 VRS,则会忽略此属性。" + +msgid "" +"Texture to use when [member vrs_mode] is set to [constant Viewport." +"VRS_TEXTURE].\n" +"The texture [i]must[/i] use a lossless compression format so that colors can " +"be matched precisely. The following VRS densities are mapped to various " +"colors, with brighter colors representing a lower level of shading " +"precision:\n" +"[codeblock]\n" +"- 1x1 = rgb(0, 0, 0) - #000000\n" +"- 1x2 = rgb(0, 85, 0) - #005500\n" +"- 2x1 = rgb(85, 0, 0) - #550000\n" +"- 2x2 = rgb(85, 85, 0) - #555500\n" +"- 2x4 = rgb(85, 170, 0) - #55aa00\n" +"- 4x2 = rgb(170, 85, 0) - #aa5500\n" +"- 4x4 = rgb(170, 170, 0) - #aaaa00\n" +"- 4x8 = rgb(170, 255, 0) - #aaff00 - Not supported on most hardware\n" +"- 8x4 = rgb(255, 170, 0) - #ffaa00 - Not supported on most hardware\n" +"- 8x8 = rgb(255, 255, 0) - #ffff00 - Not supported on most hardware\n" +"[/codeblock]" +msgstr "" +"[member vrs_mode] 为 [constant Viewport.VRS_TEXTURE] 时使用的纹理。\n" +"该纹理[i]必须[/i]使用无损压缩格式,以便可以精确匹配颜色。以下 VRS 密度会映射" +"为各种颜色,较亮的颜色代表较低的着色精度。\n" +"[codeblock]\n" +"- 1x1 = rgb(0, 0, 0) - #000000\n" +"- 1x2 = rgb(0, 85, 0) - #005500\n" +"- 2x1 = rgb(85, 0, 0) - #550000\n" +"- 2x2 = rgb(85, 85, 0) - #555500\n" +"- 2x4 = rgb(85, 170, 0) - #55aa00\n" +"- 4x2 = rgb(170, 85, 0) - #aa5500\n" +"- 4x4 = rgb(170, 170, 0) - #aaaa00\n" +"- 4x8 = rgb(170, 255, 0) - #aaff00 - 大多数硬件不支持\n" +"- 8x4 = rgb(255, 170, 0) - #ffaa00 - 大多数硬件不支持\n" +"- 8x8 = rgb(255, 255, 0) - #ffff00 - 大多数硬件不支持\n" +"[/codeblock]" + msgid "The custom [World2D] which can be used as 2D environment source." msgstr "自定义的 [World2D],可以作为 2D 环境源。" @@ -79994,6 +106305,29 @@ msgid "" "Represents the size of the [enum PositionalShadowAtlasQuadrantSubdiv] enum." msgstr "代表 [enum PositionalShadowAtlasQuadrantSubdiv] 枚举的大小。" +msgid "" +"Use bilinear scaling for the viewport's 3D buffer. The amount of scaling can " +"be set using [member scaling_3d_scale]. Values less then [code]1.0[/code] " +"will result in undersampling while values greater than [code]1.0[/code] will " +"result in supersampling. A value of [code]1.0[/code] disables scaling." +msgstr "" +"对该视口的 3D 缓冲区使用双线性缩放。缩放的程度可以使用 [member " +"scaling_3d_scale] 设置。小于 [code]1.0[/code] 的值会产生欠采样的效果,大于 " +"[code]1.0[/code] 会产生超采样的效果。值为 [code]1.0[/code] 时禁用缩放。" + +msgid "" +"Use AMD FidelityFX Super Resolution 1.0 upscaling for the viewport's 3D " +"buffer. The amount of scaling can be set using [member scaling_3d_scale]. " +"Values less then [code]1.0[/code] will be result in the viewport being " +"upscaled using FSR. Values greater than [code]1.0[/code] are not supported " +"and bilinear downsampling will be used instead. A value of [code]1.0[/code] " +"disables scaling." +msgstr "" +"对该视口的 3D 缓冲区使用 AMD FidelityFX 超分辨率 1.0 升采样技术。缩放的程度可" +"以使用 [member scaling_3d_scale] 设置。小于 [code]1.0[/code] 的值会使用 FSR " +"进行放大。不支持大于 [code]1.0[/code] 的值,会改用双线性降采样。值为 " +"[code]1.0[/code] 时禁用缩放。" + msgid "Represents the size of the [enum Scaling3DMode] enum." msgstr "代表 [enum Scaling3DMode] 枚举的大小。" @@ -80030,6 +106364,16 @@ msgstr "代表 [enum MSAA] 枚举的大小。" msgid "Do not perform any antialiasing in the full screen post-process." msgstr "不要在全屏后处理中执行抗锯齿。" +msgid "" +"Use fast approximate antialiasing. FXAA is a popular screen-space " +"antialiasing method, which is fast but will make the image look blurry, " +"especially at lower resolutions. It can still work relatively well at large " +"resolutions such as 1440p and 4K." +msgstr "" +"使用快速近似抗锯齿(Fast Approximate Anti-Aliasing)。FXAA 是一种流行的屏幕空" +"间抗锯齿方法,速度很快,但会让图像变模糊,使用较低分辨率时尤为显著。1440p 和 " +"4K 等较高分辨率下效果仍然不错。" + msgid "Represents the size of the [enum ScreenSpaceAA] enum." msgstr "代表 [enum ScreenSpaceAA] 枚举的大小。" @@ -80086,6 +106430,9 @@ msgstr "" "显示 [Viewport] 节点的路径。该路径是相对于场景根的,而不是相对于使用该纹理的" "节点。" +msgid "Automatically disables another node if not visible on screen." +msgstr "某个节点在屏幕上不可见时自动禁用该节点。" + msgid "Corresponds to [constant Node.PROCESS_MODE_INHERIT]." msgstr "对应 [constant Node.PROCESS_MODE_INHERIT]。" @@ -80098,6 +106445,9 @@ msgstr "对应 [constant Node.PROCESS_MODE_WHEN_PAUSED]。" msgid "Enables certain nodes only when approximately visible." msgstr "只在大约可见时启用某些节点。" +msgid "Detects when the node extents are visible on screen." +msgstr "检测节点范围何时在屏幕上可见。" + msgid "" "The VisibleOnScreenNotifier2D detects when it is visible on the screen. It " "also notifies when its bounding rectangle enters or exits the screen or a " @@ -80179,6 +106529,25 @@ msgid "Parent of all visual 3D nodes." msgstr "所有可视 3D 节点的父节点。" msgid "" +"Returns the [AABB] (also known as the bounding box) for this " +"[VisualInstance3D]." +msgstr "返回此 [VisualInstance3D] 的 [AABB](也叫边界框)。" + +msgid "" +"Returns whether or not the specified layer of the [member layers] is " +"enabled, given a [code]layer_number[/code] between 1 and 20." +msgstr "" +"返回 [member layers] 中的指定层是否启用,该层由一个介于 1 和 20 之间的给定 " +"[code]layer_number[/code] 指定。" + +msgid "" +"Based on [param value], enables or disables the specified layer in the " +"[member layers], given a [param layer_number] between 1 and 20." +msgstr "" +"基于 [param value],启用或禁用 [member layers] 中的指定层,该层由一个介于 1 " +"和 20 之间的给定 [param layer_number] 指定。" + +msgid "" "The amount by which the depth of this [VisualInstance3D] will be adjusted " "when sorting by depth. Uses the same units as the engine (which are " "typically meters). Adjusting it to a higher value will make the " @@ -80205,6 +106574,12 @@ msgstr "" "此类允许你自定义着色器程序,可以用于各种材质来渲染对象。\n" "可视化着色器编辑器会创建着色器。" +msgid "Adds the specified [param node] to the shader." +msgstr "向着色器中添加指定的节点 [param node]。" + +msgid "Adds a new varying value node to the shader." +msgstr "向着色器中添加新的 varying 值节点。" + msgid "" "Returns [code]true[/code] if the specified nodes and ports can be connected " "together." @@ -80219,6 +106594,10 @@ msgid "" msgstr "" "连接指定的节点和端口,即使它们无法连接。这样的连接是无效的,将不能正常工作。" +msgid "" +"Returns the shader node instance with specified [param type] and [param id]." +msgstr "返回具有指定 [param type] 和 [param id] 的着色器节点实例。" + msgid "Returns the list of connected nodes with the specified type." msgstr "返回具有指定类型的连接节点的列表。" @@ -80228,6 +106607,15 @@ msgstr "返回着色器中具有指定类型的所有节点的列表。" msgid "Returns the position of the specified node within the shader graph." msgstr "返回指定节点在着色器图中的位置。" +msgid "Returns next valid node ID that can be added to the shader graph." +msgstr "返回能够加入到着色器图中的下一个有效节点 ID。" + +msgid "" +"Returns [code]true[/code] if the shader has a varying with the given [param " +"name]." +msgstr "" +"如果着色器中存在名为 [param name] 的 varying 则返回 [code]true[/code]。" + msgid "" "Returns [code]true[/code] if the specified node and port connection exist." msgstr "如果指定的节点和端口连接存在,返回 [code]true[/code]。" @@ -80235,6 +106623,15 @@ msgstr "如果指定的节点和端口连接存在,返回 [code]true[/code]。 msgid "Removes the specified node from the shader." msgstr "从着色器中删除指定的节点。" +msgid "" +"Removes a varying value node with the given [param name]. Prints an error if " +"a node with this name is not found." +msgstr "" +"返回名为 [param name] 的 varying 值节点。如果不存在该名称的节点则输出错误。" + +msgid "Replaces the specified node with a node of new class type." +msgstr "将指定节点替换为新类型的节点。" + msgid "Sets the mode of this shader." msgstr "设置该着色器的模式。" @@ -80277,6 +106674,9 @@ msgstr "粒子着色器的“处理”阶段所使用的函数,带自定义输 msgid "A shader for 3D environment's sky." msgstr "3D 环境中天空的着色器。" +msgid "A compute shader that runs for each froxel of the volumetric fog map." +msgstr "为体积雾贴图的每个片段体素运行的一种计算着色器。" + msgid "Represents the size of the [enum Type] enum." msgstr "代表 [enum Type] 枚举的大小。" @@ -80322,6 +106722,12 @@ msgstr "Varying 的类型为 [Transform2D]。" msgid "Represents the size of the [enum VaryingType] enum." msgstr "代表 [enum VariantType] 枚举的大小。" +msgid "Denotes invalid [VisualShader] node." +msgstr "表示无效的 [VisualShader] 节点。" + +msgid "Denotes output node of [VisualShader]." +msgstr "表示 [VisualShader] 的输出节点。" + msgid "Base class for nodes in a visual shader graph." msgstr "可视化着色器图中节点的基类。" @@ -80414,9 +106820,28 @@ msgstr "" msgid "Represents the size of the [enum PortType] enum." msgstr "表示 [enum PortType] 枚举的大小。" +msgid "" +"A node that controls how the object faces the camera to be used within the " +"visual shader graph." +msgstr "在可视化着色器图中,用于控制对象如何面向相机的节点。" + +msgid "" +"The output port of this node needs to be connected to [code]Model View " +"Matrix[/code] port of [VisualShaderNodeOutput]." +msgstr "" +"这个节点的输出端口需要连接至 [VisualShaderNodeOutput] 的 [code]Model View " +"Matrix[/code] 端口。" + msgid "Controls how the object faces the camera. See [enum BillboardType]." msgstr "控制对象如何面对相机。请参阅 [enum BillboardType]。" +msgid "" +"If [code]true[/code], the shader will keep the scale set for the mesh. " +"Otherwise, the scale is lost when billboarding." +msgstr "" +"如果为 [code]true[/code],则着色器将保持为网格设置的缩放。否则,进行公告板处" +"理时将丢失缩放。" + msgid "Billboarding is disabled and the node does nothing." msgstr "公告板被禁用,该节点不做任何事情。" @@ -80445,8 +106870,11 @@ msgstr "" msgid "A boolean constant which represents a state of this node." msgstr "布尔常量,表示该节点的状态。" +msgid "A boolean parameter to be used within the visual shader graph." +msgstr "在可视化着色器图中使用的布尔参数。" + msgid "Translated to [code]uniform bool[/code] in the shader language." -msgstr "在着色器语言中被转换成 [code]uniform bool[/code]。" +msgstr "翻译为着色器语言中的 [code]uniform bool[/code]。" msgid "A default value to be assigned within the shader." msgstr "该着色器内部分配的默认值。" @@ -80454,6 +106882,9 @@ msgstr "该着色器内部分配的默认值。" msgid "Enables usage of the [member default_value]." msgstr "启用 [member default_value]。" +msgid "Clamps a value within the visual shader graph." +msgstr "在可视化着色器图中钳制某个值。" + msgid "" "Constrains a value to lie between [code]min[/code] and [code]max[/code] " "values." @@ -80720,7 +107151,20 @@ msgid "A [Color] parameter to be used within the visual shader graph." msgstr "在可视化着色器图中使用的 [Color] 参数。" msgid "Translated to [code]uniform vec4[/code] in the shader language." -msgstr "在着色器语言中被转换成 [code]uniform vec4[/code]。" +msgstr "翻译为着色器语言中的 [code]uniform vec4[/code]。" + +msgid "A comment node to be placed on visual shader graph." +msgstr "放置在可视化着色器图上的注释节点。" + +msgid "" +"A resizable rectangular area with changeable [member title] and [member " +"description] used for better organizing of other visual shader nodes." +msgstr "" +"可调整大小的矩形区域,标题 [member title] 和描述 [member description] 均可更" +"改,可用于更好地组织其他可视化着色器节点。" + +msgid "An additional description which placed below the title." +msgstr "放置在标题下方的额外说明。" msgid "A title of the node." msgstr "节点的标题。" @@ -80736,6 +107180,11 @@ msgstr "" "通过 [member function] 比较 [code]a[/code] 和 [code]b[/code] 的 [member " "type]。返回一个布尔标量。在着色器代码中转换成 [code]if[/code] 指令。" +msgid "" +"Extra condition which is applied if [member type] is set to [constant " +"CTYPE_VECTOR_3D]." +msgstr "[member type] 被设置为 [constant CTYPE_VECTOR_3D] 时应用的额外条件。" + msgid "A comparison function. See [enum Function] for options." msgstr "比较函数。参阅[enum Function]的选项。" @@ -80753,46 +107202,64 @@ msgid "Represents the size of the [enum ComparisonType] enum." msgstr "代表 [enum ComparisonType] 枚举的大小。" msgid "Comparison for equality ([code]a == b[/code])." -msgstr "相等比较,即 [code]a == b[/code]。" +msgstr "相等比较([code]a == b[/code])。" msgid "Comparison for inequality ([code]a != b[/code])." -msgstr "不等比较,即 [code]a != b[/code]。" +msgstr "不等比较([code]a != b[/code])。" msgid "" "Comparison for greater than ([code]a > b[/code]). Cannot be used if [member " "type] set to [constant CTYPE_BOOLEAN] or [constant CTYPE_TRANSFORM]." msgstr "" -"大于比较,即 [code]a > b[/code]。如果 [member type] 设置为 [constant " -"CTYPE_BOOLEAN] 或 [constant CTYPE_TRANSFORM] 则不能使用。" +"大于比较([code]a > b[/code])。如果 [member type] 设置为 [constant " +"CTYPE_BOOLEAN] 或 [constant CTYPE_TRANSFORM],则无法使用。" msgid "" "Comparison for greater than or equal ([code]a >= b[/code]). Cannot be used " "if [member type] set to [constant CTYPE_BOOLEAN] or [constant " "CTYPE_TRANSFORM]." msgstr "" -"大于或等于的比较,即 [code]a >= b[/code]。如果 [member type] 设置为 " -"[constant CTYPE_BOOLEAN] 或 [constant CTYPE_TRANSFORM] 则不能使用。" +"大于或等于的比较([code]a >= b[/code])。如果 [member type] 设置为 [constant " +"CTYPE_BOOLEAN] 或 [constant CTYPE_TRANSFORM],则无法使用。" msgid "" "Comparison for less than ([code]a < b[/code]). Cannot be used if [member " "type] set to [constant CTYPE_BOOLEAN] or [constant CTYPE_TRANSFORM]." msgstr "" -"小于比较,即 [code]a < b[/code]。如果 [member type] 设置为 [constant " -"CTYPE_BOOLEAN] 或 [constant CTYPE_TRANSFORM] 则不能使用。" +"小于比较([code]a < b[/code])。如果 [member type] 设置为 [constant " +"CTYPE_BOOLEAN] 或 [constant CTYPE_TRANSFORM],则无法使用。" + +msgid "" +"Comparison for less than or equal ([code]a <= b[/code]). Cannot be used if " +"[member type] set to [constant CTYPE_BOOLEAN] or [constant CTYPE_TRANSFORM]." +msgstr "" +"小于或等于的比较([code]a <= b[/code])。如果 [member type] 设置为 [constant " +"CTYPE_BOOLEAN] 或 [constant CTYPE_TRANSFORM],则无法使用。" msgid "" "The result will be true if all of component in vector satisfy the comparison " "condition." -msgstr "如果向量中的所有分量都满足比较条件,则结果为真。" +msgstr "如果向量中的所有分量都满足比较条件,则结果为 true。" msgid "" "The result will be true if any of component in vector satisfy the comparison " "condition." -msgstr "如果向量中的任意分量满足比较条件,则结果为真。" +msgstr "如果向量中的任何一个分量满足比较条件,则结果为 true。" msgid "Represents the size of the [enum Condition] enum." msgstr "代表 [enum Condition] 枚举的大小。" +msgid "A base type for the constants within the visual shader graph." +msgstr "可视化着色器图中,常量的基础类型。" + +msgid "" +"This is an abstract class. See the derived types for descriptions of the " +"possible values." +msgstr "这是一个抽象类。可能的值请看派生类型的描述。" + +msgid "A [Cubemap] sampling node to be used within the visual shader graph." +msgstr "在可视化着色器图中使用的一种 [Cubemap] 采样节点。" + msgid "" "Translated to [code]texture(cubemap, vec3)[/code] in the shader language. " "Returns a color vector and alpha channel as scalar." @@ -80801,6 +107268,13 @@ msgstr "" "和 Alpha 通道的标量。" msgid "" +"The [Cubemap] texture to sample when using [constant SOURCE_TEXTURE] as " +"[member source]." +msgstr "" +"当使用 [constant SOURCE_TEXTURE] 作为 [member source] 时,要采样的 [Cubemap] " +"纹理。" + +msgid "" "Defines which source should be used for the sampling. See [enum Source] for " "options." msgstr "定义采样应该使用哪个源。参阅[enum Source]的选项。" @@ -80810,6 +107284,21 @@ msgid "" "TextureType] for options." msgstr "定义源纹理提供的数据类型。选项参阅[enum TextureType]。" +msgid "" +"Use the [Cubemap] set via [member cube_map]. If this is set to [member " +"source], the [code]samplerCube[/code] port is ignored." +msgstr "" +"使用 [member cube_map] 设置的 [Cubemap]。如果设置为 [member source],则会忽" +"略 [code]samplerCube[/code] 端口。" + +msgid "" +"Use the [Cubemap] sampler reference passed via the [code]samplerCube[/code] " +"port. If this is set to [member source], the [member cube_map] texture is " +"ignored." +msgstr "" +"使用通过 [code]samplerCube[/code] 端口传递的 [Cubemap] 采样器引用。如果设置" +"为 [member source],则会忽略 [member cube_map] 纹理。" + msgid "Represents the size of the [enum Source] enum." msgstr "代表 [enum Source] 枚举的大小。" @@ -80830,6 +107319,22 @@ msgstr "" "将 [code]hint_normal[/code] 作为提示添加到 uniform 声明中,该声明在内部将纹理" "转换为法线贴图。" +msgid "A [Cubemap] parameter node to be used within the visual shader graph." +msgstr "可视化着色器图形中使用的 [Cubemap] 参数节点。" + +msgid "" +"Translated to [code]uniform samplerCube[/code] in the shader language. The " +"output value can be used as port for [VisualShaderNodeCubemap]." +msgstr "" +"翻译为着色器语言中的 [code]uniform samplerCube[/code]。该输出值可被用作 " +"[VisualShaderNodeCubemap] 的端口。" + +msgid "The source texture." +msgstr "源纹理。" + +msgid "Performs a [CurveXYZTexture] lookup within the visual shader graph." +msgstr "在可视化着色器图中执行 [CurveXYZTexture] 查找。" + msgid "" "Virtual class to define custom [VisualShaderNode]s for use in the Visual " "Shader Editor." @@ -80921,12 +107426,21 @@ msgstr "" "重写此方法来定义可视化着色器编辑器的成员对话框中相关自定义节点的返回图标。\n" "定义这个方法是[b]可选的[/b]。如果不重写,就不会显示返回图标。" +msgid "Calculates a derivative within the visual shader graph." +msgstr "在可视化着色器图中,计算导数。" + msgid "" "This node is only available in [code]Fragment[/code] and [code]Light[/code] " "visual shaders." msgstr "" "此节点仅在[code]Fragment[/code]和[code]Light[/code]可视化着色器中可用。" +msgid "A derivative function type. See [enum Function] for options." +msgstr "导数函数的类型。可选项见 [enum Function]。" + +msgid "A type of operands and returned value. See [enum OpType] for options." +msgstr "操作数和返回值的类型。可选项见 [enum OpType]。" + msgid "" "Sets the level of precision to use for the derivative function. See [enum " "Precision] for options. When using the GL Compatibility renderer, this " @@ -80982,19 +107496,37 @@ msgid "" msgstr "在可视化着色器图中计算 [Transform3D] 的行列式。" msgid "Translates to [code]determinant(x)[/code] in the shader language." -msgstr "在着色器语言中翻译成[code]determinant(x)[/code]。" +msgstr "翻译为着色器语言中的 [code]determinant(x)[/code]。" + +msgid "A visual shader node representing distance fade effect." +msgstr "表示按距离淡出效果的可视化着色器节点。" msgid "Calculates a dot product of two vectors within the visual shader graph." msgstr "计算可视化着色器图中两个向量的点积。" msgid "Translates to [code]dot(a, b)[/code] in the shader language." -msgstr "在着色器语言中转换成 [code]dot(a, b)[/code]。" +msgstr "翻译为着色器语言中的 [code]dot(a, b)[/code]。" msgid "" "A custom visual shader graph expression written in Godot Shading Language." msgstr "用Godot着色语言编写的自定义可视化着色器图形表达式。" msgid "" +"Custom Godot Shading Language expression, with a custom number of input and " +"output ports.\n" +"The provided code is directly injected into the graph's matching shader " +"function ([code]vertex[/code], [code]fragment[/code], or [code]light[/" +"code]), so it cannot be used to declare functions, varyings, uniforms, or " +"global constants. See [VisualShaderNodeGlobalExpression] for such global " +"definitions." +msgstr "" +"自定义 Godot 着色器语言表达式,有自定义数量的输入和输出端口。\n" +"所提供的代码会直接注入到着色器图中匹配的着色器函数中([code]vertex[/code]、" +"[code]fragment[/code] 或 [code]light[/code]),所以不能用于声明函数、" +"varying、uniform 或全局常量。这种全局定义见 " +"[VisualShaderNodeGlobalExpression]。" + +msgid "" "An expression in Godot Shading Language, which will be injected at the start " "of the graph's matching shader function ([code]vertex[/code], " "[code]fragment[/code], or [code]light[/code]), and thus cannot be used to " @@ -81023,6 +107555,31 @@ msgstr "" "值为 [code]N[/code]。否则,将返回 [code]-N[/code]。" msgid "" +"A scalar floating-point constant to be used within the visual shader graph." +msgstr "可视化着色器图中使用的浮点数标量常量。" + +msgid "Translated to [code]float[/code] in the shader language." +msgstr "翻译为着色器语言中的 [code]float[/code]。" + +msgid "A floating-point constant which represents a state of this node." +msgstr "代表该节点状态的浮点数常量。" + +msgid "" +"A scalar floating-point function to be used within the visual shader graph." +msgstr "在可视化着色器图中使用的浮点数标量函数。" + +msgid "" +"Accept a floating-point scalar ([code]x[/code]) to the input port and " +"transform it according to [member function]." +msgstr "" +"在输入端口接受一个浮点数标量([code]x[/code])并根据 [member function] 对其进" +"行变换。" + +msgid "" +"A function to be applied to the scalar. See [enum Function] for options." +msgstr "要应用于该标量的函数。可选项见 [enum Function]。" + +msgid "" "Returns the sine of the parameter. Translates to [code]sin(x)[/code] in the " "Godot Shader Language." msgstr "" @@ -81136,17 +107693,103 @@ msgid "" msgstr "" "计算参数的小数部分。在 Godot 着色器语言中,会被翻译为 [code]fract(x)[/code]。" +msgid "" +"Clamps the value between [code]0.0[/code] and [code]1.0[/code] using " +"[code]min(max(x, 0.0), 1.0)[/code]." +msgstr "" +"使用 [code]min(max(x, 0.0), 1.0)[/code] 将值钳制在 [code]0.0[/code] 和 " +"[code]1.0[/code] 之间。" + msgid "Negates the [code]x[/code] using [code]-(x)[/code]." msgstr "使用 [code]-(x)[/code],对 [code]x[/code] 求反。" msgid "" +"Returns the arc-hyperbolic-cosine of the parameter. Translates to " +"[code]acosh(x)[/code] in the Godot Shader Language." +msgstr "" +"返回参数的反双曲余弦值。在 Godot 着色器语言中,会被翻译为 [code]acosh(x)[/" +"code]。" + +msgid "" +"Returns the arc-hyperbolic-sine of the parameter. Translates to " +"[code]asinh(x)[/code] in the Godot Shader Language." +msgstr "" +"返回参数的反双曲正弦值。在 Godot 着色器语言中,会被翻译为 [code]asinh(x)[/" +"code]。" + +msgid "" +"Returns the arc-hyperbolic-tangent of the parameter. Translates to " +"[code]atanh(x)[/code] in the Godot Shader Language." +msgstr "" +"返回参数的反双曲正切值。在 Godot 着色器语言中,会被翻译为 [code]atanh(x)[/" +"code]。" + +msgid "" +"Convert a quantity in radians to degrees. Translates to [code]degrees(x)[/" +"code] in the Godot Shader Language." +msgstr "" +"将弧度数转换为度数。在 Godot 着色器语言中,会被翻译为 [code]degrees(x)[/" +"code]。" + +msgid "" +"Returns 2 raised by the power of the parameter. Translates to [code]exp2(x)[/" +"code] in the Godot Shader Language." +msgstr "" +"返回 2 的参数次幂。在 Godot 着色器语言中,会被翻译为 [code]exp2(x)[/code]。" + +msgid "" +"Returns the inverse of the square root of the parameter. Translates to " +"[code]inversesqrt(x)[/code] in the Godot Shader Language." +msgstr "" +"返回参数平方根的倒数。在 Godot 着色器语言中,会被翻译为 [code]inversesqrt(x)" +"[/code]。" + +msgid "" +"Returns the base 2 logarithm of the parameter. Translates to [code]log2(x)[/" +"code] in the Godot Shader Language." +msgstr "" +"返回参数的以 2 为底的对数。在 Godot 着色器语言中,会被翻译为 [code]log2(x)[/" +"code]。" + +msgid "" +"Convert a quantity in degrees to radians. Translates to [code]radians(x)[/" +"code] in the Godot Shader Language." +msgstr "" +"将度数转换为弧度。在 Godot 着色器语言中,会被翻译为 [code]radians(x)[/code]。" + +msgid "" "Finds reciprocal value of dividing 1 by [code]x[/code] (i.e. [code]1 / x[/" "code])." msgstr "求 1 除以 [code]x[/code] 得到的倒数(即 [code]1 / x[/code])。" +msgid "" +"Finds the nearest even integer to the parameter. Translates to " +"[code]roundEven(x)[/code] in the Godot Shader Language." +msgstr "" +"查找最接近参数的偶数。在 Godot 着色器语言中,会被翻译为 [code]roundEven(x)[/" +"code]。" + +msgid "" +"Returns a value equal to the nearest integer to [code]x[/code] whose " +"absolute value is not larger than the absolute value of [code]x[/code]. " +"Translates to [code]trunc(x)[/code] in the Godot Shader Language." +msgstr "" +"返回与 [code]x[/code] 的最接近整数的值,其绝对值不大于 [code]x[/code] 绝对" +"值。在 Godot 着色器语言中,会被翻译为 [code]trunc(x)[/code]。" + msgid "Subtracts scalar [code]x[/code] from 1 (i.e. [code]1 - x[/code])." msgstr "从 1 中减去标量 [code]x[/code](即 [code]1 - x[/code])。" +msgid "" +"A floating-point scalar operator to be used within the visual shader graph." +msgstr "浮点数标量运算符,在可视化着色器图中使用。" + +msgid "" +"Applies [member operator] to two floating-point inputs: [code]a[/code] and " +"[code]b[/code]." +msgstr "" +"将 [member operator] 应用于两个浮点数输入:[code]a[/code] 和 [code]b[/code]。" + msgid "Sums two numbers using [code]a + b[/code]." msgstr "使用 [code]a + b[/code] 将两个数字相加。" @@ -81159,8 +107802,50 @@ msgstr "使用 [code]a * b[/code] 将两个数字相乘。" msgid "Divides two numbers using [code]a / b[/code]." msgstr "使用 [code]a / b[/code] 将两个数字相除。" +msgid "" +"Calculates the remainder of two numbers. Translates to [code]mod(a, b)[/" +"code] in the Godot Shader Language." +msgstr "" +"计算两个数的余数。在 Godot 着色器语言中,会被翻译为 [code]mod(a, b)[/code]。" + +msgid "" +"Raises the [code]a[/code] to the power of [code]b[/code]. Translates to " +"[code]pow(a, b)[/code] in the Godot Shader Language." +msgstr "" +"将 [code]a[/code] 提高到 [code]b[/code] 次幂。在 Godot 着色器语言中,会被翻译" +"为 [code]pow(a, b)[/code]。" + +msgid "" +"Returns the greater of two numbers. Translates to [code]max(a, b)[/code] in " +"the Godot Shader Language." +msgstr "" +"返回两个数中的较大者。在 Godot 着色器语言中,会被翻译为 [code]max(a, b)[/" +"code]。" + +msgid "" +"Returns the lesser of two numbers. Translates to [code]min(a, b)[/code] in " +"the Godot Shader Language." +msgstr "" +"返回两个数中的较小者。在 Godot 着色器语言中,会被翻译为 [code]min(a, b)[/" +"code]。" + +msgid "" +"Returns the arc-tangent of the parameters. Translates to [code]atan(a, b)[/" +"code] in the Godot Shader Language." +msgstr "" +"返回参数的反正切值。在 Godot 着色器语言中,会被翻译为 [code]atan(a, b)[/" +"code]。" + +msgid "A scalar float parameter to be used within the visual shader graph." +msgstr "标量浮点数参数,在可视化着色器图中使用。" + msgid "Translated to [code]uniform float[/code] in the shader language." -msgstr "在着色器语言中被翻译为 [code]uniform float[/code]。" +msgstr "翻译为着色器语言中的 [code]uniform float[/code]。" + +msgid "" +"A hint applied to the uniform, which controls the values it can take when " +"set through the Inspector." +msgstr "对 uniform 应用的提示,控制通过检查器所能设置的值。" msgid "" "Minimum value for range hints. Used if [member hint] is set to [constant " @@ -81233,6 +107918,20 @@ msgstr "" msgid "Currently, has no direct usage, use the derived classes instead." msgstr "目前,没有直接使用,而用派生类代替。" +msgid "" +"Adds an input port with the specified [param type] (see [enum " +"VisualShaderNode.PortType]) and [param name]." +msgstr "" +"添加具有指定类型 [param type] 和名称 [param name] 的输入端口(见 [enum " +"VisualShaderNode.PortType])。" + +msgid "" +"Adds an output port with the specified [param type] (see [enum " +"VisualShaderNode.PortType]) and [param name]." +msgstr "" +"添加具有指定类型 [param type] 和名称 [param name] 的输出端口(见 [enum " +"VisualShaderNode.PortType])。" + msgid "Removes all previously specified input ports." msgstr "移除所有先前指定的输入端口。" @@ -81318,6 +108017,9 @@ msgstr "" "使用一个[String]格式的以冒号分隔的列表来定义所有输出端口: [code]id,type,name;" "[/code] ,参阅[method add_output_port]。" +msgid "Represents the input shader parameter within the visual shader graph." +msgstr "在可视化着色器图中,代表输入着色器参数。" + msgid "" "Gives access to input variables (built-ins) available for the shader. See " "the shading reference for the list of available built-ins for each shader " @@ -81329,13 +108031,62 @@ msgstr "" msgid "Shading reference index" msgstr "着色参考索引" +msgid "" +"One of the several input constants in lower-case style like: " +"\"vertex\" ([code]VERTEX[/code]) or \"point_size\" ([code]POINT_SIZE[/code])." +msgstr "" +"小写风格的输入常量之一,例如:\"vertex\"([code]VERTEX[/code])或 " +"\"point_size\"([code]POINT_SIZE[/code])。" + +msgid "Emitted when input is changed via [member input_name]." +msgstr "通过 [member input_name] 更改输入时发出。" + +msgid "A scalar integer constant to be used within the visual shader graph." +msgstr "标量整数常量,在可视化着色器图中使用。" + +msgid "Translated to [code]int[/code] in the shader language." +msgstr "翻译为着色器语言中的 [code]int[/code]。" + msgid "An integer constant which represents a state of this node." msgstr "整数常量,代表该节点的状态。" +msgid "A scalar integer function to be used within the visual shader graph." +msgstr "标量整数函数,在可视化着色器图中使用。" + +msgid "" +"Accept an integer scalar ([code]x[/code]) to the input port and transform it " +"according to [member function]." +msgstr "" +"在输入端口接受一个整数标量([code]x[/code])并根据 [member function] 对其进行" +"变换。" + +msgid "" +"Returns the result of bitwise [code]NOT[/code] operation on the integer. " +"Translates to [code]~a[/code] in the Godot Shader Language." +msgstr "" +"返回对该整数进行按位 [code]NOT[/code] 运算的结果。在 Godot 着色器语言中会被翻" +"译为 [code]~a[/code]。" + +msgid "An integer scalar operator to be used within the visual shader graph." +msgstr "整数标量运算符,在可视化着色器图中使用。" + +msgid "" +"Applies [member operator] to two integer inputs: [code]a[/code] and [code]b[/" +"code]." +msgstr "" +"将 [member operator] 应用于两个整数输入:[code]a[/code] 和 [code]b[/code]。" + msgid "Calculates the remainder of two numbers using [code]a % b[/code]." msgstr "使用 [code]a % b[/code] 计算两个数字的余数。" msgid "" +"Returns the lesser of two numbers. Translates to [code]max(a, b)[/code] in " +"the Godot Shader Language." +msgstr "" +"返回两个数字中的较小者。在 Godot 着色器语言中会被翻译为 [code]min(a, b)[/" +"code]。" + +msgid "" "Returns the result of bitwise [code]AND[/code] operation on the integer. " "Translates to [code]a & b[/code] in the Godot Shader Language." msgstr "" @@ -81370,10 +108121,65 @@ msgstr "" "返回对该整数进行按位右移运算的结果。在 Godot 着色器语言中会被翻译为 [code]a " ">> b[/code]。" +msgid "A visual shader node for shader parameter (uniform) of type [int]." +msgstr "[int] 类型着色器参数(uniform)的可视化着色器节点。" + +msgid "" +"A [VisualShaderNodeParameter] of type [int]. Offers additional customization " +"for range of accepted values." +msgstr "" +"[int] 类型的 [VisualShaderNodeParameter]。可以自定义能够接受的值的范围。" + +msgid "" +"Default value of this parameter, which will be used if not set externally. " +"[member default_value_enabled] must be enabled; defaults to [code]0[/code] " +"otherwise." +msgstr "" +"这个参数的默认值,外部没有设值时使用。必须启用 [member " +"default_value_enabled];否则默认为 [code]0[/code]。" + +msgid "If [code]true[/code], the node will have a custom default value." +msgstr "如果为 [code]true[/code],则该节点有自定义默认值。" + msgid "Range hint of this node. Use it to customize valid parameter range." msgstr "该节点的范围提示。请用它来自定义有效的参数范围。" msgid "" +"The maximum value this parameter can take. [member hint] must be either " +"[constant HINT_RANGE] or [constant HINT_RANGE_STEP] for this to take effect." +msgstr "" +"这个参数所能接受的最大值。[member hint] 必须为 [constant HINT_RANGE] 或 " +"[constant HINT_RANGE_STEP] 才会生效。" + +msgid "" +"The minimum value this parameter can take. [member hint] must be either " +"[constant HINT_RANGE] or [constant HINT_RANGE_STEP] for this to take effect." +msgstr "" +"这个参数所能接受的最小值。[member hint] 必须为 [constant HINT_RANGE] 或 " +"[constant HINT_RANGE_STEP] 才会生效。" + +msgid "" +"The step between parameter's values. Forces the parameter to be a multiple " +"of the given value. [member hint] must be [constant HINT_RANGE_STEP] for " +"this to take effect." +msgstr "" +"参数值之间的步长。迫使参数成为给定值的倍数。[member hint] 必须为 [constant " +"HINT_RANGE_STEP] 才能生效。" + +msgid "The parameter will not constrain its value." +msgstr "参数的取值没有约束。" + +msgid "" +"The parameter's value must be within the specified [member min]/[member max] " +"range." +msgstr "参数的取值必须在指定的 [member min]/[member max] 范围内。" + +msgid "" +"The parameter's value must be within the specified range, with the given " +"[member step] between values." +msgstr "参数的取值必须在指定的范围内,值与值之间的步长为给定的 [member step]。" + +msgid "" "A boolean comparison operator to be used within the visual shader graph." msgstr "布尔比较运算符,在可视化着色器图中使用。" @@ -81395,6 +108201,11 @@ msgid "" msgstr "" "与 [code]NaN[/code] 比较(不是一个数字;表示无效的数字结果,如除以 0)。" +msgid "" +"A visual shader node that returns the depth value of the DEPTH_TEXTURE node " +"in a linear space." +msgstr "返回 DEPTH_TEXTURE 节点线性空间深度值的可视化着色器节点。" + msgid "This node can be used in fragment shaders." msgstr "该节点可用于片段着色器。" @@ -81403,7 +108214,7 @@ msgid "" msgstr "在可视化着色器图中,在两个值之间进行线性插值。" msgid "Translates to [code]mix(a, b, weight)[/code] in the shader language." -msgstr "在着色器语言中转换为 [code]mix(a, b, weight)[/code]。" +msgstr "翻译为着色器语言中的 [code]mix(a, b, weight)[/code]。" msgid "" "The [code]a[/code] and [code]b[/code] ports use a 2D vector type. The " @@ -81429,6 +108240,9 @@ msgstr "" msgid "Performs a fused multiply-add operation within the visual shader graph." msgstr "在可视化着色器图中,执行乘加融合运算。" +msgid "Uses three operands to compute [code](a * b + c)[/code] expression." +msgstr "使用三个操作数来计算 [code](a * b + c)[/code] 表达式。" + msgid "A floating-point scalar type." msgstr "浮点数标量类型。" @@ -81462,9 +108276,25 @@ msgstr "" msgid "A base type for the parameters within the visual shader graph." msgstr "可视化着色器图中,参数的基础类型。" +msgid "" +"Name of the parameter, by which it can be accessed through the " +"[ShaderMaterial] properties." +msgstr "参数的名称,该参数可以通过该名称作为 [ShaderMaterial] 的属性访问。" + msgid "Defines the scope of the parameter." msgstr "定义该参数的作用域。" +msgid "The parameter will be tied to the [ShaderMaterial] using this shader." +msgstr "该参数绑定至使用此着色器的 [ShaderMaterial]。" + +msgid "The parameter will use a global value, defined in Project Settings." +msgstr "该参数使用“项目设置”中定义的全局值。" + +msgid "" +"The parameter will be tied to the node with attached [ShaderMaterial] using " +"this shader." +msgstr "该参数绑定至节点,该节点附加了使用此着色器的 [ShaderMaterial]。" + msgid "Represents the size of the [enum Qualifier] enum." msgstr "代表 [enum Qualifier] 枚举的大小。" @@ -81513,9 +108343,19 @@ msgid "" "radians." msgstr "如果为 [code]true[/code],夹角会被解释为度数,而不是弧度数。" +msgid "Visual shader node for randomizing particle values." +msgstr "用于随机化粒子值的可视化着色器节点。" + +msgid "A visual shader node for remap function." +msgstr "remap 函数的可视化着色器节点。" + msgid "The size of the node in the visual shader graph." msgstr "可视化着色器图中,该节点的大小。" +msgid "" +"A base node for nodes which samples 3D textures in the visual shader graph." +msgstr "可视化着色器图中,对 3D 纹理进行采样的节点的基础节点。" + msgid "A virtual class, use the descendants instead." msgstr "虚类,请改用其派生类。" @@ -81526,6 +108366,33 @@ msgid "Use the uniform texture from sampler port." msgstr "使用采样器端口的 uniform 纹理。" msgid "" +"Translates to [code]screen_uv_to_sdf(uv)[/code] in the shader language. If " +"the UV port isn't connected, [code]SCREEN_UV[/code] is used instead." +msgstr "" +"翻译为着色器语言中的 [code]screen_uv_to_sdf(uv)[/code]。如果该 UV 端口未被连" +"接,则改用 [code]SCREEN_UV[/code]。" + +msgid "" +"Translates to [code]sdf_to_screen_uv(sdf_pos)[/code] in the shader language." +msgstr "翻译为着色器语言中的 [code]sdf_to_screen_uv(sdf_pos)[/code]。" + +msgid "Calculates a SmoothStep function within the visual shader graph." +msgstr "在可视化着色器图中计算 SmoothStep 函数。" + +msgid "" +"The [code]x[/code] port uses a 2D vector type. The first two ports use a " +"floating-point scalar type." +msgstr "[code]x[/code] 端口使用 2D 向量类型。前两个端口使用浮点数标量类型。" + +msgid "" +"The [code]x[/code] port uses a 3D vector type. The first two ports use a " +"floating-point scalar type." +msgstr "[code]x[/code] 端口使用 3D 向量类型。前两个端口使用浮点数标量类型。" + +msgid "Calculates a Step function within the visual shader graph." +msgstr "在可视化着色器图中计算 Step 函数。" + +msgid "" "Translates to [code]step(edge, x)[/code] in the shader language.\n" "Returns [code]0.0[/code] if [code]x[/code] is smaller than [code]edge[/code] " "and [code]1.0[/code] otherwise." @@ -81534,9 +108401,29 @@ msgstr "" "如果 [code]x[/code] 小于 [code]edge[/code],返回 [code]0.0[/code],否则返回 " "[code]1.0[/code]。" +msgid "" +"The [code]x[/code] port uses a 2D vector type, while the [code]edge[/code] " +"port uses a floating-point scalar type." +msgstr "" +"[code]x[/code] 端口使用 2D 向量类型,而 [code]edge[/code] 端口使用浮点数标量" +"类型。" + +msgid "" +"The [code]x[/code] port uses a 3D vector type, while the [code]edge[/code] " +"port uses a floating-point scalar type." +msgstr "" +"[code]x[/code] 端口使用 3D 向量类型,而 [code]edge[/code] 端口使用浮点数标量" +"类型。" + +msgid "A selector function for use within the visual shader graph." +msgstr "可视化着色器中使用的选择器函数。" + msgid "A transform type." msgstr "变换类型。" +msgid "Performs a 2D texture lookup within the visual shader graph." +msgstr "在可视化着色器图中,执行 2D 纹理查找。" + msgid "" "Performs a lookup operation on the provided texture, with support for " "multiple texture sources to choose from." @@ -81567,6 +108454,39 @@ msgstr "使用该着色器内置的法线贴图的纹理。" msgid "Use the texture provided in the input port for this function." msgstr "将输入端口中提供的纹理用于此函数。" +msgid "A 2D texture uniform array to be used within the visual shader graph." +msgstr "可视化着色器图中使用的 2D 纹理 uniform 数组。" + +msgid "" +"Translated to [code]uniform sampler2DArray[/code] in the shader language." +msgstr "翻译为着色器语言中的 [code]uniform sampler2DArray[/code]。" + +msgid "" +"A visual shader node for shader parameter (uniform) of type [Texture2DArray]." +msgstr "[Texture2DArray] 类型着色器参数(uniform)的可视化着色器节点。" + +msgid "Provides a 2D texture parameter within the visual shader graph." +msgstr "在可视化着色器图中提供 2D 纹理参数。" + +msgid "Translated to [code]uniform sampler2D[/code] in the shader language." +msgstr "翻译为着色器语言中的 [code]uniform sampler2D[/code]。" + +msgid "Performs a 3D texture lookup within the visual shader graph." +msgstr "在可视化着色器图中,执行 3D 纹理查找。" + +msgid "" +"A source texture. Used if [member VisualShaderNodeSample3D.source] is set to " +"[constant VisualShaderNodeSample3D.SOURCE_TEXTURE]." +msgstr "" +"源纹理。在 [member VisualShaderNodeSample3D.source] 为 [constant " +"VisualShaderNodeSample3D.SOURCE_TEXTURE] 时使用。" + +msgid "Provides a 3D texture parameter within the visual shader graph." +msgstr "在可视化着色器图中提供 3D 纹理参数。" + +msgid "Translated to [code]uniform sampler3D[/code] in the shader language." +msgstr "翻译为着色器语言中的 [code]uniform sampler3D[/code]。" + msgid "Performs a uniform texture lookup within the visual shader graph." msgstr "在可视化着色器图中执行 uniform 的纹理查找。" @@ -81584,6 +108504,25 @@ msgstr "设置纹理过滤模式。选项见 [enum TextureFilter]。" msgid "Sets the texture repeating mode. See [enum TextureRepeat] for options." msgstr "设置纹理重复模式。选项见 [enum TextureRepeat]。" +msgid "" +"Sets the texture source mode. Used for reading from the screen, depth, or " +"normal_roughness texture. see [enum TextureSource] for options." +msgstr "" +"设置纹理源的模式。用于读取 screen(屏幕)、depth(深度)或 normal_roughness" +"(法线粗糙度)纹理。选项见 [enum TextureSource]。" + +msgid "" +"Adds [code]source_color[/code] as hint to the uniform declaration for proper " +"sRGB to linear conversion." +msgstr "" +"向该 uniform 声明添加 [code]source_color[/code] 提示,用于进行正确的 sRGB 到" +"线性颜色空间的转换。" + +msgid "" +"Adds [code]hint_anisotropy[/code] as hint to the uniform declaration to use " +"for a flowmap." +msgstr "向该 uniform 声明添加 [code]hint_anisotropy[/code] 提示,用于流向图。" + msgid "Defaults to fully opaque white color." msgstr "默认为完全不透明的白色。" @@ -81604,6 +108543,13 @@ msgid "" "drawn this frame." msgstr "纹理源为屏幕纹理,捕获了本帧中绘制的所有不透明对象。" +msgid "The texture source is the depth texture from the depth prepass." +msgstr "纹理源为深度预处理阶段的深度纹理。" + +msgid "" +"The texture source is the normal-roughness buffer from the depth prepass." +msgstr "纹理源为深度预处理阶段的法线粗糙度缓冲区。" + msgid "Represents the size of the [enum TextureSource] enum." msgstr "代表 [enum TextureSource] 枚举的大小。" @@ -81618,6 +108564,28 @@ msgid "" msgstr "对作为uniform着色器提供的纹理进行查找操作,并支持三角面贴图。" msgid "" +"Performs an SDF (signed-distance field) texture lookup within the visual " +"shader graph." +msgstr "在可视化着色器图中执行 SDF(带符号距离场)纹理查找。" + +msgid "Translates to [code]texture_sdf(sdf_pos)[/code] in the shader language." +msgstr "翻译为着色器语言中的 [code]texture_sdf(sdf_pos)[/code]。" + +msgid "" +"Performs an SDF (signed-distance field) normal texture lookup within the " +"visual shader graph." +msgstr "在可视化着色器图中,执行 SDF(带符号距离场)法线纹理查找。" + +msgid "" +"Translates to [code]texture_sdf_normal(sdf_pos)[/code] in the shader " +"language." +msgstr "翻译为着色器语言中的 [code]texture_sdf_normal(sdf_pos)[/code]。" + +msgid "" +"Composes a [Transform3D] from four [Vector3]s within the visual shader graph." +msgstr "在可视化着色器图中,将四个 [Vector3] 合成为 [Transform3D]。" + +msgid "" "Creates a 4x4 transform matrix using four vectors of type [code]vec3[/code]. " "Each vector is one row in the matrix and the last column is a [code]vec4(0, " "0, 0, 1)[/code]." @@ -81625,6 +108593,9 @@ msgstr "" "使用四个类型为 [code]vec3[/code] 的向量创建一个 4x4 变换矩阵。每个向量是矩阵" "中的一行,最后一列是一个 [code]vec4(0, 0, 0, 1)[/code]。" +msgid "A [Transform3D] constant for use within the visual shader graph." +msgstr "[Transform3D] 常量,在可视化着色器图中使用。" + msgid "A constant [Transform3D], which can be used as an input node." msgstr "[Transform3D] 常量,可用作输入节点。" @@ -81632,13 +108603,42 @@ msgid "A [Transform3D] constant which represents the state of this node." msgstr "[Transform3D] 常量,代表该节点的状态。" msgid "" +"Decomposes a [Transform3D] into four [Vector3]s within the visual shader " +"graph." +msgstr "在可视化着色器图中,将 [Transform3D] 分解为四个 [Vector3]。" + +msgid "" "Takes a 4x4 transform matrix and decomposes it into four [code]vec3[/code] " "values, one from each row of the matrix." msgstr "获取一个4x4的变换矩阵,并将其分解为四个[code]vec3[/code]值,每行一个。" +msgid "Computes a [Transform3D] function within the visual shader graph." +msgstr "在可视化着色器图中,计算 [Transform3D] 函数。" + +msgid "" +"Computes an inverse or transpose function on the provided [Transform3D]." +msgstr "计算提供的 [Transform3D] 的逆或转置函数。" + msgid "The function to be computed. See [enum Function] for options." msgstr "要计算的函数。选项参阅[enum Function]。" +msgid "Perform the inverse operation on the [Transform3D] matrix." +msgstr "对 [Transform3D] 矩阵执行逆运算。" + +msgid "Perform the transpose operation on the [Transform3D] matrix." +msgstr "对 [Transform3D] 矩阵执行转置运算。" + +msgid "A [Transform3D] operator to be used within the visual shader graph." +msgstr "在可视化着色器图中使用的 [Transform3D] 运算符。" + +msgid "Applies [member operator] to two transform (4x4 matrices) inputs." +msgstr "对两个变换(4x4 矩阵)输入应用 [member operator]。" + +msgid "" +"The type of the operation to be performed on the transforms. See [enum " +"Operator] for options." +msgstr "要对变换执行的运算的类型。选项见 [enum Operator]。" + msgid "Multiplies transform [code]a[/code] by the transform [code]b[/code]." msgstr "将变换 [code]a[/code] 乘以变换 [code]b[/code]。" @@ -81672,8 +108672,15 @@ msgstr "将变换 [code]a[/code] 除以变换 [code]b[/code]。" msgid "Divides the transform [code]b[/code] by the transform [code]a[/code]." msgstr "将变换 [code]b[/code] 除以变换 [code]a[/code]。" +msgid "A [Transform3D] parameter for use within the visual shader graph." +msgstr "可视化着色器图中使用的 [Transform3D] 参数。" + msgid "Translated to [code]uniform mat4[/code] in the shader language." -msgstr "在着色器语言中被转换成 [code]uniform mat4[/code]。" +msgstr "翻译为着色器语言中的 [code]uniform mat4[/code]。" + +msgid "" +"Multiplies a [Transform3D] and a [Vector3] within the visual shader graph." +msgstr "在可视化着色器图中,将 [Transform3D] 与 [Vector3] 相乘。" msgid "" "A multiplication operation on a transform (4x4 matrix) and a vector, with " @@ -81703,21 +108710,112 @@ msgstr "" "将向量 [code]b[/code] 乘以变换 [code]a[/code],跳过变换的最后一行和一列。" msgid "" +"An unsigned scalar integer constant to be used within the visual shader " +"graph." +msgstr "可视化着色器图中使用的无符号整数标量常量。" + +msgid "Translated to [code]uint[/code] in the shader language." +msgstr "翻译为着色器语言中的 [code]uint[/code]。" + +msgid "An unsigned integer constant which represents a state of this node." +msgstr "无符号整数常量,代表该节点的状态。" + +msgid "" +"An unsigned scalar integer function to be used within the visual shader " +"graph." +msgstr "无符号标量整数函数,在可视化着色器图中使用。" + +msgid "" "Accept an unsigned integer scalar ([code]x[/code]) to the input port and " "transform it according to [member function]." msgstr "" "接受一个无符号整数标量([code]x[/code])到输入端口,并根据 [member function] " "对其进行转换。" +msgid "" +"An unsigned integer scalar operator to be used within the visual shader " +"graph." +msgstr "无符号标量整数运算符,在可视化着色器图中使用。" + +msgid "" +"Applies [member operator] to two unsigned integer inputs: [code]a[/code] and " +"[code]b[/code]." +msgstr "" +"对两个无符号整数输入 [code]a[/code] 和 [code]b[/code] 应用 [member " +"operator]。" + +msgid "" +"A visual shader node for shader parameter (uniform) of type unsigned [int]." +msgstr "无符号 [int] 类型着色器参数(uniform)的可视化着色器节点。" + +msgid "" +"A [VisualShaderNodeParameter] of type unsigned [int]. Offers additional " +"customization for range of accepted values." +msgstr "" +"无符号 [int] 类型的 [VisualShaderNodeParameter]。还可以对值的可接受范围进行自" +"定义。" + +msgid "" +"A visual shader node that modifies the texture UV using polar coordinates." +msgstr "使用极坐标修改纹理 UV 的可视化着色器节点。" + +msgid "A visual shader node that represents a \"varying\" shader value." +msgstr "代表“verying”着色器值的可视化着色器节点。" + +msgid "" +"Varying values are shader variables that can be passed between shader " +"functions, e.g. from Vertex shader to Fragment shader." +msgstr "" +"Varying 值是能够在着色器函数之间传递的着色器变量,例如从 Vertex 着色器传递到 " +"Fragment 着色器。" + msgid "Name of the variable. Must be unique." msgstr "变量的名称。必须唯一。" msgid "Type of the variable. Determines where the variable can be accessed." msgstr "变量的类型。决定该变量可以从哪里访问。" +msgid "A visual shader node that gets a value of a varying." +msgstr "用于获取 varying 的可视化着色器节点。" + +msgid "" +"Outputs a value of a varying defined in the shader. You need to first create " +"a varying that can be used in the given function, e.g. varying getter in " +"Fragment shader requires a varying with mode set to [constant VisualShader." +"VARYING_MODE_VERTEX_TO_FRAG_LIGHT]." +msgstr "" +"让着色器中定义的 varying 输出一个值。你需要首先创建可用于该函数的 varying,例" +"如 Fragment 着色器的 varying getter 需要模式为 [constant VisualShader." +"VARYING_MODE_VERTEX_TO_FRAG_LIGHT] 的 varying。" + +msgid "A visual shader node that sets a value of a varying." +msgstr "用于设置 varying 的可视化着色器节点。" + +msgid "" +"Inputs a value to a varying defined in the shader. You need to first create " +"a varying that can be used in the given function, e.g. varying setter in " +"Fragment shader requires a varying with mode set to [constant VisualShader." +"VARYING_MODE_FRAG_TO_LIGHT]." +msgstr "" +"向着色器中定义的 varying 输入一个值。你需要首先创建可用于该函数的 varying,例" +"如 Fragment 着色器的 varying setter 需要模式为 [constant VisualShader." +"VARYING_MODE_FRAG_TO_LIGHT] 的 varying。" + +msgid "A [Vector2] constant to be used within the visual shader graph." +msgstr "可视化着色器图中使用的 [Vector2] 常量。" + msgid "A constant [Vector2], which can be used as an input node." msgstr "[Vector2] 常量,可用作输入节点。" +msgid "A [Vector2] constant which represents the state of this node." +msgstr "代表该节点状态的 [Vector2] 常量。" + +msgid "A [Vector2] parameter to be used within the visual shader graph." +msgstr "可视化着色器图中使用的 [Vector2] 参数。" + +msgid "Translated to [code]uniform vec2[/code] in the shader language." +msgstr "翻译为着色器语言中的 [code]uniform vec2[/code]。" + msgid "A [Vector3] constant to be used within the visual shader graph." msgstr "[Vector3] 常量,用于可视化着色器图中。" @@ -81727,8 +108825,11 @@ msgstr "[Vector3] 常量,可用作输入节点。" msgid "A [Vector3] constant which represents the state of this node." msgstr "[Vector3] 常量,表示该节点的状态。" +msgid "A [Vector3] parameter to be used within the visual shader graph." +msgstr "可视化着色器图中使用的 [Vector3] 参数。" + msgid "Translated to [code]uniform vec3[/code] in the shader language." -msgstr "在着色器语言中被转换成 [code]uniform vec3[/code]。" +msgstr "翻译为着色器语言中的 [code]uniform vec3[/code]。" msgid "A 4D vector constant to be used within the visual shader graph." msgstr "4D 常向量,用于可视化着色器图中。" @@ -81737,6 +108838,55 @@ msgid "A constant 4D vector, which can be used as an input node." msgstr "4D 常向量,可用作输入节点。" msgid "" +"A 4D vector (represented as a [Quaternion]) constant which represents the " +"state of this node." +msgstr "4D 常向量(表示为 [Quaternion]),表示该节点的状态。" + +msgid "A 4D vector parameter to be used within the visual shader graph." +msgstr "4D 向量参数,在可视化着色器图中使用。" + +msgid "" +"A base type for the nodes that perform vector operations within the visual " +"shader graph." +msgstr "在可视化着色器图中执行向量运算的基础类型节点。" + +msgid "" +"This is an abstract class. See the derived types for descriptions of the " +"possible operations." +msgstr "这是一个抽象类。可进行的运算描述见派生类。" + +msgid "A vector type that this operation is performed on." +msgstr "要进行运算的向量类型。" + +msgid "" +"Composes a [Vector2], [Vector3] or 4D vector (represented as a [Quaternion]) " +"from scalars within the visual shader graph." +msgstr "" +"在可视化着色器图中,从标量合成 [Vector2]、[Vector3] 或 4D 向量(由 " +"[Quaternion] 表示)。" + +msgid "" +"Creates a [code]vec2[/code], [code]vec3[/code] or [code]vec4[/code] using " +"scalar values that can be provided from separate inputs." +msgstr "" +"使用标量值创建 [code]vec2[/code]、[code]vec3[/code] 或 [code]vec4[/code],这" +"些标量值可以由独立的输入提供。" + +msgid "" +"Decomposes a [Vector2], [Vector3] or 4D vector (represented as a " +"[Quaternion]) into scalars within the visual shader graph." +msgstr "" +"在可视化着色器图中,将 [Vector2]、[Vector3] 或 4D 向量(由 [Quaternion] 表" +"示)分解为标量。" + +msgid "" +"Takes a [code]vec2[/code], [code]vec3[/code] or [code]vec4[/code] and " +"decomposes it into scalar values that can be used as separate outputs." +msgstr "" +"接受 [code]vec2[/code]、[code]vec3[/code] 或 [code]vec4[/code] 并将其分解为标" +"量值,这些标量值可以用作独立的输出。" + +msgid "" "Returns the distance between two points. To be used within the visual shader " "graph." msgstr "返回两点之间的距离。用于可视化着色器图中。" @@ -81871,7 +109021,7 @@ msgid "Returns the length of a [Vector3] within the visual shader graph." msgstr "返回[Vector3]在可视化着色器图中的长度。" msgid "Translated to [code]length(p0)[/code] in the shader language." -msgstr "在着色器语言中被转换成[code]length(p0)[/code]。" +msgstr "翻译为着色器语言中的 [code]length(p0)[/code]。" msgid "A vector operator to be used within the visual shader graph." msgstr "在可视化着色器图中使用的向量运算符。" @@ -81999,6 +109149,9 @@ msgstr "VoxelGI" msgid "Calls [method bake] with [code]create_visual_debug[/code] enabled." msgstr "在启用 [code]create_visual_debug[/code] 的情况下调用 [method bake] 。" +msgid "The [VoxelGIData] resource that holds the data for this [VoxelGI]." +msgstr "为该 [VoxelGI] 存放数据的 [VoxelGIData] 资源。" + msgid "" "Use 64 subdivisions. This is the lowest quality setting, but the fastest. " "Use it if you can, but especially use it on lower-end hardware." @@ -82022,6 +109175,10 @@ msgstr "" msgid "Represents the size of the [enum Subdiv] enum." msgstr "代表 [enum Subdiv] 举的大小。" +msgid "" +"Contains baked voxel global illumination data for use in a [VoxelGI] node." +msgstr "包含用于 [VoxelGI] 节点的烘焙体素全局光照数据。" + msgid "Vertical scroll bar." msgstr "垂直滚动条。" @@ -82083,6 +109240,11 @@ msgid "The background of the area below the grabber." msgstr "抓取器下方区域的背景。" msgid "" +"The background of the area below the grabber that displays when it's being " +"hovered or focused." +msgstr "抓取器下方区域的背景,在悬停或聚焦状态显示。" + +msgid "" "The background for the whole slider. Determines the width of the " "[code]grabber_area[/code]." msgstr "整个滑动条的背景。决定了 [code]grabber_area[/code] 的宽度。" @@ -82556,6 +109718,20 @@ msgid "Base class for WebSocket server and client." msgstr "WebSocket 服务器和客户端的基类。" msgid "" +"Base class for WebSocket server and client, allowing them to be used as " +"multiplayer peer for the [MultiplayerAPI].\n" +"[b]Note:[/b] When exporting to Android, make sure to enable the " +"[code]INTERNET[/code] permission in the Android export preset before " +"exporting the project or using one-click deploy. Otherwise, network " +"communication of any kind will be blocked by Android." +msgstr "" +"用于 WebSocket 服务器和客户端的基类,可以用作 [MultiplayerAPI] 的多人对等" +"体。\n" +"[b]注意:[/b]导出到安卓时,在导出项目或使用一键部署之前,请务必在安卓导出预设" +"中开启 [code]INTERNET[/code] 权限。否则,任何类型的网络通信都将被 Android 阻" +"止。" + +msgid "" "Starts a new multiplayer client connecting to the given [param url]. TLS " "certificates will be verified against the hostname when connecting using the " "[code]wss://[/code] protocol. You can pass the optional [param " @@ -82574,15 +109750,6 @@ msgstr "" "code] 或 [code]wss://[/code] 开头。" msgid "" -"Starts a new multiplayer server listening on the given [param port]. You can " -"optionally specify a [param bind_address], and provide valiid [param " -"tls_server_options] to use TLS. See [method TLSOptions.server]." -msgstr "" -"启动新的多人服务器,监听给定的 [param port]。可以指定 [param bind_address]," -"也可以提供有效的 [param tls_server_options] 来使用 TLS。见 [method " -"TLSOptions.server]。" - -msgid "" "Returns the [WebSocketPeer] associated to the given [code]peer_id[/code]." msgstr "返回与给定 [code]peer_id[/code] 关联的 [WebSocketPeer]。" @@ -82593,6 +109760,17 @@ msgid "Returns the remote port of the given peer." msgstr "返回给定对等体的远程端口。" msgid "" +"The extra headers to use during handshake. See [member WebSocketPeer." +"handshake_headers] for more details." +msgstr "" +"握手过程中要使用的额外标头。详见 [member WebSocketPeer.handshake_headers]。" + +msgid "" +"The maximum time each peer can stay in a connecting state before being " +"dropped." +msgstr "每个对等体在被丢弃之前可以保持在连接状态的最长时间。" + +msgid "" "The inbound buffer size for connected peers. See [member WebSocketPeer." "inbound_buffer_size] for more details." msgstr "" @@ -82613,6 +109791,12 @@ msgstr "" "已连接对等体的出站缓冲区大小。详见 [member WebSocketPeer." "outbound_buffer_size]。" +msgid "" +"The supported WebSocket sub-protocols. See [member WebSocketPeer." +"supported_protocols] for more details." +msgstr "" +"支持的 WebSocket 子协议。详情见 [member WebSocketPeer.supported_protocols]。" + msgid "A WebSocket connection." msgstr "WebSocket 连接。" @@ -82729,6 +109913,44 @@ msgstr "" "[b]注意:[/b]Web 导出可能不支持部分状态码。详情请参考具体浏览器的文档。" msgid "" +"Connects to the given URL. TLS certificates will be verified against the " +"hostname when connecting using the [code]wss://[/code] protocol. You can " +"pass the optional [param tls_client_options] parameter to customize the " +"trusted certification authorities, or disable the common name verification. " +"See [method TLSOptions.client] and [method TLSOptions.client_unsafe].\n" +"[b]Note:[/b] To avoid mixed content warnings or errors in Web, you may have " +"to use a [code]url[/code] that starts with [code]wss://[/code] (secure) " +"instead of [code]ws://[/code]. When doing so, make sure to use the fully " +"qualified domain name that matches the one defined in the server's TLS " +"certificate. Do not connect directly via the IP address for [code]wss://[/" +"code] connections, as it won't match with the TLS certificate." +msgstr "" +"连接到给定的 URL。使用 [code]wss://[/code] 协议连接时会校验 TLS 证书与主机" +"名。传入可选的 [param tls_client_options] 参数可以自定义信任的证书颁发机构," +"也可以禁用通用名校验。见 [method TLSOptions.client] 和 [method TLSOptions." +"client_unsafe]。\n" +"[b]注意:[/b]要避免 Web 中的混合内容警告或错误,你可能需要使用以 " +"[code]wss://[/code](安全)开头的 [code]url[/code] 而不是 [code]ws://[/" +"code]。采用这种做法时,请确保使用与服务器 TLS 证书相匹配的主机域名全称。" +"[code]wss://[/code] 连接请勿直接使用 IP 地址连接,因为不会与 TLS 证书匹配。" + +msgid "" +"Returns the received WebSocket close frame status code, or [code]-1[/code] " +"when the connection was not cleanly closed. Only call this method when " +"[method get_ready_state] returns [constant STATE_CLOSED]." +msgstr "" +"返回收到的 WebSocket 关闭帧状态码,如果连接没有干净地关闭则返回 [code]-1[/" +"code]。[method get_ready_state] 返回 [constant STATE_CLOSED] 才能调用这个方" +"法。" + +msgid "" +"Returns the received WebSocket close frame status reason string. Only call " +"this method when [method get_ready_state] returns [constant STATE_CLOSED]." +msgstr "" +"返回收到的 WebSocket 关闭帧状态原因字符串。[method get_ready_state] 返回 " +"[constant STATE_CLOSED] 才能调用这个方法。" + +msgid "" "Returns the IP address of the connected peer.\n" "[b]Note:[/b] Not available in the Web export." msgstr "" @@ -82742,16 +109964,91 @@ msgstr "" "返回已连接对等体的远程端口。\n" "[b]注意:[/b]在 Web 导出中不可用。" +msgid "" +"Returns the current amount of data in the outbound websocket buffer. [b]Note:" +"[/b] Web exports use WebSocket.bufferedAmount, while other platforms use an " +"internal buffer." +msgstr "" +"返回 websocket 输出缓冲区中的当前数据量。[b]注意:[/b]Web 导出使用 WebSocket." +"bufferedAmount,而其他平台使用内部缓冲区。" + msgid "Returns the ready state of the connection. See [enum State]." msgstr "返回该连接的就绪状态,见 [enum State]。" msgid "" +"Returns the URL requested by this peer. The URL is derived from the " +"[code]url[/code] passed to [method connect_to_url] or from the HTTP headers " +"when acting as server (i.e. when using [method accept_stream])." +msgstr "" +"返回该对等体请求的 URL。该 URL 由传给 [method connect_to_url] 的 [code]url[/" +"code] 得出,作为服务器时则从 HTTP 标头获取(即使用 [method accept_stream] " +"时)。" + +msgid "" +"Returns the selected WebSocket sub-protocol for this connection or an empty " +"string if the sub-protocol has not been selected yet." +msgstr "" +"返回这个连接所选用的 WebSocket 子协议,如果未选择子协议则返回空字符串。" + +msgid "" +"Updates the connection state and receive incoming packets. Call this " +"function regularly to keep it in a clean state." +msgstr "更新连接状态并接收传入的数据包。请定期调用此函数,保持其清洁状态。" + +msgid "" +"Sends the given [param message] using the desired [param write_mode]. When " +"sending a [String], prefer using [method send_text]." +msgstr "" +"使用期望的 [param write_mode] 发送给定的 [param message]。发送 [String] 时," +"请优先使用 [method send_text]。" + +msgid "" +"Sends the given [param message] using WebSocket text mode. Prefer this " +"method over [method PacketPeer.put_packet] when interacting with third-party " +"text-based API (e.g. when using [JSON] formatted messages)." +msgstr "" +"使用 WebSocket 文本模式发送给定的 [param message]。与第三方文本 API 交互时请" +"优先使用这个方法而不是 [method PacketPeer.put_packet](例如使用 [JSON] 格式的" +"消息时)。" + +msgid "" +"Disable Nagle's algorithm on the underling TCP socket (default). See [method " +"StreamPeerTCP.set_no_delay] for more information.\n" +"[b]Note:[/b] Not available in the Web export." +msgstr "" +"禁用底层 TCP 套接字的 Nagle 算法(默认)。详情见 [method StreamPeerTCP." +"set_no_delay]。\n" +"[b]注意:[/b]在 Web 导出中不可用。" + +msgid "" "Returns [code]true[/code] if the last received packet was sent as a text " "payload. See [enum WriteMode]." msgstr "" "如果最后收到的数据包是作为文本有效载荷发送的,返回 [code]true[/code]。见 " "[enum WriteMode]。" +msgid "" +"The extra HTTP headers to be sent during the WebSocket handshake.\n" +"[b]Note:[/b] Not supported in Web exports due to browsers' restrictions." +msgstr "" +"在 WebSocket 握手过程中要发送的额外 HTTP 标头。\n" +"[b]注意:[/b]由于浏览器的限制,在 Web 导出中不支持。" + +msgid "" +"The size of the input buffer in bytes (roughly the maximum amount of memory " +"that will be allocated for the inbound packets)." +msgstr "输入缓冲区的大小,单位为字节(大致是将分配给入站数据包的最大内存量)。" + +msgid "" +"The maximum amount of packets that will be allowed in the queues (both " +"inbound and outbound)." +msgstr "队列中允许的最大数据包数量(包括入站和出站)。" + +msgid "" +"The size of the input buffer in bytes (roughly the maximum amount of memory " +"that will be allocated for the outbound packets)." +msgstr "输入缓冲区的大小,单位为字节(大致是将分配给出站数据包的最大内存量)。" + msgid "The WebSocket sub-protocols allowed during the WebSocket handshake." msgstr "WebSocket 握手期间允许的 WebSocket 子协议。" @@ -83065,6 +110362,33 @@ msgstr "" "在运行时,[Window] 不会在请求关闭时自动关闭。你需要使用 [signal " "close_requested] 手动处理(适用于点击关闭按钮和点击弹出窗口外部)。" +msgid "" +"Creates a local override for a theme [Color] with the specified [param " +"name]. Local overrides always take precedence when fetching theme items for " +"the control. An override can be removed with [method " +"remove_theme_color_override].\n" +"See also [method get_theme_color] and [method Control." +"add_theme_color_override] for more details." +msgstr "" +"为名为 [param name] 的主题 [Color] 创建本地覆盖项。为控件获取主题时,本地覆盖" +"项始终优先。覆盖项可以使用 [method remove_theme_color_override] 移除。\n" +"详情请参阅 [method get_theme_color] 和 [method Control." +"add_theme_color_override]。" + +msgid "" +"Creates a local override for a theme [StyleBox] with the specified [param " +"name]. Local overrides always take precedence when fetching theme items for " +"the control. An override can be removed with [method " +"remove_theme_stylebox_override].\n" +"See also [method get_theme_stylebox] and [method Control." +"add_theme_stylebox_override] for more details." +msgstr "" +"为名为 [param name] 的主题 [StyleBox] 创建本地覆盖项。为控件获取主题时,本地" +"覆盖项始终优先。覆盖项可以使用 [method remove_theme_stylebox_override] 移" +"除。\n" +"详情请参阅 [method get_theme_stylebox] 和 [method Control." +"add_theme_stylebox_override]。" + msgid "Returns whether the window is being drawn to the screen." msgstr "返回该窗口是否正在被绘制到屏幕上。" @@ -83072,6 +110396,14 @@ msgid "" "Requests an update of the [Window] size to fit underlying [Control] nodes." msgstr "请求更新 [Window] 大小以适应底层 [Control] 节点。" +msgid "" +"Returns the combined minimum size from the child [Control] nodes of the " +"window. Use [method child_controls_changed] to update it when children nodes " +"have changed." +msgstr "" +"返回该窗口子 [Control] 节点最小尺寸的合并大小。请在子节点发生改变时使用 " +"[method child_controls_changed] 进行更新。" + msgid "Returns [code]true[/code] if the [param flag] is set." msgstr "如果设置了标志 [param flag],则返回 [code]true[/code]。" @@ -83084,6 +110416,91 @@ msgstr "返回该窗口的位置,包括边框。" msgid "Returns the window's size including its border." msgstr "返回该窗口的大小,包括边框。" +msgid "" +"Returns a [Color] from the first matching [Theme] in the tree if that " +"[Theme] has a color item with the specified [param name] and [param " +"theme_type].\n" +"See [method Control.get_theme_color] for more details." +msgstr "" +"从树中第一个匹配的 [Theme] 中返回 [Color],该 [Theme] 中需要有名称为 [param " +"name] 类型为 [param theme_type] 的颜色项目。\n" +"详情见 [method Control.get_theme_color]。" + +msgid "" +"Returns a constant from the first matching [Theme] in the tree if that " +"[Theme] has a constant item with the specified [param name] and [param " +"theme_type].\n" +"See [method Control.get_theme_color] for more details." +msgstr "" +"从树中第一个匹配的 [Theme] 中返回常量,该 [Theme] 中需要有名称为 [param " +"name] 类型为 [param theme_type] 的常量项目。\n" +"详情见 [method Control.get_theme_color]。" + +msgid "" +"Returns the default base scale value from the first matching [Theme] in the " +"tree if that [Theme] has a valid [member Theme.default_base_scale] value.\n" +"See [method Control.get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 中返回默认基础缩放,该 [Theme] 中需要具有有效的 " +"[member Theme.default_base_scale] 值。\n" +"详情见 [method Control.get_theme_color]。" + +msgid "" +"Returns the default font from the first matching [Theme] in the tree if that " +"[Theme] has a valid [member Theme.default_font] value.\n" +"See [method Control.get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 中返回默认字体,该 [Theme] 中需要具有有效的 " +"[member Theme.default_font] 值。\n" +"详情见 [method Control.get_theme_color]。" + +msgid "" +"Returns the default font size value from the first matching [Theme] in the " +"tree if that [Theme] has a valid [member Theme.default_font_size] value.\n" +"See [method Control.get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 中返回默认字体大小,该 [Theme] 中需要具有有效的 " +"[member Theme.default_font_size] 值。\n" +"详情见 [method Control.get_theme_color]。" + +msgid "" +"Returns a [Font] from the first matching [Theme] in the tree if that [Theme] " +"has a font item with the specified [param name] and [param theme_type].\n" +"See [method Control.get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 中返回 [Font],该 [Theme] 中需要有名称为 [param " +"name] 类型为 [param theme_type] 的字体项目。\n" +"详情见 [method Control.get_theme_color]。" + +msgid "" +"Returns a font size from the first matching [Theme] in the tree if that " +"[Theme] has a font size item with the specified [param name] and [param " +"theme_type].\n" +"See [method Control.get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 中返回字体大小,该 [Theme] 中需要有名称为 [param " +"name] 类型为 [param theme_type] 的字体大小项目。\n" +"详情见 [method Control.get_theme_color]。" + +msgid "" +"Returns an icon from the first matching [Theme] in the tree if that [Theme] " +"has an icon item with the specified [param name] and [param theme_type].\n" +"See [method Control.get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 中返回图标,该 [Theme] 中需要有名称为 [param " +"name] 类型为 [param theme_type] 的图标项目。\n" +"详情见 [method Control.get_theme_color]。" + +msgid "" +"Returns a [StyleBox] from the first matching [Theme] in the tree if that " +"[Theme] has a stylebox item with the specified [param name] and [param " +"theme_type].\n" +"See [method Control.get_theme_color] for details." +msgstr "" +"从树中第一个匹配的 [Theme] 中返回 [StyleBox],该 [Theme] 中需要有名称为 " +"[param name] 类型为 [param theme_type] 的样式盒项目。\n" +"详情见 [method Control.get_theme_color]。" + msgid "Causes the window to grab focus, allowing it to receive user input." msgstr "使该窗口获得焦点,从而接收用户输入。" @@ -83146,6 +110563,13 @@ msgstr "" "详情见 [method Control.get_theme_color]。" msgid "" +"Hides the window. This is not the same as minimized state. Hidden window " +"can't be interacted with and needs to be made visible with [method show]." +msgstr "" +"隐藏该窗口。与最小化状态不同。隐藏窗口无法进行交互,需要用 [method show] 显" +"示。" + +msgid "" "Returns [code]true[/code] if the window is currently embedded in another " "window." msgstr "如果该窗口当前嵌入在其他窗口中,则返回 [code]true[/code]。" @@ -83155,10 +110579,26 @@ msgid "" "button is enabled)." msgstr "如果该窗口可以最大化(启用了最大化按钮),则返回 [code]true[/code]。" +msgid "" +"Returns [code]true[/code] if font oversampling is enabled. See [method " +"set_use_font_oversampling]." +msgstr "" +"如果启用了字体过采样,则返回 [code]true[/code]。见 [method " +"set_use_font_oversampling]。" + msgid "Moves the [Window] on top of other windows and focuses it." msgstr "将该 [Window] 移动到其他窗口的顶部并聚焦。" msgid "" +"Shows the [Window] and makes it transient (see [member transient]). If " +"[param rect] is provided, it will be set as the [Window]'s size.\n" +"Fails if called on the main window." +msgstr "" +"显示该 [Window] 并标记为临时窗口(见 [member transient])。如果提供了 [param " +"rect],则会设为该 [Window] 的大小。\n" +"对主窗口调用时会失败。" + +msgid "" "Popups the [Window] at the center of the current screen, with optionally " "given minimum size.\n" "If the [Window] is embedded, it will be centered in the parent [Viewport] " @@ -83246,6 +110686,14 @@ msgstr "" "get_contents_minimum_size] 更大,则此属性将被忽略。" msgid "" +"Set's the window's current mode.\n" +"[b]Note:[/b] Fullscreen mode is not exclusive full screen on Windows and " +"Linux." +msgstr "" +"设置该窗口的当前模式。\n" +"[b]注意:[/b]全屏模式在 Windows 和 Linux 上不是独占全屏。" + +msgid "" "Sets a polygonal region of the window which accepts mouse events. Mouse " "events outside the region will be passed through.\n" "Passing an empty array will disable passthrough support (all mouse events " @@ -83325,6 +110773,19 @@ msgstr "" "该窗口的标题。如果 [Window] 不是嵌入式的,则 [Theme] 中设置的标题样式无效。" msgid "" +"If [code]true[/code], the [Window] is transient, i.e. it's considered a " +"child of another [Window]. The transient window will be destroyed with its " +"transient parent and will return focus to their parent when closed. The " +"transient window is displayed on top of a non-exclusive full-screen parent " +"window. Transient windows can't enter full-screen mode.\n" +"Note that behavior might be different depending on the platform." +msgstr "" +"如果为 [code]true[/code] 则该 [Window] 是临时窗口,即会被认为是另一个 " +"[Window] 的子级。临时窗口会和临时父级一起销毁,关闭时会将焦点返还给父级。临时" +"窗口显示在非独占全屏父窗口之上。临时窗口无法进入全屏模式。\n" +"请注意,不同平台可能由不同的行为。" + +msgid "" "If [code]true[/code], the [Window] can't be focused nor interacted with. It " "can still be visible." msgstr "" @@ -83340,6 +110801,16 @@ msgid "If [code]true[/code], the window is visible." msgstr "如果为 [code]true[/code],则该窗口可见。" msgid "" +"Emitted when the [Window]'s close button is pressed or when [member " +"popup_window] is enabled and user clicks outside the window.\n" +"This signal can be used to handle window closing, e.g. by connecting it to " +"[method hide]." +msgstr "" +"按下该 [Window] 的关闭按钮或启用 [member popup_window] 并且用户在窗口外点击时" +"发出。\n" +"这个信号可以用来处理窗口的关闭,例如将其连接到 [method hide]。" + +msgid "" "Emitted when the [Window]'s DPI changes as a result of OS-level changes (e." "g. moving the window from a Retina display to a lower resolution one).\n" "[b]Note:[/b] Only implemented on macOS." @@ -83348,6 +110819,33 @@ msgstr "" "Retina 屏幕移动到了更低分辨率的屏幕)。\n" "[b]注意:[/b]仅在 macOS 上实现。" +msgid "" +"Emitted when files are dragged from the OS file manager and dropped in the " +"game window. The argument is a list of file paths.\n" +"Note that this method only works with non-embedded windows, i.e. the main " +"window and [Window]-derived nodes when [member Viewport." +"gui_embed_subwindows] is disabled in the main viewport.\n" +"Example usage:\n" +"[codeblock]\n" +"func _ready():\n" +" get_viewport().files_dropped.connect(on_files_dropped)\n" +"\n" +"func on_files_dropped(files):\n" +" print(files)\n" +"[/codeblock]" +msgstr "" +"将文件从操作系统文件管理器拖放到游戏窗口时发出。参数为文件路径列表。\n" +"请注意,这个方法仅适用于非内嵌窗口,即主窗口和主视口 [member Viewport." +"gui_embed_subwindows] 禁用时的 [Window] 派生节点。\n" +"示例用法:\n" +"[codeblock]\n" +"func _ready():\n" +" get_viewport().files_dropped.connect(on_files_dropped)\n" +"\n" +"func on_files_dropped(files):\n" +" print(files)\n" +"[/codeblock]" + msgid "Emitted when the [Window] gains focus." msgstr "当该 [Window] 获得焦点时发出。" @@ -83355,6 +110853,48 @@ msgid "Emitted when the [Window] loses its focus." msgstr "当该 [Window] 失去焦点时发出。" msgid "" +"Emitted when a go back request is sent (e.g. pressing the \"Back\" button on " +"Android), right after [constant Node.NOTIFICATION_WM_GO_BACK_REQUEST]." +msgstr "" +"发送返回请求时,在 [constant Node.NOTIFICATION_WM_GO_BACK_REQUEST] 之后发出" +"(例如在 Android 上按下“返回”按钮)。" + +msgid "" +"Emitted when the mouse cursor enters the [Window]'s area, regardless if it's " +"currently focused or not." +msgstr "鼠标指针进入该 [Window] 的区域时发出,无论当前是否聚焦该窗口。" + +msgid "" +"Emitted when the mouse cursor exits the [Window]'s area (including when it's " +"hovered over another window on top of this one)." +msgstr "" +"鼠标指针离开该 [Window] 的区域时发出(包括悬停在位于该窗口上方的其他窗口)。" + +msgid "" +"Emitted when window title bar decorations are changed, e.g. macOS window " +"enter/exit full screen mode, or extend-to-title flag is changed." +msgstr "" +"窗口标题栏装饰发生改变时发出,例如 macOS 窗口进入/退出全屏模式,或者“扩展至标" +"题”标志发生改变。" + +msgid "Emitted when [Window] is made visible or disappears." +msgstr "显示或隐藏该 [Window] 时发出。" + +msgid "" +"Emitted when the [Window] is currently focused and receives any input, " +"passing the received event as an argument. The event's position, if present, " +"is in the embedder's coordinate system." +msgstr "" +"该 [Window] 持有焦点并收到任何输入时发出,会把收到的事件作为参数传入。该事件" +"如果存在位置属性,该位置使用嵌入器的坐标系。" + +msgid "" +"Emitted when [Window]'s visibility changes, right before [signal " +"visibility_changed]." +msgstr "" +"该 [Window] 的可见性发生改变时,在 [signal visibility_changed] 之前发出。" + +msgid "" "Full screen window mode. Note that this is not [i]exclusive[/i] full screen. " "On Windows and Linux, a borderless window is used to emulate full screen. On " "macOS, a new desktop is used to display the running project.\n" @@ -83379,6 +110919,63 @@ msgstr "" "整窗口的大小。这个标志对于全屏窗口来说是被忽略的。用 [member unresizable] 设" "置。" +msgid "" +"The window do not have native title bar and other decorations. This flag is " +"ignored for full-screen windows. Set with [member borderless]." +msgstr "" +"该窗口没有原生标题栏和其他装饰。全屏窗口会忽略该标志。由 [member borderless] " +"设置。" + +msgid "" +"The window is floating on top of all other windows. This flag is ignored for " +"full-screen windows. Set with [member always_on_top]." +msgstr "" +"该窗口漂浮在所有其他窗口之上。全屏窗口会忽略该标志。由 [member " +"always_on_top] 设置。" + +msgid "" +"The window background can be transparent.\n" +"[b]Note:[/b] This flag has no effect if [member ProjectSettings.display/" +"window/per_pixel_transparency/allowed] is set to [code]false[/code]. Set " +"with [member transparent]." +msgstr "" +"该窗口的背景可以是透明的。\n" +"[b]注意:[/b]如果 [member ProjectSettings.display/window/" +"per_pixel_transparency/allowed] 为 [code]false[/code],则这个标志无效。由 " +"[member transparent] 设置。" + +msgid "" +"The window can't be focused. No-focus window will ignore all input, except " +"mouse clicks. Set with [member unfocusable]." +msgstr "" +"该窗口无法被聚焦。无焦点窗口会忽略除鼠标点击之外的所有输入。由 [member " +"unfocusable] 设置。" + +msgid "" +"Window is part of menu or [OptionButton] dropdown. This flag can't be " +"changed when the window is visible. An active popup window will exclusively " +"receive all input, without stealing focus from its parent. Popup windows are " +"automatically closed when uses click outside it, or when an application is " +"switched. Popup window must have [code]transient parent[/code] set (see " +"[member transient])." +msgstr "" +"窗口为菜单或 [OptionButton] 下来菜单的一部分。窗口可见时无法更改这个标志。活" +"动弹出窗口独占接收所有输入,无需从父级窃取焦点。用户在区域外点击或切换应用程" +"序时,弹出窗口会自动关闭。弹出窗口必须设置 [code]transient parent[/code](见 " +"[member transient])。" + +msgid "" +"Window content is expanded to the full size of the window. Unlike borderless " +"window, the frame is left intact and can be used to resize the window, title " +"bar is transparent, but have minimize/maximize/close buttons. Set with " +"[member extend_to_title].\n" +"[b]Note:[/b] This flag is implemented on macOS." +msgstr "" +"窗口内容扩展到窗口的全部尺寸。与无边框窗口不同,框架保持不变,可以用来调整窗" +"口的大小,标题栏是透明的,但有最小/最大/关闭按钮。用 [member " +"extend_to_title] 设置。\n" +"[b]注意:[/b]这个标志在 macOS 上实现。" + msgid "Max value of the [enum Flags]." msgstr "[enum Flags] 的最大值。" @@ -83425,6 +111022,14 @@ msgid "" msgstr "内容可以水平扩展。纵向缩放时,会保留高度比,在上下两侧添加黑条。" msgid "" +"The content's aspect will be preserved. If the target size has different " +"aspect from the base one, the content will stay in the top-left corner and " +"add an extra visible area in the stretched space." +msgstr "" +"会保留内容的纵横比。如果目标大小与原始大小的纵横比不同,则内容会保持在左上" +"角,将拉伸出的空间增加为可见区域。" + +msgid "" "Automatic layout direction, determined from the parent window layout " "direction." msgstr "自动布局方向,由父窗口的布局方向决定。" @@ -83474,12 +111079,65 @@ msgstr "关闭按钮被按下时的图标。" msgid "Class that has everything pertaining to a 2D world." msgstr "拥有与 2D 世界有关的所有内容的类。" +msgid "" +"The [RID] of this world's canvas resource. Used by the [RenderingServer] for " +"2D drawing." +msgstr "这个世界的画布资源的 [RID]。由 [RenderingServer] 用于 2D 绘制。" + +msgid "" +"Direct access to the world's physics 2D space state. Used for querying " +"current and potential collisions. When using multi-threaded physics, access " +"is limited to [method Node._physics_process] in the main thread." +msgstr "" +"直接访问该世界的物理 3D 空间状态。可用于查询当前和可能的碰撞。在多线程物理中" +"使用时,仅可在主线程的 [method Node._physics_process] 中访问。" + +msgid "" +"The [RID] of this world's navigation map. Used by the [NavigationServer2D]." +msgstr "这个世界的导航地图的 [RID]。由 [NavigationServer2D] 使用。" + +msgid "" +"The [RID] of this world's physics space resource. Used by the " +"[PhysicsServer2D] for 2D physics, treating it as both a space and an area." +msgstr "" +"这个世界物理空间资源的 [RID]。由 [PhysicsServer2D] 用于 2D 物理,将其视为一个" +"空间和一个区域。" + msgid "Class that has everything pertaining to a world." msgstr "拥有与世界相关的一切的类。" +msgid "" +"Class that has everything pertaining to a world. A physics space, a visual " +"scenario and a sound space. Node3D nodes register their resources into the " +"current world." +msgstr "" +"包含与一个世界有关的所有内容的类。一个物理空间,一个可视化场景和一个声音空" +"间。Node3D 节点将它们的资源,注册到当前世界中。" + +msgid "" +"The default [CameraAttributes] resource to use if none set on the [Camera3D]." +msgstr "[Camera3D] 上未设置时 [CameraAttributes] 时默认使用的资源。" + +msgid "" +"Direct access to the world's physics 3D space state. Used for querying " +"current and potential collisions. When using multi-threaded physics, access " +"is limited to [method Node._physics_process] in the main thread." +msgstr "" +"直接访问该世界的物理 3D 空间状态。可用于查询当前和可能的碰撞。在多线程物理中" +"使用时,仅可在主线程的 [method Node._physics_process] 中访问。" + msgid "The World3D's [Environment]." msgstr "该 World3D 的 [Environment]。" +msgid "" +"The World3D's fallback environment will be used if [member environment] " +"fails or is missing." +msgstr "在 [member environment] 失败或丢失时,World3D 所使用的回退环境。" + +msgid "" +"The [RID] of this world's navigation map. Used by the [NavigationServer3D]." +msgstr "这个世界的导航地图的 [RID]。由 [NavigationServer3D] 使用。" + msgid "The World3D's visual scenario." msgstr "该 World3D 的可视场景。" @@ -83487,7 +111145,27 @@ msgid "The World3D's physics space." msgstr "该 World3D 的物理空间。" msgid "World boundary (infinite plane) shape resource for 2D physics." -msgstr "世界边界(无限平面)形状资源,用于 2D 物理。" +msgstr "用于 2D 物理的世界边界(无限平面)形状资源。" + +msgid "" +"2D world boundary shape to be added as a [i]direct[/i] child of a " +"[PhysicsBody2D] or [Area2D] using a [CollisionShape2D] node. " +"[WorldBoundaryShape2D] works like an infinite plane and will not allow any " +"physics body to go to the negative side. Note that the [member normal] " +"matters; anything \"below\" the plane will collide with it. If the " +"[WorldBoundaryShape2D] is used in a [PhysicsBody2D], it will cause colliding " +"objects placed \"below\" it to teleport \"above\" the plane.\n" +"[b]Performance:[/b] Being a primitive collision shape, " +"[WorldBoundaryShape2D] is fast to check collisions against." +msgstr "" +"使用 [CollisionShape2D] 节点作为 [PhysicsBody2D] 或 [Area2D] 的[i]直接[/i]子" +"节点时,可被添加的 2D 世界边界形状。[WorldBoundaryShape2D] 就像一个无限平面," +"不会让任何物理实体去负面的一侧。请注意 [member normal] 很重要;任何“低于”该平" +"面的东西都会与它发生碰撞。如果在 [PhysicsBody2D] 中使用 " +"[WorldBoundaryShape2D],将导致放置在其“下方”的碰撞对象被传送到该平面“上" +"方”。\n" +"[b]性能:[/b]作为一种原始的碰撞形状,[WorldBoundaryShape2D] 可以快速检测碰" +"撞。" msgid "The line's distance from the origin." msgstr "该直线与原点的距离。" @@ -83496,7 +111174,27 @@ msgid "The line's normal. Defaults to [code]Vector2.UP[/code]." msgstr "该直线的法线。默认为 [code]Vector2.UP[/code]。" msgid "World boundary (infinite plane) shape resource for 3D physics." -msgstr "世界边界(无限平面)形状资源,用于 3D 物理。" +msgstr "用于 3D 物理的世界边界(无限平面)形状资源。" + +msgid "" +"3D world boundary shape to be added as a [i]direct[/i] child of a " +"[PhysicsBody3D] or [Area3D] using a [CollisionShape3D] node. " +"[WorldBoundaryShape3D] works like an infinite plane and will not allow any " +"physics body to go to the negative side. Note that the [Plane]'s normal " +"matters; anything \"below\" the plane will collide with it. If the " +"[WorldBoundaryShape3D] is used in a [PhysicsBody3D], it will cause colliding " +"objects placed \"below\" it to teleport \"above\" the plane.\n" +"[b]Performance:[/b] Being a primitive collision shape, " +"[WorldBoundaryShape3D] is fast to check collisions against." +msgstr "" +"使用 [CollisionShape3D] 节点作为 [PhysicsBody3D] 或 [Area3D] 的[i]直接[/i]子" +"节点时,可被添加的 3D 世界边界形状。[WorldBoundaryShape3D] 就像一个无限平面," +"不会让任何物理实体去负面的一侧。请注意该 [Plane] 的法线很重要;任何“低于”该平" +"面的东西都会与它发生碰撞。如果在 [PhysicsBody3D] 中使用 " +"[WorldBoundaryShape3D],将导致放置在其“下方”的碰撞对象被传送到该平面“上" +"方”。\n" +"[b]性能:[/b]作为一种原始的碰撞形状,[WorldBoundaryShape3D] 可以快速检查碰" +"撞。" msgid "The [Plane] used by the [WorldBoundaryShape3D] for collision." msgstr "该 [WorldBoundaryShape3D] 用于碰撞的 [Plane]。" @@ -83699,6 +111397,23 @@ msgstr "XR 文档索引" msgid "A spatial node representing a spatially-tracked controller." msgstr "表示空间跟踪控制器的空间节点。" +msgid "" +"Returns the hand holding this controller, if known. See [enum " +"XRPositionalTracker.TrackerHand]." +msgstr "" +"返回持握这个控制器的手,如果已知。见 [enum XRPositionalTracker.TrackerHand]。" + +msgid "" +"Returns a [Vector2] for the input with the given [param name]. This is used " +"for thumbsticks and thumbpads found on many controllers." +msgstr "" +"返回名称为 [param name] 的输入 [Vector2]。适用于很多手柄上的摇杆和摇杆按钮。" + +msgid "" +"Returns [code]true[/code] if the button with the given [param name] is " +"pressed." +msgstr "如果名称为 [param name] 的按钮处于按下状态,则返回 [code]true[/code]。" + msgid "Emitted when a button on this controller is pressed." msgstr "当该控制器上的一个按钮被按下时触发。" @@ -83747,6 +111462,16 @@ msgstr "" "如果支持,返回我们的跟踪状态。这将使你能够向用户反馈,是否存在位置跟踪的问" "题。" +msgid "Is [code]true[/code] if this interface has been initialized." +msgstr "如果该接口已初始化,则为 [code]true[/code]。" + +msgid "" +"Sets the active play area mode, will return [code]false[/code] if the mode " +"can't be used with this interface." +msgstr "" +"设置活动的游玩区域模式,如果该模式无法在这个接口中使用则返回 [code]false[/" +"code]。" + msgid "Stops passthrough." msgstr "停止穿透。" @@ -83807,6 +111532,19 @@ msgstr "追踪功能失效(相机未插电或被遮挡、灯塔关闭,等等 msgid "Play area mode not set or not available." msgstr "游玩区域模式未设置或不可用。" +msgid "" +"Play area only supports orientation tracking, no positional tracking, area " +"will center around player." +msgstr "游玩区域仅支持方向跟踪,不支持位置跟踪,区域以玩家为中心。" + +msgid "" +"Player is in seated position, limited positional tracking, fixed guardian " +"around player." +msgstr "玩家处于坐姿,提供有限的位置跟踪,玩家周围有固定的防护。" + +msgid "Player is free to move around, full positional tracking." +msgstr "玩家可以自由移动,提供完整的位置跟踪。" + msgid "Opaque blend mode. This is typically used for VR devices." msgstr "不透明混合模式。通常用于 VR 设备。" @@ -83832,6 +111570,13 @@ msgstr "XR 接口扩展(插件)的基类。" msgid "External XR interface plugins should inherit from this class." msgstr "外部 XR 接口插件应继承自这个类。" +msgid "" +"Return [code]true[/code] if anchor detection is enabled for this interface." +msgstr "如果此接口启用了锚点检测,则返回 [code]true[/code]。" + +msgid "Returns the [Transform3D] that positions the [XRCamera3D] in the world." +msgstr "返回将 [XRCamera3D] 放置在世界中的 [Transform3D]。" + msgid "Returns the capabilities of this interface." msgstr "返回该接口的功能。" @@ -83844,6 +111589,27 @@ msgstr "返回接受渲染结果的深度纹理(如果适用)。" msgid "Returns the name of this interface." msgstr "返回该接口的名称。" +msgid "" +"Returns an [PackedVector3Array] that denotes the play areas boundaries (if " +"applicable)." +msgstr "返回表示游戏区域边界的 [PackedVector3Array](如果适用)。" + +msgid "Returns the [enum XRInterface.PlayAreaMode] that sets up our play area." +msgstr "返回设置我们的游戏区域的 [enum XRInterface.PlayAreaMode]。" + +msgid "" +"Returns the projection matrix for the given view as a [PackedFloat64Array]." +msgstr "返回给定试图的投影矩阵,形式为 [PackedFloat64Array]。" + +msgid "Returns a [Transform3D] for a given view." +msgstr "返回给定视图的 [Transform3D]。" + +msgid "Initializes the interface, returns [code]true[/code] on success." +msgstr "初始化该接口,成功时返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if this interface has been initialized." +msgstr "如果这个接口已初始化,则返回 [code]true[/code]。" + msgid "Called after the XR [Viewport] draw logic has completed." msgstr "在 XR [Viewport] 绘制逻辑完成后调用。" @@ -83854,9 +111620,38 @@ msgid "" "Returns [code]true[/code] if this interface supports this play area mode." msgstr "如果该接口支持该游玩区域模式,则返回 [code]true[/code]。" +msgid "Uninitialize the interface." +msgstr "将该接口取消初始化。" + +msgid "" +"A spatial node that has its position automatically updated by the [XRServer]." +msgstr "空间节点,位置由 [XRServer] 自动更新。" + +msgid "" +"This node can be bound to a specific pose of a [XRPositionalTracker] and " +"will automatically have its [member Node3D.transform] updated by the " +"[XRServer]. Nodes of this type must be added as children of the [XROrigin3D] " +"node." +msgstr "" +"这个节点可以绑定到 [XRPositionalTracker] 的某个姿势,[XRServer] 会自动更新其 " +"[member Node3D.transform]。这类节点必须添加为 [XROrigin3D] 节点的子节点。" + msgid "The origin point in AR/VR." msgstr "AR/VR 的原点。" +msgid "Is this XROrigin3D node the current origin used by the [XRServer]?" +msgstr "这个 XROrigin3D 节点是否为 [XRServer] 所使用的当前原点?" + +msgid "This object contains all data related to a pose on a tracked object." +msgstr "这个对象包含了跟踪对象姿势相关的所有数据。" + +msgid "" +"Returns the [member transform] with world scale and our reference frame " +"applied. This is the transform used to position [XRNode3D] objects." +msgstr "" +"返回受到世界缩放和我们参考系影响的 [member transform]。这是用于放置 " +"[XRNode3D] 对象的变换。" + msgid "The angular velocity for this pose." msgstr "该姿势的角速度。" |