From 6f64349bfe42b795a6c50e9c2093d38e7a992e7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Mon, 20 Feb 2023 12:09:15 +0100 Subject: i18n: Sync translations with Weblate --- doc/translations/es.po | 952 +- doc/translations/fr.po | 425 +- doc/translations/zh_CN.po | 58985 +++++++++++++++++++++--------- editor/translations/editor/ar.po | 302 +- editor/translations/editor/bg.po | 719 +- editor/translations/editor/ca.po | 12 - editor/translations/editor/cs.po | 302 +- editor/translations/editor/de.po | 5322 ++- editor/translations/editor/el.po | 15 - editor/translations/editor/eo.po | 23 +- editor/translations/editor/es.po | 830 +- editor/translations/editor/es_AR.po | 18 - editor/translations/editor/fi.po | 18 - editor/translations/editor/fr.po | 426 +- editor/translations/editor/gl.po | 9 - editor/translations/editor/he.po | 15 - editor/translations/editor/hu.po | 9 - editor/translations/editor/id.po | 18 - editor/translations/editor/it.po | 5544 ++- editor/translations/editor/ja.po | 263 +- editor/translations/editor/ko.po | 18 - editor/translations/editor/lv.po | 15 - editor/translations/editor/ms.po | 12 - editor/translations/editor/nb.po | 9 - editor/translations/editor/nl.po | 242 +- editor/translations/editor/pl.po | 985 +- editor/translations/editor/pt.po | 99 +- editor/translations/editor/pt_BR.po | 1298 +- editor/translations/editor/ro.po | 12 - editor/translations/editor/ru.po | 1104 +- editor/translations/editor/sk.po | 9 - editor/translations/editor/sv.po | 21 - editor/translations/editor/th.po | 28 +- editor/translations/editor/tr.po | 86 +- editor/translations/editor/uk.po | 157 +- editor/translations/editor/vi.po | 15 - editor/translations/editor/zh_CN.po | 401 +- editor/translations/editor/zh_TW.po | 649 +- editor/translations/properties/de.po | 281 +- editor/translations/properties/es.po | 317 +- editor/translations/properties/fr.po | 156 +- editor/translations/properties/it.po | 198 +- editor/translations/properties/ja.po | 96 +- editor/translations/properties/ko.po | 72 +- editor/translations/properties/pl.po | 248 +- editor/translations/properties/pt.po | 93 +- editor/translations/properties/pt_BR.po | 106 +- editor/translations/properties/ru.po | 120 +- editor/translations/properties/uk.po | 130 +- editor/translations/properties/zh_CN.po | 1201 +- editor/translations/properties/zh_TW.po | 101 +- 51 files changed, 62093 insertions(+), 20393 deletions(-) diff --git a/doc/translations/es.po b/doc/translations/es.po index 66093519c4..9970d15c1c 100644 --- a/doc/translations/es.po +++ b/doc/translations/es.po @@ -1,6 +1,6 @@ # Spanish translation of the Godot Engine class reference. -# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). +# Copyright (c) 2014-present Godot Engine contributors. +# Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. # This file is distributed under the same license as the Godot source code. # # 44pes Games <44pes.games@gmail.com>, 2020. @@ -43,12 +43,13 @@ # Alan Arrecis , 2023. # Fernando Sacó , 2023. # Damien Monasterios , 2023. +# andres gallegos , 2023. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2023-02-10 14:12+0000\n" -"Last-Translator: Damien Monasterios \n" +"PO-Revision-Date: 2023-02-18 04:11+0000\n" +"Last-Translator: andres gallegos \n" "Language-Team: Spanish \n" "Language: es\n" @@ -163,36 +164,9 @@ msgstr "" msgid "Built-in GDScript functions." msgstr "Funciones GDScript integradas." -msgid "" -"A list of GDScript-specific utility functions accessed in any script.\n" -"For the list of the global functions and constants see [@GlobalScope]." -msgstr "" -"Una lista de funciones de utilidad de script específico GD accedidas en " -"cualquier script.\n" -"Para la lista de funciones globales y constantes ver [@GlobalScope]." - msgid "GDScript exports" msgstr "Exportaciones de Scripts GD" -msgid "" -"Returns a [Color] constructed from red ([param r8]), green ([param g8]), " -"blue ([param b8]), and optionally alpha ([param a8]) integer channels, each " -"divided by [code]255.0[/code] for their final value.\n" -"[codeblock]\n" -"var red = Color8(255, 0, 0) # Same as Color(1, 0, 0)\n" -"var dark_blue = Color8(0, 0, 51) # Same as Color(0, 0, 0.2).\n" -"var my_color = Color8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, 0.4).\n" -"[/codeblock]" -msgstr "" -"Devuelve un [Color] construido desde rojo ([param r8]), verde ([param " -"g8]), azul ([param b8]), y opcionalmente alfa ([param a8]) valores " -"enteros, cada uno dividido por [code]255.0[/code] por 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 "" "Returns a single character (as a [String]) of the given Unicode code point " "(which is compatible with ASCII code).\n" @@ -878,9 +852,6 @@ msgstr "Tecla modificar máscara." msgid "Shift key mask." msgstr "Tecla desplazamiento de la máscara." -msgid "Ctrl key mask." -msgstr "Tecla Control máscara." - msgid "Keypad key mask." msgstr "Tecla máscara keypad." @@ -890,12 +861,6 @@ msgstr "Tecla máscara intercambio grupo." msgid "Middle mouse button." msgstr "Botón central del ratón." -msgid "Mouse wheel up." -msgstr "Rueda de ratón arriba." - -msgid "Mouse wheel down." -msgstr "Rueda de ratón abajo." - msgid "Mouse wheel left button (only present on some mice)." msgstr "" "Botón izquierdo de la rueda del ratón (sólo presente en algunos ratones)." @@ -1409,9 +1374,6 @@ msgstr "" msgid "Proxy texture for simple frame-based animations." msgstr "Textura de conexión para animaciones simples basadas en fotogramas." -msgid "Sets the currently visible frame of the texture." -msgstr "Establece el fotograma actualmente visible de la textura." - msgid "" "Number of frames to use in the animation. While you can create the frames " "independently with [method set_frame_texture], you need to set this value " @@ -1941,22 +1903,6 @@ msgstr "La conexion ya existe." msgid "Plays an animation once in [AnimationNodeBlendTree]." msgstr "Reproduce una animacion una vez en [AnimationNodeBlendTree]." -msgid "" -"A resource to add to an [AnimationNodeBlendTree]. This node will execute a " -"sub-animation and return once it finishes. Blend times for fading in and out " -"can be customized, as well as filters." -msgstr "" -"Un recurso para añadir a un [AnimationNodeBlendTree]. Este nodo ejecutara " -"una subanimacion y devolvera cuando termine. Mezcla de tiempos para " -"desvanecer y aparecer pueden ser personalizados, incluido filtros." - -msgid "" -"If [code]true[/code], the sub-animation will restart automatically after " -"finishing." -msgstr "" -"Si [code]true[/code], las subanimaciones se reiniciaran automaticamente " -"despues de acabar." - msgid "The delay after which the automatic restart is triggered, in seconds." msgstr "El retardo con el cual un reinicio automatico es lanzado, en segundos." @@ -2038,10 +1984,6 @@ msgstr "" msgid "Playback control for [AnimationNodeStateMachine]." msgstr "Control de reproduccion para el [AnimationNodeStateMachine]." -msgid "Returns the currently playing animation state." -msgstr "" -"Devuelve el estado de la animacion que se esta reproduciendo actualmente." - msgid "" "Returns the current travel path as computed internally by the A* algorithm." msgstr "" @@ -2103,15 +2045,6 @@ msgstr "" msgid "A generic animation transition node for [AnimationTree]." msgstr "Un nodo de transicion generica para [AnimationTree]." -msgid "" -"Simple state machine for cases which don't require a more advanced " -"[AnimationNodeStateMachine]. Animations can be connected to the inputs and " -"transition times can be specified." -msgstr "" -"Simple estado de maquina para casos que no requieren un " -"[AnimationNodeStateMachine]. Las animaciones pueden ser conectadas a las " -"salidas y tiempos de transicion pueden ser especificados." - msgid "" "Cross-fading time (in seconds) between each animation connected to the " "inputs." @@ -2491,13 +2424,6 @@ msgid "Returns the next available point ID with no point associated to it." msgstr "" "Devuelve el punto de Ide proximo disponible con ningun punto asociado a el." -msgid "" -"Returns the capacity of the structure backing the points, useful in " -"conjunction with [code]reserve_space[/code]." -msgstr "" -"Devuelve la capacidad de la estructura que respalda los puntos, usado junto " -"con [code]reserve_space[/code]." - msgid "Returns the number of points currently in the points pool." msgstr "Devuelve el numero de puntos actualmente en el grupo(pool) de puntos." @@ -2515,6 +2441,13 @@ msgstr "" "Deshabilita o habilita el punto especificado para el buscador de rutas. Util " "para crear obstaculos temporales." +msgid "" +"Returns the capacity of the structure backing the points, useful in " +"conjunction with [code]reserve_space[/code]." +msgstr "" +"Devuelve la capacidad de la estructura que respalda los puntos, usado junto " +"con [code]reserve_space[/code]." + msgid "Stores information about the audio buses." msgstr "Almacena informacion sobre los buses de audio." @@ -3718,9 +3651,6 @@ msgstr "" "Si [code]true[/code], el objeto se renderiza con el mismo tamaño " "independientemente de la distancia." -msgid "Grows object vertices in the direction of their normals." -msgstr "Crecen los vértices de los objetos en la dirección de sus normales." - 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 " @@ -3769,9 +3699,6 @@ msgstr "" "Si [code]true[/code], la prueba de profundidad está desactivada y el objeto " "se dibujará en orden de renderización." -msgid "If [code]true[/code], normal mapping is enabled." -msgstr "Si [code]true[/code], se habilita el mapeado normal." - msgid "The strength of the normal map's effect." msgstr "La fuerza del efecto del mapa normal." @@ -4017,9 +3944,6 @@ msgstr "El color del objeto se resta del fondo." msgid "The color of the object is multiplied by the background." msgstr "El color del objeto se multiplica por el fondo." -msgid "No culling is performed." -msgstr "No se realiza ningún descarte." - msgid "Set [code]ALBEDO[/code] to the per-vertex color specified in the mesh." msgstr "" "Ponga [code]ALBEDO[/code] en el color por vértice especificado en la malla." @@ -4100,9 +4024,6 @@ msgid "Toon blob which changes size based on roughness." msgstr "" "La mancha de un dibujo que cambia de tamaño en función de la rugosidad." -msgid "No specular blob." -msgstr "No hay manchas especulares." - msgid "Billboard mode is disabled." msgstr "Modo Billboard esta desactivado." @@ -4141,30 +4062,6 @@ msgstr "" "Suavemente se desvanece el objeto en base a la distancia de cada píxel de la " "cámara usando el canal alfa." -msgid "" -"Smoothly fades the object out based on each pixel's distance from the camera " -"using a dither approach. Dithering discards pixels based on a set pattern to " -"smoothly fade without enabling transparency. On certain hardware this can be " -"faster than [constant DISTANCE_FADE_PIXEL_ALPHA]." -msgstr "" -"Suavemente desvanece el objeto en base a la distancia de cada píxel de la " -"cámara usando un enfoque de titubeo. Los píxeles descartados siguen un " -"patrón establecido para desvanecerse suavemente sin permitir la " -"transparencia. En cierto hardware esto puede ser más rápido que [constant " -"DISTANCE_FADE_PIXEL_ALPHA]." - -msgid "" -"Smoothly fades the object out based on the object's distance from the camera " -"using a dither approach. Dithering discards pixels based on a set pattern to " -"smoothly fade without enabling transparency. On certain hardware this can be " -"faster than [constant DISTANCE_FADE_PIXEL_ALPHA]." -msgstr "" -"Suavemente desvanece el objeto en base a la distancia de cada píxel de la " -"cámara usando un enfoque de titubeo. Los píxeles descartados siguen un " -"patrón establecido para desvanecerse suavemente sin permitir la " -"transparencia. En cierto hardware esto puede ser más rápido que [constant " -"DISTANCE_FADE_PIXEL_ALPHA]." - msgid "3×3 matrix datatype." msgstr "Tipo de datos de matriz 3×3." @@ -4750,13 +4647,6 @@ msgstr "" "Dibuja una [MultiMesh] en 2D con la textura proporcionada. Ver " "[MultiMeshInstance2D] para la documentación relacionada." -msgid "" -"Sets a custom transform for drawing via components. Anything drawn " -"afterwards will be transformed by this." -msgstr "" -"Establece una transformación personalizada para el dibujo a través de los " -"componentes. Todo lo que se dibuje después será transformado por esto." - msgid "" "Sets a custom transform for drawing via matrix. Anything drawn afterwards " "will be transformed by this." @@ -4958,11 +4848,6 @@ msgstr "" "El nodo personalizado [Viewport] asignado al [CanvasLayer]. Si [code]null[/" "code], utiliza en su lugar la vista por defecto." -msgid "Layer index for draw order. Lower values are drawn first." -msgstr "" -"Índice de capas para el orden de dibujado. Los valores más bajos se dibujan " -"primero." - msgid "The layer's base offset." msgstr "El desplazamiento de la capa base." @@ -8324,17 +8209,6 @@ msgstr "" "El valor de contraste global de la escena renderizada (el valor por defecto " "es 1). Efectivo sólo si [code]adjustment_enabled[/code] es [code]true[/code]." -msgid "" -"If [code]true[/code], enables the [code]adjustment_*[/code] properties " -"provided by this resource. If [code]false[/code], modifications to the " -"[code]adjustment_*[/code] properties will have no effect on the rendered " -"scene." -msgstr "" -"Si [code]true[/code], activa las propiedades [code]adjustment_*[/code] " -"proporcionadas por este recurso. Si [code]false[/code], las modificaciones " -"de las propiedades de [code]adjustment_*[/code] no tendrán ningún efecto en " -"la escena renderizada." - msgid "" "The global color saturation value of the rendered scene (default value is " "1). Effective only if [code]adjustment_enabled[/code] is [code]true[/code]." @@ -11537,13 +11411,6 @@ msgstr "" "Devuelve [code]true[/code] si el tipo de este evento de entrada es uno que " "puede ser asignado a una acción de entrada." -msgid "" -"Returns [code]true[/code] if this input event is an echo event (only for " -"events of type [InputEventKey])." -msgstr "" -"Devuelve [code]true[/code] si este evento de entrada es un evento de eco " -"(sólo para eventos del tipo [InputEventKey])." - msgid "" "The event's device ID.\n" "[b]Note:[/b] This device ID will always be [code]-1[/code] for emulated " @@ -12333,13 +12200,6 @@ msgstr "" "El valor energético de Light2D. Cuanto mayor sea el valor, más fuerte es la " "luz." -msgid "" -"The layer mask. Only objects with a matching mask will be affected by the " -"Light2D." -msgstr "" -"La máscara de la capa. Sólo los objetos con una máscara adecuada se verán " -"afectados por Light2D." - msgid "Maximum layer value of objects that are affected by the Light2D." msgstr "Valor máximo de la capa de los objetos afectados por Light2D." @@ -12364,13 +12224,6 @@ msgid "Shadow filter type. See [enum ShadowFilter] for possible values." msgstr "" "Tipo de filtro de sombra. Ver [enum ShadowFilter] para los posibles valores." -msgid "" -"The shadow mask. Used with [LightOccluder2D] to cast shadows. Only occluders " -"with a matching light mask will cast shadows." -msgstr "" -"La máscara de sombra. Se usa con [LightOccluder2D] para proyectar sombras. " -"Sólo los oclusores con una máscara de luz pueden proyectar sombras." - msgid "" "Adds the value of pixels corresponding to the Light2D to the values of " "pixels under it. This is the common behavior of a light." @@ -14241,14 +14094,6 @@ msgstr "" msgid "Omnidirectional light, such as a light bulb or a candle." msgstr "Luz omnidireccional, como una bombilla o una vela." -msgid "" -"The light's attenuation (drop-off) curve. A number of presets are available " -"in the [b]Inspector[/b] by right-clicking the curve." -msgstr "" -"La curva de atenuación de la luz. En el [b]Inspector[/b] se puede acceder a " -"una serie de preajustes haciendo clic con el botón derecho del ratón en la " -"curva." - msgid "" "Shadows are rendered to a dual-paraboloid texture. Faster than [constant " "SHADOW_CUBE], but lower-quality." @@ -14256,6 +14101,9 @@ msgstr "" "Las sombras se convierten en una textura de doble paraboloide. Más rápido " "que [constant SHADOW_CUBE], pero de menor calidad." +msgid "Add an action set." +msgstr "Añadir un conjunto de acciones." + msgid "Optimized translation." msgstr "Traducción optimizada." @@ -15156,6 +15004,160 @@ msgstr "" msgid "Server interface for low-level 2D physics access." msgstr "Interfaz de servidor para acceso a la física 2D de bajo nivel." +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 "" +"Esta es la constante para crear formas de círculos. Una forma de círculo " +"sólo tiene un radio. Puede ser usado para intersecciones y controles " +"internos y externos." + +msgid "" +"This is the constant for creating rectangle shapes. A rectangle shape is " +"defined by a width and a height. It can be used for intersections and inside/" +"outside checks." +msgstr "" +"Esta es la constante para crear formas de rectángulo. Una forma de " +"rectángulo se define por un ancho y una altura. Se puede usar para " +"intersecciones y controles internos y externos." + +msgid "" +"This is the constant for creating capsule shapes. A capsule shape is defined " +"by a radius and a length. It can be used for intersections and inside/" +"outside checks." +msgstr "" +"Esta es la constante para crear formas de cápsulas. La forma de una cápsula " +"se define por un radio y una longitud. Se puede usar para intersecciones y " +"controles internos y externos." + +msgid "" +"This is the constant for creating concave polygon shapes. A polygon is " +"defined by a list of points. It can be used for intersections checks, but " +"not for inside/outside checks." +msgstr "" +"Esta es la constante para crear formas poligonales cóncavas. Un polígono se " +"define por una lista de puntos. Puede ser usado para comprobar las " +"intersecciones, pero no para comprobar el interior/exterior." + +msgid "" +"This constant is used internally by the engine. Any attempt to create this " +"kind of shape results in an error." +msgstr "" +"Esta constante es utilizada internamente por el motor. Cualquier intento de " +"crear este tipo de forma resulta en un error." + +msgid "" +"This area does not affect gravity/damp. These are generally areas that exist " +"only to detect collisions, and objects entering or exiting them." +msgstr "" +"Esta zona no afecta a la gravedad/humedad. Estas son generalmente áreas que " +"existen sólo para detectar colisiones, y objetos que entran o salen de ellas." + +msgid "" +"This area adds its gravity/damp values to whatever has been calculated so " +"far. This way, many overlapping areas can combine their physics to make " +"interesting effects." +msgstr "" +"Esta área añade sus valores de gravedad/humedad a lo que se ha calculado " +"hasta ahora. De esta manera, muchas áreas superpuestas pueden combinar su " +"física para hacer efectos interesantes." + +msgid "" +"This area adds its gravity/damp values to whatever has been calculated so " +"far. Then stops taking into account the rest of the areas, even the default " +"one." +msgstr "" +"Esta área añade sus valores de gravedad/amortiguación a lo que se ha " +"calculado hasta ahora. Luego deja de tener en cuenta el resto de las áreas, " +"incluso la predeterminada." + +msgid "" +"This area replaces any gravity/damp, even the default one, and stops taking " +"into account the rest of the areas." +msgstr "" +"Esta área reemplaza cualquier gravedad/amortiguación, incluso la " +"predeterminada, y deja de tener en cuenta el resto de las áreas." + +msgid "" +"This area replaces any gravity/damp calculated so far, but keeps calculating " +"the rest of the areas, down to the default one." +msgstr "" +"Esta área reemplaza cualquier gravedad/amortiguación calculada hasta ahora, " +"pero sigue calculando el resto de las áreas, hasta la predeterminada." + +msgid "Represents the size of the [enum BodyParameter] enum." +msgstr "Representa el tamaño del enum [enum BodyParameter]." + +msgid "Constant to set/get the current transform matrix of the body." +msgstr "" +"Constante para fijar/obtener la matriz de transformación de la corriente del " +"cuerpo." + +msgid "Constant to set/get the current linear velocity of the body." +msgstr "Constante para fijar/obtener la actual velocidad lineal del cuerpo." + +msgid "Constant to set/get the current angular velocity of the body." +msgstr "Constante para fijar/obtener la actual velocidad angular del cuerpo." + +msgid "Constant to sleep/wake up a body, or to get whether it is sleeping." +msgstr "" +"Constante para dormir/despertar un cuerpo, o para saber si está durmiendo." + +msgid "Constant to set/get whether the body can sleep." +msgstr "Constante para establecer/obtener si el cuerpo puede dormir." + +msgid "Constant to create pin joints." +msgstr "Constante para crear articulaciones de alfileres." + +msgid "Constant to create groove joints." +msgstr "Constantemente para crear uniones ranuradas." + +msgid "Constant to create damped spring joints." +msgstr "Constante para crear juntas de resorte amortiguadas." + +msgid "" +"Enables continuous collision detection by raycasting. It is faster than " +"shapecasting, but less precise." +msgstr "" +"Permite la detección continua de colisiones mediante la emisión de rayos. Es " +"más rápido que el \"shapecasting\", pero menos preciso." + +msgid "" +"Enables continuous collision detection by shapecasting. It is the slowest " +"CCD method, and the most precise." +msgstr "" +"Permite la detección continua de colisiones mediante el modelado. Es el " +"método más lento de CCD, y el más preciso." + +msgid "" +"The value of the first parameter and area callback function receives, when " +"an object enters one of its shapes." +msgstr "" +"El valor del primer parámetro y la función de retrollamada de área recibe, " +"cuando un objeto entra en una de sus formas." + +msgid "" +"The value of the first parameter and area callback function receives, when " +"an object exits one of its shapes." +msgstr "" +"El valor del primer parámetro y la función de llamada de área recibe, cuando " +"un objeto sale de una de sus formas." + +msgid "Constant to get the number of objects that are not sleeping." +msgstr "Constante para obtener el número de objetos que no están durmiendo." + +msgid "Constant to get the number of possible collisions." +msgstr "Constante para obtener el número de posibles colisiones." + +msgid "" +"Constant to get the number of space regions where a collision could occur." +msgstr "" +"Constante para obtener el número de regiones espaciales donde podría ocurrir " +"una colisión." + +msgid "Server interface for low-level physics access." +msgstr "Interfaz de servidor para acceso a la física de bajo nivel." + 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." @@ -15182,11 +15184,11 @@ msgid "Gets the instance ID of the object the area is assigned to." msgstr "Obtiene el ID de la instancia del objeto al que está asignada el área." msgid "" -"Returns an area parameter value. See [enum AreaParameter] for a list of " -"available parameters." +"Returns an area parameter value. A list of available parameters is on the " +"[enum AreaParameter] constants." msgstr "" -"Devuelve un valor de parámetro de área. Véase [enum AreaParameter] para una " -"lista de parámetros disponibles." +"Devuelve un valor de parámetro de área. Una lista de los parámetros " +"disponibles se encuentra en las constantes [enum AreaParameter]." msgid "Returns the [RID] of the nth shape of an area." msgstr "Devuelve el [RID] de la forma enésima de un área." @@ -15238,11 +15240,14 @@ msgstr "" "5: El índice de forma del área donde el objeto entró/salió del área." msgid "" -"Sets the value for an area parameter. See [enum AreaParameter] for a list of " -"available parameters." +"Sets the value for an area parameter. A list of available parameters is on " +"the [enum AreaParameter] constants." msgstr "" -"Establece el valor de un parámetro de área. Véase [enum AreaParameter] para " -"una lista de parámetros disponibles." +"Establece el valor de un parámetro de área. Una lista de los parámetros " +"disponibles se encuentra en las constantes [enum AreaParameter]." + +msgid "Sets object pickable with rays." +msgstr "Establece un objeto que se puede recoger con los rayos." msgid "" "Substitutes a given area shape by another. The old shape is selected by its " @@ -15251,9 +15256,6 @@ msgstr "" "Sustituye una forma de área dada por otra. La forma antigua es seleccionada " "por su índice, la nueva por su [RID]." -msgid "Disables a given shape in an area." -msgstr "Deshabilita una forma determinada en un área." - msgid "Sets the transform matrix for an area shape." msgstr "Establece la matriz de transformación para la forma de un área." @@ -15277,9 +15279,6 @@ msgstr "" msgid "Removes all shapes from a body." msgstr "Elimina todas las formas de un cuerpo." -msgid "Creates a physics body." -msgstr "Crea un cuerpo físico." - msgid "Returns the physics layer or layers a body belongs to." msgstr "Devuelve la capa o capas físicas a las que pertenece un cuerpo." @@ -15287,9 +15286,6 @@ msgid "Returns the physics layer or layers a body can collide with." msgstr "" "Devuelve la capa física o las capas con las que un cuerpo puede colisionar." -msgid "Returns the continuous collision detection mode." -msgstr "Devuelve el modo de detección de colisión continua." - msgid "" "Returns the maximum contacts that can be reported. See [method " "body_set_max_contacts_reported]." @@ -15301,11 +15297,11 @@ msgid "Returns the body mode." msgstr "Devuelve el modo de cuerpo." msgid "" -"Returns the value of a body parameter. See [enum BodyParameter] for a list " -"of available parameters." +"Returns the value of a body parameter. A list of available parameters is on " +"the [enum BodyParameter] constants." msgstr "" -"Devuelve el valor de un parámetro corporal. Véase [enum BodyParameter] para " -"una lista de parámetros disponibles." +"Devuelve el valor de un parámetro corporal. Una lista de parámetros " +"disponibles se encuentra en las constantes [enum BodyParameter]." msgid "Returns the [RID] of the nth shape of a body." msgstr "Devuelve el [RID] de la enésima forma de un cuerpo." @@ -15322,6 +15318,11 @@ msgstr "Devuelve el [RID] del espacio asignado a un cuerpo." msgid "Returns a body state." msgstr "Devuelve un estado corporal." +msgid "" +"If [code]true[/code], the continuous collision detection mode is enabled." +msgstr "" +"Si [code]true[/code], se activa el modo de detección de colisión continua." + msgid "" "Returns whether a body uses a callback function to calculate its own physics " "(see [method body_set_force_integration_callback])." @@ -15329,14 +15330,21 @@ msgstr "" "Devuelve si un cuerpo utiliza una función de retrollamada para calcular su " "propia física (ver [method body_set_force_integration_callback])." -msgid "Removes a body from the list of bodies exempt from collisions." -msgstr "Elimina un cuerpo de la lista de cuerpos exentos de colisiones." - msgid "" -"Removes a shape from a body. The shape is not deleted, so it can be reused " -"afterwards." +"Removes a body from the list of bodies exempt from collisions.\n" +"Continuous collision detection tries to predict where a moving body will " +"collide, instead of moving it and correcting its movement if it collided." msgstr "" -"Quita una forma de un cuerpo. La forma no se borra, por lo que puede ser " +"Elimina un cuerpo de la lista de cuerpos exentos de colisiones.\n" +"La detección continua de colisiones intenta predecir dónde colisionará un " +"cuerpo en movimiento, en lugar de moverlo y corregir su movimiento si " +"colisionara." + +msgid "" +"Removes a shape from a body. The shape is not deleted, so it can be reused " +"afterwards." +msgstr "" +"Quita una forma de un cuerpo. La forma no se borra, por lo que puede ser " "reutilizada después." msgid "" @@ -15355,20 +15363,19 @@ msgstr "" "Establece la capa física o las capas con las que un cuerpo puede colisionar." msgid "" -"Sets the continuous collision detection mode using one of the [enum CCDMode] " -"constants.\n" +"If [code]true[/code], the continuous collision detection mode is enabled.\n" "Continuous collision detection tries to predict where a moving body will " "collide, instead of moving it and correcting its movement if it collided." msgstr "" -"Establece el modo de detección de colisión continua usando una de las " -"constantes [enum CCDMode].\n" +"Si [code]true[/code], se activa el modo de detección de colisión continua.\n" "La detección de colisión continua trata de predecir dónde colisionará un " "cuerpo en movimiento, en lugar de moverlo y corregir su movimiento si " "colisionara." -msgid "Sets the body mode using one of the [enum BodyMode] constants." +msgid "Sets the body mode, from one of the [enum BodyMode] constants." msgstr "" -"Establece el modo corporal usando una de las constantes de [enum BodyMode]." +"Establece el modo del cuerpo, a partir de una de las constantes de [enum " +"BodyMode]." msgid "" "Sets whether a body uses a callback function to calculate its own physics " @@ -15378,11 +15385,11 @@ msgstr "" "calcular su propia física (ver [method body_set_force_integration_callback])." msgid "" -"Sets a body parameter. See [enum BodyParameter] for a list of available " -"parameters." +"Sets a body parameter. A list of available parameters is on the [enum " +"BodyParameter] constants." msgstr "" -"Establece un parámetro corporal. Véase [enum BodyParameter] para una lista " -"de parámetros disponibles." +"Establece un parámetro corporal. Una lista de parámetros disponibles se " +"encuentra en las constantes [enum BodyParameter]." msgid "" "Substitutes a given body shape by another. The old shape is selected by its " @@ -15397,419 +15404,6 @@ msgstr "Establece la matriz de transformación para una forma corporal." msgid "Assigns a space to the body (see [method space_create])." msgstr "Asigna un espacio al cuerpo (ver [method space_create])." -msgid "" -"Returns information about the current state of the 2D physics engine. See " -"[enum ProcessInfo] for a list of available states." -msgstr "" -"Devuelve información sobre el estado actual del motor de física 2D. Ver " -"[enum ProcessInfo] para una lista de los estados disponibles." - -msgid "Returns the value of a joint parameter." -msgstr "Devuelve el valor de un parámetro de una articulación." - -msgid "Returns a joint's type (see [enum JointType])." -msgstr "Devuelve el tipo de articulación (véase [enum JointType])." - -msgid "" -"Sets a joint parameter. See [enum JointParam] for a list of available " -"parameters." -msgstr "" -"Establece un parámetro de una articulación. Véase [enum JointParam] para una " -"lista de parámetros disponibles." - -msgid "Activates or deactivates the 2D physics engine." -msgstr "Activa o desactiva el motor de física 2D." - -msgid "Returns the shape data." -msgstr "Devuelve los datos de la forma." - -msgid "Returns a shape's type (see [enum ShapeType])." -msgstr "Devuelve el tipo de una forma (ver [enum ShapeType])." - -msgid "" -"Sets the shape data that defines its shape and size. The data to be passed " -"depends on the kind of shape created [method shape_get_type]." -msgstr "" -"Establece los datos de forma que definen su forma y tamaño. Los datos que se " -"pasarán dependen del tipo de forma creada [method shape_get_type]." - -msgid "" -"Creates a space. A space is a collection of parameters for the physics " -"engine that can be assigned to an area or a body. It can be assigned to an " -"area with [method area_set_space], or to a body with [method body_set_space]." -msgstr "" -"Crea un espacio. Un espacio es una colección de parámetros para el motor de " -"la física que puede ser asignado a un área o a un cuerpo. Puede ser asignado " -"a un área con [method area_set_space], o a un cuerpo con [method " -"body_set_space]." - -msgid "Returns the value of a space parameter." -msgstr "Devuelve el valor de un parámetro espacial." - -msgid "Returns whether the space is active." -msgstr "Devuelve si el espacio está activo." - -msgid "" -"Marks a space as active. It will not have an effect, unless it is assigned " -"to an area or body." -msgstr "" -"Marca un espacio como activo. No tendrá efecto, a menos que se asigne a un " -"área o cuerpo." - -msgid "" -"Sets the value for a space parameter. See [enum SpaceParameter] for a list " -"of available parameters." -msgstr "" -"Establece el valor de un parámetro espacial. Véase [enum SpaceParameter] " -"para una lista de parámetros disponibles." - -msgid "" -"Constant to set/get the maximum distance a pair of bodies has to move before " -"their collision status has to be recalculated." -msgstr "" -"Constante para fijar/obtener la máxima distancia que un par de cuerpos tiene " -"que moverse antes de que su estado de colisión tenga que ser recalculado." - -msgid "" -"Constant to set/get the maximum distance a shape can penetrate another shape " -"before it is considered a collision." -msgstr "" -"Constante para fijar/obtener la máxima distancia que una forma puede " -"penetrar en otra forma antes de que se considere una colisión." - -msgid "" -"Constant to set/get the threshold linear velocity of activity. A body marked " -"as potentially inactive for both linear and angular velocity will be put to " -"sleep after the time given." -msgstr "" -"Constante para fijar/obtener el umbral de velocidad lineal de actividad. Un " -"cuerpo marcado como potencialmente inactivo tanto para la velocidad lineal " -"como para la angular será puesto a dormir después del tiempo dado." - -msgid "" -"Constant to set/get the threshold angular velocity of activity. A body " -"marked as potentially inactive for both linear and angular velocity will be " -"put to sleep after the time given." -msgstr "" -"Constante para fijar/obtener el umbral de velocidad angular de actividad. Un " -"cuerpo marcado como potencialmente inactivo tanto para la velocidad lineal " -"como para la angular será puesto a dormir después del tiempo dado." - -msgid "" -"Constant to set/get the maximum time of activity. A body marked as " -"potentially inactive for both linear and angular velocity will be put to " -"sleep after this time." -msgstr "" -"Constante para fijar/obtener el tiempo máximo de actividad. Un cuerpo " -"marcado como potencialmente inactivo tanto para la velocidad lineal como " -"para la angular será puesto a dormir después de este tiempo." - -msgid "" -"Constant to set/get the default solver bias for all physics constraints. A " -"solver bias is a factor controlling how much two objects \"rebound\", after " -"violating a constraint, to avoid leaving them in that state because of " -"numerical imprecision." -msgstr "" -"Constante para establecer/obtener el sesgo del solucionador por defecto para " -"todas las restricciones de la física. Un sesgo del solucionador es un factor " -"que controla cuánto \"rebotan\" dos objetos, después de violar una " -"restricción, para evitar dejarlos en ese estado debido a la imprecisión " -"numérica." - -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 "" -"Esta es la constante para crear formas de círculos. Una forma de círculo " -"sólo tiene un radio. Puede ser usado para intersecciones y controles " -"internos y externos." - -msgid "" -"This is the constant for creating rectangle shapes. A rectangle shape is " -"defined by a width and a height. It can be used for intersections and inside/" -"outside checks." -msgstr "" -"Esta es la constante para crear formas de rectángulo. Una forma de " -"rectángulo se define por un ancho y una altura. Se puede usar para " -"intersecciones y controles internos y externos." - -msgid "" -"This is the constant for creating capsule shapes. A capsule shape is defined " -"by a radius and a length. It can be used for intersections and inside/" -"outside checks." -msgstr "" -"Esta es la constante para crear formas de cápsulas. La forma de una cápsula " -"se define por un radio y una longitud. Se puede usar para intersecciones y " -"controles internos y externos." - -msgid "" -"This is the constant for creating convex polygon shapes. A polygon is " -"defined by a list of points. It can be used for intersections and inside/" -"outside checks. Unlike the [member CollisionPolygon2D.polygon] property, " -"polygons modified with [method shape_set_data] do not verify that the points " -"supplied form is a convex polygon." -msgstr "" -"Esta es la constante para crear formas poligonales convexas. Un polígono se " -"define por una lista de puntos. Puede ser usado para intersecciones y " -"controles internos/externos. A diferencia de la propiedad [member " -"CollisionPolygon2D.polygon], los polígonos modificados con [method " -"shape_set_data] no verifican que la forma de los puntos suministrados es un " -"polígono convexo." - -msgid "" -"This is the constant for creating concave polygon shapes. A polygon is " -"defined by a list of points. It can be used for intersections checks, but " -"not for inside/outside checks." -msgstr "" -"Esta es la constante para crear formas poligonales cóncavas. Un polígono se " -"define por una lista de puntos. Puede ser usado para comprobar las " -"intersecciones, pero no para comprobar el interior/exterior." - -msgid "" -"This constant is used internally by the engine. Any attempt to create this " -"kind of shape results in an error." -msgstr "" -"Esta constante es utilizada internamente por el motor. Cualquier intento de " -"crear este tipo de forma resulta en un error." - -msgid "Constant to set/get gravity strength in an area." -msgstr "Constante para fijar/obtener la fuerza de gravedad en un área." - -msgid "Constant to set/get gravity vector/center in an area." -msgstr "Constante para fijar/obtener el vector/centro de gravedad en un área." - -msgid "" -"Constant to set/get whether the gravity vector of an area is a direction, or " -"a center point." -msgstr "" -"Constante para establecer/obtener si el vector de gravedad de un área es una " -"dirección, o un punto central." - -msgid "Constant to set/get the priority (order of processing) of an area." -msgstr "" -"Constante para establecer/obtener la prioridad (orden de procesamiento) de " -"un área." - -msgid "" -"This area does not affect gravity/damp. These are generally areas that exist " -"only to detect collisions, and objects entering or exiting them." -msgstr "" -"Esta zona no afecta a la gravedad/humedad. Estas son generalmente áreas que " -"existen sólo para detectar colisiones, y objetos que entran o salen de ellas." - -msgid "" -"This area adds its gravity/damp values to whatever has been calculated so " -"far. This way, many overlapping areas can combine their physics to make " -"interesting effects." -msgstr "" -"Esta área añade sus valores de gravedad/humedad a lo que se ha calculado " -"hasta ahora. De esta manera, muchas áreas superpuestas pueden combinar su " -"física para hacer efectos interesantes." - -msgid "" -"This area adds its gravity/damp values to whatever has been calculated so " -"far. Then stops taking into account the rest of the areas, even the default " -"one." -msgstr "" -"Esta área añade sus valores de gravedad/amortiguación a lo que se ha " -"calculado hasta ahora. Luego deja de tener en cuenta el resto de las áreas, " -"incluso la predeterminada." - -msgid "" -"This area replaces any gravity/damp, even the default one, and stops taking " -"into account the rest of the areas." -msgstr "" -"Esta área reemplaza cualquier gravedad/amortiguación, incluso la " -"predeterminada, y deja de tener en cuenta el resto de las áreas." - -msgid "" -"This area replaces any gravity/damp calculated so far, but keeps calculating " -"the rest of the areas, down to the default one." -msgstr "" -"Esta área reemplaza cualquier gravedad/amortiguación calculada hasta ahora, " -"pero sigue calculando el resto de las áreas, hasta la predeterminada." - -msgid "Constant to set/get a body's bounce factor." -msgstr "Constante para fijar/obtener el factor de rebote de un cuerpo." - -msgid "Constant to set/get a body's friction." -msgstr "Constante para fijar/obtener la fricción de un cuerpo." - -msgid "Constant to set/get a body's mass." -msgstr "Constante para fijar/obtener la masa de un cuerpo." - -msgid "Constant to set/get a body's inertia." -msgstr "Constante para fijar/obtener la inercia de un cuerpo." - -msgid "Constant to set/get a body's gravity multiplier." -msgstr "" -"Constante para fijar/obtener el multiplicador de gravedad de un cuerpo." - -msgid "Represents the size of the [enum BodyParameter] enum." -msgstr "Representa el tamaño del enum [enum BodyParameter]." - -msgid "Constant to set/get the current transform matrix of the body." -msgstr "" -"Constante para fijar/obtener la matriz de transformación de la corriente del " -"cuerpo." - -msgid "Constant to set/get the current linear velocity of the body." -msgstr "Constante para fijar/obtener la actual velocidad lineal del cuerpo." - -msgid "Constant to set/get the current angular velocity of the body." -msgstr "Constante para fijar/obtener la actual velocidad angular del cuerpo." - -msgid "Constant to sleep/wake up a body, or to get whether it is sleeping." -msgstr "" -"Constante para dormir/despertar un cuerpo, o para saber si está durmiendo." - -msgid "Constant to set/get whether the body can sleep." -msgstr "Constante para establecer/obtener si el cuerpo puede dormir." - -msgid "Constant to create pin joints." -msgstr "Constante para crear articulaciones de alfileres." - -msgid "Constant to create groove joints." -msgstr "Constantemente para crear uniones ranuradas." - -msgid "Constant to create damped spring joints." -msgstr "Constante para crear juntas de resorte amortiguadas." - -msgid "" -"Sets the resting length of the spring joint. The joint will always try to go " -"to back this length when pulled apart." -msgstr "" -"Establece la longitud de reposo de la articulación del resorte. La " -"articulación siempre intentará volver a esta longitud cuando se separe." - -msgid "" -"Sets the stiffness of the spring joint. The joint applies a force equal to " -"the stiffness times the distance from its resting length." -msgstr "" -"Establece la rigidez de la articulación del resorte. La articulación aplica " -"una fuerza igual a la rigidez por la distancia de su longitud en reposo." - -msgid "" -"Sets the damping ratio of the spring joint. A value of 0 indicates an " -"undamped spring, while 1 causes the system to reach equilibrium as fast as " -"possible (critical damping)." -msgstr "" -"Establece la relación de amortiguación de la articulación del resorte. Un " -"valor de 0 indica un resorte no amortiguado, mientras que 1 hace que el " -"sistema alcance el equilibrio lo más rápido posible (amortiguación crítica)." - -msgid "" -"Disables continuous collision detection. This is the fastest way to detect " -"body collisions, but can miss small, fast-moving objects." -msgstr "" -"Desactiva la detección de colisión continua. Es la forma más rápida de " -"detectar colisiones corporales, pero puede pasar por alto pequeños objetos " -"de movimiento rápido." - -msgid "" -"Enables continuous collision detection by raycasting. It is faster than " -"shapecasting, but less precise." -msgstr "" -"Permite la detección continua de colisiones mediante la emisión de rayos. Es " -"más rápido que el \"shapecasting\", pero menos preciso." - -msgid "" -"Enables continuous collision detection by shapecasting. It is the slowest " -"CCD method, and the most precise." -msgstr "" -"Permite la detección continua de colisiones mediante el modelado. Es el " -"método más lento de CCD, y el más preciso." - -msgid "" -"The value of the first parameter and area callback function receives, when " -"an object enters one of its shapes." -msgstr "" -"El valor del primer parámetro y la función de retrollamada de área recibe, " -"cuando un objeto entra en una de sus formas." - -msgid "" -"The value of the first parameter and area callback function receives, when " -"an object exits one of its shapes." -msgstr "" -"El valor del primer parámetro y la función de llamada de área recibe, cuando " -"un objeto sale de una de sus formas." - -msgid "Constant to get the number of objects that are not sleeping." -msgstr "Constante para obtener el número de objetos que no están durmiendo." - -msgid "Constant to get the number of possible collisions." -msgstr "Constante para obtener el número de posibles colisiones." - -msgid "" -"Constant to get the number of space regions where a collision could occur." -msgstr "" -"Constante para obtener el número de regiones espaciales donde podría ocurrir " -"una colisión." - -msgid "Server interface for low-level physics access." -msgstr "Interfaz de servidor para acceso a la física de bajo nivel." - -msgid "" -"Returns an area parameter value. A list of available parameters is on the " -"[enum AreaParameter] constants." -msgstr "" -"Devuelve un valor de parámetro de área. Una lista de los parámetros " -"disponibles se encuentra en las constantes [enum AreaParameter]." - -msgid "" -"Sets the value for an area parameter. A list of available parameters is on " -"the [enum AreaParameter] constants." -msgstr "" -"Establece el valor de un parámetro de área. Una lista de los parámetros " -"disponibles se encuentra en las constantes [enum AreaParameter]." - -msgid "Sets object pickable with rays." -msgstr "Establece un objeto que se puede recoger con los rayos." - -msgid "" -"Returns the value of a body parameter. A list of available parameters is on " -"the [enum BodyParameter] constants." -msgstr "" -"Devuelve el valor de un parámetro corporal. Una lista de parámetros " -"disponibles se encuentra en las constantes [enum BodyParameter]." - -msgid "" -"If [code]true[/code], the continuous collision detection mode is enabled." -msgstr "" -"Si [code]true[/code], se activa el modo de detección de colisión continua." - -msgid "" -"Removes a body from the list of bodies exempt from collisions.\n" -"Continuous collision detection tries to predict where a moving body will " -"collide, instead of moving it and correcting its movement if it collided." -msgstr "" -"Elimina un cuerpo de la lista de cuerpos exentos de colisiones.\n" -"La detección continua de colisiones intenta predecir dónde colisionará un " -"cuerpo en movimiento, en lugar de moverlo y corregir su movimiento si " -"colisionara." - -msgid "" -"If [code]true[/code], the continuous collision detection mode is enabled.\n" -"Continuous collision detection tries to predict where a moving body will " -"collide, instead of moving it and correcting its movement if it collided." -msgstr "" -"Si [code]true[/code], se activa el modo de detección de colisión continua.\n" -"La detección de colisión continua trata de predecir dónde colisionará un " -"cuerpo en movimiento, en lugar de moverlo y corregir su movimiento si " -"colisionara." - -msgid "Sets the body mode, from one of the [enum BodyMode] constants." -msgstr "" -"Establece el modo del cuerpo, a partir de una de las constantes de [enum " -"BodyMode]." - -msgid "" -"Sets a body parameter. A list of available parameters is on the [enum " -"BodyParameter] constants." -msgstr "" -"Establece un parámetro corporal. Una lista de parámetros disponibles se " -"encuentra en las constantes [enum BodyParameter]." - msgid "Sets a body state (see [enum BodyState] constants)." msgstr "" "Obtiene un parámetro cone_twist_joint (ver las constantes [enum " @@ -15902,14 +15496,47 @@ msgstr "" msgid "Activates or deactivates the 3D physics engine." msgstr "Activa o desactiva el motor de física 3D." +msgid "Returns the shape data." +msgstr "Devuelve los datos de la forma." + msgid "Returns the type of shape (see [enum ShapeType] constants)." msgstr "Devuelve el tipo de forma (ver las constantes [enum ShapeType])." +msgid "" +"Sets the shape data that defines its shape and size. The data to be passed " +"depends on the kind of shape created [method shape_get_type]." +msgstr "" +"Establece los datos de forma que definen su forma y tamaño. Los datos que se " +"pasarán dependen del tipo de forma creada [method shape_get_type]." + msgid "Gets a slider_joint parameter (see [enum SliderJointParam] constants)." msgstr "" "Obtiene un parámetro slider_joint (ver las constantes [enum " "SliderJointParam])." +msgid "" +"Creates a space. A space is a collection of parameters for the physics " +"engine that can be assigned to an area or a body. It can be assigned to an " +"area with [method area_set_space], or to a body with [method body_set_space]." +msgstr "" +"Crea un espacio. Un espacio es una colección de parámetros para el motor de " +"la física que puede ser asignado a un área o a un cuerpo. Puede ser asignado " +"a un área con [method area_set_space], o a un cuerpo con [method " +"body_set_space]." + +msgid "Returns the value of a space parameter." +msgstr "Devuelve el valor de un parámetro espacial." + +msgid "Returns whether the space is active." +msgstr "Devuelve si el espacio está activo." + +msgid "" +"Marks a space as active. It will not have an effect, unless it is assigned " +"to an area or body." +msgstr "" +"Marca un espacio como activo. No tendrá efecto, a menos que se asigne a un " +"área o cuerpo." + msgid "" "Sets the value for a space parameter. A list of available parameters is on " "the [enum SpaceParameter] constants." @@ -16096,6 +15723,81 @@ msgstr "" "este factor de tolerancia al error define cuánto se ralentiza la corrección. " "Cuanto más bajo, más lento." +msgid "Constant to set/get gravity strength in an area." +msgstr "Constante para fijar/obtener la fuerza de gravedad en un área." + +msgid "Constant to set/get gravity vector/center in an area." +msgstr "Constante para fijar/obtener el vector/centro de gravedad en un área." + +msgid "" +"Constant to set/get whether the gravity vector of an area is a direction, or " +"a center point." +msgstr "" +"Constante para establecer/obtener si el vector de gravedad de un área es una " +"dirección, o un punto central." + +msgid "Constant to set/get the priority (order of processing) of an area." +msgstr "" +"Constante para establecer/obtener la prioridad (orden de procesamiento) de " +"un área." + +msgid "Constant to set/get a body's bounce factor." +msgstr "Constante para fijar/obtener el factor de rebote de un cuerpo." + +msgid "Constant to set/get a body's friction." +msgstr "Constante para fijar/obtener la fricción de un cuerpo." + +msgid "Constant to set/get a body's mass." +msgstr "Constante para fijar/obtener la masa de un cuerpo." + +msgid "Constant to set/get a body's inertia." +msgstr "Constante para fijar/obtener la inercia de un cuerpo." + +msgid "Constant to set/get a body's gravity multiplier." +msgstr "" +"Constante para fijar/obtener el multiplicador de gravedad de un cuerpo." + +msgid "" +"Constant to set/get the maximum distance a pair of bodies has to move before " +"their collision status has to be recalculated." +msgstr "" +"Constante para fijar/obtener la máxima distancia que un par de cuerpos tiene " +"que moverse antes de que su estado de colisión tenga que ser recalculado." + +msgid "" +"Constant to set/get the maximum distance a shape can penetrate another shape " +"before it is considered a collision." +msgstr "" +"Constante para fijar/obtener la máxima distancia que una forma puede " +"penetrar en otra forma antes de que se considere una colisión." + +msgid "" +"Constant to set/get the threshold linear velocity of activity. A body marked " +"as potentially inactive for both linear and angular velocity will be put to " +"sleep after the time given." +msgstr "" +"Constante para fijar/obtener el umbral de velocidad lineal de actividad. Un " +"cuerpo marcado como potencialmente inactivo tanto para la velocidad lineal " +"como para la angular será puesto a dormir después del tiempo dado." + +msgid "" +"Constant to set/get the threshold angular velocity of activity. A body " +"marked as potentially inactive for both linear and angular velocity will be " +"put to sleep after the time given." +msgstr "" +"Constante para fijar/obtener el umbral de velocidad angular de actividad. Un " +"cuerpo marcado como potencialmente inactivo tanto para la velocidad lineal " +"como para la angular será puesto a dormir después del tiempo dado." + +msgid "" +"Constant to set/get the maximum time of activity. A body marked as " +"potentially inactive for both linear and angular velocity will be put to " +"sleep after this time." +msgstr "" +"Constante para fijar/obtener el tiempo máximo de actividad. Un cuerpo " +"marcado como potencialmente inactivo tanto para la velocidad lineal como " +"para la angular será puesto a dormir después de este tiempo." + msgid "Parameters to be sent to a 2D shape physics query." msgstr "Parámetros a enviar a una consulta de física de forma 2D." @@ -18664,14 +18366,6 @@ msgstr "" "etiquetas. Esto es lo mismo que añadir una etiqueta [code]i[/code] si no " "está actualmente en una etiqueta [code]b[/code]." -msgid "" -"Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code]" -"[url=something]{text}[/url][/code], but supports non-[String] metadata types." -msgstr "" -"Añade una etiqueta [code]meta[/code] a la pila de etiquetas. Similar al " -"BBCode [code][url=algo]{text}[/url][/code], pero soporta tipos de metadatos " -"que no son [String]." - msgid "Adds a [code][font][/code] tag with a monospace font to the tag stack." msgstr "" "Añade una etiqueta [code]font[/code] con una fuente monoespacio a la pila de " @@ -19567,12 +19261,6 @@ msgstr "El arrastrador dividido nunca es visible y su espacio se colapsó." msgid "A spotlight, such as a reflector spotlight or a lantern." msgstr "Un foco, como un reflector o una linterna." -msgid "The spotlight's angular attenuation curve." -msgstr "La curva de atenuación angular del foco." - -msgid "The spotlight's light energy attenuation curve." -msgstr "La curva de atenuación de la energía de la luz del foco." - msgid "A helper node, mostly used in 3rd person cameras." msgstr "Un nodo de ayuda, usado principalmente en cámaras de tercera persona." @@ -23748,7 +23436,7 @@ msgid "Base-2 logarithm." msgstr "Logarítmo en base 2." msgid "Converts a quantity in degrees to radians." -msgstr "Convierte un valor de grados a radianes." +msgstr "Convierte una cantidad en grados a radianes." msgid "Finds the nearest integer to the parameter." msgstr "Encuentra el entero más cercano al parámetro." diff --git a/doc/translations/fr.po b/doc/translations/fr.po index eef490fe13..ecc6959914 100644 --- a/doc/translations/fr.po +++ b/doc/translations/fr.po @@ -1,6 +1,6 @@ # French translation of the Godot Engine class reference. -# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). +# Copyright (c) 2014-present Godot Engine contributors. +# Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. # This file is distributed under the same license as the Godot source code. # # Rémi Verschelde , 2020, 2021. @@ -61,13 +61,14 @@ # Landry Simo , 2022. # Alexis Coudert , 2022. # Callim Ethee , 2023. +# Thalya Gauvrit , 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-01-01 02:51+0000\n" -"Last-Translator: Callim Ethee \n" +"PO-Revision-Date: 2023-02-13 23:42+0000\n" +"Last-Translator: Thalya Gauvrit \n" "Language-Team: French \n" "Language: fr\n" @@ -75,7 +76,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.15.1-dev\n" +"X-Generator: Weblate 4.16-dev\n" msgid "Description" msgstr "Description" @@ -89,6 +90,9 @@ msgstr "Propriétés" msgid "Methods" msgstr "Méthodes" +msgid "Operators" +msgstr "Opérateurs" + msgid "Theme Properties" msgstr "Propriétés du thème" @@ -170,6 +174,93 @@ msgstr "" msgid "Built-in GDScript functions." msgstr "Fonctions intégrées à GDScript." +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 "" +"Renvoie un tableau de dictionnaires représentant la pile d'appels courante. " +"Voir aussi [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" +"En partant de [code]_ready()[/code], [code]bar()[/code] imprimerait :\n" +"[codeblock]\n" +"[{fonction:bar, ligne:12, source:res://script.gd}, {fonction:foo, ligne:9, " +"source:res://script.gd}, {fonction:_ready, ligne:6, source:res://script." +"gd}]\n" +"[/codeblock]\n" +"[b]Note :[/b] Cette fonction ne fonctionne que si l'instance en cours " +"d'exécution est connectée à un serveur de débogage (c'est-à-dire une " +"instance d'éditeur). La [method get_stack] ne fonctionnera pas dans les " +"projets exportés en mode release, ou dans les projets exportés en mode debug " +"s'ils ne sont pas connectés à un serveur de débogage.\n" +"[b]Note(bis) :[/b] L'appel de cette fonction depuis un [Thread] n'est pas " +"pris en charge. Cela renverra un tableau vide." + +msgid "" +"Returns the passed [param instance] converted to a Dictionary. Can be useful " +"for serializing.\n" +"[b]Note:[/b] Cannot be used to serialize objects with built-in scripts " +"attached or objects allocated within built-in scripts.\n" +"[codeblock]\n" +"var foo = \"bar\"\n" +"func _ready():\n" +" var d = inst_to_dict(self)\n" +" print(d.keys())\n" +" print(d.values())\n" +"[/codeblock]\n" +"Prints out:\n" +"[codeblock]\n" +"[@subpath, @path, foo]\n" +"[, res://test.gd, bar]\n" +"[/codeblock]" +msgstr "" +"Renvoie le [param instance] passé converti en un dictionnaire. Utile pour la " +"sérialisation.\n" +"[b]Remarque :[/b] Ne peut pas être utilisé pour sérialiser des objets " +"auxquels sont attachés des scripts intégrés ou des objets alloués dans des " +"scripts intégrés.\n" +"[codeblock]\n" +"var foo = \"bar\"\n" +"func _ready() :\n" +" var d = inst_to_dict(self)\n" +" print(d.keys())\n" +" print(d.values())\n" +"[/codeblock]\n" +"Résultat :\n" +"[codeblock]\n" +"[@subpath, @path, foo]\n" +"[, res://test.gd, bar]\n" +"[/codeblock]" + 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." @@ -769,9 +860,6 @@ msgstr "Masque de touche de modification." msgid "Shift key mask." msgstr "Masque de la touche Shift." -msgid "Ctrl key mask." -msgstr "Masque de la touche Ctrl." - msgid "Keypad key mask." msgstr "Masque des touches du clavier." @@ -781,12 +869,6 @@ msgstr "Masque de l'interrupteur groupe." msgid "Middle mouse button." msgstr "Bouton du milieu de la souris." -msgid "Mouse wheel up." -msgstr "Molette de la souris vers le haut." - -msgid "Mouse wheel down." -msgstr "Molette de la souris vers le bas." - msgid "Mouse wheel left button (only present on some mice)." msgstr "" "Bouton gauche de la molette de la souris (présent uniquement sur certaines " @@ -1491,9 +1573,6 @@ msgstr "L'animation des sprites 2D (et aussi 3D)" msgid "Proxy texture for simple frame-based animations." msgstr "Texture procuration pour des animations simples basés sur les trames." -msgid "Sets the currently visible frame of the texture." -msgstr "Définit le trame présentement visible de l'animation." - msgid "" "Number of frames to use in the animation. While you can create the frames " "independently with [method set_frame_texture], you need to set this value " @@ -2076,21 +2155,6 @@ msgstr "La connexion spécifiée existe déjà." msgid "Plays an animation once in [AnimationNodeBlendTree]." msgstr "Joue une animation une fois dans [AnimationNodeBlendTree]." -msgid "" -"A resource to add to an [AnimationNodeBlendTree]. This node will execute a " -"sub-animation and return once it finishes. Blend times for fading in and out " -"can be customized, as well as filters." -msgstr "" -"Une ressource à ajouter à un [AnimationNodeBlendTree]. Ce nœud exécutera une " -"sous-animation et retournera quand il aura fini. Les temps de foudu entrant " -"et sortant peuvent être personnalisés, ainsi que les filtres." - -msgid "" -"If [code]true[/code], the sub-animation will restart automatically after " -"finishing." -msgstr "" -"Si [code]true[/code], la sous-animation redémarrera automatiquement à la fin." - msgid "The delay after which the automatic restart is triggered, in seconds." msgstr "" "Le délai après lequel le redémarrage automatique est déclenché, en secondes." @@ -2173,9 +2237,6 @@ msgstr "" msgid "Playback control for [AnimationNodeStateMachine]." msgstr "Contrôle de la lecture des [AnimationNodeStateMachine]." -msgid "Returns the currently playing animation state." -msgstr "Retourne l'actuel état d'animation joué." - msgid "Returns the playback position within the current animation state." msgstr "Retourne la position de lecture pour l'état actuel de l'animation." @@ -2240,15 +2301,6 @@ msgstr "" msgid "A generic animation transition node for [AnimationTree]." msgstr "Une nœud d'animation de transition générique pour [AnimationTree]." -msgid "" -"Simple state machine for cases which don't require a more advanced " -"[AnimationNodeStateMachine]. Animations can be connected to the inputs and " -"transition times can be specified." -msgstr "" -"Une simple machine à états pour les cas qui n'exigent pas une " -"[AnimationNodeStateMachine] plus avancée. Les animations peuvent être " -"connectées aux entrées et les temps de transition peuvent être spécifiés." - msgid "" "[AnimationPlayer] caches animated nodes. It may not notice if a node " "disappears; [method clear_caches] forces it to update the cache again." @@ -2390,9 +2442,6 @@ msgstr "" "Les animations devront être mises à jour manuellement (voir [method " "advance])." -msgid "2D area for detection and physics and audio influence." -msgstr "Une aire 2D pour la détection et les influences physiques et audio." - msgid "Using Area2D" msgstr "Utiliser les Area2D" @@ -2458,9 +2507,6 @@ msgstr "" msgid "This area does not affect gravity/damping." msgstr "Cette aire n'influe pas sur la gravité/amortissement." -msgid "3D area for detection and physics and audio influence." -msgstr "Une aire 3D pour la détection et les influences physiques et audio." - msgid "GUI in 3D Demo" msgstr "Démo des interfaces en 3D" @@ -2833,13 +2879,6 @@ msgstr "" "Retourne l'identifiant du point disponible suivant avec aucun point lui " "étant associé." -msgid "" -"Returns the capacity of the structure backing the points, useful in " -"conjunction with [code]reserve_space[/code]." -msgstr "" -"Retourne la capacité de la structure qui garde les points en cache, utile " -"avec [code]reserve_space[/code]." - msgid "Returns the number of points currently in the points pool." msgstr "Retourne le nombre de points actuellement dans le tas de points." @@ -2857,6 +2896,13 @@ msgstr "" "Une implémentation de A* pour trouver les chemins les plus courts parmi les " "points connectés dans l'espace." +msgid "" +"Returns the capacity of the structure backing the points, useful in " +"conjunction with [code]reserve_space[/code]." +msgstr "" +"Retourne la capacité de la structure qui garde les points en cache, utile " +"avec [code]reserve_space[/code]." + msgid "Stores information about the audio buses." msgstr "Stocke de l'information sur les bus audio." @@ -3993,9 +4039,6 @@ msgstr "" "Si [code]true[/code], l'objet est affiché à la même taille indépendamment de " "sa distance à la caméra." -msgid "Grows object vertices in the direction of their normals." -msgstr "Agrandit les sommets des objets dans la direction de leurs normales." - msgid "" "If [code]true[/code], depth testing is disabled and the object will be drawn " "in render order." @@ -4003,9 +4046,6 @@ msgstr "" "Si [code]true[/code], les tests de profondeur sont désactivés et l'objet " "sera dessiné suivant son ordre de rendu et non suivant sa distance." -msgid "If [code]true[/code], normal mapping is enabled." -msgstr "Si [code]true[/code], la carte normale est activée." - msgid "The strength of the normal map's effect." msgstr "L'intensité de l'effet de la carte normale." @@ -4167,9 +4207,6 @@ msgstr "La couleur de l'objet est soustraite à l'arrière-plan." msgid "The color of the object is multiplied by the background." msgstr "La couleur de l'objet est multipliée par l'arrière-plan." -msgid "No culling is performed." -msgstr "Aucun culling n’est effectué." - msgid "Set [code]ALBEDO[/code] to the per-vertex color specified in the mesh." msgstr "" "Définit [code]ALBEDO[/code] par la couleur définie pour chaque sommet du " @@ -4248,9 +4285,6 @@ msgstr "Blob spéculaire par défaut." msgid "Toon blob which changes size based on roughness." msgstr "Le reflet en mode cartoon change de taille suivant la rugosité." -msgid "No specular blob." -msgstr "Pas de blob spéculaire." - msgid "Billboard mode is disabled." msgstr "Le mode d'affichage est désactivé." @@ -4912,13 +4946,6 @@ msgstr "" "message d'erreur sera affiché. Voir aussi [method draw_line], [method " "draw_polyline], [method draw_polygon], et [method draw_rect]." -msgid "" -"Sets a custom transform for drawing via components. Anything drawn " -"afterwards will be transformed by this." -msgstr "" -"Définit une transformation personnalisée pour le dessin via des composants. " -"Tout ce qui est dessiné par la suite sera transformé par cela." - msgid "" "Sets a custom transform for drawing via matrix. Anything drawn afterwards " "will be transformed by this." @@ -5167,11 +5194,6 @@ msgstr "" "Le nœud [Viewport] personnalisé assigné au [CanvasLayer]. Si [code]null[/" "code], ça utilise la fenêtre d'affichage par défaut à la place." -msgid "Layer index for draw order. Lower values are drawn first." -msgstr "" -"L'index des calques définit l'ordre d'affichage. Un index bas sera dessiné " -"en premier." - msgid "The layer's base offset." msgstr "Le décalage de base du calque." @@ -11422,13 +11444,6 @@ msgstr "InputEvent" msgid "Returns a [String] representation of the event." msgstr "Retourne une représentation [String] de l'évènement." -msgid "" -"Returns [code]true[/code] if this input event is an echo event (only for " -"events of type [InputEventKey])." -msgstr "" -"Retourne [code]true[/code] si cet événement d'entrée est un écho (uniquement " -"pour les événements de type [InputEventKey])." - msgid "Input event type for actions." msgstr "Type d’évènement d’entrée pour les actions." @@ -12020,13 +12035,6 @@ msgstr "" "L'énergie de la Light2D. Plus la valeur est élevée, plus la lumière est " "forte." -msgid "" -"The layer mask. Only objects with a matching mask will be affected by the " -"Light2D." -msgstr "" -"Le masque de calque. Seuls les objets avec un masque correspondant seront " -"sous l'influence de ce Light2D." - msgid "Maximum layer value of objects that are affected by the Light2D." msgstr "" "La niveau de calque maximum pour qu'un objet soit éclairé par la Light2D." @@ -12058,14 +12066,6 @@ msgstr "" "Le type de filtre pour les ombres. Voir [enum ShadowFilter] pour les valeurs " "possibles." -msgid "" -"The shadow mask. Used with [LightOccluder2D] to cast shadows. Only occluders " -"with a matching light mask will cast shadows." -msgstr "" -"Le masque d'ombre. Utilisé avec [LightOccluder2D] pour lancer des ombres. " -"Seuls les occulteurs avec un masque de lumière correspondant lanceront des " -"ombres." - msgid "" "Adds the value of pixels corresponding to the Light2D to the values of " "pixels under it. This is the common behavior of a light." @@ -13593,17 +13593,6 @@ msgstr "Retourne la direction haut de la carte." msgid "Sets the map up direction." msgstr "Définit la direction haut de la carte." -msgid "" -"Process the collision avoidance agents.\n" -"The result of this process is needed by the physics server, so this must be " -"called in the main thread.\n" -"[b]Note:[/b] This function is not thread safe." -msgstr "" -"Traite les agents d'évitement de collision.\n" -"Le résultat de ce processus est nécessaire par le serveur de physique, de " -"sorte que cela doit être appelé dans le fil d'exécution principal.\n" -"[b]Note :[/b] Cette fonction n'est pas sûre entre plusieurs fils d'exécution." - msgid "Sets the navigation mesh for the region." msgstr "Définit le polygone de navigation de la région." @@ -15080,6 +15069,42 @@ msgstr "Si [code]true[/code], la requête prendra la [PhysicsBody2D] en compte." msgid "Server interface for low-level 2D physics access." msgstr "L'interface du serveur pour l'accès à la physique 2D en bas niveau." +msgid "Represents the size of the [enum BodyParameter] enum." +msgstr "Représente la taille de l'énumération [enum BodyParameter]." + +msgid "Constant to set/get the current transform matrix of the body." +msgstr "" +"La constante pour définir/obtenir la matrice de transformation actuelle du " +"corps." + +msgid "Constant to set/get the current linear velocity of the body." +msgstr "" +"La constante pour définir/récupérer la vélocité linéaire actuelle de ce " +"corps." + +msgid "Constant to set/get the current angular velocity of the body." +msgstr "" +"La constante pour définir/récupérer la vélocité angulaire actuelle de ce " +"corps." + +msgid "Constant to set/get whether the body can sleep." +msgstr "La constante pour définir/obtenir si le corps peut être au repos." + +msgid "Constant to create pin joints." +msgstr "Constante pour créer des joints d’épingle." + +msgid "Constant to create groove joints." +msgstr "Constante pour créer des joints de rainure." + +msgid "Constant to get the number of objects that are not sleeping." +msgstr "La constante pour récupérer le nombre d'objets qui ne dorment pas." + +msgid "Constant to get the number of possible collisions." +msgstr "La constante pour obtenir le nombre possible de collisions." + +msgid "Server interface for low-level physics access." +msgstr "L'interface du serveur pour l'accès physique de bas niveau." + 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." @@ -15134,15 +15159,8 @@ msgstr "Affecte la zone à un ou plusieurs calques de physique." msgid "Sets which physics layers the area will monitor." msgstr "Définit les calques de physique que la zone surveillera." -msgid "" -"Sets the value for an area parameter. See [enum AreaParameter] for a list of " -"available parameters." -msgstr "" -"Définit la valeur d’un paramètre de zone. Voir [enum AreaParameter] pour une " -"liste de paramètres disponibles." - -msgid "Disables a given shape in an area." -msgstr "Désactive une forme donnée dans une zone." +msgid "Sets object pickable with rays." +msgstr "Définit l'objet comme sélectionnable par les rayons." msgid "Sets the transform matrix for an area shape." msgstr "Définit la matrice de transformation pour la forme de l'aire." @@ -15159,9 +15177,6 @@ msgstr "Ajoute un corps à la liste de ceux ignorés lors des collisions." msgid "Removes all shapes from a body." msgstr "Retire toutes les formes du corps." -msgid "Creates a physics body." -msgstr "Crée un corps physique." - msgid "Returns the physics layer or layers a body belongs to." msgstr "Retourne le(s) calque(s) physique(s) auquel(s) ce corps appartient." @@ -15194,9 +15209,6 @@ msgstr "Retourne le [RID] de la forme assignée à ce corps." msgid "Returns a body state." msgstr "Retourne un état du corps." -msgid "Removes a body from the list of bodies exempt from collisions." -msgstr "Retirer un corps de la liste de ceux ignorés lors des collisions." - msgid "Sets the physics layer or layers a body belongs to." msgstr "Définit le(s) calque(s) physique(s) auquel(s) ce corps appartient." @@ -15204,7 +15216,7 @@ msgid "Sets the physics layer or layers a body can collide with." msgstr "" "Définit le(s) calque(s) physique(s) où le corps peut entrer en collision." -msgid "Sets the body mode using one of the [enum BodyMode] constants." +msgid "Sets the body mode, from one of the [enum BodyMode] constants." msgstr "" "Définit le mode du corps, avec l'une des constantes de [enum BodyMode]." @@ -15215,13 +15227,6 @@ msgstr "" "Définit quand un corps utilise sa propre fonction pour calculer sa physique " "(voir [method body_set_force_integration_callback])." -msgid "" -"Sets a body parameter. See [enum BodyParameter] for a list of available " -"parameters." -msgstr "" -"Définit un paramètre du corps. Voir [enum BodyParameter] pour la liste des " -"paramètres disponibles." - msgid "" "Substitutes a given body shape by another. The old shape is selected by its " "index, the new one by its [RID]." @@ -15235,27 +15240,17 @@ msgstr "Définit la matrice de transformation pour la forme du corps." msgid "Assigns a space to the body (see [method space_create])." msgstr "Assigne un espace au corps (voir [method space_create])." -msgid "Returns the value of a joint parameter." -msgstr "Retourne la valeur du paramètre du joint." - -msgid "Returns a joint's type (see [enum JointType])." -msgstr "Retourne le type de joint (voir [enum JoinType])." - -msgid "" -"Sets a joint parameter. See [enum JointParam] for a list of available " -"parameters." -msgstr "" -"Définit un paramètre du joint. Voir [enum JointParam] pour la liste des " -"paramètres disponibles." +msgid "Sets a body state (see [enum BodyState] constants)." +msgstr "Définit l'état du corps (voir les constantes [enum BodyState])." -msgid "Activates or deactivates the 2D physics engine." -msgstr "Active ou désactive le moteur physique 2D." +msgid "Activates or deactivates the 3D physics engine." +msgstr "Active ou désactive le moteur physique 3D." msgid "Returns the shape data." msgstr "Retourne les données de forme." -msgid "Returns a shape's type (see [enum ShapeType])." -msgstr "Retourne le type de forme (voir [enum ShapeType])." +msgid "Returns the type of shape (see [enum ShapeType] constants)." +msgstr "Retourne le type de forme (voir les constantes dans [enum ShapeType])." msgid "Returns the value of a space parameter." msgstr "Retourne la valeur d'un paramètre de l'espace." @@ -15263,92 +15258,6 @@ msgstr "Retourne la valeur d'un paramètre de l'espace." msgid "Returns whether the space is active." msgstr "Retourne quand cet espace est actif." -msgid "" -"Sets the value for a space parameter. See [enum SpaceParameter] for a list " -"of available parameters." -msgstr "" -"Définit la valeur pour le paramètre d'espace. Voir [enum SpaceParameter] " -"pour la liste des paramètres possibles." - -msgid "Constant to set/get gravity strength in an area." -msgstr "La constante pour définir/obtenir la force de gravité de l'aire." - -msgid "Constant to set/get gravity vector/center in an area." -msgstr "La constante pour définir/obtenir le centre de gravité de l'aire." - -msgid "Constant to set/get the priority (order of processing) of an area." -msgstr "" -"La constant pour définir/obtenir la priorité (l'ordre de gestion) de l'aire." - -msgid "Constant to set/get a body's bounce factor." -msgstr "La constante pour définir/obtenir le facteur de rebond." - -msgid "Constant to set/get a body's friction." -msgstr "Constante pour définir/récupérer la friction du corps." - -msgid "Constant to set/get a body's mass." -msgstr "La constante pour définir/obtenir la masse du corps." - -msgid "Constant to set/get a body's inertia." -msgstr "La constante pour définir/obtenir l'inertie du corps." - -msgid "Constant to set/get a body's gravity multiplier." -msgstr "" -"La constante pour définir/obtenir le facteur de multiplication de la gravité " -"du corps." - -msgid "Represents the size of the [enum BodyParameter] enum." -msgstr "Représente la taille de l'énumération [enum BodyParameter]." - -msgid "Constant to set/get the current transform matrix of the body." -msgstr "" -"La constante pour définir/obtenir la matrice de transformation actuelle du " -"corps." - -msgid "Constant to set/get the current linear velocity of the body." -msgstr "" -"La constante pour définir/récupérer la vélocité linéaire actuelle de ce " -"corps." - -msgid "Constant to set/get the current angular velocity of the body." -msgstr "" -"La constante pour définir/récupérer la vélocité angulaire actuelle de ce " -"corps." - -msgid "Constant to set/get whether the body can sleep." -msgstr "La constante pour définir/obtenir si le corps peut être au repos." - -msgid "Constant to create pin joints." -msgstr "Constante pour créer des joints d’épingle." - -msgid "Constant to create groove joints." -msgstr "Constante pour créer des joints de rainure." - -msgid "Constant to get the number of objects that are not sleeping." -msgstr "La constante pour récupérer le nombre d'objets qui ne dorment pas." - -msgid "Constant to get the number of possible collisions." -msgstr "La constante pour obtenir le nombre possible de collisions." - -msgid "Server interface for low-level physics access." -msgstr "L'interface du serveur pour l'accès physique de bas niveau." - -msgid "Sets object pickable with rays." -msgstr "Définit l'objet comme sélectionnable par les rayons." - -msgid "Sets the body mode, from one of the [enum BodyMode] constants." -msgstr "" -"Définit le mode du corps, avec l'une des constantes de [enum BodyMode]." - -msgid "Sets a body state (see [enum BodyState] constants)." -msgstr "Définit l'état du corps (voir les constantes [enum BodyState])." - -msgid "Activates or deactivates the 3D physics engine." -msgstr "Active ou désactive le moteur physique 3D." - -msgid "Returns the type of shape (see [enum ShapeType] constants)." -msgstr "Retourne le type de forme (voir les constantes dans [enum ShapeType])." - msgid "" "The strength with which the pinned objects try to stay in velocity relation " "to each other.\n" @@ -15392,6 +15301,33 @@ msgstr "" msgid "If set, rotational motion is possible." msgstr "Si définit, la rotation est possible." +msgid "Constant to set/get gravity strength in an area." +msgstr "La constante pour définir/obtenir la force de gravité de l'aire." + +msgid "Constant to set/get gravity vector/center in an area." +msgstr "La constante pour définir/obtenir le centre de gravité de l'aire." + +msgid "Constant to set/get the priority (order of processing) of an area." +msgstr "" +"La constant pour définir/obtenir la priorité (l'ordre de gestion) de l'aire." + +msgid "Constant to set/get a body's bounce factor." +msgstr "La constante pour définir/obtenir le facteur de rebond." + +msgid "Constant to set/get a body's friction." +msgstr "Constante pour définir/récupérer la friction du corps." + +msgid "Constant to set/get a body's mass." +msgstr "La constante pour définir/obtenir la masse du corps." + +msgid "Constant to set/get a body's inertia." +msgstr "La constante pour définir/obtenir l'inertie du corps." + +msgid "Constant to set/get a body's gravity multiplier." +msgstr "" +"La constante pour définir/obtenir le facteur de multiplication de la gravité " +"du corps." + msgid "Parameters to be sent to a 2D shape physics query." msgstr "Les paramètres à passer à un requête physique d'une forme 2D." @@ -15974,11 +15910,6 @@ msgstr "" "Si [code]true[/code], envoie des événements d'entrée tactile lorsque vous " "cliquez ou faites glisser la souris." -msgid "Default delay for touch events. This only affects iOS devices." -msgstr "" -"Un retard par défaut pour les événements tactiles. Cela n'affecte que les " -"appareils iOS." - msgid "" "The locale to fall back to if a translation isn't available in a given " "language. If left empty, [code]en[/code] (English) will be used." @@ -18139,12 +18070,6 @@ msgstr "Le dragueur fractionné n’est jamais visible." msgid "A spotlight, such as a reflector spotlight or a lantern." msgstr "Un projecteur, comme un projecteur de spectacle ou un lanterne." -msgid "The spotlight's angular attenuation curve." -msgstr "La courbe d’atténuation angulaire du projecteur." - -msgid "The spotlight's light energy attenuation curve." -msgstr "La courbe d’atténuation de l'énergie de la lumière du projecteur." - msgid "A helper node, mostly used in 3rd person cameras." msgstr "" "Un nœud d'aide, surtout utilisé pour les caméras à la troisième personne." diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po index d2d3354d48..1054650db3 100644 --- a/doc/translations/zh_CN.po +++ b/doc/translations/zh_CN.po @@ -1,6 +1,6 @@ # Chinese (Simplified) translation of the Godot Engine class reference. -# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. -# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). +# Copyright (c) 2014-present Godot Engine contributors. +# Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. # This file is distributed under the same license as the Godot source code. # # Haoyu Qiu , 2020, 2021, 2022, 2023. @@ -52,8 +52,8 @@ # 有趣极了 <2944595791@qq.com>, 2021. # 刘亚西 , 2021. # 诗鸷Temsys , 2021. -# Sam Sun , 2021. -# sudo-behappy <3216539984@qq.com>, 2021. +# Sam Sun , 2021, 2023. +# sudo-behappy <3216539984@qq.com>, 2021, 2023. # Cc <2590090025@qq.com>, 2021. # 苏轼 , 2021. # ErrorDreemurr , 2021. @@ -63,11 +63,14 @@ # 风青山 , 2023. # zehuai wu , 2023. # matrixant , 2023. +# Pencil Core , 2023. +# skyatgit <1218980814@qq.com>, 2023. +# Hamster , 2023. msgid "" msgstr "" "Project-Id-Version: Godot Engine class reference\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n" -"PO-Revision-Date: 2023-02-10 06:54+0000\n" +"PO-Revision-Date: 2023-02-20 10:58+0000\n" "Last-Translator: Haoyu Qiu \n" "Language-Team: Chinese (Simplified) \n" @@ -173,78 +176,9 @@ msgstr "本方法描述的是使用本类型作为左操作数的有效操作符 msgid "Built-in GDScript functions." msgstr "内置 GDScript 函数。" -msgid "" -"A list of GDScript-specific utility functions accessed in any script.\n" -"For the list of the global functions and constants see [@GlobalScope]." -msgstr "" -"可在任何脚本中访问的,GDScript专用的实用函数的列表。\n" -"有关全局函数和常量的列表,请参阅 [@GlobalScope]。" - msgid "GDScript exports" msgstr "GDScript的导出" -msgid "" -"Returns a [Color] constructed from red ([param r8]), green ([param g8]), " -"blue ([param b8]), and optionally alpha ([param a8]) integer channels, each " -"divided by [code]255.0[/code] for their final value.\n" -"[codeblock]\n" -"var red = Color8(255, 0, 0) # Same as Color(1, 0, 0)\n" -"var dark_blue = Color8(0, 0, 51) # Same as Color(0, 0, 0.2).\n" -"var my_color = Color8(306, 255, 0, 102) # Same as Color(1.2, 1, 0, 0.4).\n" -"[/codeblock]" -msgstr "" -"返回一个由红([param r8])、绿([param g8])、蓝([param b8])和可选的阿尔法" -"([param a8])整数通道构造的 [Color],每个通道除以 [code]255.0[/code],作为其" -"最终值。\n" -"[codeblock]\n" -"var red = Color8(255, 0, 0) # 与 Color(1, 0, 0) 相同\n" -"var dark_blue = Color8(0, 0, 51) # 与 Color(0, 0, 0.2) 相同。\n" -"var my_color = Color8(306, 255, 0, 102) # 与 Color(1.2, 1, 0, 0.4) 相同。\n" -"[/codeblock]" - -msgid "" -"Asserts that the [param condition] is [code]true[/code]. If the [param " -"condition] is [code]false[/code], an error is generated. When running from " -"the editor, the running project will also be paused until you resume it. " -"This can be used as a stronger form of [method @GlobalScope.push_error] for " -"reporting errors to project developers or add-on users.\n" -"An optional [param message] can be shown in addition to the generic " -"\"Assertion failed\" message. You can use this to provide additional details " -"about why the assertion failed.\n" -"[b]Warning:[/b] For performance reasons, the code inside [method assert] is " -"only executed in debug builds or when running the project from the editor. " -"Don't include code that has side effects in an [method assert] call. " -"Otherwise, the project will behave differently when exported in release " -"mode.\n" -"[codeblock]\n" -"# Imagine we always want speed to be between 0 and 20.\n" -"var speed = -10\n" -"assert(speed < 20) # True, the program will continue\n" -"assert(speed >= 0) # False, the program will stop\n" -"assert(speed >= 0 and speed < 20) # You can also combine the two conditional " -"statements in one check\n" -"assert(speed < 20, \"the speed limit is 20\") # Show a message\n" -"[/codeblock]" -msgstr "" -"断言条件 [param condition] 为 [code]true[/code]。如果条件 [param condition] " -"为 [code]false[/code] ,则会生成一个错误。如果是从编辑器运行的,正在运行的项" -"目还会被暂停,直到手动恢复。该函数可以作为 [method @GlobalScope.push_error] " -"的加强版,用于向项目开发者或插件用户报错。\n" -"如果给出了可选的 [param message] 参数,在通用的“Assertion failed”消息之外,还" -"会显示该信息。你可以使用它来提供关于断言失败原因的其他详细信息。\n" -"[b]注意:[/b]出于对性能的考虑,[method assert] 中的代码只会在调试版本或者从编" -"辑器运行项目时执行。所以不要在 [method assert] 调用中加入具有副作用的代码。否" -"则,项目在以发行模式导出后将有不一致的行为。\n" -"[codeblock]\n" -"# 比如说我们希望 speed 始终在 0 和 20 之间。\n" -"speed = -10\n" -"assert(speed < 20) # True,程序会继续执行\n" -"assert(speed >= 0) # False,程序会停止\n" -"assert(speed >= 0 && speed < 20) # 你还可以在单次断言中合并两个条件语句\n" -"assert(speed < 20, \"speed = %f, but the speed limit is 20\" % speed) # 在消" -"息中显示详情\n" -"[/codeblock]" - msgid "" "Returns a single character (as a [String]) of the given Unicode code point " "(which is compatible with ASCII code).\n" @@ -395,73 +329,6 @@ msgstr "" "len(b) # 返回 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 script.\n" -"[codeblock]\n" -"# Load a scene called \"main\" located in the root of the project directory " -"and cache it in a variable.\n" -"var main = load(\"res://main.tscn\") # main will contain a PackedScene " -"resource.\n" -"[/codeblock]\n" -"[b]Important:[/b] The path must be absolute. A relative path will always " -"return [code]null[/code].\n" -"This function is a simplified version of [method ResourceLoader.load], which " -"can be used for more advanced scenarios.\n" -"[b]Note:[/b] Files have to be imported into the engine first to load them " -"using this function. If you want to load [Image]s at run-time, you may use " -"[method Image.load]. If you want to import audio files, you can use the " -"snippet described in [member AudioStreamMP3.data]." -msgstr "" -"从位于绝对 [param path] 的文件系统中返回一个 [Resource]。除非该资源已在其他地" -"方引用(例如在另一个脚本或场景中),否则资源是在函数调用时从磁盘加载的,这可" -"能会导致轻微的延迟,尤其是在加载大型场景时。为避免在多次加载某些内容时出现不" -"必要的延迟,可以将资源存储在变量中或使用预加载 [method preload]。\n" -"[b]注意:[/b]资源路径可以通过右键单击文件系统停靠面板中的资源并选择“复制路" -"径”,或将文件从文件系统停靠面板拖到脚本中获得。\n" -"[codeblock]\n" -"# 加载位于项目目录根部的一个名为“main”的场景,并将其缓存在一个变量中。\n" -"var main = load(\"res://main.tscn\") # main 将包含一个 PackedScene 资源。\n" -"[/codeblock]\n" -"[b]重要提示:[/b]路径必须是绝对路径。相对路径将始终返回 [code]null[/code]。\n" -"这个方法是 [method ResourceLoader.load] 的简化版,原版方法可以用于更高级的场" -"景。\n" -"[b]注意:[/b]必须先将文件导入引擎才能使用此函数加载它们。如果你想在运行时加" -"载 [Image],你可以使用 [method Image.load]。如果要导入音频文件,可以使用 " -"[member AudioStreamMP3.data]中描述的代码片段。" - -msgid "" -"Returns a [Resource] from the filesystem located at [param path]. During run-" -"time, the resource is loaded when the script is being parsed. This function " -"effectively acts as a reference to that resource. Note that this function " -"requires [param path] to be a constant [String]. If you want to load a " -"resource from a dynamic/variable path, use [method load].\n" -"[b]Note:[/b] Resource paths can be obtained by right clicking on a resource " -"in the Assets Panel and choosing \"Copy Path\" or by dragging the file from " -"the FileSystem dock into the script.\n" -"[codeblock]\n" -"# Create instance of a scene.\n" -"var diamond = preload(\"res://diamond.tscn\").instantiate()\n" -"[/codeblock]" -msgstr "" -"从位于 [param path] 的文件系统中返回一个 [Resource]。在运行时期间,该资源将在" -"解析脚本时加载。实际可以将这个函数视作对该资源的引用。请注意,此函数要求 " -"[param path] 为常量 [String]。如果要从动态/可变路径加载资源,请使用 [method " -"load]。\n" -"[b]注意:[/b]资源路径可以通过右键单击资产面板中的资源并选择“复制路径”,或通过" -"将文件从文件系统停靠面板拖到脚本中来获得。\n" -"[codeblock]\n" -"# 创建场景的实例。\n" -"var diamond = preload(\"res://diamond.tscn\").instantiate()\n" -"[/codeblock]" - msgid "" "Like [method @GlobalScope.print], but includes the current stack frame when " "running with the debugger turned on.\n" @@ -555,20 +422,20 @@ msgid "" "0.1\n" "[/codeblock]" msgstr "" -"返回给定范围的数组。[method range] 的调用方法有三种:\n" +"返回具有给定范围的数组。[method range] 可以通过三种方式调用:\n" "[code]range(n: int)[/code]:从 0 开始,每次加 1,在到达 [code]n[/code] [i]之" "前[/i]停止。[b]不包含[/b]参数 [code]n[/code]。\n" "[code]range(b: int, n: int)[/code]:从 [code]b[/code] 开始,每次加 1,在到达 " "[code]n[/code] [i]之前[/i]停止。[b]包含[/b]参数 [code]b[/code],[b]不包含[/b]" "参数 [code]n[/code]。\n" -"[code]range(b: int, n: int, s: int)[/code]:从 [code]b[/code] 开始,每次加 " -"[code]s[/code],在到达 [code]n[/code] [i]之前[/i]停止。[b]包含[/b]参数 " -"[code]b[/code],[b]不包含[/b]参数 [code]n[/code]。参数 [code]s[/code] [b]可" -"以[/b]为负数,但不能为 [code]0[/code]。如果 [code]s[/code] 为 [code]0[/" -"code],会输出一条错误。\n" +"[code]range(b: int, n: int, s: int)[/code]:从[code]b[/code]开始,以[code]s[/" +"code]为步长递增/递减,在到达 [code]n[/code] [i]之前[/i]停止。[b]包含[/b]参数 " +"[code]b[/code],[b]不包含[/b]参数 [code]n[/code]。参数 [code]s[/code] [b]可以" +"[/b] 为负数,但不能为 [code]0[/code]。如果 [code]s[/code] 是 [code]0[/code]," +"则会输出一条错误消息。\n" "[method range] 会先将所有参数转换为 [int] 再进行处理。\n" -"[b]注意:[/b]如果不存在满足条件的值,则返回空数组(例如 [code]range(2, 5, -1)" -"[/code] 和 [code]range(5, 5, 1)[/code])。\n" +"[b]注意:[/b]如果没有满足条件的值,则返回空数组(例如 [code]range(2, 5, -1)[/" +"code] 和 [code]range(5, 5, 1)[/code])。\n" "示例:\n" "[codeblock]\n" "print(range(4)) # 输出 [0, 1, 2, 3]\n" @@ -576,7 +443,7 @@ msgstr "" "print(range(0, 6, 2)) # 输出 [0, 2, 4]\n" "print(range(4, 1, -1)) # 输出 [4, 3, 2]\n" "[/codeblock]\n" -"反向遍历 [Array] 请使用:\n" +"要反向遍历 [Array],请使用:\n" "[codeblock]\n" "var array = [3, 6, 9]\n" "for i in range(array.size(), 0, -1):\n" @@ -669,72 +536,48 @@ msgstr "" "行时错误。" msgid "" -"Mark the following property as exported (editable in the Inspector dock and " -"saved to disk). To control the type of the exported property use the type " -"hint notation.\n" +"Export an [int] or [String] property as an enumerated list of options. If " +"the property is an [int], then the index of the value is stored, in the same " +"order the values are provided. You can add explicit values using a colon. If " +"the property is a [String], then the value is stored.\n" +"See also [constant PROPERTY_HINT_ENUM].\n" "[codeblock]\n" -"@export var int_number = 5\n" -"@export var float_number: float = 5\n" -"[/codeblock]" -msgstr "" -"将以下属性标记为已导出(可在 Inspector Dock 中编辑并保存到磁盘)。要控制导出" -"属性的类型,请使用类型提示表示法。\n" -"[codeblock]\n" -"@export var int_number = 5\n" -"@export var float_number: float = 5\n" -"[/codeblock]" - -msgid "" -"Define a new category for the following exported properties. This helps to " -"organize properties in the Inspector dock.\n" -"See also [constant PROPERTY_USAGE_CATEGORY].\n" -"[codeblock]\n" -"@export_category(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" +"@export_enum(\"Warrior\", \"Magician\", \"Thief\") var character_class: int\n" +"@export_enum(\"Slow:30\", \"Average:60\", \"Very Fast:200\") var " +"character_speed: int\n" +"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String\n" "[/codeblock]\n" -"[b]Note:[/b] Categories in the property list are supposed to indicate " -"different base types, so the use of this annotation is not encouraged. See " -"[annotation @export_group] and [annotation @export_subgroup] instead." -msgstr "" -"为以下导出的属性定义一个新类别。这有助于在检查器停靠栏中组织属性。\n" -"另请参见 [constant PROPERTY_USAGE_CATEGORY]。\n" +"If you want to set an initial value, you must specify it explicitly:\n" "[codeblock]\n" -"@export_category(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" +"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = " +"\"Rebecca\"\n" "[/codeblock]\n" -"[b]注意:[/b]属性列表中的类别应该指示不同的基本类型,因此不鼓励使用此注解。请" -"参阅 [annotation @export_group] 和 [annotation @export_subgroup]。" - -msgid "" -"Export a [Color] property without transparency (its alpha fixed as " -"[code]1.0[/code]).\n" -"See also [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n" +"If you want to use named GDScript enums, then use [annotation @export] " +"instead:\n" "[codeblock]\n" -"@export_color_no_alpha var modulate_color: Color\n" +"enum CharacterName {REBECCA, MARY, LEAH}\n" +"@export var character_name: CharacterName\n" "[/codeblock]" msgstr "" -"导出一个没有透明度的 [Color] 属性(它的 alpha 固定为 [code]1.0[/code])。\n" -"另见 [constant PROPERTY_HINT_COLOR_NO_ALPHA]。\n" +"将 [int] 或 [String] 导出为枚举选项列表。如果属性为 [int],则保存的是值的索" +"引,与值的顺序一致。你可以通过冒号添加显式值。如果属性为 [String],则保存的是" +"值。\n" +"另见 [constant PROPERTY_HINT_ENUM]。\n" "[codeblock]\n" -"@export_color_no_alpha var modulate_color: Color\n" -"[/codeblock]" - -msgid "" -"Export a [String] property as a path to a directory. The path will be " -"limited to the project folder and its subfolders. See [annotation " -"@export_global_dir] to allow picking from the entire filesystem.\n" -"See also [constant PROPERTY_HINT_DIR].\n" +"@export_enum(\"Warrior\", \"Magician\", \"Thief\") var character_class: int\n" +"@export_enum(\"Slow:30\", \"Average:60\", \"Very Fast:200\") var " +"character_speed: int\n" +"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String\n" +"[/codeblock]\n" +"如果想要设置初始值,你必须进行显式指定:\n" "[codeblock]\n" -"@export_dir var sprite_folder: String\n" -"[/codeblock]" -msgstr "" -"将 [String] 属性作为目录路径导出。该路径将被限制在项目文件夹及其子文件夹中。" -"请参阅 [annotation @export_global_dir],以允许从整个文件系统中进行选择。\n" -"另请参见 [constant PROPERTY_HINT_DIR]。\n" +"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = " +"\"Rebecca\"\n" +"[/codeblock]\n" +"如果想要使用 GDScript 枚举,请改用 [annotation @export]:\n" "[codeblock]\n" -"@export_dir var sprite_folder: String\n" +"enum CharacterName {REBECCA, MARY, LEAH}\n" +"@export var character_name: CharacterName\n" "[/codeblock]" msgid "" @@ -761,24 +604,55 @@ msgstr "" "[/codeblock]" msgid "" -"Export a [String] property as a path to a file. The path will be limited to " -"the project folder and its subfolders. See [annotation @export_global_file] " -"to allow picking from the entire filesystem.\n" -"If [param filter] is provided, only matching files will be available for " -"picking.\n" -"See also [constant PROPERTY_HINT_FILE].\n" +"Export an integer property as a bit flag field. This allows to store several " +"\"checked\" or [code]true[/code] values with one property, and comfortably " +"select them from the Inspector dock.\n" +"See also [constant PROPERTY_HINT_FLAGS].\n" "[codeblock]\n" -"@export_file var sound_effect_file: String\n" -"@export_file(\"*.txt\") var notes_file: String\n" +"@export_flags(\"Fire\", \"Water\", \"Earth\", \"Wind\") var spell_elements = " +"0\n" +"[/codeblock]\n" +"You can add explicit values using a colon:\n" +"[codeblock]\n" +"@export_flags(\"Self:4\", \"Allies:8\", \"Foes:16\") var spell_targets = 0\n" +"[/codeblock]\n" +"You can also combine several flags:\n" +"[codeblock]\n" +"@export_flags(\"Self:4\", \"Allies:8\", \"Self and Allies:12\", " +"\"Foes:16\")\n" +"var spell_targets = 0\n" +"[/codeblock]\n" +"[b]Note:[/b] A flag value must be at least [code]1[/code] and at most " +"[code]2 ** 32 - 1[/code].\n" +"[b]Note:[/b] Unlike [annotation @export_enum], the previous explicit value " +"is not taken into account. In the following example, A is 16, B is 2, C is " +"4.\n" +"[codeblock]\n" +"@export_flags(\"A:16\", \"B\", \"C\") var x\n" "[/codeblock]" msgstr "" -"将 [String] 属性导出为文件的路径。该路径将限于项目文件夹及其子文件夹。请参阅 " -"[annotation @export_global_file],以允许从整个文件系统中进行选择。\n" -"如果提供了 [param filter],则只有匹配的文件可供选择。\n" -"另请参见 [constant PROPERTY_HINT_FILE]。\n" +"将整数属性导出为位标志字段。能够在单个属性中保存若干“勾选”或者说 [code]true[/" +"code] 值,可以很方便地在检查器面板中进行选择。\n" +"另见 [constant PROPERTY_HINT_FLAGS]。\n" +"[codeblock]\n" +"@export_flags(\"Fire\", \"Water\", \"Earth\", \"Wind\") var spell_elements = " +"0\n" +"[/codeblock]\n" +"你可以通过冒号来添加显式值:\n" +"[codeblock]\n" +"@export_flags(\"Self:4\", \"Allies:8\", \"Foes:16\") var spell_targets = 0\n" +"[/codeblock]\n" +"你还可以对标志进行组合:\n" "[codeblock]\n" -"@export_file var sound_effect_file: String\n" -"@export_file(\"*.txt\") var notes_file: String\n" +"@export_flags(\"Self:4\", \"Allies:8\", \"Self and Allies:12\", " +"\"Foes:16\")\n" +"var spell_targets = 0\n" +"[/codeblock]\n" +"[b]注意:[/b]标志值最多为 [code]1[/code],最多为 [code]2 ** 32 - 1[/code]。\n" +"[b]注意:[/b]与 [annotation @export_enum] 不同,不会考虑前一个显式值。下面的" +"例子中,A 为 16、B 为 2、C 为 4。\n" +"[codeblock]\n" +"@export_flags(\"A:16\", \"B\", \"C\") var x\n" "[/codeblock]" msgid "" @@ -806,7 +680,7 @@ msgid "" "@export_flags_2d_physics var physics_layers: int\n" "[/codeblock]" msgstr "" -"将整数属性导出为 2D 物理层的位标志字段。检查器停靠栏中的小部件,将使用在 " +"将整数属性导出为 2D 物理层的位标志字段。检查器停靠面板中的小工具,将使用在 " "[member ProjectSettings.layer_names/2d_physics/layer_1] 中定义的层名称。\n" "另请参见 [constant PROPERTY_HINT_LAYERS_2D_PHYSICS]。\n" "[codeblock]\n" @@ -878,155 +752,239 @@ msgstr "" "[/codeblock]" msgid "" -"Export a [String] property as a path to a directory. The path can be picked " -"from the entire filesystem. See [annotation @export_dir] to limit it to the " -"project folder and its subfolders.\n" -"See also [constant PROPERTY_HINT_GLOBAL_DIR].\n" +"Export a [String] property with a large [TextEdit] widget instead of a " +"[LineEdit]. This adds support for multiline content and makes it easier to " +"edit large amount of text stored in the property.\n" +"See also [constant PROPERTY_HINT_MULTILINE_TEXT].\n" +"[codeblock]\n" +"@export_multiline var character_biography\n" +"[/codeblock]" +msgstr "" +"用一个大的 [TextEdit] 部件而不是 [LineEdit] 导出一个 [String] 属性。这增加了" +"对多行内容的支持,使其更容易编辑存储在属性中的大量文本。\n" +"参见 [constant PROPERTY_HINT_MULTILINE_TEXT]。\n" +"[codeblock]\n" +"@export_multiline var character_biography\n" +"[/codeblock]" + +msgid "" +"Export a [NodePath] property with a filter for allowed node types.\n" +"See also [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n" "[codeblock]\n" -"@export_global_dir var sprite_folder: String\n" +"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n" "[/codeblock]" msgstr "" -"将 [String] 属性导出为目录路径。可以从整个文件系统中选择路径。请参阅 " -"[annotation @export_dir] 以将其限制为项目文件夹及其子文件夹。\n" -"另请参见 [constant PROPERTY_HINT_GLOBAL_DIR]。\n" +"导出一个 [NodePath] 属性,对允许的节点类型进行过滤。\n" +"参见 [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES]。\n" "[codeblock]\n" -"@export_global_dir var sprite_folder: String\n" +"@export_node_path(Button, TouchScreenButton) var some_button\n" "[/codeblock]" msgid "" -"Export a [String] property as a path to a file. The path can be picked from " -"the entire filesystem. See [annotation @export_file] to limit it to the " -"project folder and its subfolders.\n" -"If [param filter] is provided, only matching files will be available for " -"picking.\n" -"See also [constant PROPERTY_HINT_GLOBAL_FILE].\n" +"Export a [String] property with a placeholder text displayed in the editor " +"widget when no value is present.\n" +"See also [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n" "[codeblock]\n" -"@export_global_file var sound_effect_file: String\n" -"@export_global_file(\"*.txt\") var notes_file: String\n" +"@export_placeholder(\"Name in lowercase\") var character_id: String\n" "[/codeblock]" msgstr "" -"将 [String] 属性作为文件路径导出。可以从整个文件系统中选择路径。请参阅 " -"[annotation @export_file],以将其限制为项目文件夹及其子文件夹。\n" -"如果提供了 [param filter],则只有匹配的文件可供选择。\n" -"另请参见 [constant PROPERTY_HINT_GLOBAL_FILE]。\n" +"导出一个带有一个占位符文本的 [String] 属性,当没有值时,编辑器小部件中会显示" +"该占位符文本。\n" +"另请参见 [constant PROPERTY_HINT_PLACEHOLDER_TEXT]。\n" "[codeblock]\n" -"@export_global_file var sound_effect_file: String\n" -"@export_global_file(\"*.txt\") var notes_file: String\n" +"@export_placeholder(\"Name in lowercase\") var character_id: String\n" "[/codeblock]" msgid "" -"Define a new group for the following exported properties. This helps to " -"organize properties in the Inspector dock. Groups can be added with an " -"optional [param prefix], which would make group to only consider properties " -"that have this prefix. The grouping will break on the first property that " -"doesn't have a prefix. The prefix is also removed from the property's name " -"in the Inspector dock.\n" -"If no [param prefix] is provided, the every following property is added to " -"the group. The group ends when then next group or category is defined. You " -"can also force end a group by using this annotation with empty strings for " -"parameters, [code]@export_group(\"\", \"\")[/code].\n" -"Groups cannot be nested, use [annotation @export_subgroup] to add subgroups " -"within groups.\n" -"See also [constant PROPERTY_USAGE_GROUP].\n" +"Export an [int] or [float] property as a range value. The range must be " +"defined by [param min] and [param max], as well as an optional [param step] " +"and a variety of extra hints. The [param step] defaults to [code]1[/code] " +"for integer properties. For floating-point numbers this value depends on " +"your [code]EditorSettings.interface/inspector/default_float_step[/code] " +"setting.\n" +"If hints [code]\"or_greater\"[/code] and [code]\"or_less\"[/code] are " +"provided, the editor widget will not cap the value at range boundaries. The " +"[code]\"exp\"[/code] hint will make the edited values on range to change " +"exponentially. The [code]\"hide_slider\"[/code] hint will hide the slider " +"element of the editor widget.\n" +"Hints also allow to indicate the units for the edited value. Using " +"[code]\"radians\"[/code] you can specify that the actual value is in " +"radians, but should be displayed in degrees in the Inspector dock. " +"[code]\"degrees\"[/code] allows to add a degree sign as a unit suffix. " +"Finally, a custom suffix can be provided using [code]\"suffix:unit\"[/code], " +"where \"unit\" can be any string.\n" +"See also [constant PROPERTY_HINT_RANGE].\n" "[codeblock]\n" -"@export_group(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" +"@export_range(0, 20) var number\n" +"@export_range(-10, 20) var number\n" +"@export_range(-10, 20, 0.2) var number: float\n" "\n" -"@export_group(\"Prefixed Properties\", \"prefix_\")\n" -"@export var prefix_number = 3\n" -"@export var prefix_string = \"\"\n" +"@export_range(0, 100, 1, \"or_greater\") var power_percent\n" +"@export_range(0, 100, 1, \"or_greater\", \"or_less\") var health_delta\n" "\n" -"@export_group(\"\", \"\")\n" -"@export var ungrouped_number = 3\n" +"@export_range(-3.14, 3.14, 0.001, \"radians\") var angle_radians\n" +"@export_range(0, 360, 1, \"degrees\") var angle_degrees\n" +"@export_range(-8, 8, 2, \"suffix:px\") var target_offset\n" "[/codeblock]" msgstr "" -"为以下导出的属性定义一个新组。这有助于在检查器停靠面板中组织属性。可以使用可" -"选的 [param prefix] 添加组,这将使组仅考虑具有此前缀的属性。分组将在第一个没" -"有前缀的属性上中断。前缀也将从检查器停靠面板中的属性名称中移除。\n" -"如果未提供 [param prefix],则将以下每个属性添加到组中。当定义下一个组或类别" -"时,该组结束。您还可以通过将此注解与空字符串的参数一起使用来强制结束组," -"[code]@export_group(\"\", \"\")[/code]。\n" -"组不能被嵌套,使用 [annotation @export_subgroup] 在组内添加子组。\n" -"另见 [constant PROPERTY_USAGE_GROUP]。\n" +"将一个[int]或[float]属性导出为一个范围值。范围必须由 [param min] 和 [param " +"max] 定义,以及一个可选的 [param step] 和各种额外的提示。对于整数属性," +"[param step] 的默认值是 [code]1[/code] 。对于浮点数,这个值取决于你的 " +"[code]EditorSettings.interface/inspector/default_float_step[/code] 设置。\n" +"如果提供了提示 [code]\"or_greater\"[/code] 和 [code]\"or_less\"[/code] ,那么" +"编辑器部件将不会在范围边界处对数值进行限制。[code]\"exp\"[/code] 提示将使范围" +"内的编辑值以指数形式变化。[code]\"hide_slider\"[/code] 提示将隐藏编辑器部件中" +"的滑块。\n" +"提示还允许指示编辑的值的单位。使用 [code]\"radians\"[/code] ,你可以指定实际" +"值以弧度为单位,但在检查器中会以角度为单位显示。[code]\"degrees\"[/code] 允许" +"添加一个角度符号作为单位后缀。最后,可以使用 [code]\"suffix:单位\"[/code] 提" +"供一个自定义后缀,其中“单位”可以是任何字符串。\n" +"另见 [constant PROPERTY_HINT_RANGE]。\n" "[codeblock]\n" -"@export_group(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" +"@export_range(0, 20) var number\n" +"@export_range(-10, 20) var number\n" +"@export_range(-10, 20, 0.2) var number: float\n" "\n" -"@export_group(\"Prefixed Properties\", \"prefix_\")\n" -"@export var prefix_number = 3\n" -"@export var prefix_string = \"\"\n" +"@export_range(0, 100, 1, \"or_greater\") var power_percent\n" +"@export_range(0, 100, 1, \"or_greater\", \"or_less\") var health_delta\n" "\n" -"@export_group(\"\", \"\")\n" -"@export var ungrouped_number = 3\n" +"@export_range(-3.14, 3.14, 0.001, \"radians\") var angle_radians\n" +"@export_range(0, 360, 1, \"degrees\") var angle_degrees\n" +"@export_range(-8, 8, 2, \"suffix:像素\") var target_offset\n" "[/codeblock]" msgid "" -"Export a [String] property with a large [TextEdit] widget instead of a " -"[LineEdit]. This adds support for multiline content and makes it easier to " -"edit large amount of text stored in the property.\n" -"See also [constant PROPERTY_HINT_MULTILINE_TEXT].\n" +"Add a custom icon to the current script. The script must be registered as a " +"global class using the [code]class_name[/code] keyword for this to have a " +"visible effect. The icon specified at [param icon_path] is displayed in the " +"Scene dock for every node of that class, as well as in various editor " +"dialogs.\n" "[codeblock]\n" -"@export_multiline var character_biography\n" +"@icon(\"res://path/to/class/icon.svg\")\n" +"[/codeblock]\n" +"[b]Note:[/b] Only the script can have a custom icon. Inner classes are not " +"supported.\n" +"[b]Note:[/b] As annotations describe their subject, the [code]@icon[/code] " +"annotation must be placed before the class definition and inheritance.\n" +"[b]Note:[/b] Unlike other annotations, the argument of the [code]@icon[/" +"code] annotation must be a string literal (constant expressions are not " +"supported)." +msgstr "" +"在当前脚本中添加一个自定义图标。脚本必须使用 [code]class_name[/code] 关键字注" +"册为一个全局类,这样才有可见的效果。在 [param icon_path] 处指定的图标会在场景" +"停靠面板中该类的节点上显示,也会显示在各种编辑器对话框中。\n" +"[codeblock]\n" +"@icon(\"res://path/to/class/icon.svg\")\n" +"[/codeblock]\n" +"[b]注意:[/b] 只有脚本可以有一个自定义的图标。不支持内部类。\n" +"[b]注意:[/b] 由于注解描述了它们的主题,[code]@icon[/code] 注解必须放在类定义" +"和继承之前。\n" +"[b]注意:[/b] 不同于其他注解,[code]@icon[/code] 注解的参数必须是一个字符串 " +"(不支持常量表达式)。" + +msgid "" +"Mark the following method for remote procedure calls. See [url=$DOCS_URL/" +"tutorials/networking/high_level_multiplayer.html]High-level multiplayer[/" +"url].\n" +"The order of [code]mode[/code], [code]sync[/code] and [code]transfer_mode[/" +"code] does not matter and all arguments can be omitted, but " +"[code]transfer_channel[/code] always has to be the last argument. The " +"accepted values for [code]mode[/code] are [code]\"any_peer\"[/code] or " +"[code]\"authority\"[/code], for [code]sync[/code] are [code]\"call_remote\"[/" +"code] or [code]\"call_local\"[/code] and for [code]transfer_mode[/code] are " +"[code]\"unreliable\"[/code], [code]\"unreliable_ordered\"[/code] or " +"[code]\"reliable\"[/code].\n" +"[codeblock]\n" +"@rpc\n" +"func fn(): pass\n" +"\n" +"@rpc(\"any_peer\", \"unreliable_ordered\")\n" +"func fn_update_pos(): pass\n" +"\n" +"@rpc(\"authority\", \"call_remote\", \"unreliable\", 0) # Equivalent to " +"@rpc\n" +"func fn_default(): pass\n" "[/codeblock]" msgstr "" -"用一个大的 [TextEdit] 部件而不是 [LineEdit] 导出一个 [String] 属性。这增加了" -"对多行内容的支持,使其更容易编辑存储在属性中的大量文本。\n" -"参见 [constant PROPERTY_HINT_MULTILINE_TEXT]。\n" +"将以下方法标记为远程过程调用。请参见 [url=$DOCS_URL/tutorials/networking/" +"high_level_multiplayer.html]高级多人游戏[/url]。\n" +"[code]mode[/code]、[code]sync[/code] 和 [code]transfer_mode[/code] 的顺序无关" +"紧要,所有参数都可以省略,但 [code]transfer_channel[/code] 必须始终是最后一个" +"参数。对于接受的值,[code]mode[/code] 可以是 [code]\"any_peer\"[/code] 或 " +"[code]\"authority\"[/code],[code]sync[/code] 可以是 [code]\"call_remote\"[/" +"code]或 [code]\"call_local\"[/code],[code]transfer_mode[/code] 可以是 " +"[code]\"unreliable\"[/code]、[code]\"unreliable_ordered\"[/code] 或 " +"[code]\"reliable\"[/code]。\n" "[codeblock]\n" -"@export_multiline var character_biography\n" +"@rpc\n" +"func fn(): pass\n" +"\n" +"@rpc(\"any_peer\", \"unreliable_ordered\")\n" +"func fn_update_pos(): pass\n" +"\n" +"@rpc(\"authority\", \"call_remote\", \"unreliable\", 0) # 等价于 @rpc\n" +"func fn_default(): pass\n" "[/codeblock]" msgid "" -"Export a [String] property with a placeholder text displayed in the editor " -"widget when no value is present.\n" -"See also [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n" +"Mark the current script as a tool script, allowing it to be loaded and " +"executed by the editor. See [url=$DOCS_URL/tutorials/plugins/" +"running_code_in_the_editor.html]Running code in the editor[/url].\n" "[codeblock]\n" -"@export_placeholder(\"Name in lowercase\") var character_id: String\n" +"@tool\n" +"extends Node\n" +"[/codeblock]\n" +"[b]Note:[/b] As annotations describe their subject, the [code]@tool[/code] " +"annotation must be placed before the class definition and inheritance." +msgstr "" +"将当前脚本标记为工具脚本,允许它被编辑器加载和执行。见[url=$DOCS_URL/" +"tutorials/plugins/running_code_in_the_editor.html]《在编辑器中运行代码》[/" +"url]。\n" +"[codeblock]\n" +"@tool\n" +"extends Node\n" +"[/codeblock]\n" +"[b]注意:[/b]因为注解描述对象的关系,必须把 [code]@tool[/code] 注解放在类定义" +"和继承之前。" + +msgid "" +"Mark the following statement to ignore the specified [param warning]. See " +"[url=$DOCS_URL/tutorials/scripting/gdscript/warning_system.html]GDScript " +"warning system[/url].\n" +"[codeblock]\n" +"func test():\n" +" print(\"hello\")\n" +" return\n" +" @warning_ignore(\"unreachable_code\")\n" +" print(\"unreachable\")\n" "[/codeblock]" msgstr "" -"导出一个带有一个占位符文本的 [String] 属性,当没有值时,编辑器小部件中会显示" -"该占位符文本。\n" -"另请参见 [constant PROPERTY_HINT_PLACEHOLDER_TEXT]。\n" +"将后续语句标记为忽略指定的 [param warning] 警告。见[url=$DOCS_URL/tutorials/" +"scripting/gdscript/warning_system.html]《GDScript 警告系统》[/url]。\n" "[codeblock]\n" -"@export_placeholder(\"Name in lowercase\") var character_id: String\n" +"func test():\n" +" print(\"你好\")\n" +" return\n" +" @warning_ignore(\"unreachable_code\")\n" +" print(\"无法到达\")\n" "[/codeblock]" +msgid "Global scope constants and functions." +msgstr "全局范围常量和函数。" + msgid "" -"Define a new subgroup for the following exported properties. This helps to " -"organize properties in the Inspector dock. Subgroups work exactly like " -"groups, except they need a parent group to exist. See [annotation " -"@export_group].\n" -"See also [constant PROPERTY_USAGE_SUBGROUP].\n" -"[codeblock]\n" -"@export_group(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" -"\n" -"@export_subgroup(\"My Prefixed Properties\", \"prefix_\")\n" -"@export var prefix_number = 3\n" -"@export var prefix_string = \"\"\n" -"[/codeblock]\n" -"[b]Note:[/b] Subgroups cannot be nested, they only provide one extra level " -"of depth. Just like the next group ends the previous group, so do the " -"subsequent subgroups." -msgstr "" -"为接下来的导出属性定义一个新的子组。这有助于组织检查器停靠面板中的属性。子组" -"的工作方式与组完全一样,只是它们需要一个父组才能存在。请参阅 [annotation " -"@export_group]。\n" -"另请参见 [constant PROPERTY_USAGE_SUBGROUP]。\n" -"[codeblock]\n" -"@export_group(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" -"\n" -"@export_subgroup(\"My Prefixed Properties\", \"prefix_\")\n" -"@export var prefix_number = 3\n" -"@export var prefix_string = \"\"\n" -"[/codeblock]\n" -"[b]注意:[/b]子组不能嵌套,它们只提供一层额外的深度。就像新组使前一个组结束一" -"样,后续的子组也会打断之前的子组。" +"A list of global scope enumerated constants and built-in functions. This is " +"all that resides in the globals, constants regarding error codes, keycodes, " +"property hints, etc.\n" +"Singletons are also documented here, since they can be accessed from " +"anywhere.\n" +"For the entries related to GDScript which can be accessed in any script see " +"[@GDScript]." +msgstr "" +"全局范围的枚举常量和内置函数的列表。这是所有驻留在全局的,关于错误代码、键" +"码、属性提示等的常量。\n" +"单例也被记录在这里,因为它们可以从任何地方被访问。\n" +"对于可以在任何脚本中访问的与 GDScript 相关的条目,请参阅 [@GDScript]。" msgid "Random number generation" msgstr "随机数生成" @@ -1177,16 +1135,355 @@ msgid "" "var a = atan2(0, -1) # a is 3.141593\n" "[/codeblock]" msgstr "" -"返回 [code]y/x[/code] 的反正切值,单位为弧度。用来获得切线的角度 [code]y/x[/" -"code] 。为了计算该值,该方法考虑了两个参数的符号,以确定象限。\n" -"重要提示:按照惯例,Y坐标在前。\n" +"返回 [code]y/x[/code] 的反正切值,单位为弧度。用来获得正切值为 [code]y/x[/" +"code] 的角度。为了计算该值,该方法考虑了两个参数的符号,以确定象限。\n" +"重要提示:按照惯例,Y 坐标在前。\n" "[codeblock]\n" -"var a = atan2(0, -1) # a=3.141593\n" +"var a = atan2(0, -1) # a = 3.141593\n" "[/codeblock]" +msgid "" +"Returns the derivative at the given [param t] on a one-dimensional " +"[url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve[/url] " +"defined by the given [param control_1], [param control_2], and [param end] " +"points." +msgstr "" +"返回由给定的 [param control_1]、[param control_2] 和 [param end] 点定义的一维" +"[url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]贝塞尔曲线[/url]上 " +"[param t] 处的导数。" + +msgid "" +"Returns the point at the given [param t] on a one-dimensional [url=https://" +"en.wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve[/url] defined by the " +"given [param control_1], [param control_2], and [param end] points." +msgstr "" +"返回由给定的 [param control_1]、[param control_2] 和 [param end] 点定义的一维" +"[url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]贝塞尔曲线[/url]上位于给" +"定 [param t] 的点。" + +msgid "" +"Decodes a byte array back to a [Variant] value, without decoding objects.\n" +"[b]Note:[/b] If you need object deserialization, see [method " +"bytes_to_var_with_objects]." +msgstr "" +"将字节数组解码回 [Variant] 值,无法解码对象。\n" +"[b]注意:[/b]如果需要对象反序列化,请参见 [method " +"bytes_to_var_with_objects]。" + +msgid "" +"Decodes a byte array back to a [Variant] value. Decoding objects is " +"allowed.\n" +"[b]Warning:[/b] Deserialized object can contain code which gets executed. Do " +"not use this option if the serialized object comes from untrusted sources to " +"avoid potential security threats (remote code execution)." +msgstr "" +"将字节数组解码回 [Variant] 值。允许解码对象。\n" +"[b]警告:[/b]反序列化的对象可能包含执行的代码。如果序列化对象的来源不受信任," +"则不要使用此选项,以避免潜在的安全威胁(远程执行代码)。" + +msgid "" +"Rounds [param x] upward (towards positive infinity), returning the smallest " +"whole number that is not less than [param x]. Supported types: [int], " +"[float], [Vector2], [Vector3], [Vector4].\n" +"[codeblock]\n" +"var i = ceil(1.45) # i is 2.0\n" +"i = ceil(1.001) # i is 2.0\n" +"[/codeblock]\n" +"See also [method floor], [method round], and [method snapped].\n" +"[b]Note:[/b] For better type safety, use [method ceilf], [method ceili], " +"[method Vector2.ceil], [method Vector3.ceil], or [method Vector4.ceil]." +msgstr "" +"向上舍入 [param x](朝正无穷大),返回不小于 [param x] 的最小整数。支持的类" +"型:[int]、[float]、[Vector2]、[Vector3]、[Vector4]。\n" +"[codeblock]\n" +"var i = ceil(1.45) # i 是 2.0\n" +"i = ceil(1.001) # i 是 2.0\n" +"[/codeblock]\n" +"另请参见 [method floor]、[method round]、以及 [method snapped]。\n" +"[b]注意:[/b]为了更好的类型安全,使用 [method ceilf]、[method ceili]、" +"[method Vector2.ceil]、[method Vector3.ceil] 或 [method Vector4.ceil]。" + +msgid "" +"Rounds [param x] upward (towards positive infinity), returning the smallest " +"whole number that is not less than [param x].\n" +"A type-safe version of [method ceil], returning a [float]." +msgstr "" +"向上舍入 [param x](朝正无穷大),返回不小于 [param x] 的最小整数。\n" +"[method ceil] 的类型安全版本,返回一个 [float]。" + +msgid "" +"Rounds [param x] upward (towards positive infinity), returning the smallest " +"whole number that is not less than [param x].\n" +"A type-safe version of [method ceil], returning an [int]." +msgstr "" +"向上舍入 [param x](朝正无穷大),返回不小于 [param x] 的最小整数。\n" +"[method ceil] 的类型安全版本,返回一个 [int]。" + +msgid "" +"Clamps the [param value], returning a [Variant] not less than [param min] " +"and not more than [param max]. Supported types: [int], [float], [Vector2], " +"[Vector2i], [Vector3], [Vector3i], [Vector4], [Vector4i].\n" +"[codeblock]\n" +"var a = clamp(-10, -1, 5)\n" +"# a is -1\n" +"\n" +"var b = clamp(8.1, 0.9, 5.5)\n" +"# b is 5.5\n" +"\n" +"var c = clamp(Vector2(-3.5, -4), Vector2(-3.2, -2), Vector2(2, 6.5))\n" +"# c is (-3.2, -2)\n" +"\n" +"var d = clamp(Vector2i(7, 8), Vector2i(-3, -2), Vector2i(2, 6))\n" +"# d is (2, 6)\n" +"\n" +"var e = clamp(Vector3(-7, 8.5, -3.8), Vector3(-3, -2, 5.4), Vector3(-2, 6, " +"-4.1))\n" +"# e is (-3, -2, 5.4)\n" +"\n" +"var f = clamp(Vector3i(-7, -8, -9), Vector3i(-1, 2, 3), Vector3i(-4, -5, " +"-6))\n" +"# f is (-4, -5, -6)\n" +"[/codeblock]\n" +"[b]Note:[/b] For better type safety, use [method clampf], [method clampi], " +"[method Vector2.clamp], [method Vector2i.clamp], [method Vector3.clamp], " +"[method Vector3i.clamp], [method Vector4.clamp], or [method Vector4i.clamp]." +msgstr "" +"钳制 [param value],返回不小于 [param min] 且不大于 [param max] 的 " +"[Variant]。支持的类型:[int]、[float]、[Vector2]、[Vector2i]、[Vector3]、" +"[Vector3i]、[Vector4]、[Vector4i]。\n" +"[codeblock]\n" +"var a = clamp(-10, -1, 5)\n" +"# a 是 -1\n" +"\n" +"var b = clamp(8.1, 0.9, 5.5)\n" +"# b 是 5.5\n" +"\n" +"var c = clamp(Vector2(-3.5, -4), Vector2(-3.2, -2), Vector2(2, 6.5))\n" +"# c 是 (-3.2, -2)\n" +"\n" +"var d = clamp(Vector2i(7, 8), Vector2i(-3, -2), Vector2i(2, 6))\n" +"# d 是 (2, 6)\n" +"\n" +"var e = clamp(Vector3(-7, 8.5, -3.8), Vector3(-3, -2, 5.4), Vector3(-2, 6, " +"-4.1))\n" +"# e 是 (-3, -2, 5.4)\n" +"\n" +"var f = clamp(Vector3i(-7, -8, -9), Vector3i(-1, 2, 3), Vector3i(-4, -5, " +"-6))\n" +"# f 是 (-4, -5, -6)\n" +"[/codeblock]\n" +"[b]注意:[/b]为了更好的类型安全,使用 [method clampf]、[method clampi]、" +"[method Vector2.clamp]、[method Vector2i.clamp]、[method Vector3.clamp]、" +"[method Vector3i.clamp ]、[method Vector4.clamp] 或 [method Vector4i.clamp]。" + +msgid "" +"Clamps the [param value], returning a [float] not less than [param min] and " +"not more than [param max].\n" +"[codeblock]\n" +"var speed = 42.1\n" +"var a = clampf(speed, 1.0, 20.5) # a is 20.5\n" +"\n" +"speed = -10.0\n" +"var b = clampf(speed, -1.0, 1.0) # b is -1.0\n" +"[/codeblock]" +msgstr "" +"钳制 [param value],返回不小于 [param min] 且不大于 [param max] 的 " +"[float]。\n" +"[codeblock]\n" +"var speed = 42.1\n" +"var a = clampf(speed, 1.0, 20.5) # a 是 20.5\n" +"\n" +"speed = -10.0\n" +"var b = clampf(speed, -1.0, 1.0) # b 是 -1.0\n" +"[/codeblock]" + +msgid "" +"Clamps the [param value], returning an [int] not less than [param min] and " +"not more than [param max].\n" +"[codeblock]\n" +"var speed = 42\n" +"var a = clampi(speed, 1, 20) # a is 20\n" +"\n" +"speed = -10\n" +"var b = clampi(speed, -1, 1) # b is -1\n" +"[/codeblock]" +msgstr "" +"钳制 [param value],返回不小于 [param min] 且不大于 [param max] 的 [int]。\n" +"[codeblock]\n" +"var speed = 42\n" +"var a = clampi(speed, 1, 20) # a 是 20\n" +"\n" +"speed = -10\n" +"var b = clampi(speed, -1, 1) # b 是 -1\n" +"[/codeblock]" + +msgid "" +"Returns the cosine of angle [param angle_rad] in radians.\n" +"[codeblock]\n" +"cos(PI * 2) # Returns 1.0\n" +"cos(PI) # Returns -1.0\n" +"cos(deg_to_rad(90)) # Returns 0.0\n" +"[/codeblock]" +msgstr "" +"返回弧度角为 [param angle_rad] 的余弦值。\n" +"[codeblock]\n" +"cos(PI * 2) # 返回 1.0\n" +"cos(PI) # 返回 -1.0\n" +"cos(deg_to_rad(90)) # 返回 0.0\n" +"[/codeblock]" + +msgid "" +"Returns the hyperbolic cosine of [param x] in radians.\n" +"[codeblock]\n" +"print(cosh(1)) # Prints 1.543081\n" +"[/codeblock]" +msgstr "" +"返回弧度角 [param x] 的双曲余弦值。\n" +"[codeblock]\n" +"print(cosh(1)) # 打印 1.543081\n" +"[/codeblock]" + +msgid "" +"Cubic interpolates between two values by the factor defined in [param " +"weight] with [param pre] and [param post] values." +msgstr "" +"根据 [param weight] 中定义的因子以及 [param pre] 和 [param post] 值,在两个值" +"之间进行三次插值。" + +msgid "" +"Cubic interpolates between two rotation values with shortest path by the " +"factor defined in [param weight] with [param pre] and [param post] values. " +"See also [method lerp_angle]." +msgstr "" +"根据 [param weight] 中定义的因子以及 [param pre] 和 [param post] 值,在具有最" +"短路径的两个旋转值之间三次插值 。另见 [method lerp_angle]。" + +msgid "" +"Cubic interpolates between two rotation values with shortest path by the " +"factor defined in [param weight] with [param pre] and [param post] values. " +"See also [method lerp_angle].\n" +"It can perform smoother interpolation than [code]cubic_interpolate()[/code] " +"by the time values." +msgstr "" +"根据 [param weight] 中定义的因子以及 [param pre] 和 [param post] 值,在具有最" +"短路径的两个旋转值之间进行三次插值。另见 [method lerp_angle]。\n" +"它可以根据时间值执行比 [code]cubic_interpolate()[/code] 更平滑的插值。" + +msgid "" +"Cubic interpolates between two values by the factor defined in [param " +"weight] with [param pre] and [param post] values.\n" +"It can perform smoother interpolation than [method cubic_interpolate] by the " +"time values." +msgstr "" +"根据 [param weight] 中定义的因子以及 [param pre] 和 [param post] 值,在两个值" +"之间进行三次插值。\n" +"它可以根据时间值执行比 [method cubic_interpolate] 更平滑的插值。" + msgid "Converts from decibels to linear energy (audio)." msgstr "从分贝转换为线性能量(音频)。" +msgid "" +"Converts an angle expressed in degrees to radians.\n" +"[codeblock]\n" +"var r = deg_to_rad(180) # r is 3.141593\n" +"[/codeblock]" +msgstr "" +"将角度值转换为弧度值。\n" +"[codeblock]\n" +"var r = deg_to_rad(180) # r 是 3.141593\n" +"[/codeblock]" + +msgid "" +"Returns an \"eased\" value of [param x] based on an easing function defined " +"with [param curve]. This easing function is based on an exponent. The [param " +"curve] can be any floating-point number, with specific values leading to the " +"following behaviors:\n" +"[codeblock]\n" +"- Lower than -1.0 (exclusive): Ease in-out\n" +"- 1.0: Linear\n" +"- Between -1.0 and 0.0 (exclusive): Ease out-in\n" +"- 0.0: Constant\n" +"- Between 0.0 to 1.0 (exclusive): Ease out\n" +"- 1.0: Linear\n" +"- Greater than 1.0 (exclusive): Ease in\n" +"[/codeblock]\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"ease_cheatsheet.png]ease() curve values cheatsheet[/url]\n" +"See also [method smoothstep]. If you need to perform more advanced " +"transitions, use [method Tween.interpolate_value]." +msgstr "" +"基于用 [param curve] 定义的缓动函数返回 [param x] 的“缓动后”的值。该缓动函数" +"是基于指数的。[param curve] 可以是任意浮点数,具体数值会导致以下行为:\n" +"[codeblock]\n" +"- 低于 -1.0(开区间):缓入缓出\n" +"- -1.0:线性\n" +"- 在 -1.0 和 0.0 之间(开区间):缓出缓入\n" +"- 0.0:恒定\n" +"- 在 0.0 到 1.0 之间(开区间):缓出\n" +"- 1.0:线性\n" +"- 大于 1.0(开区间):缓入\n" +"[/codeblock]\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"ease_cheatsheet.png]ease() 曲线值速查表[/url]\n" +"另请参阅 [method smoothstep]。如果你需要执行更高级的过渡,请使用 [method " +"Tween.interpolate_value]。" + +msgid "" +"Returns a human-readable name for the given [enum Error] code.\n" +"[codeblock]\n" +"print(OK) # Prints 0\n" +"print(error_string(OK)) # Prints OK\n" +"print(error_string(ERR_BUSY)) # Prints Busy\n" +"print(error_string(ERR_OUT_OF_MEMORY)) # Prints Out of memory\n" +"[/codeblock]" +msgstr "" +"为给定的 [enum Error] 代码返回一个人类可读的名称。\n" +"[codeblock]\n" +"print(OK) # 输出 0\n" +"print(error_string(OK)) # 输出 OK\n" +"print(error_string(ERR_BUSY)) # 输出 Busy\n" +"print(error_string(ERR_OUT_OF_MEMORY)) # 输出 Out of memory\n" +"[/codeblock]" + +msgid "" +"The natural exponential function. It raises the mathematical constant [b]e[/" +"b] to the power of [param x] and returns it.\n" +"[b]e[/b] has an approximate value of 2.71828, and can be obtained with " +"[code]exp(1)[/code].\n" +"For exponents to other bases use the method [method pow].\n" +"[codeblock]\n" +"var a = exp(2) # Approximately 7.39\n" +"[/codeblock]" +msgstr "" +"自然指数函数。计算数学常数 [b]e[/b] 的 [param x] 次方并返回它。\n" +"[b]e[/b] 的近似值为 2.71828,可以使用 [code]exp(1)[/code] 获得。\n" +"求其他底数的指数应使用 [method pow] 方法。\n" +"[codeblock]\n" +"var a = exp(2) # 大约是 7.39\n" +"[/codeblock]" + +msgid "" +"Rounds [param x] downward (towards negative infinity), returning the largest " +"whole number that is not more than [param x]. Supported types: [int], " +"[float], [Vector2], [Vector3], [Vector4].\n" +"[codeblock]\n" +"var a = floor(2.99) # a is 2.0\n" +"a = floor(-2.99) # a is -3.0\n" +"[/codeblock]\n" +"See also [method ceil], [method round], and [method snapped].\n" +"[b]Note:[/b] For better type safety, use [method floorf], [method floori], " +"[method Vector2.floor], [method Vector3.floor], or [method Vector4.floor]." +msgstr "" +"向下舍入 [param x](朝负无穷大),返回不大于 [param x] 的最大整数。支持的类" +"型:[int]、[float]、[Vector2]、[Vector3]、[Vector4]。\n" +"[codeblock]\n" +"var a = floor(2.99) # a 是 2.0\n" +"a = floor(-2.99) # a 是 -3.0\n" +"[/codeblock]\n" +"另请参阅 [method ceil]、[method round]、以及 [method snapped]。\n" +"[b]注意:[/b]为了更好的类型安全,请使用 [method floorf]、[method floori]、" +"[method Vector2.floor]、[method Vector3.floor] 或 [method Vector4.floor]。" + msgid "" "Rounds [param x] downward (towards negative infinity), returning the largest " "whole number that is not more than [param x].\n" @@ -1195,6 +1492,201 @@ msgstr "" "将 [param x] 向下舍入(向负无穷大),返回不超过 [param x] 的最大整数。\n" "一个类型安全的 [method floor] 版本,返回一个 [float]。" +msgid "" +"Rounds [param x] downward (towards negative infinity), returning the largest " +"whole number that is not more than [param x].\n" +"A type-safe version of [method floor], returning an [int].\n" +"[b]Note:[/b] This function is [i]not[/i] the same as [code]int(x)[/code], " +"which rounds towards 0." +msgstr "" +"将 [param x] 向下舍入(向负无穷大),返回不超过 [param x] 的最大整数。\n" +"是 [method floor] 的类型安全版本,返回一个 [int]。\n" +"[b] 注意:[/b]这个函数与 [code]int(x)[/code] [i]不[/i] 一样,后者是向 0 取" +"整。" + +msgid "" +"Returns the floating-point remainder of [param x] divided by [param y], " +"keeping the sign of [param x].\n" +"[codeblock]\n" +"var remainder = fmod(7, 5.5) # remainder is 1.5\n" +"[/codeblock]\n" +"For the integer remainder operation, use the [code]%[/code] operator." +msgstr "" +"返回 [param x] 除以 [param y] 的浮点型余数,符号与 [param x]一致。\n" +"[codeblock]\n" +"var remainder = fmod(7, 5.5) # remainder 是 1.5\n" +"[/codeblock]\n" +"对于整数取余运算,请使用 [code]%[/code] 运算符。" + +msgid "" +"Returns the floating-point modulus of [param x] divided by [param y], " +"wrapping equally in positive and negative.\n" +"[codeblock]\n" +"print(\" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))\")\n" +"for i in 7:\n" +" var x = i * 0.5 - 1.5\n" +" print(\"%4.1f %4.1f | %4.1f\" % [x, fmod(x, 1.5), fposmod(x, " +"1.5)])\n" +"[/codeblock]\n" +"Produces:\n" +"[codeblock]\n" +" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))\n" +"-1.5 -0.0 | 0.0\n" +"-1.0 -1.0 | 0.5\n" +"-0.5 -0.5 | 1.0\n" +" 0.0 0.0 | 0.0\n" +" 0.5 0.5 | 0.5\n" +" 1.0 1.0 | 1.0\n" +" 1.5 0.0 | 0.0\n" +"[/codeblock]" +msgstr "" +"返回 [param x] 除以 [param y] 的浮点模数,正负轴均等包裹。\n" +"[codeblock]\n" +"print(\" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))\")\n" +"for i in 7:\n" +" var x = i * 0.5 - 1.5\n" +" print(\"%4.1f %4.1f | %4.1f\" % [x, fmod(x, 1.5), fposmod(x, " +"1.5)])\n" +"[/codeblock]\n" +"输出:\n" +"[codeblock]\n" +" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))\n" +"-1.5 -0.0 | 0.0\n" +"-1.0 -1.0 | 0.5\n" +"-0.5 -0.5 | 1.0\n" +" 0.0 0.0 | 0.0\n" +" 0.5 0.5 | 0.5\n" +" 1.0 1.0 | 1.0\n" +" 1.5 0.0 | 0.0\n" +"[/codeblock]" + +msgid "" +"Returns the integer hash of the passed [param variable].\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(hash(\"a\")) # Prints 177670\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(GD.Hash(\"a\")); // Prints 177670\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回传入的 [param variable] 的整数哈希值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"print(hash(\"a\")) # 输出 177670\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Print(GD.Hash(\"a\")); // 输出 177670\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the [Object] that corresponds to [param instance_id]. All Objects " +"have a unique instance ID. See also [method Object.get_instance_id].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var foo = \"bar\"\n" +"\n" +"func _ready():\n" +" var id = get_instance_id()\n" +" var inst = instance_from_id(id)\n" +" print(inst.foo) # Prints bar\n" +"[/gdscript]\n" +"[csharp]\n" +"public partial class MyNode : Node\n" +"{\n" +" public string Foo { get; set; } = \"bar\";\n" +"\n" +" public override void _Ready()\n" +" {\n" +" ulong id = GetInstanceId();\n" +" var inst = (MyNode)InstanceFromId(Id);\n" +" GD.Print(inst.Foo); // Prints bar\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回 [param instance_id] 所对应的 [Object]。所有对象都有唯一的实例 ID。参见 " +"[method Object.get_instance_id]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var foo = \"bar\"\n" +"\n" +"func _ready():\n" +" var id = get_instance_id()\n" +" var inst = instance_from_id(id)\n" +" print(inst.foo) # 输出 bar\n" +"[/gdscript]\n" +"[csharp]\n" +"public partial class MyNode : Node\n" +"{\n" +" public string Foo { get; set; } = \"bar\";\n" +"\n" +" public override void _Ready()\n" +" {\n" +" ulong id = GetInstanceId();\n" +" var inst = (MyNode)InstanceFromId(Id);\n" +" GD.Print(inst.Foo); // 输出 bar\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns an interpolation or extrapolation factor considering the range " +"specified in [param from] and [param to], and the interpolated value " +"specified in [param weight]. The returned value will be between [code]0.0[/" +"code] and [code]1.0[/code] if [param weight] is between [param from] and " +"[param to] (inclusive). If [param weight] is located outside this range, " +"then an extrapolation factor will be returned (return value lower than " +"[code]0.0[/code] or greater than [code]1.0[/code]). Use [method clamp] on " +"the result of [method inverse_lerp] if this is not desired.\n" +"[codeblock]\n" +"# The interpolation ratio in the `lerp()` call below is 0.75.\n" +"var middle = lerp(20, 30, 0.75)\n" +"# middle is now 27.5.\n" +"\n" +"# Now, we pretend to have forgotten the original ratio and want to get it " +"back.\n" +"var ratio = inverse_lerp(20, 30, 27.5)\n" +"# ratio is now 0.75.\n" +"[/codeblock]\n" +"See also [method lerp], which performs the reverse of this operation, and " +"[method remap] to map a continuous series of values to another." +msgstr "" +"返回插值或外推的因子。范围用 [param from] 和 [param to]指定,插值后的值由 " +"[param weight] 指定。如果 [param weight] 在 [param from] 和 [param to] 之间" +"(包含),那么返回的值在 [code]0.0[/code] 和 [code]1.0[/code] 之间。如果 " +"[param weight] 在该范围之外,则返回的是外推因子(返回值小于 [code]0.0[/code] " +"或大于 [code]1.0[/code])。如果不希望这样,请对 [method inverse_lerp] 的结果" +"使用 [method clamp]。\n" +"[codeblock]\n" +"# 下面的 `lerp()` 调用时的插值比例是 0.75。\n" +"var middle = lerp(20, 30, 0.75)\n" +"# middle 现在是 27.5。\n" +"\n" +"# 现在,我们假装忘记了原来的比例,想要找到是多少。\n" +"var ratio = inverse_lerp(20, 30, 27.5)\n" +"# ratio 现在是 0.75。\n" +"[/codeblock]\n" +"另见 [method lerp],它执行本操作的逆操作;以及 [method remap],将一系列连续的" +"值映射到另一个值。" + +msgid "" +"Returns [code]true[/code] if [param a] and [param b] are approximately equal " +"to each other.\n" +"Here, \"approximately equal\" means that [param a] and [param b] are within " +"a small internal epsilon of each other, which scales with the magnitude of " +"the numbers.\n" +"Infinity values of the same sign are considered equal." +msgstr "" +"如果 [param a] 和 [param b] 彼此近似相等,则返回 [code]true[/code]。\n" +"这里,“近似相等”意味着 [param a] 和 [param b] 在彼此的一个小的内部 epsilon " +"内,该 epsilon 与数字的大小成比例。\n" +"相同符号的无穷大值被认为是相等的。" + msgid "" "Returns whether [param x] is a finite value, i.e. it is not [constant " "@GDScript.NAN], positive infinity, or negative infinity." @@ -1227,23282 +1719,44150 @@ msgid "" "invalid) value." msgstr "如果 [param x] 是 NaN(“非数字”或无效)值,则返回 [code]true[/code] 。" +msgid "" +"Returns [code]true[/code], for value types, if [param a] and [param b] share " +"the same value. Returns [code]true[/code], for reference types, if the " +"references of [param a] and [param b] are the same.\n" +"[codeblock]\n" +"# Vector2 is a value type\n" +"var vec2_a = Vector2(0, 0)\n" +"var vec2_b = Vector2(0, 0)\n" +"var vec2_c = Vector2(1, 1)\n" +"is_same(vec2_a, vec2_a) # true\n" +"is_same(vec2_a, vec2_b) # true\n" +"is_same(vec2_a, vec2_c) # false\n" +"\n" +"# Array is a reference type\n" +"var arr_a = []\n" +"var arr_b = []\n" +"is_same(arr_a, arr_a) # true\n" +"is_same(arr_a, arr_b) # false\n" +"[/codeblock]\n" +"These are [Variant] value types: [code]null[/code], [bool], [int], [float], " +"[String], [StringName], [Vector2], [Vector2i], [Vector3], [Vector3i], " +"[Vector4], [Vector4i], [Rect2], [Rect2i], [Transform2D], [Transform3D], " +"[Plane], [Quaternion], [AABB], [Basis], [Projection], [Color], [NodePath], " +"[RID], [Callable] and [Signal].\n" +"These are [Variant] reference types: [Object], [Dictionary], [Array], " +"[PackedByteArray], [PackedInt32Array], [PackedInt64Array], " +"[PackedFloat32Array], [PackedFloat64Array], [PackedStringArray], " +"[PackedVector2Array], [PackedVector3Array] and [PackedColorArray]." +msgstr "" +"当 [param a] 和 [param b] 为值类型时,如果他们相同,那么返回 [code]true[/" +"code]。当 [param a] 和 [param b] 为引用类型时,如果它们的引用对象相同,那么返" +"回 [code]true[/code]。\n" +"[codeblock]\n" +"# Vector2 is a value type\n" +"var vec2_a = Vector2(0, 0)\n" +"var vec2_b = Vector2(0, 0)\n" +"var vec2_c = Vector2(1, 1)\n" +"is_same(vec2_a, vec2_a) # true\n" +"is_same(vec2_a, vec2_b) # true\n" +"is_same(vec2_a, vec2_c) # false\n" +"\n" +"# Array is a reference type\n" +"var arr_a = []\n" +"var arr_b = []\n" +"is_same(arr_a, arr_a) # true\n" +"is_same(arr_a, arr_b) # false\n" +"[/codeblock]\n" +"[Varient] 值类型有:[code]null[/code],[bool],[int],[float],[String]," +"[StringName],[Vector2],[Vector2i],[Vector3],[Vector3i],[Vector4]," +"[Vector4i],[Rect2],[Rect2i],[Transform2D],[Transform3D],[Plane]," +"[Quaternion],[AABB],[Basis],[Projection],[Color],[NodePath],[RID]," +"[Callable] 和 [Signal]。\n" +"[Varient] 引用类型有:[Object],[Dictionary],[Array],[PackedByteArray]," +"[PackedInt32Array],[PackedInt64Array],[PackedFloat32Array]," +"[PackedFloat64Array],[PackedStringArray],[PackedVector2Array]," +"[PackedVector3Array] 和 [PackedColorArray]。" + +msgid "" +"Returns [code]true[/code] if [param x] is zero or almost zero. The " +"comparison is done using a tolerance calculation with a small internal " +"epsilon.\n" +"This function is faster than using [method is_equal_approx] with one value " +"as zero." +msgstr "" +"如果 [param x] 为零或几乎为零,则返回 [code]true[/code]。比较是使用具有小内" +"部 epsilon 的公差计算的。\n" +"该函数比使用一个值为零的 [method is_equal_approx] 更快。" + +msgid "" +"Linearly interpolates between two values by the factor defined in [param " +"weight]. To perform interpolation, [param weight] should be between " +"[code]0.0[/code] and [code]1.0[/code] (inclusive). However, values outside " +"this range are allowed and can be used to perform [i]extrapolation[/i]. If " +"this is not desired, use [method clamp] on the result of this function.\n" +"Both [param from] and [param to] must be the same type. Supported types: " +"[int], [float], [Vector2], [Vector3], [Vector4], [Color], [Quaternion], " +"[Basis].\n" +"[codeblock]\n" +"lerp(0, 4, 0.75) # Returns 3.0\n" +"[/codeblock]\n" +"See also [method inverse_lerp] which performs the reverse of this operation. " +"To perform eased interpolation with [method lerp], combine it with [method " +"ease] or [method smoothstep]. See also [method remap] to map a continuous " +"series of values to another.\n" +"[b]Note:[/b] For better type safety, use [method lerpf], [method Vector2." +"lerp], [method Vector3.lerp], [method Vector4.lerp], [method Color.lerp], " +"[method Quaternion.slerp] or [method Basis.slerp]." +msgstr "" +"通过 [param weight] 中定义的因子在两个值之间进行线性插值。要执行插值,[param " +"weight] 应介于 [code]0.0[/code] 和 [code]1.0[/code] 之间(包含)。但是,超出" +"此范围的值也是允许的,并可用于执行[i]外推 [/i]。如果不需要,请在该函数的结果" +"上使用 [method clamp]。\n" +"[param from] 和 [param to] 必须是同一类型。支持的类型:[int]、[float]、" +"[Vector2]、[Vector3]、[Vector4]、[Color]、[Quaternion]、[Basis]。\n" +"[codeblock]\n" +"lerp(0, 4, 0.75) # 返回 3.0\n" +"[/codeblock]\n" +"另请参阅执行本操作的逆操作的 [method inverse_lerp]。要使用 [method lerp] 执行" +"缓动插值,请将其与 [method ease] 或 [method smoothstep] 结合使用。另见 " +"[method remap],可将一系列连续的值映射到另一个值。\n" +"[b]注意:[/b]为了更好的类型安全,使用 [method lerpf]、[method Vector2.lerp]、" +"[method Vector3.lerp]、[method Vector4.lerp]、[method Color.lerp]、[method " +"Quaternion.slerp] 或 [method Basis.slerp]。" + +msgid "" +"Linearly interpolates between two angles (in radians) by a [param weight] " +"value between 0.0 and 1.0.\n" +"Similar to [method lerp], but interpolates correctly when the angles wrap " +"around [constant @GDScript.TAU]. To perform eased interpolation with [method " +"lerp_angle], combine it with [method ease] or [method smoothstep].\n" +"[codeblock]\n" +"extends Sprite\n" +"var elapsed = 0.0\n" +"func _process(delta):\n" +" var min_angle = deg_to_rad(0.0)\n" +" var max_angle = deg_to_rad(90.0)\n" +" rotation = lerp_angle(min_angle, max_angle, elapsed)\n" +" elapsed += delta\n" +"[/codeblock]\n" +"[b]Note:[/b] This function lerps through the shortest path between [param " +"from] and [param to]. However, when these two angles are approximately " +"[code]PI + k * TAU[/code] apart for any integer [code]k[/code], it's not " +"obvious which way they lerp due to floating-point precision errors. For " +"example, [code]lerp_angle(0, PI, weight)[/code] lerps counter-clockwise, " +"while [code]lerp_angle(0, PI + 5 * TAU, weight)[/code] lerps clockwise." +msgstr "" +"通过 0.0 和 1.0 之间的 [param weight] 值,在两个角度(以弧度为单位)之间进行" +"线性插值。\n" +"类似于 [method lerp],但当角度环绕 [constant @GDScript.TAU] 时会正确插值。要" +"使用 [method lerp_angle] 执行缓动插值,请将其与 [method ease] 或 [method " +"smoothstep] 结合使用。\n" +"[codeblock]\n" +"extends Sprite\n" +"var elapsed = 0.0\n" +"func _process(delta):\n" +" var min_angle = deg_to_rad(0.0)\n" +" var max_angle = deg_to_rad(90.0)\n" +" rotation = lerp_angle(min_angle, max_angle, elapsed)\n" +" elapsed += delta\n" +"[/codeblock]\n" +"[b]注意:[/b]该函数通过 [param from] 和 [param to] 之间的最短路径进行插值。然" +"而,当这两个角度相距大致 [code]PI + k * TAU[/code] 其中 [code]k[/code] 为任意" +"整数时,由于浮点数精度误差的缘故,要对插值的方向进行判断是很难的。例如," +"[code]lerp_angle(0, PI, weight)[/code] 会逆时针插值,而 [code]lerp_angle(0, " +"PI + 5 * TAU, weight)[/code] 则会顺时针插值。" + +msgid "" +"Linearly interpolates between two values by the factor defined in [param " +"weight]. To perform interpolation, [param weight] should be between " +"[code]0.0[/code] and [code]1.0[/code] (inclusive). However, values outside " +"this range are allowed and can be used to perform [i]extrapolation[/i]. If " +"this is not desired, use [method clampf] on the result of this function.\n" +"[codeblock]\n" +"lerp(0, 4, 0.75) # Returns 3.0\n" +"[/codeblock]\n" +"See also [method inverse_lerp] which performs the reverse of this operation. " +"To perform eased interpolation with [method lerp], combine it with [method " +"ease] or [method smoothstep]." +msgstr "" +"通过 [param weight] 中定义的因子在两个值之间进行线性插值。要执行插值,[param " +"weight] 应介于 [code]0.0[/code] 和 [code]1.0[/code] 之间(包含)。但是,超出" +"此范围的值是允许的,并可用于执行 [i]外推 [/i]。如果不需要,请对此函数的结果使" +"用 [method clampf]。\n" +"[codeblock]\n" +"lerp(0, 4, 0.75) # 返回 3.0\n" +"[/codeblock]\n" +"另请参阅执行本操作的逆运算的 [method inverse_lerp]。要使用 [method lerp] 执行" +"缓动插值,请将其与 [method ease] 或 [method smoothstep] 结合使用。" + +msgid "" +"Converts from linear energy to decibels (audio). This can be used to " +"implement volume sliders that behave as expected (since volume isn't " +"linear).\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"# \"Slider\" refers to a node that inherits Range such as HSlider or " +"VSlider.\n" +"# Its range must be configured to go from 0 to 1.\n" +"# Change the bus name if you'd like to change the volume of a specific bus " +"only.\n" +"AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), " +"linear_to_db($Slider.value))\n" +"[/codeblock]" +msgstr "" +"从线性能量转换为分贝(音频)。这可用于实现按预期运行的音量滑块(因为音量不是" +"线性的)。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"# “Slider”引用的是 HSlider、VSlider 等继承自 Range 的节点。\n" +"# 必须将其范围配置为 0 到 1。\n" +"# 如果只想修改特定总线的音量,请修改总线名称。\n" +"AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), " +"linear_to_db($Slider.value))\n" +"[/codeblock]" + +msgid "" +"Returns the natural logarithm of [param x]. This is the amount of time " +"needed to reach a certain level of continuous growth.\n" +"[b]Note:[/b] This is not the same as the \"log\" function on most " +"calculators, which uses a base 10 logarithm.\n" +"[codeblock]\n" +"log(10) # Returns 2.302585\n" +"[/codeblock]\n" +"[b]Note:[/b] The logarithm of [code]0[/code] returns [code]-inf[/code], " +"while negative values return [code]-nan[/code]." +msgstr "" +"返回 [param x] 的自然对数。这是持续增长到一定程度所需的时间。\n" +"[b]注意:[/b]这个函数与大多数计算器上的对数“log”函数不同,他们适用的底数是 " +"10。\n" +"[codeblock]\n" +"log(10) # 返回 2.302585\n" +"[/codeblock]\n" +"[b]注意:[/b][code]0[/code] 的对数返回 [code]-inf[/code],负值返回 [code]-" +"nan[/code]。" + +msgid "" +"Returns the maximum of the given values. This function can take any number " +"of arguments.\n" +"[codeblock]\n" +"max(1, 7, 3, -6, 5) # Returns 7\n" +"[/codeblock]" +msgstr "" +"返回给定值的最大值。这个函数可以接受任意数量的参数。\n" +"[codeblock]\n" +"max(1, 7, 3, -6, 5) # 返回 7\n" +"[/codeblock]" + +msgid "" +"Returns the maximum of two [float] values.\n" +"[codeblock]\n" +"maxf(3.6, 24) # Returns 24.0\n" +"maxf(-3.99, -4) # Returns -3.99\n" +"[/codeblock]" +msgstr "" +"返回两个 [float] 值中的最大值。\n" +"[codeblock]\n" +"maxf(3.6, 24) # 返回 24.0\n" +"maxf(-3.99, -4) # 返回 -3.99\n" +"[/codeblock]" + +msgid "" +"Returns the maximum of two [int] values.\n" +"[codeblock]\n" +"maxi(1, 2) # Returns 2\n" +"maxi(-3, -4) # Returns -3\n" +"[/codeblock]" +msgstr "" +"返回两个 [int] 值中的最大值。\n" +"[codeblock]\n" +"maxi(1, 2) # 返回 2\n" +"maxi(-3, -4) # 返回 -3\n" +"[/codeblock]" + +msgid "" +"Returns the minimum of the given values. This function can take any number " +"of arguments.\n" +"[codeblock]\n" +"min(1, 7, 3, -6, 5) # Returns -6\n" +"[/codeblock]" +msgstr "" +"返回给定值的最小值。这个函数可以接受任意数量的参数。\n" +"[codeblock]\n" +"min(1, 7, 3, -6, 5) # 返回 -6\n" +"[/codeblock]" + +msgid "" +"Returns the minimum of two [float] values.\n" +"[codeblock]\n" +"minf(3.6, 24) # Returns 3.6\n" +"minf(-3.99, -4) # Returns -4.0\n" +"[/codeblock]" +msgstr "" +"返回两个 [float] 值中的最小值。\n" +"[codeblock]\n" +"minf(3.6, 24) # 返回 3.6\n" +"minf(-3.99, -4) # 返回 -4.0\n" +"[/codeblock]" + +msgid "" +"Returns the minimum of two [int] values.\n" +"[codeblock]\n" +"mini(1, 2) # Returns 1\n" +"mini(-3, -4) # Returns -4\n" +"[/codeblock]" +msgstr "" +"返回两个 [int] 值中的最小值。\n" +"[codeblock]\n" +"mini(1, 2) # 返回 1\n" +"mini(-3, -4) # 返回 -4\n" +"[/codeblock]" + +msgid "" +"Moves [param from] toward [param to] by the [param delta] value.\n" +"Use a negative [param delta] value to move away.\n" +"[codeblock]\n" +"move_toward(5, 10, 4) # Returns 9\n" +"move_toward(10, 5, 4) # Returns 6\n" +"move_toward(10, 5, -1.5) # Returns 11.5\n" +"[/codeblock]" +msgstr "" +"将 [param from] 向 [param to] 移动,移动的长度是 [param delta]。\n" +"使用负的 [param delta] 值则向远离的方向移动。\n" +"[codeblock]\n" +"move_toward(5, 10, 4) # 返回 9\n" +"move_toward(10, 5, 4) # 返回 6\n" +"move_toward(10, 5, -1.5) # 返回 11.5\n" +"[/codeblock]" + +msgid "" +"Returns the nearest equal or larger power of 2 for the integer [param " +"value].\n" +"In other words, returns the smallest value [code]a[/code] where [code]a = " +"pow(2, n)[/code] such that [code]value <= a[/code] for some non-negative " +"integer [code]n[/code].\n" +"[codeblock]\n" +"nearest_po2(3) # Returns 4\n" +"nearest_po2(4) # Returns 4\n" +"nearest_po2(5) # Returns 8\n" +"\n" +"nearest_po2(0) # Returns 0 (this may not be expected)\n" +"nearest_po2(-1) # Returns 0 (this may not be expected)\n" +"[/codeblock]\n" +"[b]Warning:[/b] Due to the way it is implemented, this function returns " +"[code]0[/code] rather than [code]1[/code] for negative values of [param " +"value] (in reality, 1 is the smallest integer power of 2)." +msgstr "" +"返回最接近且不小于整数 [param value] 的 2 的幂。\n" +"换句话说,返回最小值 [code]a[/code],其中 [code]a = pow(2, n)[/code],某些非" +"负整数 [code]n[/code] 使得值 [code]value <= a[/code]。\n" +"[codeblock]\n" +"nearest_po2(3) # 返回 4\n" +"nearest_po2(4) # 返回 4\n" +"nearest_po2(5) # 返回 8\n" +"\n" +"nearest_po2(0) # 返回 0(可能出乎意料)\n" +"nearest_po2(-1) # 返回 0(可能出乎意料)\n" +"[/codeblock]\n" +"[b]警告:[/b]由于其实现方式,此函数会对非正数的 [param value] 返回 [code]0[/" +"code] 而不是 [code]1[/code] (实际上 1 是 2 的最小整数幂)。" + +msgid "" +"Wraps [param value] between [code]0[/code] and the [param length]. If the " +"limit is reached, the next value the function returns is decreased to the " +"[code]0[/code] side or increased to the [param length] side (like a triangle " +"wave). If [param length] is less than zero, it becomes positive.\n" +"[codeblock]\n" +"pingpong(-3.0, 3.0) # Returns 3.0\n" +"pingpong(-2.0, 3.0) # Returns 2.0\n" +"pingpong(-1.0, 3.0) # Returns 1.0\n" +"pingpong(0.0, 3.0) # Returns 0.0\n" +"pingpong(1.0, 3.0) # Returns 1.0\n" +"pingpong(2.0, 3.0) # Returns 2.0\n" +"pingpong(3.0, 3.0) # Returns 3.0\n" +"pingpong(4.0, 3.0) # Returns 2.0\n" +"pingpong(5.0, 3.0) # Returns 1.0\n" +"pingpong(6.0, 3.0) # Returns 0.0\n" +"[/codeblock]" +msgstr "" +"将 [param value] 包裹在 [code]0[/code] 和 [param length] 之间。如果达到限制," +"函数返回的下一个值将减少到 [code]0[/code] 侧或增加到 [param length] 侧(像三" +"角波)。如果 [param length] 小于零,则变为正数。\n" +"[codeblock]\n" +"pingpong(-3.0, 3.0) # 返回 3.0\n" +"pingpong(-2.0, 3.0) # 返回 2.0\n" +"pingpong(-1.0, 3.0) # 返回 1.0\n" +"pingpong(0.0, 3.0) # 返回 0.0\n" +"pingpong(1.0, 3.0) # 返回 1.0\n" +"pingpong(2.0, 3.0) # 返回 2.0\n" +"pingpong(3.0, 3.0) # 返回 3.0\n" +"pingpong(4.0, 3.0) # 返回 2.0\n" +"pingpong(5.0, 3.0) # 返回 1.0\n" +"pingpong(6.0, 3.0) # 返回 0.0\n" +"[/codeblock]" + +msgid "" +"Returns the integer modulus of [param x] divided by [param y] that wraps " +"equally in positive and negative.\n" +"[codeblock]\n" +"print(\"#(i) (i % 3) (posmod(i, 3))\")\n" +"for i in range(-3, 4):\n" +" print(\"%2d %2d | %2d\" % [i, i % 3, posmod(i, 3)])\n" +"[/codeblock]\n" +"Produces:\n" +"[codeblock]\n" +"(i) (i % 3) (posmod(i, 3))\n" +"-3 0 | 0\n" +"-2 -2 | 1\n" +"-1 -1 | 2\n" +" 0 0 | 0\n" +" 1 1 | 1\n" +" 2 2 | 2\n" +" 3 0 | 0\n" +"[/codeblock]" +msgstr "" +"返回 [param x] 除以 [param y] 的整数模数,对正负数进行一致的循环。\n" +"[codeblock]\n" +"print(\"#(i) (i % 3) (posmod(i, 3))\")\n" +"for i in range(-3, 4):\n" +" print(\"%2d %2d | %2d\" % [i, i % 3, posmod(i, 3)])\n" +"[/codeblock]\n" +"结果:\n" +"[codeblock]\n" +"(i) (i % 3) (posmod(i, 3))\n" +"-3 0 | 0\n" +"-2 -2 | 1\n" +"-1 -1 | 2\n" +" 0 0 | 0\n" +" 1 1 | 1\n" +" 2 2 | 2\n" +" 3 0 | 0\n" +"[/codeblock]" + +msgid "" +"Converts one or more arguments of any type to string in the best way " +"possible and prints them to the console.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = [1, 2, 3]\n" +"print(\"a\", \"b\", a) # Prints ab[1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Array { 1, 2, 3 };\n" +"GD.Print(\"a\", \"b\", a); // Prints ab[1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to " +"print error and warning messages instead of [method print] or [method " +"print_rich]. This distinguishes them from print messages used for debugging " +"purposes, while also displaying a stack trace when an error or warning is " +"printed." +msgstr "" +"以尽可能最佳的方式将一个或多个任意类型的参数转换为字符串,并将其打印到控制" +"台。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = [1, 2, 3]\n" +"print(\"a\", \"b\", a) # 输出 ab[1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Array { 1, 2, 3 };\n" +"GD.Print(\"a\", \"b\", a); // 输出 ab[1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]请考虑使用 [method push_error] 和 [method push_warning] 来打印错" +"误和警告消息,而不是 [method print] 或 [method print_rich]。这将它们与用于调" +"试目的的打印消息区分开来,同时还会在打印错误或警告时显示堆栈跟踪。" + +msgid "" +"Converts one or more arguments of any type to string in the best way " +"possible and prints them to the console. The following BBCode tags are " +"supported: b, i, u, s, indent, code, url, center, right, color, bgcolor, " +"fgcolor. Color tags only support named colors such as [code]red[/code], " +"[i]not[/i] hexadecimal color codes. Unsupported tags will be left as-is in " +"standard output.\n" +"When printing to standard output, the supported subset of BBCode is " +"converted to ANSI escape codes for the terminal emulator to display. " +"Displaying ANSI escape codes is currently only supported on Linux and macOS. " +"Support for ANSI escape codes may vary across terminal emulators, especially " +"for italic and strikethrough.\n" +"[codeblocks]\n" +"[gdscript]\n" +"print_rich(\"[code][b]Hello world![/b][/code]\") # Prints out: [b]Hello " +"world![/b]\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRich(\"[code][b]Hello world![/b][/code]\"); // Prints out: [b]Hello " +"world![/b]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to " +"print error and warning messages instead of [method print] or [method " +"print_rich]. This distinguishes them from print messages used for debugging " +"purposes, while also displaying a stack trace when an error or warning is " +"printed." +msgstr "" +"以尽可能最佳的方式将一个或多个任意类型的参数转换为字符串,并将其打印到控制" +"台。支持以下 BBCode 标签:b、i、u、s、indent、code、url、center、right、" +"color、bgcolor、fgcolor。颜色标签仅支持命名颜色,例如 [code]red[/code]、[i]不" +"支持[/i] 十六进制颜色代码。不支持的标签将在标准输出中保持原样。\n" +"当打印到标准输出时,支持的 BBCode 子集被转换为 ANSI 转义码以供终端仿真器显" +"示。目前仅 Linux 和 macOS 支持显示 ANSI 转义码。对 ANSI 转义码的支持可能因终" +"端仿真器而异,尤其是斜体和删除线。\n" +"[codeblocks]\n" +"[gdscript]\n" +"print_rich(\"[code][b]Hello world![/b][/code]\") # 输出:[b]Hello world![/" +"b]\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRich(\"[code][b]Hello world![/b][/code]\"); // 输出:[b]Hello world!" +"[/b]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]请考虑使用 [method push_error] 和 [method push_warning] 来打印错" +"误和警告消息,而不是 [method print] 或 [method print_rich]。这将它们与用于调" +"试目的的打印消息区分开来,同时还会在打印错误或警告时显示堆栈跟踪。" + +msgid "" +"If verbose mode is enabled ([method OS.is_stdout_verbose] returning " +"[code]true[/code]), converts one or more arguments of any type to string in " +"the best way possible and prints them to the console." +msgstr "" +"如果启用了详细模式([method OS.is_stdout_verbose] 返回 [code]true[/code])," +"则尽可能以最佳方式将一个或多个任意类型的参数转换为字符串,并将它们打印到控制" +"台。" + +msgid "" +"Prints one or more arguments to strings in the best way possible to standard " +"error line.\n" +"[codeblocks]\n" +"[gdscript]\n" +"printerr(\"prints to stderr\")\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintErr(\"prints to stderr\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"以尽可能最佳的方式将一个或多个参数作为字符串输出到标准错误行。\n" +"[codeblocks]\n" +"[gdscript]\n" +"printerr(\"prints to stderr\")\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintErr(\"prints to stderr\");\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Prints one or more arguments to strings in the best way possible to the OS " +"terminal. Unlike [method print], no newline is automatically added at the " +"end.\n" +"[codeblocks]\n" +"[gdscript]\n" +"printraw(\"A\")\n" +"printraw(\"B\")\n" +"printraw(\"C\")\n" +"# Prints ABC to terminal\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRaw(\"A\");\n" +"GD.PrintRaw(\"B\");\n" +"GD.PrintRaw(\"C\");\n" +"// Prints ABC to terminal\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"以尽可能最佳的方式将一个或多个参数作为字符串输出到 OS 终端。与 [method " +"print] 不同的是,最后不会自动添加换行符。\n" +"[codeblocks]\n" +"[gdscript]\n" +"printraw(\"A\")\n" +"printraw(\"B\")\n" +"printraw(\"C\")\n" +"# 输出 ABC 到终端\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRaw(\"A\");\n" +"GD.PrintRaw(\"B\");\n" +"GD.PrintRaw(\"C\");\n" +"// 输出 ABC 到终端\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Prints one or more arguments to the console with a space between each " +"argument.\n" +"[codeblocks]\n" +"[gdscript]\n" +"prints(\"A\", \"B\", \"C\") # Prints A B C\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintS(\"A\", \"B\", \"C\"); // Prints A B C\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将一个或多个参数打印到控制台,每个参数之间有一个空格。\n" +"[codeblocks]\n" +"[gdscript]\n" +"prints(\"A\", \"B\", \"C\") # 输出 A B C\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintS(\"A\", \"B\", \"C\"); // 输出 A B C\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Prints one or more arguments to the console with a tab between each " +"argument.\n" +"[codeblocks]\n" +"[gdscript]\n" +"printt(\"A\", \"B\", \"C\") # Prints A B C\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintT(\"A\", \"B\", \"C\"); // Prints A B C\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将一个或多个参数打印到控制台,每个参数之间有一个制表符。\n" +"[codeblocks]\n" +"[gdscript]\n" +"printt(\"A\", \"B\", \"C\") # 输出 A B C\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintT(\"A\", \"B\", \"C\"); // 输出 A B C\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Pushes an error message to Godot's built-in debugger and to the OS " +"terminal.\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_error(\"test error\") # Prints \"test error\" to debugger and terminal " +"as error call\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushError(\"test error\"); // Prints \"test error\" to debugger and " +"terminal as error call\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This function does not pause project execution. To print an " +"error message and pause project execution in debug builds, use " +"[code]assert(false, \"test error\")[/code] instead." +msgstr "" +"将错误消息推送到 Godot 的内置调试器和 OS 终端。\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_error(\"test error\") # 向调试器和终端打印 “test error” 作为错误调用\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushError(\"test error\"); // 向调试器和终端打印 “test error” 作为错误调" +"用\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]该函数不会暂停项目执行。要在调试版本中打印错误消息并暂停项目执" +"行,请改用 [code]assert(false, \"test error\")[/code]。" + +msgid "" +"Pushes a warning message to Godot's built-in debugger and to the OS " +"terminal.\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_warning(\"test warning\") # Prints \"test warning\" to debugger and " +"terminal as warning call\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushWarning(\"test warning\"); // Prints \"test warning\" to debugger and " +"terminal as warning call\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将警告消息推送到 Godot 的内置调试器和 OS 终端。\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_warning(\"test warning\") # 以警告的形式向调试器和终端输出 “test " +"warning”\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushWarning(\"test warning\"); // 以警告的形式向调试器和终端输出 “test " +"warning”\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Converts an angle expressed in radians to degrees.\n" +"[codeblock]\n" +"rad_to_deg(0.523599) # Returns 30\n" +"rad_to_deg(PI) # Returns 180\n" +"rad_to_deg(PI * 2) # Returns 360\n" +"[/codeblock]" +msgstr "" +"将以弧度表示的角度转换为度。\n" +"[codeblock]\n" +"rad_to_deg(0.523599) # 返回 30\n" +"rad_to_deg(PI) # 返回 180\n" +"rad_to_deg(PI * 2) # 返回 360\n" +"[/codeblock]" + +msgid "" +"Given a [param seed], returns a [PackedInt64Array] of size [code]2[/code], " +"where its first element is the randomized [int] value, and the second " +"element is the same as [param seed]. Passing the same [param seed] " +"consistently returns the same array.\n" +"[b]Note:[/b] \"Seed\" here refers to the internal state of the pseudo random " +"number generator, currently implemented as a 64 bit integer.\n" +"[codeblock]\n" +"var a = rand_from_seed(4)\n" +"\n" +"print(a[0])\t# Prints 2879024997\n" +"print(a[1])\t# Prints 4\n" +"[/codeblock]" +msgstr "" +"给定一个 [param seed],返回一个大小为 [code]2[/code] 的 [PackedInt64Array]," +"其中第一个元素是随机化的 [int] 值,第二个元素与 [param seed] 相同。传入相同" +"的 [param seed] 会一致地返回相同的数组。\n" +"[b]注意:[/b]这里的“种子”是指伪随机数发生器的内部状态,目前实现为一个 64 位整" +"数。\n" +"[codeblock]\n" +"var a = rand_from_seed(4)\n" +"\n" +"print(a[0])\t# 输出 2879024997\n" +"print(a[1])\t# 输出 4\n" +"[/codeblock]" + +msgid "" +"Returns a random floating point value between [code]0.0[/code] and " +"[code]1.0[/code] (inclusive).\n" +"[codeblocks]\n" +"[gdscript]\n" +"randf() # Returns e.g. 0.375671\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Randf(); // Returns e.g. 0.375671\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回 [code]0.0[/code] 和 [code]1.0[/code](包含)之间的随机浮点值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"randf() # 返回示例 0.375671\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Randf(); // 返回示例 0.375671\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a random floating point value between [param from] and [param to] " +"(inclusive).\n" +"[codeblocks]\n" +"[gdscript]\n" +"randf_range(0, 20.5) # Returns e.g. 7.45315\n" +"randf_range(-10, 10) # Returns e.g. -3.844535\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.RandRange(0.0, 20.5); // Returns e.g. 7.45315\n" +"GD.RandRange(-10.0, 10.0); // Returns e.g. -3.844535\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回 [param from] 和 [param to](包含)之间的随机浮点值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"randf_range(0, 20.5) # 返回示例 7.45315\n" +"randf_range(-10, 10) # 返回示例 -3.844535\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.RandRange(0.0, 20.5); // 返回示例 7.45315\n" +"GD.RandRange(-10.0, 10.0); // 返回示例 -3.844535\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a normally-distributed pseudo-random floating point value using Box-" +"Muller transform with the specified [param mean] and a standard [param " +"deviation]. This is also called Gaussian distribution." +msgstr "" +"返回一个正态分布的伪随机浮点值,该分布使用具有指定 [param mean] 和标准 " +"[param deviation] 的 Box-Muller 变换。这也被称为高斯分布。" + +msgid "" +"Returns a random unsigned 32-bit integer. Use remainder to obtain a random " +"value in the interval [code][0, N - 1][/code] (where N is smaller than " +"2^32).\n" +"[codeblocks]\n" +"[gdscript]\n" +"randi() # Returns random integer between 0 and 2^32 - 1\n" +"randi() % 20 # Returns random integer between 0 and 19\n" +"randi() % 100 # Returns random integer between 0 and 99\n" +"randi() % 100 + 1 # Returns random integer between 1 and 100\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Randi(); // Returns random integer between 0 and 2^32 - 1\n" +"GD.Randi() % 20; // Returns random integer between 0 and 19\n" +"GD.Randi() % 100; // Returns random integer between 0 and 99\n" +"GD.Randi() % 100 + 1; // Returns random integer between 1 and 100\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回一个随机的无符号 32 位整数。使用余数获得区间 [code][0, N - 1][/code] (其" +"中 N 小于 2^32)的随机值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"randi() # 返回介于 0 到 2^32 - 1 之间的随机整数\n" +"randi() % 20 # 返回介于 0 到 19之间的随机整数\n" +"randi() % 100 # 返回介于 0 到 99 之间的随机整数\n" +"randi() % 100 + 1 # 返回介于 1 到 100 之间的随机整数\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Randi(); // 返回介于 0 到 2^32 - 1 之间的随机整数\n" +"GD.Randi() % 20; // 返回介于 0 到 19之间的随机整数\n" +"GD.Randi() % 100; // 返回介于 0 到 99 之间的随机整数\n" +"GD.Randi() % 100 + 1; // 返回介于 1 到 100 之间的随机整数\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a random signed 32-bit integer between [param from] and [param to] " +"(inclusive). If [param to] is lesser than [param from], they are swapped.\n" +"[codeblocks]\n" +"[gdscript]\n" +"randi_range(0, 1) # Returns either 0 or 1\n" +"randi_range(-10, 1000) # Returns random integer between -10 and 1000\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.RandRange(0, 1); // Returns either 0 or 1\n" +"GD.RandRange(-10, 1000); // Returns random integer between -10 and 1000\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回介于 [param from] 和 [param to](包含)之间的一个随机有符号 32 位整数。如" +"果 [param to] 小于 [param from],则它们将被交换。\n" +"[codeblocks]\n" +"[gdscript]\n" +"randi_range(0, 1) # 返回 0 或 1\n" +"randi_range(-10, 1000) # 返回介于 -10 和 1000 之间的随机整数\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.RandRange(0, 1); // 返回 0 或 1\n" +"GD.RandRange(-10, 1000); // 返回介于 -10 和 1000 之间的随机整数\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Randomizes the seed (or the internal state) of the random number generator. " +"The current implementation uses a number based on the device's time.\n" +"[b]Note:[/b] This function is called automatically when the project is run. " +"If you need to fix the seed to have consistent, reproducible results, use " +"[method seed] to initialize the random number generator." +msgstr "" +"随机化随机数发生器的种子(或内部状态)。目前的实现使用一个基于设备时间的数" +"字。\n" +"[b]注意:[/b]该函数在项目运行时自动被调用。如果需要修复种子以获得一致、可重现" +"的结果,请使用 [method seed] 来初始化随机数生成器。" + +msgid "" +"Maps a [param value] from range [code][istart, istop][/code] to [code]" +"[ostart, ostop][/code]. See also [method lerp] and [method inverse_lerp]. If " +"[param value] is outside [code][istart, istop][/code], then the resulting " +"value will also be outside [code][ostart, ostop][/code]. If this is not " +"desired, use [method clamp] on the result of this function.\n" +"[codeblock]\n" +"remap(75, 0, 100, -1, 1) # Returns 0.5\n" +"[/codeblock]\n" +"For complex use cases where multiple ranges are needed, consider using " +"[Curve] or [Gradient] instead." +msgstr "" +"将 [param value] 从范围 [code][istart, istop][/code] 映射到 [code][ostart, " +"ostop][/code]。另见 [method lerp] 和 [method inverse_lerp]。如果 [param " +"value] 在 [code][istart, istop][/code] 之外,那么结果值也将在 [code][ostart, " +"ostop][/code] 之外。如果不希望这样,请对该函数的结果使用 [method clamp]。\n" +"[codeblock]\n" +"remap(75, 0, 100, -1, 1) # 返回 0.5\n" +"[/codeblock]\n" +"对于需要多个范围的复杂用例,请考虑改用 [Curve] 或 [Gradient]。" + +msgid "" +"Allocates a unique ID which can be used by the implementation to construct a " +"RID. This is used mainly from native extensions to implement servers." +msgstr "" +"分配一个唯一的 ID,可被实现用来构造一个 RID。这主要被本地扩展使用以实现服务" +"器。" + +msgid "" +"Creates a RID from a [param base]. This is used mainly from native " +"extensions to build servers." +msgstr "从 [param base] 创建一个 RID。这主要被本地扩展使用以构建服务器。" + +msgid "" +"Rounds [param x] to the nearest whole number, with halfway cases rounded " +"away from 0. Supported types: [int], [float], [Vector2], [Vector3], " +"[Vector4].\n" +"[codeblock]\n" +"round(2.4) # Returns 2\n" +"round(2.5) # Returns 3\n" +"round(2.6) # Returns 3\n" +"[/codeblock]\n" +"See also [method floor], [method ceil], and [method snapped].\n" +"[b]Note:[/b] For better type safety, use [method roundf], [method roundi], " +"[method Vector2.round], [method Vector3.round], or [method Vector4.round]." +msgstr "" +"将 [param x] 舍入到最接近的整数,中间情况远离 0 舍入。支持的类型:[int]、" +"[float]、[Vector2]、[Vector3]、[Vector4]。\n" +"[codeblock]\n" +"round(2.4) # 返回 2\n" +"round(2.5) # 返回 3\n" +"round(2.6) # 返回 3\n" +"[/codeblock]\n" +"另请参见 [method floor]、[method ceil] 和 [method snapped]。\n" +"[b]注意:[/b]为了更好的类型安全,使用 [method roundf]、[method roundi]、" +"[method Vector2.round]、[method Vector3.round] 或 [method Vector4.round]。" + +msgid "" +"Rounds [param x] to the nearest whole number, with halfway cases rounded " +"away from 0.\n" +"A type-safe version of [method round], returning a [float]." +msgstr "" +"将 [param x] 舍入到最接近的整数,中间情况远离 0 舍入。\n" +"[method round] 的类型安全版本,返回一个 [float]。" + +msgid "" +"Rounds [param x] to the nearest whole number, with halfway cases rounded " +"away from 0.\n" +"A type-safe version of [method round], returning an [int]." +msgstr "" +"将 [param x] 舍入到最接近的整数,中间情况远离 0 舍入。\n" +"[method round] 的类型安全版本,返回一个 [int]。" + +msgid "" +"Sets the seed for the random number generator to [param base]. Setting the " +"seed manually can ensure consistent, repeatable results for most random " +"functions.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_seed = \"Godot Rocks\".hash()\n" +"seed(my_seed)\n" +"var a = randf() + randi()\n" +"seed(my_seed)\n" +"var b = randf() + randi()\n" +"# a and b are now identical\n" +"[/gdscript]\n" +"[csharp]\n" +"ulong mySeed = (ulong)GD.Hash(\"Godot Rocks\");\n" +"GD.Seed(mySeed);\n" +"var a = GD.Randf() + GD.Randi();\n" +"GD.Seed(mySeed);\n" +"var b = GD.Randf() + GD.Randi();\n" +"// a and b are now identical\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将随机数生成器的种子设置为 [param base]。手动设置种子可以确保大多数随机函数的" +"结果一致、可重复。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_seed = \"Godot Rocks\".hash()\n" +"seed(my_seed)\n" +"var a = randf() + randi()\n" +"seed(my_seed)\n" +"var b = randf() + randi()\n" +"# a 和 b 现在是一样的\n" +"[/gdscript]\n" +"[csharp]\n" +"ulong mySeed = (ulong)GD.Hash(\"Godot Rocks\");\n" +"GD.Seed(mySeed);\n" +"var a = GD.Randf() + GD.Randi();\n" +"GD.Seed(mySeed);\n" +"var b = GD.Randf() + GD.Randi();\n" +"// a 和 b 现在是一样的\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the same type of [Variant] as [param x], with [code]-1[/code] for " +"negative values, [code]1[/code] for positive values, and [code]0[/code] for " +"zeros. Supported types: [int], [float], [Vector2], [Vector2i], [Vector3], " +"[Vector3i], [Vector4], [Vector4i].\n" +"[codeblock]\n" +"sign(-6.0) # Returns -1\n" +"sign(0.0) # Returns 0\n" +"sign(6.0) # Returns 1\n" +"\n" +"sign(Vector3(-6.0, 0.0, 6.0)) # Returns (-1, 0, 1)\n" +"[/codeblock]\n" +"[b]Note:[/b] For better type safety, use [method signf], [method signi], " +"[method Vector2.sign], [method Vector2i.sign], [method Vector3.sign], " +"[method Vector3i.sign], [method Vector4.sign], or [method Vector4i.sign]." +msgstr "" +"返回与 [param x] 相同类型的 [Variant],[code]-1[/code] 为负值,[code]1[/" +"code] 为正值,[code]0[/code] 为零值。支持的类型:[int]、[float]、[Vector2]、" +"[Vector2i]、[Vector3]、[Vector3i]、[Vector4]、[Vector4i]。\n" +"[codeblock]\n" +"sign(-6.0) # 返回 -1\n" +"sign(0.0) # 返回 0\n" +"sign(6.0) # 返回 1\n" +"\n" +"sign(Vector3(-6.0, 0.0, 6.0)) # 返回 (-1, 0, 1)\n" +"[/codeblock]\n" +"[b]注意:[/b]为了更好的类型安全,请使用 [method signf]、[method signi]、" +"[method Vector2.sign]、[method Vector2i.sign]、[method Vector3.sign]、" +"[method Vector3i.sign]、[method Vector4.sign]、或 [method Vector4i.sign]。" + +msgid "" +"Returns [code]-1[/code] if [param x] is negative, [code]1[/code] if [param " +"x] is positive, and [code]0[/code] if if [param x] is zero.\n" +"[codeblock]\n" +"sign(-6) # Returns -1\n" +"sign(0) # Returns 0\n" +"sign(6) # Returns 1\n" +"[/codeblock]" +msgstr "" +"如果 [param x] 为负,则返回 [code]-1[/code];如果 [param x] 为正,则返回 " +"[code]1[/code];如果 [param x] 为零,则返回 [code]0[/code]。\n" +"[codeblock]\n" +"sign(-6) # 返回 -1\n" +"sign(0) # 返回 0\n" +"sign(6) # 返回 1\n" +"[/codeblock]" + +msgid "" +"Returns the sine of angle [param angle_rad] in radians.\n" +"[codeblock]\n" +"sin(0.523599) # Returns 0.5\n" +"sin(deg_to_rad(90)) # Returns 1.0\n" +"[/codeblock]" +msgstr "" +"返回弧度角 [param angle_rad] 的正弦值。\n" +"[codeblock]\n" +"sin(0.523599) # 返回 0.5\n" +"sin(deg_to_rad(90)) # 返回 1.0\n" +"[/codeblock]" + +msgid "" +"Returns the hyperbolic sine of [param x].\n" +"[codeblock]\n" +"var a = log(2.0) # Returns 0.693147\n" +"sinh(a) # Returns 0.75\n" +"[/codeblock]" +msgstr "" +"返回 [param x] 的双曲正弦值。\n" +"[codeblock]\n" +"var a = log(2.0) # 返回 0.693147\n" +"sinh(a) # 返回 0.75\n" +"[/codeblock]" + +msgid "" +"Returns the result of smoothly interpolating the value of [param x] between " +"[code]0[/code] and [code]1[/code], based on the where [param x] lies with " +"respect to the edges [param from] and [param to].\n" +"The return value is [code]0[/code] if [code]x <= from[/code], and [code]1[/" +"code] if [code]x >= to[/code]. If [param x] lies between [param from] and " +"[param to], the returned value follows an S-shaped curve that maps [param x] " +"between [code]0[/code] and [code]1[/code].\n" +"This S-shaped curve is the cubic Hermite interpolator, given by [code]f(y) = " +"3*y^2 - 2*y^3[/code] where [code]y = (x-from) / (to-from)[/code].\n" +"[codeblock]\n" +"smoothstep(0, 2, -5.0) # Returns 0.0\n" +"smoothstep(0, 2, 0.5) # Returns 0.15625\n" +"smoothstep(0, 2, 1.0) # Returns 0.5\n" +"smoothstep(0, 2, 2.0) # Returns 1.0\n" +"[/codeblock]\n" +"Compared to [method ease] with a curve value of [code]-1.6521[/code], " +"[method smoothstep] returns the smoothest possible curve with no sudden " +"changes in the derivative. If you need to perform more advanced transitions, " +"use [Tween] or [AnimationPlayer].\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"smoothstep_ease_comparison.png]Comparison between smoothstep() and ease(x, " +"-1.6521) return values[/url]" +msgstr "" +"返回 [param x] 在 [code]0[/code] 和 [code]1[/code] 之间平滑插值的结果,基于 " +"[param x] 相对于边 [param from] 和 [param to] 的位置。\n" +"如果 [code]x <= from[/code],则返回值为 [code]0[/code];如果 [code]x >= to[/" +"code],则返回值为 [code]1[/code]。如果 [param x] 位于 [param from] 和 [param " +"to] 之间,则返回值遵循一条将 [param x] 映射到 [code]0[/code] 和 [code]1[/" +"code] 之间的 S 形曲线。\n" +"这条 S 形曲线是三次 Hermite 插值器,由 [code]f(y) = 3*y^2 - 2*y^3[/code] 给" +"出,其中 [code]y = (x-from) / (to-from)[/code]。\n" +"[codeblock]\n" +"smoothstep(0, 2, -5.0) # 返回 0.0\n" +"smoothstep(0, 2, 0.5) # 返回 0.15625\n" +"smoothstep(0, 2, 1.0) # 返回 0.5\n" +"smoothstep(0, 2, 2.0) # 返回 1.0\n" +"[/codeblock]\n" +"与曲线值为 [code]-1.6521[/code] 的 [method ease] 相比,[method smoothstep] 返" +"回最平滑的曲线,导数没有突然变化。如果您需要执行更高级的过渡,请使用 [Tween] " +"或 [AnimationPlayer]。\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"smoothstep_ease_comparison.png]smoothstep() 与 ease(x, -1.6521) 返回值的比较" +"[/url]" + +msgid "" +"Returns the multiple of [param step] that is the closest to [param x]. This " +"can also be used to round a floating point number to an arbitrary number of " +"decimals.\n" +"The returned value is the same type of [Variant] as [param step]. Supported " +"types: [int], [float], [Vector2], [Vector2i], [Vector3], [Vector3i], " +"[Vector4], [Vector4i].\n" +"[codeblock]\n" +"snapped(100, 32) # Returns 96\n" +"snapped(3.14159, 0.01) # Returns 3.14\n" +"\n" +"snapped(Vector2(34, 70), Vector2(8, 8)) # Returns (32, 72)\n" +"[/codeblock]\n" +"See also [method ceil], [method floor], and [method round].\n" +"[b]Note:[/b] For better type safety, use [method snappedf], [method " +"snappedi], [method Vector2.snapped], [method Vector2i.snapped], [method " +"Vector3.snapped], [method Vector3i.snapped], [method Vector4.snapped], or " +"[method Vector4i.snapped]." +msgstr "" +"返回最接近 [param x] 的 [param step] 的倍数。这也可用于将一个浮点数四舍五入为" +"任意小数位数。\n" +"返回值是与 [param step] 相同类型的 [Variant]。支持的类型:[int]、[float]、" +"[Vector2]、[Vector2i]、[Vector3]、[Vector3i]、[Vector4]、[Vector4i]。\n" +"[codeblock]\n" +"snapped(100, 32) # 返回 96\n" +"snapped(3.14159, 0.01) # 返回 3.14\n" +"\n" +"snapped(Vector2(34, 70), Vector2(8, 8)) # 返回 (32, 72)\n" +"[/codeblock]\n" +"另见 [method ceil]、[method floor] 和 [method round]。\n" +"[b]注意:[/b]为了更好的类型安全,请使用 [method snappedf]、[method " +"snappedi]、[method Vector2.snapped]、[method Vector2i.snapped]、[method " +"Vector3.snapped]、[method Vector3i.snapped]、[method Vector4.snapped]、或 " +"[method Vector4i.snapped]。" + +msgid "" +"Returns the multiple of [param step] that is the closest to [param x]. This " +"can also be used to round a floating point number to an arbitrary number of " +"decimals.\n" +"A type-safe version of [method snapped], returning a [float].\n" +"[codeblock]\n" +"snapped(32.0, 2.5) # Returns 32.5\n" +"snapped(3.14159, 0.01) # Returns 3.14\n" +"[/codeblock]" +msgstr "" +"返回最接近 [param x] 的 [param step] 的倍数。也可用于将浮点数四舍五入为任意的" +"小数位数。\n" +"[method snapped] 的类型安全版本,返回一个 [float]。\n" +"[codeblock]\n" +"snapped(32.0, 2.5) # 返回 32.5\n" +"snapped(3.14159, 0.01) # 返回 3.14\n" +"[/codeblock]" + +msgid "" +"Returns the multiple of [param step] that is the closest to [param x].\n" +"A type-safe version of [method snapped], returning an [int].\n" +"[codeblock]\n" +"snapped(53, 16) # Returns 48\n" +"snapped(4096, 100) # Returns 4100\n" +"[/codeblock]" +msgstr "" +"返回最接近 [param x] 的 [param step] 的倍数。\n" +"[method snapped] 的类型安全版本,返回一个 [int]。\n" +"[codeblock]\n" +"snapped(53, 16) # 返回 48\n" +"snapped(4096, 100) # 返回 4100\n" +"[/codeblock]" + +msgid "" +"Returns the square root of [param x], where [param x] is a non-negative " +"number.\n" +"[codeblock]\n" +"sqrt(9) # Returns 3\n" +"sqrt(10.24) # Returns 3.2\n" +"sqrt(-1) # Returns NaN\n" +"[/codeblock]\n" +"[b]Note:[/b] Negative values of [param x] return NaN (\"Not a Number\"). in " +"C#, if you need negative inputs, use [code]System.Numerics.Complex[/code]." +msgstr "" +"返回 [param x] 的平方根,其中 [param x] 是一个非负数。\n" +"[codeblock]\n" +"sqrt(9) # 返回 3\n" +"sqrt(10.24) # 返回 3.2\n" +"sqrt(-1) # 返回 NaN\n" +"[/codeblock]\n" +"[b]注意:[/b]负数的 [param x] 会返回 NaN(“不是数字”)。在 C# 中,如果需要负" +"输入,请使用 [code]System.Numerics.Complex[/code]。" + +msgid "" +"Returns the position of the first non-zero digit, after the decimal point. " +"Note that the maximum return value is 10, which is a design decision in the " +"implementation.\n" +"[codeblock]\n" +"var n = step_decimals(5) # n is 0\n" +"n = step_decimals(1.0005) # n is 4\n" +"n = step_decimals(0.000000005) # n is 9\n" +"[/codeblock]" +msgstr "" +"返回小数点后第一个非零数字的位置。注意最大返回值是 10,这是实现中的设计决" +"定。\n" +"[codeblock]\n" +"var n = step_decimals(5) # n 为 0\n" +"n = step_decimals(1.0005) # n 为 4\n" +"n = step_decimals(0.000000005) # n 为 9\n" +"[/codeblock]" + +msgid "" +"Converts one or more arguments of any [Variant] type to a [String] in the " +"best way possible.\n" +"[codeblock]\n" +"var a = [10, 20, 30]\n" +"var b = str(a)\n" +"print(len(a)) # Prints 3 (the number of elements in the array).\n" +"print(len(b)) # Prints 12 (the length of the string \"[10, 20, 30]\").\n" +"[/codeblock]" +msgstr "" +"尽可能以最佳方式将一个或多个任何 [Variant] 类型的参数转换为一个 [String]。\n" +"[codeblock]\n" +"var a = [10, 20, 30]\n" +"var b = str(a)\n" +"print(len(a)) # 输出 3(数组中元素的数量)。\n" +"print(len(b)) # 输出 12(字符串“[10, 20, 30]”的长度)。\n" +"[/codeblock]" + +msgid "" +"Returns the tangent of angle [param angle_rad] in radians.\n" +"[codeblock]\n" +"tan(deg_to_rad(45)) # Returns 1\n" +"[/codeblock]" +msgstr "" +"返回弧度角 [param angle_rad] 的正切值。\n" +"[codeblock]\n" +"tan(deg_to_rad(45)) # 返回 1\n" +"[/codeblock]" + +msgid "" +"Returns the hyperbolic tangent of [param x].\n" +"[codeblock]\n" +"var a = log(2.0) # Returns 0.693147\n" +"tanh(a) # Returns 0.6\n" +"[/codeblock]" +msgstr "" +"返回 [param x] 的双曲正切值。\n" +"[codeblock]\n" +"var a = log(2.0) # 返回 0.693147\n" +"tanh(a) # 返回 0.6\n" +"[/codeblock]" + +msgid "" +"Returns the internal type of the given [param variable], using the [enum " +"Variant.Type] values.\n" +"[codeblock]\n" +"var json = JSON.new()\n" +"json.parse('[\"a\", \"b\", \"c\"]')\n" +"var result = json.get_data()\n" +"if typeof(result) == TYPE_ARRAY:\n" +" print(result[0]) # Prints a\n" +"else:\n" +" print(\"Unexpected result\")\n" +"[/codeblock]" +msgstr "" +"使用 [enum Variant.Type] 值返回给定 [param variable] 的内部类型。\n" +"[codeblock]\n" +"var json = JSON.new()\n" +"json.parse('[\"a\", \"b\", \"c\"]')\n" +"var result = json.get_data()\n" +"if typeof(result) == TYPE_ARRAY:\n" +" print(result[0]) # 输出 a\n" +"else:\n" +" print(\"出乎意料的结果\")\n" +"[/codeblock]" + +msgid "" +"Encodes a [Variant] value to a byte array, without encoding objects. " +"Deserialization can be done with [method bytes_to_var].\n" +"[b]Note:[/b] If you need object serialization, see [method " +"var_to_bytes_with_objects]." +msgstr "" +"将 [Variant] 值编码为字节数组,不编码对象。反序列化可以使用 [method " +"bytes_to_var] 来完成。\n" +"[b]注意:[/b]如果需要对象序列化,参见 [method var_to_bytes_with_objects]。" + +msgid "" +"Encodes a [Variant] value to a byte array. Encoding objects is allowed (and " +"can potentially include executable code). Deserialization can be done with " +"[method bytes_to_var_with_objects]." +msgstr "" +"将 [Variant] 值编码为字节数组。允许对对象进行编码(并且可能包括可执行代码)。" +"反序列化可以使用 [method bytes_to_var_with_objects] 来完成。" + +msgid "" +"Converts a [Variant] [param variable] to a formatted [String] that can then " +"be parsed using [method str_to_var].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = { \"a\": 1, \"b\": 2 }\n" +"print(var_to_str(a))\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Dictionary { [\"a\"] = 1, [\"b\"] = 2 };\n" +"GD.Print(GD.VarToStr(a));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Prints:\n" +"[codeblock]\n" +"{\n" +" \"a\": 1,\n" +" \"b\": 2\n" +"}\n" +"[/codeblock]" +msgstr "" +"将 [Variant] [param variable] 转换为格式化的 [String],然后可以使用 [method " +"str_to_var] 对其进行解析。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = { \"a\": 1, \"b\": 2 }\n" +"print(var_to_str(a))\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Dictionary { [\"a\"] = 1, [\"b\"] = 2 };\n" +"GD.Print(GD.VarToStr(a));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"输出:\n" +"[codeblock]\n" +"{\n" +" \"a\": 1,\n" +" \"b\": 2\n" +"}\n" +"[/codeblock]" + +msgid "" +"Returns a weak reference to an object, or [code]null[/code] if [param obj] " +"is invalid.\n" +"A weak reference to an object is not enough to keep the object alive: when " +"the only remaining references to a referent are weak references, garbage " +"collection is free to destroy the referent and reuse its memory for " +"something else. However, until the object is actually destroyed the weak " +"reference may return the object even if there are no strong references to it." +msgstr "" +"返回对某个对象的弱引用,如果 [param obj] 无效,则返回 [code]null[/code]。\n" +"对对象的弱引用不足以使对象保持存活:当对引用对象的剩余引用都是弱引用时,垃圾" +"回收可以自由销毁该引用对象并将其内存重新用于其他用途。但是,在对象实际被销毁" +"之前,弱引用可能会返回该对象,即使不存在对它的强引用也是如此。" + +msgid "" +"Wraps the [Variant] [param value] between [param min] and [param max]. Can " +"be used for creating loop-alike behavior or infinite surfaces.\n" +"Variant types [int] and [float] are supported. If any of the arguments is " +"[float] this function returns a [float], otherwise it returns an [int].\n" +"[codeblock]\n" +"var a = wrap(4, 5, 10)\n" +"# a is 9 (int)\n" +"\n" +"var a = wrap(7, 5, 10)\n" +"# a is 7 (int)\n" +"\n" +"var a = wrap(10.5, 5, 10)\n" +"# a is 5.5 (float)\n" +"[/codeblock]" +msgstr "" +"在 [param min] 和 [param max] 之间包裹 [Variant] [param value]。可用于创建类" +"似循环的行为或无限曲面。\n" +"支持变体类型 [int] 和 [float]。如果任一参数是 [float],则该函数返回 [float]," +"否则返回 [int]。\n" +"[codeblock]\n" +"var a = wrap(4, 5, 10)\n" +"# a 为 9 (整数类型)\n" +"\n" +"var a = wrap(7, 5, 10)\n" +"# a 为 7 (整数类型)\n" +"\n" +"var a = wrap(10.5, 5, 10)\n" +"# a 为 5.5 (浮点类型)\n" +"[/codeblock]" + +msgid "" +"Wraps the float [param value] between [param min] and [param max]. Can be " +"used for creating loop-alike behavior or infinite surfaces.\n" +"[codeblock]\n" +"# Infinite loop between 5.0 and 9.9\n" +"value = wrapf(value + 0.1, 5.0, 10.0)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# Infinite rotation (in radians)\n" +"angle = wrapf(angle + 0.1, 0.0, TAU)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# Infinite rotation (in radians)\n" +"angle = wrapf(angle + 0.1, -PI, PI)\n" +"[/codeblock]\n" +"[b]Note:[/b] If [param min] is [code]0[/code], this is equivalent to [method " +"fposmod], so prefer using that instead.\n" +"[code]wrapf[/code] is more flexible than using the [method fposmod] approach " +"by giving the user control over the minimum value." +msgstr "" +"在 [param min] 和 [param max] 之间将浮点数 [param value] 循环。可用于创建类似" +"循环的行为或无限曲面。\n" +"[codeblock]\n" +"# 在 5.0 和 9.9 之间无限循环\n" +"value = wrapf(value + 0.1, 5.0, 10.0)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# 无限旋转(弧度)\n" +"angle = wrapf(angle + 0.1, 0.0, TAU)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# 无限旋转(弧度)\n" +"angle = wrapf(angle + 0.1, -PI, PI)\n" +"[/codeblock]\n" +"[b]注意:[/b]如果 [param min] 为 [code]0[/code],则相当于 [method fposmod]," +"因此请改用它。\n" +"通过让用户控制最小值,[code]wrapf[/code] 比使用 [method fposmod] 方法更灵活。" + +msgid "" +"Wraps the integer [param value] between [param min] and [param max]. Can be " +"used for creating loop-alike behavior or infinite surfaces.\n" +"[codeblock]\n" +"# Infinite loop between 5 and 9\n" +"frame = wrapi(frame + 1, 5, 10)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# result is -2\n" +"var result = wrapi(-6, -5, -1)\n" +"[/codeblock]" +msgstr "" +"在 [param min] 和 [param max] 之间环绕整数 [param value]。 可用于创建类似循环" +"的行为或无限曲面。\n" +"[codeblock]\n" +"# 在 5 和 9 之间无限循环\n" +"frame = wrapi(frame + 1, 5, 10)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# result 是 -2\n" +"var result = wrapi(-6, -5, -1)\n" +"[/codeblock]" + msgid "The [AudioServer] singleton." msgstr "[AudioServer] 单例。" -msgid "The [CameraServer] singleton." -msgstr "[CameraServer] 单例。" +msgid "The [CameraServer] singleton." +msgstr "[CameraServer] 单例。" + +msgid "The [ClassDB] singleton." +msgstr "[ClassDB] 单例。" + +msgid "The [DisplayServer] singleton." +msgstr "[DisplayServer] 单例。" + +msgid "The [Engine] singleton." +msgstr "[Engine] 单例。" + +msgid "The [EngineDebugger] singleton." +msgstr "[EngineDebugger] 单例。" + +msgid "The [GDExtensionManager] singleton." +msgstr "[GDExtensionManager] 单例。" + +msgid "The [Geometry2D] singleton." +msgstr "[Geometry2D] 单例。" + +msgid "The [Geometry3D] singleton." +msgstr "[Geometry3D] 单例。" + +msgid "The [GodotSharp] singleton." +msgstr "[GodotSharp] 单例。" + +msgid "The [IP] singleton." +msgstr "[IP] 单例。" + +msgid "The [Input] singleton." +msgstr "[Input] 单例。" + +msgid "The [InputMap] singleton." +msgstr "[InputMap] 单例。" + +msgid "" +"The [JavaClassWrapper] singleton.\n" +"[b]Note:[/b] Only implemented on Android." +msgstr "" +"[JavaClassWrapper] 单例。\n" +"[b]注意:[/b]仅在 Android 上实现。" + +msgid "" +"The [JavaScriptBridge] singleton.\n" +"[b]Note:[/b] Only implemented on the Web platform." +msgstr "" +"[JavaScriptBridge] 单例。\n" +"[b]注意:[/b]仅在 Web 平台上实现。" + +msgid "The [Marshalls] singleton." +msgstr "[Marshalls] 单例。" + +msgid "The [NavigationMeshGenerator] singleton." +msgstr "[NavigationMeshGenerator] 单例。" + +msgid "The [NavigationServer2D] singleton." +msgstr "[NavigationServer2D] 单例。" + +msgid "The [OS] singleton." +msgstr "[OS] 单例。" + +msgid "The [Performance] singleton." +msgstr "[Performance] 单例。" + +msgid "The [PhysicsServer2D] singleton." +msgstr "[PhysicsServer2D] 单例。" + +msgid "The [PhysicsServer2DManager] singleton." +msgstr "[PhysicsServer2DManager] 单例。" + +msgid "The [PhysicsServer3D] singleton." +msgstr "[PhysicsServer3D] 单例。" + +msgid "The [PhysicsServer3DManager] singleton." +msgstr "[PhysicsServer3DManager] 单例。" + +msgid "The [ProjectSettings] singleton." +msgstr "[ProjectSettings] 单例。" + +msgid "The [RenderingServer] singleton." +msgstr "[RenderingServer] 单例。" + +msgid "The [ResourceLoader] singleton." +msgstr "[ResourceLoader] 单例。" + +msgid "The [ResourceSaver] singleton." +msgstr "[ResourceSaver] 单例。" + +msgid "The [ResourceUID] singleton." +msgstr "[ResourceUID] 单例。" + +msgid "The [TextServerManager] singleton." +msgstr "[TextServerManager] 单例。" + +msgid "The [ThemeDB] singleton." +msgstr "[ThemeDB] 单例。" + +msgid "The [Time] singleton." +msgstr "[Time] 单例。" + +msgid "The [TranslationServer] singleton." +msgstr "[TranslationServer] 单例。" + +msgid "The [WorkerThreadPool] singleton." +msgstr "[WorkerThreadPool] 单例。" + +msgid "The [XRServer] singleton." +msgstr "[XRServer] 单例。" + +msgid "Left side, usually used for [Control] or [StyleBox]-derived classes." +msgstr "左边,常用于 [Control] 或 [StyleBox] 的派生类。" + +msgid "Top side, usually used for [Control] or [StyleBox]-derived classes." +msgstr "顶边,常用于 [Control] 或 [StyleBox] 的派生类。" + +msgid "Right side, usually used for [Control] or [StyleBox]-derived classes." +msgstr "右边,常用于 [Control] 或 [StyleBox] 的派生类。" + +msgid "Bottom side, usually used for [Control] or [StyleBox]-derived classes." +msgstr "底边,常用于 [Control] 或 [StyleBox] 的派生类。" + +msgid "Top-left corner." +msgstr "左上角。" + +msgid "Top-right corner." +msgstr "右上角。" + +msgid "Bottom-right corner." +msgstr "右下角。" + +msgid "Bottom-left corner." +msgstr "左下角。" + +msgid "" +"General vertical alignment, usually used for [Separator], [ScrollBar], " +"[Slider], etc." +msgstr "通用垂直对齐,常用于 [Separator]、[ScrollBar]、[Slider] 等。" + +msgid "" +"General horizontal alignment, usually used for [Separator], [ScrollBar], " +"[Slider], etc." +msgstr "通用水平对齐,常用于 [Separator]、[ScrollBar]、[Slider] 等。" + +msgid "" +"Clockwise rotation. Used by some methods (e.g. [method Image.rotate_90])." +msgstr "顺时针旋转。被一些方法使用(例如 [method Image.rotate_90])。" + +msgid "" +"Counter-clockwise rotation. Used by some methods (e.g. [method Image." +"rotate_90])." +msgstr "逆时针旋转。被一些方法使用(例如 [method Image.rotate_90])。" + +msgid "Horizontal left alignment, usually for text-derived classes." +msgstr "水平左对齐,常用于文本派生类。" + +msgid "Horizontal center alignment, usually for text-derived classes." +msgstr "水平居中对齐,常用于文本派生类。" + +msgid "Horizontal right alignment, usually for text-derived classes." +msgstr "水平右对齐,常用于文本派生类。" + +msgid "Expand row to fit width, usually for text-derived classes." +msgstr "扩展行以适应宽度,常用于文本派生类。" + +msgid "Vertical top alignment, usually for text-derived classes." +msgstr "垂直上对齐,常用于文本派生类。" + +msgid "Vertical center alignment, usually for text-derived classes." +msgstr "垂直居中对齐,常用于文本派生类。" + +msgid "Vertical bottom alignment, usually for text-derived classes." +msgstr "垂直下对齐,常用于文本派生类。" + +msgid "Expand rows to fit height, usually for text-derived classes." +msgstr "扩展行以适应高度,通常用于文本派生类。" + +msgid "" +"Aligns the top of the inline object (e.g. image, table) to the position of " +"the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant." +msgstr "" +"将内联对象(例如图像、表格)的顶部与 [code]INLINE_ALIGNMENT_TO_*[/code] 常量" +"指定的文本位置对齐。" + +msgid "" +"Aligns the center of the inline object (e.g. image, table) to the position " +"of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant." +msgstr "" +"将内联对象(例如图像、表格)的中心与 [code]INLINE_ALIGNMENT_TO_*[/code] 常量" +"指定的文本位置对齐。" + +msgid "" +"Aligns the baseline (user defined) of the inline object (e.g. image, table) " +"to the position of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] " +"constant." +msgstr "" +"将内联对象(如图像、表格)的基线(用户定义)与[code]INLINE_ALIGNMENT_TO_*[/" +"code] 常数指定的文本位置对齐。" + +msgid "" +"Aligns the bottom of the inline object (e.g. image, table) to the position " +"of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant." +msgstr "" +"将内联对象(例如图像、表格)的底部与 [code]INLINE_ALIGNMENT_TO_*[/code] 常量" +"指定的文本位置对齐。" + +msgid "" +"Aligns the position of the inline object (e.g. image, table) specified by " +"[code]INLINE_ALIGNMENT_*_TO[/code] constant to the top of the text." +msgstr "" +"将由 [code]INLINE_ALIGNMENT_*_TO[/code] 常量指定的内联对象(例如图像、表格)" +"的位置与文本顶部对齐。" + +msgid "" +"Aligns the position of the inline object (e.g. image, table) specified by " +"[code]INLINE_ALIGNMENT_*_TO[/code] constant to the center of the text." +msgstr "" +"将由 [code]INLINE_ALIGNMENT_*_TO[/code] 常量指定的内联对象(例如图像、表格)" +"的位置与文本中心对齐。" + +msgid "" +"Aligns the position of the inline object (e.g. image, table) specified by " +"[code]INLINE_ALIGNMENT_*_TO[/code] constant to the baseline of the text." +msgstr "" +"将由 [code]INLINE_ALIGNMENT_*_TO[/code] 常量指定的内联对象(例如图像、表格)" +"的位置与文本基线对齐。" + +msgid "Aligns inline object (e.g. image, table) to the bottom of the text." +msgstr "将内联对象(例如图像、表格)与文本底部对齐。" + +msgid "" +"Aligns top of the inline object (e.g. image, table) to the top of the text. " +"Equivalent to [code]INLINE_ALIGNMENT_TOP_TO | INLINE_ALIGNMENT_TO_TOP[/code]." +msgstr "" +"将内联对象(例如图像、表格)的顶部与文本的顶部对齐。等效于 " +"[code]INLINE_ALIGNMENT_TOP_TO | INLINE_ALIGNMENT_TO_TOP[/code]。" + +msgid "" +"Aligns center of the inline object (e.g. image, table) to the center of the " +"text. Equivalent to [code]INLINE_ALIGNMENT_CENTER_TO | " +"INLINE_ALIGNMENT_TO_CENTER[/code]." +msgstr "" +"将内联对象(例如图像、表格)的中心与文本的中心对齐。相当于 " +"[code]INLINE_ALIGNMENT_CENTER_TO | INLINE_ALIGNMENT_TO_CENTER[/code]。" + +msgid "" +"Aligns bottom of the inline object (e.g. image, table) to the bottom of the " +"text. Equivalent to [code]INLINE_ALIGNMENT_BOTTOM_TO | " +"INLINE_ALIGNMENT_TO_BOTTOM[/code]." +msgstr "" +"将内联对象(例如图像、表格)的底部与文本底部对齐。等效于 " +"[code]INLINE_ALIGNMENT_BOTTOM_TO | INLINE_ALIGNMENT_TO_BOTTOM[/code]。" + +msgid "A bit mask for [code]INLINE_ALIGNMENT_*_TO[/code] alignment constants." +msgstr "用于 [code]INLINE_ALIGNMENT_*_TO[/code] 对齐常量的位掩码。" + +msgid "A bit mask for [code]INLINE_ALIGNMENT_TO_*[/code] alignment constants." +msgstr "用于 [code]INLINE_ALIGNMENT_TO_*[/code] 对齐常量的位掩码。" + +msgid "" +"Specifies that Euler angles should be in XYZ order. When composing, the " +"order is X, Y, Z. When decomposing, the order is reversed, first Z, then Y, " +"and X last." +msgstr "" +"指定欧拉角应按 XYZ 顺序排列。组合时,顺序为 X、Y、Z。分解时,顺序相反,先 Z," +"再 Y,最后 X。" + +msgid "" +"Specifies that Euler angles should be in XZY order. When composing, the " +"order is X, Z, Y. When decomposing, the order is reversed, first Y, then Z, " +"and X last." +msgstr "" +"指定欧拉角应按 XZY 顺序排列。组合时,顺序为 X、Z、Y。分解时,顺序相反,先 Y," +"再 Z,最后 X。" + +msgid "" +"Specifies that Euler angles should be in YXZ order. When composing, the " +"order is Y, X, Z. When decomposing, the order is reversed, first Z, then X, " +"and Y last." +msgstr "" +"指定欧拉角应按 YXZ 顺序排列。组合时,顺序为 Y、X、Z。分解时,顺序相反,先 Z," +"再 X,最后 Y。" + +msgid "" +"Specifies that Euler angles should be in YZX order. When composing, the " +"order is Y, Z, X. When decomposing, the order is reversed, first X, then Z, " +"and Y last." +msgstr "" +"指定欧拉角应按 YZX 顺序排列。组合时,顺序为 Y、Z、X。分解时,顺序相反,先 X," +"再 Z,最后 Y。" + +msgid "" +"Specifies that Euler angles should be in ZXY order. When composing, the " +"order is Z, X, Y. When decomposing, the order is reversed, first Y, then X, " +"and Z last." +msgstr "" +"指定欧拉角应按 ZXY 顺序排列。组合时,顺序为 Z、X、Y。分解时,顺序相反,先 Y," +"再 X,最后 Z。" + +msgid "" +"Specifies that Euler angles should be in ZYX order. When composing, the " +"order is Z, Y, X. When decomposing, the order is reversed, first X, then Y, " +"and Z last." +msgstr "" +"指定欧拉角应按 ZYX 顺序排列。组合时,顺序为 Z、Y、X。分解时,顺序相反,先 X," +"再 Y,最后 Z。" + +msgid "" +"Enum value which doesn't correspond to any key. This is used to initialize " +"[enum Key] properties with a generic state." +msgstr "与任何键都不对应的枚举值。这用于初始化具有通用状态的 [enum Key] 属性。" + +msgid "Keycodes with this bit applied are non-printable." +msgstr "应用此位的键码不可打印。" + +msgid "Escape key." +msgstr "ESC 键。" + +msgid "Tab key." +msgstr "Tab 键。" + +msgid "Shift + Tab key." +msgstr "Shift + Tab 键。" + +msgid "Backspace key." +msgstr "退格键。" + +msgid "Return key (on the main keyboard)." +msgstr "回车键(位于主键盘)。" + +msgid "Enter key on the numeric keypad." +msgstr "小键盘区的回车键。" + +msgid "Insert key." +msgstr "Insert 键。" + +msgid "Delete key." +msgstr "Delete 键。" + +msgid "Pause key." +msgstr "Pause 键。" + +msgid "Print Screen key." +msgstr "Print Screen 键。" + +msgid "System Request key." +msgstr "System Request 键。" + +msgid "Clear key." +msgstr "Clear 键。" + +msgid "Home key." +msgstr "Home 键。" + +msgid "End key." +msgstr "End 键。" + +msgid "Left arrow key." +msgstr "左方向键。" + +msgid "Up arrow key." +msgstr "上方向键。" + +msgid "Right arrow key." +msgstr "右方向键。" + +msgid "Down arrow key." +msgstr "下方向键。" + +msgid "Page Up key." +msgstr "Page Up 键。" + +msgid "Page Down key." +msgstr "Page Down 键。" + +msgid "Shift key." +msgstr "Shift 键。" + +msgid "Control key." +msgstr "Control 键。" + +msgid "Meta key." +msgstr "Meta 键。" + +msgid "Alt key." +msgstr "Alt 键。" + +msgid "Caps Lock key." +msgstr "Caps Lock 键。" + +msgid "Num Lock key." +msgstr "Num Lock 键。" + +msgid "Scroll Lock key." +msgstr "Scroll Lock 键。" + +msgid "F1 key." +msgstr "F1 键。" + +msgid "F2 key." +msgstr "F2 键。" + +msgid "F3 key." +msgstr "F3 键。" + +msgid "F4 key." +msgstr "F4 键。" + +msgid "F5 key." +msgstr "F5 键。" + +msgid "F6 key." +msgstr "F6 键。" + +msgid "F7 key." +msgstr "F7 键。" + +msgid "F8 key." +msgstr "F8 键。" + +msgid "F9 key." +msgstr "F9 键。" + +msgid "F10 key." +msgstr "F10 键。" + +msgid "F11 key." +msgstr "F11 键。" + +msgid "F12 key." +msgstr "F12 键。" + +msgid "F13 key." +msgstr "F13 键。" + +msgid "F14 key." +msgstr "F14 键。" + +msgid "F15 key." +msgstr "F15 键。" + +msgid "F16 key." +msgstr "F16 键。" + +msgid "F17 key." +msgstr "F17 键。" + +msgid "F18 key." +msgstr "F18 键。" + +msgid "F19 key." +msgstr "F19 键。" + +msgid "F20 key." +msgstr "F20 键。" + +msgid "F21 key." +msgstr "F21 键。" + +msgid "F22 key." +msgstr "F22 键。" + +msgid "F23 key." +msgstr "F23 键。" + +msgid "F24 key." +msgstr "F24 键。" + +msgid "F25 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F25 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F26 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F26 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F27 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F27 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F28 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F28 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F29 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F29 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F30 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F30 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F31 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F31 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F32 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F32 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F33 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F33 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F34 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F34 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F35 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F35 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "Multiply (*) key on the numeric keypad." +msgstr "小键盘的星键/乘以键(*)。" + +msgid "Divide (/) key on the numeric keypad." +msgstr "小键盘的除以键(/)。" + +msgid "Subtract (-) key on the numeric keypad." +msgstr "小键盘的减号键(-)。" + +msgid "Period (.) key on the numeric keypad." +msgstr "小键盘的点键(.)。" + +msgid "Add (+) key on the numeric keypad." +msgstr "小键盘的加号键(+)。" + +msgid "Number 0 on the numeric keypad." +msgstr "小键盘的数字 0。" + +msgid "Number 1 on the numeric keypad." +msgstr "小键盘的数字 1。" + +msgid "Number 2 on the numeric keypad." +msgstr "小键盘的数字 2。" + +msgid "Number 3 on the numeric keypad." +msgstr "小键盘的数字 3。" + +msgid "Number 4 on the numeric keypad." +msgstr "小键盘的数字 4。" + +msgid "Number 5 on the numeric keypad." +msgstr "小键盘的数字 5。" + +msgid "Number 6 on the numeric keypad." +msgstr "小键盘的数字 6。" + +msgid "Number 7 on the numeric keypad." +msgstr "小键盘的数字 7。" + +msgid "Number 8 on the numeric keypad." +msgstr "小键盘的数字 8。" + +msgid "Number 9 on the numeric keypad." +msgstr "小键盘的数字 9。" + +msgid "Context menu key." +msgstr "上下文菜单键。" + +msgid "Hyper key. (On Linux/X11 only)." +msgstr "超级键。(仅在 Linux/X11 上)。" + +msgid "Help key." +msgstr "Help 键。" + +msgid "" +"Media back key. Not to be confused with the Back button on an Android device." +msgstr "媒体返回键。不要与 Android 设备上的返回键相混淆。" + +msgid "Media forward key." +msgstr "媒体前进键。" + +msgid "Media stop key." +msgstr "媒体停止播放键。" + +msgid "Media refresh key." +msgstr "媒体刷新键。" + +msgid "Volume down key." +msgstr "音量降低键。" + +msgid "Mute volume key." +msgstr "静音键。" + +msgid "Volume up key." +msgstr "音量升高键。" + +msgid "Media play key." +msgstr "媒体播放键。" + +msgid "Previous song key." +msgstr "上一首歌键。" + +msgid "Next song key." +msgstr "下一首歌键。" + +msgid "Media record key." +msgstr "媒体录制键。" + +msgid "Home page key." +msgstr "主页键。" + +msgid "Favorites key." +msgstr "收藏键。" + +msgid "Search key." +msgstr "搜索键。" + +msgid "Standby key." +msgstr "Standby 键。" + +msgid "Open URL / Launch Browser key." +msgstr "打开 URL / 启动浏览器键。" + +msgid "Launch Mail key." +msgstr "启动邮箱键。" + +msgid "Launch Media key." +msgstr "启动多媒体键。" + +msgid "Launch Shortcut 0 key." +msgstr "快捷启动键 0。" + +msgid "Launch Shortcut 1 key." +msgstr "快捷启动键 1。" + +msgid "Launch Shortcut 2 key." +msgstr "快捷启动键 2。" + +msgid "Launch Shortcut 3 key." +msgstr "快捷启动键 3。" + +msgid "Launch Shortcut 4 key." +msgstr "快捷启动键 4。" + +msgid "Launch Shortcut 5 key." +msgstr "快捷启动键 5。" + +msgid "Launch Shortcut 6 key." +msgstr "快捷启动键 6。" + +msgid "Launch Shortcut 7 key." +msgstr "快捷启动键 7。" + +msgid "Launch Shortcut 8 key." +msgstr "快捷启动键 8。" + +msgid "Launch Shortcut 9 key." +msgstr "快捷启动键 9。" + +msgid "Launch Shortcut A key." +msgstr "快捷启动键 A。" + +msgid "Launch Shortcut B key." +msgstr "快捷启动键 B。" + +msgid "Launch Shortcut C key." +msgstr "快捷启动键 C。" + +msgid "Launch Shortcut D key." +msgstr "快捷启动键 D。" + +msgid "Launch Shortcut E key." +msgstr "快捷启动键 E。" + +msgid "Launch Shortcut F key." +msgstr "快捷启动键 F。" + +msgid "Unknown key." +msgstr "未知键。" + +msgid "Space key." +msgstr "空格键。" + +msgid "! key." +msgstr "! 键。" + +msgid "\" key." +msgstr "\" 键。" + +msgid "# key." +msgstr "# 键。" + +msgid "$ key." +msgstr "$ 键。" + +msgid "% key." +msgstr "% 键。" + +msgid "& key." +msgstr "& 键。" + +msgid "' key." +msgstr "' 键。" + +msgid "( key." +msgstr "( 键。" + +msgid ") key." +msgstr ") 键。" + +msgid "* key." +msgstr "* 键。" + +msgid "+ key." +msgstr "+ 键。" + +msgid ", key." +msgstr ", 键。" + +msgid "- key." +msgstr "- 键。" + +msgid ". key." +msgstr ". 键。" + +msgid "/ key." +msgstr "/ 键。" + +msgid "Number 0 key." +msgstr "数字 0 键。" + +msgid "Number 1 key." +msgstr "数字 1 键。" + +msgid "Number 2 key." +msgstr "数字 2 键。" + +msgid "Number 3 key." +msgstr "数字 3 键。" + +msgid "Number 4 key." +msgstr "数字 4 键。" + +msgid "Number 5 key." +msgstr "数字 5 键。" + +msgid "Number 6 key." +msgstr "数字 6 键。" + +msgid "Number 7 key." +msgstr "数字 7 键。" + +msgid "Number 8 key." +msgstr "数字 8 键。" + +msgid "Number 9 key." +msgstr "数字 9 键。" + +msgid ": key." +msgstr ": 键。" + +msgid "; key." +msgstr "; 键。" + +msgid "< key." +msgstr "< 键。" + +msgid "= key." +msgstr "= 键。" + +msgid "> key." +msgstr "> 键。" + +msgid "? key." +msgstr "? 键。" + +msgid "@ key." +msgstr "@ 键。" + +msgid "A key." +msgstr "A 键。" + +msgid "B key." +msgstr "B 键。" + +msgid "C key." +msgstr "C 键。" + +msgid "D key." +msgstr "D 键。" + +msgid "E key." +msgstr "E 键。" + +msgid "F key." +msgstr "F 键。" + +msgid "G key." +msgstr "G 键。" + +msgid "H key." +msgstr "H 键。" + +msgid "I key." +msgstr "I 键。" + +msgid "J key." +msgstr "J 键。" + +msgid "K key." +msgstr "K 键。" + +msgid "L key." +msgstr "L 键。" + +msgid "M key." +msgstr "M 键。" + +msgid "N key." +msgstr "N 键。" + +msgid "O key." +msgstr "O 键。" + +msgid "P key." +msgstr "P 键。" + +msgid "Q key." +msgstr "Q 键。" + +msgid "R key." +msgstr "R 键。" + +msgid "S key." +msgstr "S 键。" + +msgid "T key." +msgstr "T 键。" + +msgid "U key." +msgstr "U 键。" + +msgid "V key." +msgstr "V 键。" + +msgid "W key." +msgstr "W 键。" + +msgid "X key." +msgstr "X 键。" + +msgid "Y key." +msgstr "Y 键。" + +msgid "Z key." +msgstr "Z 键。" + +msgid "[ key." +msgstr "[ 键。" + +msgid "\\ key." +msgstr "\\ 键。" + +msgid "] key." +msgstr "] 键。" + +msgid "^ key." +msgstr "^ 键。" + +msgid "_ key." +msgstr "_ 键。" + +msgid "` key." +msgstr "` 键。" + +msgid "{ key." +msgstr "{ 键。" + +msgid "| key." +msgstr "| 键。" + +msgid "} key." +msgstr "} 键。" + +msgid "~ key." +msgstr "~ 键。" + +msgid "¥ key." +msgstr "¥ 键。" + +msgid "§ key." +msgstr "§ 键。" + +msgid "\"Globe\" key on Mac / iPad keyboard." +msgstr "Mac / iPad 键盘上的“地球”键。" + +msgid "\"On-screen keyboard\" key iPad keyboard." +msgstr "iPad 键盘上的“屏幕键盘”键。" + +msgid "英数 key on Mac keyboard." +msgstr "Mac 键盘上的“英数”键。" + +msgid "かな key on Mac keyboard." +msgstr "Mac 键盘上的“かな”键。" + +msgid "Key Code mask." +msgstr "键码掩码。" + +msgid "Modifier key mask." +msgstr "修饰键掩码。" + +msgid "" +"Automatically remapped to [constant KEY_META] on macOS and [constant " +"KEY_CTRL] on other platforms, this mask is never set in the actual events, " +"and should be used for key mapping only." +msgstr "" +"自动重映射为 macOS 上的 [constant KEY_META] 和其他平台上的 [constant " +"KEY_CTRL],此掩码在实际事件中从不设置,应仅用于键映射。" + +msgid "Shift key mask." +msgstr "Shift 键掩码。" + +msgid "Alt or Option (on macOS) key mask." +msgstr "Alt 或 Option(在 macOS 上)键掩码。" + +msgid "Command (on macOS) or Meta/Windows key mask." +msgstr "命令(在 macOS 上)或 Meta/Windows 键掩码。" + +msgid "Keypad key mask." +msgstr "Keypad 键掩码。" + +msgid "Group Switch key mask." +msgstr "Group Switch 键掩码。" + +msgid "" +"Enum value which doesn't correspond to any mouse button. This is used to " +"initialize [enum MouseButton] properties with a generic state." +msgstr "" +"与任何鼠标按钮都不对应的枚举值。这用于初始化具有通用状态的 [enum " +"MouseButton] 属性。" + +msgid "Primary mouse button, usually assigned to the left button." +msgstr "鼠标主键,通常分配给左键。" + +msgid "Secondary mouse button, usually assigned to the right button." +msgstr "鼠标次键,通常分配给右键。" + +msgid "Middle mouse button." +msgstr "鼠标中键。" + +msgid "Mouse wheel left button (only present on some mice)." +msgstr "鼠标滚轮左键(仅在某些鼠标上有实现)。" + +msgid "Mouse wheel right button (only present on some mice)." +msgstr "鼠标滚轮右键(仅在某些鼠标上有实现)。" + +msgid "" +"Extra mouse button 1. This is sometimes present, usually to the sides of the " +"mouse." +msgstr "鼠标额外键 1。有时会出现,通常位于鼠标的两侧。" + +msgid "" +"Extra mouse button 2. This is sometimes present, usually to the sides of the " +"mouse." +msgstr "鼠标额外键 2。有时会出现,通常位于鼠标的两侧。" + +msgid "Primary mouse button mask, usually for the left button." +msgstr "鼠标主键掩码,通常用于左键。" + +msgid "Secondary mouse button mask, usually for the right button." +msgstr "鼠标次键掩码,通常用于右键。" + +msgid "Middle mouse button mask." +msgstr "鼠标中键掩码。" + +msgid "Extra mouse button 1 mask." +msgstr "鼠标额外键 1 掩码。" + +msgid "Extra mouse button 2 mask." +msgstr "鼠标额外键 2 掩码。" + +msgid "An invalid game controller button." +msgstr "无效的游戏控制器按钮。" + +msgid "" +"Game controller SDL button A. Corresponds to the bottom action button: Sony " +"Cross, Xbox A, Nintendo B." +msgstr "" +"游戏控制器 SDL 按键 A。对应底部动作按钮:Sony Cross、Xbox A、Nintendo B。" + +msgid "" +"Game controller SDL button B. Corresponds to the right action button: Sony " +"Circle, Xbox B, Nintendo A." +msgstr "" +"游戏控制器 SDL 按钮 B。对应右侧动作按钮:Sony Circle、Xbox B、Nintendo A。" + +msgid "" +"Game controller SDL button X. Corresponds to the left action button: Sony " +"Square, Xbox X, Nintendo Y." +msgstr "" +"游戏控制器 SDL 按钮 X。对应左侧动作按钮:Sony Square、Xbox X、Nintendo Y。" + +msgid "" +"Game controller SDL button Y. Corresponds to the top action button: Sony " +"Triangle, Xbox Y, Nintendo X." +msgstr "" +"游戏控制器 SDL 按钮 Y。对应顶部动作按钮:Sony Triangle、Xbox Y、Nintendo X。" + +msgid "" +"Game controller SDL back button. Corresponds to the Sony Select, Xbox Back, " +"Nintendo - button." +msgstr "" +"游戏控制器 SDL back按钮。对应于 Sony Select、Xbox Back、Nintendo - 按钮。" + +msgid "" +"Game controller SDL guide button. Corresponds to the Sony PS, Xbox Home " +"button." +msgstr "游戏控制器 SDL guide 按钮。对应于索尼 PS、Xbox 的 Home 键。" + +msgid "Game controller SDL start button. Corresponds to the Nintendo + button." +msgstr "游戏控制器 SDL start 按钮。对应 Nintendo + 按钮。" + +msgid "" +"Game controller SDL left stick button. Corresponds to the Sony L3, Xbox L/LS " +"button." +msgstr "游戏控制器 SDL 左摇杆按钮。对应于 Sony L3、Xbox L/LS 按钮。" + +msgid "" +"Game controller SDL right stick button. Corresponds to the Sony R3, Xbox R/" +"RS button." +msgstr "游戏控制器 SDL 右摇杆按钮。对应于 Sony R3、Xbox R/RS 按钮。" + +msgid "" +"Game controller SDL left shoulder button. Corresponds to the Sony L1, Xbox " +"LB button." +msgstr "游戏控制器 SDL 左肩按钮。对应于 Sony L1、Xbox LB 按钮。" + +msgid "" +"Game controller SDL right shoulder button. Corresponds to the Sony R1, Xbox " +"RB button." +msgstr "游戏控制器 SDL 右肩按钮。对应于 Sony R1、Xbox RB 按钮。" + +msgid "Game controller D-pad up button." +msgstr "游戏控制器方向键向上按钮。" + +msgid "Game controller D-pad down button." +msgstr "游戏控制器方向键向下按钮。" + +msgid "Game controller D-pad left button." +msgstr "游戏控制器方向键向左键。" + +msgid "Game controller D-pad right button." +msgstr "游戏控制器方向键向右键。" + +msgid "" +"Game controller SDL miscellaneous button. Corresponds to Xbox share button, " +"PS5 microphone button, Nintendo Switch capture button." +msgstr "" +"游戏控制器 SDL 杂项按钮。对应 Xbox 分享键、PS5 麦克风键、Nintendo Switch 捕捉" +"键。" + +msgid "Game controller SDL paddle 1 button." +msgstr "游戏控制器 SDL 拨片 1 按钮。" + +msgid "Game controller SDL paddle 2 button." +msgstr "游戏控制器 SDL 拨片 2 按钮。" + +msgid "Game controller SDL paddle 3 button." +msgstr "游戏控制器 SDL 拨片 3 按钮。" + +msgid "Game controller SDL paddle 4 button." +msgstr "游戏控制器 SDL 拨片 4 按钮。" + +msgid "Game controller SDL touchpad button." +msgstr "游戏控制器 SDL 触摸板按钮。" + +msgid "The number of SDL game controller buttons." +msgstr "SDL 游戏控制器按钮的数量。" + +msgid "" +"The maximum number of game controller buttons supported by the engine. The " +"actual limit may be lower on specific platforms:\n" +"- [b]Android:[/b] Up to 36 buttons.\n" +"- [b]Linux:[/b] Up to 80 buttons.\n" +"- [b]Windows[/b] and [b]macOS:[/b] Up to 128 buttons." +msgstr "" +"引擎所支持的最大游戏控制器按钮数。特定平台上的实际界限可能更低:\n" +"- [b]Android:[/b]最多 36 个按钮。\n" +"- [b]Linux:[/b]最多 80 个按钮。\n" +"- [b]Windows[/b] 和 [b]macOS:[/b]最多 128 个按钮。" + +msgid "An invalid game controller axis." +msgstr "无效的游戏控制器轴。" + +msgid "Game controller left joystick x-axis." +msgstr "游戏控制器左操纵杆 x 轴。" + +msgid "Game controller left joystick y-axis." +msgstr "游戏控制器左操纵杆 y 轴。" + +msgid "Game controller right joystick x-axis." +msgstr "游戏控制器右操纵杆 x 轴。" + +msgid "Game controller right joystick y-axis." +msgstr "游戏控制器右操纵杆 y 轴。" + +msgid "Game controller left trigger axis." +msgstr "游戏控制器左扳机轴。" + +msgid "Game controller right trigger axis." +msgstr "游戏控制器左扳机轴。" + +msgid "The number of SDL game controller axes." +msgstr "SDL 游戏控制器轴的数量。" + +msgid "" +"The maximum number of game controller axes: OpenVR supports up to 5 " +"Joysticks making a total of 10 axes." +msgstr "最大游戏控制器轴数:OpenVR 最多支持 5 个操纵杆,总共 10 个轴。" + +msgid "" +"Enum value which doesn't correspond to any MIDI message. This is used to " +"initialize [enum MIDIMessage] properties with a generic state." +msgstr "" +"与任何 MIDI 消息都不对应的枚举值。这用于初始化具有通用状态的 [enum " +"MIDIMessage] 属性。" + +msgid "" +"MIDI note OFF message. See the documentation of [InputEventMIDI] for " +"information of how to use MIDI inputs." +msgstr "" +"MIDI 音符 OFF 消息。如何使用 MIDI 输入的信息请参阅 [InputEventMIDI] 的文档。" + +msgid "" +"MIDI note ON message. See the documentation of [InputEventMIDI] for " +"information of how to use MIDI inputs." +msgstr "" +"MIDI 音符 ON 消息。如何使用 MIDI 输入的信息请参阅 [InputEventMIDI] 的文档。" + +msgid "" +"MIDI aftertouch message. This message is most often sent by pressing down on " +"the key after it \"bottoms out\"." +msgstr "MIDI 触后消息。这个消息经常都是在按键“结束”后继续施压时发送。" + +msgid "" +"MIDI control change message. This message is sent when a controller value " +"changes. Controllers include devices such as pedals and levers." +msgstr "" +"MIDI 控制变化消息。这个消息会在控制器值发生变化时发送。控制器包括踏板、推杆等" +"设备。" + +msgid "" +"MIDI program change message. This message sent when the program patch number " +"changes." +msgstr "MIDI 音色变化消息。这个消息会在音色 Patch 号变化时发送。" + +msgid "" +"MIDI channel pressure message. This message is most often sent by pressing " +"down on the key after it \"bottoms out\". This message is different from " +"polyphonic after-touch as it indicates the highest pressure across all keys." +msgstr "" +"MIDI 通道压力消息。这个消息经常都是在按键“结束”后继续施压时发送。这个消息与复" +"音触后不同,因为它表示的是所有键中的最大压力。" + +msgid "" +"MIDI pitch bend message. This message is sent to indicate a change in the " +"pitch bender (wheel or lever, typically)." +msgstr "" +"MIDI 弯音消息。发送这个消息表示弯音器(一般是弯音轮或推杆)产生了变化。" + +msgid "" +"MIDI system exclusive message. This has behavior exclusive to the device " +"you're receiving input from. Getting this data is not implemented in Godot." +msgstr "" +"MIDI 系统专有消息。行为由你所用来获取输入的设备专有。Godot 未实现该数据的获" +"取。" + +msgid "" +"MIDI quarter frame message. Contains timing information that is used to " +"synchronize MIDI devices. Getting this data is not implemented in Godot." +msgstr "" +"MIDI 四分帧消息。包含用于同步 MIDI 设备的时间信息。Godot 未实现该数据的获取。" + +msgid "" +"MIDI song position pointer message. Gives the number of 16th notes since the " +"start of the song. Getting this data is not implemented in Godot." +msgstr "" +"MIDI 歌曲位置指针消息。提供自歌曲开始以来所经过的十六分音符数。Godot 未实现该" +"数据的获取。" + +msgid "" +"MIDI song select message. Specifies which sequence or song is to be played. " +"Getting this data is not implemented in Godot." +msgstr "MIDI 歌曲选择消息。指定要播放的序列或歌曲。Godot 未实现该数据的获取。" + +msgid "" +"MIDI tune request message. Upon receiving a tune request, all analog " +"synthesizers should tune their oscillators." +msgstr "MIDI 调谐请求消息。收到调谐请求后,所有模拟合成器都应调整其振荡器。" + +msgid "" +"MIDI timing clock message. Sent 24 times per quarter note when " +"synchronization is required." +msgstr "MIDI 时钟消息。需要同步时,每四分音符会发送 24 次。" + +msgid "" +"MIDI start message. Start the current sequence playing. This message will be " +"followed with Timing Clocks." +msgstr "MIDI 开始消息。开始当前序列的播放。这个消息后会跟随时钟消息。" + +msgid "MIDI continue message. Continue at the point the sequence was stopped." +msgstr "MIDI 继续消息。从序列停止的位置继续。" + +msgid "MIDI stop message. Stop the current sequence." +msgstr "MIDI 停止消息。停止当前序列。" + +msgid "" +"MIDI active sensing message. This message is intended to be sent repeatedly " +"to tell the receiver that a connection is alive." +msgstr "MIDI 活跃感知消息。这个消息的目的是要重复发送,告知接收方连接仍存在。" + +msgid "" +"MIDI system reset message. Reset all receivers in the system to power-up " +"status. It should not be sent on power-up itself." +msgstr "" +"MIDI 系统重置消息。将系统中的所有接收方重置为上电状态。本身不应在上电时发送。" + +msgid "" +"Methods that return [enum Error] return [constant OK] when no error " +"occurred.\n" +"Since [constant OK] has value 0, and all other error constants are positive " +"integers, it can also be used in boolean checks.\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"var error = method_that_returns_error()\n" +"if error != OK:\n" +" printerr(\"Failure!\")\n" +"\n" +"# Or, alternatively:\n" +"if error:\n" +" printerr(\"Still failing!\")\n" +"[/codeblock]\n" +"[b]Note:[/b] Many functions do not return an error code, but will print " +"error messages to standard output." +msgstr "" +"返回 [enum Error] 的方法会在没有错误发生时返回 [constant OK]。\n" +"由于 [constant OK] 的值为 0,并且所有其他错误常数都是正整数,因此返回值也可以" +"用于布尔检查。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"var error = method_that_returns_error()\n" +"if error != OK:\n" +" printerr(\"Failure!\")\n" +"\n" +"# 或者,等价于:\n" +"if error:\n" +" printerr(\"Still failing!\")\n" +"[/codeblock]\n" +"[b]注意:[/b]许多函数不返回错误代码,但会将错误信息打印到标准输出。" + +msgid "Generic error." +msgstr "一般性错误。" + +msgid "Unavailable error." +msgstr "不可用的错误。" + +msgid "Unconfigured error." +msgstr "未配置的错误。" + +msgid "Unauthorized error." +msgstr "未经授权的错误。" + +msgid "Parameter range error." +msgstr "参数范围错误。" + +msgid "Out of memory (OOM) error." +msgstr "内存不足(OOM)错误。" + +msgid "File: Not found error." +msgstr "文件:未找到错误。" + +msgid "File: Bad drive error." +msgstr "文件:坏驱动器错误。" + +msgid "File: Bad path error." +msgstr "文件:错误的路径错误。" + +msgid "File: No permission error." +msgstr "文件:无权限错误。" + +msgid "File: Already in use error." +msgstr "文件:已在使用错误。" + +msgid "File: Can't open error." +msgstr "文件:无法打开错误。" + +msgid "File: Can't write error." +msgstr "文件:无法写入错误。" + +msgid "File: Can't read error." +msgstr "文件:无法读取错误。" + +msgid "File: Unrecognized error." +msgstr "文件:未识别的错误。" + +msgid "File: Corrupt error." +msgstr "文件:损坏错误。" + +msgid "File: Missing dependencies error." +msgstr "文件:缺少依赖项错误。" + +msgid "File: End of file (EOF) error." +msgstr "文件:文件结束(EOF)错误。" + +msgid "Can't open error." +msgstr "无法打开错误。" + +msgid "Can't create error." +msgstr "无法创建错误。" + +msgid "Query failed error." +msgstr "查询失败错误。" + +msgid "Already in use error." +msgstr "已在使用中错误。" + +msgid "Locked error." +msgstr "锁定错误。" + +msgid "Timeout error." +msgstr "超时错误。" + +msgid "Can't connect error." +msgstr "无法连接错误。" + +msgid "Can't resolve error." +msgstr "无法解决错误。" + +msgid "Connection error." +msgstr "连接错误。" + +msgid "Can't acquire resource error." +msgstr "无法获取资源错误。" + +msgid "Can't fork process error." +msgstr "无法分叉进程错误。" + +msgid "Invalid data error." +msgstr "无效数据错误。" + +msgid "Invalid parameter error." +msgstr "无效参数错误。" + +msgid "Already exists error." +msgstr "已存在的错误。" + +msgid "Does not exist error." +msgstr "不存在的错误。" + +msgid "Database: Read error." +msgstr "数据库:读取错误。" + +msgid "Database: Write error." +msgstr "数据库:写入错误。" + +msgid "Compilation failed error." +msgstr "编译失败错误。" + +msgid "Method not found error." +msgstr "方法未找到错误。" + +msgid "Linking failed error." +msgstr "链接失败错误。" + +msgid "Script failed error." +msgstr "脚本失败错误。" + +msgid "Cycling link (import cycle) error." +msgstr "循环链接(导入循环)错误。" + +msgid "Invalid declaration error." +msgstr "无效声明错误。" + +msgid "Duplicate symbol error." +msgstr "符号重复错误。" + +msgid "Parse error." +msgstr "解析错误。" + +msgid "Busy error." +msgstr "忙碌错误。" + +msgid "Skip error." +msgstr "跳过错误。" + +msgid "" +"Help error. Used internally when passing [code]--version[/code] or [code]--" +"help[/code] as executable options." +msgstr "" +"帮助错误。内部使用,用于将 [code]--version[/code] 或 [code]--help[/code] 作为" +"选项传递给可执行文件的情况。" + +msgid "" +"Bug error, caused by an implementation issue in the method.\n" +"[b]Note:[/b] If a built-in method returns this code, please open an issue on " +"[url=https://github.com/godotengine/godot/issues]the GitHub Issue Tracker[/" +"url]." +msgstr "" +"Bug 错误,由方法中的实现问题引起。\n" +"[b]注意:[/b]如果内置方法返回此代码,请在 [url=https://github.com/" +"godotengine/godot/issues]GitHub 问题追踪器[/url] 上开一个问题。" + +msgid "" +"Printer on fire error (This is an easter egg, no built-in methods return " +"this error code)." +msgstr "打印机起火错误(这是个彩蛋,引擎中没有内置方法会返回此错误码)。" + +msgid "The property has no hint for the editor." +msgstr "该属性没有编辑器提示。" + +msgid "" +"Hints that an [int] or [float] property should be within a range specified " +"via the hint string [code]\"min,max\"[/code] or [code]\"min,max,step\"[/" +"code]. The hint string can optionally include [code]\"or_greater\"[/code] " +"and/or [code]\"or_less\"[/code] to allow manual input going respectively " +"above the max or below the min values.\n" +"[b]Example:[/b] [code]\"-360,360,1,or_greater,or_less\"[/code].\n" +"Additionally, other keywords can be included: [code]\"exp\"[/code] for " +"exponential range editing, [code]\"radians\"[/code] for editing radian " +"angles in degrees, [code]\"degrees\"[/code] to hint at an angle and " +"[code]\"hide_slider\"[/code] to hide the slider." +msgstr "" +"提示 [int] 或 [float] 属性应在提示字符串 [code]\"min,max\"[/code] 或 " +"[code]\"min,max,step\"[/code] 指定的范围内。提示字符串可以选择包含 " +"[code]\"or_greater\"[/code] 和/或 [code]\"or_less\"[/code] 以允许手动输入高于" +"最大值或低于最小值的值。\n" +"[b]示例:[/b][code]\"-360,360,1,or_greater,or_less\"[/code]。\n" +"此外,还可以包含其他关键字:[code]\"exp\"[/code] 用于指数范围编辑," +"[code]\"radians\"[/code] 用于以度数编辑弧度角,[code]\"degrees\"[/code] 提示" +"一个角度,以及 [code]\"hide_slider\"[/code] 隐藏滑块。" + +msgid "" +"Hints that an [int] or [String] property is an enumerated value to pick in a " +"list specified via a hint string.\n" +"The hint string is a comma separated list of names such as [code]\"Hello," +"Something,Else\"[/code]. Whitespaces are [b]not[/b] removed from either end " +"of a name. For integer properties, the first name in the list has value 0, " +"the next 1, and so on. Explicit values can also be specified by appending " +"[code]:integer[/code] to the name, e.g. [code]\"Zero,One,Three:3,Four," +"Six:6\"[/code]." +msgstr "" +"提示 [int] 或 [String] 属性是枚举值,可通过提示字符串在指定的列表中选取。\n" +"该提示字符串是逗号分隔的名称列表,例如 [code]\"Hello,Something,Else\"[/" +"code]。 [b]不会[/b]从名称的任何一端删除空格。对于整数属性,列表中的第一个名称" +"的值为 0,下一个名称的值为 1,依此类推。也可以通过将 [code]:integer[/code] 附" +"加到名称来显式指定值,例如 [code]\"Zero,One,Three:3,Four,Six:6\"[/code]。" + +msgid "" +"Hints that a [String] property can be an enumerated value to pick in a list " +"specified via a hint string such as [code]\"Hello,Something,Else\"[/code].\n" +"Unlike [constant PROPERTY_HINT_ENUM], a property with this hint still " +"accepts arbitrary values and can be empty. The list of values serves to " +"suggest possible values." +msgstr "" +"提示 [String] 属性为枚举值,可以通过提示字符串在指定的列表中选取,例如 " +"[code]\"Hello,Something,Else\"[/code]。\n" +"与 [constant PROPERTY_HINT_ENUM] 不同,具有该提示的属性仍然接受任意值并且可以" +"为空。值列表用于建议可能的值。" + +msgid "" +"Hints that a [float] property should be edited via an exponential easing " +"function. The hint string can include [code]\"attenuation\"[/code] to flip " +"the curve horizontally and/or [code]\"positive_only\"[/code] to exclude in/" +"out easing and limit values to be greater than or equal to zero." +msgstr "" +"提示应通过指数缓动函数编辑 [float] 属性。提示字符串可以包括 " +"[code]\"attenuation\"[/code] 以水平翻转曲线,和/或 [code]\"positive_only\"[/" +"code] 以排除 in/out 缓动并限制值大于或等于零。" + +msgid "" +"Hints that a vector property should allow its components to be linked. For " +"example, this allows [member Vector2.x] and [member Vector2.y] to be edited " +"together." +msgstr "" +"提示向量属性应该允许分量链接。例如,这能够让 [member Vector2.x] 和 [member " +"Vector2.y] 被一起编辑。" + +msgid "" +"Hints that an [int] property is a bitmask with named bit flags.\n" +"The hint string is a comma separated list of names such as [code]\"Bit0,Bit1," +"Bit2,Bit3\"[/code]. Whitespaces are [b]not[/b] removed from either end of a " +"name. The first name in the list has value 1, the next 2, then 4, 8, 16 and " +"so on. Explicit values can also be specified by appending [code]:integer[/" +"code] to the name, e.g. [code]\"A:4,B:8,C:16\"[/code]. You can also combine " +"several flags ([code]\"A:4,B:8,AB:12,C:16\"[/code]).\n" +"[b]Note:[/b] A flag value must be at least [code]1[/code] and at most " +"[code]2 ** 32 - 1[/code].\n" +"[b]Note:[/b] Unlike [constant PROPERTY_HINT_ENUM], the previous explicit " +"value is not taken into account. For the hint [code]\"A:16,B,C\"[/code], A " +"is 16, B is 2, C is 4." +msgstr "" +"提示 [int] 属性为位掩码,位标志拥有名称。\n" +"提示字符串为逗号分隔的名称列表,例如 [code]\"Bit0,Bit1,Bit2,Bit3\"[/code]。名" +"称两端的空白字符[b]不会[/b]被移除。列表中的第一个名称的值为 1、然后是 2、接下" +"来就是 4、8、16 等值。也可以通过在名称后加上 [code]:整数[/code] 来指定显式的" +"值,例如 [code]\"A:4,B:8,C:16\"[/code]。你还可以对标志进行组合([code]\"A:4," +"B:8,AB:12,C:16\"[/code])。\n" +"[b]注意:[/b]标志值最多为 [code]1[/code],最多为 [code]2 ** 32 - 1[/code]。\n" +"[b]注意:[/b]与 [constant PROPERTY_HINT_ENUM] 不同,不会考虑前一个显式值。如" +"果提示为 [code]\"A:16,B,C\"[/code],则 A 为 16、B 为 2、C 为 4。" + +msgid "" +"Hints that an [int] property is a bitmask using the optionally named 2D " +"render layers." +msgstr "提示 [int] 属性为位掩码,表示可命名的 2D 渲染层。" + +msgid "" +"Hints that an [int] property is a bitmask using the optionally named 2D " +"physics layers." +msgstr "提示 [int] 属性为位掩码,表示可命名的 2D 物理层。" + +msgid "" +"Hints that an [int] property is a bitmask using the optionally named 2D " +"navigation layers." +msgstr "提示 [int] 属性为位掩码,表示可命名的 2D 导航层。" + +msgid "" +"Hints that an [int] property is a bitmask using the optionally named 3D " +"render layers." +msgstr "提示 [int] 属性为位掩码,表示可命名的 3D 渲染层。" + +msgid "" +"Hints that an [int] property is a bitmask using the optionally named 3D " +"physics layers." +msgstr "提示 [int] 属性为位掩码,表示可命名的 3D 物理层。" + +msgid "" +"Hints that an [int] property is a bitmask using the optionally named 3D " +"navigation layers." +msgstr "提示 [int] 属性为位掩码,表示可命名的 3D 导航层。" + +msgid "" +"Hints that a [String] property is a path to a file. Editing it will show a " +"file dialog for picking the path. The hint string can be a set of filters " +"with wildcards like [code]\"*.png,*.jpg\"[/code]." +msgstr "" +"提示 [String] 属性为文件的路径。编辑时会弹出选取路径的文件对话框。提示字符串" +"可以设为一组带有通配符的筛选器,例如 [code]\"*.png,*.jpg\"[/code]。" + +msgid "" +"Hints that a [String] property is a path to a directory. Editing it will " +"show a file dialog for picking the path." +msgstr "提示 [String] 属性为目录的路径。编辑时会弹出选取路径的文件对话框。" + +msgid "" +"Hints that a [String] property is an absolute path to a file outside the " +"project folder. Editing it will show a file dialog for picking the path. The " +"hint string can be a set of filters with wildcards, like [code]\"*.png,*." +"jpg\"[/code]." +msgstr "" +"提示 [String] 属性为文件的绝对路径,位于项目文件夹之外。编辑时会弹出选取路径" +"的文件对话框。提示字符串可以设为一组带有通配符的筛选器,例如 [code]\"*.png,*." +"jpg\"[/code]。" + +msgid "" +"Hints that a [String] property is an absolute path to a directory outside " +"the project folder. Editing it will show a file dialog for picking the path." +msgstr "" +"提示 [String] 属性为目录的绝对路径,位于项目文件夹之外。编辑时会弹出选取路径" +"的文件对话框。" + +msgid "" +"Hints that a property is an instance of a [Resource]-derived type, " +"optionally specified via the hint string (e.g. [code]\"Texture2D\"[/code]). " +"Editing it will show a popup menu of valid resource types to instantiate." +msgstr "" +"提示属性是 [Resource] 派生类型的实例,可通过提示字符串指定(例如 " +"[code]\"Texture2D\"[/code])。 编辑该属性会显示一个有效资源类型的弹出菜单用以" +"实例化。" + +msgid "" +"Hints that a [String] property is text with line breaks. Editing it will " +"show a text input field where line breaks can be typed." +msgstr "" +"提示 [String] 属性为包含换行的文本。编辑是会显示文本输入字段,可以进行换行。" + +msgid "Hints that a [String] property is an [Expression]." +msgstr "提示 [String] 属性为 [Expression]。" + +msgid "" +"Hints that a [String] property should show a placeholder text on its input " +"field, if empty. The hint string is the placeholder text to use." +msgstr "" +"提示 [String] 属性在为空时应当显示占位文本。提示字符串为所使用的占位文本。" + +msgid "" +"Hints that a [Color] property should be edited without affecting its " +"transparency ([member Color.a] is not editable)." +msgstr "" +"提示一个 [Color] 属性在编辑时不能影响其透明度([member Color.a] 不可编辑)。" + +msgid "" +"Hint that a property represents a particular type. If a property is " +"[constant TYPE_STRING], allows to set a type from the create dialog. If you " +"need to create an [Array] to contain elements of a specific type, the " +"[code]hint_string[/code] must encode nested types using [code]\":\"[/code] " +"and [code]\"/\"[/code] for specifying [Resource] types. For instance:\n" +"[codeblock]\n" +"hint_string = \"%s:\" % [TYPE_INT] # Array of integers.\n" +"hint_string = \"%s:%s:\" % [TYPE_ARRAY, TYPE_REAL] # Two-dimensional array " +"of floats.\n" +"hint_string = \"%s/%s:Resource\" % [TYPE_OBJECT, TYPE_OBJECT] # Array of " +"resources.\n" +"hint_string = \"%s:%s/%s:Resource\" % [TYPE_ARRAY, TYPE_OBJECT, TYPE_OBJECT] " +"# Two-dimensional array of resources.\n" +"[/codeblock]\n" +"[b]Note:[/b] The final colon is required for properly detecting built-in " +"types." +msgstr "" +"提示一个属性代表特定的类型。如果属性为 [constant TYPE_STRING],则可以通过创建" +"对话框设置其类型。如果你需要创建一个 [Array] 来放置特定类型的元素,则 " +"[code]hint_string[/code] 必须使用 [code]\":\"[/code] 来编码嵌套类型,使用 " +"[code]\"/\"[/code] 来指定 [Resource] 类型。例如:\n" +"[codeblock]\n" +"hint_string = \"%s:\" % [TYPE_INT] # 整数数组。\n" +"hint_string = \"%s:%s:\" % [TYPE_ARRAY, TYPE_REAL] # 浮点数二维数组。\n" +"hint_string = \"%s/%s:Resource\" % [TYPE_OBJECT, TYPE_OBJECT] # 资源数组。\n" +"hint_string = \"%s:%s/%s:Resource\" % [TYPE_ARRAY, TYPE_OBJECT, TYPE_OBJECT] " +"# 资源二维数组。\n" +"[/codeblock]\n" +"[b]注意:[/b]最后的冒号是必须的,否则无法正确检测内置类型。" + +msgid "" +"Hints that a string property is a locale code. Editing it will show a locale " +"dialog for picking language and country." +msgstr "" +"提示一个字符串属性是一个区域设置代码。编辑它将显示一个用于选择语言和地区的区" +"域设置对话框。" + +msgid "" +"Hints that a dictionary property is string translation map. Dictionary keys " +"are locale codes and, values are translated strings." +msgstr "" +"提示一个字典属性是字符串翻译映射。字典的键是区域设置代码,值是翻译后的字符" +"串。" + +msgid "" +"Hints that a quaternion property should disable the temporary euler editor." +msgstr "提示四元数属性应当禁用临时欧拉值编辑器。" + +msgid "" +"Hints that a string property is a password, and every character is replaced " +"with the secret character." +msgstr "提示字符串属性为密码,每一个字符都会被替换为秘密字符。" + +msgid "" +"The property is not stored, and does not display in the editor. This is the " +"default for non-exported properties." +msgstr "该属性不被存储,也不会显示在编辑器中。这是非导出属性的默认值。" + +msgid "The property is serialized and saved in the scene file (default)." +msgstr "将属性序列化并保存到场景文件中(默认)。" + +msgid "The property is shown in the [EditorInspector] (default)." +msgstr "该属性将被显示在 [EditorInspector](默认)中。" + +msgid "The property can be checked in the [EditorInspector]." +msgstr "该属性可以在 [EditorInspector] 中被勾选。" + +msgid "The property is checked in the [EditorInspector]." +msgstr "该属性在 [EditorInspector] 中已被勾选。" + +msgid "Used to group properties together in the editor. See [EditorInspector]." +msgstr "用于在编辑器中将属性编组在一起。请参阅 [EditorInspector]。" + +msgid "Used to categorize properties together in the editor." +msgstr "在编辑器中用于为属性分类。" + +msgid "" +"Used to group properties together in the editor in a subgroup (under a " +"group). See [EditorInspector]." +msgstr "" +"用于在子组(一个组下)中将编辑器中的属性编组在一起。请参阅 " +"[EditorInspector]。" + +msgid "The property does not save its state in [PackedScene]." +msgstr "该属性不在 [PackedScene] 中保存其状态。" + +msgid "Editing the property prompts the user for restarting the editor." +msgstr "编辑属性会提示用户重新启动编辑器。" + +msgid "" +"The property is a script variable which should be serialized and saved in " +"the scene file." +msgstr "该属性是一个脚本变量,应该被序列化并保存在场景文件中。" + +msgid "The property is an array." +msgstr "该属性为数组。" + +msgid "" +"When duplicating a resource with [method Resource.duplicate], and this flag " +"is set on a property of that resource, the property should always be " +"duplicated, regardless of the [code]subresources[/code] bool parameter." +msgstr "" +"当创建一个带有 [method Resource.duplicate] 的 Resource,并且它的标志是在一个 " +"Resource 的属性上设置的副本时候,无论 [code]subresources[/code] 为多少,该属" +"性永远都会被创建为副本。" + +msgid "" +"When duplicating a resource with [method Resource.duplicate], and this flag " +"is set on a property of that resource, the property should never be " +"duplicated, regardless of the [code]subresources[/code] bool parameter." +msgstr "" +"使用 [method Resource.duplicate] 复制资源时,如果该资源的某个属性上设有这个标" +"志,则不会对该属性进行复制,无视 [code]subresources[/code] 布尔型参数。" + +msgid "The property is read-only in the [EditorInspector]." +msgstr "该属性在 [EditorInspector] 中只读。" + +msgid "Default usage (storage, editor and network)." +msgstr "默认用法(存储、编辑器和网络)。" + +msgid "" +"Default usage but without showing the property in the editor (storage, " +"network)." +msgstr "默认用法,但不在编辑器中显示属性(存储、网络)。" + +msgid "Flag for a normal method." +msgstr "普通方法的标志。" + +msgid "Flag for an editor method." +msgstr "编辑器方法的标志。" + +msgid "Flag for a constant method." +msgstr "常量方法的标志。" + +msgid "Flag for a virtual method." +msgstr "虚方法的标志。" + +msgid "Flag for a method with a variable number of arguments." +msgstr "具有可变数量参数的方法的标志。" + +msgid "Flag for a static method." +msgstr "静态方法的标志。" + +msgid "" +"Used internally. Allows to not dump core virtual methods (such as [method " +"Object._notification]) to the JSON API." +msgstr "" +"内部使用。允许不将核心虚拟方法(例如 [method Object._notification])转储到 " +"JSON API。" + +msgid "Default method flags (normal)." +msgstr "默认方法标志(正常)。" + +msgid "Variable is [code]null[/code]." +msgstr "变量为 [code]null[/code]。" + +msgid "Variable is of type [bool]." +msgstr "变量类型为 [bool]。" + +msgid "Variable is of type [int]." +msgstr "变量类型为 [int]。" + +msgid "Variable is of type [float]." +msgstr "变量的类型为 [float]。" + +msgid "Variable is of type [String]." +msgstr "变量类型为 [String]。" + +msgid "Variable is of type [Vector2]." +msgstr "变量类型为 [Vector2]。" + +msgid "Variable is of type [Vector2i]." +msgstr "变量类型为 [Vector2i]。" + +msgid "Variable is of type [Rect2]." +msgstr "变量类型为 [Rect2]。" + +msgid "Variable is of type [Rect2i]." +msgstr "变量类型为 [Rect2i]。" + +msgid "Variable is of type [Vector3]." +msgstr "变量类型为 [Vector3]。" + +msgid "Variable is of type [Vector3i]." +msgstr "变量类型为 [Vector3i]。" + +msgid "Variable is of type [Transform2D]." +msgstr "变量类型为 [Transform2D]。" + +msgid "Variable is of type [Vector4]." +msgstr "变量类型为 [Vector4]。" + +msgid "Variable is of type [Vector4i]." +msgstr "变量类型为 [Vector4i]。" + +msgid "Variable is of type [Plane]." +msgstr "变量类型为 [Plane]。" + +msgid "Variable is of type [Quaternion]." +msgstr "变量类型为 [Quaternion]。" + +msgid "Variable is of type [AABB]." +msgstr "变量类型为 [AABB]。" + +msgid "Variable is of type [Basis]." +msgstr "变量类型为 [Basis]。" + +msgid "Variable is of type [Transform3D]." +msgstr "变量类型为 [Transform3D]。" + +msgid "Variable is of type [Projection]." +msgstr "变量类型为 [Projection]。" + +msgid "Variable is of type [Color]." +msgstr "变量类型为 [Color]。" + +msgid "Variable is of type [StringName]." +msgstr "变量类型为 [StringName]。" + +msgid "Variable is of type [NodePath]." +msgstr "变量类型为 [NodePath]。" + +msgid "Variable is of type [RID]." +msgstr "变量类型为 [RID]。" + +msgid "Variable is of type [Object]." +msgstr "变量类型为 [Object]。" + +msgid "Variable is of type [Callable]." +msgstr "变量类型为 [Callable]。" + +msgid "Variable is of type [Signal]." +msgstr "变量类型为 [Signal]。" + +msgid "Variable is of type [Dictionary]." +msgstr "变量类型为 [Dictionary]。" + +msgid "Variable is of type [Array]." +msgstr "变量类型为 [Array]。" + +msgid "Variable is of type [PackedByteArray]." +msgstr "变量类型为 [PackedByteArray]。" + +msgid "Variable is of type [PackedInt32Array]." +msgstr "变量类型为 [PackedInt32Array]。" + +msgid "Variable is of type [PackedInt64Array]." +msgstr "变量类型为 [PackedInt64Array]。" + +msgid "Variable is of type [PackedFloat32Array]." +msgstr "变量类型为 [PackedFloat32Array]。" + +msgid "Variable is of type [PackedFloat64Array]." +msgstr "变量类型为 [PackedFloat64Array]。" + +msgid "Variable is of type [PackedStringArray]." +msgstr "变量类型为 [PackedStringArray]。" + +msgid "Variable is of type [PackedVector2Array]." +msgstr "变量类型为 [PackedVector2Array]。" + +msgid "Variable is of type [PackedVector3Array]." +msgstr "变量类型为 [PackedVector3Array]。" + +msgid "Variable is of type [PackedColorArray]." +msgstr "变量类型为 [PackedColorArray]。" + +msgid "Represents the size of the [enum Variant.Type] enum." +msgstr "代表 [enum Variant.Type] 枚举的大小。" + +msgid "Equality operator ([code]==[/code])." +msgstr "相等运算符([code]==[/code])。" + +msgid "Inequality operator ([code]!=[/code])." +msgstr "不等运算符([code]!=[/code])。" + +msgid "Less than operator ([code]<[/code])." +msgstr "小于运算符([code]<[/code])。" + +msgid "Less than or equal operator ([code]<=[/code])." +msgstr "小于等于运算符([code]<=[/code])。" + +msgid "Greater than operator ([code]>[/code])." +msgstr "大于运算符([code]>[/code])。" + +msgid "Greater than or equal operator ([code]>=[/code])." +msgstr "大于等于运算符([code]>=[/code])。" + +msgid "Addition operator ([code]+[/code])." +msgstr "加法运算符([code]+[/code])。" + +msgid "Subtraction operator ([code]-[/code])." +msgstr "减法运算符([code]-[/code])。" + +msgid "Multiplication operator ([code]*[/code])." +msgstr "乘法运算符([code]*[/code])。" + +msgid "Division operator ([code]/[/code])." +msgstr "除法运算符([code]/[/code])。" + +msgid "Unary negation operator ([code]-[/code])." +msgstr "一元减号运算符([code]-[/code])。" + +msgid "Unary plus operator ([code]+[/code])." +msgstr "一元加号运算符([code]+[/code])。" + +msgid "Remainder/modulo operator ([code]%[/code])." +msgstr "余数/取模运算符([code]%[/code])。" + +msgid "Power operator ([code]**[/code])." +msgstr "幂运算符([code]**[/code])。" + +msgid "Left shift operator ([code]<<[/code])." +msgstr "左移运算符([code]<<[/code])。" + +msgid "Right shift operator ([code]>>[/code])." +msgstr "右移运算符([code]>>[/code])。" + +msgid "Bitwise AND operator ([code]&[/code])." +msgstr "按位与运算符([code]&[/code])。" + +msgid "Bitwise OR operator ([code]|[/code])." +msgstr "按位或运算符([code]|[/code])。" + +msgid "Bitwise XOR operator ([code]^[/code])." +msgstr "按位异或运算符([code]^[/code])。" + +msgid "Bitwise NOT operator ([code]~[/code])." +msgstr "按位非运算符([code]~[/code])。" + +msgid "Logical AND operator ([code]and[/code] or [code]&&[/code])." +msgstr "逻辑与运算符([code]and[/code] 或 [code]&&[/code])。" + +msgid "Logical OR operator ([code]or[/code] or [code]||[/code])." +msgstr "逻辑或运算符([code]or[/code] 或 [code]||[/code])。" + +msgid "Logical XOR operator (not implemented in GDScript)." +msgstr "逻辑异或运算符(未在 GDScript 中实现)。" + +msgid "Logical NOT operator ([code]not[/code] or [code]![/code])." +msgstr "逻辑非运算符([code]not[/code] 或 [code]![/code])。" + +msgid "Logical IN operator ([code]in[/code])." +msgstr "逻辑 IN 运算符([code]in[/code])。" + +msgid "Represents the size of the [enum Variant.Operator] enum." +msgstr "代表 [enum Variant.Operator] 枚举的大小。" + +msgid "Axis-Aligned Bounding Box." +msgstr "轴对齐包围盒。" + +msgid "" +"[AABB] consists of a position, a size, and several utility functions. It is " +"typically used for fast overlap tests.\n" +"It uses floating-point coordinates. The 2D counterpart to [AABB] is " +"[Rect2].\n" +"Negative values for [member size] are not supported and will not work for " +"most methods. Use [method abs] to get an AABB with a positive size.\n" +"[b]Note:[/b] Unlike [Rect2], [AABB] does not have a variant that uses " +"integer coordinates." +msgstr "" +"[AABB] 由一个位置、一个大小和若干实用函数组成。通常用于快速重叠测试。\n" +"它使用浮点坐标。[AABB] 的 2D 对应物为 [Rect2]。\n" +"不支持负的 [member size],并且不适用于大多数方法。使用 [method abs] 获得具有" +"正尺寸的 AABB。\n" +"[b]注意:[/b]与 [Rect2] 不同,[AABB] 没有使用整数坐标的变体。" + +msgid "Math documentation index" +msgstr "数学文档索引" + +msgid "Vector math" +msgstr "向量数学" + +msgid "Advanced vector math" +msgstr "高等向量数学" + +msgid "" +"Constructs a default-initialized [AABB] with default (zero) values of " +"[member position] and [member size]." +msgstr "" +"使用 [member position] 和 [member size] 的默认值(零)构造一个默认初始化的 " +"[AABB]。" + +msgid "Constructs an [AABB] as a copy of the given [AABB]." +msgstr "构造给定 [AABB] 的副本。" + +msgid "Constructs an [AABB] from a position and size." +msgstr "从一个位置和大小构造 [AABB] 。" + +msgid "" +"Returns an AABB with equivalent position and size, modified so that the most-" +"negative corner is the origin and the size is positive." +msgstr "返回等价的 AABB,其原点被修正至最负数的角落,大小被修正为正数。" + +msgid "" +"Returns [code]true[/code] if this [AABB] completely encloses another one." +msgstr "该 [AABB] 完全包含另一个时,返回 [code]true[/code]。" + +msgid "" +"Returns a copy of this [AABB] expanded to include a given point.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# position (-3, 2, 0), size (1, 1, 1)\n" +"var box = AABB(Vector3(-3, 2, 0), Vector3(1, 1, 1))\n" +"# position (-3, -1, 0), size (3, 4, 2), so we fit both the original AABB and " +"Vector3(0, -1, 2)\n" +"var box2 = box.expand(Vector3(0, -1, 2))\n" +"[/gdscript]\n" +"[csharp]\n" +"// position (-3, 2, 0), size (1, 1, 1)\n" +"var box = new Aabb(new Vector3(-3, 2, 0), new Vector3(1, 1, 1));\n" +"// position (-3, -1, 0), size (3, 4, 2), so we fit both the original AABB " +"and Vector3(0, -1, 2)\n" +"var box2 = box.Expand(new Vector3(0, -1, 2));\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回该 [AABB] 的副本,该副本扩展至包含给出的点。\n" +"[b]例子:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 位置 (-3, 2, 0),大小 (1, 1, 1)\n" +"var box = AABB(Vector3(-3, 2, 0), Vector3(1, 1, 1))\n" +"# 位置 (-3, -1, 0),大小 (3, 4, 2),包含原来的 AABB 和 Vector3(0, -1, 2)\n" +"var box2 = box.expand(Vector3(0, -1, 2))\n" +"[/gdscript]\n" +"[csharp]\n" +"// 位置 (-3, 2, 0),大小 (1, 1, 1)\n" +"var box = new Aabb(new Vector3(-3, 2, 0), new Vector3(1, 1, 1));\n" +"// 位置 (-3, -1, 0),大小 (3, 4, 2),包含原来的 AABB 和 Vector3(0, -1, 2)\n" +"var box2 = box.Expand(new Vector3(0, -1, 2));\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the center of the [AABB], which is equal to [member position] + " +"([member size] / 2)." +msgstr "返回该 [AABB] 的中心点,等于 [member position] + ([member size] / 2)。" + +msgid "Gets the position of the 8 endpoints of the [AABB] in space." +msgstr "获取该 [AABB] 的 8 个端点的位置。" + +msgid "Returns the normalized longest axis of the [AABB]." +msgstr "返回该 [AABB] 归一化后的最长轴。" + +msgid "" +"Returns the index of the longest axis of the [AABB] (according to " +"[Vector3]'s [code]AXIS_*[/code] constants)." +msgstr "" +"返回该 [AABB] 最长轴的索引(根据 [Vector3] 的 [code]AXIS_*[/code] 常量)。" + +msgid "Returns the scalar length of the longest axis of the [AABB]." +msgstr "返回该 [AABB] 最长轴的标量长度。" + +msgid "Returns the normalized shortest axis of the [AABB]." +msgstr "返回该 [AABB] 归一化后的最短轴。" + +msgid "" +"Returns the index of the shortest axis of the [AABB] (according to " +"[Vector3]::AXIS* enum)." +msgstr "" +"返回该 [AABB] 最短轴的索引(根据 [Vector3] 的 [code]AXIS_*[/code] 常量)。" + +msgid "Returns the scalar length of the shortest axis of the [AABB]." +msgstr "返回该 [AABB] 最短轴的标量长度。" + +msgid "" +"Returns the support point in a given direction. This is useful for collision " +"detection algorithms." +msgstr "返回指定方向上的支持点。常用于碰撞检测算法。" + +msgid "Returns the volume of the [AABB]." +msgstr "返回该 [AABB] 的体积。" + +msgid "" +"Returns a copy of the [AABB] grown a given number of units towards all the " +"sides." +msgstr "返回 [AABB] 的副本,该副本向所有方向增长了给定数量的单位。" + +msgid "" +"Returns [code]true[/code] if the [AABB] contains a point. Points on the " +"faces of the AABB are considered included, though float-point precision " +"errors may impact the accuracy of such checks.\n" +"[b]Note:[/b] This method is not reliable for [AABB] with a [i]negative size[/" +"i]. Use [method abs] to get a positive sized equivalent [AABB] to check for " +"contained points." +msgstr "" +"如果 [AABB] 包含点,则返回 [code]true[/code]。AABB 表面上的点被视为包括在内," +"但浮点精度误差可能会影响此类检测的准确性。\n" +"[b]注意:[/b]这种方法对于具有[i]负尺寸[/i]的 [AABB] 是不可靠的。使用 [method " +"abs] 获得一个正尺寸的等效 [AABB] 在检查是否包含点。" + +msgid "" +"Returns [code]true[/code] if the [AABB] has a surface or a length, and " +"[code]false[/code] if the [AABB] is empty (all components of [member size] " +"are zero or negative)." +msgstr "" +"如果 [AABB] 具有表面或长度,则返回 [code]true[/code];如果 [AABB] 为空" +"([member size] 的所有分量为零或负),则返回 [code]false[/code]。" + +msgid "" +"Returns [code]true[/code] if the [AABB] has a volume, and [code]false[/code] " +"if the [AABB] is flat, empty, or has a negative [member size]." +msgstr "" +"如果 [AABB] 有体积,则返回 [code]true[/code];如果 [AABB] 是扁平的、空的或具" +"有负的 [member size],则返回 [code]false[/code]。" + +msgid "" +"Returns the intersection between two [AABB]. An empty AABB (size [code](0, " +"0, 0)[/code]) is returned on failure." +msgstr "" +"返回两个 [AABB] 的交叠区域。失败时返回空的 AABB(大小为 [code](0, 0, 0)[/" +"code])。" + +msgid "Returns [code]true[/code] if the [AABB] overlaps with another." +msgstr "该 [AABB] 与另一个交叠时,返回 [code]true[/code]。" + +msgid "Returns [code]true[/code] if the [AABB] is on both sides of a plane." +msgstr "该 [AABB] 同时位于指定平面的两边时,返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the given ray intersects with this [AABB]. Ray " +"length is infinite." +msgstr "" +"如果给定的射线与此 [AABB] 相交,则返回 [code]true[/code]。射线长度是无限的。" + +msgid "" +"Returns [code]true[/code] if the [AABB] intersects the line segment between " +"[param from] and [param to]." +msgstr "" +"如果该 [AABB] 与 [param from] 和 [param to] 之间的线段相交,则返回 " +"[code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this [AABB] and [param aabb] are approximately " +"equal, by calling [method @GlobalScope.is_equal_approx] on each component." +msgstr "" +"如果该 [AABB] 和 [param aabb] 近似相等,则返回 [code]true[/code],通过在每个" +"分量上调用 [method @GlobalScope.is_equal_approx]。" + +msgid "" +"Returns [code]true[/code] if this [AABB] is finite, by calling [method " +"@GlobalScope.is_finite] on each component." +msgstr "" +"如果该 [AABB] 是有限的,则返回 [code]true[/code],方法是在每个分量上调用 " +"[method @GlobalScope.is_finite]。" + +msgid "" +"Returns a larger [AABB] that contains both this [AABB] and [param with]." +msgstr "返回同时包含该 [AABB] 和 [param with] 的更大的 [AABB]。" + +msgid "" +"Ending corner. This is calculated as [code]position + size[/code]. Setting " +"this value will change the size." +msgstr "" +"终点角。通过 [code]position + size[/code] 计算而来。设置该值会修改大小。" + +msgid "Beginning corner. Typically has values lower than [member end]." +msgstr "起点角。通常比 [member end] 小。" + +msgid "" +"Size from [member position] to [member end]. Typically, all components are " +"positive.\n" +"If the size is negative, you can use [method abs] to fix it." +msgstr "" +"从 [member position] 到 [member end] 的大小。通常所有分量都是正数。\n" +"如果大小为负,可以用 [method abs] 修正。" + +msgid "" +"Returns [code]true[/code] if the vectors are not equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"is_equal_approx] instead, which is more reliable." +msgstr "" +"如果向量不相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点精度误差,考虑改用更可靠的 [method is_equal_approx]。" + +msgid "" +"Inversely transforms (multiplies) the [AABB] by the given [Transform3D] " +"transformation matrix." +msgstr "通过给定的 [Transform3D] 变换矩阵对该 [AABB] 进行逆变换(相乘)。" + +msgid "" +"Returns [code]true[/code] if the AABBs are exactly equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"is_equal_approx] instead, which is more reliable." +msgstr "" +"如果 AABB 完全相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点精度误差,考虑改用更可靠的 [method is_equal_approx]。" + +msgid "Base dialog for user notification." +msgstr "用户通知的基本对话框。" + +msgid "" +"This dialog is useful for small notifications to the user about an event. It " +"can only be accepted or closed, with the same result." +msgstr "" +"该对话框对于向用户发送有关事件的小通知很有用。它只能被接受或关闭,并且结果相" +"同。" + +msgid "" +"Adds a button with label [param text] and a custom [param action] to the " +"dialog and returns the created button. [param action] will be passed to the " +"[signal custom_action] signal when pressed.\n" +"If [code]true[/code], [param right] will place the button to the right of " +"any sibling buttons.\n" +"You can use [method remove_button] method to remove a button created with " +"this method from the dialog." +msgstr "" +"将带有标签 [param text] 和自定义 [param action] 的按钮添加到对话框,并返回该" +"创建的按钮。[param action] 将在按钮被按下时传递给 [signal custom_action] 信" +"号。\n" +"如果 [param right] 为 [code]true[/code],按钮会被放置在所有同级按钮的右侧。\n" +"您可以使用 [method remove_button] 方法从对话框中移除使用该方法创建的按钮。" + +msgid "" +"Adds a button with label [param name] and a cancel action to the dialog and " +"returns the created button.\n" +"You can use [method remove_button] method to remove a button created with " +"this method from the dialog." +msgstr "" +"在对话框中添加一个带有标签 [param name] 和取消动作的按钮,并返回创建的按" +"钮。\n" +"你可以使用 [method remove_button] 方法从对话框中删除用此方法创建的按钮。" + +msgid "" +"Returns the label used for built-in text.\n" +"[b]Warning:[/b] This is a required internal node, removing and freeing it " +"may cause a crash. If you wish to hide it or any of its children, use their " +"[member CanvasItem.visible] property." +msgstr "" +"返回内置文本所使用的标签。\n" +"[b]警告:[/b]这是个必要的内部节点,移除并释放它有可能造成崩溃。如果你希望隐藏" +"它或它的任意一个子节点,请使用它们的 [member CanvasItem.visible] 属性。" + +msgid "" +"Returns the OK [Button] instance.\n" +"[b]Warning:[/b] This is a required internal node, removing and freeing it " +"may cause a crash. If you wish to hide it or any of its children, use their " +"[member CanvasItem.visible] property." +msgstr "" +"返回确定按钮 [Button] 实例。\n" +"[b]警告:[/b]这是个必要的内部节点,移除并释放它有可能造成崩溃。如果你希望隐藏" +"它或它的任意一个子节点,请使用它们的 [member CanvasItem.visible] 属性。" + +msgid "" +"Registers a [LineEdit] in the dialog. When the enter key is pressed, the " +"dialog will be accepted." +msgstr "在对话框中注册 [LineEdit]。当按下回车键时,对话框将被接受。" + +msgid "" +"Removes the [param button] from the dialog. Does NOT free the [param " +"button]. The [param button] must be a [Button] added with [method " +"add_button] or [method add_cancel_button] method. After removal, pressing " +"the [param button] will no longer emit this dialog's [signal custom_action] " +"or [signal canceled] signals." +msgstr "" +"从对话框中移除 [param button]。但不释放该 [param button] 对象。[param " +"button] 必须是用 [method add_button] 或 [method add_cancel] 方法添加的 " +"[Button]。移除后,按下该 [param button] 将不再发出该对话框的 [signal " +"custom_action] 或 [signal canceled] 信号。" + +msgid "Sets autowrapping for the text in the dialog." +msgstr "为对话框中的文本设置自动换行。" + +msgid "" +"If [code]true[/code], the dialog will be hidden when the escape key " +"([constant KEY_ESCAPE]) is pressed." +msgstr "" +"如果为 [code]true[/code],当按下退出键([constant KEY_ESCAPE])时,对话框将被" +"隐藏。" + +msgid "" +"If [code]true[/code], the dialog is hidden when the OK button is pressed. " +"You can set it to [code]false[/code] if you want to do e.g. input validation " +"when receiving the [signal confirmed] signal, and handle hiding the dialog " +"in your own logic.\n" +"[b]Note:[/b] Some nodes derived from this class can have a different default " +"value, and potentially their own built-in logic overriding this setting. For " +"example [FileDialog] defaults to [code]false[/code], and has its own input " +"validation code that is called when you press OK, which eventually hides the " +"dialog if the input is valid. As such, this property can't be used in " +"[FileDialog] to disable hiding the dialog when pressing OK." +msgstr "" +"如果为 [code]true[/code],按下确定按钮时对话框将隐藏。如果要在收到 [signal " +"confirmed] 信号时执行类似输入验证的操作,则可以将其设置为 [code]false[/" +"code],然后在自己的逻辑中处理对话框的隐藏。\n" +"[b]注意:[/b]从此类派生的某些节点可以具有不同的默认值,并且可能有自己的内置逻" +"辑会覆盖此设置。例如 [FileDialog] 默认其为 [code]false[/code],并在按下确定时" +"实现了自己的输入验证代码,如果输入有效,最终将隐藏对话框。因此,不能在 " +"[FileDialog] 中使用此属性来禁止在按确定时隐藏对话框。" + +msgid "The text displayed by the dialog." +msgstr "对话框显示的文本。" + +msgid "The text displayed by the OK button (see [method get_ok_button])." +msgstr "确定按钮(参见 [method get_ok_button])显示的文本。" + +msgid "" +"Emitted when the dialog is closed or the button created with [method " +"add_cancel_button] is pressed." +msgstr "当对话框关闭或按下 [method add_cancel_button] 创建的按钮时发出。" + +msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed." +msgstr "接受对话框时,即按下确定按钮时发出。" + +msgid "Emitted when a custom button is pressed. See [method add_button]." +msgstr "按下自定义按钮时发出。见 [method add_button]。" + +msgid "" +"The size of the vertical space between the dialog's content and the button " +"row." +msgstr "对话框内容和按钮行之间的垂直空间的大小。" + +msgid "The panel that fills the background of the window." +msgstr "填充窗口背景的面板。" + +msgid "Interface to low level AES encryption features." +msgstr "底层 AES 加密功能接口。" + +msgid "" +"This class provides access to AES encryption/decryption of raw data. Both " +"AES-ECB and AES-CBC mode are supported.\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends Node\n" +"\n" +"var aes = AESContext.new()\n" +"\n" +"func _ready():\n" +" var key = \"My secret key!!!\" # Key must be either 16 or 32 bytes.\n" +" var data = \"My secret text!!\" # Data size must be multiple of 16 " +"bytes, apply padding if needed.\n" +" # Encrypt ECB\n" +" aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8())\n" +" var encrypted = aes.update(data.to_utf8())\n" +" aes.finish()\n" +" # Decrypt ECB\n" +" aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8())\n" +" var decrypted = aes.update(encrypted)\n" +" aes.finish()\n" +" # Check ECB\n" +" assert(decrypted == data.to_utf8())\n" +"\n" +" var iv = \"My secret iv!!!!\" # IV must be of exactly 16 bytes.\n" +" # Encrypt CBC\n" +" aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8(), iv.to_utf8())\n" +" encrypted = aes.update(data.to_utf8())\n" +" aes.finish()\n" +" # Decrypt CBC\n" +" aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8(), iv.to_utf8())\n" +" decrypted = aes.update(encrypted)\n" +" aes.finish()\n" +" # Check CBC\n" +" assert(decrypted == data.to_utf8())\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"using System.Diagnostics;\n" +"\n" +"public partial class MyNode : Node\n" +"{\n" +" private AesContext _aes = new AesContext();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" string key = \"My secret key!!!\"; // Key must be either 16 or 32 " +"bytes.\n" +" string data = \"My secret text!!\"; // Data size must be multiple of " +"16 bytes, apply padding if needed.\n" +" // Encrypt ECB\n" +" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8());\n" +" byte[] encrypted = _aes.Update(data.ToUtf8());\n" +" _aes.Finish();\n" +" // Decrypt ECB\n" +" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8());\n" +" byte[] decrypted = _aes.Update(encrypted);\n" +" _aes.Finish();\n" +" // Check ECB\n" +" Debug.Assert(decrypted == data.ToUtf8());\n" +"\n" +" string iv = \"My secret iv!!!!\"; // IV must be of exactly 16 " +"bytes.\n" +" // Encrypt CBC\n" +" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8(), iv.ToUtf8());\n" +" encrypted = _aes.Update(data.ToUtf8());\n" +" _aes.Finish();\n" +" // Decrypt CBC\n" +" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8(), iv.ToUtf8());\n" +" decrypted = _aes.Update(encrypted);\n" +" _aes.Finish();\n" +" // Check CBC\n" +" Debug.Assert(decrypted == data.ToUtf8());\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"此类提供了对原始数据的 AES 加密/解密的访问。同时支持 AES-ECB 和 AES-CBC 模" +"式。\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends Node\n" +"\n" +"var aes = AESContext.new()\n" +"\n" +"func _ready():\n" +" var key = \"My secret key!!!\" # 密钥必须是 16 或 32 字节。\n" +" var data = \"My secret text!!\" # 数据大小必须是 16 字节的倍数,需要时添" +"加补白。\n" +" # ECB 加密\n" +" aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8())\n" +" var encrypted = aes.update(data.to_utf8())\n" +" aes.finish()\n" +" # ECB 解密\n" +" aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8())\n" +" var decrypted = aes.update(encrypted)\n" +" aes.finish()\n" +" # ECB 校验\n" +" assert(decrypted == data.to_utf8())\n" +"\n" +" var iv = \"My secret iv!!!!\" # IV 必须是 16 字节。\n" +" # CBC 加密\n" +" aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8(), iv.to_utf8())\n" +" encrypted = aes.update(data.to_utf8())\n" +" aes.finish()\n" +" # CBC 解密\n" +" aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8(), iv.to_utf8())\n" +" decrypted = aes.update(encrypted)\n" +" aes.finish()\n" +" # CBC 校验\n" +" assert(decrypted == data.to_utf8())\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"using System.Diagnostics;\n" +"\n" +"public partial class MyNode : Node\n" +"{\n" +" private AesContext _aes = new AesContext();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" string key = \"My secret key!!!\"; // 密钥必须是 16 或 32 字节。\n" +" string data = \"My secret text!!\"; // 数据大小必须是 16 字节的倍数," +"需要时添加补白。\n" +" // ECB 加密\n" +" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8());\n" +" byte[] encrypted = _aes.Update(data.ToUtf8());\n" +" _aes.Finish();\n" +" // ECB 解密\n" +" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8());\n" +" byte[] decrypted = _aes.Update(encrypted);\n" +" _aes.Finish();\n" +" // ECB 校验\n" +" Debug.Assert(decrypted == data.ToUtf8());\n" +"\n" +" string iv = \"My secret iv!!!!\"; // IV 必须是 16 字节。\n" +" // CBC 加密\n" +" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8(), iv.ToUtf8());\n" +" encrypted = _aes.Update(data.ToUtf8());\n" +" _aes.Finish();\n" +" // CBC 解密\n" +" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8(), iv.ToUtf8());\n" +" decrypted = _aes.Update(encrypted);\n" +" _aes.Finish();\n" +" // CBC 校验\n" +" Debug.Assert(decrypted == data.ToUtf8());\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "Close this AES context so it can be started again. See [method start]." +msgstr "关闭此 AES 上下文,以便可以再次启动它。见 [method start]。" + +msgid "" +"Get the current IV state for this context (IV gets updated when calling " +"[method update]). You normally don't need this function.\n" +"[b]Note:[/b] This function only makes sense when the context is started with " +"[constant MODE_CBC_ENCRYPT] or [constant MODE_CBC_DECRYPT]." +msgstr "" +"获取此上下文的当前 IV 状态(调用 [method update] 时会更新 IV)。通常不需要此" +"函数。\n" +"[b]注意:[/b]仅当上下文以 [constant MODE_CBC_ENCRYPT] 或 [constant " +"MODE_CBC_DECRYPT] 开头时,此函数才有意义。" + +msgid "" +"Start the AES context in the given [param mode]. A [param key] of either 16 " +"or 32 bytes must always be provided, while an [param iv] (initialization " +"vector) of exactly 16 bytes, is only needed when [param mode] is either " +"[constant MODE_CBC_ENCRYPT] or [constant MODE_CBC_DECRYPT]." +msgstr "" +"在给定的 [param mode] 中启动 AES 上下文。必须始终提供 16 或 32 字节的 [param " +"key],而仅当 [param mode] 为 [constant MODE_CBC_ENCRYPT] 或 [constant " +"MODE_CBC_DECRYPT] 时,才需要正好为 16 字节的 [param iv](初始化向量)。" + +msgid "" +"Run the desired operation for this AES context. Will return a " +"[PackedByteArray] containing the result of encrypting (or decrypting) the " +"given [param src]. See [method start] for mode of operation.\n" +"[b]Note:[/b] The size of [param src] must be a multiple of 16. Apply some " +"padding if needed." +msgstr "" +"运行此 AES 上下文所需的操作。将返回包含加密(或解密)给定 [param src] 结果的 " +"[PackedByteArray] 。有关操作模式,请参阅 [method start]。\n" +"[b]注意:[/b][param src] 的大小必须是 16 倍的倍数。如果需要,应用一些填充。" + +msgid "AES electronic codebook encryption mode." +msgstr "AES 电子密码簿加密模式。" + +msgid "AES electronic codebook decryption mode." +msgstr "AES 电子密码簿解密模式。" + +msgid "AES cipher blocker chaining encryption mode." +msgstr "AES 密码封锁器链式加密模式。" + +msgid "AES cipher blocker chaining decryption mode." +msgstr "AES 密码封锁器链式解密模式。" + +msgid "Maximum value for the mode enum." +msgstr "模式列举的最大值。" + +msgid "" +"Physics body for 2D physics which moves only by script or animation. Useful " +"for moving platforms and doors." +msgstr "用于 2D 物理中仅通过脚本或动画移动的物理实体。适用于移动的平台和门。" + +msgid "" +"Animatable body for 2D physics.\n" +"An animatable body can't be moved by external forces or contacts, but can be " +"moved by script or animation to affect other bodies in its path. It is ideal " +"for implementing moving objects in the environment, such as moving platforms " +"or doors.\n" +"When the body is moved manually, either from code or from an " +"[AnimationPlayer] (with [member AnimationPlayer.playback_process_mode] set " +"to [code]physics[/code]), the physics will automatically compute an estimate " +"of their linear and angular velocity. This makes them very useful for moving " +"platforms or other AnimationPlayer-controlled objects (like a door, a bridge " +"that opens, etc)." +msgstr "" +"用于 2D 物理的可动画化实体。\n" +"可动画化实体无法通过外力或接触移动,但可以通过脚本或动画移动以影响其路径中的" +"其他实体。它非常适合实现移动环境中的对象,例如移动的平台或门。\n" +"当实体通过代码或 [AnimationPlayer](将 [member AnimationPlayer." +"playback_process_mode] 设置为 [code]physics[/code])手动移动时,物理将自动计" +"算其线速度和角速度的估计值。这使得它们对于移动的平台或其他 AnimationPlayer 控" +"制的对象(如门、打开的桥等)非常有用。" + +msgid "" +"If [code]true[/code], the body's movement will be synchronized to the " +"physics frame. This is useful when animating movement via [AnimationPlayer], " +"for example on moving platforms. Do [b]not[/b] use together with [method " +"PhysicsBody2D.move_and_collide]." +msgstr "" +"如果为 [code]true[/code],则物体的运动将与物理帧同步。当通过 " +"[AnimationPlayer] 为运动设置动画时,例如在移动的平台上,这个功能很有用。[b]不" +"要[/b]与[method PhysicsBody2D.move_and_collide]一起使用。" + +msgid "" +"Physics body for 3D physics which moves only by script or animation. Useful " +"for moving platforms and doors." +msgstr "仅通过脚本或动画移动、用于3D 物理的物理体。适用于移动的平台和门。" + +msgid "" +"Animatable body for 3D physics.\n" +"An animatable body can't be moved by external forces or contacts, but can be " +"moved by script or animation to affect other bodies in its path. It is ideal " +"for implementing moving objects in the environment, such as moving platforms " +"or doors.\n" +"When the body is moved manually, either from code or from an " +"[AnimationPlayer] (with [member AnimationPlayer.playback_process_mode] set " +"to [code]physics[/code]), the physics will automatically compute an estimate " +"of their linear and angular velocity. This makes them very useful for moving " +"platforms or other AnimationPlayer-controlled objects (like a door, a bridge " +"that opens, etc).\n" +"[b]Warning:[/b] With a non-uniform scale this node will probably not " +"function as expected. Please make sure to keep its scale uniform (i.e. the " +"same on all axes), and change the size(s) of its collision shape(s) instead." +msgstr "" +"用于 3D 物理的可动画实体。\n" +"可动画的实体不能被外力或接触移动,但可以被脚本或动画移动以影响其路径中的其他" +"实体。它非常适合在环境中实现移动的实体,例如移动的平台或门。\n" +"当通过代码或 [AnimationPlayer]([member AnimationPlayer." +"playback_process_mode] 被设置为 [code]physics[/code])手动移动实体时,物理将" +"自动计算其线速度和角速度的估计值。这使得它们对于移动的平台或其他 " +"AnimationPlayer 控制的对象(如门、打开的桥等)非常有用。\n" +"[b]警告:[/b]如果缩放比例不均匀,此节点可能无法按预期运行。请确保保持其比例统" +"一(即在所有轴上相同),并改为更改其碰撞形状的大小。" + +msgid "3D Physics Tests Demo" +msgstr "3D 物理测试演示" + +msgid "Third Person Shooter Demo" +msgstr "第三人称射击演示" + +msgid "3D Voxel Demo" +msgstr "3D 体素演示" + +msgid "" +"If [code]true[/code], the body's movement will be synchronized to the " +"physics frame. This is useful when animating movement via [AnimationPlayer], " +"for example on moving platforms. Do [b]not[/b] use together with [method " +"PhysicsBody3D.move_and_collide]." +msgstr "" +"如果为 [code]true[/code],则实体的运动将与物理帧同步。当通过 " +"[AnimationPlayer] 为运动设置动画时,例如在移动的平台上,这个功能很有用。请[b]" +"不要[/b]与 [method PhysicsBody3D.move_and_collide] 函数一起使用。" + +msgid "" +"Sprite node that contains multiple textures as frames to play for animation." +msgstr "包含多个纹理作为动画播放帧的 Sprite 节点。" + +msgid "" +"[AnimatedSprite2D] is similar to the [Sprite2D] node, except it carries " +"multiple textures as animation frames. Animations are created using a " +"[SpriteFrames] resource, which allows you to import image files (or a folder " +"containing said files) to provide the animation frames for the sprite. The " +"[SpriteFrames] resource can be configured in the editor via the SpriteFrames " +"bottom panel." +msgstr "" +"[AnimatedSprite2D] 与 [Sprite2D] 节点类似,但是包含多张纹理,可用作动画帧。动" +"画使用 [SpriteFrames] 资源创建,可以导入图像文件(或包含此类文件的文件夹)为" +"该精灵提供动画帧。可以在编辑器的“动画帧”底部面板中配置 [SpriteFrames] 资源。" + +msgid "2D Sprite animation" +msgstr "2D 精灵动画" + +msgid "2D Dodge The Creeps Demo" +msgstr "2D Dodge The Creeps 演示" + +msgid "" +"Returns the actual playing speed of current animation or [code]0[/code] if " +"not playing. This speed is the [member speed_scale] property multiplied by " +"[code]custom_speed[/code] argument specified when calling the [method play] " +"method.\n" +"Returns a negative value if the current animation is playing backwards." +msgstr "" +"返回当前动画的实际播放速度,未播放时则为 [code]0[/code]。这个速度是 [member " +"speed_scale] 属性乘以调用 [method play] 时指定的 [code]custom_speed[/code] 参" +"数。\n" +"如果当前动画是倒放的,则返回负值。" + +msgid "" +"Returns [code]true[/code] if an animation is currently playing (even if " +"[member speed_scale] and/or [code]custom_speed[/code] are [code]0[/code])." +msgstr "" +"如果动画目前正在播放,则返回 [code]true[/code](即便 [member speed_scale] 和/" +"或 [code]custom_speed[/code] 为 [code]0[/code])。" + +msgid "" +"Pauses the currently playing animation. The [member frame] and [member " +"frame_progress] will be kept and calling [method play] or [method " +"play_backwards] without arguments will resume the animation from the current " +"playback position.\n" +"See also [method stop]." +msgstr "" +"暂停当前正在播放的动画。会保留 [member frame] 和 [member frame_progress],不" +"带参数调用 [method play] 或 [method play_backwards] 会从当前播放位置恢复播放" +"该动画。\n" +"另见 [method stop]。" + +msgid "" +"Plays the animation with key [param name]. If [param custom_speed] is " +"negative and [param from_end] is [code]true[/code], the animation will play " +"backwards (which is equivalent to calling [method play_backwards]).\n" +"If this method is called with that same animation [param name], or with no " +"[param name] parameter, the assigned animation will resume playing if it was " +"paused." +msgstr "" +"播放名称键为 [param name] 的动画。如果 [param custom_speed] 为负且 [param " +"from_end] 为 [code]true[/code],则该动画会倒放(等价于 [method " +"play_backwards])。\n" +"如果调用这个方法时使用了相同的动画名称 [param name] 或者没有使用 [param " +"name] 参数,则会继续播放已暂停的分配动画。" + +msgid "" +"Plays the animation with key [param name] in reverse.\n" +"This method is a shorthand for [method play] with [code]custom_speed = -1.0[/" +"code] and [code]from_end = true[/code], so see its description for more " +"information." +msgstr "" +"倒放名称键为 [param name] 的动画。\n" +"这个方法是简写,等价于调用 [method play] 时使用 [code]custom_speed = -1.0[/" +"code] 和 [code]from_end = true[/code],所以更多信息请参阅其描述。" + +msgid "" +"The setter of [member frame] resets the [member frame_progress] to " +"[code]0.0[/code] implicitly, but this method avoids that.\n" +"This is useful when you want to carry over the current [member " +"frame_progress] to another [member frame].\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Change the animation with keeping the frame index and progress.\n" +"var current_frame = animated_sprite.get_frame()\n" +"var current_progress = animated_sprite.get_frame_progress()\n" +"animated_sprite.play(\"walk_another_skin\")\n" +"animated_sprite.set_frame_and_progress(current_frame, current_progress)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"设置 [member frame] 时会隐式将 [member frame_progress] 重置为 [code]0.0[/" +"code],但这个方法可以避免。\n" +"如果你想要把当前的 [member frame_progress] 带到其他 [member frame] 中,就会非" +"常有用。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 更改动画的同时保留帧索引和进度。\n" +"var current_frame = animated_sprite.get_frame()\n" +"var current_progress = animated_sprite.get_frame_progress()\n" +"animated_sprite.play(\"walk_another_skin\")\n" +"animated_sprite.set_frame_and_progress(current_frame, current_progress)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Stops the currently playing animation. The animation position is reset to " +"[code]0[/code] and the [code]custom_speed[/code] is reset to [code]1.0[/" +"code]. See also [method pause]." +msgstr "" +"停止当前正在播放的动画。会将动画的位置重置为 [code]0[/code],并将 " +"[code]custom_speed[/code] 重置为 [code]1.0[/code]。另见 [method pause]。" + +msgid "" +"The current animation from the [member sprite_frames] resource. If this " +"value is changed, the [member frame] counter and the [member frame_progress] " +"are reset." +msgstr "" +"当前动画,来自 [member sprite_frames]。如果更改了这个值,会重置 [member " +"frame] 计数和 [member frame_progress]。" + +msgid "The key of the animation to play when the scene loads." +msgstr "场景加载时要播放的动画名称。" + +msgid "If [code]true[/code], texture will be centered." +msgstr "如果为 [code]true[/code],纹理将被居中。" + +msgid "If [code]true[/code], texture is flipped horizontally." +msgstr "如果为 [code]true[/code],纹理将被水平翻转。" + +msgid "If [code]true[/code], texture is flipped vertically." +msgstr "如果为 [code]true[/code],纹理将被垂直翻转。" + +msgid "" +"The displayed animation frame's index. Setting this property also resets " +"[member frame_progress]. If this is not desired, use [method " +"set_frame_and_progress]." +msgstr "" +"所显示动画帧的索引。设置这个属性会重置 [member frame_progress]。如果不希望这" +"样,请使用 [method set_frame_and_progress]。" + +msgid "" +"The progress value between [code]0.0[/code] and [code]1.0[/code] until the " +"current frame transitions to the next frame. If the animation is playing " +"backwards, the value transitions from [code]1.0[/code] to [code]0.0[/code]." +msgstr "" +"当前帧过渡到下一帧的进度值,在 [code]0.0[/code] 和 [code]1.0[/code] 之间。如" +"果动画是倒放的,则该值是从 [code]1.0[/code] 到 [code]0.0[/code]。" + +msgid "The texture's drawing offset." +msgstr "纹理的绘图偏移量。" + +msgid "" +"The speed scaling ratio. For example, if this value is [code]1[/code], then " +"the animation plays at normal speed. If it's [code]0.5[/code], then it plays " +"at half speed. If it's [code]2[/code], then it plays at double speed.\n" +"If set to a negative value, the animation is played in reverse. If set to " +"[code]0[/code], the animation will not advance." +msgstr "" +"速度缩放比。例如,如果该值为 [code]1[/code],则动画以正常速度播放。如果它是 " +"[code]0.5[/code],那么它会半速播放。如果是 [code]2[/code],则会以双倍速度播" +"放。\n" +"如果设置为负值,则动画反向播放。如果设置为[code]0[/code],则动画不会前进。" + +msgid "" +"The [SpriteFrames] resource containing the animation(s). Allows you the " +"option to load, edit, clear, make unique and save the states of the " +"[SpriteFrames] resource." +msgstr "" +"包含动画的 [SpriteFrames] 资源。可以对 [SpriteFrames] 资源进行加载、编辑、清" +"空、唯一化、保存状态等操作。" + +msgid "Emitted when [member animation] changes." +msgstr "当 [member animation] 更改时发出。" + +msgid "" +"Emitted when the animation reaches the end, or the start if it is played in " +"reverse. When the animation finishes, it pauses the playback." +msgstr "" +"当动画到达结尾时,或者如果反向播放则到达起点时发出。当动画结束时,它会暂停播" +"放。" + +msgid "Emitted when the animation loops." +msgstr "当动画循环播放时发出。" + +msgid "Emitted when [member frame] changes." +msgstr "[member frame] 更改时发出。" + +msgid "Emitted when [member sprite_frames] changes." +msgstr "当 [member sprite_frames] 更改时发出。" + +msgid "" +"2D sprite node in 3D world, that can use multiple 2D textures for animation." +msgstr "3D 世界中的 2D 精灵节点,可以使用多个 2D 纹理进行动画处理。" + +msgid "" +"[AnimatedSprite3D] is similar to the [Sprite3D] node, except it carries " +"multiple textures as animation [member sprite_frames]. Animations are " +"created using a [SpriteFrames] resource, which allows you to import image " +"files (or a folder containing said files) to provide the animation frames " +"for the sprite. The [SpriteFrames] resource can be configured in the editor " +"via the SpriteFrames bottom panel." +msgstr "" +"[AnimatedSprite3D] 与 [Sprite3D] 节点类似,但是包含多张纹理,可用作动画 " +"[member sprite_frames]。动画使用 [SpriteFrames] 资源创建,可以导入图像文件" +"(或包含此类文件的文件夹)为该精灵提供动画帧。可以在编辑器的“动画帧”底部面板" +"中配置 [SpriteFrames] 资源。" + +msgid "2D Sprite animation (also applies to 3D)" +msgstr "2D 精灵动画(也适用于 3D)" + +msgid "Proxy texture for simple frame-based animations." +msgstr "用于简单帧动画的代理纹理。" + +msgid "Returns the given [param frame]'s duration, in seconds." +msgstr "返回给定的 [param frame] 的持续时间,以秒为单位。" + +msgid "Returns the given frame's [Texture2D]." +msgstr "返回给定帧的 [Texture2D]。" + +msgid "" +"Sets the duration of any given [param frame]. The final duration is affected " +"by the [member speed_scale]. If set to [code]0[/code], the frame is skipped " +"during playback." +msgstr "" +"设置任何给定 [param frame] 的持续时间。最终的持续时间受 [member speed_scale] " +"影响。如果设置为 [code]0[/code],则该帧在播放过程中被跳过。" + +msgid "" +"Assigns a [Texture2D] to the given frame. Frame IDs start at 0, so the first " +"frame has ID 0, and the last frame of the animation has ID [member frames] - " +"1.\n" +"You can define any number of textures up to [constant MAX_FRAMES], but keep " +"in mind that only frames from 0 to [member frames] - 1 will be part of the " +"animation." +msgstr "" +"将 [Texture2D] 分配给给定的帧。帧 ID 从 0 开始,因此第一帧的 ID 为 0,动画的" +"最后一帧的 ID 为 [member frames] - 1。\n" +"您可以定义最多 [constant MAX_FRAMES] 个纹理,但要记住,只有 0 到 [member " +"frames] - 1 的帧会成为动画的一部分。" + +msgid "" +"Number of frames to use in the animation. While you can create the frames " +"independently with [method set_frame_texture], you need to set this value " +"for the animation to take new frames into account. The maximum number of " +"frames is [constant MAX_FRAMES]." +msgstr "" +"动画中要使用的帧数。虽然您可以使用 [method set_frame_texture] 独立创建帧,但" +"是您需要为动画设置此值以考虑新帧。最大帧数为 [constant MAX_FRAMES]。" + +msgid "" +"If [code]true[/code], the animation will only play once and will not loop " +"back to the first frame after reaching the end. Note that reaching the end " +"will not set [member pause] to [code]true[/code]." +msgstr "" +"如果为 [code]true[/code],则动画将只播放一次,并且在到达结尾后将不会循环回到" +"第一帧。请注意,到达终点不会将 [member pause] 设置为 [code]true[/code]。" + +msgid "" +"If [code]true[/code], the animation will pause where it currently is (i.e. " +"at [member current_frame]). The animation will continue from where it was " +"paused when changing this property to [code]false[/code]." +msgstr "" +"如果为 [code]true[/code],则动画将暂停在当前位置(即 [member " +"current_frame])。将此属性更改为 [code]false[/code] 时,动画将从暂停处继续播" +"放。" + +msgid "" +"The animation speed is multiplied by this value. If set to a negative value, " +"the animation is played in reverse." +msgstr "动画速度将乘以该值。如果设置为负值,则动画反向播放。" + +msgid "" +"The maximum number of frames supported by [AnimatedTexture]. If you need " +"more frames in your animation, use [AnimationPlayer] or [AnimatedSprite2D]." +msgstr "" +"[AnimatedTexture] 支持的最大帧数。如果动画需要更多帧,请使用 " +"[AnimationPlayer] 或 [AnimatedSprite2D]。" + +msgid "Contains data used to animate everything in the engine." +msgstr "包含用于对引擎中所有内容进行动画处理的数据。" + +msgid "" +"An Animation resource contains data used to animate everything in the " +"engine. Animations are divided into tracks, and each track must be linked to " +"a node. The state of that node can be changed through time, by adding timed " +"keys (events) to the track.\n" +"[codeblocks]\n" +"[gdscript]\n" +"# This creates an animation that makes the node \"Enemy\" move to the right " +"by\n" +"# 100 pixels in 0.5 seconds.\n" +"var animation = Animation.new()\n" +"var track_index = animation.add_track(Animation.TYPE_VALUE)\n" +"animation.track_set_path(track_index, \"Enemy:position:x\")\n" +"animation.track_insert_key(track_index, 0.0, 0)\n" +"animation.track_insert_key(track_index, 0.5, 100)\n" +"[/gdscript]\n" +"[csharp]\n" +"// This creates an animation that makes the node \"Enemy\" move to the right " +"by\n" +"// 100 pixels in 0.5 seconds.\n" +"var animation = new Animation();\n" +"int trackIndex = animation.AddTrack(Animation.TrackType.Value);\n" +"animation.TrackSetPath(trackIndex, \"Enemy:position:x\");\n" +"animation.TrackInsertKey(trackIndex, 0.0f, 0);\n" +"animation.TrackInsertKey(trackIndex, 0.5f, 100);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Animations are just data containers, and must be added to nodes such as an " +"[AnimationPlayer] to be played back. Animation tracks have different types, " +"each with its own set of dedicated methods. Check [enum TrackType] to see " +"available types.\n" +"[b]Note:[/b] For 3D position/rotation/scale, using the dedicated [constant " +"TYPE_POSITION_3D], [constant TYPE_ROTATION_3D] and [constant TYPE_SCALE_3D] " +"track types instead of [constant TYPE_VALUE] is recommended for performance " +"reasons." +msgstr "" +"Animation(动画)资源包含用于对引擎中的一切进行动画处理的数据。动画分为轨道," +"轨道必须与节点相连。向轨道添加定时关键帧(事件)后,节点的状态可以随时间变" +"化。\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 创建动画,让“Enemy”节点在 0.5 秒内\n" +"# 向右移动 100 像素。\n" +"var animation = Animation.new()\n" +"var track_index = animation.add_track(Animation.TYPE_VALUE)\n" +"animation.track_set_path(track_index, \"Enemy:position:x\")\n" +"animation.track_insert_key(track_index, 0.0, 0)\n" +"animation.track_insert_key(track_index, 0.5, 100)\n" +"[/gdscript]\n" +"[csharp]\n" +"# 创建动画,让“Enemy”节点在 0.5 秒内\n" +"# 向右移动 100 像素。\n" +"var animation = new Animation();\n" +"int trackIndex = animation.AddTrack(Animation.TrackType.Value);\n" +"animation.TrackSetPath(trackIndex, \"Enemy:position:x\");\n" +"animation.TrackInsertKey(trackIndex, 0.0f, 0);\n" +"animation.TrackInsertKey(trackIndex, 0.5f, 100);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"动画只是数据的容器,必须添加至 [AnimationPlayer] 等节点才能进行播放。动画轨道" +"分为不同的类型,不同的类型有各自不同的专属方法。可用的类型请查看 [enum " +"TrackType]。\n" +"[b]注意:[/b]对于 3D 的位置、旋转、缩放,推荐使用专门的 [constant " +"TYPE_POSITION_3D]、[constant TYPE_ROTATION_3D]、[constant TYPE_SCALE_3D] 轨道" +"类型,不要使用 [constant TYPE_VALUE],性能更高。" + +msgid "Animation documentation index" +msgstr "动画教程索引" + +msgid "Adds a track to the Animation." +msgstr "向动画添加轨道。" + +msgid "" +"Returns the animation name at the key identified by [param key_idx]. The " +"[param track_idx] must be the index of an Animation Track." +msgstr "" +"返回由 [param key_idx] 标识的键处的动画名称。[param track_idx] 必须是动画轨道" +"的索引。" + +msgid "" +"Inserts a key with value [param animation] at the given [param time] (in " +"seconds). The [param track_idx] must be the index of an Animation Track." +msgstr "" +"在给定的 [param time](以秒为单位)插入一个值为 [param animation] 的键。" +"[param track_idx] 必须是动画轨道的索引。" + +msgid "" +"Sets the key identified by [param key_idx] to value [param animation]. The " +"[param track_idx] must be the index of an Animation Track." +msgstr "" +"将 [param key_idx] 标识的键设置为值 [param animation]。[param track_idx] 必须" +"是动画轨道的索引。" + +msgid "" +"Returns the end offset of the key identified by [param key_idx]. The [param " +"track_idx] must be the index of an Audio Track.\n" +"End offset is the number of seconds cut off at the ending of the audio " +"stream." +msgstr "" +"返回由 [param key_idx] 标识的键的结束偏移量。[param track_idx] 必须是音频轨道" +"的索引。\n" +"结束偏移量是在音频流结束时截断的秒数。" + +msgid "" +"Returns the start offset of the key identified by [param key_idx]. The " +"[param track_idx] must be the index of an Audio Track.\n" +"Start offset is the number of seconds cut off at the beginning of the audio " +"stream." +msgstr "" +"返回由 [param key_idx] 标识的键的起始偏移量。[param track_idx] 必须是音频轨道" +"的索引。\n" +"起始偏移量是在音频流开始时截断的秒数。" + +msgid "" +"Returns the audio stream of the key identified by [param key_idx]. The " +"[param track_idx] must be the index of an Audio Track." +msgstr "" +"返回由 [param key_idx] 标识的键的音频流。[param track_idx] 必须是音频轨道的索" +"引。" + +msgid "" +"Inserts an Audio Track key at the given [param time] in seconds. The [param " +"track_idx] must be the index of an Audio Track.\n" +"[param stream] is the [AudioStream] resource to play. [param start_offset] " +"is the number of seconds cut off at the beginning of the audio stream, while " +"[param end_offset] is at the ending." +msgstr "" +"在 [param time] 秒处插入音频轨道关键帧。[param track_idx] 必须是音频轨道的索" +"引。\n" +"[param stream] 是要播放的 [AudioStream] 资源。[param start_offset] 是音频流开" +"头截断的秒数,而 [param end_offset] 是在结尾处截断的秒数。" + +msgid "" +"Sets the end offset of the key identified by [param key_idx] to value [param " +"offset]. The [param track_idx] must be the index of an Audio Track." +msgstr "" +"将由 [param key_idx] 标识的键的结束偏移量设置为值 [param offset]。[param " +"track_idx] 必须是音频轨道的索引。" + +msgid "" +"Sets the start offset of the key identified by [param key_idx] to value " +"[param offset]. The [param track_idx] must be the index of an Audio Track." +msgstr "" +"将由 [param key_idx] 标识的键的起始偏移量设置为值 [param offset]。[param " +"track_idx] 必须是音频轨道的索引。" + +msgid "" +"Sets the stream of the key identified by [param key_idx] to value [param " +"stream]. The [param track_idx] must be the index of an Audio Track." +msgstr "" +"将由 [param key_idx] 标识的键的流设置为值 [param stream]。[param track_idx] " +"必须是音频轨道的索引。" + +msgid "" +"Sets whether the track will be blended with other animations. If [code]true[/" +"code], the audio playback volume changes depending on the blend value." +msgstr "" +"设置轨道是否将与其他动画混合。如果为 [code]true[/code],音频播放音量会根据混" +"合值而变化。" + +msgid "" +"Returns the in handle of the key identified by [param key_idx]. The [param " +"track_idx] must be the index of a Bezier Track." +msgstr "" +"返回由 [param key_idx] 识别的键的入点手柄,[param track_idx] 必须是贝赛尔曲线" +"轨道的索引。" + +msgid "" +"Returns the out handle of the key identified by [param key_idx]. The [param " +"track_idx] must be the index of a Bezier Track." +msgstr "" +"返回由 [param key_idx] 识别的键的出点手柄,[param track_idx] 必须是贝赛尔曲线" +"轨道的索引。" + +msgid "" +"Returns the value of the key identified by [param key_idx]. The [param " +"track_idx] must be the index of a Bezier Track." +msgstr "" +"返回由 [param key_idx] 识别的键的值,[param track_idx] 必须是贝塞尔轨道的索" +"引。" + +msgid "" +"Inserts a Bezier Track key at the given [param time] in seconds. The [param " +"track_idx] must be the index of a Bezier Track.\n" +"[param in_handle] is the left-side weight of the added Bezier curve point, " +"[param out_handle] is the right-side one, while [param value] is the actual " +"value at this point." +msgstr "" +"在给定的时间 [param time] 秒处插入贝塞尔轨道键。[param track_idx] 必须是贝塞" +"尔轨道的索引。\n" +"[param in_handle] 是添加的贝塞尔曲线点的左侧权重,[param out_handle] 是右侧权" +"重,而 [param value] 是这个点的实际值。" + +msgid "" +"Returns the interpolated value at the given [param time] (in seconds). The " +"[param track_idx] must be the index of a Bezier Track." +msgstr "" +"返回给定 [param time] 处的插值(以秒为单位)。[param track_idx] 必须是贝塞尔" +"轨道的索引。" + +msgid "" +"Sets the in handle of the key identified by [param key_idx] to value [param " +"in_handle]. The [param track_idx] must be the index of a Bezier Track." +msgstr "" +"将 [param key_idx] 所标识的键的入点手柄设置为 [param in_handle] 值。[param " +"track_idx] 必须是贝塞尔轨道的索引。" + +msgid "" +"Sets the out handle of the key identified by [param key_idx] to value [param " +"out_handle]. The [param track_idx] must be the index of a Bezier Track." +msgstr "" +"将由 [param key_idx] 确定的关键帧的出点手柄设置为 [param out_handle]。参数 " +"[param track_idx] 必须是贝塞尔轨道的索引。" + +msgid "" +"Sets the value of the key identified by [param key_idx] to the given value. " +"The [param track_idx] must be the index of a Bezier Track." +msgstr "" +"将 [param key_idx] 所标识的键值设置为给定值。[param track_idx] 必须是贝塞尔轨" +"道的索引。" + +msgid "Inserts a key in a given blend shape track. Returns the key index." +msgstr "在给定的混合形状轨道中插入一个关键帧。返回键索引。" + +msgid "Clear the animation (clear all tracks and reset all)." +msgstr "清除动画(清除所有轨道并重置所有)。" + +msgid "" +"Compress the animation and all its tracks in-place. This will make [method " +"track_is_compressed] return [code]true[/code] once called on this " +"[Animation]. Compressed tracks require less memory to be played, and are " +"designed to be used for complex 3D animations (such as cutscenes) imported " +"from external 3D software. Compression is lossy, but the difference is " +"usually not noticeable in real world conditions.\n" +"[b]Note:[/b] Compressed tracks have various limitations (such as not being " +"editable from the editor), so only use compressed animations if you actually " +"need them." +msgstr "" +"就地压缩动画及其所有轨道。这将使 [method track_is_compressed] 一旦在这个 " +"[Animation] 上被调用就会返回 [code]true[/code]。压缩后的轨道在播放时需要更少" +"的内存,并且这被设计用于从外部3D软件导入的复杂的3D动画(比如过场动画)。压缩" +"是有损失的,但现实中通常不会注意到这种差异。\n" +"[b]注意:[/b]压缩轨道有各种限制(比如不能从编辑器中编辑),所以只有在你真正需" +"要时才使用压缩动画。" + +msgid "" +"Adds a new track that is a copy of the given track from [param to_animation]." +msgstr "添加一个新的轨道,这个轨道是给定轨道 [param to_animation] 的副本。" + +msgid "" +"Returns the index of the specified track. If the track is not found, return " +"-1." +msgstr "返回指定轨迹的索引。如果没有找到,返回 -1。" + +msgid "Returns the amount of tracks in the animation." +msgstr "返回动画中的轨道数。" + +msgid "Returns the method name of a method track." +msgstr "返回一个方法轨道的方法名。" + +msgid "" +"Returns the arguments values to be called on a method track for a given key " +"in a given track." +msgstr "返回给定方法轨道中给定键的方法要调用的参数值。" + +msgid "Inserts a key in a given 3D position track. Returns the key index." +msgstr "在给定的 3D 位置轨道中插入关键帧。返回该关键帧的索引。" + +msgid "Removes a track by specifying the track index." +msgstr "通过指定轨道索引来移除一个轨道。" + +msgid "Inserts a key in a given 3D rotation track. Returns the key index." +msgstr "在给定的 3D 旋转轨道中插入关键帧。返回该关键帧的索引。" + +msgid "Inserts a key in a given 3D scale track. Returns the key index." +msgstr "在给定的 3D 缩放轨道中插入关键帧。返回该关键帧的索引。" + +msgid "" +"Finds the key index by time in a given track. Optionally, only find it if " +"the approx/exact time is given." +msgstr "" +"按时间查找给定轨道中的关键帧索引。也可选择只在给定大约/准确时间的情况下查找。" + +msgid "" +"Returns [code]true[/code] if the track at [param track_idx] wraps the " +"interpolation loop. New tracks wrap the interpolation loop by default." +msgstr "" +"如果 [param track_idx] 处的轨道环绕插值循环,则返回 [code]true[/code]。新建的" +"轨道默认都会环绕插值循环。" + +msgid "Returns the interpolation type of a given track." +msgstr "返回给定轨道的插值类型。" + +msgid "Returns the number of keys in a given track." +msgstr "返回给定轨道中关键帧的数量。" + +msgid "Returns the time at which the key is located." +msgstr "返回关键帧所在的时间。" + +msgid "" +"Returns the transition curve (easing) for a specific key (see the built-in " +"math function [method @GlobalScope.ease])." +msgstr "" +"返回给定关键帧的过渡曲线(缓动)(见内置数学函数 [method @GlobalScope." +"ease])。" + +msgid "Returns the value of a given key in a given track." +msgstr "返回给定轨道中给定关键帧的值。" + +msgid "" +"Gets the path of a track. For more information on the path format, see " +"[method track_set_path]." +msgstr "" +"获取轨道的路径。有关路径格式的详细信息,请参阅 [method track_set_path]。" + +msgid "Gets the type of a track." +msgstr "获取轨道的类型。" + +msgid "Inserts a generic key in a given track. Returns the key index." +msgstr "在给定的轨道中插入一个通用关键帧。返回关键帧索引。" + +msgid "" +"Returns [code]true[/code] if the track is compressed, [code]false[/code] " +"otherwise. See also [method compress]." +msgstr "" +"如果轨道被压缩,则返回 [code]true[/code],否则返回 [code]false[/code]。另见 " +"[method compress]。" + +msgid "" +"Returns [code]true[/code] if the track at index [param track_idx] is enabled." +msgstr "如果启用了索引 [param track_idx] 处的轨道,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the given track is imported. Else, return " +"[code]false[/code]." +msgstr "" +"如果给定的轨道是被导入的,返回 [code]true[/code]。否则返回 [code]false[/" +"code]。" + +msgid "Moves a track down." +msgstr "将轨道下移。" + +msgid "" +"Changes the index position of track [param track_idx] to the one defined in " +"[param to_idx]." +msgstr "将轨道 [param track_idx] 的索引位置改为 [param to_idx] 中定义的位置。" + +msgid "Moves a track up." +msgstr "将轨道上移。" + +msgid "Removes a key by index in a given track." +msgstr "在指定的轨道上按索引移除一个键。" + +msgid "Removes a key at [param time] in a given track." +msgstr "在给定轨道中的 [param time] 移除一个键。" + +msgid "Enables/disables the given track. Tracks are enabled by default." +msgstr "启用/禁用给定的轨道。轨道默认为启用。" + +msgid "Sets the given track as imported or not." +msgstr "将指定的轨道设置为导入或不导入。" + +msgid "" +"If [code]true[/code], the track at [param track_idx] wraps the interpolation " +"loop." +msgstr "如果为 [code]true[/code],则 [param track_idx] 处的轨道环绕插值循环。" + +msgid "Sets the interpolation type of a given track." +msgstr "设置指定轨道的插值类型。" + +msgid "Sets the time of an existing key." +msgstr "设置现有关键帧的时间。" + +msgid "" +"Sets the transition curve (easing) for a specific key (see the built-in math " +"function [method @GlobalScope.ease])." +msgstr "" +"设置指定关键帧的过渡曲线(缓动)(参阅内置数学函数 [method @GlobalScope." +"ease])。" + +msgid "Sets the value of an existing key." +msgstr "设置现有关键帧的值。" + +msgid "" +"Sets the path of a track. Paths must be valid scene-tree paths to a node and " +"must be specified starting from the parent node of the node that will " +"reproduce the animation. Tracks that control properties or bones must append " +"their name after the path, separated by [code]\":\"[/code].\n" +"For example, [code]\"character/skeleton:ankle\"[/code] or [code]\"character/" +"mesh:transform/local\"[/code]." +msgstr "" +"设置轨道的路径。路径必须是指向场景树节点的有效路径,必须从将要实现动画的节点" +"的父节点开始指定。控制属性或骨骼的轨道必须在路径后面加上它们的名字,用 " +"[code]\":\"[/code] 分隔。\n" +"例如,[code]\"character/skeleton:ankle\"[/code] 或 [code]\"character/mesh:" +"transform/local\"[/code]。" + +msgid "" +"Swaps the track [param track_idx]'s index position with the track [param " +"with_idx]." +msgstr "" +"将轨道 [param track_idx] 的索引位置与轨道 [param with_idx] 的索引位置互换。" + +msgid "Returns the update mode of a value track." +msgstr "返回值轨道的更新模式。" + +msgid "" +"Returns the interpolated value at the given time (in seconds). The [param " +"track_idx] must be the index of a value track." +msgstr "" +"返回位于给定时间(以秒为单位)的插值后的值。[param track_idx] 必须是值轨道的" +"索引。" + +msgid "Sets the update mode (see [enum UpdateMode]) of a value track." +msgstr "设置值轨道的更新模式(请参阅 [enum UpdateMode])。" + +msgid "" +"The total length of the animation (in seconds).\n" +"[b]Note:[/b] Length is not delimited by the last key, as this one may be " +"before or after the end to ensure correct interpolation and looping." +msgstr "" +"动画的总长度(单位为秒)。\n" +"[b]注意:[/b]长度不以最后一个关键帧为界,因为这个关键帧可能位于结束前或结束" +"后,以确保正确的插值和循环。" + +msgid "" +"Determines the behavior of both ends of the animation timeline during " +"animation playback. This is used for correct interpolation of animation " +"cycles, and for hinting the player that it must restart the animation." +msgstr "" +"确定动画播放期间动画时间轴两端的行为。 这用于动画循环的正确插值,以及提示播放" +"器必须重新启动动画。" + +msgid "The animation step value." +msgstr "动画步长值。" + +msgid "" +"Value tracks set values in node properties, but only those which can be " +"interpolated. For 3D position/rotation/scale, using the dedicated [constant " +"TYPE_POSITION_3D], [constant TYPE_ROTATION_3D] and [constant TYPE_SCALE_3D] " +"track types instead of [constant TYPE_VALUE] is recommended for performance " +"reasons." +msgstr "" +"值轨道设置节点属性中的值,但仅限于那些可以被插值的属性。对于 3D 位置/旋转/缩" +"放,出于性能原因,建议使用专用的 [constant TYPE_POSITION_3D]、[constant " +"TYPE_ROTATION_3D] 和 [constant TYPE_SCALE_3D] 轨道类型而不是 [constant " +"TYPE_VALUE]。" + +msgid "3D position track (values are stored in [Vector3]s)." +msgstr "3D 位置轨道(值存储在 [Vector3] 中)。" + +msgid "3D rotation track (values are stored in [Quaternion]s)." +msgstr "3D 旋转轨道(值存储在 [Quaternion] 中)。" + +msgid "3D scale track (values are stored in [Vector3]s)." +msgstr "3D 缩放轨道(值存储在 [Vector3] 中)。" + +msgid "Blend shape track." +msgstr "混合形状轨道。" + +msgid "Method tracks call functions with given arguments per key." +msgstr "方法轨道会在各个关键帧上使用给定参数的调用函数。" + +msgid "" +"Bezier tracks are used to interpolate a value using custom curves. They can " +"also be used to animate sub-properties of vectors and colors (e.g. alpha " +"value of a [Color])." +msgstr "" +"贝塞尔轨道可以用来根据自定义曲线对数值进行插值。它们也可以用来对向量和颜色的" +"子属性进行动画处理(例如 [Color] 的 Alpha 值)。" + +msgid "" +"Audio tracks are used to play an audio stream with either type of " +"[AudioStreamPlayer]. The stream can be trimmed and previewed in the " +"animation." +msgstr "" +"音频轨道可以用来通过任意类型的 [AudioStreamPlayer] 播放音频流。该流可以在动画" +"中进行修剪和预览。" + +msgid "Animation tracks play animations in other [AnimationPlayer] nodes." +msgstr "动画轨道会在其他 [AnimationPlayer] 节点中播放动画。" + +msgid "No interpolation (nearest value)." +msgstr "无插值(最邻近的值)。" + +msgid "Linear interpolation." +msgstr "线性插值。" + +msgid "" +"Cubic interpolation. This looks smoother than linear interpolation, but is " +"more expensive to interpolate. Stick to [constant INTERPOLATION_LINEAR] for " +"complex 3D animations imported from external software, even if it requires " +"using a higher animation framerate in return." +msgstr "" +"三次插值。这看起来比线性插值更平滑,但插值成本更高。对于从外部软件导入的复杂 " +"3D 动画,坚持使用 [constant INTERPOLATION_LINEAR],即使它需要使用更高的动画帧" +"率作为回报。" + +msgid "" +"Linear interpolation with shortest path rotation.\n" +"[b]Note:[/b] The result value is always normalized and may not match the key " +"value." +msgstr "" +"具有最短路径旋转的线性插值。\n" +"[b]注意:[/b]结果值总是归一化的,可能与关键帧的值不匹配。" + +msgid "" +"Cubic interpolation with shortest path rotation.\n" +"[b]Note:[/b] The result value is always normalized and may not match the key " +"value." +msgstr "" +"具有最短路径旋转的三次插值。\n" +"[b]注意:[/b]结果值总是归一化的,可能与关键帧的值不匹配。" + +msgid "Update between keyframes and hold the value." +msgstr "在关键帧之间更新并保持值。" + +msgid "Update at the keyframes." +msgstr "在关键帧更新。" + +msgid "" +"Same as linear interpolation, but also interpolates from the current value " +"(i.e. dynamically at runtime) if the first key isn't at 0 seconds." +msgstr "" +"与线性插值相同,但如果第一个关键帧不在第 0 秒,则会从当前值进行插值(即在运行" +"时动态插值)。" + +msgid "At both ends of the animation, the animation will stop playing." +msgstr "在动画的两端,动画将停止播放。" + +msgid "" +"At both ends of the animation, the animation will be repeated without " +"changing the playback direction." +msgstr "在动画的两端,动画会在不改变播放方向的情况下重复播放。" + +msgid "Repeats playback and reverse playback at both ends of the animation." +msgstr "在动画的两端重复进行播放和反向播放。" + +msgid "This flag indicates that the animation proceeds without any looping." +msgstr "该标志指示动画在没有任何循环的情况下继续进行。" + +msgid "" +"This flag indicates that the animation has reached the end of the animation " +"and just after loop processed." +msgstr "该标志表示动画已到达动画的末尾并且刚好在循环处理之后。" + +msgid "" +"This flag indicates that the animation has reached the start of the " +"animation and just after loop processed." +msgstr "该标志表示动画已经到达动画的开始并且刚好在循环处理之后。" + +msgid "Finds the nearest time key." +msgstr "查找最近的时间键。" + +msgid "Finds only the key with approximating the time." +msgstr "仅查找与时间相近的键。" + +msgid "Finds only the key with matching the time." +msgstr "仅查找与时间匹配的键。" + +msgid "Container for [Animation] resources." +msgstr "[Animation] 资源的容器。" + +msgid "" +"An animation library stores a set of animations accessible through " +"[StringName] keys, for use with [AnimationPlayer] nodes." +msgstr "" +"动画库存储一组可通过 [StringName] 键访问的动画,可用于 [AnimationPlayer] 节" +"点。" + +msgid "Animation tutorial index" +msgstr "动画教程索引" + +msgid "" +"Adds the [param animation] to the library, accessible by the key [param " +"name]." +msgstr "将 [param animation] 添加到库中,可通过键 [param name] 访问。" + +msgid "" +"Returns the [Animation] with the key [param name]. If the animation does not " +"exist, [code]null[/code] is returned and an error is logged." +msgstr "" +"返回带有键 [param name] 的 [Animation]。如果动画不存在,则返回 [code]null[/" +"code] 并记录错误。" + +msgid "Returns the keys for the [Animation]s stored in the library." +msgstr "返回库中存储的 [Animation] 的键。" + +msgid "" +"Returns [code]true[/code] if the library stores an [Animation] with [param " +"name] as the key." +msgstr "" +"如果该库存储了以 [param name] 作为键的 [Animation],则返回 [code]true[/" +"code]。" + +msgid "Removes the [Animation] with the key [param name]." +msgstr "使用键 [param name] 移除 [Animation]。" + +msgid "" +"Changes the key of the [Animation] associated with the key [param name] to " +"[param newname]." +msgstr "将与键 [param name] 关联的 [Animation] 的键更改为 [param newname]。" + +msgid "Emitted when an [Animation] is added, under the key [param name]." +msgstr "在键 [param name] 下添加 [Animation] 时发出。" + +msgid "" +"Emitted when there's a change in one of the animations, e.g. tracks are " +"added, moved or have changed paths. [param name] is the key of the animation " +"that was changed.\n" +"See also [signal Resource.changed], which this acts as a relay for." +msgstr "" +"当其中一个动画发生变化时发出,例如轨道被添加、移动,或路径被更改。[param " +"name] 是被改变的动画的键。\n" +"另见 [signal Resource.changed],本信号充当该信号的中继。" + +msgid "" +"Emitted when an [Animation] stored with the key [param name] is removed." +msgstr "当使用键 [param name] 存储的 [Animation] 被移除时发出。" + +msgid "" +"Emitted when the key for an [Animation] is changed, from [param name] to " +"[param to_name]." +msgstr "当 [Animation] 的键从 [param name] 更改为 [param to_name] 时发出。" + +msgid "Base resource for [AnimationTree] nodes." +msgstr "[AnimationTree] 节点的基础资源。" + +msgid "" +"Base resource for [AnimationTree] nodes. In general, it's not used directly, " +"but you can create custom ones with custom blending formulas.\n" +"Inherit this when creating nodes mainly for use in [AnimationNodeBlendTree], " +"otherwise [AnimationRootNode] should be used instead." +msgstr "" +"[AnimationTree] 节点的基础资源。通常,它不是直接使用的,但是您可以使用自定义" +"混合公式创建自定义的。\n" +"在创建主要用于 [AnimationNodeBlendTree] 的节点时,继承该属性,否则应改用 " +"[AnimationRootNode]。" + +msgid "AnimationTree" +msgstr "AnimationTree" + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"override the text caption for this node." +msgstr "" +"继承 [AnimationRootNode] 时,实现这个虚方法可以覆盖这个节点的标题文本。" + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"return a child node by its [param name]." +msgstr "" +"继承 [AnimationRootNode] 时,实现这个虚方法可以根据名称 [param name] 来返回对" +"应的子节点。" + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"return all children nodes in order as a [code]name: node[/code] dictionary." +msgstr "" +"继承 [AnimationRootNode] 时,实现这个虚方法可以用 [code]名称:节点[/code] 字典" +"的形式按顺序返回所有子节点。" + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"return the default value of a [param parameter]. Parameters are custom local " +"memory used for your nodes, given a resource can be reused in multiple trees." +msgstr "" +"继承 [AnimationRootNode] 时,实现这个虚方法可以返回参数“[param parameter]”的" +"默认值。参数是节点的自定义本地存储,资源可以在多个树中重用。" + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"return a list of the properties on this node. Parameters are custom local " +"memory used for your nodes, given a resource can be reused in multiple " +"trees. Format is similar to [method Object.get_property_list]." +msgstr "" +"继承 [AnimationRootNode] 时,实现这个虚方法可以返回这个节点的属性列表。参数是" +"节点的自定义本地存储,资源可以在多个树中重用。格式与 [method Object." +"get_property_list] 类似。" + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"return whether the blend tree editor should display filter editing on this " +"node." +msgstr "" +"继承 [AnimationRootNode] 时,实现这个虚方法可以返回混合树编辑器是否应该在这个" +"节点上显示过滤器编辑。" + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"return whether the [param parameter] is read-only. Parameters are custom " +"local memory used for your nodes, given a resource can be reused in multiple " +"trees." +msgstr "" +"继承 [AnimationRootNode] 时,实现这个虚方法可以返回参数 [param parameter] 是" +"否只读。参数是节点的自定义本地存储,资源可以在多个树中重用。" + +msgid "" +"When inheriting from [AnimationRootNode], implement this virtual method to " +"run some code when this node is processed. The [param time] parameter is a " +"relative delta, unless [param seek] is [code]true[/code], in which case it " +"is absolute.\n" +"Here, call the [method blend_input], [method blend_node] or [method " +"blend_animation] functions. You can also use [method get_parameter] and " +"[method set_parameter] to modify local memory.\n" +"This function should return the time left for the current animation to " +"finish (if unsure, pass the value from the main blend being called)." +msgstr "" +"继承 [AnimationRootNode] 时,实现这个虚方法可以在这个节点进行处理时执行代码。" +"参数 [param time] 是相对增量,除非 [param seek] 为 [code]true[/code],此时为" +"绝对增量。\n" +"请在此处调用 [method blend_input]、[method blend_node] 或 [method " +"blend_animation] 函数。你也可以使用 [method get_parameter] 和 [method " +"set_parameter] 来修改本地存储。\n" +"这个函数应当返回当前动画还需多少时间完成(不确定的话,请传递调用主混合的" +"值)。" + +msgid "" +"Adds an input to the node. This is only useful for nodes created for use in " +"an [AnimationNodeBlendTree]. If the addition fails, returns [code]false[/" +"code]." +msgstr "" +"为节点添加一个输入。这只对创建用于 [AnimationNodeBlendTree] 的节点有用。如果" +"添加失败,返回 [code]false[/code]。" + +msgid "" +"Blend an animation by [param blend] amount (name must be valid in the linked " +"[AnimationPlayer]). A [param time] and [param delta] may be passed, as well " +"as whether [param seeked] happened.\n" +"A [param looped_flag] is used by internal processing immediately after the " +"loop. See also [enum Animation.LoopedFlag]." +msgstr "" +"按 [param blend] 量混合一个动画(名称必须在链接的 [AnimationPlayer] 中有" +"效)。可以传入时间 [param time] 和增量 [param delta],以及表示是否发生寻道的 " +"[param seeked]。\n" +"[param looped_flag] 在循环后立即由内部处理使用。另见 [enum Animation." +"LoopedFlag]。" + +msgid "" +"Blend an input. This is only useful for nodes created for an " +"[AnimationNodeBlendTree]. The [param time] parameter is a relative delta, " +"unless [param seek] is [code]true[/code], in which case it is absolute. A " +"filter mode may be optionally passed (see [enum FilterAction] for options)." +msgstr "" +"混合一个输入。这只对为 [AnimationNodeBlendTree] 创建的节点有用。时间参数 " +"[param time] 是一个相对的增量,除非 [param seek] 是 [code]true[/code],此时它" +"是绝对的。可以选择传入过滤模式(选项请参阅 [enum FilterAction])。" + +msgid "" +"Blend another animation node (in case this node contains children animation " +"nodes). This function is only useful if you inherit from [AnimationRootNode] " +"instead, else editors will not display your node for addition." +msgstr "" +"混合另一个动画节点(在这个节点包含子动画节点的情况下)。这个函数只有在你继承 " +"[AnimationRootNode] 时才有用,否则编辑器将不会显示你的节点以供添加。" + +msgid "" +"Returns the input index which corresponds to [param name]. If not found, " +"returns [code]-1[/code]." +msgstr "" +"返回与名称 [param name] 相关的输入索引,如果不存在则返回 [code]-1[/code]。" + +msgid "" +"Amount of inputs in this node, only useful for nodes that go into " +"[AnimationNodeBlendTree]." +msgstr "这个节点的输入数量,只对进入 [AnimationNodeBlendTree] 的节点有用。" + +msgid "Gets the name of an input by index." +msgstr "通过索引获取输入的名称。" + +msgid "" +"Gets the value of a parameter. Parameters are custom local memory used for " +"your nodes, given a resource can be reused in multiple trees." +msgstr "" +"获取一个参数的值。参数是你的节点使用的自定义本地内存,给定的资源可以在多个树" +"中重复使用。" + +msgid "Returns whether the given path is filtered." +msgstr "返回给定路径是否被过滤。" + +msgid "Removes an input, call this only when inactive." +msgstr "移除输入,仅在处于非活动状态时调用此输入。" + +msgid "Adds or removes a path for the filter." +msgstr "添加或移除筛选器的路径。" + +msgid "" +"Sets the name of the input at the given [param input] index. If the setting " +"fails, returns [code]false[/code]." +msgstr "" +"在给定的 [param input] 索引处设置输入的名称。如果设置失败,返回 [code]false[/" +"code]。" + +msgid "" +"Sets a custom parameter. These are used as local memory, because resources " +"can be reused across the tree or scenes." +msgstr "" +"设置一个自定义参数。这些参数被用作本地内存,因为资源可以在树或场景中重复使" +"用。" + +msgid "If [code]true[/code], filtering is enabled." +msgstr "如果为 [code]true[/code],则启用筛选功能。" + +msgid "" +"Emitted by nodes that inherit from this class and that have an internal tree " +"when one of their nodes removes. The nodes that emit this signal are " +"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], " +"[AnimationNodeStateMachine], and [AnimationNodeBlendTree]." +msgstr "" +"由继承自该类的节点发出,并且当其中一个节点移除时具有内部树。发出此信号的节点" +"可以是 [AnimationNodeBlendSpace1D]、[AnimationNodeBlendSpace2D]、" +"[AnimationNodeStateMachine] 和 [AnimationNodeBlendTree]。" + +msgid "" +"Emitted by nodes that inherit from this class and that have an internal tree " +"when one of their node names changes. The nodes that emit this signal are " +"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], " +"[AnimationNodeStateMachine], and [AnimationNodeBlendTree]." +msgstr "" +"由继承自该类的节点发出,并且当其中一个节点名称更改时具有内部树。发出此信号的" +"节点可以是 [AnimationNodeBlendSpace1D]、[AnimationNodeBlendSpace2D]、" +"[AnimationNodeStateMachine] 和 [AnimationNodeBlendTree]。" + +msgid "" +"Emitted by nodes that inherit from this class and that have an internal tree " +"when one of their nodes changes. The nodes that emit this signal are " +"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], " +"[AnimationNodeStateMachine], [AnimationNodeBlendTree] and " +"[AnimationNodeTransition]." +msgstr "" +"由继承自该类的节点发出,并且当其一个节点发生变化时具有内部树。发出此信号的节" +"点可以是 [AnimationNodeBlendSpace1D]、[AnimationNodeBlendSpace2D]、" +"[AnimationNodeStateMachine]、[AnimationNodeBlendTree] 和 " +"[AnimationNodeTransition]。" + +msgid "Do not use filtering." +msgstr "不要使用筛选功能。" + +msgid "Paths matching the filter will be allowed to pass." +msgstr "与筛选器匹配的路径将被允许通过。" + +msgid "Paths matching the filter will be discarded." +msgstr "与筛选器匹配的路径将被丢弃。" + +msgid "Paths matching the filter will be blended (by the blend value)." +msgstr "与筛选器匹配的路径将被混合(根据混合值)。" + +msgid "Blends two animations additively inside of an [AnimationNodeBlendTree]." +msgstr "在 [AnimationNodeBlendTree] 中加法地混合两个动画。" + +msgid "" +"A resource to add to an [AnimationNodeBlendTree]. Blends two animations " +"additively based on an amount value in the [code][0.0, 1.0][/code] range." +msgstr "" +"添加到 [AnimationNodeBlendTree] 的资源。根据 [code][0.0,1.0][/code] 范围内的" +"量值加法混合两个动画。" + +msgid "" +"Blends two of three animations additively inside of an " +"[AnimationNodeBlendTree]." +msgstr "在 [AnimationNodeBlendTree] 中将三个动画中的两个动画相加。" + +msgid "" +"A resource to add to an [AnimationNodeBlendTree]. Blends two animations " +"together additively out of three based on a value in the [code][-1.0, 1.0][/" +"code] range.\n" +"This node has three inputs:\n" +"- The base animation to add to\n" +"- A -add animation to blend with when the blend amount is in the [code]" +"[-1.0, 0.0][/code] range.\n" +"- A +add animation to blend with when the blend amount is in the [code][0.0, " +"1.0][/code] range" +msgstr "" +"可添加到 [AnimationNodeBlendTree] 的资源。根据 [code][-1.0, 1.0][/code] 范围" +"内的值,将三个动画中的两个动画加法混合在一起。\n" +"这个节点有三个输入。\n" +"- 要添加到基础动画中的动画\n" +"- 当混合量在 [code][-1.0,0.0][/code] 范围内时,-add 进行混合。\n" +"- 当混合量在 [code][0.0,1.0][/code] 范围内时,+add 进行混合" + +msgid "Input animation to use in an [AnimationNodeBlendTree]." +msgstr "要在 [AnimationNodeBlendTree] 中使用的输入动画。" + +msgid "" +"A resource to add to an [AnimationNodeBlendTree]. Only features one output " +"set using the [member animation] property. Use it as an input for " +"[AnimationNode] that blend animations together." +msgstr "" +"一种添加到 [AnimationNodeBlendTree] 的资源。仅使用 [member animation] 属性设" +"置一个输出集。将其作为 [AnimationNode] 的输入,将动画混合在一起。" + +msgid "3D Platformer Demo" +msgstr "3D 平台跳跃演示" + +msgid "" +"Animation to use as an output. It is one of the animations provided by " +"[member AnimationTree.anim_player]." +msgstr "" +"作为输出使用的动画。它是 [member AnimationTree.anim_player] 提供的动画之一。" + +msgid "Determines the playback direction of the animation." +msgstr "确定动画的播放方向。" + +msgid "Blends two animations linearly inside of an [AnimationNodeBlendTree]." +msgstr "在 [AnimationNodeBlendTree] 中将两个动画进行线性混合。" + +msgid "" +"A resource to add to an [AnimationNodeBlendTree]. Blends two animations " +"linearly based on an amount value in the [code][0.0, 1.0][/code] range." +msgstr "" +"添加到 [AnimationNodeBlendTree] 的资源。根据 [code][0.0,1.0][/code] 范围内的" +"量值线性地混合两个动画。" + +msgid "" +"Blends two of three animations linearly inside of an " +"[AnimationNodeBlendTree]." +msgstr "在 [AnimationNodeBlendTree] 中将三个动画中的两个进行线性混合。" + +msgid "" +"A resource to add to an [AnimationNodeBlendTree]. Blends two animations " +"together linearly out of three based on a value in the [code][-1.0, 1.0][/" +"code] range.\n" +"This node has three inputs:\n" +"- The base animation\n" +"- A -blend animation to blend with when the blend amount is in the [code]" +"[-1.0, 0.0][/code] range.\n" +"- A +blend animation to blend with when the blend amount is in the [code]" +"[0.0, 1.0][/code] range" +msgstr "" +"一种添加到 [AnimationNodeBlendTree] 的资源。根据范围在 [code][-1.0,1.0][/" +"code] 内的值,将三个动画中的两个动画,线性地混合在一起。\n" +"这个节点有三个输入:\n" +"- 基础动画\n" +"- 当混合量在 [code][-1.0,0.0][/code] 范围内时,使用 -blend 动画进行混合。\n" +"- 当混合量在 [code][0.0,1.0][/code] 范围内时,使用 +blend 动画进行混合" + +msgid "" +"Blends linearly between two of any number of [AnimationNode] of any type " +"placed on a virtual axis." +msgstr "" +"在虚拟轴上放置的任意数量的 [AnimationNode] 的任意类型的两个 [AnimationNode] " +"之间线性混合。" + +msgid "" +"A resource to add to an [AnimationNodeBlendTree].\n" +"This is a virtual axis on which you can add any type of [AnimationNode] " +"using [method add_blend_point].\n" +"Outputs the linear blend of the two [AnimationNode]s closest to the node's " +"current value.\n" +"You can set the extents of the axis using the [member min_space] and [member " +"max_space]." +msgstr "" +"可添加到 [AnimationNodeBlendTree] 的资源。\n" +"这是一个虚拟轴,您可以使用 [method add_blend_point] 在上面添加任何类型的 " +"[AnimationNode]。\n" +"输出最接近节点当前值的两个 [AnimationNode] 之间的线性混合。\n" +"您可以使用 [member min_space] 和 [member max_space] 来设置轴的范围。" + +msgid "" +"Adds a new point that represents a [param node] on the virtual axis at a " +"given position set by [param pos]. You can insert it at a specific index " +"using the [param at_index] argument. If you use the default value for [param " +"at_index], the point is inserted at the end of the blend points array." +msgstr "" +"在虚拟轴上 [param pos] 设定的给定位置,添加一个新点代表 [param node]。您可以" +"使用 [param at_index] 参数在特定的索引处插入新点。如果您使用 [param " +"at_index] 的默认值,该点会被插入到混合点数组的末尾。" + +msgid "Returns the number of points on the blend axis." +msgstr "返回混合轴上的点的数量。" + +msgid "" +"Returns the [AnimationNode] referenced by the point at index [param point]." +msgstr "返回索引 [param point] 处的点所引用的 [AnimationNode]。" + +msgid "Returns the position of the point at index [param point]." +msgstr "返回索引 [param point] 处的点的位置。" + +msgid "Removes the point at index [param point] from the blend axis." +msgstr "从混合轴移除索引 [param point] 处的点。" + +msgid "" +"Changes the [AnimationNode] referenced by the point at index [param point]." +msgstr "更改索引 [param point] 处的点所引用的 [AnimationNode]。" + +msgid "" +"Updates the position of the point at index [param point] on the blend axis." +msgstr "更新混合轴上索引 [param point] 处的点的位置。" + +msgid "" +"Controls the interpolation between animations. See [enum BlendMode] " +"constants." +msgstr "控制动画之间的插值。见 [enum BlendMode] 常量。" + +msgid "" +"The blend space's axis's upper limit for the points' position. See [method " +"add_blend_point]." +msgstr "用于点位置的混合空间轴的上限。见 [method add_blend_point]。" + +msgid "" +"The blend space's axis's lower limit for the points' position. See [method " +"add_blend_point]." +msgstr "用于点位置的混合空间轴的下限。见 [method add_blend_point]。" + +msgid "Position increment to snap to when moving a point on the axis." +msgstr "当在轴上移动一个点时,要捕捉到的位置增量。" + +msgid "" +"If [code]false[/code], the blended animations' frame are stopped when the " +"blend value is [code]0[/code].\n" +"If [code]true[/code], forcing the blended animations to advance frame." +msgstr "" +"如果为 [code]false[/code],则当混合值为 [code]0[/code] 时,停止混合动画的" +"帧。\n" +"如果为 [code]true[/code],则强制混合动画以前进帧。" + +msgid "Label of the virtual axis of the blend space." +msgstr "混合空间虚拟轴的标签。" + +msgid "The interpolation between animations is linear." +msgstr "动画之间的插值是线性的。" + +msgid "" +"The blend space plays the animation of the node the blending position is " +"closest to. Useful for frame-by-frame 2D animations." +msgstr "混合空间播放混合位置最接近的节点的动画。对逐帧的2D动画很有用。" + +msgid "" +"Similar to [constant BLEND_MODE_DISCRETE], but starts the new animation at " +"the last animation's playback position." +msgstr "" +"类似于 [constant BLEND_MODE_DISCRETE],但在最后一个动画的播放位置开始新的动" +"画。" + +msgid "" +"Blends linearly between three [AnimationNode] of any type placed in a 2D " +"space." +msgstr "在 2D 空间中放置的三个任意类型的 [AnimationNode] 之间线性混合。" + +msgid "" +"A resource to add to an [AnimationNodeBlendTree].\n" +"This node allows you to blend linearly between three animations using a " +"[Vector2] weight.\n" +"You can add vertices to the blend space with [method add_blend_point] and " +"automatically triangulate it by setting [member auto_triangles] to " +"[code]true[/code]. Otherwise, use [method add_triangle] and [method " +"remove_triangle] to create up the blend space by hand." +msgstr "" +"添加到 [AnimationNodeBlendTree] 的资源。\n" +"该节点允许您使用 [Vector2] 权重在三个动画之间进行线性混合。\n" +"您可以使用 [method add_blend_point] 向混合空间添加顶点,并通过将 [member " +"auto_triangles] 设置为 [code]true[/code] 来自动进行三角测量。否则,请使用 " +"[method add_triangle] 和 [method remove_triangle] 手工创建混合空间。" + +msgid "" +"Adds a new point that represents a [param node] at the position set by " +"[param pos]. You can insert it at a specific index using the [param " +"at_index] argument. If you use the default value for [param at_index], the " +"point is inserted at the end of the blend points array." +msgstr "" +"在 [param pos] 设定的位置添加一个代表 [param node] 的新点。您可以使用 [param " +"at_index] 参数将它插入到特定的索引中。如果您使用 [param at_index] 的默认值," +"这个点会被插入到混合点数组的末尾。" + +msgid "" +"Creates a new triangle using three points [param x], [param y], and [param " +"z]. Triangles can overlap. You can insert the triangle at a specific index " +"using the [param at_index] argument. If you use the default value for [param " +"at_index], the point is inserted at the end of the blend points array." +msgstr "" +"使用三个点 [param x]、[param y] 和 [param z] 创建一个新三角形。三角形可以重" +"叠。可以使用 [param at_index] 参数在特定索引处插入三角形。如果使用 [param " +"at_index] 的默认值,该点将插入到混合点数组的末尾。" + +msgid "Returns the number of points in the blend space." +msgstr "返回混合空间中的点的数量。" + +msgid "" +"Returns the [AnimationRootNode] referenced by the point at index [param " +"point]." +msgstr "返回索引 [param point] 处的点所引用的 [AnimationRootNode]。" + +msgid "Returns the number of triangles in the blend space." +msgstr "返回混合空间中三角形的数量。" + +msgid "" +"Returns the position of the point at index [param point] in the triangle of " +"index [param triangle]." +msgstr "" +"返回索引 [param point] 处的点在索引 [param triangle] 的三角形中的位置。" + +msgid "Removes the point at index [param point] from the blend space." +msgstr "从混合空间中移除索引 [param point] 处的点。" + +msgid "Removes the triangle at index [param triangle] from the blend space." +msgstr "从混合空间中移除索引 [param triangle] 处的三角形。" + +msgid "" +"If [code]true[/code], the blend space is triangulated automatically. The " +"mesh updates every time you add or remove points with [method " +"add_blend_point] and [method remove_blend_point]." +msgstr "" +"如果为 [code]true[/code],混合空间会自动进行三角测量。每次使用 [method " +"add_blend_point] 和 [method remove_blend_point] 添加或移除点时,网格都会更" +"新。" + +msgid "" +"The blend space's X and Y axes' upper limit for the points' position. See " +"[method add_blend_point]." +msgstr "" +"用于点的位置的混合空间的 X 轴和 Y 轴的上限。请参阅 [method add_blend_point]。" + +msgid "" +"The blend space's X and Y axes' lower limit for the points' position. See " +"[method add_blend_point]." +msgstr "" +"用于点的位置的混合空间的 X 轴和 Y 轴的下限。请参阅 [method add_blend_point]。" + +msgid "Position increment to snap to when moving a point." +msgstr "移动点时要吸附到的位置增量。" + +msgid "Name of the blend space's X axis." +msgstr "混合空间 X 轴的名称。" + +msgid "Name of the blend space's Y axis." +msgstr "混合空间 Y 轴的名称。" + +msgid "" +"Emitted every time the blend space's triangles are created, removed, or when " +"one of their vertices changes position." +msgstr "每当创建、移除混合空间的三角形,或当其中一个顶点改变位置时发出。" + +msgid "[AnimationTree] node resource that contains many blend type nodes." +msgstr "[AnimationTree] 节点资源,其中包含许多混合类型节点。" + +msgid "" +"This node may contain a sub-tree of any other blend type nodes, such as " +"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], " +"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n" +"An [AnimationNodeOutput] node named [code]output[/code] is created by " +"default." +msgstr "" +"该节点可以包含任何其他混合类型节点的子树,例如 [AnimationNodeTransition]、" +"[AnimationNodeBlend2]、[AnimationNodeBlend3]、[AnimationNodeOneShot] 等。这是" +"最常用的根之一。\n" +"默认会创建一个名为 [code]output[/code] 的 [AnimationNodeOutput] 节点。" + +msgid "" +"Adds an [AnimationNode] at the given [param position]. The [param name] is " +"used to identify the created sub-node later." +msgstr "" +"在给定的 [param position] 添加一个 [AnimationNode]。[param name] 用于稍后识别" +"该创建的子节点。" + +msgid "" +"Connects the output of an [AnimationNode] as input for another " +"[AnimationNode], at the input port specified by [param input_index]." +msgstr "" +"连接一个 [AnimationNode] 的输出作为另一个 [AnimationNode] 的输入,连接在 " +"[param input_index] 指定的输入端口。" + +msgid "Disconnects the node connected to the specified input." +msgstr "断开连接到指定输入端的节点。" + +msgid "Returns the sub-node with the specified [param name]." +msgstr "返回名称为 [param name] 的子节点。" + +msgid "Returns the position of the sub-node with the specified [param name]." +msgstr "返回名称为 [param name] 的子节点的位置。" + +msgid "" +"Returns [code]true[/code] if a sub-node with specified [param name] exists." +msgstr "如果存在名称为 [param name] 的子节点,则返回 [code]true[/code]。" + +msgid "Removes a sub-node." +msgstr "移除一个子节点。" + +msgid "Changes the name of a sub-node." +msgstr "更改子节点的名称。" + +msgid "Modifies the position of a sub-node." +msgstr "修改子节点的位置。" + +msgid "The global offset of all sub-nodes." +msgstr "所有子节点的全局偏移量。" + +msgid "Emitted when the input port information is changed." +msgstr "当输入端口信息发生更改时发出。" + +msgid "The connection was successful." +msgstr "连接成功。" + +msgid "The input node is [code]null[/code]." +msgstr "输入节点为 [code]null[/code]。" + +msgid "The specified input port is out of range." +msgstr "指定的输入端口超出范围。" + +msgid "The output node is [code]null[/code]." +msgstr "输出节点为 [code]null[/code]。" + +msgid "Input and output nodes are the same." +msgstr "输入和输出节点相同。" + +msgid "The specified connection already exists." +msgstr "指定的连接已经存在。" + +msgid "Plays an animation once in [AnimationNodeBlendTree]." +msgstr "在 [AnimationNodeBlendTree] 中播放一次动画。" + +msgid "The delay after which the automatic restart is triggered, in seconds." +msgstr "触发自动重启的延迟时间,以秒为单位。" + +msgid "" +"If [member autorestart] is [code]true[/code], a random additional delay (in " +"seconds) between 0 and this value will be added to [member " +"autorestart_delay]." +msgstr "" +"如果 [member autorestart] 为 [code]true[/code],则介于0和此值之间的随机附加延" +"迟(以秒为单位)将添加到 [member autorestart_delay]。" + +msgid "Generic output node to be added to [AnimationNodeBlendTree]." +msgstr "可添加到 [AnimationNodeBlendTree] 的通用输出节点。" + +msgid "State machine for control of animations." +msgstr "用于控制动画的状态机。" + +msgid "" +"Contains multiple nodes representing animation states, connected in a graph. " +"Node transitions can be configured to happen automatically or via code, " +"using a shortest-path algorithm. Retrieve the " +"[AnimationNodeStateMachinePlayback] object from the [AnimationTree] node to " +"control it programmatically.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode(\"AnimationTree\")." +"Get(\"parameters/playback\") as AnimationNodeStateMachinePlayback;\n" +"stateMachine.Travel(\"some_state\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"包含表示动画状态的多个节点,以图的形式连接。可以使用最短路径算法,将节点过渡" +"配置为自动发生或通过代码发生。从 [AnimationTree] 节点检索 " +"[AnimationNodeStateMachinePlayback] 对象,以编程方式控制它。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode(\"AnimationTree\")." +"Get(\"parameters/playback\") as AnimationNodeStateMachinePlayback;\n" +"stateMachine.Travel(\"some_state\");\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Adds a new node to the graph. The [param position] is used for display in " +"the editor." +msgstr "向图中添加一个新节点。[param position] 用于在编辑器中显示。" + +msgid "Adds a transition between the given nodes." +msgstr "在给定节点之间添加一个过渡。" + +msgid "Returns the draw offset of the graph. Used for display in the editor." +msgstr "返回图的绘制偏移。用于在编辑器中显示。" + +msgid "Returns the animation node with the given name." +msgstr "返回指定名称的动画节点。" + +msgid "Returns the given animation node's name." +msgstr "返回指定动画节点的名称。" + +msgid "Returns the given node's coordinates. Used for display in the editor." +msgstr "返回给定节点的坐标。用于在编辑器中显示。" + +msgid "Returns the given transition." +msgstr "返回给定的过渡。" + +msgid "Returns the number of connections in the graph." +msgstr "返回图中的连接数。" + +msgid "Returns the given transition's start node." +msgstr "返回给定过渡的开始节点。" + +msgid "Returns the given transition's end node." +msgstr "返回给定过渡的末端节点。" + +msgid "Returns [code]true[/code] if the graph contains the given node." +msgstr "如果图中包含给定的节点,返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if there is a transition between the given nodes." +msgstr "如果在给定节点之间存在过渡,返回 [code]true[/code]。" + +msgid "Deletes the given node from the graph." +msgstr "从图中删除指定的节点。" + +msgid "Deletes the transition between the two specified nodes." +msgstr "删除两个指定节点之间的过渡。" + +msgid "Deletes the given transition by index." +msgstr "按索引删除给定的过渡。" + +msgid "Renames the given node." +msgstr "重命名给定的节点。" + +msgid "Sets the draw offset of the graph. Used for display in the editor." +msgstr "设置图形的绘制偏移。用于在编辑器中显示。" + +msgid "Sets the node's coordinates. Used for display in the editor." +msgstr "设置节点的坐标。用于在编辑器中显示。" + +msgid "" +"If [code]true[/code], allows teleport to the self state with [method " +"AnimationNodeStateMachinePlayback.travel]. When the reset option is enabled " +"in [method AnimationNodeStateMachinePlayback.travel], the animation is " +"restarted. If [code]false[/code], nothing happens on the teleportation to " +"the self state." +msgstr "" +"如果为 [code]true[/code],允许使用 [method AnimationNodeStateMachinePlayback." +"travel] 传送到当前状态。当在 [method AnimationNodeStateMachinePlayback." +"travel] 中启用重置选项时,动画将重新启动。如果为 [code]false[/code],传送到当" +"前状态时不会发生任何事情。" + +msgid "Playback control for [AnimationNodeStateMachine]." +msgstr "[AnimationNodeStateMachine] 的播放控件。" + +msgid "" +"Allows control of [AnimationTree] state machines created with " +"[AnimationNodeStateMachine]. Retrieve with [code]$AnimationTree." +"get(\"parameters/playback\")[/code].\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode(\"AnimationTree\")." +"Get(\"parameters/playback\") as AnimationNodeStateMachinePlayback;\n" +"stateMachine.Travel(\"some_state\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"允许控制使用 [AnimationNodeStateMachine] 创建的 [AnimationTree] 状态机。使用 " +"[code]$AnimationTree.get(\"parameters/playback\")[/code] 检索。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode(\"AnimationTree\")." +"Get(\"parameters/playback\") as AnimationNodeStateMachinePlayback;\n" +"stateMachine.Travel(\"some_state\");\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "Returns the playback position within the current animation state." +msgstr "返回当前动画状态内的播放位置。" + +msgid "Returns the starting state of currently fading animation." +msgstr "返回当前淡入淡出动画的开始状态。" + +msgid "" +"Returns the current travel path as computed internally by the A* algorithm." +msgstr "返回 A* 算法内部计算的当前行进路径。" + +msgid "Returns [code]true[/code] if an animation is playing." +msgstr "如果正在播放动画,返回 [code]true[/code]。" + +msgid "" +"If there is a next path by travel or auto advance, immediately transitions " +"from the current state to the next state." +msgstr "如果通过行进或自动前进有下一条路径,则立即从当前状态过渡到下一个状态。" + +msgid "" +"Starts playing the given animation.\n" +"If [param reset] is [code]true[/code], the animation is played from the " +"beginning." +msgstr "" +"开始播放给定的动画。\n" +"如果 [param reset] 为 [code]true[/code],则动画从头开始播放。" + +msgid "Stops the currently playing animation." +msgstr "停止当前播放的动画。" + +msgid "" +"Transitions from the current state to another one, following the shortest " +"path.\n" +"If the path does not connect from the current state, the animation will play " +"after the state teleports.\n" +"If [param reset_on_teleport] is [code]true[/code], the animation is played " +"from the beginning when the travel cause a teleportation." +msgstr "" +"按照最短的路径从当前状态过渡到另一个状态。\n" +"如果路径没有连接到当前状态,则动画将在状态传送后播放。\n" +"如果 [param reset_on_teleport] 为 [code]true[/code],当行进导致传送时,该动画" +"将从头开始播放。" + +msgid "" +"Turn on auto advance when this condition is set. The provided name will " +"become a boolean parameter on the [AnimationTree] that can be controlled " +"from code (see [url=$DOCS_URL/tutorials/animation/animation_tree." +"html#controlling-from-code]Using AnimationTree[/url]). For example, if " +"[member AnimationTree.tree_root] is an [AnimationNodeStateMachine] and " +"[member advance_condition] is set to [code]\"idle\"[/code]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"$animation_tree.set(\"parameters/conditions/idle\", is_on_floor and " +"(linear_velocity.x == 0))\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode(\"animation_tree\").Set(\"parameters/conditions/" +"idle\", IsOnFloor && (LinearVelocity.X == 0));\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"该条件被设置时打开自动前进。提供的名称将成为 [AnimationTree] 上的布尔参数,可" +"以通过代码进行控制(请参阅 [url=$DOCS_URL/tutorials/animation/animation_tree." +"html#controlling-from-code]使用 AnimationTree[/url])。例如,如果 [member " +"AnimationTree.tree_root] 是一个 [AnimationNodeStateMachine] 并且 [member " +"advance_condition] 被设置为 [code]\"idle\"[/code]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"$animation_tree.set(\"parameters/conditions/idle\", is_on_floor and " +"(linear_velocity.x == 0))\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode(\"animation_tree\").Set(\"parameters/conditions/" +"idle\", IsOnFloor && (LinearVelocity.X == 0));\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Use an expression as a condition for state machine transitions. It is " +"possible to create complex animation advance conditions for switching " +"between states and gives much greater flexibility for creating complex state " +"machines by directly interfacing with the script code." +msgstr "" +"将表达式用作状态机过渡的条件。可以为状态之间的切换创建复杂的动画推进条件,并" +"通过直接与脚本代码交互为创建复杂的状态机提供更大的灵活性。" + +msgid "" +"Determines whether the transition should disabled, enabled when using " +"[method AnimationNodeStateMachinePlayback.travel], or traversed " +"automatically if the [member advance_condition] and [member " +"advance_expression] checks are true (if assigned)." +msgstr "" +"决定在使用 [method AnimationNodeStateMachinePlayback.travel] 时该过渡是否应该" +"被禁用/启用,或者如果 [member advance_condition] 和 [member " +"advance_expression] 检查为真则自动行进(如果已分配)。" + +msgid "" +"Lower priority transitions are preferred when travelling through the tree " +"via [method AnimationNodeStateMachinePlayback.travel] or [member " +"advance_mode] is set to [constant ADVANCE_MODE_AUTO]." +msgstr "" +"当在树中通过 [method AnimationNodeStateMachinePlayback.travel] 或将 [member " +"advance_mode] 设置为 [constant ADVANCE_MODE_AUTO] 行进时,倾向于优先级较低的" +"过渡。" + +msgid "" +"If [code]true[/code], the destination animation is played back from the " +"beginning when switched." +msgstr "如果为 [code]true[/code],切换时目标动画从头开始播放。" + +msgid "The transition type." +msgstr "过渡类型。" + +msgid "" +"Ease curve for better control over cross-fade between this state and the " +"next." +msgstr "缓动曲线可以更好地控制此状态和下一个状态之间的交叉淡入淡出。" + +msgid "The time to cross-fade between this state and the next." +msgstr "这个状态和下一个状态之间的交叉渐变时间。" + +msgid "Emitted when [member advance_condition] is changed." +msgstr "变更 [member advance_condition] 时发出。" + +msgid "" +"Switch to the next state immediately. The current state will end and blend " +"into the beginning of the new one." +msgstr "立即切换到下一个状态。当前状态将结束,并混合到新状态的开始。" + +msgid "" +"Switch to the next state immediately, but will seek the new state to the " +"playback position of the old state." +msgstr "立即切换到下一个状态,但会将新的状态定位到旧状态的播放位置。" + +msgid "" +"Wait for the current state playback to end, then switch to the beginning of " +"the next state animation." +msgstr "等待当前状态播放结束,然后切换到下一个状态动画的开头。" + +msgid "Don't use this transition." +msgstr "不要使用该过渡。" + +msgid "" +"Only use this transition during [method AnimationNodeStateMachinePlayback." +"travel]." +msgstr "仅在 [method AnimationNodeStateMachinePlayback.travel] 时使用该过渡。" + +msgid "" +"Automatically use this transition if the [member advance_condition] and " +"[member advance_expression] checks are true (if assigned)." +msgstr "" +"如果 [member advance_condition] 和 [member advance_expression] 检查为真,则自" +"动使用该过渡(如果已分配)。" + +msgid "A time-scaling animation node to be used with [AnimationTree]." +msgstr "与 [AnimationTree] 一起使用的时间缩放动画节点。" + +msgid "" +"Allows scaling the speed of the animation (or reversing it) in any children " +"nodes. Setting it to 0 will pause the animation." +msgstr "允许缩放任何子节点中动画的速度(或反转)。将其设置为 0 将暂停动画。" + +msgid "A time-seeking animation node to be used with [AnimationTree]." +msgstr "与 [AnimationTree] 配合使用的寻时动画节点。" + +msgid "A generic animation transition node for [AnimationTree]." +msgstr "[AnimationTree] 的通用动画过渡节点。" + +msgid "" +"Returns whether the animation restarts when the animation transitions from " +"the other animation." +msgstr "返回当动画从另一个动画过渡时,该动画是否重新开始。" + +msgid "" +"Returns [code]true[/code] if auto-advance is enabled for the given [param " +"input] index." +msgstr "" +"如果为给定的 [param input] 索引启用了自动前进,则返回 [code]true[/code]。" + +msgid "" +"Enables or disables auto-advance for the given [param input] index. If " +"enabled, state changes to the next input after playing the animation once. " +"If enabled for the last input state, it loops to the first." +msgstr "" +"为给定的 [param input] 索引启用或禁用自动前进。如果启用,状态会在播放一次动画" +"后更改为下一个输入。如果为最后一个输入状态启用,它会循环到第一个。" + +msgid "" +"If [code]true[/code], the destination animation is restarted when the " +"animation transitions." +msgstr "如果为 [code]true[/code],则目标动画在动画过渡时重新启动。" + +msgid "" +"If [code]true[/code], allows transition to the self state. When the reset " +"option is enabled in input, the animation is restarted. If [code]false[/" +"code], nothing happens on the transition to the self state." +msgstr "" +"如果为 [code]true[/code],允许过渡到当前状态。当在输入中启用重置选项时,动画" +"将重新启动。如果为 [code]false[/code],则在过渡到 当前状态时不会发生任何事" +"情。" + +msgid "The number of enabled input ports for this node." +msgstr "该节点已启用的输入端口数。" + +msgid "" +"Determines how cross-fading between animations is eased. If empty, the " +"transition will be linear." +msgstr "确定如何缓动动画之间的淡入淡出。如果为空,过渡将是线性的。" + +msgid "" +"Cross-fading time (in seconds) between each animation connected to the " +"inputs." +msgstr "连接到输入的每个动画之间的交叉渐变时间(秒)。" + +msgid "Player of [Animation] resources." +msgstr "[Animation] 资源的播放器。" + +msgid "" +"An animation player is used for general-purpose playback of [Animation] " +"resources. It contains a dictionary of [AnimationLibrary] resources and " +"custom blend times between animation transitions.\n" +"Some methods and properties use a single key to reference an animation " +"directly. These keys are formatted as the key for the library, followed by a " +"forward slash, then the key for the animation within the library, for " +"example [code]\"movement/run\"[/code]. If the library's key is an empty " +"string (known as the default library), the forward slash is omitted, being " +"the same key used by the library.\n" +"[AnimationPlayer] is more suited than [Tween] for animations where you know " +"the final values in advance. For example, fading a screen in and out is more " +"easily done with an [AnimationPlayer] node thanks to the animation tools " +"provided by the editor. That particular example can also be implemented with " +"a [Tween], but it requires doing everything by code.\n" +"Updating the target properties of animations occurs at process time." +msgstr "" +"动画播放器用于 [Animation] 资源的通用播放。它包含一个 [AnimationLibrary] 资源" +"的字典和动画过渡之间的自定义混合时间。\n" +"某些方法和属性使用单个键直接引用动画。这些键的格式为库的键,后跟正斜杠,然后" +"是库内动画的键,例如 [code]\"movement/run\"[/code]。如果库的键是空字符串(称" +"为默认库),则省略正斜杠,与库使用的键相同。\n" +"[AnimationPlayer] 比 [Tween] 更适合用于事先知道最终值的动画。例如,由于编辑器" +"提供的动画工具,使用 [AnimationPlayer] 节点可以更轻松地实现屏幕淡入淡出。该特" +"定示例也可以使用 [Tween] 实现,但它需要通过代码来完成一切。\n" +"更新动画的目标属性是在处理时进行的。" + +msgid "A virtual function for processing after key getting during playback." +msgstr "一个用于播放期间键获取之后的处理的虚函数。" + +msgid "" +"Adds [param library] to the animation player, under the key [param name]." +msgstr "将 [param library] 添加到该动画播放器的键 [param name] 下。" + +msgid "" +"Shifts position in the animation timeline and immediately updates the " +"animation. [param delta] is the time in seconds to shift. Events between the " +"current frame and [param delta] are handled." +msgstr "" +"移动动画时间轴上的位置并立即更新动画。[param delta] 是要移动的时间,单位为" +"秒。会处理位于当前帧和 [param delta] 之间的事件。" + +msgid "" +"Returns the key of the animation which is queued to play after the [param " +"anim_from] animation." +msgstr "返回在 [param anim_from] 动画之后排队播放的动画的键。" + +msgid "" +"Triggers the [param anim_to] animation when the [param anim_from] animation " +"completes." +msgstr "当 [param anim_from] 动画完成时,触发 [param anim_to] 动画。" + +msgid "" +"[AnimationPlayer] caches animated nodes. It may not notice if a node " +"disappears; [method clear_caches] forces it to update the cache again." +msgstr "" +"[AnimationPlayer] 缓存动画节点。如果一个节点消失,它可能不会注意到;[method " +"clear_caches] 强制它再次更新缓存。" + +msgid "Clears all queued, unplayed animations." +msgstr "清除所有已排队、未播放的动画。" + +msgid "" +"Returns the key of [param animation] or an empty [StringName] if not found." +msgstr "返回 [param animation] 的键;如果未找到,则返回一个空的 [StringName]。" + +msgid "" +"Returns the key for the [AnimationLibrary] that contains [param animation] " +"or an empty [StringName] if not found." +msgstr "" +"返回包含 [param animation] 的 [AnimationLibrary] 的键;如果找不到,则返回一个" +"空的 [StringName]。" + +msgid "" +"Returns the first [AnimationLibrary] with key [param name] or [code]null[/" +"code] if not found." +msgstr "" +"返回第一个 [AnimationLibrary] 键 [param name];如果没有找到则返回 " +"[code]null[/code]。" + +msgid "Returns the list of stored library keys." +msgstr "返回存储的库的键的列表。" + +msgid "Returns the list of stored animation keys." +msgstr "返回存储的动画键列表。" + +msgid "" +"Returns the blend time (in seconds) between two animations, referenced by " +"their keys." +msgstr "返回两个动画之间的混合时间(以秒为单位),由它们的键引用。" + +msgid "Returns a list of the animation keys that are currently queued to play." +msgstr "返回当前排队播放的动画键列表。" + +msgid "" +"Returns [code]true[/code] if the [AnimationPlayer] stores an [Animation] " +"with key [param name]." +msgstr "" +"如果该 [AnimationPlayer] 使用键 [param name] 存储 [Animation],则返回 " +"[code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if the [AnimationPlayer] stores an " +"[AnimationLibrary] with key [param name]." +msgstr "" +"如果该 [AnimationPlayer] 使用键 [param name] 存储 [AnimationLibrary],则返回 " +"[code]true[/code]。" + +msgid "" +"Pauses the currently playing animation. The [member " +"current_animation_position] will be kept and calling [method play] or " +"[method play_backwards] without arguments or with the same animation name as " +"[member assigned_animation] will resume the animation.\n" +"See also [method stop]." +msgstr "" +"暂停当前播放的动画。[member current_animation_position] 将被保留,调用 " +"[method play] 或 [method play_backwards] 时,不带参数或使用与 [member " +"assigned_animation] 相同的动画名称,将恢复动画。\n" +"另见 [method stop]。" + +msgid "" +"Plays the animation with key [param name]. Custom blend times and speed can " +"be set. If [param custom_speed] is negative and [param from_end] is " +"[code]true[/code], the animation will play backwards (which is equivalent to " +"calling [method play_backwards]).\n" +"The [AnimationPlayer] keeps track of its current or last played animation " +"with [member assigned_animation]. If this method is called with that same " +"animation [param name], or with no [param name] parameter, the assigned " +"animation will resume playing if it was paused.\n" +"[b]Note:[/b] The animation will be updated the next time the " +"[AnimationPlayer] is processed. If other variables are updated at the same " +"time this is called, they may be updated too early. To perform the update " +"immediately, call [code]advance(0)[/code]." +msgstr "" +"播放键名为 [param name] 的动画。可以设置自定义混合时间和速度。如果 [param " +"custom_speed] 为负,且[param from_end] 为 [code]true[/code],则动画将向后播放" +"(相当于调用 [method play_backwards])。\n" +"[AnimationPlayer] 使用 [member assigned_animation] 跟踪其当前或上次播放的动" +"画。如果使用相同的动画 [param name] 或没有 [param name] 参数调用此方法,则分" +"配的动画将在暂停时恢复播放。\n" +"[b]注意:[/b]动画将在下次处理 [AnimationPlayer] 时更新。如果在调用该方法的同" +"时更新了其他变量,则它们可能更新得太早。要立即执行更新,请调用 " +"[code]advance(0)[/code]。" + +msgid "" +"Queues an animation for playback once the current one is done.\n" +"[b]Note:[/b] If a looped animation is currently playing, the queued " +"animation will never play unless the looped animation is stopped somehow." +msgstr "" +"将动画加入队列,在当前动画播放完毕后播放。\n" +"[b]注意:[/b]如果当前正在播放循环动画,除非以某种方式停止循环动画,否则排队的" +"动画将永远不会播放。" + +msgid "Removes the [AnimationLibrary] associated with the key [param name]." +msgstr "移除与键 [param name] 关联的 [AnimationLibrary]。" + +msgid "" +"Moves the [AnimationLibrary] associated with the key [param name] to the key " +"[param newname]." +msgstr "" +"将与键 [param name] 关联的 [AnimationLibrary] 移动到键 [param newname]。" + +msgid "" +"Seeks the animation to the [param seconds] point in time (in seconds). If " +"[param update] is [code]true[/code], the animation updates too, otherwise it " +"updates at process time. Events between the current frame and [param " +"seconds] are skipped.\n" +"[b]Note:[/b] Seeking to the end of the animation doesn't emit [signal " +"animation_finished]. If you want to skip animation and emit the signal, use " +"[method advance]." +msgstr "" +"将动画寻道到时间点 [param seconds](单位为秒)。[param update] 为 " +"[code]true[/code] 时会同时更新动画,否则会在处理时更新。当前帧和 [param " +"seconds] 之间的事件会被跳过。\n" +"[b]注意:[/b]寻道至动画的末尾不会触发 [signal animation_finished]。如果想要跳" +"过动画并触发该信号,请使用 [method advance]。" + +msgid "" +"Specifies a blend time (in seconds) between two animations, referenced by " +"their keys." +msgstr "指定两个动画(由它们的键所引用)之间的混合时间(以秒为单位)。" + +msgid "" +"Stops the currently playing animation. The animation position is reset to " +"[code]0[/code] and the [code]custom_speed[/code] is reset to [code]1.0[/" +"code]. See also [method pause].\n" +"If [param keep_state] is [code]true[/code], the animation state is not " +"updated visually.\n" +"[b]Note:[/b] The method / audio / animation playback tracks will not be " +"processed by this method." +msgstr "" +"停止当前播放的动画。动画位置被重置为 [code]0[/code],[code]custom_speed[/" +"code] 被重置为 [code]1.0[/code]。另见 [method pause]。\n" +"如果 [param keep_state] 为 [code]true[/code],则动画状态不会在视觉上更新。\n" +"[b]注意:[/b]方法/音频/动画播放轨道不会被该方法处理。" + +msgid "" +"If playing, the the current animation's key, otherwise, the animation last " +"played. When set, this changes the animation, but will not play it unless " +"already playing. See also [member current_animation]." +msgstr "" +"如果正在播放,则为当前动画的键,否则为上次播放的动画。设置后会改变动画,但除" +"非已经播放,否则不会播放。另见 [member current_animation]。" + +msgid "" +"The number of possible simultaneous sounds for each of the assigned " +"AudioStreamPlayers.\n" +"For example, if this value is [code]32[/code] and the animation has two " +"audio tracks, the two [AudioStreamPlayer]s assigned can play simultaneously " +"up to [code]32[/code] voices each." +msgstr "" +"每个指定的 AudioStreamPlayer 可能同时发出的声音的数量。\n" +"例如,如果该值为 [code]32[/code] 并且动画有两个音轨,则分配的两个 " +"[AudioStreamPlayer] 可以同时播放最多 [code]32[/code] 个声音。" + +msgid "" +"The key of the currently playing animation. If no animation is playing, the " +"property's value is an empty string. Changing this value does not restart " +"the animation. See [method play] for more information on playing " +"animations.\n" +"[b]Note:[/b] While this property appears in the Inspector, it's not meant to " +"be edited, and it's not saved in the scene. This property is mainly used to " +"get the currently playing animation, and internally for animation playback " +"tracks. For more information, see [Animation]." +msgstr "" +"当前播放的动画的名称。如果没有动画正在播放,该属性的值是一个空字符串。改变这" +"个值不会重新启动动画。关于播放动画的更多信息请参阅 [method play]。\n" +"[b]注意:[/b]虽然这个属性会出现在检查器中,但它不是用来编辑的,也不会保存在场" +"景中。该属性主要用于获取当前播放的动画,内部用于动画播放轨道。详情请参阅 " +"[Animation]。" + +msgid "The length (in seconds) of the currently playing animation." +msgstr "当前正在播放的动画的长度(以秒为单位)。" + +msgid "The position (in seconds) of the currently playing animation." +msgstr "当前播放的动画的位置(以秒为单位)。" + +msgid "The call mode to use for Call Method tracks." +msgstr "方法调用轨道所使用的调用模式。" + +msgid "" +"If [code]true[/code] and the engine is running in Movie Maker mode (see " +"[MovieWriter]), exits the engine with [method SceneTree.quit] as soon as an " +"animation is done playing in this [AnimationPlayer]. A message is printed " +"when the engine quits for this reason.\n" +"[b]Note:[/b] This obeys the same logic as the [signal animation_finished] " +"signal, so it will not quit the engine if the animation is set to be looping." +msgstr "" +"如果为 [code]true[/code],并且引擎在 Movie Maker 模式下运行(请参阅 " +"[MovieWriter]),则在此 [AnimationPlayer] 中播放完动画后,立即使用 [method " +"SceneTree.quit] 退出引擎。当引擎因此而退出时,会打印一条消息。\n" +"[b]注意:[/b]这与 [signal animation_finished] 信号遵循相同的逻辑,因此如果动" +"画被设置为循环,它不会退出引擎。" + +msgid "" +"If [code]true[/code], updates animations in response to process-related " +"notifications." +msgstr "如果为 [code]true[/code],根据流程相关通知更新动画。" + +msgid "" +"The default time in which to blend animations. Ranges from 0 to 4096 with " +"0.01 precision." +msgstr "混合动画的默认时间。范围从 0 到 4096,精度为 0.01。" + +msgid "The process notification in which to update animations." +msgstr "更新动画的过程通知。" + +msgid "" +"This is used by the editor. If set to [code]true[/code], the scene will be " +"saved with the effects of the reset animation (the animation with the key " +"[code]\"RESET\"[/code]) applied as if it had been seeked to time 0, with the " +"editor keeping the values that the scene had before saving.\n" +"This makes it more convenient to preview and edit animations in the editor, " +"as changes to the scene will not be saved as long as they are set in the " +"reset animation." +msgstr "" +"由编辑器使用。如果设置为 [code]true[/code],场景将被保存,并应用重置动画(带" +"有键 [code]\"RESET\"[/code] 的动画)的效果,就好像它已被定位到时间 0 一样,编" +"辑器保留场景在保存之前的值。\n" +"这使得在编辑器中预览和编辑动画更加方便,因为对场景的更改,只要在重置动画中被" +"设置,就不会被保存。" + +msgid "The node from which node path references will travel." +msgstr "节点路径引用将从其运行的节点。" + +msgid "" +"Emitted when a queued animation plays after the previous animation finished. " +"See [method queue].\n" +"[b]Note:[/b] The signal is not emitted when the animation is changed via " +"[method play] or by an [AnimationTree]." +msgstr "" +"在前一个动画完成后,播放队列中的动画时发出。请参阅 [method queue]。\n" +"[b]注意:[/b]通过 [method play] 或 [AnimationTree] 改变动画时,不会发出此信" +"号。" + +msgid "" +"Notifies when an animation finished playing.\n" +"[b]Note:[/b] This signal is not emitted if an animation is looping." +msgstr "" +"动画播放结束时通知。\n" +"[b]注意:[/b]如果动画正在循环播放,则不会发出此信号。" + +msgid "Notifies when the animation libraries have changed." +msgstr "当动画库发生更改时发出通知。" + +msgid "Notifies when an animation list is changed." +msgstr "当动画列表发生更改时发出通知。" + +msgid "Notifies when an animation starts playing." +msgstr "当动画开始播放时发出通知。" + +msgid "" +"Notifies when the caches have been cleared, either automatically, or " +"manually via [method clear_caches]." +msgstr "" +"当缓存被清除时通知,可以是自动清除,也可以是通过 [method clear_caches] 手动清" +"除。" + +msgid "" +"Process animation during the physics process. This is especially useful when " +"animating physics bodies." +msgstr "在物理过程中处理动画。在为物理物体设置动画时,这特别有用。" + +msgid "Process animation during the idle process." +msgstr "在空闲过程中处理动画。" + +msgid "" +"Do not process animation. Use [method advance] to process the animation " +"manually." +msgstr "不处理动画。使用[method advance]手动处理动画。" + +msgid "" +"Batch method calls during the animation process, then do the calls after " +"events are processed. This avoids bugs involving deleting nodes or modifying " +"the AnimationPlayer while playing." +msgstr "" +"在动画过程中批量调用方法,然后在处理完事件后再进行调用。这样就避免了在播放过" +"程中涉及删除节点或修改AnimationPlayer的错误。" + +msgid "Make method calls immediately when reached in the animation." +msgstr "在动画中达到时立即进行方法调用。" + +msgid "" +"A node to be used for advanced animation transitions in an [AnimationPlayer]." +msgstr "用于 [AnimationPlayer] 中高级动画过渡的节点。" + +msgid "" +"A node to be used for advanced animation transitions in an " +"[AnimationPlayer].\n" +"[b]Note:[/b] When linked with an [AnimationPlayer], several properties and " +"methods of the corresponding [AnimationPlayer] will not function as " +"expected. Playback and transitions should be handled using only the " +"[AnimationTree] and its constituent [AnimationNode](s). The " +"[AnimationPlayer] node should be used solely for adding, deleting, and " +"editing animations." +msgstr "" +"用于 [AnimationPlayer] 中高级动画过渡的节点。\n" +"[b]注意:[/b]与 [AnimationPlayer] 连接时,该 [AnimationPlayer] 的一些属性和方" +"法将不会像预期的那样发挥作用。播放和过渡应该只使用 [AnimationTree] 和组成它" +"的 [AnimationNode] 来处理。[AnimationPlayer] 节点应仅用于添加、删除和编辑动" +"画。" + +msgid "Using AnimationTree" +msgstr "使用 AnimationTree" + +msgid "Manually advance the animations by the specified time (in seconds)." +msgstr "手动将动画前进指定的时间(单位为秒)。" + +msgid "" +"Retrieve the motion delta of position with the [member root_motion_track] as " +"a [Vector3] that can be used elsewhere.\n" +"If [member root_motion_track] is not a path to a track of type [constant " +"Animation.TYPE_POSITION_3D], returns [code]Vector3(0, 0, 0)[/code].\n" +"See also [member root_motion_track] and [RootMotionView].\n" +"The most basic example is applying position to [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_rotation: Quaternion\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_rotation = get_quaternion()\n" +" state_machine.travel(\"Animate\")\n" +" var velocity: Vector3 = current_rotation * animation_tree." +"get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"By using this in combination with [method " +"get_root_motion_position_accumulator], you can apply the root motion " +"position more correctly to account for the rotation of the node.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +" var velocity: Vector3 = (animation_tree." +"get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * " +"animation_tree.get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"将具有 [member root_motion_track] 的位置的运动增量,检索为一个可以在其他地方" +"使用的 [Vector3]。\n" +"如果 [member root_motion_track] 不是 [constant Animation.TYPE_POSITION_3D] 类" +"型轨道的路径,则返回 [code]Vector3(0, 0, 0)[/code]。\n" +"另见 [member root_motion_track] 和 [RootMotionView]。\n" +"最基本的示例是将位置应用于 [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_rotation: Quaternion\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_rotation = get_quaternion()\n" +" state_machine.travel(\"Animate\")\n" +" var velocity: Vector3 = current_rotation * animation_tree." +"get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"通过将其与 [method get_root_motion_position_accumulator] 结合使用,您可以更正" +"确地应用根运动位置来考虑节点的旋转。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +" var velocity: Vector3 = (animation_tree." +"get_root_motion_rotation_accumulator().inverse() * get_quaternion()) * " +"animation_tree.get_root_motion_position() / delta\n" +" set_velocity(velocity)\n" +" move_and_slide()\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Retrieve the motion delta of rotation with the [member root_motion_track] as " +"a [Quaternion] that can be used elsewhere.\n" +"If [member root_motion_track] is not a path to a track of type [constant " +"Animation.TYPE_ROTATION_3D], returns [code]Quaternion(0, 0, 0, 1)[/code].\n" +"See also [member root_motion_track] and [RootMotionView].\n" +"The most basic example is applying rotation to [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation())\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"检索带有 [member root_motion_track] 的旋转运动,作为一个 [Quaternion],可以在" +"其他地方使用。\n" +"如果 [member root_motion_track] 不是 [constant Animation.TYPE_ROTATION_3D] 类" +"型的轨迹的路径,返回 [code]Quaternion(0, 0, 0, 1)[/code] 。\n" +"另见 [member root_motion_track] 和 [RootMotionView]。\n" +"最基本的例子是对 [CharacterBody3D] 应用旋转。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" set_quaternion(get_quaternion() * animation_tree." +"get_root_motion_rotation() )\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Retrieve the blended value of the rotation tracks with the [member " +"root_motion_track] as a [Quaternion] that can be used elsewhere.\n" +"This is necessary to apply the root motion position correctly, taking " +"rotation into account. See also [method get_root_motion_position].\n" +"Also, this is useful in cases where you want to respect the initial key " +"values of the animation.\n" +"For example, if an animation with only one key [code]Quaternion(0, 0, 0, 1)[/" +"code] is played in the previous frame and then an animation with only one " +"key [code]Quaternion(0, 0.707, 0, 0.707)[/code] is played in the next frame, " +"the difference can be calculated as follows:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_rotation_accumulator: Quaternion\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_rotation_accumulator: Quaternion = " +"animation_tree.get_root_motion_Quaternion_accumulator()\n" +" var difference: Quaternion = prev_root_motion_rotation_accumulator." +"inverse() * current_root_motion_rotation_accumulator\n" +" prev_root_motion_rotation_accumulator = " +"current_root_motion_rotation_accumulator\n" +" transform.basis *= difference\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"However, if the animation loops, an unintended discrete change may occur, so " +"this is only useful for some simple use cases." +msgstr "" +"检索带有 [member root_motion_track] 的旋转轨道的混合值,作为一个 " +"[Quaternion],可以在其他地方使用。\n" +"这里必须正确地结合根运动位置,并且要考虑到旋转。参考 [method " +"get_root_motion_position]。\n" +"并且,当你想重视动画的初始动画帧的值时,这会很有用。\n" +"比如说,如果一个动画在上一帧只播放一个 [code]Quaternion(0, 0, 0, 1)[/code] 动" +"画帧,并且一个动画在下一帧只播放了一个动画帧的 [code]Quaternion(0, 0.707, 0, " +"0.707)[/code] 时,它们相差的值可以这样求出:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_rotation_accumulator: Quaternion\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_rotation_accumulator: Quaternion = " +"animation_tree.get_root_motion_Quaternion_accumulator()\n" +" var difference: Quaternion = prev_root_motion_rotation_accumulator." +"inverse() * current_root_motion_rotation_accumulator\n" +" prev_root_motion_rotation_accumulator = " +"current_root_motion_rotation_accumulator\n" +" transform.basis *= difference\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"然而,当一个动画循环时,可能会得到一个意料之外的变化,所以这个只在一些简单情" +"况下才有用。" + +msgid "" +"Retrieve the motion delta of scale with the [member root_motion_track] as a " +"[Vector3] that can be used elsewhere.\n" +"If [member root_motion_track] is not a path to a track of type [constant " +"Animation.TYPE_SCALE_3D], returns [code]Vector3(0, 0, 0)[/code].\n" +"See also [member root_motion_track] and [RootMotionView].\n" +"The most basic example is applying scale to [CharacterBody3D]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var current_scale: Vector3 = Vector3(1, 1, 1)\n" +"var scale_accum: Vector3 = Vector3(1, 1, 1)\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_scale = get_scale()\n" +" scale_accum = Vector3(1, 1, 1)\n" +" state_machine.travel(\"Animate\")\n" +" scale_accum += animation_tree.get_root_motion_scale()\n" +" set_scale(current_scale * scale_accum)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"检索具有[member root_motion_track]的scale的运动,作为一个[Vector3],可以在其" +"他地方使用。\n" +"如果[member root_motion_track]不是一个类型为[constant Animation." +"TYPE_SCALE_3D]的轨迹的路径,返回[code]Vector3(0, 0, 0)[/code] 。\n" +"另见[成员root_motion_track]和[RootMotionView]。\n" +"最基本的例子是对[CharacterBody3D]应用缩放。\n" +"[codeblocks]。\n" +"[gdscript]\n" +"var current_scale:Vector3 = Vector3(1, 1, 1)\n" +"var scale_accum: Vector3 = Vector3(1, 1, 1)\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" current_scale = get_scale()\n" +" scale_accum = Vector3(1, 1, 1)\n" +" state_machine.travel(\"Animate\")\n" +" scale_accum += animation_tree.get_root_motion_scale()\n" +" set_scale(current_scale * scale_accum)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Retrieve the blended value of the scale tracks with the [member " +"root_motion_track] as a [Vector3] that can be used elsewhere.\n" +"For example, if an animation with only one key [code]Vector3(1, 1, 1)[/code] " +"is played in the previous frame and then an animation with only one key " +"[code]Vector3(2, 2, 2)[/code] is played in the next frame, the difference " +"can be calculated as follows:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_scale_accumulator: Vector3\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_scale_accumulator: Vector3 = animation_tree." +"get_root_motion_scale_accumulator()\n" +" var difference: Vector3 = current_root_motion_scale_accumulator - " +"prev_root_motion_scale_accumulator\n" +" prev_root_motion_scale_accumulator = " +"current_root_motion_scale_accumulator\n" +" transform.basis = transform.basis.scaled(difference)\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"However, if the animation loops, an unintended discrete change may occur, so " +"this is only useful for some simple use cases." +msgstr "" +"检索带有 [member root_motion_track] 的缩放轨道的混合值,作为一个 [Vector3]," +"可以在其他地方使用。\n" +"例如,如果一个动画在前一帧只播放了一个动画帧 [code]Vector3(1, 1, 1)[/code]," +"并且一个动画在后一帧只播放了一个动画帧 [code]Vector3(2, 2, 2)[/code],他们之" +"间相差的值可以这样求出:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var prev_root_motion_scale_accumulator: Vector3\n" +"\n" +"func _process(delta):\n" +" if Input.is_action_just_pressed(\"animate\"):\n" +" state_machine.travel(\"Animate\")\n" +" var current_root_motion_scale_accumulator: Vector3 = animation_tree." +"get_root_motion_scale_accumulator()\n" +" var difference: Vector3 = current_root_motion_scale_accumulator - " +"prev_root_motion_scale_accumulator\n" +" prev_root_motion_scale_accumulator = " +"current_root_motion_scale_accumulator\n" +" transform.basis = transform.basis.scaled(difference)\n" +"[/gdscript]\n" +"[/codeblocks]\n" +"然而,当一个动画循环时,可能会得到一个意料之外的变化,所以这个只在一些简单情" +"况下才有用。" + +msgid "If [code]true[/code], the [AnimationTree] will be processing." +msgstr "如果 [code]true[/code] 时,[AnimationTree] 将执行逻辑处理。" + +msgid "The path to the [AnimationPlayer] used for animating." +msgstr "用于动画的 [AnimationPlayer] 的路径。" + +msgid "" +"The process mode of this [AnimationTree]. See [enum " +"AnimationProcessCallback] for available modes." +msgstr "" +"该 [AnimationTree] 的处理模式。可用的模式见 [enum AnimationProcessCallback]。" + +msgid "The root animation node of this [AnimationTree]. See [AnimationNode]." +msgstr "该 [AnimationTree] 的根动画节点。见 [AnimationNode]。" + +msgid "" +"Notifies when an animation finished playing.\n" +"[b]Note:[/b] This signal is not emitted if an animation is looping or " +"aborted. Also be aware of the possibility of unseen playback by sync and " +"xfade." +msgstr "" +"某个动画完成播放时发出通知。\n" +"[b]注意:[/b]如果动画需要循环或者是被中止的,则不会发出该信号。另外请意识到可" +"能存在同步和过渡所导致的不可见的播放。" + +msgid "" +"Notifies when an animation starts playing.\n" +"[b]Note:[/b] This signal is not emitted if an animation is looping or " +"playbacked from the middle. Also be aware of the possibility of unseen " +"playback by sync and xfade." +msgstr "" +"某个动画完成播放时发出通知。\n" +"[b]注意:[/b]如果动画需要循环或者是被中止的,则不会发出该信号。另外请意识到可" +"能存在同步和过渡所导致的不可见的播放。" + +msgid "" +"The animations will progress during the physics frame (i.e. [method Node." +"_physics_process])." +msgstr "在物理帧期间进行动画(即 [method Node._physics_process])。" + +msgid "" +"The animations will progress during the idle frame (i.e. [method Node." +"_process])." +msgstr "在空闲帧期间进行动画(即 [method Node._process])。" + +msgid "The animations will only progress manually (see [method advance])." +msgstr "只能手动行进动画(见 [method advance])。" + +msgid "Using Area2D" +msgstr "使用 Area2D" + +msgid "2D Pong Demo" +msgstr "2D Pong 演示" + +msgid "2D Platformer Demo" +msgstr "2D 平台跳跃演示" + +msgid "" +"Returns a list of intersecting [Area2D]s. The overlapping area's [member " +"CollisionObject2D.collision_layer] must be part of this area's [member " +"CollisionObject2D.collision_mask] in order to be detected.\n" +"For performance reasons (collisions are all processed at the same time) this " +"list is modified once during the physics step, not immediately after objects " +"are moved. Consider using signals instead." +msgstr "" +"返回相交的 [Area2D] 的列表。重叠区域的 [member CollisionObject2D." +"collision_layer] 必须是这个区域 [member CollisionObject2D.collision_mask] 的" +"一部分,这样才能被检测到。\n" +"出于性能的考虑(所有碰撞都是一起处理的),这个列表会在物理步骤中进行一次修" +"改,而不是在物体被移动后立即修改。可考虑改用信号。" + +msgid "" +"The rate at which objects stop spinning in this area. Represents the angular " +"velocity lost per second.\n" +"See [member ProjectSettings.physics/2d/default_angular_damp] for more " +"details about damping." +msgstr "" +"物体在此区域停止旋转的速度。代表每秒损失的角速度。\n" +"关于阻尼的更多细节见 [member ProjectSettings.physics/2d/" +"default_angular_damp]。" + +msgid "" +"Override mode for angular damping calculations within this area. See [enum " +"SpaceOverride] for possible values." +msgstr "" +"此区域内的角阻尼计算的覆盖模式。有关可能的值,请参阅 [enum SpaceOverride]。" + +msgid "The name of the area's audio bus." +msgstr "该区域音频总线的名称。" + +msgid "" +"If [code]true[/code], the area's audio bus overrides the default audio bus." +msgstr "如果为 [code]true[/code],该区域的音频总线将覆盖默认的音频总线。" + +msgid "" +"The area's gravity intensity (in pixels per second squared). This value " +"multiplies the gravity direction. This is useful to alter the force of " +"gravity without altering its direction." +msgstr "" +"该区域的重力强度(以像素每平方秒为单位)。这个值是重力向量的倍数。这对于改变" +"重力大小而不改变其方向很有用。" + +msgid "The area's gravity vector (not normalized)." +msgstr "该区域的重力向量(未归一化)。" + +msgid "" +"If [code]true[/code], gravity is calculated from a point (set via [member " +"gravity_point_center]). See also [member gravity_space_override]." +msgstr "" +"如果为 [code]true[/code],则从一个点(通过 [member gravity_point_center] 设" +"置)计算重力。参阅 [member gravity_space_override]。" + +msgid "" +"If gravity is a point (see [member gravity_point]), this will be the point " +"of attraction." +msgstr "如果重力是一个点(参见 [member gravity_point]),这将是吸引力点。" + +msgid "" +"Override mode for gravity calculations within this area. See [enum " +"SpaceOverride] for possible values." +msgstr "" +"该区域内重力计算的覆盖模式。有关可能的值,请参阅 [enum SpaceOverride]。" + +msgid "" +"The rate at which objects stop moving in this area. Represents the linear " +"velocity lost per second.\n" +"See [member ProjectSettings.physics/2d/default_linear_damp] for more details " +"about damping." +msgstr "" +"物体在此区域停止运动的速度。代表每秒损失的线速度。\n" +"关于阻尼的更多细节见 [member ProjectSettings.physics/2d/" +"default_linear_damp]。" + +msgid "" +"Override mode for linear damping calculations within this area. See [enum " +"SpaceOverride] for possible values." +msgstr "该区域内线性阻尼计算的覆盖模式。可取的值见 [enum SpaceOverride]。" + +msgid "If [code]true[/code], other monitoring areas can detect this area." +msgstr "如果为 [code]true[/code],其他监测区域可以检测到这个区域。" + +msgid "" +"If [code]true[/code], the area detects bodies or areas entering and exiting " +"it." +msgstr "" +"为 [code]true[/code] 时,该区域能够检测到进入和退出该区域的实体或区域。" + +msgid "The area's priority. Higher priority areas are processed first." +msgstr "该区域的优先级。将优先处理优先级较高的区域。" + +msgid "" +"Emitted when the received [param area] enters this area. Requires [member " +"monitoring] to be set to [code]true[/code]." +msgstr "" +"当接收的 [param area] 进入此区域时发出。需要 [member monitoring] 被设置为 " +"[code]true[/code]。" + +msgid "" +"Emitted when the received [param area] exits this area. Requires [member " +"monitoring] to be set to [code]true[/code]." +msgstr "" +"当接收的 [param area] 退出此区域时发出。需要 [member monitoring] 被设置为 " +"[code]true[/code]。" + +msgid "" +"Emitted when a [Shape2D] of the received [param area] enters a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param area_shape_index] contain indices of " +"the interacting shapes from this area and the other area, respectively. " +"[param area_rid] contains the [RID] of the other area. These values can be " +"used with the [PhysicsServer2D].\n" +"[b]Example of getting the[/b] [CollisionShape2D] [b]node from the shape " +"index:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner(area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"当收到的 [param area] 的 [Shape2D] 进入这个区域的形状时发出。要求[成员监控]被" +"设置为 [code]true[/code] 。\n" +"[param local_shape_index] 和 [param area_shape_index] 分别包含来自这个区域和" +"另一个区域的交互形状的索引。[param area_rid] 包含另一个区域的 [RID]。这些值可" +"以与 [PhysicsServer2D] 一起使用。\n" +"[b]从形状索引中获取[/b] [CollisionShape2D][b]节点的例子。[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner( area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Emitted when a [Shape2D] of the received [param area] exits a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"See also [signal area_shape_entered]." +msgstr "" +"当接收的 [param area] 的 [Shape2D] 退出此区域的形状时发出。需要 [member " +"monitoring] 被设置为 [code]true[/code]。\n" +"另见 [signal area_shape_entered]。" + +msgid "" +"Emitted when the received [param body] enters this area. [param body] can be " +"a [PhysicsBody2D] or a [TileMap]. [TileMap]s are detected if their [TileSet] " +"has collision shapes configured. Requires [member monitoring] to be set to " +"[code]true[/code]." +msgstr "" +"当接收到的 [param body] 进入这个区域时发出的。[param body] 可以是一个 " +"[PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] 的 [TileSet] 配置了碰撞形" +"状,就会被检测到。需要将 [member monitoring] 设置为 [code]true[/code] 。" + +msgid "" +"Emitted when the received [param body] exits this area. [param body] can be " +"a [PhysicsBody2D] or a [TileMap]. [TileMap]s are detected if their [TileSet] " +"has collision shapes configured. Requires [member monitoring] to be set to " +"[code]true[/code]." +msgstr "" +"当接收到的 [param body] 离开这个区域时发出的。[param body] 可以是一个 " +"[PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] 的 [TileSet] 配置了碰撞形" +"状,就会被检测到。要求 [member monitoring] 被设置为 [code]true[/code] 。" + +msgid "" +"Emitted when a [Shape2D] of the received [param body] enters a shape of this " +"area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are " +"detected if their [TileSet] has collision shapes configured. Requires " +"[member monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param body_shape_index] contain indices of " +"the interacting shapes from this area and the interacting body, " +"respectively. [param body_rid] contains the [RID] of the body. These values " +"can be used with the [PhysicsServer2D].\n" +"[b]Example of getting the[/b] [CollisionShape2D] [b]node from the shape " +"index:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var body_shape_owner = body.shape_find_owner(body_shape_index)\n" +"var body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"当收到的 [param body] 的 [Shape2D] 进入这个区域的形状时发出。[param body] 可" +"以是一个 [PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] 的 [TileSet] 配置了" +"碰撞形状,则会被检测到。要求 [member monitoring] 被设置为 [code]true[/" +"code] 。\n" +"[param local_shape_index] 和 [param body_shape_index] 分别包含来自这个区域和" +"交互体的交互形状的指数。[param body_rid] 包含体的 [RID]。这些值可以与 " +"[PhysicsServer2D] 一起使用。\n" +"[b]从形状索引中获取[/b] [CollisionShape2D] [b]节点的例子。[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var body_shape_owner = body.shape_find_owner(body_shape_index)\n" +"var body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Emitted when a [Shape2D] of the received [param body] exits a shape of this " +"area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are " +"detected if their [TileSet] has collision shapes configured. Requires " +"[member monitoring] to be set to [code]true[/code].\n" +"See also [signal body_shape_entered]." +msgstr "" +"当收到的 [param body] 的 [Shape2D] 退出这个区域的形状时发出。[param body] 可" +"以是一个 [PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] 的 [TileSet] 配置了" +"碰撞形状,则会被检测到。要求 [member monitoring] 被设置为 [code]true[/" +"code] 。\n" +"另请参阅 [signal body_shape_entered]。" + +msgid "This area does not affect gravity/damping." +msgstr "这个区域不影响重力/阻尼。" + +msgid "" +"This area adds its gravity/damping values to whatever has been calculated so " +"far (in [member priority] order)." +msgstr "" +"该区域将其重力/阻尼值加到迄今为止计算出的任何值上(按 [member priority] 排" +"序)。" + +msgid "" +"This area adds its gravity/damping values to whatever has been calculated so " +"far (in [member priority] order), ignoring any lower priority areas." +msgstr "" +"该区域将其重力/阻尼值添加到到目前为止已计算的任何内容(按 [member priority] " +"顺序),而忽略任何较低优先级的区域。" + +msgid "" +"This area replaces any gravity/damping, even the defaults, ignoring any " +"lower priority areas." +msgstr "该区域将替换所有重力/阻尼,甚至是默认值,而忽略任何较低优先级的区域。" + +msgid "" +"This area replaces any gravity/damping calculated so far (in [member " +"priority] order), but keeps calculating the rest of the areas." +msgstr "" +"这个区域取代了到目前为止计算出的任何重力/阻尼(按 [member priority] 顺序)," +"但继续计算其余的区域。" + +msgid "" +"3D area that detects [CollisionObject3D] nodes overlapping, entering, or " +"exiting. Can also alter or override local physics parameters (gravity, " +"damping) and route audio to custom audio buses.\n" +"To give the area its shape, add a [CollisionShape3D] or a " +"[CollisionPolygon3D] node as a [i]direct[/i] child (or add multiple such " +"nodes as direct children) of the area.\n" +"[b]Warning:[/b] See [ConcavePolygonShape3D] (also called \"trimesh\") for a " +"warning about possibly unexpected behavior when using that shape for an " +"area.\n" +"[b]Warning:[/b] With a non-uniform scale this node will probably not " +"function as expected. Please make sure to keep its scale uniform (i.e. the " +"same on all axes), and change the size(s) of its collision shape(s) instead." +msgstr "" +"3D 区域可以检测 [CollisionObject3D] 节点重叠、进入或退出 。还可以更改或覆盖局" +"部物理参数(重力、阻尼),以及将音频路由到自定义音频总线。\n" +"要为区域设置形状,请添加一个 [CollisionShape3D] 或 [CollisionPolygon3D] 节点" +"作为该区域的[i]直接[/i]子节点(或添加多个该类节点作为直接子节点)。\n" +"[b]警告:[/b]请参阅 [ConcavePolygonShape3D](也称为“三角形网格”)以获取有关在" +"区域中使用该形状时可能出现意外行为的警告。\n" +"[b]警告:[/b]如果缩放比例不一致,该节点可能无法按预期运行。请确保保持其比例统" +"一(即在所有轴上相同),并改为更改其碰撞形状的大小。" + +msgid "GUI in 3D Demo" +msgstr "3D GUI 演示" + +msgid "" +"Returns a list of intersecting [Area3D]s. The overlapping area's [member " +"CollisionObject3D.collision_layer] must be part of this area's [member " +"CollisionObject3D.collision_mask] in order to be detected.\n" +"For performance reasons (collisions are all processed at the same time) this " +"list is modified once during the physics step, not immediately after objects " +"are moved. Consider using signals instead." +msgstr "" +"返回相交的 [Area3D] 的列表。重叠区域的 [member CollisionObject3D." +"collision_layer] 必须是该区域的 [member CollisionObject3D.collision_mask] 的" +"一部分才能被检测到。\n" +"出于性能原因(同时处理所有碰撞),此列表在物理步骤期间修改一次,而不是在实体" +"被移动后立即修改。可考虑改用信号。" + +msgid "" +"Returns [code]true[/code] if the given [Area3D] intersects or overlaps this " +"[Area3D], [code]false[/code] otherwise.\n" +"[b]Note:[/b] The result of this test is not immediate after moving objects. " +"For performance, list of overlaps is updated once per frame and before the " +"physics step. Consider using signals instead." +msgstr "" +"如果给定的 [Area3D] 与此 [Area3D] 相交或重叠,则返回 [code]true[/code],否则" +"返回 [code]false[/code]。\n" +"[b]注意:[/b]此测试的结果不是在移动实体后立即产生的。为了提高性能,重叠列表每" +"帧仅更新一次,并且在物理步骤之前更新。可考虑改用信号。" + +msgid "" +"The rate at which objects stop spinning in this area. Represents the angular " +"velocity lost per second.\n" +"See [member ProjectSettings.physics/3d/default_angular_damp] for more " +"details about damping." +msgstr "" +"物体在此区域停止旋转的速度。代表每秒损失的角速度.\n" +"关于阻尼的更多细节,见 [member ProjectSettings.physics/3d/" +"default_angular_damp]。" + +msgid "" +"The area's gravity intensity (in meters per second squared). This value " +"multiplies the gravity direction. This is useful to alter the force of " +"gravity without altering its direction." +msgstr "" +"该区域的重力强度(以米每平方秒为单位)。这个值是重力向量的倍数。这对于改变重" +"力大小而不改变其方向很有用。" + +msgid "" +"The rate at which objects stop moving in this area. Represents the linear " +"velocity lost per second.\n" +"See [member ProjectSettings.physics/3d/default_linear_damp] for more details " +"about damping." +msgstr "" +"实体在此区域减速的速率。代表每秒损失的线速度。\n" +"关于阻尼的更多细节,见[member ProjectSettings.physics/3d/" +"default_linear_damp]。" + +msgid "" +"The degree to which this area applies reverb to its associated audio. Ranges " +"from [code]0[/code] to [code]1[/code] with [code]0.1[/code] precision." +msgstr "" +"该区域对其相关音频应用混响的程度。范围从 [code]0[/code] 到 [code]1[/code],精" +"度为 [code]0.1[/code]。" + +msgid "If [code]true[/code], the area applies reverb to its associated audio." +msgstr "如果为 [code]true[/code],该区域会将混响应用于其关联音频。" + +msgid "The name of the reverb bus to use for this area's associated audio." +msgstr "用于该区域关联音频的混响总线的名称。" + +msgid "" +"The degree to which this area's reverb is a uniform effect. Ranges from " +"[code]0[/code] to [code]1[/code] with [code]0.1[/code] precision." +msgstr "" +"该区域的混响效果均匀的程度。范围从 [code]0[/code] 到 [code]1[/code],精度为 " +"[code]0.1[/code]。" + +msgid "" +"The exponential rate at which wind force decreases with distance from its " +"origin." +msgstr "风力随着距其原点的距离而衰减的指数速率。" + +msgid "The magnitude of area-specific wind force." +msgstr "特定区域风力的大小。" + +msgid "" +"The [Node3D] which is used to specify the the direction and origin of an " +"area-specific wind force. The direction is opposite to the z-axis of the " +"[Node3D]'s local transform, and its origin is the origin of the [Node3D]'s " +"local transform." +msgstr "" +"[Node3D] 用于指定特定区域风力的方向和原点。方向与 [Node3D] 局部变换的 z 轴相" +"反,其原点为 [Node3D] 局部变换的原点。" + +msgid "" +"Emitted when a [Shape3D] of the received [param area] enters a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param area_shape_index] contain indices of " +"the interacting shapes from this area and the other area, respectively. " +"[param area_rid] contains the [RID] of the other area. These values can be " +"used with the [PhysicsServer3D].\n" +"[b]Example of getting the[/b] [CollisionShape3D] [b]node from the shape " +"index:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner(area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"当收到的 [param area] 的 [Shape3D] 进入这个区域的形状时发出。要求 [member " +"monitoring] 被设置为 [code]true[/code] 。\n" +"[param local_shape_index] 和 [param area_shape_index] 分别包含来自这个区域和" +"另一个区域的交互形状的索引。[param area_rid] 包含另一个区域的 [RID]。这些值可" +"以与 [PhysicsServer3D] 一起使用。\n" +"[b]从形状索引中获取[/b] [CollisionShape3D] [b]节点的例子。[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner( area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Emitted when a [Shape3D] of the received [param area] exits a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"See also [signal area_shape_entered]." +msgstr "" +"当接收的 [param area] 的 [Shape3D] 退出此区域的形状时发出。需要 [member " +"monitoring] 被设置为 [code]true[/code]。\n" +"另见 [signal area_shape_entered]。" + +msgid "" +"Emitted when the received [param body] enters this area. [param body] can be " +"a [PhysicsBody3D] or a [GridMap]. [GridMap]s are detected if their " +"[MeshLibrary] has collision shapes configured. Requires [member monitoring] " +"to be set to [code]true[/code]." +msgstr "" +"当接收到的 [param body] 进入这个区域时触发。[param body] 可以是一个 " +"[PhysicsBody3D] 或一个 [GridMap]。如果 [GridMap] 的 [MeshLibrary] 配置了碰撞" +"形状,就会被检测到。需要将 [member monitoring] 设置为 [code]true[/code] 。" + +msgid "" +"Emitted when the received [param body] exits this area. [param body] can be " +"a [PhysicsBody3D] or a [GridMap]. [GridMap]s are detected if their " +"[MeshLibrary] has collision shapes configured. Requires [member monitoring] " +"to be set to [code]true[/code]." +msgstr "" +"当接收到的 [param body] 离开这个区域时发出的。[param body] 可以是一个 " +"[PhysicsBody3D] 或一个 [GridMap]。如果 [GridMap] 的 [MeshLibrary] 配置了碰撞" +"形状,就会被检测到。要求 [member monitoring] 被设置为 [code]true[/code] 。" + +msgid "A generic array datatype." +msgstr "通用数组数据类型。" + +msgid "" +"A generic array that can contain several elements of any type, accessible by " +"a numerical index starting at 0. Negative indices can be used to count from " +"the back, like in Python (-1 is the last element, -2 is the second to last, " +"etc.).\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = [\"One\", 2, 3, \"Four\"]\n" +"print(array[0]) # One.\n" +"print(array[2]) # 3.\n" +"print(array[-1]) # Four.\n" +"array[2] = \"Three\"\n" +"print(array[-2]) # Three.\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array{\"One\", 2, 3, \"Four\"};\n" +"GD.Print(array[0]); // One.\n" +"GD.Print(array[2]); // 3.\n" +"GD.Print(array[array.Count - 1]); // Four.\n" +"array[2] = \"Three\";\n" +"GD.Print(array[array.Count - 2]); // Three.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Arrays can be concatenated using the [code]+[/code] operator:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array1 = [\"One\", 2]\n" +"var array2 = [3, \"Four\"]\n" +"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// Array concatenation is not possible with C# arrays, but is with Godot." +"Collections.Array.\n" +"var array1 = new Godot.Collections.Array{\"One\", 2};\n" +"var array2 = new Godot.Collections.Array{3, \"Four\"};\n" +"GD.Print(array1 + array2); // Prints [One, 2, 3, Four]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Concatenating with the [code]+=[/code] operator will create a " +"new array, which has a cost. If you want to append another array to an " +"existing array, [method append_array] is more efficient.\n" +"[b]Note:[/b] Arrays are always passed by reference. To get a copy of an " +"array that can be modified independently of the original array, use [method " +"duplicate].\n" +"[b]Note:[/b] Erasing elements while iterating over arrays is [b]not[/b] " +"supported and will result in unpredictable behavior.\n" +"[b]Note:[/b] When declaring an array with [code]const[/code], the array " +"itself can still be mutated by defining the values at individual indices or " +"pushing/removing elements. Using [code]const[/code] will only prevent " +"assigning the constant with another value after it was initialized." +msgstr "" +"通用数组,可以包含任意类型的多个元素,可以通过从 0 开始的数字索引进行访问。负" +"数索引可以用来从后面数起,就像在 Python 中一样(-1 是最后一个元素、-2 是倒数" +"第二,以此类推)。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = [\"One\", 2, 3, \"Four\"]\n" +"print(array[0]) # One。\n" +"print(array[2]) # 3。\n" +"print(array[-1]) # Four。\n" +"array[2] = \"Three\"\n" +"print(array[-2]) # Three。\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array{\"One\", 2, 3, \"Four\"};\n" +"GD.Print(array[0]); // One。\n" +"GD.Print(array[2]); // 3。\n" +"GD.Print(array[array.Count - 1]); // Four。\n" +"array[2] = \"Three\";\n" +"GD.Print(array[array.Count - 2]); // Three。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"可以使用 [code]+[/code] 运算符连接数组:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array1 = [\"One\", 2]\n" +"var array2 = [3, \"Four\"]\n" +"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// C# 数组无法进行数组串联,但 Godot.Collections.Array 可以。\n" +"var array1 = new Godot.Collections.Array{\"One\", 2};\n" +"var array2 = new Godot.Collections.Array{3, \"Four\"};\n" +"GD.Print(array1 + array2); // Prints [One, 2, 3, Four]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]用 [code]+=[/code] 操作符串联将创建一个新的数组,这是有代价的。" +"如果要将另一个数组追加到现有的数组中,[method append_array] 会更有效。\n" +"[b]注意:[/b]数组总是通过引用来传递。要获得一个可以独立于原始数组而被修改的数" +"组的副本,请使用 [method duplicate]。\n" +"[b]注意:[/b][b]不[/b]支持在遍历数组时擦除元素,这将导致不可预知的行为。\n" +"[b]注意:[/b]当用 [code]const[/code] 声明数组时,数组本身仍然可以通过定义各个" +"索引上的值或追加/移除元素而被修改。使用 [code]const[/code] 只能防止该常量在初" +"始化后被赋值为另一个值。" + +msgid "Constructs an empty [Array]." +msgstr "构造空的 [Array]。" + +msgid "Creates a typed array from the [param base] array." +msgstr "从 [param base] 数组创建具有类型的数组。" + +msgid "" +"Returns the same array as [param from]. If you need a copy of the array, use " +"[method duplicate]." +msgstr "" +"返回与 [param from] 相同的数组。如果你需要一个数组的副本,请使用 [method " +"duplicate]。" + +msgid "Constructs an array from a [PackedByteArray]." +msgstr "从 [PackedByteArray] 构造一个数组。" + +msgid "Constructs an array from a [PackedColorArray]." +msgstr "从 [PackedColorArray] 构造一个数组。" + +msgid "Constructs an array from a [PackedFloat32Array]." +msgstr "从 [PackedFloat32Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedFloat64Array]." +msgstr "从 [PackedFloat64Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedInt32Array]." +msgstr "从 [PackedInt32Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedInt64Array]." +msgstr "从 [PackedInt64Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedStringArray]." +msgstr "从 [PackedStringArray] 构造一个数组。" + +msgid "Constructs an array from a [PackedVector2Array]." +msgstr "从 [PackedVector2Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedVector3Array]." +msgstr "从 [PackedVector3Array] 构造一个数组。" + +msgid "" +"Calls the provided [Callable] on each element in the array and returns " +"[code]true[/code] if the [Callable] returns [code]true[/code] for [i]all[/i] " +"elements in the array. If the [Callable] returns [code]false[/code] for one " +"array element or more, this method returns [code]false[/code].\n" +"The callable's method should take one [Variant] parameter (the current array " +"element) and return a boolean value.\n" +"[codeblock]\n" +"func _ready():\n" +" print([6, 10, 6].all(greater_than_5)) # Prints True (3/3 elements " +"evaluate to `true`).\n" +" print([4, 10, 4].all(greater_than_5)) # Prints False (1/3 elements " +"evaluate to `true`).\n" +" print([4, 4, 4].all(greater_than_5)) # Prints False (0/3 elements " +"evaluate to `true`).\n" +" print([].all(greater_than_5)) # Prints True (0/0 elements evaluate to " +"`true`).\n" +"\n" +" print([6, 10, 6].all(func(number): return number > 5)) # Prints True. " +"Same as the first line above, but using lambda function.\n" +"\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"[/codeblock]\n" +"See also [method any], [method filter], [method map] and [method reduce].\n" +"[b]Note:[/b] Unlike relying on the size of an array returned by [method " +"filter], this method will return as early as possible to improve performance " +"(especially with large arrays).\n" +"[b]Note:[/b] For an empty array, this method [url=https://en.wikipedia.org/" +"wiki/Vacuous_truth]always[/url] returns [code]true[/code]." +msgstr "" +"对数组中的每个元素调用提供的 [Callable],如果 [Callable] 为数组中的 [i]所有[/" +"i] 元素返回 [code]true[/code],则返回 [code]true[/code]。如果 [Callable] 为一" +"个或多个数组元素返回 [code]false[/code],则此方法返回 [code]false[/code]。\n" +"该可调用的方法应采用一个 [Variant] 参数(当前数组元素)并返回一个布尔值。\n" +"[codeblock]\n" +"func _ready():\n" +" print([6, 10, 6].all(greater_than_5)) # 输出 True(3/3 元素评估为 " +"`true`)。\n" +" print([4, 10, 4].all(greater_than_5)) # 输出 False(1/3 元素评估为 " +"`true`)。\n" +" print([4, 4, 4].all(greater_than_5)) # 输出 False(0/3 元素评估为 " +"`true`)。\n" +" print([].all(greater_than_5)) # 输出 True(0/0 元素评估为 `true`)。\n" +"\n" +" print([6, 10, 6].all(func(number): return number > 5)) # 输出 True。与上" +"面的第一行相同,但使用 lambda 函数。\n" +"\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"[/codeblock]\n" +"另请参见 [method any]、[method filter]、[method map] 和 [method reduce]。\n" +"[b]注意:[/b]与依赖 [method filter] 返回的数组大小不同,此方法会尽可能早地返" +"回以提高性能(尤其是对于大型数组)。\n" +"[b]注意:[/b]对于空数组,此方法 [url=https://en.wikipedia.org/wiki/" +"Vacuous_truth]总是[/url] 返回 [code]true[/code]。" + +msgid "" +"Calls the provided [Callable] on each element in the array and returns " +"[code]true[/code] if the [Callable] returns [code]true[/code] for [i]one or " +"more[/i] elements in the array. If the [Callable] returns [code]false[/code] " +"for all elements in the array, this method returns [code]false[/code].\n" +"The callable's method should take one [Variant] parameter (the current array " +"element) and return a boolean value.\n" +"[codeblock]\n" +"func _ready():\n" +" print([6, 10, 6].any(greater_than_5)) # Prints True (3 elements " +"evaluate to `true`).\n" +" print([4, 10, 4].any(greater_than_5)) # Prints True (1 elements " +"evaluate to `true`).\n" +" print([4, 4, 4].any(greater_than_5)) # Prints False (0 elements " +"evaluate to `true`).\n" +" print([].any(greater_than_5)) # Prints False (0 elements evaluate to " +"`true`).\n" +"\n" +" print([6, 10, 6].any(func(number): return number > 5)) # Prints True. " +"Same as the first line above, but using lambda function.\n" +"\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"[/codeblock]\n" +"See also [method all], [method filter], [method map] and [method reduce].\n" +"[b]Note:[/b] Unlike relying on the size of an array returned by [method " +"filter], this method will return as early as possible to improve performance " +"(especially with large arrays).\n" +"[b]Note:[/b] For an empty array, this method always returns [code]false[/" +"code]." +msgstr "" +"对数组中的每个元素调用提供的 [Callable],如果 [Callable] 为数组中的 [i] 一个" +"或多个 [/i] 元素返回 [code]true[/code],则返回 [code]true[/code]。如果 " +"[Callable] 为数组中的所有元素返回 [code]false[/code],则此方法返回 " +"[code]false[/code]。\n" +"可调用的方法应采用一个 [Variant] 参数(当前数组元素)并返回一个布尔值。\n" +"[codeblock]\n" +"func _ready():\n" +" print([6, 10, 6].any(greater_than_5)) # 输出 True(3 个元素评估为 " +"`true`)。\n" +" print([4, 10, 4].any(greater_than_5)) # 输出 True(1 个元素评估为 " +"`true`)。\n" +" print([4, 4, 4].any(greater_than_5)) # 输出 False(0 个元素评估为 " +"`true`)。\n" +" print([].any(greater_than_5)) # 输出 False(0 个元素评估为 `true`)。\n" +"\n" +" print([6, 10, 6].any(func(number): return number > 5)) # 输出 True。与上" +"面的第一行相同,但使用 lambda 函数。\n" +"\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"[/codeblock]\n" +"另请参阅 [method all]、[method filter]、[method map] 和 [method reduce]。\n" +"[b]注意:[/b]与依赖 [method filter] 返回的数组大小不同,此方法会尽可能早地返" +"回以提高性能(尤其是对于大型数组)。\n" +"[b]注意:[/b]对于一个空数组,这个方法总是返回 [code]false[/code]。" + +msgid "" +"Appends an element at the end of the array (alias of [method push_back])." +msgstr "向数组末尾追加一个元素([method push_back] 的别名)。" + +msgid "" +"Appends another array at the end of this array.\n" +"[codeblock]\n" +"var array1 = [1, 2, 3]\n" +"var array2 = [4, 5, 6]\n" +"array1.append_array(array2)\n" +"print(array1) # Prints [1, 2, 3, 4, 5, 6].\n" +"[/codeblock]" +msgstr "" +"在该数组的末尾追加其他数组。\n" +"[codeblock]\n" +"var array1 = [1, 2, 3]\n" +"var array2 = [4, 5, 6]\n" +"array1.append_array(array2)\n" +"print(array1) # 输出 [1, 2, 3, 4, 5, 6].\n" +"[/codeblock]" + +msgid "" +"Returns the last element of the array. Prints an error and returns " +"[code]null[/code] if the array is empty.\n" +"[b]Note:[/b] Calling this function is not the same as writing [code]array[-1]" +"[/code]. If the array is empty, accessing by index will pause project " +"execution when running from the editor." +msgstr "" +"返回数组的最后一个元素。如果数组为空,则打印一个错误并返回 [code]null[/" +"code]。\n" +"[b]注意:[/b]调用这个函数与写入 [code]array[-1][/code] 不一样,如果数组是空" +"的,当从编辑器运行时,按索引访问将暂停项目的执行。" + +msgid "" +"Clears the array. This is equivalent to using [method resize] with a size of " +"[code]0[/code]." +msgstr "清空数组。相当于调用 [method resize] 时指定大小为 [code]0[/code]。" + +msgid "Returns the number of times an element is in the array." +msgstr "返回元素在数组中出现的次数。" + +msgid "" +"Removes the first occurrence of a value from the array. If the value does " +"not exist in the array, nothing happens. To remove an element by index, use " +"[method remove_at] instead.\n" +"[b]Note:[/b] This method acts in-place and doesn't return a value.\n" +"[b]Note:[/b] On large arrays, this method will be slower if the removed " +"element is close to the beginning of the array (index 0). This is because " +"all elements placed after the removed element have to be reindexed.\n" +"[b]Note:[/b] Do not erase entries while iterating over the array." +msgstr "" +"从数组中移除第一个匹配的值。如果数组中不存在该值,则什么也不会发生。要通过索" +"引移除元素,请改用 [method remove_at]。\n" +"[b]注意:[/b]这个方法是就地操作的,不返回值。\n" +"[b]注意:[/b]在大型数组上,如果移除的元素靠近数组的开头(索引 0),则此方法会" +"较慢。这是因为所有放置在移除元素之后的元素都必须重新索引。\n" +"[b]注意:[/b]在遍历数组时不要移除条目。" + +msgid "" +"Assigns the given value to all elements in the array. This can typically be " +"used together with [method resize] to create an array with a given size and " +"initialized elements:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = []\n" +"array.resize(10)\n" +"array.fill(0) # Initialize the 10 elements to 0.\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array();\n" +"array.Resize(10);\n" +"array.Fill(0); // Initialize the 10 elements to 0.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] If [param value] is of a reference type ([Object]-derived, " +"[Array], [Dictionary], etc.) then the array is filled with the references to " +"the same object, i.e. no duplicates are created." +msgstr "" +"将该数组中的所有元素都设置为给定的值。通常与 [method resize] 一起使用,用于创" +"建给定大小的数组并对其元素进行初始化:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = []\n" +"array.resize(10)\n" +"array.fill(0) # 将 10 个元素都初始化为 0。\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array();\n" +"array.Resize(10);\n" +"array.Fill(0); // 将 10 个元素都初始化为 0。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]如果 [param value] 为引用类型(派生自 [Object]、[Array]、" +"[Dictionary] 等),那么会用同一个对象的引用填充该数组,即不会创建副本。" + +msgid "" +"Calls the provided [Callable] on each element in the array and returns a new " +"array with the elements for which the method returned [code]true[/code].\n" +"The callable's method should take one [Variant] parameter (the current array " +"element) and return a boolean value.\n" +"[codeblock]\n" +"func _ready():\n" +" print([1, 2, 3].filter(remove_1)) # Prints [2, 3].\n" +" print([1, 2, 3].filter(func(number): return number != 1)) # Same as " +"above, but using lambda function.\n" +"\n" +"func remove_1(number):\n" +" return number != 1\n" +"[/codeblock]\n" +"See also [method any], [method all], [method map] and [method reduce]." +msgstr "" +"在数组中的每个元素上调用提供的 [Callable],并返回一个新数组,其中包含调用方法" +"后返回值为 [code]true[/code] 的元素。\n" +"可调用的方法应该采用一个 [Variant] 参数(当前数组元素)并返回一个布尔值。\n" +"[codeblock]\n" +"func _ready():\n" +" print([1, 2, 3].filter(remove_1)) # 打印 [2, 3]。\n" +" print([1, 2, 3].filter(func(number): return number != 1)) # 同上,但使用 " +"lambda 函数。\n" +"\n" +"func remove_1(number):\n" +" return number != 1\n" +"[/codeblock]\n" +"另请参见 [method any]、[method all]、[method map] 和 [method reduce]。" + +msgid "" +"Searches the array for a value and returns its index or [code]-1[/code] if " +"not found. Optionally, the initial search index can be passed." +msgstr "" +"在数组中搜索值并返回其索引,如果未找到则返回 [code]-1[/code] 。可选地,可以传" +"递起始搜索索引。" + +msgid "" +"Returns the first element of the array. Prints an error and returns " +"[code]null[/code] if the array is empty.\n" +"[b]Note:[/b] Calling this function is not the same as writing [code]array[0]" +"[/code]. If the array is empty, accessing by index will pause project " +"execution when running from the editor." +msgstr "" +"返回数组的第一个元素。如果数组为空,则打印错误并返回 [code]null[/code]。\n" +"[b]注意:[/b]调用这个函数和写 [code]array[0][/code] 是不一样的,如果数组为" +"空,从编辑器运行时按索引访问将暂停项目执行。" + +msgid "" +"Returns a hashed 32-bit integer value representing the array and its " +"contents.\n" +"[b]Note:[/b] [Array]s with equal content will always produce identical hash " +"values. However, the reverse is not true. Returning identical hash values " +"does [i]not[/i] imply the arrays are equal, because different arrays can " +"have identical hash values due to hash collisions." +msgstr "" +"返回代表该数组及其内容的 32 位整数哈希值。\n" +"[b]注意:[/b]内容相同的 [Array] 会得到一致的哈希值。然而,反之不然。返回一致" +"的哈希值[i]并不[/i]意味着数组相等,因为不同的数组可能因为哈希碰撞而得到一致的" +"哈希值。" + +msgid "" +"Inserts a new element at a given position in the array. The position must be " +"valid, or at the end of the array ([code]pos == size()[/code]).\n" +"[b]Note:[/b] This method acts in-place and doesn't return a value.\n" +"[b]Note:[/b] On large arrays, this method will be slower if the inserted " +"element is close to the beginning of the array (index 0). This is because " +"all elements placed after the newly inserted element have to be reindexed." +msgstr "" +"在给定的数组位置插入一个新值。位置必须合法,或者是在数组末尾([code]pos == " +"size()[/code])。\n" +"[b]注意:[/b]该方法在原地执行,没有返回值。\n" +"[b]注意:[/b]在较大的数组中,如果插入值的位置在数组偏前的位置,这个方法的运行" +"速度会比较慢,因为在插入值后面所有的元素都要被重新索引。" + +msgid "Returns [code]true[/code] if the array is empty." +msgstr "该数组为空时,返回 [code]true[/code]。" + +msgid "" +"Calls the provided [Callable] for each element in the array and returns a " +"new array filled with values returned by the method.\n" +"The callable's method should take one [Variant] parameter (the current array " +"element) and can return any [Variant].\n" +"[codeblock]\n" +"func _ready():\n" +" print([1, 2, 3].map(negate)) # Prints [-1, -2, -3].\n" +" print([1, 2, 3].map(func(number): return -number)) # Same as above, but " +"using lambda function.\n" +"\n" +"func negate(number):\n" +" return -number\n" +"[/codeblock]\n" +"See also [method filter], [method reduce], [method any] and [method all]." +msgstr "" +"为数组中的每个元素调用提供的 [Callable] 并返回一个新数组,其中填充了该调用方" +"法返回的值。\n" +"可调用的方法应该采用一个 [Variant] 参数(当前数组元素)并且可以返回任意 " +"[Variant]。\n" +"[codeblock]\n" +"func _ready():\n" +" print([1, 2, 3].map(negate)) # 打印 [-1, -2, -3].\n" +" print([1, 2, 3].map(func(number): return -number)) # 同上,但使用 lambda " +"函数。\n" +"\n" +"func negate(number):\n" +" return -number\n" +"[/codeblock]\n" +"另请参见 [method filter]、[method reduce]、[method any] 和 [method all]。" + +msgid "" +"Returns the maximum value contained in the array if all elements are of " +"comparable types. If the elements can't be compared, [code]null[/code] is " +"returned." +msgstr "" +"如果数组中的所有元素都是可比较的类型,返回其中的最大值。如果无法比较,返回 " +"[code]null[/code]。" + +msgid "" +"Returns the minimum value contained in the array if all elements are of " +"comparable types. If the elements can't be compared, [code]null[/code] is " +"returned." +msgstr "" +"如果数组中的所有元素都是可比较的类型,返回其中的最小值。如果无法比较,返回 " +"[code]null[/code]。" + +msgid "" +"Returns a random value from the target array.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array: Array[int] = [1, 2, 3, 4]\n" +"print(array.pick_random()) # Prints either of the four numbers.\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array { 1, 2, 3, 4 };\n" +"GD.Print(array.PickRandom()); // Prints either of the four numbers.\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从目标数组中返回一个随机值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array: Array[int] = [1, 2, 3, 4]\n" +"print(array.pick_random()) # 输出四个数字中的任何一个。\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array { 1, 2, 3, 4 };\n" +"GD.Print(array.PickRandom()); // 输出四个数字中的任何一个。\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Removes and returns the last element of the array. Returns [code]null[/code] " +"if the array is empty, without printing an error message. See also [method " +"pop_front]." +msgstr "" +"移除并返回数组中的末尾元素。如果数组为空,则返回 [code]null[/code],而不打印" +"错误消息。另见[method pop_front]。" + +msgid "" +"Removes and returns the first element of the array. Returns [code]null[/" +"code] if the array is empty, without printing an error message. See also " +"[method pop_back].\n" +"[b]Note:[/b] On large arrays, this method is much slower than [method " +"pop_back] as it will reindex all the array's elements every time it's " +"called. The larger the array, the slower [method pop_front] will be." +msgstr "" +"移除并返回数组的第一个元素。如果数组是空的,将不会输出任何错误信息并返回 " +"[code]null[/code]。另请参阅 [method pop_back]。\n" +"[b]注意:[/b]当数组元素很多时,由于 [method pop_front] 每次调用时都要重新寻找" +"数组所有元素的索引,所以会比 [method pop_back] 慢很多。数组越大,[method " +"pop_front] 越慢。" + +msgid "" +"Appends an element at the end of the array. See also [method push_front]." +msgstr "在数组的末端追加一个元素。另请参阅 [method push_front]。" + +msgid "" +"Adds an element at the beginning of the array. See also [method push_back].\n" +"[b]Note:[/b] On large arrays, this method is much slower than [method " +"push_back] as it will reindex all the array's elements every time it's " +"called. The larger the array, the slower [method push_front] will be." +msgstr "" +"在数组的开头添加一个元素。另请参阅 [method push_back]。\n" +"[b]注意:[/b]在大数组中,这个方法比 [method push_back] 慢得多,因为每次调用它" +"都会重新索引所有数组的元素。数组越大,[method push_front] 的速度就越慢。" + +msgid "" +"Removes an element from the array by index. If the index does not exist in " +"the array, nothing happens. To remove an element by searching for its value, " +"use [method erase] instead.\n" +"[b]Note:[/b] This method acts in-place and doesn't return a value.\n" +"[b]Note:[/b] On large arrays, this method will be slower if the removed " +"element is close to the beginning of the array (index 0). This is because " +"all elements placed after the removed element have to be reindexed." +msgstr "" +"按索引从数组中移除一个元素。如果索引在数组中不存在,则什么也不会发生。要通过" +"搜索一个元素的值来移除它,请使用 [method erase] 来代替。\n" +"[b]注意:[/b]这个方法是就地操作,不返回值。\n" +"[b]注意:[/b]在大数组中,如果被删除的元素靠近数组的开头(索引 0),这个方法会" +"比较慢。这是因为所有放置在被移除元素之后的元素都要被重新索引。" + +msgid "" +"Resizes the array to contain a different number of elements. If the array " +"size is smaller, elements are cleared, if bigger, new elements are " +"[code]null[/code]." +msgstr "" +"调整数组的大小,让包含的元素数量发生变化。如果数组变小则清除多余元素,变大则" +"新元素为 [code]null[/code]。" + +msgid "Reverses the order of the elements in the array." +msgstr "将数组中的元素逆序排列。" + +msgid "" +"Searches the array in reverse order. Optionally, a start search index can be " +"passed. If negative, the start index is considered relative to the end of " +"the array." +msgstr "" +"逆序搜索数组。还可以传递起始搜索位置索引。如果为负,则起始索引被视为相对于数" +"组的结尾。" + +msgid "" +"Shuffles the array such that the items will have a random order. This method " +"uses the global random number generator common to methods such as [method " +"@GlobalScope.randi]. Call [method @GlobalScope.randomize] to ensure that a " +"new seed will be used each time if you want non-reproducible shuffling." +msgstr "" +"将数组打乱,元素随机排列。该方法使用全局随机数生成器,与 [method " +"@GlobalScope.randi] 等方法一致。如果你想每次都使用新的种子,让打乱无法重现," +"则可以调用 [method @GlobalScope.randomize]。" + +msgid "Returns the number of elements in the array." +msgstr "返回数组中元素的个数。" + +msgid "" +"Sorts the array.\n" +"[b]Note:[/b] The sorting algorithm used is not [url=https://en.wikipedia.org/" +"wiki/Sorting_algorithm#Stability]stable[/url]. This means that values " +"considered equal may have their order changed when using [method sort].\n" +"[b]Note:[/b] Strings are sorted in alphabetical order (as opposed to natural " +"order). This may lead to unexpected behavior when sorting an array of " +"strings ending with a sequence of numbers. Consider the following example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n" +"strings.sort()\n" +"print(strings) # Prints [string1, string10, string11, string2]\n" +"[/gdscript]\n" +"[csharp]\n" +"var strings = new Godot.Collections.Array { \"string1\", \"string2\", " +"\"string10\", \"string11\" };\n" +"strings.Sort();\n" +"GD.Print(strings); // Prints [string1, string10, string11, string2]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"To perform natural order sorting, you can use [method sort_custom] with " +"[method String.naturalnocasecmp_to] as follows:\n" +"[codeblock]\n" +"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n" +"strings.sort_custom(func(a, b): return a.naturalnocasecmp_to(b) < 0)\n" +"print(strings) # Prints [string1, string2, string10, string11]\n" +"[/codeblock]" +msgstr "" +"对数组进行排序。\n" +"[b]注意:[/b]排序所使用的算法并不[url=https://zh.wikipedia.org/wiki/" +"%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#%E7%A9%A9%E5%AE%9A%E6%80%A7]稳定[/url]。" +"也就是说,使用 [method sort] 时相等的值之间的顺序可能会改变。\n" +"[b]注意:[/b]字符串按字母顺序排序(与自然顺序相反)。当对一个以数字序列结尾的" +"字符串数组进行排序时,这可能会导致意外的行为。请看下面的例子:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n" +"strings.sort()\n" +"print(strings) # 输出 [string1, string10, string11, string2]\n" +"[/gdscript]\n" +"[csharp]\n" +"var strings = new Godot.Collections.Array { \"string1\", \"string2\", " +"\"string10\", \"string11\" };\n" +"strings.Sort();\n" +"GD.Print(strings); // 输出 [string1, string10, string11, string2]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"要执行自然顺序排序,可以使用 [method sort_custom] 和 [method String." +"naturalnocasecmp_to],如下所示:\n" +"[codeblock]\n" +"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n" +"strings.sort_custom(func(a, b): return a.naturalnocasecmp_to(b) < 0)\n" +"print(strings) # 输出 [string1, string2, string10, string11]\n" +"[/codeblock]" + +msgid "" +"Sorts the array using a custom method. The custom method receives two " +"arguments (a pair of elements from the array) and must return either " +"[code]true[/code] or [code]false[/code]. For two elements [code]a[/code] and " +"[code]b[/code], if the given method returns [code]true[/code], element " +"[code]b[/code] will be after element [code]a[/code] in the array.\n" +"[b]Note:[/b] The sorting algorithm used is not [url=https://en.wikipedia.org/" +"wiki/Sorting_algorithm#Stability]stable[/url]. This means that values " +"considered equal may have their order changed when using [method " +"sort_custom].\n" +"[b]Note:[/b] You cannot randomize the return value as the heapsort algorithm " +"expects a deterministic result. Randomizing the return value will result in " +"unexpected behavior.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func sort_ascending(a, b):\n" +" if a[0] < b[0]:\n" +" return true\n" +" return false\n" +"\n" +"func _ready():\n" +" var my_items = [[5, \"Potato\"], [9, \"Rice\"], [4, \"Tomato\"]]\n" +" my_items.sort_custom(sort_ascending)\n" +" print(my_items) # Prints [[4, Tomato], [5, Potato], [9, Rice]].\n" +"\n" +" # Descending, lambda version.\n" +" my_items.sort_custom(func(a, b): return a[0] > b[0])\n" +" print(my_items) # Prints [[9, Rice], [5, Potato], [4, Tomato]].\n" +"[/gdscript]\n" +"[csharp]\n" +"// There is no custom sort support for Godot.Collections.Array\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"使用自定义的方法对数组进行排序。自定义方法接受两个参数(数组中的一对元素)," +"并且必须返回 [code]true[/code] 或者 [code]false[/code]。对于两个元素 " +"[code]a[/code] 和 [code]b[/code],如果给定的方法返回 [code]true[/code],数组" +"中的元素 [code]b[/code] 将排在元素 [code]a[/code] 之后。\n" +"[b]注意:[/b]排序所使用的算法并不[url=https://zh.wikipedia.org/wiki/" +"%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#%E7%A9%A9%E5%AE%9A%E6%80%A7]稳定[/url]。" +"也就是说,使用 [method sort_custom] 时相等的值之间的顺序可能会改变。\n" +"[b]注意:[/b]您不能随机化返回值,因为堆排序算法期望确定的结果。随机化返回值将" +"导致意外行为。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func sort_ascending(a, b):\n" +" if a[0] < b[0]:\n" +" return true\n" +" return false\n" +"\n" +"func _ready():\n" +" var my_items = [[5, \"Potato\"], [9, \"Rice\"], [4, \"Tomato\"]]\n" +" my_items.sort_custom(sort_ascending)\n" +" print(my_items) # 输出 [[4, Tomato], [5, Potato], [9, Rice]].\n" +"\n" +" # Descending, lambda version.\n" +" my_items.sort_custom(func(a, b): return a[0] > b[0])\n" +" print(my_items) # 输出 [[9, Rice], [5, Potato], [4, Tomato]].\n" +"[/gdscript]\n" +"[csharp]\n" +"// Godot.Collections.Array 不支持自定义排序\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Compares the left operand [Array] against the [param right] [Array]. Returns " +"[code]true[/code] if the sizes and contents of the arrays are equal, " +"[code]false[/code] otherwise." +msgstr "" +"将左操作数 [Array] 与 [param right] [Array] 进行比较。如果数组的大小和内容相" +"等,则返回 [code]true[/code],否则返回 [code]false[/code]。" + +msgid "" +"[Mesh] type that provides utility for constructing a surface from arrays." +msgstr "[Mesh] 网格类型,提供了用于从数组构造表面的工具。" + +msgid "" +"The [ArrayMesh] is used to construct a [Mesh] by specifying the attributes " +"as arrays.\n" +"The most basic example is the creation of a single triangle:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var vertices = PackedVector3Array()\n" +"vertices.push_back(Vector3(0, 1, 0))\n" +"vertices.push_back(Vector3(1, 0, 0))\n" +"vertices.push_back(Vector3(0, 0, 1))\n" +"\n" +"# Initialize the ArrayMesh.\n" +"var arr_mesh = ArrayMesh.new()\n" +"var arrays = []\n" +"arrays.resize(Mesh.ARRAY_MAX)\n" +"arrays[Mesh.ARRAY_VERTEX] = vertices\n" +"\n" +"# Create the Mesh.\n" +"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)\n" +"var m = MeshInstance3D.new()\n" +"m.mesh = arr_mesh\n" +"[/gdscript]\n" +"[csharp]\n" +"var vertices = new Vector3[]\n" +"{\n" +" new Vector3(0, 1, 0),\n" +" new Vector3(1, 0, 0),\n" +" new Vector3(0, 0, 1),\n" +"};\n" +"\n" +"// Initialize the ArrayMesh.\n" +"var arrMesh = new ArrayMesh();\n" +"var arrays = new Godot.Collections.Array();\n" +"arrays.Resize((int)Mesh.ArrayType.Max);\n" +"arrays[(int)Mesh.ArrayType.Vertex] = vertices;\n" +"\n" +"// Create the Mesh.\n" +"arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);\n" +"var m = new MeshInstance3D();\n" +"m.Mesh = arrMesh;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The [MeshInstance3D] is ready to be added to the [SceneTree] to be shown.\n" +"See also [ImmediateMesh], [MeshDataTool] and [SurfaceTool] for procedural " +"geometry generation.\n" +"[b]Note:[/b] Godot uses clockwise [url=https://learnopengl.com/Advanced-" +"OpenGL/Face-culling]winding order[/url] for front faces of triangle " +"primitive modes." +msgstr "" +"[ArrayMesh] 是用来构造 [Mesh] 的,其属性指定为数组。\n" +"最基本的例子是创建单个三角形:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var vertices = PackedVector3Array()\n" +"vertices.push_back(Vector3(0, 1, 0))\n" +"vertices.push_back(Vector3(1, 0, 0))\n" +"vertices.push_back(Vector3(0, 0, 1))\n" +"\n" +"# 初始化 ArrayMesh。\n" +"var arr_mesh = ArrayMesh.new()\n" +"var arrays = []\n" +"arrays.resize(Mesh.ARRAY_MAX)\n" +"arrays[Mesh.ARRAY_VERTEX] = vertices\n" +"\n" +"# 创建 Mesh。\n" +"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)\n" +"var m = MeshInstance3D.new()\n" +"m.mesh = arr_mesh\n" +"[/gdscript]\n" +"[csharp]\n" +"var vertices = new Vector3[]\n" +"{\n" +" new Vector3(0, 1, 0),\n" +" new Vector3(1, 0, 0),\n" +" new Vector3(0, 0, 1),\n" +"};\n" +"\n" +"// 初始化 ArrayMesh。\n" +"var arrMesh = new ArrayMesh();\n" +"var arrays = new Godot.Collections.Array();\n" +"arrays.Resize((int)Mesh.ArrayType.Max);\n" +"arrays[(int)Mesh.ArrayType.Vertex] = vertices;\n" +"\n" +"// 创建 Mesh。\n" +"arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);\n" +"var m = new MeshInstance3D();\n" +"m.Mesh = arrMesh;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"这个 [MeshInstance3D] 就可以添加到要显示的 [SceneTree] 中了。\n" +"程序几何体生成请参阅 [ImmediateMesh]、[MeshDataTool]、[SurfaceTool]。\n" +"[b]注意:[/b]Godot 对三角形图元模式的正面使用顺时针[url=https://learnopengl-" +"cn.github.io/04%20Advanced%20OpenGL/04%20Face%20culling/]环绕顺序[/url]。" + +msgid "Procedural geometry using the ArrayMesh" +msgstr "使用 ArrayMesh 的程序化几何体" + +msgid "" +"Adds name for a blend shape that will be added with [method " +"add_surface_from_arrays]. Must be called before surface is added." +msgstr "" +"为混合形状添加名称,该形状将用 [method add_surface_from_arrays] 添加。必须在" +"添加面之前调用。" + +msgid "" +"Creates a new surface. [method Mesh.get_surface_count] will become the " +"[code]surf_idx[/code] for this new surface.\n" +"Surfaces are created to be rendered using a [param primitive], which may be " +"any of the values defined in [enum Mesh.PrimitiveType].\n" +"The [param arrays] argument is an array of arrays. Each of the [constant " +"Mesh.ARRAY_MAX] elements contains an array with some of the mesh data for " +"this surface as described by the corresponding member of [enum Mesh." +"ArrayType] or [code]null[/code] if it is not used by the surface. For " +"example, [code]arrays[0][/code] is the array of vertices. That first vertex " +"sub-array is always required; the others are optional. Adding an index array " +"puts this surface into \"index mode\" where the vertex and other arrays " +"become the sources of data and the index array defines the vertex order. All " +"sub-arrays must have the same length as the vertex array (or be an exact " +"multiple of the vertex array's length, when multiple elements of a sub-array " +"correspond to a single vertex) or be empty, except for [constant Mesh." +"ARRAY_INDEX] if it is used.\n" +"The [param blend_shapes] argument is an array of vertex data for each blend " +"shape. Each element is an array of the same structure as [param arrays], but " +"[constant Mesh.ARRAY_VERTEX], [constant Mesh.ARRAY_NORMAL], and [constant " +"Mesh.ARRAY_TANGENT] are set if and only if they are set in [param arrays] " +"and all other entries are [code]null[/code].\n" +"The [param lods] argument is a dictionary with [float] keys and " +"[PackedInt32Array] values. Each entry in the dictionary represents a LOD " +"level of the surface, where the value is the [constant Mesh.ARRAY_INDEX] " +"array to use for the LOD level and the key is roughly proportional to the " +"distance at which the LOD stats being used. I.e., increasing the key of a " +"LOD also increases the distance that the objects has to be from the camera " +"before the LOD is used.\n" +"The [param flags] argument is the bitwise or of, as required: One value of " +"[enum Mesh.ArrayCustomFormat] left shifted by " +"[code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code] for each custom channel in use, " +"[constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE], [constant Mesh." +"ARRAY_FLAG_USE_8_BONE_WEIGHTS], or [constant Mesh." +"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY].\n" +"[b]Note:[/b] When using indices, it is recommended to only use points, " +"lines, or triangles." +msgstr "" +"创建一个新的表面。[method Mesh.get_surface_count] 将成为这个新表面的 " +"[code]surf_idx[/code]。\n" +"创建表面以使用 [param primitive] 进行渲染,它可以是 [enum Mesh." +"PrimitiveType] 中定义的任何值。\n" +"[param arrays] 参数是数组的数组。每个 [constant Mesh.ARRAY_MAX] 元素都包含一" +"个数组,其中包含此表面的一些网格数据,如 [enum Mesh.ArrayType] 的相应成员所描" +"述的一样;如果它未被使用,则为 [code]null[/code]。例如,[code]arrays[0][/" +"code] 是顶点数组。始终需要第一个顶点子数组;其他的是可选的。添加索引数组会将" +"此表面置于“索引模式”,其中顶点和其他数组成为数据源,索引数组定义顶点顺序。所" +"有子数组的长度必须与顶点数组的长度相同(或者是顶点数组长度的精确倍数,当子数" +"组的多个元素对应于单个顶点时);或者为空,如果使用了 [constant Mesh." +"ARRAY_INDEX ] 则除外。\n" +"[param blend_shapes] 参数是每个混合形状的顶点数据数组。 每个元素都是与 " +"[param arrays] 具有相同结构的数组,但是 [constant Mesh.ARRAY_VERTEX]、" +"[constant Mesh.ARRAY_NORMAL] 和 [constant Mesh.ARRAY_TANGENT] 这些条目,当且" +"仅当在 [param arrays] 被设置且所有其他条目都是 [code]null[/code] 时,会被设" +"置。\n" +"[param lods] 参数是一个带有 [float] 键和 [PackedInt32Array] 值的字典。字典中" +"的每个条目代表了表面的一个 LOD 级别,其中值是用于 LOD 级别的 [constant Mesh." +"ARRAY_INDEX] 数组,键大致与使用 LOD 统计信息的距离成正比。即,增加 LOD 的关键" +"点也会增加在使用 LOD 之前对象必须与相机的距离。\n" +"[param flags] 参数是根据需要按位或的:[enum Mesh.ArrayCustomFormat] 的一个值" +"左移 [code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code],用于每个正在使用的自定义通道," +"[constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE]、[constant Mesh." +"ARRAY_FLAG_USE_8_BONE_WEIGHTS]、或 [constant Mesh." +"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY]。\n" +"[b]注意:[/b]使用索引时,建议只使用点、线或三角形。" + +msgid "Removes all blend shapes from this [ArrayMesh]." +msgstr "移除此 [ArrayMesh] 的所有混合形状。" + +msgid "Removes all surfaces from this [ArrayMesh]." +msgstr "移除此 [ArrayMesh] 的所有表面。" + +msgid "Returns the number of blend shapes that the [ArrayMesh] holds." +msgstr "返回 [ArrayMesh] 持有的混合形状的数量。" + +msgid "Returns the name of the blend shape at this index." +msgstr "返回此索引处的混合形状的名称。" + +msgid "" +"Performs a UV unwrap on the [ArrayMesh] to prepare the mesh for lightmapping." +msgstr "在 [ArrayMesh] 上执行 UV 展开,为光照贴图准备该网格。" + +msgid "Regenerates tangents for each of the [ArrayMesh]'s surfaces." +msgstr "为每个 [ArrayMesh] 的表面重新生成切线。" + +msgid "Sets the name of the blend shape at this index." +msgstr "在此索引处设置混合形状的名称。" + +msgid "" +"Returns the index of the first surface with this name held within this " +"[ArrayMesh]. If none are found, -1 is returned." +msgstr "" +"返回此 [ArrayMesh] 中带有此名称的第一个曲面的索引。如果没有找到,则返回 -1。" + +msgid "" +"Returns the length in indices of the index array in the requested surface " +"(see [method add_surface_from_arrays])." +msgstr "" +"返回所请求的面中索引数组的索引长度(参见 [method add_surface_from_arrays])。" + +msgid "" +"Returns the length in vertices of the vertex array in the requested surface " +"(see [method add_surface_from_arrays])." +msgstr "" +"返回所请求曲面中顶点数组的顶点长度(见 [method add_surface_from_arrays])。" + +msgid "" +"Returns the format mask of the requested surface (see [method " +"add_surface_from_arrays])." +msgstr "返回所请求表面的格式掩码(见 [method add_surface_from_arrays])。" + +msgid "Gets the name assigned to this surface." +msgstr "获取分配给此表面的名称。" + +msgid "" +"Returns the primitive type of the requested surface (see [method " +"add_surface_from_arrays])." +msgstr "返回所请求曲面的图元类型(见 [method add_surface_from_arrays])。" + +msgid "Sets a name for a given surface." +msgstr "设置给定曲面的名称。" + +msgid "Sets the blend shape mode to one of [enum Mesh.BlendShapeMode]." +msgstr "将混合形状模式设置为 [enum Mesh.BlendShapeMode] 之一。" + +msgid "" +"Overrides the [AABB] with one defined by user for use with frustum culling. " +"Especially useful to avoid unexpected culling when using a shader to offset " +"vertices." +msgstr "" +"用用户定义的用于使用视锥剔除的一种替代 [AABB]。在使用着色器偏移顶点时,避免非" +"预期的剔除特别有用。" + +msgid "" +"An optional mesh which is used for rendering shadows and can be used for the " +"depth prepass. Can be used to increase performance of shadow rendering by " +"using a mesh that only contains vertex position data (without normals, UVs, " +"colors, etc.)." +msgstr "" +"用于渲染阴影并可用于深度预通道的可选网格。可用于通过使用仅包含顶点位置数据" +"(不含法线、UV、颜色等)的网格来提高阴影渲染的性能。" + +msgid "" +"3D polygon shape for use with occlusion culling in [OccluderInstance3D]." +msgstr "用于与 [OccluderInstance3D] 中的遮挡剔除一起使用的 3D 多边形形状。" + +msgid "" +"[ArrayOccluder3D] stores an arbitrary 3D polygon shape that can be used by " +"the engine's occlusion culling system. This is analogous to [ArrayMesh], but " +"for occluders.\n" +"See [OccluderInstance3D]'s documentation for instructions on setting up " +"occlusion culling." +msgstr "" +"[ArrayOccluder3D] 存储一个任意的 3D 多边形形状,可供引擎的遮挡剔除系统使用。" +"这类似于 [ArrayMesh],但适用于遮挡物。\n" +"有关设置遮挡剔除的说明,请参阅 [OccluderInstance3D] 的文档。" + +msgid "Container that preserves its child controls' aspect ratio." +msgstr "保留其子控件长宽比的容器。" + +msgid "" +"Arranges child controls in a way to preserve their aspect ratio " +"automatically whenever the container is resized. Solves the problem where " +"the container size is dynamic and the contents' size needs to adjust " +"accordingly without losing proportions." +msgstr "" +"以一种方式安排子控件,以便在容器调整大小时自动保留其长宽比。解决了容器大小是" +"动态的,而内容的大小需要相应调整而不失去比例的问题。" + +msgid "GUI containers" +msgstr "GUI 容器" + +msgid "Specifies the horizontal relative position of child controls." +msgstr "指定子控件的水平相对位置。" + +msgid "Specifies the vertical relative position of child controls." +msgstr "指定子控件的垂直相对位置。" + +msgid "" +"The aspect ratio to enforce on child controls. This is the width divided by " +"the height. The ratio depends on the [member stretch_mode]." +msgstr "" +"对子控件强制实施的长宽比。这是宽度除以高度。这个比例取决于 [member " +"stretch_mode]。" + +msgid "The stretch mode used to align child controls." +msgstr "用来对齐子控件的拉伸模式。" + +msgid "" +"The height of child controls is automatically adjusted based on the width of " +"the container." +msgstr "子控件的高度会根据容器的宽度自动调整。" + +msgid "" +"The width of child controls is automatically adjusted based on the height of " +"the container." +msgstr "子控件的宽度会根据容器的高度自动调整。" + +msgid "" +"The bounding rectangle of child controls is automatically adjusted to fit " +"inside the container while keeping the aspect ratio." +msgstr "子控件的边界矩形会自动调整以适应容器,同时保持长宽比。" + +msgid "" +"The width and height of child controls is automatically adjusted to make " +"their bounding rectangle cover the entire area of the container while " +"keeping the aspect ratio.\n" +"When the bounding rectangle of child controls exceed the container's size " +"and [member Control.clip_contents] is enabled, this allows to show only the " +"container's area restricted by its own bounding rectangle." +msgstr "" +"子控件的宽度和高度被自动调整,以使其边框覆盖容器的整个区域,同时保持长宽" +"比。\n" +"当子控件的边界矩形超过容器的大小,并且 [member Control.clip_contents] 被启用" +"时,这允许仅显示受其自身边界矩形限制的容器区域。" + +msgid "" +"Aligns child controls with the beginning (left or top) of the container." +msgstr "将子控件与容器的开头对齐(左侧或顶部)。" + +msgid "Aligns child controls with the center of the container." +msgstr "使子控件与容器的中心对齐。" + +msgid "Aligns child controls with the end (right or bottom) of the container." +msgstr "将子控件与容器的末端对齐(右侧或底部)。" + +msgid "AStar class representation that uses 2D vectors as edges." +msgstr "使用 2D 向量作为边缘的 AStar 类表示。" + +msgid "" +"This is a wrapper for the [AStar3D] class which uses 2D vectors instead of " +"3D vectors." +msgstr "这是 [AStar3D] 类的包装,它使用 2D 向量而不是 3D 向量。" + +msgid "" +"Called when computing the cost between two connected points.\n" +"Note that this function is hidden in the default [code]AStar2D[/code] class." +msgstr "" +"计算两个连接点之间的成本时调用。\n" +"注意这个函数隐藏在默认的 [code]AStar2D[/code] 类中。" + +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]AStar2D[/code] class." +msgstr "" +"当估计一个点和路径终点之间的成本时调用。\n" +"请注意,这个函数隐藏在默认的 [code]AStar2D[/code] 类中。" + +msgid "" +"Adds a new point at the given position with the given identifier. The [param " +"id] must be 0 or larger, and the [param weight_scale] must be 0.0 or " +"greater.\n" +"The [param weight_scale] is multiplied by the result of [method " +"_compute_cost] when determining the overall cost of traveling across a " +"segment from a neighboring point to this point. Thus, all else being equal, " +"the algorithm prefers points with lower [param weight_scale]s to form a " +"path.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(1, 0), 4) # Adds the point (1, 0) with " +"weight_scale 4 and id 1\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(1, 0), 4); // Adds the point (1, 0) with " +"weight_scale 4 and id 1\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If there already exists a point for the given [param id], its position and " +"weight scale are updated to the given values." +msgstr "" +"在具有给定标识符的给定位置添加一个新点。[param id] 必须为 0 或更大,[param " +"weight_scale] 必须为 0.0 或更大。\n" +"在确定从相邻点到此点的一段路程的总成本时,[param weight_scale] 要乘以 " +"[method _compute_cost] 的结果。因此,在其他条件相同的情况下,算法优先选择 " +"[param weight_scale] 较低的点来形成路径。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(1, 0), 4) # 添加点 (1, 0)、权重为 4、ID 为 1\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(1, 0), 4); // 添加点 (1, 0)、权重为 4、ID 为 " +"1\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果已经存在一个给定 [param id] 的点,则它的位置和权重缩放将被更新为给定值。" + +msgid "" +"Returns whether there is a connection/segment between the given points. If " +"[param bidirectional] is [code]false[/code], returns whether movement from " +"[param id] to [param to_id] is possible through this segment." +msgstr "" +"返回两个给定点之间是否存在连接/线段。如果 [param bidirectional] 为 " +"[code]false[/code],则返回是否可以通过此段从 [param id] 移动到 [param " +"to_id]。" + +msgid "Clears all the points and segments." +msgstr "清除所有点和线段。" + +msgid "" +"Creates a segment between the given points. If [param bidirectional] is " +"[code]false[/code], only movement from [param id] to [param to_id] is " +"allowed, not the reverse direction.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(1, 1))\n" +"astar.add_point(2, Vector2(0, 5))\n" +"astar.connect_points(1, 2, false)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(1, 1));\n" +"astar.AddPoint(2, new Vector2(0, 5));\n" +"astar.ConnectPoints(1, 2, false);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"在给定的点之间创建一个线段。如果 [param bidirectional] 为 [code]false[/" +"code],则只允许从 [param id] 到 [param to_id] 的移动,而不允许反向移动。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(1, 1))\n" +"astar.add_point(2, Vector2(0, 5))\n" +"astar.connect_points(1, 2, false)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(1, 1));\n" +"astar.AddPoint(2, new Vector2(0, 5));\n" +"astar.ConnectPoints(1, 2, false);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Deletes the segment between the given points. If [param bidirectional] is " +"[code]false[/code], only movement from [param id] to [param to_id] is " +"prevented, and a unidirectional segment possibly remains." +msgstr "" +"删除给定点之间的线段。如果 [param bidirectional] 为 [code]false[/code],则仅" +"阻止从 [param id] 到 [param to_id] 的移动,并且可能会保留一个单向线段。" + +msgid "Returns the next available point ID with no point associated to it." +msgstr "返回下一个没有关联点的可用点 ID。" + +msgid "" +"Returns the ID of the closest point to [param to_position], optionally " +"taking disabled points into account. Returns [code]-1[/code] if there are no " +"points in the points pool.\n" +"[b]Note:[/b] If several points are the closest to [param to_position], the " +"one with the smallest ID will be returned, ensuring a deterministic result." +msgstr "" +"返回距离 [param to_position] 最近的点的 ID,可以选择将禁用的点考虑在内。如果" +"点池中没有点,则返回 [code]-1[/code]。\n" +"[b]注意:[/b]如果有多个点距离 [param to_position] 最近,则返回 ID 最小的那个" +"点,以保证结果的确定性。" + +msgid "" +"Returns the closest position to [param to_position] that resides inside a " +"segment between two connected points.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 5))\n" +"astar.connect_points(1, 2)\n" +"var res = astar.get_closest_position_in_segment(Vector2(3, 3)) # Returns (0, " +"3)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 5));\n" +"astar.ConnectPoints(1, 2);\n" +"Vector2 res = astar.GetClosestPositionInSegment(new Vector2(3, 3)); // " +"Returns (0, 3)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The result is in the segment that goes from [code]y = 0[/code] to [code]y = " +"5[/code]. It's the closest position in the segment to the given point." +msgstr "" +"返回最接近 [param to_position] 的位置,该位置位于两个连接点之间的线段内。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 5))\n" +"astar.connect_points(1, 2)\n" +"var res = astar.get_closest_position_in_segment(Vector2(3, 3)) # 返回 (0, " +"3)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 5));\n" +"astar.ConnectPoints(1, 2);\n" +"Vector2 res = astar.GetClosestPositionInSegment(new Vector2(3, 3)); // 返回 " +"(0, 3)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"结果位于从 [code]y = 0[/code] 到 [code]y = 5[/code] 的线段中。它是线段中距给" +"定点最近的位置。" + +msgid "" +"Returns an array with the IDs of the points that form the path found by " +"AStar2D between the given points. The array is ordered from the starting " +"point to the ending point of the path.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 1), 1) # Default weight is 1\n" +"astar.add_point(3, Vector2(1, 1))\n" +"astar.add_point(4, Vector2(2, 0))\n" +"\n" +"astar.connect_points(1, 2, false)\n" +"astar.connect_points(2, 3, false)\n" +"astar.connect_points(4, 3, false)\n" +"astar.connect_points(1, 4, false)\n" +"\n" +"var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 1), 1); // Default weight is 1\n" +"astar.AddPoint(3, new Vector2(1, 1));\n" +"astar.AddPoint(4, new Vector2(2, 0));\n" +"\n" +"astar.ConnectPoints(1, 2, false);\n" +"astar.ConnectPoints(2, 3, false);\n" +"astar.ConnectPoints(4, 3, false);\n" +"astar.ConnectPoints(1, 4, false);\n" +"int[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If you change the 2nd point's weight to 3, then the result will be [code][1, " +"4, 3][/code] instead, because now even though the distance is longer, it's " +"\"easier\" to get through point 4 than through point 2." +msgstr "" +"返回一个数组,其中包含构成由 AStar2D 在给定点之间找到的路径的点的 ID。数组从" +"路径的起点到终点进行排序。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 1), 1) # 默认权重为 1\n" +"astar.add_point(3, Vector2(1, 1))\n" +"astar.add_point(4, Vector2(2, 0))\n" +"\n" +"astar.connect_points(1, 2, false)\n" +"astar.connect_points(2, 3, false)\n" +"astar.connect_points(4, 3, false)\n" +"astar.connect_points(1, 4, false)\n" +"\n" +"var res = astar.get_id_path(1, 3) # 返回 [1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 1), 1); // 默认权重为 1\n" +"astar.AddPoint(3, new Vector2(1, 1));\n" +"astar.AddPoint(4, new Vector2(2, 0));\n" +"\n" +"astar.ConnectPoints(1, 2, false);\n" +"astar.ConnectPoints(2, 3, false);\n" +"astar.ConnectPoints(4, 3, false);\n" +"astar.ConnectPoints(1, 4, false);\n" +"int[] res = astar.GetIdPath(1, 3); // 返回 [1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果将第2个点的权重更改为 3,则结果将改为 [code][1, 4, 3][/code],因为现在即" +"使距离更长,通过第 4 点也比通过第 2 点“更容易”。" + +msgid "" +"Returns an array with the IDs of the points that form the connection with " +"the given point.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 1))\n" +"astar.add_point(3, Vector2(1, 1))\n" +"astar.add_point(4, Vector2(2, 0))\n" +"\n" +"astar.connect_points(1, 2, true)\n" +"astar.connect_points(1, 3, true)\n" +"\n" +"var neighbors = astar.get_point_connections(1) # Returns [2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 1));\n" +"astar.AddPoint(3, new Vector2(1, 1));\n" +"astar.AddPoint(4, new Vector2(2, 0));\n" +"\n" +"astar.ConnectPoints(1, 2, true);\n" +"astar.ConnectPoints(1, 3, true);\n" +"\n" +"int[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回一个数组,其中包含与给定点形成连接的点的 ID。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(0, 0))\n" +"astar.add_point(2, Vector2(0, 1))\n" +"astar.add_point(3, Vector2(1, 1))\n" +"astar.add_point(4, Vector2(2, 0))\n" +"\n" +"astar.connect_points(1, 2, true)\n" +"astar.connect_points(1, 3, true)\n" +"\n" +"var neighbors = astar.get_point_connections(1) # 返回 [2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(0, 0));\n" +"astar.AddPoint(2, new Vector2(0, 1));\n" +"astar.AddPoint(3, new Vector2(1, 1));\n" +"astar.AddPoint(4, new Vector2(2, 0));\n" +"\n" +"astar.ConnectPoints(1, 2, true);\n" +"astar.ConnectPoints(1, 3, true);\n" +"\n" +"int[] neighbors = astar.GetPointConnections(1); // 返回 [2, 3]\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "Returns the number of points currently in the points pool." +msgstr "返回点池中当前的点数。" + +msgid "Returns an array of all point IDs." +msgstr "返回所有点 ID 的数组。" + +msgid "" +"Returns an array with the points that are in the path found by AStar2D " +"between the given points. The array is ordered from the starting point to " +"the ending point of the path.\n" +"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it " +"will return an empty [PackedVector2Array] and will print an error message." +msgstr "" +"返回一个数组,其中包含 AStar2D 在给定点之间找到的路径中的点。数组从路径的起点" +"到终点进行排序。\n" +"[b]注意:[/b] 该方法不是线程安全的。如果从 [Thread] 调用,它将返回一个空的 " +"[PackedVector2Array] 并打印一条错误消息。" + +msgid "Returns the position of the point associated with the given [param id]." +msgstr "返回与给定 [param id] 相关联的点的位置。" + +msgid "" +"Returns the weight scale of the point associated with the given [param id]." +msgstr "返回与给定 [param id] 关联的点的权重比例。" + +msgid "Returns whether a point associated with the given [param id] exists." +msgstr "返回与给定 [param id] 相关联的点是否存在。" + +msgid "" +"Returns whether a point is disabled or not for pathfinding. By default, all " +"points are enabled." +msgstr "返回用于寻路时点是否被禁用。默认情况下,所有点均被启用。" + +msgid "" +"Removes the point associated with the given [param id] from the points pool." +msgstr "从点池中移除与给定 [param id] 关联的点。" + +msgid "" +"Reserves space internally for [param num_nodes] points, useful if you're " +"adding a known large number of points at once, such as points on a grid. New " +"capacity must be greater or equals to old capacity." +msgstr "" +"在内部为 [param num_nodes] 个点保留空间,如果你想要一次性添加大量的点且数量已" +"知,例如网格,那么就会很有用。新容量必须大于或等于旧容量。" + +msgid "" +"Disables or enables the specified point for pathfinding. Useful for making a " +"temporary obstacle." +msgstr "用于寻路时禁用或启用指定的点。适用于制作临时障碍物。" + +msgid "Sets the [param position] for the point with the given [param id]." +msgstr "为具有给定 [param id] 的点设置位置 [param position]。" + +msgid "" +"Sets the [param weight_scale] for the point with the given [param id]. The " +"[param weight_scale] is multiplied by the result of [method _compute_cost] " +"when determining the overall cost of traveling across a segment from a " +"neighboring point to this point." +msgstr "" +"为给定的 [param id] 的点设置 [param weight_scale]。在确定从邻接点到这个点的一" +"段路程的总成本时,[param weight_scale] 要乘以 [method _compute_cost] 的结果。" + +msgid "" +"An implementation of A* to find the shortest paths among connected points in " +"space." +msgstr "A* 的一种实现,用于寻找空间中连接点之间的最短路径。" + +msgid "" +"A* (A star) is a computer algorithm that is widely used in pathfinding and " +"graph traversal, the process of plotting short paths among vertices " +"(points), passing through a given set of edges (segments). It enjoys " +"widespread use due to its performance and accuracy. Godot's A* " +"implementation uses points in three-dimensional space and Euclidean " +"distances by default.\n" +"You must add points manually with [method add_point] and create segments " +"manually with [method connect_points]. Then you can test if there is a path " +"between two points with the [method are_points_connected] function, get a " +"path containing indices by [method get_id_path], or one containing actual " +"coordinates with [method get_point_path].\n" +"It is also possible to use non-Euclidean distances. To do so, create a class " +"that extends [code]AStar3D[/code] and override methods [method " +"_compute_cost] and [method _estimate_cost]. Both take two indices and return " +"a length, as is shown in the following example.\n" +"[codeblocks]\n" +"[gdscript]\n" +"class MyAStar:\n" +" extends AStar3D\n" +"\n" +" func _compute_cost(u, v):\n" +" return abs(u - v)\n" +"\n" +" func _estimate_cost(u, v):\n" +" return min(0, abs(u - v) - 1)\n" +"[/gdscript]\n" +"[csharp]\n" +"public partial class MyAStar : AStar3D\n" +"{\n" +" public override float _ComputeCost(long fromId, long toId)\n" +" {\n" +" return Mathf.Abs((int)(fromId - toId));\n" +" }\n" +"\n" +" public override float _EstimateCost(long fromId, long toId)\n" +" {\n" +" return Mathf.Min(0, Mathf.Abs((int)(fromId - toId)) - 1);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[method _estimate_cost] should return a lower bound of the distance, i.e. " +"[code]_estimate_cost(u, v) <= _compute_cost(u, v)[/code]. This serves as a " +"hint to the algorithm because the custom [code]_compute_cost[/code] might be " +"computation-heavy. If this is not the case, make [method _estimate_cost] " +"return the same value as [method _compute_cost] to provide the algorithm " +"with the most accurate information.\n" +"If the default [method _estimate_cost] and [method _compute_cost] methods " +"are used, or if the supplied [method _estimate_cost] method returns a lower " +"bound of the cost, then the paths returned by A* will be the lowest-cost " +"paths. Here, the cost of a path equals the sum of the [method _compute_cost] " +"results of all segments in the path multiplied by the [code]weight_scale[/" +"code]s of the endpoints of the respective segments. If the default methods " +"are used and the [code]weight_scale[/code]s of all points are set to " +"[code]1.0[/code], then this equals the sum of Euclidean distances of all " +"segments in the path." +msgstr "" +"A*(A 星)是一种计算机算法,广泛用于寻路和图遍历,是通过一组给定的边(线" +"段),在顶点(点)之间绘制短路径的过程。由于其性能和准确性,它被广泛使用。" +"Godot 的 A* 实现默认使用三维空间中的点和欧几里得距离。\n" +"您需要使用 [method add_point] 手动添加点,并使用 [method connect_points] 手动" +"创建线段。然后,可以使用 [method are_points_connected] 函数,测试两点之间是否" +"存在路径,通过 [method get_id_path] 获取包含索引的路径,或使用 [method " +"get_point_path] 获取包含实际坐标的路径。\n" +"也可以使用非欧几里得距离。为此,创建一个扩展 [code]AStar3D[/code] 的类,并重" +"写方法 [method _compute_cost] 和 [method _estimate_cost]。两者都接受两个索引" +"并返回一个长度,如以下示例所示。\n" +"[codeblocks]\n" +"[gdscript]\n" +"class MyAStar:\n" +" extends AStar3D\n" +"\n" +" func _compute_cost(u, v):\n" +" return abs(u - v)\n" +"\n" +" func _estimate_cost(u, v):\n" +" return min(0, abs(u - v) - 1)\n" +"[/gdscript]\n" +"[csharp]\n" +"public partial class MyAStar : AStar3D\n" +"{\n" +" public override float _ComputeCost(long fromId, long toId)\n" +" {\n" +" return Mathf.Abs((int)(fromId - toId));\n" +" }\n" +"\n" +" public override float _EstimateCost(long fromId, long toId)\n" +" {\n" +" return Mathf.Min(0, Mathf.Abs((int)(fromId - toId)) - 1);\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[method _estimate_cost] 应该返回距离的下限,即 [code]_estimate_cost(u, v) <= " +"_compute_cost(u, v)[/code]。这可以作为算法的提示,因为自定义 " +"[code]_compute_cost[/code] 可能计算量很大。如果不是这种情况,请使 [method " +"_estimate_cost] 返回与 [method _compute_cost] 相同的值,以便为算法提供最准确" +"的信息。\n" +"如果使用默认的 [method _estimate_cost] 和 [method _compute_cost] 方法,或者如" +"果提供的 [method _estimate_cost] 方法返回成本的下限,则 A* 返回的路径将是成本" +"最低的路径。这里,路径的代价等于路径中所有段的 [method _compute_cost] 结果乘" +"以各个段端点的权重 [code]weight_scale[/code] 之和。如果使用默认方法,并且所有" +"点的 [code]weight_scale[/code] 设置为 [code]1.0[/code],则这等于路径中所有段" +"的欧几里得距离之和。" + +msgid "" +"Called when computing the cost between two connected points.\n" +"Note that this function is hidden in the default [code]AStar3D[/code] class." +msgstr "" +"在计算两个连接点之间的成本时调用。\n" +"请注意,此函数隐藏在默认的 [code]AStar3D[/code] 类中。" + +msgid "" +"Called when estimating the cost between a point and the path's ending " +"point.\n" +"Note that this function is hidden in the default [code]AStar3D[/code] class." +msgstr "" +"在估算一个点和路径终点之间的成本时调用。\n" +"请注意,此函数隐藏在默认的 [code]AStar3D[/code] 类中。" + +msgid "" +"Adds a new point at the given position with the given identifier. The [param " +"id] must be 0 or larger, and the [param weight_scale] must be 0.0 or " +"greater.\n" +"The [param weight_scale] is multiplied by the result of [method " +"_compute_cost] when determining the overall cost of traveling across a " +"segment from a neighboring point to this point. Thus, all else being equal, " +"the algorithm prefers points with lower [param weight_scale]s to form a " +"path.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(1, 0, 0), 4) # Adds the point (1, 0, 0) with " +"weight_scale 4 and id 1\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(1, 0, 0), 4); // Adds the point (1, 0, 0) with " +"weight_scale 4 and id 1\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If there already exists a point for the given [param id], its position and " +"weight scale are updated to the given values." +msgstr "" +"在给定的位置添加一个新的点,并使用给定的标识符。[param id] 必须大于等于 0," +"[param weight_scale] 必须大于等于 0.0。\n" +"在确定从邻点到此点的一段路程的总成本时,[param weight_scale] 要乘以 [method " +"_compute_cost] 的结果。因此,在其他条件相同的情况下,算法优先选择 [param " +"weight_scale] 较低的点来形成路径。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(1, 0, 0), 4) # 添加点 (1, 0, 0),其 weight_scale " +"为 4 且 id 为 1\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(1, 0, 0), 4); // 添加点 (1, 0, 0),其 " +"weight_scale 为 4 且 id 为 1\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果对于给定的 [param id] 已经存在一个点,它的位置和权重将被更新为给定的值。" + +msgid "" +"Creates a segment between the given points. If [param bidirectional] is " +"[code]false[/code], only movement from [param id] to [param to_id] is " +"allowed, not the reverse direction.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(1, 1, 0))\n" +"astar.add_point(2, Vector3(0, 5, 0))\n" +"astar.connect_points(1, 2, false)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(1, 1, 0));\n" +"astar.AddPoint(2, new Vector3(0, 5, 0));\n" +"astar.ConnectPoints(1, 2, false);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"在给定的点之间创建一条线段。如果 [param bidirectional] 为 [code]false[/" +"code],则只允许从 [param id] 到 [param to_id] 的移动,而不允许反向移动。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(1, 1, 0))\n" +"astar.add_point(2, Vector3(0, 5, 0))\n" +"astar.connect_points(1, 2, false)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(1, 1, 0));\n" +"astar.AddPoint(2, new Vector3(0, 5, 0));\n" +"astar.ConnectPoints(1, 2, false);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the closest position to [param to_position] that resides inside a " +"segment between two connected points.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 5, 0))\n" +"astar.connect_points(1, 2)\n" +"var res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # Returns " +"(0, 3, 0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 5, 0));\n" +"astar.ConnectPoints(1, 2);\n" +"Vector3 res = astar.GetClosestPositionInSegment(new Vector3(3, 3, 0)); // " +"Returns (0, 3, 0)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The result is in the segment that goes from [code]y = 0[/code] to [code]y = " +"5[/code]. It's the closest position in the segment to the given point." +msgstr "" +"返回位于两个连接点之间的线段中离 [param to_position] 最近的位置。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 5, 0))\n" +"astar.connect_points(1, 2)\n" +"var res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # 返回 (0, " +"3, 0)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 5, 0));\n" +"astar.ConnectPoints(1, 2);\n" +"Vector3 res = astar.GetClosestPositionInSegment(new Vector3(3, 3, 0)); // 返" +"回 (0, 3, 0)\n" +"[/csharp]\n" +"[/codeblocks]\n" +"结果是在从 [code]y = 0[/code] 到 [code]y = 5[/code] 的线段中。它是线段中距离" +"给定点最近的位置。" + +msgid "" +"Returns an array with the IDs of the points that form the path found by " +"AStar3D between the given points. The array is ordered from the starting " +"point to the ending point of the path.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 1, 0), 1) # Default weight is 1\n" +"astar.add_point(3, Vector3(1, 1, 0))\n" +"astar.add_point(4, Vector3(2, 0, 0))\n" +"\n" +"astar.connect_points(1, 2, false)\n" +"astar.connect_points(2, 3, false)\n" +"astar.connect_points(4, 3, false)\n" +"astar.connect_points(1, 4, false)\n" +"\n" +"var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 1, 0), 1); // Default weight is 1\n" +"astar.AddPoint(3, new Vector3(1, 1, 0));\n" +"astar.AddPoint(4, new Vector3(2, 0, 0));\n" +"astar.ConnectPoints(1, 2, false);\n" +"astar.ConnectPoints(2, 3, false);\n" +"astar.ConnectPoints(4, 3, false);\n" +"astar.ConnectPoints(1, 4, false);\n" +"int[] res = astar.GetIdPath(1, 3); // Returns [1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If you change the 2nd point's weight to 3, then the result will be [code][1, " +"4, 3][/code] instead, because now even though the distance is longer, it's " +"\"easier\" to get through point 4 than through point 2." +msgstr "" +"返回一个数组,其中包含构成 AStar3D 在给定点之间找到的路径中的点的 ID。数组从" +"路径的起点到终点排序。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 1, 0), 1) # 默认权重为 1\n" +"astar.add_point(3, Vector3(1, 1, 0))\n" +"astar.add_point(4, Vector3(2, 0, 0))\n" +"\n" +"astar.connect_points(1, 2, false)\n" +"astar.connect_points(2, 3, false)\n" +"astar.connect_points(4, 3, false)\n" +"astar.connect_points(1, 4, false)\n" +"\n" +"var res = astar.get_id_path(1, 3) # 返回 [1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 1, 0), 1); // 默认权重为 1\n" +"astar.AddPoint(3, new Vector3(1, 1, 0));\n" +"astar.AddPoint(4, new Vector3(2, 0, 0));\n" +"astar.ConnectPoints(1, 2, false);\n" +"astar.ConnectPoints(2, 3, false);\n" +"astar.ConnectPoints(4, 3, false);\n" +"astar.ConnectPoints(1, 4, false);\n" +"int[] res = astar.GetIdPath(1, 3); // 返回 [1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果将第2个点的权重更改为 3,则结果将改为 [code][1, 4, 3][/code],因为现在即" +"使距离更长,但通过第 4 点也比通过第 2 点“更容易”。" + +msgid "" +"Returns the capacity of the structure backing the points, useful in " +"conjunction with [code]reserve_space[/code]." +msgstr "返回支持点的结构的容量,与 [code]reserve_space[/code] 配合使用。" + +msgid "" +"Returns an array with the IDs of the points that form the connection with " +"the given point.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 1, 0))\n" +"astar.add_point(3, Vector3(1, 1, 0))\n" +"astar.add_point(4, Vector3(2, 0, 0))\n" +"\n" +"astar.connect_points(1, 2, true)\n" +"astar.connect_points(1, 3, true)\n" +"\n" +"var neighbors = astar.get_point_connections(1) # Returns [2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 1, 0));\n" +"astar.AddPoint(3, new Vector3(1, 1, 0));\n" +"astar.AddPoint(4, new Vector3(2, 0, 0));\n" +"astar.ConnectPoints(1, 2, true);\n" +"astar.ConnectPoints(1, 3, true);\n" +"\n" +"int[] neighbors = astar.GetPointConnections(1); // Returns [2, 3]\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回一个数组,其中包含与给定点形成连接的点的 ID。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar3D.new()\n" +"astar.add_point(1, Vector3(0, 0, 0))\n" +"astar.add_point(2, Vector3(0, 1, 0))\n" +"astar.add_point(3, Vector3(1, 1, 0))\n" +"astar.add_point(4, Vector3(2, 0, 0))\n" +"\n" +"astar.connect_points(1, 2, true)\n" +"astar.connect_points(1, 3, true)\n" +"\n" +"var neighbors = astar.get_point_connections(1) # 返回 [2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar3D();\n" +"astar.AddPoint(1, new Vector3(0, 0, 0));\n" +"astar.AddPoint(2, new Vector3(0, 1, 0));\n" +"astar.AddPoint(3, new Vector3(1, 1, 0));\n" +"astar.AddPoint(4, new Vector3(2, 0, 0));\n" +"astar.ConnectPoints(1, 2, true);\n" +"astar.ConnectPoints(1, 3, true);\n" +"\n" +"int[] neighbors = astar.GetPointConnections(1); // 返回 [2, 3]\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns an array with the points that are in the path found by AStar3D " +"between the given points. The array is ordered from the starting point to " +"the ending point of the path.\n" +"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it " +"will return an empty [PackedVector3Array] and will print an error message." +msgstr "" +"返回一个数组,其中包含 AStar3D 在给定点之间找到的路径中的点。数组从路径的起点" +"到终点进行排序。\n" +"[b]注意:[/b]这种方法不是线程安全的。如果从 [Thread] 调用,它将返回一个空的 " +"[PackedVector3Array],并打印一条错误消息。" + +msgid "" +"A* (or \"A-Star\") pathfinding tailored to find the shortest paths on 2D " +"grids." +msgstr "A*(或“A 星”)寻路,为寻找 2D 网格上的最短路径定制。" + +msgid "" +"Returns an array with the IDs of the points that form the path found by " +"AStar2D between the given points. The array is ordered from the starting " +"point to the ending point of the path." +msgstr "" +"返回一个数组,其中包含形成 AStar2D 在给定点之间找到的路径的点的 ID。该数组从" +"路径的起点到终点排序。" + +msgid "" +"Returns [code]true[/code] if the [param x] and [param y] is a valid grid " +"coordinate (id)." +msgstr "" +"如果 [param x] 和 [param y] 是有效的网格坐标(ID),则返回 [code]true[/" +"code]。" + +msgid "" +"Returns [code]true[/code] if the [param id] vector is a valid grid " +"coordinate." +msgstr "如果 [param id] 向量是有效的网格坐标,则返回 [code]true[/code]。" + +msgid "" +"Disables or enables the specified point for pathfinding. Useful for making " +"an obstacle. By default, all points are enabled.\n" +"[b]Note:[/b] Calling [method update] is not needed after the call of this " +"function." +msgstr "" +"禁用或启用指定的寻路点。用于制造障碍物。默认情况下,启用所有点。\n" +"[b]注意:[/b]调用该函数后不需要调用 [method update]。" + +msgid "" +"Sets the [param weight_scale] for the point with the given [param id]. The " +"[param weight_scale] is multiplied by the result of [method _compute_cost] " +"when determining the overall cost of traveling across a segment from a " +"neighboring point to this point.\n" +"[b]Note:[/b] Calling [method update] is not needed after the call of this " +"function." +msgstr "" +"为具有给定 [param id] 的点设置 [param weight_scale]。在确定从相邻点到该点穿越" +"路段的总成本时,[param weight_scale] 要乘以 [method _compute_cost] 的结果。\n" +"[b]注意:[/b]调用该函数后不需要调用 [method update]。" + +msgid "Represents the size of the [enum Heuristic] enum." +msgstr "代表 [enum Heuristic] 枚举的大小。" + +msgid "Represents the size of the [enum DiagonalMode] enum." +msgstr "代表 [enum DiagonalMode] 枚举的大小。" + +msgid "A texture that crops out part of another Texture2D." +msgstr "裁剪其他 Texture2D 的纹理。" + +msgid "" +"The texture that contains the atlas. Can be any type inheriting from " +"[Texture2D], including another [AtlasTexture]." +msgstr "" +"包含该图集的纹理。可以是任何继承自 [Texture2D] 的类型,包括其他 " +"[AtlasTexture]。" + +msgid "The region used to draw the [member atlas]." +msgstr "用于绘制 [member atlas] 的区域。" + +msgid "Stores information about the audio buses." +msgstr "存储有关音频总线的信息。" + +msgid "" +"Stores position, muting, solo, bypass, effects, effect position, volume, and " +"the connections between buses. See [AudioServer] for usage." +msgstr "" +"存储位置、静音、独奏、旁通、效果、效果位置、音量以及总线之间的连接。使用方法" +"见 [AudioServer] 。" + +msgid "Audio effect for audio." +msgstr "用于音频的音频效果。" + +msgid "" +"Base resource for audio bus. Applies an audio effect on the bus that the " +"resource is applied on." +msgstr "音频总线的基础资源。在该资源所应用的总线上应用音频效果。" + +msgid "Audio Mic Record Demo" +msgstr "音频麦克风录音演示" + +msgid "Adds an amplifying audio effect to an audio bus." +msgstr "向音频总线添加一个放大的音频效果。" + +msgid "Increases or decreases the volume being routed through the audio bus." +msgstr "增加或减少通过音频总线传送的音量。" + +msgid "Audio buses" +msgstr "音频总线" + +msgid "" +"Amount of amplification in decibels. Positive values make the sound louder, " +"negative values make it quieter. Value can range from -80 to 24." +msgstr "" +"以分贝为单位的放大量。正值使声音更响亮,负值使声音更安静。数值范围从 -80 到 " +"24。" + +msgid "Adds a band limit filter to the audio bus." +msgstr "为音频总线添加一个带限滤波器。" + +msgid "" +"Limits the frequencies in a range around the [member AudioEffectFilter." +"cutoff_hz] and allows frequencies outside of this range to pass." +msgstr "" +"限制 [member AudioEffectFilter.cutoff_hz] 周围范围内的频率,允许这个范围外的" +"频率通过。" + +msgid "Adds a band pass filter to the audio bus." +msgstr "为音频总线添加一个带通滤波器。" + +msgid "" +"Attenuates the frequencies inside of a range around the [member " +"AudioEffectFilter.cutoff_hz] and cuts frequencies outside of this band." +msgstr "" +"衰减 [member AudioEffectFilter.cutoff_hz] 周围范围内的频率,并切断这个频段之" +"外的频率。" + +msgid "Captures audio from an audio bus in real-time." +msgstr "从音频总线上实时捕捉音频。" + +msgid "Clears the internal ring buffer." +msgstr "清除内部环形缓冲区。" + +msgid "Returns the total size of the internal ring buffer in frames." +msgstr "返回内部环形缓冲区的总大小,以帧为单位。" + +msgid "" +"Returns the number of audio frames discarded from the audio bus due to full " +"buffer." +msgstr "返回由于缓冲区满而从音频总线上丢弃的音频帧的数量。" + +msgid "" +"Returns the number of frames available to read using [method get_buffer]." +msgstr "返回可使用 [method get_buffer] 读取的帧数。" + +msgid "Returns the number of audio frames inserted from the audio bus." +msgstr "返回从音频总线插入的音频帧的数量。" + +msgid "" +"Length of the internal ring buffer, in seconds. Setting the buffer length " +"will have no effect if already initialized." +msgstr "" +"内部环形缓冲区的长度,单位为秒。如果已经初始化,设置缓冲区长度将没有效果。" + +msgid "Adds a chorus audio effect." +msgstr "添加合唱音频效果。" + +msgid "" +"Adds a chorus audio effect. The effect applies a filter with voices to " +"duplicate the audio source and manipulate it through the filter." +msgstr "添加一个合唱音频效果。该效果复制音频源,并应用声音滤波器进行操作。" + +msgid "The effect's raw signal." +msgstr "效果的原始信号。" + +msgid "The voice's cutoff frequency." +msgstr "声音的截止频率。" + +msgid "The voice's signal delay." +msgstr "声音的信号延迟。" + +msgid "The voice filter's depth." +msgstr "声音过滤器的深度。" + +msgid "The voice's volume." +msgstr "声音的音量。" + +msgid "The voice's pan level." +msgstr "声音的声相电平。" + +msgid "The voice's filter rate." +msgstr "声音过滤比率。" + +msgid "The effect's processed signal." +msgstr "效果的处理信号。" + +msgid "" +"Adds a compressor audio effect to an audio bus.\n" +"Reduces sounds that exceed a certain threshold level, smooths out the " +"dynamics and increases the overall volume." +msgstr "" +"为音频总线添加压缩音频效果。\n" +"减少超过一定阈值水平的声音,平滑动态,增加整体音量。" + +msgid "" +"Dynamic range compressor reduces the level of the sound when the amplitude " +"goes over a certain threshold in Decibels. One of the main uses of a " +"compressor is to increase the dynamic range by clipping as little as " +"possible (when sound goes over 0dB).\n" +"Compressor has many uses in the mix:\n" +"- In the Master bus to compress the whole output (although an " +"[AudioEffectLimiter] is probably better).\n" +"- In voice channels to ensure they sound as balanced as possible.\n" +"- Sidechained. This can reduce the sound level sidechained with another " +"audio bus for threshold detection. This technique is common in video game " +"mixing to the level of music and SFX while voices are being heard.\n" +"- Accentuates transients by using a wider attack, making effects sound more " +"punchy." +msgstr "" +"动态范围压缩器在振幅超过一定的阈值(以分贝为单位)时,降低声音的电平。压缩器" +"的主要用途之一是通过尽可能少的削波(当声音超过 0dB 时)来增加动态范围。\n" +"压缩器在混音中的用途很多。\n" +"- 在主总线上压缩整个输出(虽然 [AudioEffectLimiter] 可能更好些)。\n" +"- 在声音通道中,以确保它们听起来尽可能的平衡。\n" +"- 侧链。这可以降低与另一条音频总线侧链的声音级别,以进行阈值检测。这种技术在" +"视频游戏混音中很常见,以音乐和SFX的级别,从而声音被听到。\n" +"- 通过使用更宽的冲攻来突出瞬态,使效果听起来更有冲击力。" + +msgid "" +"Compressor's reaction time when the signal exceeds the threshold, in " +"microseconds. Value can range from 20 to 2000." +msgstr "" +"当信号超过阈值时,压缩器的反应时间,以微秒为单位。数值范围从 20 到 2000。" + +msgid "Gain applied to the output signal." +msgstr "应用于输出信号的增益。" + +msgid "" +"Balance between original signal and effect signal. Value can range from 0 " +"(totally dry) to 1 (totally wet)." +msgstr "" +"原始信号和效果信号之间的平衡。数值范围从 0(完全干燥)到 1(完全浸润)。" + +msgid "" +"Amount of compression applied to the audio once it passes the threshold " +"level. The higher the ratio, the more the loud parts of the audio will be " +"compressed. Value can range from 1 to 48." +msgstr "" +"音频通过阈值级别后,应用于音频的压缩量。比率越高,音频的大声部分将被压缩。数" +"值范围从 1 到 48。" + +msgid "" +"Compressor's delay time to stop reducing the signal after the signal level " +"falls below the threshold, in milliseconds. Value can range from 20 to 2000." +msgstr "" +"压缩器在信号电平低于阈值后,停止降低信号的延迟时间,以毫秒为单位。取值范围为 " +"20 到 2000。" + +msgid "Reduce the sound level using another audio bus for threshold detection." +msgstr "使用另一条音频总线进行阈值检测,降低声音级别。" + +msgid "" +"The level above which compression is applied to the audio. Value can range " +"from -60 to 0." +msgstr "超过该电平,压缩将应用于音频。值的范围可以从 -60 到 0。" + +msgid "" +"Adds a delay audio effect to an audio bus. Plays input signal back after a " +"period of time.\n" +"Two tap delay and feedback options." +msgstr "" +"为音频总线添加延迟音频效果。在一段时间后回放输入信号。\n" +"两个节拍延迟和反馈选项。" + +msgid "" +"Plays input signal back after a period of time. The delayed signal may be " +"played back multiple times to create the sound of a repeating, decaying " +"echo. Delay effects range from a subtle echo effect to a pronounced blending " +"of previous sounds with new sounds." +msgstr "" +"在一段时间后回放输入信号。延迟的信号可以多次回放,以产生重复、衰减的回声。延" +"迟效果的范围是从微弱回声效果到明显的以前声音和新声音的混合。" + +msgid "" +"Output percent of original sound. At 0, only delayed sounds are output. " +"Value can range from 0 to 1." +msgstr "原始声音的输出百分比。为 0 时,只输出延迟的声音。取值范围为 0 到 1。" + +msgid "If [code]true[/code], feedback is enabled." +msgstr "如果为 [code]true[/code],则启用反馈。" + +msgid "Feedback delay time in milliseconds." +msgstr "反馈延迟时间,单位为毫秒。" + +msgid "Sound level for [code]tap1[/code]." +msgstr "[code]tap1[/code] 的声音电平。" + +msgid "" +"Low-pass filter for feedback, in Hz. Frequencies below this value are " +"filtered out of the source signal." +msgstr "反馈的低通滤波器,单位为 Hz。低于此值的频率会被源信号过滤掉。" + +msgid "If [code]true[/code], [code]tap1[/code] will be enabled." +msgstr "如果为 [code]true[/code],将启用 [code]tap1[/code]。" + +msgid "[code]tap1[/code] delay time in milliseconds." +msgstr "[code]tap1[/code] 延迟时间,单位为毫秒。" + +msgid "" +"Pan position for [code]tap1[/code]. Value can range from -1 (fully left) to " +"1 (fully right)." +msgstr "" +"[code]tap1[/code] 的平移位置。取值范围为 -1(完全向左)到 1(完全向右)。" + +msgid "If [code]true[/code], [code]tap2[/code] will be enabled." +msgstr "如果为 [code]true[/code],将启用 [code]tap2[/code]。" + +msgid "[b]Tap2[/b] delay time in milliseconds." +msgstr "[b]Tap2[/b] 延迟时间,单位为毫秒。" + +msgid "Sound level for [code]tap2[/code]." +msgstr "[code]tap2[/code] 的声音电平。" + +msgid "" +"Pan position for [code]tap2[/code]. Value can range from -1 (fully left) to " +"1 (fully right)." +msgstr "" +"[code]tap2[/code] 的平移位置。取值范围为 -1(完全向左)到 1(完全向右)。" + +msgid "Distortion power. Value can range from 0 to 1." +msgstr "失真度。值的范围可在 0 到 1 之间。" + +msgid "" +"High-pass filter, in Hz. Frequencies higher than this value will not be " +"affected by the distortion. Value can range from 1 to 20000." +msgstr "" +"高通滤波器,单位为 Hz。高于此值的频率不会受到失真的影响。该值的范围为 1 至 " +"20000。" + +msgid "Distortion type." +msgstr "失真类型。" + +msgid "" +"Increases or decreases the volume after the effect, in decibels. Value can " +"range from -80 to 24." +msgstr "在效果后增加或减少的音量,单位为分贝。取值范围从 -80 到 24。" + +msgid "" +"Increases or decreases the volume before the effect, in decibels. Value can " +"range from -60 to 60." +msgstr "在效果前增加或减少的音量,单位为分贝。取值范围从 -60 到 60。" + +msgid "" +"Digital distortion effect which cuts off peaks at the top and bottom of the " +"waveform." +msgstr "数字失真效果,可以切断波形顶部和底部的峰值。" + +msgid "" +"Waveshaper distortions are used mainly by electronic musicians to achieve an " +"extra-abrasive sound." +msgstr "波形变形失真主要是电子音乐人为了获得格外粗糙的声音而使用的。" + +msgid "" +"Base class for audio equalizers. Gives you control over frequencies.\n" +"Use it to create a custom equalizer if [AudioEffectEQ6], [AudioEffectEQ10] " +"or [AudioEffectEQ21] don't fit your needs." +msgstr "" +"音频均衡器的基础类。让你可以控制频率。\n" +"如果 [AudioEffectEQ6]、[AudioEffectEQ10] 或 [AudioEffectEQ21] 不符合您的需" +"求,请使用它来创建一个自定义均衡器。" + +msgid "" +"AudioEffectEQ gives you control over frequencies. Use it to compensate for " +"existing deficiencies in audio. AudioEffectEQs are useful on the Master bus " +"to completely master a mix and give it more character. They are also useful " +"when a game is run on a mobile device, to adjust the mix to that kind of " +"speakers (it can be added but disabled when headphones are plugged)." +msgstr "" +"AudioEffectEQ 可用于频率控制。用它来弥补音频中不足之处。AudioEffectEQ 在 " +"Master 总线上很有用,可以完全掌控一个混音,并赋予它更多的特性。当游戏在移动设" +"备上运行时,它们也很有用,可以根据那种扬声器来调整混音(可以被添加,但在插入" +"耳机时禁用)。" + +msgid "Returns the number of bands of the equalizer." +msgstr "返回均衡器的频段数。" + +msgid "Returns the band's gain at the specified index, in dB." +msgstr "返回指定索引处的波段增益,单位为 dB。" + +msgid "Sets band's gain at the specified index, in dB." +msgstr "设置指定索引处的波段增益,单位为 dB。" + +msgid "" +"Adds a 10-band equalizer audio effect to an Audio bus. Gives you control " +"over frequencies from 31 Hz to 16000 Hz.\n" +"Each frequency can be modulated between -60/+24 dB." +msgstr "" +"为音频总线添加 10 段均衡器音频效果。让你控制 31Hz 到 16000Hz 的频率。\n" +"每个频率可以在 -60/+24 dB 之间进行调制。" + +msgid "" +"Frequency bands:\n" +"Band 1: 31 Hz\n" +"Band 2: 62 Hz\n" +"Band 3: 125 Hz\n" +"Band 4: 250 Hz\n" +"Band 5: 500 Hz\n" +"Band 6: 1000 Hz\n" +"Band 7: 2000 Hz\n" +"Band 8: 4000 Hz\n" +"Band 9: 8000 Hz\n" +"Band 10: 16000 Hz\n" +"See also [AudioEffectEQ], [AudioEffectEQ6], [AudioEffectEQ21]." +msgstr "" +"频段:\n" +"频段 1:31 Hz\n" +"频段 2:62 Hz\n" +"频段 3:125 Hz\n" +"频段 4:250 Hz\n" +"频段 5:500 Hz\n" +"频段 6:1000 Hz\n" +"频段 7:2000 Hz\n" +"频段 8:4000 Hz\n" +"频段 9:8000 Hz\n" +"频段 10:16000 Hz\n" +"另请参阅 [AudioEffectEQ]、[AudioEffectEQ6]、[AudioEffectEQ21]。" + +msgid "" +"Adds a 21-band equalizer audio effect to an Audio bus. Gives you control " +"over frequencies from 22 Hz to 22000 Hz.\n" +"Each frequency can be modulated between -60/+24 dB." +msgstr "" +"向音频总线添加一个 21 频段均衡器音频效果。使您可以控制从 22 Hz 到 22000 Hz 的" +"频率。\n" +"每个频率都可以在 -60/+24 dB 之间进行调制。" + +msgid "" +"Frequency bands:\n" +"Band 1: 22 Hz\n" +"Band 2: 32 Hz\n" +"Band 3: 44 Hz\n" +"Band 4: 63 Hz\n" +"Band 5: 90 Hz\n" +"Band 6: 125 Hz\n" +"Band 7: 175 Hz\n" +"Band 8: 250 Hz\n" +"Band 9: 350 Hz\n" +"Band 10: 500 Hz\n" +"Band 11: 700 Hz\n" +"Band 12: 1000 Hz\n" +"Band 13: 1400 Hz\n" +"Band 14: 2000 Hz\n" +"Band 15: 2800 Hz\n" +"Band 16: 4000 Hz\n" +"Band 17: 5600 Hz\n" +"Band 18: 8000 Hz\n" +"Band 19: 11000 Hz\n" +"Band 20: 16000 Hz\n" +"Band 21: 22000 Hz\n" +"See also [AudioEffectEQ], [AudioEffectEQ6], [AudioEffectEQ10]." +msgstr "" +"频段:\n" +"频段 1:22 Hz\n" +"频段 2:32 Hz\n" +"频段 3:44 Hz\n" +"频段 4:63 Hz\n" +"频段 5:90 Hz\n" +"频段 6:125 Hz\n" +"频段 7:175 Hz\n" +"频段 8:250 Hz\n" +"频段 9:350 Hz\n" +"频段 10:500 Hz\n" +"频段 11:700 Hz\n" +"频段 12:1000 Hz\n" +"频段 13:1400 Hz\n" +"频段 14:2000 Hz\n" +"频段 15:2800 Hz\n" +"频段 16:4000 Hz\n" +"频段 17:5600 Hz\n" +"频段 18:8000 Hz\n" +"频段 19:11000 Hz\n" +"频段 20:16000 Hz\n" +"频段 21:22000 Hz\n" +"另请参阅 [AudioEffectEQ]、[AudioEffectEQ6]、[AudioEffectEQ10]。" + +msgid "" +"Adds a 6-band equalizer audio effect to an audio bus. Gives you control over " +"frequencies from 32 Hz to 10000 Hz.\n" +"Each frequency can be modulated between -60/+24 dB." +msgstr "" +"向音频总线添加一个 6 频段均衡器音频效果。使您可以控制从 32 Hz 到 10000 Hz 的" +"频率。\n" +"每个频率都可以在 -60/+24 dB 之间进行调制。" + +msgid "" +"Frequency bands:\n" +"Band 1: 32 Hz\n" +"Band 2: 100 Hz\n" +"Band 3: 320 Hz\n" +"Band 4: 1000 Hz\n" +"Band 5: 3200 Hz\n" +"Band 6: 10000 Hz\n" +"See also [AudioEffectEQ], [AudioEffectEQ10], [AudioEffectEQ21]." +msgstr "" +"频段:\n" +"频段 1:32 Hz\n" +"频段 2:100 Hz\n" +"频段 3:320 Hz\n" +"频段 4:1000 Hz\n" +"频段 5:3200 Hz\n" +"频段 6:10000 Hz\n" +"另请参阅 [AudioEffectEQ]、[AudioEffectEQ10]、[AudioEffectEQ21]。" + +msgid "Adds a filter to the audio bus." +msgstr "为音频总线添加一个滤波器。" + +msgid "Allows frequencies other than the [member cutoff_hz] to pass." +msgstr "允许通过 [member cutoff_hz] 以外的频率。" + +msgid "Threshold frequency for the filter, in Hz." +msgstr "滤波器的阈值频率,单位为 Hz。" + +msgid "Gain amount of the frequencies after the filter." +msgstr "滤波后频率的增益量。" + +msgid "Amount of boost in the frequency range near the cutoff frequency." +msgstr "在截断频率附近的频率范围内的提升量。" + +msgid "Adds a high-pass filter to the audio bus." +msgstr "向音频总线添加一个高通滤波器。" + +msgid "" +"Cuts frequencies lower than the [member AudioEffectFilter.cutoff_hz] and " +"allows higher frequencies to pass." +msgstr "" +"削减比 [member AudioEffectFilter.cutoff_hz] 更低的频率,允许更高的频率通过。" + +msgid "Adds a high-shelf filter to the audio bus." +msgstr "向音频总线添加一个高架滤波器。" + +msgid "Reduces all frequencies above the [member AudioEffectFilter.cutoff_hz]." +msgstr "降低所有高于 [member AudioEffectFilter.cutoff_hz] 的频率。" + +msgid "Adds a soft-clip limiter audio effect to an Audio bus." +msgstr "为音频总线添加一个软剪辑限制器音频效果。" + +msgid "" +"A limiter is similar to a compressor, but it's less flexible and designed to " +"disallow sound going over a given dB threshold. Adding one in the Master bus " +"is always recommended to reduce the effects of clipping.\n" +"Soft clipping starts to reduce the peaks a little below the threshold level " +"and progressively increases its effect as the input level increases such " +"that the threshold is never exceeded." +msgstr "" +"限制器类似于压缩器,但灵活性较差,并且设计为不允许声音超过给定的 dB 阈值。始" +"终建议在主总线中添加一个以减少削波的影响。\n" +"软削波开始将峰值降低到略低于阈值水平,并随着输入水平的增加而逐渐增强其效果," +"从而永不超过阈值。" + +msgid "" +"The waveform's maximum allowed value, in decibels. Value can range from -20 " +"to -0.1." +msgstr "波形的最大允许值,单位是分贝。数值范围从 -20 到 -0.1。" + +msgid "" +"Applies a gain to the limited waves, in decibels. Value can range from 0 to " +"6." +msgstr "将增益应用于被限制的波,以分贝为单位。取值范围是 0 到 6。" + +msgid "" +"Threshold from which the limiter begins to be active, in decibels. Value can " +"range from -30 to 0." +msgstr "限制器开始生效的阈值,以分贝为单位。值的范围可以从 -30 到 0。" + +msgid "Adds a low-pass filter to the audio bus." +msgstr "向音频总线添加一个低通滤波器。" + +msgid "" +"Cuts frequencies higher than the [member AudioEffectFilter.cutoff_hz] and " +"allows lower frequencies to pass." +msgstr "" +"削减比 [member AudioEffectFilter.cutoff_hz] 更低的频率,允许更高的频率通过。" + +msgid "Adds a low-shelf filter to the audio bus." +msgstr "向音频总线添加一个低架滤波器。" + +msgid "Reduces all frequencies below the [member AudioEffectFilter.cutoff_hz]." +msgstr "降低 [member AudioEffectFilter.cutoff_hz] 以下的所有频率。" + +msgid "Adds a notch filter to the Audio bus." +msgstr "在音频总线上添加一个陷波滤波器。" + +msgid "" +"Attenuates frequencies in a narrow band around the [member AudioEffectFilter." +"cutoff_hz] and cuts frequencies outside of this range." +msgstr "" +"衰减 [member AudioEffectFilter.cutoff_hz] 周围窄带的频率,并切断这个范围以外" +"的频率。" + +msgid "Adds a panner audio effect to an audio bus. Pans sound left or right." +msgstr "向音频总线添加一个声相器音频效果。向左或向右平移声音。" + +msgid "" +"Determines how much of an audio signal is sent to the left and right buses." +msgstr "决定向左右总线发送的音频信号量。" + +msgid "Pan position. Value can range from -1 (fully left) to 1 (fully right)." +msgstr "平移位置。值的范围可以从 -1(完全左)到1(完全右)。" + +msgid "" +"Adds a phaser audio effect to an audio bus.\n" +"Combines the original signal with a copy that is slightly out of phase with " +"the original." +msgstr "" +"向音频总线添加一个移相器音频效果。\n" +"将原始信号和与原始信号稍有相位偏差的副本组合在一起。" + +msgid "" +"Combines phase-shifted signals with the original signal. The movement of the " +"phase-shifted signals is controlled using a low-frequency oscillator." +msgstr "将相移信号与原始信号相结合。使用低频振荡器控制相移信号的移动。" + +msgid "" +"Governs how high the filter frequencies sweep. Low value will primarily " +"affect bass frequencies. High value can sweep high into the treble. Value " +"can range from 0.1 to 4." +msgstr "" +"控制滤波器频率扫描的高度。较低的值将主要影响低音频率。高值可以推高高音。值的" +"范围可以从 0.1 到 4。" + +msgid "Output percent of modified sound. Value can range from 0.1 to 0.9." +msgstr "修改后声音的输出百分比。数值范围从 0.1 到 0.9。" + +msgid "" +"Determines the maximum frequency affected by the LFO modulations, in Hz. " +"Value can range from 10 to 10000." +msgstr "决定受 LFO 调制影响的最大频率,单位为 Hz。数值范围为 10-10000。" + +msgid "" +"Determines the minimum frequency affected by the LFO modulations, in Hz. " +"Value can range from 10 to 10000." +msgstr "决定受 LFO 调制影响的最小频率,单位为 Hz。数值范围为 10-10000。" + +msgid "" +"Adjusts the rate in Hz at which the effect sweeps up and down across the " +"frequency range." +msgstr "以 Hz 为单位调整效果在整个频率范围内上下扫描的速度。" + +msgid "" +"Adds a pitch-shifting audio effect to an audio bus.\n" +"Raises or lowers the pitch of original sound." +msgstr "" +"为音频总线添加音高变换的音频效果。\n" +"升高或降低原始声音的音高。" + +msgid "" +"Allows modulation of pitch independently of tempo. All frequencies can be " +"increased/decreased with minimal effect on transients." +msgstr "允许独立于速度调制音高。所有频率都可以增加或减少,而对瞬态的影响最小。" + +msgid "" +"The size of the [url=https://en.wikipedia.org/wiki/" +"Fast_Fourier_transform]Fast Fourier transform[/url] buffer. Higher values " +"smooth out the effect over time, but have greater latency. The effects of " +"this higher latency are especially noticeable on sounds that have sudden " +"amplitude changes." +msgstr "" +"[url=https://en.wikipedia.org/wiki/Fast_Fourier_transform]快速傅里叶变换[/" +"url]缓冲区的大小。较高的数值可以使效果随时间平滑,但有较大的延迟。这种较高的" +"延迟对有突然幅度变化的声音的影响特别明显。" + +msgid "" +"The oversampling factor to use. Higher values result in better quality, but " +"are more demanding on the CPU and may cause audio cracking if the CPU can't " +"keep up." +msgstr "" +"要使用的过采样系数。更高的值会带来更好的质量,但对 CPU 的要求更高,如果 CPU " +"跟不上,可能会导致音频破裂。" + +msgid "" +"The pitch scale to use. [code]1.0[/code] is the default pitch and plays " +"sounds unaltered. [member pitch_scale] can range from [code]0.0[/code] " +"(infinitely low pitch, inaudible) to [code]16[/code] (16 times higher than " +"the initial pitch)." +msgstr "" +"要使用的音高缩放。[code]1.0[/code] 是默认的音高,声音会按原样播放。[member " +"pitch_scale] 的范围从 [code]0.0[/code](无限低的音高,听不见)到 [code]16[/" +"code](比初始音高要高 16 倍)。" + +msgid "" +"Use a buffer of 256 samples for the Fast Fourier transform. Lowest latency, " +"but least stable over time." +msgstr "" +"使用 256 个样本的缓冲器进行快速傅里叶变换。最低延迟,但随着时间的推移最不稳" +"定。" + +msgid "" +"Use a buffer of 512 samples for the Fast Fourier transform. Low latency, but " +"less stable over time." +msgstr "" +"使用 512 个样本的缓冲器进行快速傅里叶变换。低延迟,但随着时间的推移不太稳定。" + +msgid "" +"Use a buffer of 1024 samples for the Fast Fourier transform. This is a " +"compromise between latency and stability over time." +msgstr "" +"使用 1024 个样本的缓冲器进行快速傅里叶变换。这是延迟和随着时间的推移的稳定性" +"之间的折衷。" + +msgid "" +"Use a buffer of 2048 samples for the Fast Fourier transform. High latency, " +"but stable over time." +msgstr "" +"使用 2048 个样本的缓冲器进行快速傅里叶变换。高延迟,但随着时间的推移稳定。" + +msgid "" +"Use a buffer of 4096 samples for the Fast Fourier transform. Highest " +"latency, but most stable over time." +msgstr "" +"使用 4096 个样本的缓冲器进行快速傅里叶变换。延迟最高,但随着时间的推移最稳" +"定。" + +msgid "Represents the size of the [enum FFTSize] enum." +msgstr "代表 [enum FFTSize] 枚举的大小。" + +msgid "Audio effect used for recording the sound from an audio bus." +msgstr "用于录制来自音频总线的声音的音频效果。" + +msgid "" +"Allows the user to record the sound from an audio bus. This can include all " +"audio output by Godot when used on the \"Master\" audio bus.\n" +"Can be used (with an [AudioStreamMicrophone]) to record from a microphone.\n" +"It sets and gets the format in which the audio file will be recorded (8-bit, " +"16-bit, or compressed). It checks whether or not the recording is active, " +"and if it is, records the sound. It then returns the recorded sample." +msgstr "" +"允许用户录制来自音频总线的声音。在“Master”音频总线上使用时会包含所有 Godot 输" +"出的音频。\n" +"可以用于录制麦克风(使用 [AudioStreamMicrophone])。\n" +"它设置和获取记录音频文件的格式(8位,16位或压缩)。它检查录音是否处于活动状" +"态,如果是,则记录声音。然后返回记录的样本。" + +msgid "Recording with microphone" +msgstr "使用麦克风录音" + +msgid "Returns the recorded sample." +msgstr "返回录音的样本。" + +msgid "Returns whether the recording is active or not." +msgstr "返回录音是否处于激活状态。" + +msgid "" +"If [code]true[/code], the sound will be recorded. Note that restarting the " +"recording will remove the previously recorded sample." +msgstr "" +"如果为 [code]true[/code],将录制声音。请注意,重新开始录音将移除先前录音的样" +"本。" + +msgid "" +"Specifies the format in which the sample will be recorded. See [enum " +"AudioStreamWAV.Format] for available formats." +msgstr "" +"指定样本将被记录的格式。有关可用格式,请参阅 [enum AudioStreamWAV.Format]。" + +msgid "Adds a reverberation audio effect to an Audio bus." +msgstr "向音频总线添加一个混响音频效果。" + +msgid "" +"Simulates the sound of acoustic environments such as rooms, concert halls, " +"caverns, or an open spaces." +msgstr "模拟房间、音乐厅、洞穴或开放空间等声学环境的声音。" + +msgid "" +"Defines how reflective the imaginary room's walls are. Value can range from " +"0 to 1." +msgstr "定义虚拟房间墙壁的反射程度。值的范围是 0 到 1。" + +msgid "" +"Output percent of original sound. At 0, only modified sound is outputted. " +"Value can range from 0 to 1." +msgstr "原始声音的输出百分比。为 0 时,只输出修改后的声音。取值范围是 0 到 1。" + +msgid "" +"High-pass filter passes signals with a frequency higher than a certain " +"cutoff frequency and attenuates signals with frequencies lower than the " +"cutoff frequency. Value can range from 0 to 1." +msgstr "" +"高通滤波器通过频率高于某一截止频率的信号,衰减频率低于截止频率的信号。数值范" +"围为 0 到 1。" + +msgid "Output percent of predelay. Value can range from 0 to 1." +msgstr "预延迟的输出百分比。数值范围为 0 到 1。" + +msgid "" +"Time between the original signal and the early reflections of the reverb " +"signal, in milliseconds." +msgstr "原始信号与混响信号早期反射之间的时间,以毫秒为单位。" + +msgid "" +"Dimensions of simulated room. Bigger means more echoes. Value can range from " +"0 to 1." +msgstr "模拟房间的尺寸。越大表示回声越多。值的范围可以从 0 到 1。" + +msgid "" +"Widens or narrows the stereo image of the reverb tail. 1 means fully widens. " +"Value can range from 0 to 1." +msgstr "扩大或缩小混响尾音的立体声图像。1 表示完全扩大。值的范围是 0 到 1。" + +msgid "" +"Output percent of modified sound. At 0, only original sound is outputted. " +"Value can range from 0 to 1." +msgstr "修改后声音的输出百分比。为 0 时,只输出原始声音。取值范围是 0 到 1。" + +msgid "Audio effect that can be used for real-time audio visualizations." +msgstr "可用于实时音频可视化的音频效果。" + +msgid "" +"This audio effect does not affect sound output, but can be used for real-" +"time audio visualizations.\n" +"See also [AudioStreamGenerator] for procedurally generating sounds." +msgstr "" +"这种音频效果不影响声音输出,但可以用于实时音频可视化。\n" +"使用程序生成声音请参阅 [AudioStreamGenerator]。" + +msgid "Audio Spectrum Demo" +msgstr "音频频谱演示" + +msgid "Godot 3.2 will get new audio features" +msgstr "Godot 3.2 将获得新的音频功能" + +msgid "" +"The length of the buffer to keep (in seconds). Higher values keep data " +"around for longer, but require more memory." +msgstr "" +"要保留的缓冲区长度(以秒为单位)。较高的值将数据保存的时间更长,但需要更多的" +"内存。" + +msgid "" +"The size of the [url=https://en.wikipedia.org/wiki/" +"Fast_Fourier_transform]Fast Fourier transform[/url] buffer. Higher values " +"smooth out the spectrum analysis over time, but have greater latency. The " +"effects of this higher latency are especially noticeable with sudden " +"amplitude changes." +msgstr "" +"[url=https://en.wikipedia.org/wiki/Fast_Fourier_transform]快速傅里叶变换[/" +"url]缓冲区的大小。较高的值可以使频谱分析随时间的推移而平滑,但有较大的延迟。" +"这种较高延迟的影响在突然的振幅变化中特别明显。" + +msgid "Use the average value as magnitude." +msgstr "用平均值作为幅度。" + +msgid "Use the maximum value as magnitude." +msgstr "用最大值作为幅度。" + +msgid "" +"An audio effect that can be used to adjust the intensity of stereo panning." +msgstr "一种可用于调整立体声声相强度的音频效果。" + +msgid "Overrides the location sounds are heard from." +msgstr "覆盖听到声音的位置。" + +msgid "" +"Once added to the scene tree and enabled using [method make_current], this " +"node will override the location sounds are heard from. Only one " +"[AudioListener2D] can be current. Using [method make_current] will disable " +"the previous [AudioListener2D].\n" +"If there is no active [AudioListener2D] in the current [Viewport], center of " +"the screen will be used as a hearing point for the audio. [AudioListener2D] " +"needs to be inside [SceneTree] to function." +msgstr "" +"一旦被添加到场景树并使用 [method make_current] 启用,此节点将覆盖听到声音的位" +"置。只有一个 [AudioListener2D] 可以是当前的。使用 [method make_current] 将禁" +"用之前的 [AudioListener2D]。\n" +"如果当前 [Viewport] 中没有活动的 [AudioListener2D],则屏幕中心将用作音频的聆" +"听点。[AudioListener2D] 需要在 [SceneTree] 内才能起作用。" + +msgid "" +"Disables the [AudioListener2D]. If it's not set as current, this method will " +"have no effect." +msgstr "禁用 [AudioListener2D]。如果未设置为当前,则此方法无效。" + +msgid "" +"Returns [code]true[/code] if this [AudioListener2D] is currently active." +msgstr "如果该 [AudioListener2D] 当前处于激活状态,则返回 [code]true[/code]。" + +msgid "" +"Makes the [AudioListener2D] active, setting it as the hearing point for the " +"sounds. If there is already another active [AudioListener2D], it will be " +"disabled.\n" +"This method will have no effect if the [AudioListener2D] is not added to " +"[SceneTree]." +msgstr "" +"激活该 [AudioListener2D],将其设置为声音的聆听点。如果已经有另一个激活的 " +"[AudioListener2D],它将被禁用。\n" +"如果 [AudioListener2D] 未添加到 [SceneTree],则该方法无效。" + +msgid "" +"Once added to the scene tree and enabled using [method make_current], this " +"node will override the location sounds are heard from. This can be used to " +"listen from a location different from the [Camera3D]." +msgstr "" +"一旦添加到场景树并使用 [method make_current] 启用,该节点将覆盖听到声音的位" +"置。这可用于从与 [Camera3D] 不同的位置聆听。" + +msgid "Disables the listener to use the current camera's listener instead." +msgstr "禁用该监听器,用当前相机的监听器代替。" + +msgid "Returns the listener's global orthonormalized [Transform3D]." +msgstr "返回该监听器的全局正交归一化 [Transform3D]。" + +msgid "" +"Returns [code]true[/code] if the listener was made current using [method " +"make_current], [code]false[/code] otherwise.\n" +"[b]Note:[/b] There may be more than one AudioListener3D marked as " +"\"current\" in the scene tree, but only the one that was made current last " +"will be used." +msgstr "" +"如果使用 [method make_current] 将监听器设为当前,则返回 [code]true[/code],否" +"则返回 [code]false[/code]。\n" +"[b]注意:[/b] 场景树中标记为“当前”的 AudioListener3D 可能不止一个,但只会使用" +"最后被设置为当前的那个。" + +msgid "Enables the listener. This will override the current camera's listener." +msgstr "启用该监听器。将覆盖当前相机的监听器。" + +msgid "Server interface for low-level audio access." +msgstr "低级音频访问的服务器接口。" + +msgid "" +"[AudioServer] is a low-level server interface for audio access. It is in " +"charge of creating sample data (playable audio) as well as its playback via " +"a voice interface." +msgstr "" +"[AudioServer] 是用于音频访问的底层服务器接口。它负责创建样本数据(可播放的音" +"频)以及通过语音接口进行播放。" + +msgid "Audio Device Changer Demo" +msgstr "音频设备切换演示" + +msgid "Adds a bus at [param at_position]." +msgstr "在 [param at_position] 处添加一条总线。" + +msgid "" +"Adds an [AudioEffect] effect to the bus [param bus_idx] at [param " +"at_position]." +msgstr "" +"为在 [param at_position] 处索引为 [param bus_idx] 的总线添加 [AudioEffect] 效" +"果。" + +msgid "Generates an [AudioBusLayout] using the available buses and effects." +msgstr "使用可用的总线和效果来生成 [AudioBusLayout]。" + +msgid "Returns the number of channels of the bus at index [param bus_idx]." +msgstr "返回索引为 [param bus_idx] 的总线的通道数。" + +msgid "" +"Returns the [AudioEffect] at position [param effect_idx] in bus [param " +"bus_idx]." +msgstr "" +"返回索引为 [param bus_idx] 的总线中位于 [param effect_idx] 的 [AudioEffect]。" + +msgid "Returns the number of effects on the bus at [param bus_idx]." +msgstr "返回索引为 [param bus_idx] 的总线上的效果数。" + +msgid "" +"Returns the [AudioEffectInstance] assigned to the given bus and effect " +"indices (and optionally channel)." +msgstr "" +"返回分配给给定总线和效果索引(以及可选的通道)的[AudioEffectInstance]。" + +msgid "Returns the index of the bus with the name [param bus_name]." +msgstr "返回名称为 [param bus_name] 的总线的索引。" + +msgid "Returns the name of the bus with the index [param bus_idx]." +msgstr "返回索引为 [param bus_idx] 的总线的名称。" + +msgid "" +"Returns the name of the bus that the bus at index [param bus_idx] sends to." +msgstr "返回索引为 [param bus_idx] 的总线的发送目标总线的名称。" + +msgid "Returns the volume of the bus at index [param bus_idx] in dB." +msgstr "返回索引为 [param bus_idx] 的总线的音量,单位为 dB。" + +msgid "Returns the sample rate at the output of the [AudioServer]." +msgstr "返回 [AudioServer] 输出的采样率。" + +msgid "Returns the names of all audio output devices detected on the system." +msgstr "返回系统中检测到的所有音频输出设备的名称。" + +msgid "Returns the audio driver's output latency." +msgstr "返回音频驱动器的输出延迟。" + +msgid "Returns the speaker configuration." +msgstr "返回扬声器的配置。" + +msgid "Returns the relative time since the last mix occurred." +msgstr "返回自上次混合以来的相对时间。" + +msgid "Returns the relative time until the next mix occurs." +msgstr "返回下一次混合之前的相对时间。" + +msgid "" +"If [code]true[/code], the bus at index [param bus_idx] is bypassing effects." +msgstr "如果为 [code]true[/code],则索引为 [param bus_idx] 的总线会绕过效果。" + +msgid "" +"If [code]true[/code], the effect at index [param effect_idx] on the bus at " +"index [param bus_idx] is enabled." +msgstr "" +"如果为 [code]true[/code],则索引为 [param bus_idx] 的总线上启用了索引为 " +"[param effect_idx] 的效果。" + +msgid "If [code]true[/code], the bus at index [param bus_idx] is muted." +msgstr "如果为 [code]true[/code],则索引为 [param bus_idx] 的总线已静音。" + +msgid "If [code]true[/code], the bus at index [param bus_idx] is in solo mode." +msgstr "" +"如果为 [code]true[/code],则索引为 [param bus_idx] 的总线处于独奏模式。" + +msgid "" +"Locks the audio driver's main loop.\n" +"[b]Note:[/b] Remember to unlock it afterwards." +msgstr "" +"锁定音频驱动程序的主循环。\n" +"[b]注意:[/b]之后记得解锁。" + +msgid "Moves the bus from index [param index] to index [param to_index]." +msgstr "将总线从索引 [param index] 移动到索引 [param to_index]。" + +msgid "Removes the bus at index [param index]." +msgstr "移除索引 [param index] 处的总线。" + +msgid "" +"Removes the effect at index [param effect_idx] from the bus at index [param " +"bus_idx]." +msgstr "将索引 [param effect_idx] 的效果从索引 [param bus_idx] 的总线上移除。" + +msgid "Overwrites the currently used [AudioBusLayout]." +msgstr "覆盖当前使用的 [AudioBusLayout]。" + +msgid "Sets the name of the bus at index [param bus_idx] to [param name]." +msgstr "将索引为 [param bus_idx] 的总线的名称设为 [param name]。" + +msgid "" +"Connects the output of the bus at [param bus_idx] to the bus named [param " +"send]." +msgstr "将索引为 [param bus_idx] 处的总线输出连接到名为 [param send] 的总线。" + +msgid "" +"Sets the volume of the bus at index [param bus_idx] to [param volume_db]." +msgstr "将索引为 [param bus_idx] 的总线的音量设为 [param volume_db]。" + +msgid "Swaps the position of two effects in bus [param bus_idx]." +msgstr "在索引为 [param bus_idx] 的总线中交换两个效果的位置。" + +msgid "" +"Unlocks the audio driver's main loop. (After locking it, you should always " +"unlock it.)" +msgstr "解锁音频驱动程序的主循环。(锁定后,你始终需要手动解锁它。)" + +msgid "Number of available audio buses." +msgstr "可用音频总线的数量。" + +msgid "Emitted when the [AudioBusLayout] changes." +msgstr "当 [AudioBusLayout] 改变时发出。" + +msgid "Two or fewer speakers were detected." +msgstr "检测到两个或更少的扬声器。" + +msgid "A 3.1 channel surround setup was detected." +msgstr "检测到 3.1 声道环绕声设置。" + +msgid "A 5.1 channel surround setup was detected." +msgstr "检测到 5.1 声道环绕声设置。" + +msgid "A 7.1 channel surround setup was detected." +msgstr "检测到 7.1 声道环绕声设置。" + +msgid "Base class for audio streams." +msgstr "音频流的基类。" + +msgid "" +"Base class for audio streams. Audio streams are used for sound effects and " +"music playback, and support WAV (via [AudioStreamWAV]) and Ogg (via " +"[AudioStreamOggVorbis]) file formats." +msgstr "" +"音频流的基类。音频流用于播放音效和音乐,支持 WAV(通过 [AudioStreamWAV])和 " +"Ogg(通过 [AudioStreamOggVorbis])文件格式。" + +msgid "Audio streams" +msgstr "音频流" + +msgid "Audio Generator Demo" +msgstr "音频生成器演示" + +msgid "Returns the length of the audio stream in seconds." +msgstr "返回音频流的长度,单位为秒。" + +msgid "Audio stream that generates sounds procedurally." +msgstr "使用程序生成声音的音频流。" + +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 " +"can't keep up." +msgstr "" +"要生成的缓冲区的长度,以秒为单位。较低的值会带来更少的延迟,但需要脚本更快地" +"生成音频数据,从而导致 CPU 使用率增加,如果 CPU 跟不上,则音频破裂的风险更" +"大。" + +msgid "" +"The sample rate to use (in Hz). Higher values are more demanding for the CPU " +"to generate, but result in better quality.\n" +"In games, common sample rates in use are [code]11025[/code], [code]16000[/" +"code], [code]22050[/code], [code]32000[/code], [code]44100[/code], and " +"[code]48000[/code].\n" +"According to the [url=https://en.wikipedia.org/wiki/" +"Nyquist%E2%80%93Shannon_sampling_theorem]Nyquist-Shannon sampling theorem[/" +"url], there is no quality difference to human hearing when going past 40,000 " +"Hz (since most humans can only hear up to ~20,000 Hz, often less). If you " +"are generating lower-pitched sounds such as voices, lower sample rates such " +"as [code]32000[/code] or [code]22050[/code] may be usable with no loss in " +"quality." +msgstr "" +"使用的采样率(单位:Hz)。更高的值对 CPU 要求更高,但会带来更好的质量。\n" +"在游戏中,常用的采样率有 [code]11025[/code]、[code]16000[/code]、" +"[code]22050[/code]、[code]32000[/code]、[code]44100[/code]、[code]48000[/" +"code]。\n" +"根据[url=https://zh.wikipedia.org/wiki/%E9%87%87%E6%A0%B7%E5%AE%9A%E7%90%86]" +"奈奎斯特–香农采样定理[/url],当超过 40000 赫兹时,人类的听觉没有质量上的差别" +"(因为大多数人最多只能听到 ~20000 赫兹,往往更少)。如果你要生成语音等音高较" +"低的声音,则可以使用 [code]32000[/code] 或 [code]22050[/code] 等较低的采样" +"率,不会降低质量。" + +msgid "Plays back audio generated using [AudioStreamGenerator]." +msgstr "播放使用 [AudioStreamGenerator] 生成的音频。" + +msgid "" +"This class is meant to be used with [AudioStreamGenerator] to play back the " +"generated audio in real-time." +msgstr "此类旨在与 [AudioStreamGenerator] 一起使用以实时播放生成的音频。" + +msgid "Clears the audio sample data buffer." +msgstr "清除音频样本数据缓冲区。" + +msgid "" +"Returns the number of frames that can be pushed to the audio sample data " +"buffer without overflowing it. If the result is [code]0[/code], the buffer " +"is full." +msgstr "" +"返回能够推送到音频采样数据缓冲区而不使其溢出的帧数。如果结果为 [code]0[/" +"code],则缓冲区已满。" + +msgid "Plays real-time audio input data." +msgstr "播放实时音频输入数据。" + +msgid "MP3 audio stream driver." +msgstr "MP3 音频流驱动程序。" + +msgid "" +"MP3 audio stream driver. See [member data] if you want to load an MP3 file " +"at run-time." +msgstr "" +"MP3 音频流驱动程序。如果要在运行时加载 MP3 文件,请参阅 [member data]。" + +msgid "" +"Contains the audio data in bytes.\n" +"You can load a file without having to import it beforehand using the code " +"snippet below. Keep in mind that this snippet loads the whole file into " +"memory and may not be ideal for huge files (hundreds of megabytes or more).\n" +"[codeblocks]\n" +"[gdscript]\n" +"func load_mp3(path):\n" +" var file = FileAccess.open(path, FileAccess.READ)\n" +" var sound = AudioStreamMP3.new()\n" +" sound.data = file.get_buffer(file.get_length())\n" +" return sound\n" +"[/gdscript]\n" +"[csharp]\n" +"public AudioStreamMP3 LoadMP3(string path)\n" +"{\n" +" using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);\n" +" var sound = new AudioStreamMP3();\n" +" sound.Data = file.GetBuffer(file.GetLength());\n" +" return sound;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"包含以字节为单位的音频数据。\n" +"您可以使用下面的代码片段,加载文件而无需事先导入它。请记住,此代码段将整个文" +"件加载到内存中,对于大文件(数百兆字节或更多)可能并不理想。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func load_mp3(path):\n" +" var file = FileAccess.open(path, FileAccess.READ)\n" +" var sound = AudioStreamMP3.new()\n" +" sound.data = file.get_buffer(file.get_length())\n" +" return sound\n" +"[/gdscript]\n" +"[csharp]\n" +"public AudioStreamMP3 LoadMP3(string path)\n" +"{\n" +" using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);\n" +" var sound = new AudioStreamMP3();\n" +" sound.Data = file.GetBuffer(file.GetLength());\n" +" return sound;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"If [code]true[/code], the stream will automatically loop when it reaches the " +"end." +msgstr "如果为 [code]true[/code],当流到达末尾时将自动循环。" + +msgid "Time in seconds at which the stream starts after being looped." +msgstr "循环时,流开始的时间,单位为秒。" + +msgid "Contains the raw Ogg data for this stream." +msgstr "包含用于这个流的原始 Ogg 数据。" + +msgid "Meta class for playing back audio." +msgstr "播放音频的元类。" + +msgid "Playback instance for [AudioStreamPolyphonic]." +msgstr "[AudioStreamPolyphonic] 的播放实例。" + +msgid "" +"Playback instance for [AudioStreamPolyphonic]. After setting the " +"[code]stream[/code] property of [AudioStreamPlayer], [AudioStreamPlayer2D], " +"or [AudioStreamPlayer3D], the playback instance can be obtained by calling " +"[method AudioStreamPlayer.get_stream_playback], [method AudioStreamPlayer2D." +"get_stream_playback] or [method AudioStreamPlayer3D.get_stream_playback] " +"methods." +msgstr "" +"[AudioStreamPolyphonic] 的播放实例。设置 [AudioStreamPlayer]、" +"[AudioStreamPlayer2D] 或 [AudioStreamPlayer3D] 的 [code]stream[/code] 属性" +"后,可以通过调用 [method AudioStreamPlayer.get_stream_playback]、[method " +"AudioStreamPlayer2D.get_stream_playback] 或 [method AudioStreamPlayer3D." +"get_stream_playback] 方法获取播放实例。" + +msgid "" +"Stop a stream. The [param stream] argument is an integer ID returned by " +"[method play_stream], which becomes invalid after calling this function." +msgstr "" +"停止某个流。[param stream] 参数是由 [method play_stream] 返回的整数 ID,在调" +"用这个函数后失效。" + +msgid "Plays back audio non-positionally." +msgstr "播放音频,不考虑所处位置。" + +msgid "" +"Plays an audio stream non-positionally.\n" +"To play audio positionally, use [AudioStreamPlayer2D] or " +"[AudioStreamPlayer3D] instead of [AudioStreamPlayer]." +msgstr "" +"以非位置方式支持播放音频流。\n" +"要在位置上播放音频,请使用 [AudioStreamPlayer2D] 或 [AudioStreamPlayer3D] 而" +"不是 [AudioStreamPlayer]。" + +msgid "Returns the position in the [AudioStream] in seconds." +msgstr "返回 [AudioStream] 中的位置,单位为秒。" + +msgid "" +"Returns the [AudioStreamPlayback] object associated with this " +"[AudioStreamPlayer]." +msgstr "返回与此 [AudioStreamPlayer] 关联的 [AudioStreamPlayback] 对象。" + +msgid "Plays the audio from the given [param from_position], in seconds." +msgstr "从给定的位置 [param from_position] 播放音频,以秒为单位。" + +msgid "Sets the position from which audio will be played, in seconds." +msgstr "设置音频的播放位置,以秒为单位。" + +msgid "Stops the audio." +msgstr "停止音频。" + +msgid "If [code]true[/code], audio plays when added to scene tree." +msgstr "如果为 [code]true[/code],在添加到场景树时将播放音频。" + +msgid "" +"Bus on which this audio is playing.\n" +"[b]Note:[/b] When setting this property, keep in mind that no validation is " +"performed to see if the given name matches an existing bus. This is because " +"audio bus layouts might be loaded after this property is set. If this given " +"name can't be resolved at runtime, it will fall back to [code]\"Master\"[/" +"code]." +msgstr "" +"这个音频在哪个总线上播放。\n" +"[b]注意:[/b]设置这个属性时,请记住它并不会对给定的名称是否与现有总线匹配进行" +"校验。这是因为音频总线布局可以在设置这个属性后再加载。如果这个给定的名称在运" +"行时无法解析,就会回退到 [code]\"Master\"[/code]。" + +msgid "" +"If the audio configuration has more than two speakers, this sets the target " +"channels. See [enum MixTarget] constants." +msgstr "" +"如果音频配置有两个以上的扬声器,则设置目标通道。见 [enum MixTarget] 常量。" + +msgid "" +"The pitch and the tempo of the audio, as a multiplier of the audio sample's " +"sample rate." +msgstr "音频的音高和节奏,作为音频样本的采样率的倍数。" + +msgid "If [code]true[/code], audio is playing." +msgstr "如果为 [code]true[/code],则播放音频。" + +msgid "The [AudioStream] object to be played." +msgstr "要播放的 [AudioStream] 对象。" + +msgid "" +"If [code]true[/code], the playback is paused. You can resume it by setting " +"[code]stream_paused[/code] to [code]false[/code]." +msgstr "" +"如果为 [code]true[/code],则暂停播放。您可以通过将 [code]stream_paused[/" +"code] 设置为 [code]false[/code] 来恢复播放。" + +msgid "Volume of sound, in dB." +msgstr "音量,单位为 dB。" + +msgid "Emitted when the audio stops playing." +msgstr "当音频停止播放时发出。" + +msgid "The audio will be played only on the first channel." +msgstr "音频将只在第一个声道中播放。" + +msgid "The audio will be played on all surround channels." +msgstr "音频将在所有环绕声声道中播放。" + +msgid "" +"The audio will be played on the second channel, which is usually the center." +msgstr "音频将在第二个声道中播放,通常位于中央。" + +msgid "Plays positional sound in 2D space." +msgstr "在 2D 空间中播放与位置相关的声音。" + +msgid "Returns the position in the [AudioStream]." +msgstr "返回 [AudioStream] 中的位置。" + +msgid "" +"Returns the [AudioStreamPlayback] object associated with this " +"[AudioStreamPlayer2D]." +msgstr "返回与该 [AudioStreamPlayer2D] 相关联的 [AudioStreamPlayback] 对象。" + +msgid "" +"Queues the audio to play on the next physics frame, from the given position " +"[param from_position], in seconds." +msgstr "" +"将要播放的音频入队,将在下一物理帧从给定的位置 [param from_position] 开始播" +"放,单位为秒。" + +msgid "" +"Determines which [Area2D] layers affect the sound for reverb and audio bus " +"effects. Areas can be used to redirect [AudioStream]s so that they play in a " +"certain audio bus. An example of how you might use this is making a " +"\"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 "" +"决定对混响及音频总线效果有影响的 [Area2D] 层。可使用区域对 [AudioStream] 进行" +"重定向,使其在特定的音频总线中播放。一个例子是可以用来制作“水域”,将水中播放" +"的声音重定向至单独的音频总线,让声音听起来像是在水下播放。" + +msgid "Maximum distance from which audio is still hearable." +msgstr "音频仍可听到的最大距离。" + +msgid "" +"If [code]true[/code], audio is playing or is queued to be played (see " +"[method play])." +msgstr "" +"如果为 [code]true[/code],则音频正在播放,或者已加入播放队列(见 [method " +"play])。" + +msgid "Base volume before attenuation." +msgstr "衰减前的基础音量。" + +msgid "Plays positional sound in 3D space." +msgstr "在 3D 空间中播放与位置相关的声音。" + +msgid "" +"Returns the [AudioStreamPlayback] object associated with this " +"[AudioStreamPlayer3D]." +msgstr "返回与这个 [AudioStreamPlayer3D] 相关联的 [AudioStreamPlayback] 对象。" + +msgid "Amount how much the filter affects the loudness, in decibels." +msgstr "滤波器对响度的影响程度,以分贝为单位。" + +msgid "" +"Decides if audio should get quieter with distance linearly, quadratically, " +"logarithmically, or not be affected by distance, effectively disabling " +"attenuation." +msgstr "" +"决定音频是否应该得到更安静的距离线性,平方,对数,或不受影响的距离,有效地禁" +"用衰减。" + +msgid "" +"If [code]true[/code], audio plays when the AudioStreamPlayer3D node is added " +"to scene tree." +msgstr "" +"如果为 [code]true[/code],则在将 AudioStreamPlayer3D 节点添加到场景树时播放音" +"频。" + +msgid "" +"The bus on which this audio is playing.\n" +"[b]Note:[/b] When setting this property, keep in mind that no validation is " +"performed to see if the given name matches an existing bus. This is because " +"audio bus layouts might be loaded after this property is set. If this given " +"name can't be resolved at runtime, it will fall back to [code]\"Master\"[/" +"code]." +msgstr "" +"播放音频的总线。\n" +"[b]注意:[/b]设置这个属性时,请记住它并不会对给定的名称是否与现有总线匹配进行" +"校验。这是因为音频总线布局可以在设置这个属性后再加载。如果这个给定的名称在运" +"行时无法解析,就会回退到 [code]\"Master\"[/code]。" + +msgid "Sets the absolute maximum of the soundlevel, in decibels." +msgstr "设置声级的绝对最大值,以分贝为单位。" + +msgid "The [AudioStream] resource to be played." +msgstr "要播放的 [AudioStream] 资源。" + +msgid "" +"If [code]true[/code], the playback is paused. You can resume it by setting " +"[member stream_paused] to [code]false[/code]." +msgstr "" +"如果为 [code]true[/code],则播放会暂停。你可以通过将 [member stream_paused] " +"设置为 [code]false[/code]来恢复它。" + +msgid "" +"The factor for the attenuation effect. Higher values make the sound audible " +"over a larger distance." +msgstr "衰减效果的系数。更高的值使声音在更远的距离可以听到。" + +msgid "Attenuation of loudness according to linear distance." +msgstr "根据距离对响度进行线性衰减。" + +msgid "Attenuation of loudness according to squared distance." +msgstr "根据距离对响度进行平方衰减。" + +msgid "Attenuation of loudness according to logarithmic distance." +msgstr "根据距离对响度进行对数衰减。" + +msgid "" +"No attenuation of loudness according to distance. The sound will still be " +"heard positionally, unlike an [AudioStreamPlayer]. [constant " +"ATTENUATION_DISABLED] can be combined with a [member max_distance] value " +"greater than [code]0.0[/code] to achieve linear attenuation clamped to a " +"sphere of a defined size." +msgstr "" +"不根据距离衰减响度。与 [AudioStreamPlayer] 不同,声音仍会在位置上被听到。" +"[constant ATTENUATION_DISABLED] 可以与大于 [code]0.0[/code] 的 [member " +"max_distance] 值结合使用,以实现线性衰减,限制在定义的球体大小。" + +msgid "Disables doppler tracking." +msgstr "禁用多普勒跟踪。" + +msgid "Executes doppler tracking in idle step." +msgstr "在空闲步骤中执行多普勒跟踪。" + +msgid "Executes doppler tracking in physics step." +msgstr "在物理步骤中执行多普勒跟踪。" + +msgid "Returns the stream at the specified index." +msgstr "返回指定索引处的流。" + +msgid "Move a stream from one index to another." +msgstr "将流从一个索引移动到另一个索引。" + +msgid "Remove the stream at the specified index." +msgstr "移除指定索引处的流。" + +msgid "Set the AudioStream at the specified index." +msgstr "设置指定索引处的 AudioStream。" + +msgid "" +"The intensity of random pitch variation. A value of 1 means no variation." +msgstr "随机音高变化的强度。值为 1 表示没有变化。" + +msgid "" +"The intensity of random volume variation. A value of 0 means no variation." +msgstr "随机音量变化的强度。值为 0 表示没有变化。" + +msgid "The number of streams in the stream pool." +msgstr "流池中流的数量。" + +msgid "Stores audio data loaded from WAV files." +msgstr "存储从 WAV 文件加载的音频数据。" + +msgid "" +"Contains the audio data in bytes.\n" +"[b]Note:[/b] This property expects signed PCM8 data. To convert unsigned " +"PCM8 to signed PCM8, subtract 128 from each byte." +msgstr "" +"包含以字节为单位的音频数据。\n" +"[b]注意:[/b]此属性需要有符号的 PCM8 数据。要将无符号的 PCM8 转换为有符号的 " +"PCM8,需要从每个字节中减去 128。" + +msgid "Audio format. See [enum Format] constants for values." +msgstr "音频格式。取值见 [enum Format] 常量。" + +msgid "" +"The loop start point (in number of samples, relative to the beginning of the " +"sample). This information will be imported automatically from the WAV file " +"if present." +msgstr "" +"循环起始点(相对于样本开始的样本数)。如果 WAV 文件中存在此信息,则将自动导" +"入。" + +msgid "" +"The loop end point (in number of samples, relative to the beginning of the " +"sample). This information will be imported automatically from the WAV file " +"if present." +msgstr "" +"循环结束点(相对于样本开始的样本数)。如果 WAV 文件中存在此信息,则将自动导" +"入。" + +msgid "" +"The loop mode. This information will be imported automatically from the WAV " +"file if present. See [enum LoopMode] constants for values." +msgstr "" +"循环模式。如果 WAV 文件中存在此信息,则将自动导入。取值请参阅 [enum " +"LoopMode] 常量。" + +msgid "" +"The sample rate for mixing this audio. Higher values require more storage " +"space, but result in better quality.\n" +"In games, common sample rates in use are [code]11025[/code], [code]16000[/" +"code], [code]22050[/code], [code]32000[/code], [code]44100[/code], and " +"[code]48000[/code].\n" +"According to the [url=https://en.wikipedia.org/wiki/" +"Nyquist%E2%80%93Shannon_sampling_theorem]Nyquist-Shannon sampling theorem[/" +"url], there is no quality difference to human hearing when going past 40,000 " +"Hz (since most humans can only hear up to ~20,000 Hz, often less). If you " +"are using lower-pitched sounds such as voices, lower sample rates such as " +"[code]32000[/code] or [code]22050[/code] may be usable with no loss in " +"quality." +msgstr "" +"混合这个音频的采样率。更高的数值需要更多的存储空间,但会带来更好的质量。\n" +"在游戏中,常用的采样率有 [code]11025[/code]、[code]16000[/code]、" +"[code]22050[/code]、[code]32000[/code]、[code]44100[/code]、[code]48000[/" +"code]。\n" +"根据[url=https://zh.wikipedia.org/wiki/%E9%87%87%E6%A0%B7%E5%AE%9A%E7%90%86]" +"奈奎斯特–香农采样定理[/url],当超过 40000 赫兹时,人类的听觉没有质量上的差别" +"(因为大多数人只能听到 ~20000 赫兹,往往更少)。如果你要使用语音等音高较低的" +"声音,则可以使用 [code]32000[/code] 或 [code]22050[/code] 等较低的采样率,不" +"会降低质量。" + +msgid "If [code]true[/code], audio is stereo." +msgstr "如果为 [code]true[/code],则音频为立体声。" + +msgid "8-bit audio codec." +msgstr "8 位音频编解码器。" + +msgid "16-bit audio codec." +msgstr "16 位音频编解码器。" + +msgid "Audio is compressed using IMA ADPCM." +msgstr "音频使用 IMA ADPCM 进行压缩。" + +msgid "Audio does not loop." +msgstr "音频不循环。" + +msgid "" +"Audio loops the data between [member loop_begin] and [member loop_end], " +"playing forward only." +msgstr "" +"音频在 [member loop_begin] 和 [member loop_end] 之间循环数据,仅向前播放。" + +msgid "" +"Audio loops the data between [member loop_begin] and [member loop_end], " +"playing back and forth." +msgstr "" +"音频在 [member loop_begin] 和 [member loop_end] 之间循环数据,来回播放。" + +msgid "" +"Audio loops the data between [member loop_begin] and [member loop_end], " +"playing backward only." +msgstr "" +"音频在 [member loop_begin] 和 [member loop_end] 之间循环数据,仅向后播放。" + +msgid "Buffer mode. See [enum CopyMode] constants." +msgstr "缓冲区模式。见 [enum CopyMode] 常量。" + +msgid "" +"The area covered by the [BackBufferCopy]. Only used if [member copy_mode] is " +"[constant COPY_MODE_RECT]." +msgstr "" +"该 [BackBufferCopy] 所覆盖的区域。只有当 [member copy_mode] 为 [constant " +"COPY_MODE_RECT] 时才使用。" + +msgid "" +"Disables the buffering mode. This means the [BackBufferCopy] node will " +"directly use the portion of screen it covers." +msgstr "" +"禁用缓冲模式。这意味着该 [BackBufferCopy] 节点将直接使用它所覆盖的屏幕部分。" + +msgid "[BackBufferCopy] buffers a rectangular region." +msgstr "[BackBufferCopy] 缓冲一个矩形区域。" + +msgid "[BackBufferCopy] buffers the entire screen." +msgstr "[BackBufferCopy] 缓冲整个屏幕。" + +msgid "Base class for different kinds of buttons." +msgstr "不同类型按钮的基类。" + +msgid "" +"BaseButton is the abstract base class for buttons, so it shouldn't be used " +"directly (it doesn't display anything). Other types of buttons inherit from " +"it." +msgstr "" +"BaseButton 是按钮的抽象基类,所以不应该直接使用它(它不显示任何东西)。其他类" +"型的按钮都继承自它。" + +msgid "" +"Called when the button is pressed. If you need to know the button's pressed " +"state (and [member toggle_mode] is active), use [method _toggled] instead." +msgstr "" +"当按钮被按下时调用。如果你需要知道按钮被按下的状态(并且 [member toggle_mode] " +"is active]是活动状态),请使用[method _toggled]代替。" + +msgid "" +"Called when the button is toggled (only if [member toggle_mode] is active)." +msgstr "当按钮被切换时调用(仅当 [member toggle_mode] 处于活动状态时)。" + +msgid "" +"Returns the visual state used to draw the button. This is useful mainly when " +"implementing your own draw code by either overriding _draw() or connecting " +"to \"draw\" signal. The visual state of the button is defined by the [enum " +"DrawMode] enum." +msgstr "" +"返回用于绘制按钮的视觉状态。当您通过覆盖 _draw() 或连接到“draw”信号来实现您自" +"己的绘制代码时,这很有用。按钮的视觉状态由 [enum DrawMode] 枚举定义。" + +msgid "" +"Returns [code]true[/code] if the mouse has entered the button and has not " +"left it yet." +msgstr "如果鼠标已进入按钮,且尚未离开,则返回 [code]true[/code]。" + +msgid "" +"Determines when the button is considered clicked, one of the [enum " +"ActionMode] constants." +msgstr "确定按钮何时被认为被点击,是 [enum ActionMode] 常量之一。" + +msgid "" +"If [code]true[/code], the button is in disabled state and can't be clicked " +"or toggled." +msgstr "如果为 [code]true[/code],则该按钮处于禁用状态,无法点击或切换。" + +msgid "" +"If [code]true[/code], the button stays pressed when moving the cursor " +"outside the button while pressing it.\n" +"[b]Note:[/b] This property only affects the button's visual appearance. " +"Signals will be emitted at the same moment regardless of this property's " +"value." +msgstr "" +"如果为 [code]true[/code],当按下按钮时将光标移到按钮外时,按钮会保持按下状" +"态。\n" +"[b]注意:[/b]该属性只影响按钮的视觉表现。无论该属性的值是多少,信号都会在同一" +"时刻发出。" + +msgid "[Shortcut] associated to the button." +msgstr "与该按钮关联的 [Shortcut]。" + +msgid "" +"If [code]true[/code], the button will add information about its shortcut in " +"the tooltip." +msgstr "如果为 [code]true[/code],按钮将在工具提示中添加其快捷方式的信息。" + +msgid "" +"If [code]true[/code], the button is in toggle mode. Makes the button flip " +"state between pressed and unpressed each time its area is clicked." +msgstr "" +"如果为 [code]true[/code],则按钮处于切换模式。使按钮在每次点击其区域时,在按" +"下和未按下之间转换状态。" + +msgid "Emitted when the button starts being held down." +msgstr "当按钮开始被按下时发出。" + +msgid "Emitted when the button stops being held down." +msgstr "当按钮停止按下时发出。" + +msgid "" +"Emitted when the button is toggled or pressed. This is on [signal " +"button_down] if [member action_mode] is [constant ACTION_MODE_BUTTON_PRESS] " +"and on [signal button_up] otherwise.\n" +"If you need to know the button's pressed state (and [member toggle_mode] is " +"active), use [signal toggled] instead." +msgstr "" +"当按钮被切换或按下时发出。如果 [member action_mode] 是 [constant " +"ACTION_MODE_BUTTON_PRESS],则在 [signal button_down] 上,否则在 [signal " +"button_up] 上。\n" +"如果您需要知道按钮的按压状态(并且 [member toggle_mode] 是活动的),请使用" +"[signal toggled]代替。" + +msgid "" +"The normal state (i.e. not pressed, not hovered, not toggled and enabled) of " +"buttons." +msgstr "按钮的正常状态(即未按下、未悬停、未切换和启用)。" + +msgid "The state of buttons are pressed." +msgstr "按钮被按下的状态。" + +msgid "The state of buttons are hovered." +msgstr "按钮的状态为悬停。" + +msgid "The state of buttons are disabled." +msgstr "按钮的状态为禁用。" + +msgid "The state of buttons are both hovered and pressed." +msgstr "按钮的状态既是悬停的,也是按下的。" + +msgid "Require just a press to consider the button clicked." +msgstr "只需要按一下就可以认为按钮被点击了。" + +msgid "" +"Require a press and a subsequent release before considering the button " +"clicked." +msgstr "要求按下后再释放,才算点击了按钮。" + +msgid "Default 3D rendering material." +msgstr "默认的 3D 渲染材质。" + +msgid "" +"This provides a default material with a wide variety of rendering features " +"and properties without the need to write shader code. See the tutorial below " +"for details." +msgstr "" +"这提供了一个默认的材质,具有多种渲染功能和属性,无需编写着色器代码。详情请看" +"下面的教程。" + +msgid "Standard Material 3D" +msgstr "标准 3D 材质" + +msgid "Returns [code]true[/code], if the specified [enum Feature] is enabled." +msgstr "如果指定的 [enum Feature] 被启用,返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code], if the specified flag is enabled. See [enum " +"Flags] enumerator for options." +msgstr "" +"如果指定的标志被启用,返回 [code]true[/code]。选项见 [enum Flags] 枚举值。" + +msgid "" +"If [code]true[/code], enables the specified flag. Flags are optional " +"behavior that can be turned on and off. Only one flag can be enabled at a " +"time with this function, the flag enumerators cannot be bit-masked together " +"to enable or disable multiple flags at once. Flags can also be enabled by " +"setting the corresponding member to [code]true[/code]. See [enum Flags] " +"enumerator for options." +msgstr "" +"如果为 [code]true[/code],则启用指定的标志。标志是可以打开和关闭的可选行为。" +"使用该函数一次只能启用一个标志,不能将标志枚举值像位掩码一样进行合并,一次启" +"用或禁用多个标志。也可以通过将相应成员设置为 [code]true[/code] 来启用标志。选" +"项见 [enum Flags] 枚举值。" + +msgid "The type of alpha antialiasing to apply. See [enum AlphaAntiAliasing]." +msgstr "要应用的 Alpha 抗锯齿类型。见 [enum AlphaAntiAliasing]。" + +msgid "" +"The hashing scale for Alpha Hash. Recommended values between [code]0[/code] " +"and [code]2[/code]." +msgstr "" +"Alpha Hash 的哈希比例。推荐 [code]0[/code] 和 [code]2[/code] 之间的值。" + +msgid "" +"The strength of the anisotropy effect. This is multiplied by [member " +"anisotropy_flowmap]'s alpha channel if a texture is defined there and the " +"texture contains an alpha channel." +msgstr "" +"各向异性效果的强度。如果 [member anisotropy_flowmap] 是一张带有 Alpha 通道的" +"纹理,那么这个值会与其 Alpha 通道相乘。" + +msgid "" +"If [code]true[/code], anisotropy is enabled. Anisotropy changes the shape of " +"the specular blob and aligns it to tangent space. This is useful for brushed " +"aluminium and hair reflections.\n" +"[b]Note:[/b] Mesh tangents are needed for anisotropy to work. If the mesh " +"does not contain tangents, the anisotropy effect will appear broken.\n" +"[b]Note:[/b] Material anisotropy should not to be confused with anisotropic " +"texture filtering, which can be enabled by setting [member texture_filter] " +"to [constant TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC]." +msgstr "" +"如果为 [code]true[/code],则启用各向异性。各向异性会改变镜面反射斑点的形状并" +"将其与切线空间对齐。可用于拉丝铝材和毛发反射。\n" +"[b]注意:[/b]各向异性需要网格切线才能正常工作。如果网格中不包含切线,则各向异" +"性效果会显得破碎。\n" +"[b]注意:[/b]材质的各向异性不应与各向异性纹理过滤相混淆,后者可以通过将 " +"[member texture_filter] 设置为 [constant " +"TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC] 来启用。" + +msgid "" +"Texture that offsets the tangent map for anisotropy calculations and " +"optionally controls the anisotropy effect (if an alpha channel is present). " +"The flowmap texture is expected to be a derivative map, with the red channel " +"representing distortion on the X axis and green channel representing " +"distortion on the Y axis. Values below 0.5 will result in negative " +"distortion, whereas values above 0.5 will result in positive distortion.\n" +"If present, the texture's alpha channel will be used to multiply the " +"strength of the [member anisotropy] effect. Fully opaque pixels will keep " +"the anisotropy effect's original strength while fully transparent pixels " +"will disable the anisotropy effect entirely. The flowmap texture's blue " +"channel is ignored." +msgstr "" +"用于对切线图进行偏移的纹理,用于各向异性的计算,(如果存在 Alpha 通道)还可以" +"控制各向异性的效果。Flowmap 方向图纹理应该是一张派生图,红色通道表示 X 轴上的" +"变形、绿色通道表示 Y 轴上的变形。小于 0.5 的值会朝负方向进行变形,而大于 0.5 " +"的值则朝正方向变形。\n" +"纹理的 Alpha 通道如果存在,则会用于与 [member anisotropy] 效果的强度相乘。完" +"全不透明的像素会保持原始强度,而完全透明的像素则会完全禁用各向异性效果。方向" +"图纹理的蓝色通道会被忽略。" + +msgid "" +"If [code]true[/code], ambient occlusion is enabled. Ambient occlusion " +"darkens areas based on the [member ao_texture]." +msgstr "" +"如果为 [code]true[/code],启用环境遮挡。环境遮挡根据 [member ao_texture] 使区" +"域变暗。" + +msgid "" +"Amount that ambient occlusion affects lighting from lights. If [code]0[/" +"code], ambient occlusion only affects ambient light. If [code]1[/code], " +"ambient occlusion affects lights just as much as it affects ambient light. " +"This can be used to impact the strength of the ambient occlusion effect, but " +"typically looks unrealistic." +msgstr "" +"环境遮挡对灯光照明的影响程度。如果 [code]0[/code],环境遮挡只影响环境光。如" +"果 [code]1[/code],环境遮挡对灯光的影响和对环境光的影响一样大。这可以用来影响" +"环境遮挡效果的强度,但通常看起来不真实。" + +msgid "" +"If [code]true[/code], use [code]UV2[/code] coordinates to look up from the " +"[member ao_texture]." +msgstr "" +"如果为 [code]true[/code],请使用 [code]UV2[/code] 坐标从 [member ao_texture] " +"中查找。" + +msgid "" +"Texture that defines the amount of ambient occlusion for a given point on " +"the object." +msgstr "定义物体上给定点的环境遮挡量的纹理。" + +msgid "" +"Specifies the channel of the [member ao_texture] in which the ambient " +"occlusion information is stored. This is useful when you store the " +"information for multiple effects in a single texture. For example if you " +"stored metallic in the red channel, roughness in the blue, and ambient " +"occlusion in the green you could reduce the number of textures you use." +msgstr "" +"指定 [member ao_texture] 的通道,其中存储环境遮挡信息。当您在一个纹理中存储多" +"个效果的信息时,这很有用。例如,如果您将金属效果存储在R通道中,将粗糙度存储在" +"B通道中,将环境遮挡存储在G通道中,就可以减少您使用的纹理数量。" + +msgid "" +"Controls how the object faces the camera. See [enum BillboardMode].\n" +"[b]Note:[/b] Billboard mode is not suitable for VR because the left-right " +"vector of the camera is not horizontal when the screen is attached to your " +"head instead of on the table. See [url=https://github.com/godotengine/godot/" +"issues/41567]GitHub issue #41567[/url] for details." +msgstr "" +"控制对象如何面向摄像机。见 [enum BillboardMode]。\n" +"[b]注意:[/b]广告牌模式不适合 VR,因为当屏幕贴在你的头部而不是在桌子上时,摄" +"像机的左右向量不是水平的。详见 [url=https://github.com/godotengine/godot/" +"issues/41567]GitHub issue #41567[/url]。" + +msgid "" +"The material's blend mode.\n" +"[b]Note:[/b] Values other than [code]Mix[/code] force the object into the " +"transparent pipeline. See [enum BlendMode]." +msgstr "" +"材质的混合模式。\n" +"[b]注意:[/b]除 [code]Mix[/code] 以外的值会强制对象进入透明管道。见 [enum " +"BlendMode]。" + +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] 与禁用清漆效果相同。" + +msgid "" +"Texture that defines the strength of the clearcoat effect and the glossiness " +"of the clearcoat. Strength is specified in the red channel while glossiness " +"is specified in the green channel." +msgstr "" +"定义清漆效果的强度和清漆的光泽度的纹理。强度在红色通道中指定,光泽度在绿色通" +"道中指定。" + +msgid "" +"Specifies how the [member detail_albedo] should blend with the current " +"[code]ALBEDO[/code]. See [enum BlendMode] for options." +msgstr "" +"指定 [member detail_albedo] 应如何与当前 [code]ALBEDO[/code] 混合。参阅 " +"[enum BlendMode] 选项。" + +msgid "" +"Specifies whether to use [code]UV[/code] or [code]UV2[/code] for the detail " +"layer. See [enum DetailUV] for options." +msgstr "" +"指定细节层是使用 [code]UV[/code] 还是 [code]UV2[/code]。选项请参阅 [enum " +"DetailUV]。" + +msgid "" +"The algorithm used for diffuse light scattering. See [enum DiffuseMode]." +msgstr "用于漫反射光散射的算法。见 [enum DiffuseMode]。" + +msgid "If [code]true[/code], the object receives no ambient light." +msgstr "如果为 [code]true[/code],则对象不接收环境光。" + +msgid "" +"If [code]true[/code], the object receives no shadow that would otherwise be " +"cast onto it." +msgstr "如果为 [code]true[/code],则对象不会收到投射到其上的阴影。" + +msgid "" +"Distance at which the object appears fully opaque.\n" +"[b]Note:[/b] If [code]distance_fade_max_distance[/code] is less than " +"[code]distance_fade_min_distance[/code], the behavior will be reversed. The " +"object will start to fade away at [code]distance_fade_max_distance[/code] " +"and will fully disappear once it reaches [code]distance_fade_min_distance[/" +"code]." +msgstr "" +"物体看起来完全不透明的距离。\n" +"[b]注意:[/b]如果 [code]distance_fade_max_distance[/code] 小于 " +"[code]distance_fade_min_distance[/code],则行为相反。物体将在 " +"[code]distance_fade_max_distance[/code] 处开始逐渐消失,并在到达 " +"[code]distance_fade_min_distance[/code] 时完全消失。" + +msgid "" +"Distance at which the object starts to become visible. If the object is less " +"than this distance away, it will be invisible.\n" +"[b]Note:[/b] If [code]distance_fade_min_distance[/code] is greater than " +"[code]distance_fade_max_distance[/code], the behavior will be reversed. The " +"object will start to fade away at [code]distance_fade_max_distance[/code] " +"and will fully disappear once it reaches [code]distance_fade_min_distance[/" +"code]." +msgstr "" +"物体开始变得可见的距离。如果物体的距离小于这个距离,它将是不可见的。\n" +"[b]注意:[/b]如果 [code]distance_fade_min_distance[/code] 大于 " +"[code]distance_fade_max_distance[/code],则行为将相反。物体将在 " +"[code]distance_fade_max_distance[/code] 处开始逐渐消失,并在到达 " +"[code]distance_fade_min_distance[/code] 时完全消失。" + +msgid "" +"Specifies which type of fade to use. Can be any of the [enum " +"DistanceFadeMode]s." +msgstr "指定要使用的淡入淡出类型。可以是任何一个 [enum DistanceFadeMode]。" + +msgid "The emitted light's color. See [member emission_enabled]." +msgstr "发出的光的颜色。见 [member emission_enabled]。" + +msgid "Use [code]UV2[/code] to read from the [member emission_texture]." +msgstr "使用 [code]UV2[/code] 从 [member emission_texture] 中读取。" + +msgid "" +"Sets how [member emission] interacts with [member emission_texture]. Can " +"either add or multiply. See [enum EmissionOperator] for options." +msgstr "" +"设置 [member emission] 与 [member emission_texture] 的交互方式。可以是加法或" +"乘法。可选值见 [enum EmissionOperator] 。" + +msgid "Texture that specifies how much surface emits light at a given point." +msgstr "纹理,指定某点的表面发光的程度。" + +msgid "" +"If [code]true[/code], the object is rendered at the same size regardless of " +"distance." +msgstr "如果为 [code]true[/code],则无论距离远近,对象都以相同的尺寸呈现。" + +msgid "" +"A high value makes the material appear more like a metal. Non-metals use " +"their albedo as the diffuse color and add diffuse to the specular " +"reflection. With non-metals, the reflection appears on top of the albedo " +"color. Metals use their albedo as a multiplier to the specular reflection " +"and set the diffuse color to black resulting in a tinted reflection. " +"Materials work better when fully metal or fully non-metal, values between " +"[code]0[/code] and [code]1[/code] should only be used for blending between " +"metal and non-metal sections. To alter the amount of reflection use [member " +"roughness]." +msgstr "" +"高值使材质看起来更像金属。非金属使用其反射率作为漫射色,并在镜面反射上添加漫" +"射。对于非金属,反射出现在反照率颜色之上。金属使用其反射率作为镜面反射的倍" +"数,并将漫射色设置为黑色,从而产生有色反射。材质在全金属或全非金属时效果更" +"好,介于 [code]0[/code] 和 [code]1[/code] 之间的值只能用于金属和非金属部分之" +"间的混合。要改变反射量,请使用[member roughness]。" + +msgid "" +"Texture used to specify metallic for an object. This is multiplied by " +"[member metallic]." +msgstr "用于指定对象的金属质感。这个值会与 [member metallic] 相乘。" + +msgid "" +"Specifies the channel of the [member metallic_texture] in which the metallic " +"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 metallic_texture] 的通道。当您在一个纹理中存储多个" +"效果的信息时,这很有用。例如,如果您将金属效果存储在红色通道中,将粗糙度存储" +"在蓝色通道中,将环境遮挡存储在绿色通道中,就可以减少您使用的纹理数量。" + +msgid "The width of the shape outine." +msgstr "形状轮廓的宽度。" + +msgid "" +"If [code]true[/code], depth testing is disabled and the object will be drawn " +"in render order." +msgstr "如果为 [code]true[/code],深度测试被禁用,对象将按渲染顺序绘制。" + +msgid "The strength of the normal map's effect." +msgstr "法线贴图的效果强度。" + +msgid "" +"Distance over which the fade effect takes place. The larger the distance the " +"longer it takes for an object to fade." +msgstr "渐变效果发生的距离。距离越大,物体褪色的时间越长。" + +msgid "" +"If [code]true[/code], the proximity fade effect is enabled. The proximity " +"fade effect fades out each pixel based on its distance to another object." +msgstr "" +"如果为 [code]true[/code],则启用接近淡出效果。邻近淡出效果会根据每个像素与另" +"一个对象的距离淡出。" + +msgid "" +"Texture that controls the strength of the refraction per-pixel. Multiplied " +"by [member refraction_scale]." +msgstr "控制每个像素折射强度的纹理。会与 [member refraction_scale] 相乘。" + +msgid "Sets the strength of the rim lighting effect." +msgstr "设置边缘照明效果的强度。" + +msgid "" +"Texture used to set the strength of the rim lighting effect per-pixel. " +"Multiplied by [member rim]." +msgstr "纹理用于设置每个像素的边缘光照效果的强度。会与 [member rim] 相乘。" + +msgid "" +"The amount of to blend light and albedo color when rendering rim effect. If " +"[code]0[/code] the light color is used, while [code]1[/code] means albedo " +"color is used. An intermediate value generally works best." +msgstr "" +"渲染边缘效果时,混合光照色和反射色的数量。如果 [code]0[/code] 表示使用光色," +"[code]1[/code] 表示使用反照色。一般来说,中间值的效果最好。" + +msgid "" +"Surface reflection. A value of [code]0[/code] represents a perfect mirror " +"while a value of [code]1[/code] completely blurs the reflection. See also " +"[member metallic]." +msgstr "" +"表面反射。[code]0[/code] 值表示一面完美的镜像,而 [code]1[/code] 值则完全模糊" +"了反射。另请参阅 [member metallic]。" + +msgid "" +"Texture used to control the roughness per-pixel. Multiplied by [member " +"roughness]." +msgstr "用于控制每个像素粗糙度的纹理。会与 [member roughness] 相乘。" + +msgid "" +"If [code]true[/code], enables the \"shadow to opacity\" render mode where " +"lighting modifies the alpha so shadowed areas are opaque and non-shadowed " +"areas are transparent. Useful for overlaying shadows onto a camera feed in " +"AR." +msgstr "" +"如果为 [code]true[/code],启用“阴影到不透明度”的渲染模式,在该模式下,光照会" +"修改 Alpha,使阴影区域不透明,非阴影区域透明。对于在 AR 中把阴影叠加到相机画" +"面上很有用。" + +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 "The strength of the subsurface scattering effect." +msgstr "地下散射效应的强度。" + +msgid "" +"Texture used to control the subsurface scattering strength. Stored in the " +"red texture channel. Multiplied by [member subsurf_scatter_strength]." +msgstr "" +"用于控制次表面散射强度的纹理。存储在红色纹理通道中。会与 [member " +"subsurf_scatter_strength] 相乘。" + +msgid "" +"Filter flags for the texture. See [enum TextureFilter] for options.\n" +"[b]Note:[/b] [member heightmap_texture] is always sampled with linear " +"filtering, even if nearest-neighbor filtering is selected here. This is to " +"ensure the heightmap effect looks as intended. If you need sharper height " +"transitions between pixels, resize the heightmap texture in an image editor " +"with nearest-neighbor filtering." +msgstr "" +"纹理的过滤标志。可选项见 [enum TextureFilter]。\n" +"[b]注意:[/b]即便这里选择了最近邻过滤,[member heightmap_texture] 也始终使用" +"线性过滤采样。这是为了确保高度图效果看起来符合预期。如果您需要像素之间的高度" +"过渡更加清晰,请在图像编辑器中使用最近邻过滤调整高度图纹理的大小。" + +msgid "Repeat flags for the texture. See [enum TextureFilter] for options." +msgstr "纹理的重复标志。可选项见 [enum TextureFilter]。" + +msgid "" +"If [code]true[/code], instead of using [code]UV[/code] textures will use a " +"triplanar texture lookup to determine how to apply textures. Triplanar uses " +"the orientation of the object's surface to blend between texture " +"coordinates. It reads from the source texture 3 times, once for each axis " +"and then blends between the results based on how closely the pixel aligns " +"with each axis. This is often used for natural features to get a realistic " +"blend of materials. Because triplanar texturing requires many more texture " +"reads per-pixel it is much slower than normal UV texturing. Additionally, " +"because it is blending the texture between the three axes, it is unsuitable " +"when you are trying to achieve crisp texturing." +msgstr "" +"如果为 [code]true[/code],纹理将不使用 [code]UV[/code],而是使用三平面纹理查" +"找来确定如何应用纹理。三平面纹理使用对象表面的方向来混合纹理坐标之间。它从源" +"纹理中读取3次,每个轴一次,然后根据像素与每个轴的紧密程度在结果之间进行混合。" +"这通常用于自然特征,以获得真实的材质混合。由于三平面纹理处理每一个像素需要更" +"多的纹理读取,所以它比普通的UV纹理处理要慢得多。此外,由于它是在三个轴之间混" +"合纹理,所以当你试图实现清晰的纹理时,它是不合适的。" + +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 " +"coordinates. It reads from the source texture 3 times, once for each axis " +"and then blends between the results based on how closely the pixel aligns " +"with each axis. This is often used for natural features to get a realistic " +"blend of materials. Because triplanar texturing requires many more texture " +"reads per-pixel it is much slower than normal UV texturing. Additionally, " +"because it is blending the texture between the three axes, it is unsuitable " +"when you are trying to achieve crisp texturing." +msgstr "" +"如果为 [code]true[/code],纹理将不使用 [code]UV[/code],而是使用三平面纹理查" +"找来确定如何应用纹理。三平面纹理使用对象表面的方向来混合纹理坐标之间。它从源" +"纹理中读取 3 次,每个轴一次,然后根据像素与每个轴的紧密程度在结果之间进行混" +"合。这通常用于自然特征,以获得真实的材质混合。由于三平面纹理处理每一个像素需" +"要更多的纹理读取,所以它比普通的 UV 纹理处理要慢得多。此外,由于它是在三个轴" +"之间混合纹理,所以当你试图实现清晰的纹理时,它是不合适的。" + +msgid "If [code]true[/code], the vertex color is used as albedo color." +msgstr "如果为 [code]true[/code],则使用顶点颜色作为反射率颜色。" + +msgid "Texture specifying per-pixel color." +msgstr "指定每个像素颜色的纹理。" + +msgid "Texture specifying per-pixel metallic value." +msgstr "指定每个像素金属值的纹理。" + +msgid "Texture specifying per-pixel roughness value." +msgstr "指定每个像素粗糙度值的纹理。" + +msgid "Texture specifying per-pixel emission color." +msgstr "指定每个像素发射颜色的纹理。" + +msgid "Texture specifying per-pixel normal vector." +msgstr "指定每个像素法向量的纹理。" + +msgid "Texture specifying per-pixel rim value." +msgstr "指定每个像素边缘值的纹理。" + +msgid "Texture specifying per-pixel clearcoat value." +msgstr "指定每个像素清漆值的纹理。" + +msgid "" +"Texture specifying per-pixel flowmap direction for use with [member " +"anisotropy]." +msgstr "指定每个像素流图方向的纹理,用于 [member anisotropy]。" + +msgid "Texture specifying per-pixel ambient occlusion value." +msgstr "指定每个像素环境光遮蔽的纹理。" + +msgid "Texture specifying per-pixel height." +msgstr "指定每个像素高度的纹理。" + +msgid "Texture specifying per-pixel subsurface scattering." +msgstr "指定每个像素次表面散射的纹理。" + +msgid "Texture specifying per-pixel transmittance for subsurface scattering." +msgstr "指定每个像素用于次表面散射的透射率的纹理。" + +msgid "Texture specifying per-pixel backlight color." +msgstr "指定每个像素背光颜色的纹理。" + +msgid "Texture specifying per-pixel refraction strength." +msgstr "指定每个像素折射强度的纹理。" + +msgid "Texture specifying per-pixel detail mask blending value." +msgstr "指定每个像素细节蒙版混合值的纹理。" + +msgid "Texture specifying per-pixel detail color." +msgstr "指定每个像素细节颜色的纹理。" + +msgid "Texture specifying per-pixel detail normal." +msgstr "指定每个像素细节法线的纹理。" + +msgid "Texture holding ambient occlusion, roughness, and metallic." +msgstr "保存环境光遮蔽、粗糙度和金属度信息的纹理。" + +msgid "Represents the size of the [enum TextureParam] enum." +msgstr "代表 [enum TextureParam] 枚举的大小。" + +msgid "" +"The texture filter reads from the nearest pixel only. The simplest and " +"fastest method of filtering, but the texture will look pixelized." +msgstr "" +"纹理过滤器仅读取最邻近的像素。最简单快速的过滤方法,但纹理看起来会像素化。" + +msgid "" +"The texture filter blends between the nearest 4 pixels. Use this when you " +"want to avoid a pixelated style, but do not want mipmaps." +msgstr "" +"纹理过滤器在最邻近的 4 个像素之间混合。如果你想要避免像素化风格,但又不想使" +"用 mipmap,那么请使用这个选项。" + +msgid "" +"The texture filter reads from the nearest pixel in the nearest mipmap. The " +"fastest way to read from textures with mipmaps." +msgstr "" +"纹理过滤器读取最邻近的 mipmap 中的最邻近的像素。带有 mipmap 的纹理的最快读取" +"方法。" + +msgid "" +"The texture filter blends between the nearest 4 pixels and between the " +"nearest 2 mipmaps. Use this for most cases as mipmaps are important to " +"smooth out pixels that are far from the camera." +msgstr "" +"纹理过滤器在最邻近的 4 个像素和最邻近的 2 个 mipmap 之间混合。请在大多数情况" +"下使用,因为 mipmap 对于平滑远离相机的像素很重要。" + +msgid "" +"The texture filter reads from the nearest pixel, but selects a mipmap based " +"on the angle between the surface and the camera view. This reduces artifacts " +"on surfaces that are almost in line with the camera. The anisotropic " +"filtering level can be changed by adjusting [member ProjectSettings." +"rendering/textures/default_filters/anisotropic_filtering_level]." +msgstr "" +"纹理过滤器读取最邻近的像素,但会根据表面和相机视图之间的夹角选择 mipmap。可以" +"减少几乎与相机成一直线的表面的不自然情况。各向异性过滤级别可以通过调整 " +"[member ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level] 来改变。" + +msgid "" +"The texture filter blends between the nearest 4 pixels and selects a mipmap " +"based on the angle between the surface and the camera view. This reduces " +"artifacts on surfaces that are almost in line with the camera. This is the " +"slowest of the filtering options, but results in the highest quality " +"texturing. The anisotropic filtering level can be changed by adjusting " +"[member ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level]." +msgstr "" +"纹理过滤器在最邻近的 4 个像素之间进行混合,并会根据表面和相机视图之间的夹角选" +"择 mipmap。可以减少几乎与相机成一直线的表面的不自然情况。这是过滤选项中最慢的" +"一个,但可以得到最高质量的纹理。各向异性过滤级别可以通过调整 [member " +"ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level] 来改变。" + +msgid "Represents the size of the [enum TextureFilter] enum." +msgstr "代表 [enum TextureFilter] 枚举的大小。" + +msgid "Use [code]UV[/code] with the detail texture." +msgstr "使用 [code]UV[/code] 与细节纹理。" + +msgid "Use [code]UV2[/code] with the detail texture." +msgstr "使用 [code]UV2[/code] 与细节纹理。" + +msgid "Represents the size of the [enum Transparency] enum." +msgstr "代表 [enum Transparency] 枚举的大小。" + +msgid "Represents the size of the [enum ShadingMode] enum." +msgstr "代表 [enum ShadingMode] 枚举的大小。" + +msgid "Constant for setting [member emission_enabled]." +msgstr "用于设置 [member emission_enabled] 的常量。" + +msgid "Constant for setting [member normal_enabled]." +msgstr "用于设置 [member normal_enabled] 的常量。" + +msgid "Constant for setting [member rim_enabled]." +msgstr "用于设置 [member rim_enabled] 的常量。" + +msgid "Constant for setting [member clearcoat_enabled]." +msgstr "用于设置 [member clearcoat_enabled] 的常量。" + +msgid "Constant for setting [member anisotropy_enabled]." +msgstr "用于设置 [member anisotropy_enabled] 的常量。" + +msgid "Constant for setting [member ao_enabled]." +msgstr "用于设置 [member ao_enabled] 的常量。" + +msgid "Constant for setting [member heightmap_enabled]." +msgstr "用于设置 [member heightmap_enabled] 的常量。" + +msgid "Constant for setting [member subsurf_scatter_enabled]." +msgstr "用于设置 [member subsurf_scatter_enabled] 的常量。" + +msgid "Constant for setting [member subsurf_scatter_transmittance_enabled]." +msgstr "用于设置 [member subsurf_scatter_transmittance_enabled] 的常量。" + +msgid "Constant for setting [member backlight_enabled]." +msgstr "用于设置 [member backlight_enabled] 的常量。" + +msgid "Constant for setting [member refraction_enabled]." +msgstr "用于设置 [member refraction_enabled] 的常量。" + +msgid "Constant for setting [member detail_enabled]." +msgstr "用于设置 [member detail_enabled] 的常量。" + +msgid "Represents the size of the [enum Feature] enum." +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 值,在背景上混合对象的颜色。" + +msgid "The color of the object is added to the background." +msgstr "对象的颜色被添加到背景中。" + +msgid "The color of the object is subtracted from the background." +msgstr "从背景中减去对象的颜色。" + +msgid "The color of the object is multiplied by the background." +msgstr "对象的颜色与背景相乘。" + +msgid "Disables Alpha AntiAliasing for the material." +msgstr "禁用该材质的 Alpha 抗锯齿。" + +msgid "" +"Enables AlphaToCoverage. Alpha values in the material are passed to the " +"AntiAliasing sample mask." +msgstr "" +"启用 AlphaToCoverage。材质中的 Alpha 值会被传递到 AntiAliasing 采样遮罩。" + +msgid "" +"Enables AlphaToCoverage and forces all non-zero alpha values to [code]1[/" +"code]. Alpha values in the material are passed to the AntiAliasing sample " +"mask." +msgstr "" +"启用 AlphaToCoverage 并将所有非零的 alpha 值强制设为 [code]1[/code]。材质中" +"的 Alpha 值会被传递到 AntiAliasing 采样遮罩。" + +msgid "Set [code]ALBEDO[/code] to the per-vertex color specified in the mesh." +msgstr "将 [code]ALBEDO[/code] 设置为网格中指定的每顶点颜色。" + +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]." +msgstr "" +"使用点大小来改变图元点的大小。同时改变反射率纹理查找,使用 " +"[code]POINT_COORD[/code] 而不是 [code]UV[/code]。" + +msgid "" +"Object is scaled by depth so that it always appears the same size on screen." +msgstr "按深度缩放对象,使其在屏幕上显示的大小始终相同。" + +msgid "" +"Use triplanar texture lookup for all texture lookups that would normally use " +"[code]UV[/code]." +msgstr "对所有通常会使用 [code]UV[/code] 的纹理查找使用三平面纹理查找。" + +msgid "" +"Use triplanar texture lookup for all texture lookups that would normally use " +"[code]UV2[/code]." +msgstr "对所有通常会使用 [code]UV2[/code] 的纹理查找使用三平面纹理查找。" + +msgid "" +"Use [code]UV2[/code] coordinates to look up from the [member ao_texture]." +msgstr "使用 [code]UV2[/code] 坐标从 [member ao_texture] 中查找。" + +msgid "" +"Use [code]UV2[/code] coordinates to look up from the [member " +"emission_texture]." +msgstr "使用 [code]UV2[/code] 坐标从 [member emission_texture] 中查找。" + +msgid "Disables receiving shadows from other objects." +msgstr "禁用从其他对象接收阴影。" + +msgid "Disables receiving ambient light." +msgstr "禁用接收环境光。" + +msgid "Enables the shadow to opacity feature." +msgstr "启用阴影到不透明度功能。" + +msgid "Represents the size of the [enum Flags] enum." +msgstr "代表 [enum Flags] 枚举的大小。" + +msgid "Default diffuse scattering algorithm." +msgstr "默认的漫反射散射算法。" + +msgid "Diffuse scattering ignores roughness." +msgstr "漫散射忽略了粗糙度。" + +msgid "Extends Lambert to cover more than 90 degrees when roughness increases." +msgstr "当粗糙度增加时,将 Lambert 延伸到 90 度以上。" + +msgid "Uses a hard cut for lighting, with smoothing affected by roughness." +msgstr "使用硬切口进行照明,平滑度受粗糙度影响。" + +msgid "Default specular blob." +msgstr "默认镜面反射斑点。" + +msgid "Toon blob which changes size based on roughness." +msgstr "基于粗糙度更改大小的 Toon 斑点。" + +msgid "Billboard mode is disabled." +msgstr "广告牌模式被禁用。" + +msgid "The object's Z axis will always face the camera." +msgstr "对象的 Z 轴将始终面向相机。" + +msgid "The object's X axis will always face the camera." +msgstr "对象的 X 轴将始终面向相机。" + +msgid "Used to read from the red channel of a texture." +msgstr "用来读取纹理的红色通道。" + +msgid "Used to read from the green channel of a texture." +msgstr "用来读取纹理的绿色通道。" + +msgid "Used to read from the blue channel of a texture." +msgstr "用来读取纹理的蓝色通道。" + +msgid "Used to read from the alpha channel of a texture." +msgstr "用来读取纹理的 Alpha 通道。" + +msgid "Adds the emission color to the color from the emission texture." +msgstr "将发射颜色添加到发射纹理的颜色上。" + +msgid "Multiplies the emission color by the color from the emission texture." +msgstr "将发射颜色乘以发射纹理的颜色。" + +msgid "Do not use distance fade." +msgstr "不要使用距离淡化。" + +msgid "" +"Smoothly fades the object out based on each pixel's distance from the camera " +"using the alpha channel." +msgstr "根据每个像素与相机的距离,使用 Alpha 通道平滑地淡化对象。" + +msgid "3×3 matrix datatype." +msgstr "3×3 矩阵数据类型。" + +msgid "" +"3×3 matrix used for 3D rotation and scale. Almost always used as an " +"orthogonal basis for a [Transform3D].\n" +"Contains 3 vector fields X, Y and Z as its columns, which are typically " +"interpreted as the local basis vectors of a transformation. For such use, it " +"is composed of a scaling and a rotation matrix, in that order (M = R.S).\n" +"Can also be accessed as array of 3D vectors. These vectors are normally " +"orthogonal to each other, but are not necessarily normalized (due to " +"scaling).\n" +"For more information, read the \"Matrices and transforms\" documentation " +"article." +msgstr "" +"用于 3D 旋转和缩放的 3×3 矩阵。几乎总是用作 [Transform3D] 的正交基。\n" +"包含 3 个向量字段 X、Y 和 Z 作为其列,它们通常被解释为变换的局部基向量。对于" +"这种用途,它由缩放和旋转矩阵组成,顺序为 (M = R.S)。\n" +"也可以作为 3D 向量数组访问。这些向量通常彼此正交,但不一定是归一化的(由于缩" +"放)。\n" +"更多信息请阅读文档文章《矩阵与变换》。" + +msgid "Matrices and transforms" +msgstr "矩阵与变换" + +msgid "Using 3D transforms" +msgstr "使用 3D 变换" + +msgid "Matrix Transform Demo" +msgstr "矩阵变换演示" + +msgid "2.5D Demo" +msgstr "2.5D 演示" + +msgid "Constructs a default-initialized [Basis] set to [constant IDENTITY]." +msgstr "构造默认初始化为 [constant IDENTITY] 的 [Basis] 。" + +msgid "Constructs a [Basis] as a copy of the given [Basis]." +msgstr "构造给定 [Basis] 的副本。" + +msgid "" +"Constructs a pure rotation basis matrix, rotated around the given [param " +"axis] by [param angle] (in radians). The axis must be a normalized vector." +msgstr "" +"构造纯旋转的基矩阵,围绕给定的轴 [param axis] 旋转 [param angle](单位为弧" +"度)。该轴必须是归一化向量。" + +msgid "Constructs a pure rotation basis matrix from the given quaternion." +msgstr "根据给定的四元数构造纯旋转的基矩阵。" + +msgid "Constructs a basis matrix from 3 axis vectors (matrix columns)." +msgstr "从 3 个轴向量(矩阵列)构造一个基矩阵。" + +msgid "" +"Returns the determinant of the basis matrix. If the basis is uniformly " +"scaled, its determinant is the square of the scale.\n" +"A negative determinant means the basis has a negative scale. A zero " +"determinant means the basis isn't invertible, and is usually considered " +"invalid." +msgstr "" +"返回基矩阵的行列式。如果基是均匀缩放的,它的行列式是缩放的平方。\n" +"负的行列式意味着基的比例是负的。负的行列式意味着基不可逆,通常被认为无效。" + +msgid "" +"Returns the basis's rotation in the form of a quaternion. See [method " +"get_euler] if you need Euler angles, but keep in mind quaternions should " +"generally be preferred to Euler angles." +msgstr "" +"以四元数的形式返回基的旋转。如果你需要欧拉角,请参阅 [method get_euler] 方" +"法,但通常首选四元数而不是欧拉角。" + +msgid "" +"Assuming that the matrix is the combination of a rotation and scaling, " +"return the absolute value of scaling factors along each axis." +msgstr "假设矩阵是旋转和缩放的组合,返回沿各轴缩放系数的绝对值。" + +msgid "Returns the inverse of the matrix." +msgstr "返回矩阵的逆值。" + +msgid "" +"Creates a Basis with a rotation such that the forward axis (-Z) points " +"towards the [param target] position.\n" +"The up axis (+Y) points as close to the [param up] vector as possible while " +"staying perpendicular to the forward axis. The resulting Basis is " +"orthonormalized. The [param target] and [param up] vectors cannot be zero, " +"and cannot be parallel to each other." +msgstr "" +"创建一个旋转的 Basis,使前向轴 (-Z)指向 [param target] 位置。\n" +"向上轴(+Y)指向尽可能靠近 [param up] 向量,同时保持垂直于前向轴。生成的 " +"Basis 是正交归一化的。[param target] 和 [param up] 向量不能为零,也不能相互平" +"行。" + +msgid "" +"Returns the orthonormalized version of the matrix (useful to call from time " +"to time to avoid rounding error for orthogonal matrices). This performs a " +"Gram-Schmidt orthonormalization on the basis of the matrix." +msgstr "" +"返回矩阵的正交归一化版本(对于正交矩阵来说,偶尔调用以避免四舍五入错误是有用" +"的)。这将在矩阵的基上执行 Gram-Schmidt 正交化。" + +msgid "" +"Introduce an additional scaling specified by the given 3D scaling factor." +msgstr "引入一个由给定的 3D 缩放因子指定的附加缩放。" + +msgid "" +"Assuming that the matrix is a proper rotation matrix, slerp performs a " +"spherical-linear interpolation with another rotation matrix." +msgstr "" +"假设该矩阵是一个合适的旋转矩阵,slerp 与另一个旋转矩阵进行球面直线插值。" + +msgid "Transposed dot product with the X axis of the matrix." +msgstr "与矩阵 X 轴的转置点积。" + +msgid "Transposed dot product with the Y axis of the matrix." +msgstr "与矩阵 Y 轴的转置点积。" + +msgid "Transposed dot product with the Z axis of the matrix." +msgstr "与矩阵 Z 轴的转置点积。" + +msgid "Returns the transposed version of the matrix." +msgstr "返回矩阵的转置版本。" + +msgid "" +"The basis matrix's X vector (column 0). Equivalent to array index [code]0[/" +"code]." +msgstr "基矩阵的 X 向量(第 0 列)。相当于数组索引 [code]0[/code]。" + +msgid "" +"The basis matrix's Y vector (column 1). Equivalent to array index [code]1[/" +"code]." +msgstr "基矩阵的 Y 向量(第 1 列)。相当于数组索引 [code]1[/code]。" + +msgid "" +"The basis matrix's Z vector (column 2). Equivalent to array index [code]2[/" +"code]." +msgstr "基矩阵的 Z 向量(第 2 列)。相当于数组索引 [code]2[/code]。" + +msgid "" +"The identity basis, with no rotation or scaling applied.\n" +"This is identical to calling [code]Basis()[/code] without any parameters. " +"This constant can be used to make your code clearer, and for consistency " +"with C#." +msgstr "" +"恒等基,未应用旋转或缩放。\n" +"这与不带任何参数调用 [code]Basis()[/code] 是一样的。这个常量可以用来让你的代" +"码更清晰,并与 C# 保持一致。" + +msgid "" +"The basis that will flip something along the X axis when used in a " +"transformation." +msgstr "在变换中使用时,会沿 X 轴翻转某物的基。" + +msgid "" +"The basis that will flip something along the Y axis when used in a " +"transformation." +msgstr "在变换中使用时,会沿 Y 轴翻转某物的基。" + +msgid "" +"The basis that will flip something along the Z axis when used in a " +"transformation." +msgstr "在变换中使用时,会沿 Z 轴翻转某物的基。" + +msgid "Transforms (multiplies) the [Vector3] by the given [Basis] matrix." +msgstr "使用给定的 [Basis] 矩阵变换(乘)该 [Vector3]。" + +msgid "Boolean matrix." +msgstr "布尔矩阵。" + +msgid "" +"A two-dimensional array of boolean values, can be used to efficiently store " +"a binary matrix (every matrix element takes only one bit) and query the " +"values using natural cartesian coordinates." +msgstr "" +"布尔值二维数组,可以用来高效存储二进制矩阵(每个矩阵元素只占一个比特位),并" +"使用自然的笛卡尔坐标查询数值。" + +msgid "" +"Creates a bitmap with the specified size, filled with [code]false[/code]." +msgstr "创建一个指定尺寸的位图,用 [code]false[/code] 填充。" + +msgid "Returns bitmap's value at the specified position." +msgstr "返回位图在指定位置的值。" + +msgid "Returns bitmap's dimensions." +msgstr "返回位图的尺寸。" + +msgid "Resizes the image to [param new_size]." +msgstr "将该图像的大小修改为 [param new_size]。" + +msgid "" +"Sets the bitmap's element at the specified position, to the specified value." +msgstr "将位图中指定位置的元素设置为指定值。" + +msgid "Sets a rectangular portion of the bitmap to the specified value." +msgstr "将位图的矩形部分设置为指定值。" + +msgid "Joint used with [Skeleton2D] to control and animate other nodes." +msgstr "与 [Skeleton2D] 一起使用的关节,用于控制其他节点并使其具有动画效果。" + +msgid "" +"Use a hierarchy of [code]Bone2D[/code] bound to a [Skeleton2D] to control, " +"and animate other [Node2D] nodes.\n" +"You can use [code]Bone2D[/code] and [code]Skeleton2D[/code] nodes to animate " +"2D meshes created with the Polygon 2D UV editor.\n" +"Each bone has a [member rest] transform that you can reset to with [method " +"apply_rest]. These rest poses are relative to the bone's parent.\n" +"If in the editor, you can set the rest pose of an entire skeleton using a " +"menu option, from the code, you need to iterate over the bones to set their " +"individual rest poses." +msgstr "" +"使用绑定到 [Skeleton2D] 的 [code]Bone2D[/code] 的层次结构来控制,并对其他 " +"[Node2D] 节点进行动画。\n" +"您可以使用 [code]Bone2D[/code] 和 [code]Skeleton2D[/code] 节点对使用 Polygon " +"2D UV 编辑器创建的 2D 网格进行动画制作。\n" +"每个骨骼都有一个 [member rest] 变换,你可以用 [method apply_rest] 来重置。这" +"些放松姿势是相对于骨的父节点而言的。\n" +"如果在编辑器中,你可以使用菜单选项设置整个骨架的放松姿势,从代码中,你需要遍" +"历骨骼来设置它们各自的放松姿势。" + +msgid "Stores the node's current transforms in [member rest]." +msgstr "将节点当前的变换存储在 [member rest] 中。" + +msgid "" +"Returns the node's index as part of the entire skeleton. See [Skeleton2D]." +msgstr "返回节点在整个骨架中的索引号。见 [Skeleton2D]。" + +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." +msgstr "" +"如果节点没有父节点,返回节点的 [member rest] [code]Transform2D[/code],或者返" +"回它相对于父节点的放松姿势。" + +msgid "Sets the length of the bone in the [code]Bone2D[/code] node." +msgstr "设置该 [code]Bone2D[/code] 节点中骨骼的长度。" + +msgid "" +"Rest transform of the bone. You can reset the node's transforms to this " +"value using [method apply_rest]." +msgstr "" +"骨骼的放松变换。您可以使用 [method apply_rest] 将节点的变换重置为这个值。" + +msgid "A node that will attach to a bone." +msgstr "会附着在骨骼上的节点。" + +msgid "The index of the attached bone." +msgstr "所附着骨骼的索引。" + +msgid "The name of the attached bone." +msgstr "所附着骨骼的名称。" + +msgid "Bone map for retargeting." +msgstr "用于重定向的骨骼映射。" + +msgid "" +"This class contains a hashmap that uses a list of bone names in " +"[SkeletonProfile] as key names.\n" +"By assigning the actual [Skeleton3D] bone name as the key value, it maps the " +"[Skeleton3D] to the [SkeletonProfile]." +msgstr "" +"这个类中有一个哈希表,使用 [SkeletonProfile] 中的骨骼名称作为键名。\n" +"将实际的 [Skeleton3D] 骨骼名赋为键值后,就会将 [Skeleton3D] 映射到 " +"[SkeletonProfile]。" + +msgid "Retargeting 3D Skeletons" +msgstr "重定向 3D 骨架" + +msgid "" +"Returns a skeleton bone name is mapped to [param profile_bone_name].\n" +"In the retargeting process, the returned bone name is the bone name of the " +"source skeleton." +msgstr "" +"返回与配置中的某个骨骼名称 [param profile_bone_name] 映射的骨架中的骨骼名" +"称。\n" +"在重定向过程中,设置的骨骼名称是源骨架中骨骼的名称。" + +msgid "" +"Maps a skeleton bone name to [param profile_bone_name].\n" +"In the retargeting process, the setting bone name is the bone name of the " +"source skeleton." +msgstr "" +"将骨架中的某个骨骼名称映射到配置中的骨骼名称 [param profile_bone_name]。\n" +"在重定向过程中,设置的骨骼名称是源骨架中骨骼的名称。" + +msgid "" +"A [SkeletonProfile] of the mapping target. Key names in the [BoneMap] are " +"synchronized with it." +msgstr "映射目标的 [SkeletonProfile]。[BoneMap] 中的键名与此同步。" + +msgid "Boolean built-in type." +msgstr "布尔型内置型。" + +msgid "" +"Boolean is a built-in type. There are two boolean values: [code]true[/code] " +"and [code]false[/code]. You can think of it as a switch with on or off (1 or " +"0) setting. Booleans are used in programming for logic in condition " +"statements, like [code]if[/code] statements.\n" +"Booleans can be directly used in [code]if[/code] statements. The code below " +"demonstrates this on the [code]if can_shoot:[/code] line. You don't need to " +"use [code]== true[/code], you only need [code]if can_shoot:[/code]. " +"Similarly, use [code]if not can_shoot:[/code] rather than [code]== false[/" +"code].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"\n" +"func shoot():\n" +" if _can_shoot:\n" +" pass # Perform shooting actions here.\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot)\n" +" {\n" +" // Perform shooting actions here.\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The following code will only create a bullet if both conditions are met: " +"action \"shoot\" is pressed and if [code]can_shoot[/code] is [code]true[/" +"code].\n" +"[b]Note:[/b] [code]Input.is_action_pressed(\"shoot\")[/code] is also a " +"boolean that is [code]true[/code] when \"shoot\" is pressed and [code]false[/" +"code] when \"shoot\" isn't pressed.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"\n" +"func shoot():\n" +" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n" +" create_bullet()\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n" +" {\n" +" CreateBullet();\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The following code will set [code]can_shoot[/code] to [code]false[/code] and " +"start a timer. This will prevent player from shooting until the timer runs " +"out. Next [code]can_shoot[/code] will be set to [code]true[/code] again " +"allowing player to shoot once again.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"@onready var _cool_down = $CoolDownTimer\n" +"\n" +"func shoot():\n" +" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n" +" create_bullet()\n" +" _can_shoot = false\n" +" _cool_down.start()\n" +"\n" +"func _on_cool_down_timer_timeout():\n" +" _can_shoot = true\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"private Timer _coolDown;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _coolDown = GetNode(\"CoolDownTimer\");\n" +"}\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n" +" {\n" +" CreateBullet();\n" +" _canShoot = false;\n" +" _coolDown.Start();\n" +" }\n" +"}\n" +"\n" +"public void OnCoolDownTimerTimeout()\n" +"{\n" +" _canShoot = true;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"布尔是内置类型。布尔值有两个:[code]true[/code] 和 [code]false[/code]。你可以" +"把它想象成开关,有开和关(1 和 0)两种状态。布尔型在编程中用于条件语句的逻" +"辑,如 [code]if[/code] 语句。\n" +"布尔型可以直接用于 [code]if[/code] 语句中。下面的代码在 [code]if can_shoot:[/" +"code] 那一行进行了演示。你不需要使用 [code]== true[/code],你只需要 [code]if " +"can_shoot:[/code]。同样的,请使用 [code]if not can_shoot:[/code] 而不是 " +"[code]== false[/code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"\n" +"func shoot():\n" +" if _can_shoot:\n" +" pass # 在此执行射击。\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot)\n" +" {\n" +" // 在此执行射击。\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"下面的代码只有在两个条件都满足的情况下才会创建子弹:动作“shoot”被按下,并且 " +"[code]can_shoot[/code] 为 [code]true[/code]。\n" +"[b]注意:[/b][code]Input.is_action_pressed(\"shoot\")[/code] 也是布尔值," +"当“shoot”被按下时为 [code]true[/code],当“shoot”没有被按下时为 [code]false[/" +"code]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"\n" +"func shoot():\n" +" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n" +" create_bullet()\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n" +" {\n" +" CreateBullet();\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"下面的代码会将 [code]can_shoot[/code] 设置为 [code]false[/code] 并启动计时" +"器。这样就会在计时器结束前阻止玩家进行射击。然后 [code]can_shoot[/code] 就会" +"再次被设为 [code]true[/code],再次允许玩家进行射击。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"@onready var _cool_down = $CoolDownTimer\n" +"\n" +"func shoot():\n" +" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n" +" create_bullet()\n" +" _can_shoot = false\n" +" _cool_down.start()\n" +"\n" +"func _on_cool_down_timer_timeout():\n" +" _can_shoot = true\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"private Timer _coolDown;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _coolDown = GetNode(\"CoolDownTimer\");\n" +"}\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n" +" {\n" +" CreateBullet();\n" +" _canShoot = false;\n" +" _coolDown.Start();\n" +" }\n" +"}\n" +"\n" +"public void OnCoolDownTimerTimeout()\n" +"{\n" +" _canShoot = true;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "Constructs a [bool] as a copy of the given [bool]." +msgstr "构造给定 [bool] 的副本。" + +msgid "" +"Cast a [float] value to a boolean value, this method will return " +"[code]false[/code] if [code]0.0[/code] is passed in, and [code]true[/code] " +"for all other floats." +msgstr "" +"将 [float] 值转换为布尔值,如果传入 [code]0.0[/code],本方法将返回 " +"[code]false[/code],对于其他所有的浮点数,本方法将返回 [code]true[/code]。" + +msgid "" +"Cast an [int] value to a boolean value, this method will return [code]false[/" +"code] if [code]0[/code] is passed in, and [code]true[/code] for all other " +"ints." +msgstr "" +"将 [int] 值转换为布尔值,传入 [code]0[/code] 时,本方法将返回 [code]false[/" +"code],对于所有其他整数,本方法将返回 [code]true[/code]。" + +msgid "Base class for box containers." +msgstr "盒式容器的基类。" + +msgid "" +"Arranges child [Control] nodes vertically or horizontally, and rearranges " +"them automatically when their minimum size changes." +msgstr "" +"将子级 [Control] 节点垂直或水平排列,在它们的最小尺寸发生变化时会自动重新排" +"列。" + +msgid "" +"Adds a [Control] node to the box as a spacer. If [param begin] is " +"[code]true[/code], it will insert the [Control] node in front of all other " +"children." +msgstr "" +"添加 [Control] 节点作为间隔。如果 [param begin] 为 [code]true[/code],则会将" +"该 [Control] 节点添加到所有其他节点之前。" + +msgid "" +"The alignment of the container's children (must be one of [constant " +"ALIGNMENT_BEGIN], [constant ALIGNMENT_CENTER], or [constant ALIGNMENT_END])." +msgstr "" +"该容器子节点的对齐方式(必须是 [constant ALIGNMENT_BEGIN]、[constant " +"ALIGNMENT_CENTER]、[constant ALIGNMENT_END] 之一)。" + +msgid "" +"If [code]true[/code], the [BoxContainer] will arrange its children " +"vertically, rather than horizontally.\n" +"Can't be changed when using [HBoxContainer] and [VBoxContainer]." +msgstr "" +"如果为 [code]true[/code],则该 [BoxContainer] 会将子节点垂直排列,否则会水平" +"排列。\n" +"使用 [HBoxContainer] 和 [VBoxContainer] 时无法改变。" + +msgid "" +"The child controls will be arranged at the beginning of the container, i.e. " +"top if orientation is vertical, left if orientation is horizontal (right for " +"RTL layout)." +msgstr "" +"子控件会被排列在该容器的开头,如果是垂直朝向则为顶部,如果是水平朝向则为左侧" +"(RTL 布局时为右侧)。" + +msgid "The child controls will be centered in the container." +msgstr "子控件会在该容器里居中。" + +msgid "" +"The child controls will be arranged at the end of the container, i.e. bottom " +"if orientation is vertical, right if orientation is horizontal (left for RTL " +"layout)." +msgstr "" +"子控件会被排列在该容器的末尾,如果是垂直朝向则为底部,如果是水平朝向则为右侧" +"(RTL 布局时为左侧)。" + +msgid "The space between the [BoxContainer]'s elements, in pixels." +msgstr "[BoxContainer] 元素之间的距离,单位为像素。" + +msgid "Generate an axis-aligned box [PrimitiveMesh]." +msgstr "生成轴对齐盒 [PrimitiveMesh]。" + +msgid "Number of extra edge loops inserted along the Z axis." +msgstr "沿 Z 轴插入的额外边缘环的数量。" + +msgid "Number of extra edge loops inserted along the Y axis." +msgstr "沿 Y 轴插入的额外边缘环的数量。" + +msgid "Number of extra edge loops inserted along the X axis." +msgstr "沿 X 轴插入的额外边缘环的数量。" + +msgid "3D Kinematic Character Demo" +msgstr "3D 动力学角色演示" + +msgid "Standard themed Button." +msgstr "标准主题按钮。" + +msgid "" +"Button is the standard themed button. It can contain text and an icon, and " +"will display them according to the current [Theme].\n" +"[b]Example of creating a button and assigning an action when pressed by code:" +"[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var button = Button.new()\n" +" button.text = \"Click me\"\n" +" button.pressed.connect(self._button_pressed)\n" +" add_child(button)\n" +"\n" +"func _button_pressed():\n" +" print(\"Hello world!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var button = new Button();\n" +" button.Text = \"Click me\";\n" +" button.Pressed += ButtonPressed;\n" +" AddChild(button);\n" +"}\n" +"\n" +"private void ButtonPressed()\n" +"{\n" +" GD.Print(\"Hello world!\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Buttons (like all Control nodes) can also be created in the editor, but some " +"situations may require creating them from code.\n" +"See also [BaseButton] which contains common properties and methods " +"associated with this node.\n" +"[b]Note:[/b] Buttons do not interpret touch input and therefore don't " +"support multitouch, since mouse emulation can only press one button at a " +"given time. Use [TouchScreenButton] for buttons that trigger gameplay " +"movement or actions, as [TouchScreenButton] supports multitouch." +msgstr "" +"Button 是标准的主题按钮。它可以包含文字和图标,并根据当前的 [Theme] 显示。\n" +"[b]通过代码创建一个按钮并指定一个在按下时的动作的例子:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var button = Button.new()\n" +" button.text = \"Click me\"\n" +" button.pressed.connect(self._button_pressed)\n" +" add_child(button)\n" +"\n" +"func _button_pressed():\n" +" print(\"Hello world!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var button = new Button();\n" +" button.Text = \"Click me\";\n" +" button.Pressed += ButtonPressed;\n" +" AddChild(button);\n" +"}\n" +"\n" +"private void ButtonPressed()\n" +"{\n" +" GD.Print(\"Hello world!\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"按钮(与所有控件节点一样)也可以在编辑器中创建,但某些情况下可能需要从代码中" +"创建它们。\n" +"另请参阅 [BaseButton],其中包含与此节点相关联的通用属性和方法。\n" +"[b]注意:[/b]按钮不处理触摸输入,因此不支持多点触控,因为模拟鼠标在给定时间只" +"能按下一个按钮。将 [TouchScreenButton] 用于触发游戏移动或动作的按钮,因为 " +"[TouchScreenButton] 支持多点触控。" + +msgid "OS Test Demo" +msgstr "操作系统测试演示" + +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." +msgstr "" +"当此属性被启用时,过大而无法容纳按钮的文本会被剪掉,当被禁用时,按钮将始终有" +"足够的宽度来容纳文本。" + +msgid "" +"When enabled, the button's icon will expand/shrink to fit the button's size " +"while keeping its aspect." +msgstr "启用后,按钮的图标将展开/收缩以适应按钮的大小,同时保持其外观。" + +msgid "Flat buttons don't display decoration." +msgstr "平面按钮不显示装饰。" + +msgid "" +"Language code used for line-breaking and text shaping algorithms, if left " +"empty current locale is used instead." +msgstr "语言代码,用于断行和文本塑形算法,如果留空则使用当前区域设置。" + +msgid "The button's text that will be displayed inside the button's area." +msgstr "该按钮的文本,将显示在按钮的区域内。" + +msgid "Base text writing direction." +msgstr "基础文本书写方向。" + +msgid "Default text [Color] of the [Button]." +msgstr "该 [Button] 的默认文本 [Color]。" + +msgid "Text [Color] used when the [Button] is disabled." +msgstr "该 [Button] 处于禁用状态时,使用的文本 [Color]。" + +msgid "" +"Text [Color] used when the [Button] is focused. Only replaces the normal " +"text color of the button. Disabled, hovered, and pressed states take " +"precedence over this color." +msgstr "" +"该 [Button] 处于聚焦状态时,使用的文本 [Color]。只替换该按钮的正常文本颜色。" +"禁用、悬停、按下状态优先于这个颜色。" + +msgid "Text [Color] used when the [Button] is being hovered." +msgstr "该 [Button] 处于悬停状态时,使用的文本 [Color]。" + +msgid "Text [Color] used when the [Button] is being hovered and pressed." +msgstr "该 [Button] 处于悬停并按下状态时,使用的文本 [Color]。" + +msgid "The tint of text outline of the [Button]." +msgstr "该 [Button] 的文本轮廓的着色。" + +msgid "Text [Color] used when the [Button] is being pressed." +msgstr "该 [Button] 处于按下状态时,使用的文本 [Color] 。" + +msgid "Icon modulate [Color] used when the [Button] is disabled." +msgstr "该 [Button] 处于禁用状态时,使用的图标调制 [Color]。" + +msgid "" +"Icon modulate [Color] used when the [Button] is focused. Only replaces the " +"normal modulate color of the button. Disabled, hovered, and pressed states " +"take precedence over this color." +msgstr "" +"该 [Button] 处于聚焦状态时,使用的图标调制 [Color]。仅替换该按钮的正常调制颜" +"色。禁用、悬停和按下状态优先于这个颜色。" + +msgid "Icon modulate [Color] used when the [Button] is being hovered." +msgstr "该 [Button] 处于悬停状态时,使用的图标调制[Color]。" + +msgid "" +"Icon modulate [Color] used when the [Button] is being hovered and pressed." +msgstr "该 [Button] 处于悬停并按下按下状态时,使用的图标调制 [Color]。" + +msgid "Default icon modulate [Color] of the [Button]." +msgstr "该 [Button] 的默认图标调制 [Color]。" + +msgid "Icon modulate [Color] used when the [Button] is being pressed." +msgstr "该 [Button] 处于按下状态时,使用的图标调制 [Color]。" + +msgid "" +"The horizontal space between [Button]'s icon and text. Negative values will " +"be treated as [code]0[/code] when used." +msgstr "" +"[Button] 的图标和文本之间的水平间距。使用时会将负值当作 [code]0[/code]。" + +msgid "[Font] of the [Button]'s text." +msgstr "该 [Button] 文本的 [Font]。" + +msgid "Font size of the [Button]'s text." +msgstr "该 [Button] 文本的字体大小。" + +msgid "[StyleBox] used when the [Button] is disabled." +msgstr "该 [Button] 处于禁用状态时使用的 [StyleBox]。" + +msgid "" +"[StyleBox] used when the [Button] is focused. The [code]focus[/code] " +"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially " +"transparent [StyleBox] should be used to ensure the base [StyleBox] remains " +"visible. A [StyleBox] that represents an outline or an underline works well " +"for this purpose. To disable the focus visual effect, assign a " +"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will " +"harm keyboard/controller navigation usability, so this is not recommended " +"for accessibility reasons." +msgstr "" +"该 [Button] 处于聚焦状态时使用的 [StyleBox]。[code]focus[/code] [StyleBox] 显" +"示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 [StyleBox],确保基础 " +"[StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以很好地实现这个目的。要" +"禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注意,禁用聚焦的视觉效果会" +"影响使用键盘/手柄进行导航的可用性,所以出于可访问性的原因,不建议这样做。" + +msgid "[StyleBox] used when the [Button] is being hovered." +msgstr "该 [Button] 处于悬停状态时使用的 [StyleBox]。" + +msgid "Default [StyleBox] for the [Button]." +msgstr "该 [Button] 的默认 [StyleBox]。" + +msgid "[StyleBox] used when the [Button] is being pressed." +msgstr "该 [Button] 处于按下状态时使用的 [StyleBox]。" + +msgid "Group of Buttons." +msgstr "按钮组。" + +msgid "Returns the current pressed button." +msgstr "返回当前按下的按钮。" + +msgid "Emitted when one of the buttons of the group is pressed." +msgstr "当该组中的一个按钮被按下时触发。" + +msgid "" +"Built-in type representing a method in an object instance or a standalone " +"function." +msgstr "内置类型,代表对象实例中的某个方法,或者某个独立函数。" + +msgid "" +"[Callable] is a built-in [Variant] type that represents a function. It can " +"either be a method within an [Object] instance, or a standalone function not " +"related to any object, like a lambda function. Like all [Variant] types, it " +"can be stored in variables and passed to other functions. It is most " +"commonly used for signal callbacks.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func print_args(arg1, arg2, arg3 = \"\"):\n" +" prints(arg1, arg2, arg3)\n" +"\n" +"func test():\n" +" var callable = Callable(self, \"print_args\")\n" +" callable.call(\"hello\", \"world\") # Prints \"hello world \".\n" +" callable.call(Vector2.UP, 42, callable) # Prints \"(0, -1) 42 Node(node." +"gd)::print_args\".\n" +" callable.call(\"invalid\") # Invalid call, should have at least 2 " +"arguments.\n" +"[/gdscript]\n" +"[csharp]\n" +"// Default parameter values are not supported.\n" +"public void PrintArgs(Variant arg1, Variant arg2, Variant arg3 = default)\n" +"{\n" +" GD.PrintS(arg1, arg2, arg3);\n" +"}\n" +"\n" +"public void Test()\n" +"{\n" +" // Invalid calls fail silently.\n" +" Callable callable = new Callable(this, MethodName.PrintArgs);\n" +" callable.Call(\"hello\", \"world\"); // Default parameter values are not " +"supported, should have 3 arguments.\n" +" callable.Call(Vector2.Up, 42, callable); // Prints \"(0, -1) 42 " +"Node(Node.cs)::PrintArgs\".\n" +" callable.Call(\"invalid\"); // Invalid call, should have 3 arguments.\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In GDScript, it's possible to create lambda functions within a method. " +"Lambda functions are custom callables that are not associated with an " +"[Object] instance. Optionally, lambda functions can also be named. The name " +"will be displayed in the debugger, or when calling [method get_method].\n" +"[codeblock]\n" +"func _init():\n" +" var my_lambda = func (message):\n" +" print(message)\n" +"\n" +" # Prints Hello everyone!\n" +" my_lambda.call(\"Hello everyone!\")\n" +"\n" +" # Prints \"Attack!\", when the button_pressed signal is emitted.\n" +" button_pressed.connect(func(): print(\"Attack!\"))\n" +"[/codeblock]" +msgstr "" +"可调用体 [Callable] 是内置的 [Variant] 类型,代表某个函数。可以是 [Object] 实" +"例中的某个方法,也可以是与对象无关的独立函数,比如 lambda 函数。和所有 " +"[Variant] 类型一样可以保存在变量里,传递给其他函数。最常用于信号回调。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func print_args(arg1, arg2, arg3 = \"\"):\n" +" prints(arg1, arg2, arg3)\n" +"\n" +"func test():\n" +" var callable = Callable(self, \"print_args\")\n" +" callable.call(\"hello\", \"world\") # 输出 \"hello world \".\n" +" callable.call(Vector2.UP, 42, callable) # 输出 \"(0, -1) 42 Node(node." +"gd)::print_args\".\n" +" callable.call(\"invalid\") # 无效调用,应当至少有 2 个参数。\n" +"[/gdscript]\n" +"[csharp]\n" +"// 不支持参数默认值。\n" +"public void PrintArgs(Variant arg1, Variant arg2, Variant arg3 = default)\n" +"{\n" +" GD.PrintS(arg1, arg2, arg3);\n" +"}\n" +"\n" +"public void Test()\n" +"{\n" +" // Invalid calls fail silently.\n" +" Callable callable = new Callable(this, MethodName.PrintArgs);\n" +" callable.Call(\"hello\", \"world\"); // 不支持参数默认值,应当有 3 个参" +"数。\n" +" callable.Call(Vector2.Up, 42, callable); // 输出 \"(0, -1) 42 Node(Node." +"cs)::PrintArgs\".\n" +" callable.Call(\"invalid\"); // 无效调用,应当有 3 个参数。\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"GDScript 中可以在方法里创建 lambda 函数。Lambda 函数是自定义的可调用体,不与 " +"[Object] 实例关联。也可以为 Lambda 函数命名。该名称会显示在调试器中,也会在 " +"[method get_method] 中使用。\n" +"[codeblock]\n" +"func _init():\n" +" var my_lambda = func (message):\n" +" print(message)\n" +"\n" +" # 输出 大家好呀!\n" +" my_lambda.call(\"大家好呀!\")\n" +"\n" +" # 发出 button_pressed 信号时输出 \"全军出击!\"。\n" +" button_pressed.connect(func(): print(\"全军出击!\"))\n" +"[/codeblock]" + +msgid "Constructs an empty [Callable], with no object nor method bound." +msgstr "构造空的 [Callable],没有绑定对象和方法。" + +msgid "Constructs a [Callable] as a copy of the given [Callable]." +msgstr "构造给定 [Callable] 的副本。" + +msgid "" +"Creates a new [Callable] for the method named [param method] in the " +"specified [param object]." +msgstr "" +"创建新的 [Callable],使用指定对象 [param object] 中名为 [param method] 的方" +"法。" + +msgid "" +"Returns a copy of this [Callable] with one or more arguments bound. When " +"called, the bound arguments are passed [i]after[/i] the arguments supplied " +"by [method call]." +msgstr "" +"返回该 [Callable] 的副本,绑定其中的一个或多个参数。调用时,被绑定的参数在提" +"供给 [method call] 的参数[i]之后[/i]传递。" + +msgid "" +"Returns a copy of this [Callable] with one or more arguments bound, reading " +"them from an array. When called, the bound arguments are passed [i]after[/i] " +"the arguments supplied by [method call]." +msgstr "" +"返回该 [Callable] 的副本,绑定其中的一个或多个参数,参数从数组中读取。调用" +"时,被绑定的参数在提供给 [method call] 的参数[i]之后[/i]传递。" + +msgid "" +"Calls the method represented by this [Callable]. Arguments can be passed and " +"should match the method's signature." +msgstr "" +"调用该 [Callable] 所代表的方法。可以传递参数,必须与该方法的签名相匹配。" + +msgid "" +"Calls the method represented by this [Callable] in deferred mode, i.e. " +"during the idle frame. Arguments can be passed and should match the method's " +"signature.\n" +"[codeblock]\n" +"func _ready():\n" +" grab_focus.call_deferred()\n" +"[/codeblock]" +msgstr "" +"使用延迟模式调用该 [Callable] 所代表的方法,即在空闲帧中调用。可以传递参数," +"必须与该方法的签名相匹配。\n" +"[codeblock]\n" +"func _ready():\n" +" grab_focus.call_deferred()\n" +"[/codeblock]" + +msgid "" +"Calls the method represented by this [Callable]. Unlike [method call], this " +"method expects all arguments to be contained inside the [param arguments] " +"[Array]." +msgstr "" +"调用该 [Callable] 所代表的方法。与 [method call] 不同,这个方法需要所有参数都" +"放在 [param arguments] [Array] 之中。" + +msgid "" +"Return the bound arguments (as long as [method get_bound_arguments_count] is " +"greater than zero), or empty (if [method get_bound_arguments_count] is less " +"than or equal to zero)." +msgstr "" +"返回绑定的参数(只要 [method get_bound_arguments_count] 大于零)或者空数组" +"(如果 [method get_bound_arguments_count] 小于等于零)。" + +msgid "" +"Returns the total amount of arguments bound (or unbound) via successive " +"[method bind] or [method unbind] calls. If the amount of arguments unbound " +"is greater than the ones bound, this function returns a value less than zero." +msgstr "" +"返回通过成功调用 [method bind] 或 [method unbind] 绑定(或解绑)参数的总数。" +"如果解绑参数的总数比绑定参数大,则这个函数的返回值小于零。" + +msgid "" +"Returns the name of the method represented by this [Callable]. If the " +"callable is a lambda function, returns the function's name." +msgstr "" +"返回该 [Callable] 所代表的方法的名称。如果该可调用体是 lambda 函数,则返回该" +"函数的名称。" + +msgid "Returns the object on which this [Callable] is called." +msgstr "返回该 [Callable] 所调用的对象。" + +msgid "" +"Returns the ID of this [Callable]'s object (see [method Object." +"get_instance_id])." +msgstr "返回该 [Callable] 中对象的 ID(见 [method Object.get_instance_id])。" + +msgid "" +"Returns the 32-bit hash value of this [Callable]'s object.\n" +"[b]Note:[/b] [Callable]s with equal content will always produce identical " +"hash values. However, the reverse is not true. Returning identical hash " +"values does [i]not[/i] imply the callables are equal, because different " +"callables can have identical hash values due to hash collisions. The engine " +"uses a 32-bit hash algorithm for [method hash]." +msgstr "" +"返回该 [Callable] 对象的 32 位哈希值。\n" +"[b]注意:[/b]内容相同的 [Callable] 哈希值始终相同。反之则不然,返回的哈希值相" +"同[i]并不[/i]意味着可调用体相等,因为不同的可调用体可能由于哈希冲突而具有相同" +"的哈希值。引擎在 [method hash] 中使用 32 位哈希算法。" + +msgid "" +"Returns [code]true[/code] if this [Callable] is a custom callable. Custom " +"callables are created from [method bind] or [method unbind]. In GDScript, " +"lambda functions are also custom callables." +msgstr "" +"如果该 [Callable] 为自定义可调用体,则返回 [code]true[/code]。自定义可调用体" +"是由 [method bind] 或 [method unbind] 创建的。在 GDScript 中,lambda 函数也是" +"自定义可调用体。" + +msgid "" +"Returns [code]true[/code] if this [Callable] has no target to call the " +"method on." +msgstr "如果该 [Callable] 没有调用方法的目标,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this [Callable] is a standard callable. This " +"method is the opposite of [method is_custom]. Returns [code]false[/code] if " +"this callable is a lambda function." +msgstr "" +"如果该 [Callable] 为标准可调用体,则返回 [code]true[/code]。这个方法与 " +"[method is_custom] 相对。如果该可调用体为 lambda 函数,则返回 [code]false[/" +"code]。" + +msgid "" +"Returns [code]true[/code] if the callable's object exists and has a valid " +"method name assigned, or is a custom callable." +msgstr "" +"如果该可调用体的对象存在,且分配了有效的方法名,或者为自定义可调用体,则返回 " +"[code]true[/code]。" + +msgid "" +"Perform an RPC (Remote Procedure Call). This is used for multiplayer and is " +"normally not available, unless the function being called has been marked as " +"[i]RPC[/i]. Calling this method on unsupported functions will result in an " +"error. See [method Node.rpc]." +msgstr "" +"执行 RPC(Remote Procedure Call,远程过程调用)。用于多人游戏,一般不可用,除" +"非所调用的函数有 [i]RPC[/i] 标记。在不支持的方法上调用该方法会导致出错。见 " +"[method Node.rpc]。" + +msgid "" +"Perform an RPC (Remote Procedure Call) on a specific peer ID (see " +"multiplayer documentation for reference). This is used for multiplayer and " +"is normally not available unless the function being called has been marked " +"as [i]RPC[/i]. Calling this method on unsupported functions will result in " +"an error. See [method Node.rpc_id]." +msgstr "" +"针对特定的对等体 ID(请参阅多人游戏文档)执行 RPC(Remote Procedure Call,远" +"程过程调用)。用于多人游戏,一般不可用,除非所调用的函数有 [i]RPC[/i] 标记。" +"在不支持的方法上调用该方法会导致出错。见 [method Node.rpc_id]。" + +msgid "" +"Returns a copy of this [Callable] with the arguments unbound, as defined by " +"[param argcount]. Calling the returned [Callable] will call the method " +"without the extra arguments that are supplied in the [Callable] on which you " +"are calling this method." +msgstr "" +"返回该 [Callable] 的副本,解绑若干个参数,个数由 [param argcount] 定义。调用" +"返回的 [Callable] 时,会去除所提供参数中的额外参数,再对原 [Callable] 的方法" +"进行调用。" + +msgid "Returns [code]true[/code] if both [Callable]s invoke different targets." +msgstr "如果两个 [Callable] 调用的目标不同,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if both [Callable]s invoke the same custom target." +msgstr "如果两个 [Callable] 调用的自定义目标相同,则返回 [code]true[/code]。" + +msgid "Calls the specified method after optional delay." +msgstr "在可选的延迟之后调用指定的方法。" + +msgid "" +"Makes the callback call delayed by given time in seconds.\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_callback(queue_free).set_delay(2) #this will call queue_free() " +"after 2 seconds\n" +"[/codeblock]" +msgstr "" +"让该回调延迟给定的时间,单位为秒。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_callback(queue_free).set_delay(2) # 会在 2 秒后调用 " +"queue_free()\n" +"[/codeblock]" + +msgid "Camera node for 2D scenes." +msgstr "2D 场景的相机节点。" + +msgid "" +"Camera node for 2D scenes. It forces the screen (current layer) to scroll " +"following this node. This makes it easier (and faster) to program scrollable " +"scenes than manually changing the position of [CanvasItem]-based nodes.\n" +"Cameras register themselves in the nearest [Viewport] node (when ascending " +"the tree). Only one camera can be active per viewport. If no viewport is " +"available ascending the tree, the camera will register in the global " +"viewport.\n" +"This node is intended to be a simple helper to get things going quickly, but " +"more functionality may be desired to change how the camera works. To make " +"your own custom camera node, inherit it from [Node2D] and change the " +"transform of the canvas by setting [member Viewport.canvas_transform] in " +"[Viewport] (you can obtain the current [Viewport] by using [method Node." +"get_viewport]).\n" +"Note that the [Camera2D] node's [code]position[/code] doesn't represent the " +"actual position of the screen, which may differ due to applied smoothing or " +"limits. You can use [method get_screen_center_position] to get the real " +"position." +msgstr "" +"用于 2D 场景的相机节点。它强制屏幕(当前层)跟随该节点滚动。与手动改变基于 " +"[CanvasItem] 节点的坐标相比,这使得对可滚动场景进行编程更加容易和快捷。\n" +"相机会在最近的 [Viewport](在上层树时)节点中注册自己。每个视口只能激活一个相" +"机。如果树上没有可用的视口,相机将在全局视口中注册。\n" +"这个节点旨在成为简单的辅助工具,让事情便捷,但可能需要更多的功能来改变相机的" +"工作方式。要制作自定义相机节点,则从 [Node2D] 继承,并通过设置 [Viewport] 中" +"的 [member Viewport.canvas_transform] 来改变画布的变换(你可以通过使用 " +"[method Node.get_viewport] 获得当前的 [Viewport])。\n" +"请注意,[Camera2D] 节点的 [code]position[/code] 并不代表屏幕的实际位置,这可" +"能会因应用的平滑或限制而有所不同。可以使用 [method " +"get_screen_center_position] 获取真实位置。" + +msgid "2D Isometric Demo" +msgstr "2D 等轴演示" + +msgid "2D HDR Demo" +msgstr "2D HDR 演示" + +msgid "Aligns the camera to the tracked node." +msgstr "将相机与跟踪的节点对齐。" + +msgid "Forces the camera to update scroll immediately." +msgstr "强制相机立即更新滚动。" + +msgid "" +"Returns the specified [enum Side]'s margin. See also [member " +"drag_bottom_margin], [member drag_top_margin], [member drag_left_margin], " +"and [member drag_right_margin]." +msgstr "" +"返回指定边 [enum Side] 的边距。另见 [member drag_bottom_margin]、[member " +"drag_top_margin]、[member drag_left_margin] 和 [member drag_right_margin]。" + +msgid "" +"Returns the camera limit for the specified [enum Side]. See also [member " +"limit_bottom], [member limit_top], [member limit_left], and [member " +"limit_right]." +msgstr "" +"返回指定边 [enum Side] 的相机极限。另见 [member limit_bottom]、[member " +"limit_top]、[member limit_left] 和 [member limit_right]。" + +msgid "The Camera2D's anchor point. See [enum AnchorMode] constants." +msgstr "Camera2D 的锚点。见 [enum AnchorMode] 常量。" + +msgid "" +"The custom [Viewport] node attached to the [Camera2D]. If [code]null[/code] " +"or not a [Viewport], uses the default viewport instead." +msgstr "" +"连接到 [Camera2D] 的自定义 [Viewport] 节点。如果为 [code]null[/code] 或者不" +"是 [Viewport],则使用默认的视口。" + +msgid "" +"If [code]true[/code], draws the camera's drag margin rectangle in the editor." +msgstr "如果为 [code]true[/code],在编辑器中绘制相机的拖动边距矩形。" + +msgid "" +"If [code]true[/code], draws the camera's limits rectangle in the editor." +msgstr "如果为 [code]true[/code],在编辑器中绘制相机的极限矩形。" + +msgid "" +"If [code]true[/code], draws the camera's screen rectangle in the editor." +msgstr "如果为 [code]true[/code],在编辑器中绘制相机的画面矩形。" + +msgid "" +"The camera's position is fixed so that the top-left corner is always at the " +"origin." +msgstr "相机的位置是固定的,所以左上角总是在原点。" + +msgid "" +"The camera's position takes into account vertical/horizontal offsets and the " +"screen size." +msgstr "相机的位置要考虑垂直/水平偏移和屏幕尺寸。" + +msgid "The camera updates with the [code]_physics_process[/code] callback." +msgstr "相机通过 [code]_physics_process[/code] 回调进行更新。" + +msgid "The camera updates with the [code]_process[/code] callback." +msgstr "相机通过 [code]_process[/code] 回调进行更新。" + +msgid "Camera node, displays from a point of view." +msgstr "相机节点,会从某个角度进行显示。" + +msgid "" +"[Camera3D] is a special node that displays what is visible from its current " +"location. Cameras register themselves in the nearest [Viewport] node (when " +"ascending the tree). Only one camera can be active per viewport. If no " +"viewport is available ascending the tree, the camera will register in the " +"global viewport. In other words, a camera just provides 3D display " +"capabilities to a [Viewport], and, without one, a scene registered in that " +"[Viewport] (or higher viewports) can't be displayed." +msgstr "" +"[Camera3D] 是一个特殊节点,用于显示从其当前位置可见的内容。相机在最近的 " +"[Viewport] 节点中注册自己(当树上行)。每个视口中只能有一个激活的相机。如果在" +"树上没有可用的视口,相机将在全局视口中注册。换句话说,相机只是用来为 " +"[Viewport] 提供 3D 显示能力的,如果没有,则在该 [Viewport](或更高层视口)中" +"注册的场景无法显示。" + +msgid "" +"Returns the camera's frustum planes in world space units as an array of " +"[Plane]s in the following order: near, far, left, top, right, bottom. Not to " +"be confused with [member frustum_offset]." +msgstr "" +"以世界空间单位将相机的视锥平面作为 [Plane] 数组按以下顺序返回:near、far、" +"left、top、right、bottom。不要与 [member frustum_offset] 混淆。" + +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." +msgstr "" +"使此相机成为 [Viewport] 的当前相机(见类的说明)。如果相机节点在场景树之外," +"一旦添加,它将尝试成为当前相机。" + +msgid "" +"Returns a normal vector from the screen point location directed along the " +"camera. Orthogonal cameras are normalized. Perspective cameras account for " +"perspective, screen width/height, etc." +msgstr "" +"返回从屏幕点位置沿相机方向的法向量。正交相机会被归一化。透视相机考虑到透视、" +"屏幕宽度/高度等因素。" + +msgid "" +"Returns a normal vector in world space, that is the result of projecting a " +"point on the [Viewport] rectangle by the inverse camera projection. This is " +"useful for casting rays in the form of (origin, normal) for object " +"intersection or picking." +msgstr "" +"返回世界空间中的法线向量,即通过逆相机投影在 [Viewport] 矩形上投影一个点的结" +"果。这对于以原点、法线,投射光线形式用于对象相交或拾取很有用。" + +msgid "" +"Returns a 3D position in world space, that is the result of projecting a " +"point on the [Viewport] rectangle by the inverse camera projection. This is " +"useful for casting rays in the form of (origin, normal) for object " +"intersection or picking." +msgstr "" +"返回世界空间中的 3D 坐标,即通过逆相机投影在 [Viewport] 矩形上投影一个点的结" +"果。这对于以原点、法线,投射光线形式用于对象相交或拾取很有用。" + +msgid "The [CameraAttributes] to use for this camera." +msgstr "该相机所使用的 [CameraAttributes]。" + +msgid "" +"The culling mask that describes which 3D render layers are rendered by this " +"camera." +msgstr "描述此相机渲染哪些 3D 渲染层的剔除掩码。" + +msgid "The [Environment] to use for this camera." +msgstr "此相机要使用的 [Environment]。" + +msgid "" +"The distance to the far culling boundary for this camera relative to its " +"local Z axis." +msgstr "该相机相对于其本地Z轴的远裁边界的距离。" + +msgid "" +"The camera's frustum offset. This can be changed from the default to create " +"\"tilted frustum\" effects such as [url=https://zdoom.org/wiki/Y-shearing]Y-" +"shearing[/url].\n" +"[b]Note:[/b] Only effective if [member projection] is [constant " +"PROJECTION_FRUSTUM]." +msgstr "" +"相机的机身偏移。可以更改默认值,以创建“倾斜平截头体”效果,如 [url=https://" +"zdoom.org/wiki/Y-shearing]Y-shearing[/url]。\n" +"[b]注意:[/b]仅在 [member projection] 为 [constant PROJECTION_FRUSTUM] 时有" +"效。" + +msgid "The horizontal (X) offset of the camera viewport." +msgstr "相机视口的水平(X)偏移量。" + +msgid "" +"The axis to lock during [member fov]/[member size] adjustments. Can be " +"either [constant KEEP_WIDTH] or [constant KEEP_HEIGHT]." +msgstr "" +"在 [member fov]/[member size] 调整时要锁定的轴。可以是 [constant KEEP_WIDTH] " +"或 [constant KEEP_HEIGHT]。" + +msgid "" +"The distance to the near culling boundary for this camera relative to its " +"local Z axis." +msgstr "该相机相对于其本地Z轴到近裁边界的距离。" + +msgid "" +"The camera's projection mode. In [constant PROJECTION_PERSPECTIVE] mode, " +"objects' Z distance from the camera's local space scales their perceived " +"size." +msgstr "" +"相机的投影模式。在 [constant PROJECTION_PERSPECTIVE] 模式下,物体与相机局部空" +"间的Z距离会影响其感知的大小。" + +msgid "" +"The camera's size in meters measured as the diameter of the width or height, " +"depending on [member keep_aspect]. Only applicable in orthogonal and frustum " +"modes." +msgstr "" +"该相机的大小,单位为米,描述的是完整的宽度或者高度,取决于 [member " +"keep_aspect]。仅适用于正交和平截头体模式。" + +msgid "The vertical (Y) offset of the camera viewport." +msgstr "相机视口的垂直(Y)偏移量。" + +msgid "" +"Perspective projection. Objects on the screen becomes smaller when they are " +"far away." +msgstr "透视投影。物体距离相机屏幕越远显示就越小。" + +msgid "" +"Orthogonal projection, also known as orthographic projection. Objects remain " +"the same size on the screen no matter how far away they are." +msgstr "正交投影,又称正交投影。物体无论距离多远,在屏幕上都保持相同的大小。" + +msgid "" +"Frustum projection. This mode allows adjusting [member frustum_offset] to " +"create \"tilted frustum\" effects." +msgstr "" +"Frustum 投影。通过该模式可以调整 [member frustum_offset] 来创建“tilted " +"frustum”效果。" + +msgid "" +"Preserves the horizontal aspect ratio; also known as Vert- scaling. This is " +"usually the best option for projects running in portrait mode, as taller " +"aspect ratios will benefit from a wider vertical FOV." +msgstr "" +"保留水平长宽比,也称为 Vert- 缩放。这通常是在纵向模式下运行的项目的最佳选择," +"因为较高的纵横比将从更宽的垂直视场中受益。" + +msgid "" +"Preserves the vertical aspect ratio; also known as Hor+ scaling. This is " +"usually the best option for projects running in landscape mode, as wider " +"aspect ratios will automatically benefit from a wider horizontal FOV." +msgstr "" +"保留垂直长宽比,也称为 Hor+ 缩放。这通常是在横向模式下运行的项目的最佳选择," +"因为较宽的纵横比会自动从较宽的水平视场中受益。" + +msgid "" +"Disables [url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/" +"url] simulation (default)." +msgstr "" +"禁用[url=https://en.wikipedia.org/wiki/Doppler_effect]多普勒效应[/url]模拟" +"(默认)。" + +msgid "" +"Simulate [url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/" +"url] by tracking positions of objects that are changed in [code]_process[/" +"code]. Changes in the relative velocity of this camera compared to those " +"objects affect how audio is perceived (changing the audio's [member " +"AudioStreamPlayer3D.pitch_scale])." +msgstr "" +"通过跟踪在 [code]_process[/code] 中改变的物体位置来模拟[url=https://zh." +"wikipedia.org/wiki/%E5%A4%9A%E6%99%AE%E5%8B%92%E6%95%88%E5%BA%94]多普勒效应[/" +"url]。与这些物体相比,该相机的相对速度的变化会影响音频的感知方式(改变音频的 " +"[member AudioStreamPlayer3D.pitch_scale])。" + +msgid "" +"Simulate [url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/" +"url] by tracking positions of objects that are changed in " +"[code]_physics_process[/code]. Changes in the relative velocity of this " +"camera compared to those objects affect how audio is perceived (changing the " +"audio's [member AudioStreamPlayer3D.pitch_scale])." +msgstr "" +"通过跟踪在 [code]_process[/code] 中改变的物体位置来模拟[url=https://zh." +"wikipedia.org/wiki/%E5%A4%9A%E6%99%AE%E5%8B%92%E6%95%88%E5%BA%94]多普勒效应[/" +"url]。与这些物体相比,该相机的相对速度的变化会影响音频的感知方式(改变音频的 " +"[member AudioStreamPlayer3D.pitch_scale])。" + +msgid "Parent class for camera settings." +msgstr "相机设置的父类。" + +msgid "" +"If [code]true[/code], enables the tonemapping auto exposure mode of the " +"scene renderer. If [code]true[/code], the renderer will automatically " +"determine the exposure setting to adapt to the scene's illumination and the " +"observed light." +msgstr "" +"如果为 [code]true[/code],启用场景渲染器的色调映射自动曝光模式。如果为 " +"[code]true[/code],渲染器将自动确定曝光设置,以适应场景的照明和观察到的光线。" + +msgid "" +"The scale of the auto exposure effect. Affects the intensity of auto " +"exposure." +msgstr "自动曝光效果的比例。影响自动曝光的强度。" + +msgid "" +"The speed of the auto exposure effect. Affects the time needed for the " +"camera to perform auto exposure." +msgstr "自动曝光效果的速度。影响相机执行自动曝光所需的时间。" + +msgid "Physically-based camera settings." +msgstr "基于物理的相机设置。" + +msgid "" +"A camera feed gives you access to a single physical camera attached to your " +"device." +msgstr "通过相机源,您可以访问连接到设备的单个物理相机。" + +msgid "" +"A camera feed gives you access to a single physical camera attached to your " +"device. When enabled, Godot will start capturing frames from the camera " +"which can then be used. See also [CameraServer].\n" +"[b]Note:[/b] Many cameras will return YCbCr images which are split into two " +"textures and need to be combined in a shader. Godot does this automatically " +"for you if you set the environment to show the camera image in the " +"background." +msgstr "" +"通过相机源,你可以访问连接到设备的单个物理相机。启用后,Godot 将开始从相机捕" +"获帧,然后使用。另请参阅 [CameraServer]。\n" +"[b]注意:[/b]很多相机会返回 YCbCr 图像,这些图像被分成两个纹理,需要在着色器" +"中组合。如果你将环境设置为在背景中显示相机图像,Godot 会自动为将执行此操作。" + +msgid "Returns the unique ID for this feed." +msgstr "返回该源的唯一ID。" + +msgid "Returns the camera's name." +msgstr "返回相机的名称。" + +msgid "Returns the position of camera on the device." +msgstr "返回设备上的相机位置。" + +msgid "If [code]true[/code], the feed is active." +msgstr "如果为 [code]true[/code],则源是激活的。" + +msgid "The transform applied to the camera's image." +msgstr "应用于相机图像的变换。" + +msgid "No image set for the feed." +msgstr "没有为该源设置图像。" + +msgid "Feed supplies RGB images." +msgstr "源提供 RGB 图像。" + +msgid "Feed supplies YCbCr images that need to be converted to RGB." +msgstr "源提供的 YCbCr 图像需要转换成 RGB 图像。" + +msgid "" +"Feed supplies separate Y and CbCr images that need to be combined and " +"converted to RGB." +msgstr "源提供单独的 Y 和 CbCr 图像,需要合并并转换为 RGB。" + +msgid "Unspecified position." +msgstr "未指定坐标。" + +msgid "Camera is mounted at the front of the device." +msgstr "相机安装在了设备前部。" + +msgid "Camera is mounted at the back of the device." +msgstr "相机安装在了设备后部。" + +msgid "Server keeping track of different cameras accessible in Godot." +msgstr "跟踪 Godot 中可访问的不同摄像头的服务器。" + +msgid "" +"The [CameraServer] keeps track of different cameras accessible in Godot. " +"These are external cameras such as webcams or the cameras on your phone.\n" +"It is notably used to provide AR modules with a video feed from the camera.\n" +"[b]Note:[/b] This class is currently only implemented on macOS and iOS. On " +"other platforms, no [CameraFeed]s will be available." +msgstr "" +"[CameraServer] 记录了 Godot 中可访问的不同摄像机。这些是外部摄像机,如网络摄" +"像头或手机上的摄像机。\n" +"它主要用于为 AR 模块提供来自摄像机的视频源。\n" +"[b]注意:[/b]这个类目前只在 macOS 和 iOS 上实现。在其他平台上没有可用的 " +"[CameraFeed]。" + +msgid "Returns an array of [CameraFeed]s." +msgstr "返回一个 [CameraFeed] 数组。" + +msgid "Returns the number of [CameraFeed]s registered." +msgstr "返回注册的 [CameraFeed] 的数量。" + +msgid "Emitted when a [CameraFeed] is added (e.g. a webcam is plugged in)." +msgstr "当添加 [CameraFeed] 时触发(例如插入网络摄像头时)。" + +msgid "Emitted when a [CameraFeed] is removed (e.g. a webcam is unplugged)." +msgstr "当移除 [CameraFeed] 时触发(例如拔掉网络摄像头时)。" + +msgid "The RGBA camera image." +msgstr "RGBA 相机图像。" + +msgid "The [url=https://en.wikipedia.org/wiki/YCbCr]YCbCr[/url] camera image." +msgstr "[url=https://zh.wikipedia.org/zh-cn/YCbCr]YCbCr[/url] 摄像机图像。" + +msgid "The Y component camera image." +msgstr "Y 分量相机图像。" + +msgid "The CbCr component camera image." +msgstr "CbCr 分量相机图像。" + +msgid "Texture provided by a [CameraFeed]." +msgstr "由 [CameraFeed] 提供的纹理。" + +msgid "" +"This texture gives access to the camera texture provided by a [CameraFeed].\n" +"[b]Note:[/b] Many cameras supply YCbCr images which need to be converted in " +"a shader." +msgstr "" +"该纹理可以访问 [CameraFeed] 提供的相机纹理。\n" +"[b]注意:[/b]许多相机提供的都是 YCbCr 图像,需要在着色器中进行转换。" + +msgid "The ID of the [CameraFeed] for which we want to display the image." +msgstr "我们要显示图像的 [CameraFeed] 的 ID。" + +msgid "" +"Convenience property that gives access to the active property of the " +"[CameraFeed]." +msgstr "给予访问 [CameraFeed] 的活动属性的便利属性。" + +msgid "" +"Which image within the [CameraFeed] we want access to, important if the " +"camera image is split in a Y and CbCr component." +msgstr "" +"我们要访问 [CameraFeed] 中的哪个图像,如果相机图像被分割成 Y 和 CbCr 分量,这" +"一点很重要。" + +msgid "" +"Child [CanvasItem] nodes of a [CanvasGroup] are drawn as a single object. It " +"allows to e.g. draw overlapping translucent 2D nodes without blending (set " +"[member CanvasItem.self_modulate] property of [CanvasGroup] to achieve this " +"effect).\n" +"[b]Note:[/b] The [CanvasGroup] uses a custom shader to read from the " +"backbuffer to draw its children. Assigning a [Material] to the [CanvasGroup] " +"overrides the builtin shader. To duplicate the behavior of the builtin " +"shader in a custom [Shader] use the following:\n" +"[codeblock]\n" +"shader_type canvas_item;\n" +"render_mode unshaded;\n" +"\n" +"uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, " +"filter_nearest;\n" +"\n" +"void fragment() {\n" +" vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0);\n" +"\n" +" if (c.a > 0.0001) {\n" +" c.rgb /= c.a;\n" +" }\n" +"\n" +" COLOR *= c;\n" +"}\n" +"[/codeblock]\n" +"[b]Note:[/b] Since [CanvasGroup] and [member CanvasItem.clip_children] both " +"utilize the backbuffer, children of a [CanvasGroup] who have their [member " +"CanvasItem.clip_children] set to anything other than [constant CanvasItem." +"CLIP_CHILDREN_DISABLED] will not function correctly." +msgstr "" +"[CanvasGroup] 的所有子 [CanvasItem] 节点会作为一个单独的对象绘制。它允许在不" +"混合的情况下绘制重叠的半透明 2D 节点(设置 [CanvasGroup] 的 [member " +"CanvasItem.self_modulate] 属性来实现这一效果)。\n" +"[b]注意:[/b][CanvasGroup] 使用一个自定义着色器从后台缓冲区读取以绘制其子节" +"点。为 [CanvasGroup] 指定一个 [Material] 会覆盖内置着色器。要在自定义 " +"[Shader] 中复制内置着色器的行为,请使用以下方法:\n" +"[codeblock]\n" +"shader_type canvas_item;\n" +"render_mode unshaded;\n" +"\n" +"uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, " +"filter_nearest;\n" +"\n" +"void fragment() {\n" +" vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0);\n" +"\n" +" if (c.a > 0.0001) {\n" +" c.rgb /= c.a;\n" +" }\n" +"\n" +" COLOR *= c;\n" +"}\n" +"[/codeblock]\n" +"[b]注意:[/b]由于 [CanvasGroup] 和 [member CanvasItem.clip_children] 都使用后" +"台缓冲区,因此 [CanvasGroup] 的子级如果将其 [member CanvasItem." +"clip_children] 设置为 [constant CanvasItem.CLIP_CHILDREN_DISABLED] 以外的其他" +"值将无法正常工作。" + +msgid "Base class of anything 2D." +msgstr "任何 2D 对象的基类。" + +msgid "Viewport and canvas transforms" +msgstr "Viewport 和画布变换" + +msgid "Custom drawing in 2D" +msgstr "2D 中的自定义绘图" + +msgid "Draws a string first character using a custom font." +msgstr "使用自定义字体绘制字符串的第一个字符。" + +msgid "Draws a string first character outline using a custom font." +msgstr "使用自定义字体绘制字符串中第一个字符的轮廓。" + +msgid "" +"Draws a colored, filled circle. See also [method draw_arc], [method " +"draw_polyline] and [method draw_polygon]." +msgstr "" +"绘制彩色的实心圆。另见 [method draw_arc]、[method draw_polyline] 和 [method " +"draw_polygon]。" + +msgid "" +"Draws a [Mesh] in 2D, using the provided texture. See [MeshInstance2D] for " +"related documentation." +msgstr "" +"使用所提供的纹理以 2D 方式绘制一个 [Mesh]。相关文档请参阅 [MeshInstance2D]。" + +msgid "" +"Draws a [MultiMesh] in 2D with the provided texture. See " +"[MultiMeshInstance2D] for related documentation." +msgstr "" +"用所提供的纹理以 2D 方式绘制 [MultiMesh]。相关文档请参考" +"[MultiMeshInstance2D]。" + +msgid "" +"Draws a custom primitive. 1 point for a point, 2 points for a line, 3 points " +"for a triangle, and 4 points for a quad. If 0 points or more than 4 points " +"are specified, nothing will be drawn and an error message will be printed. " +"See also [method draw_line], [method draw_polyline], [method draw_polygon], " +"and [method draw_rect]." +msgstr "" +"绘制自定义图元。1 个点的是个点,2 个点的是线段,3 个点的是三角形,4 个点的是" +"四边形。如果没有指定点或者指定了超过 4 个点,则不会绘制任何东西,只会输出错误" +"消息。另请参阅 [method draw_line]、[method draw_polyline]、[method " +"draw_polygon]、[method draw_rect]。" + +msgid "" +"Sets a custom transform for drawing via matrix. Anything drawn afterwards " +"will be transformed by this." +msgstr "设置通过矩阵绘制时的自定义变换。此后绘制的任何东西都将被它变换。" + +msgid "" +"Draws [param text] using the specified [param font] at the [param pos] " +"(bottom-left corner using the baseline of the font). The text will have its " +"color multiplied by [param modulate]. If [param width] is greater than or " +"equal to 0, the text will be clipped if it exceeds the specified width.\n" +"[b]Example using the default project font:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# If using this method in a script that redraws constantly, move the\n" +"# `default_font` declaration to a member variable assigned in `_ready()`\n" +"# so the Control is only created once.\n" +"var default_font = ThemeDB.fallback_font\n" +"var default_font_size = ThemeDB.fallback_font_size\n" +"draw_string(default_font, Vector2(64, 64), \"Hello world\", " +"HORIZONTAL_ALIGNMENT_LEFT, -1, default_font_size)\n" +"[/gdscript]\n" +"[csharp]\n" +"// If using this method in a script that redraws constantly, move the\n" +"// `default_font` declaration to a member variable assigned in `_Ready()`\n" +"// so the Control is only created once.\n" +"Font defaultFont = ThemeDB.FallbackFont;\n" +"int defaultFontSize = ThemeDB.FallbackFontSize;\n" +"DrawString(defaultFont, new Vector2(64, 64), \"Hello world\", " +"HORIZONTAL_ALIGNMENT_LEFT, -1, defaultFontSize);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"See also [method Font.draw_string]." +msgstr "" +"使用指定的 [param font] 在 [param pos](使用的字体的基线的左下角)处绘制 " +"[param text]。该文本的颜色将乘以 [param modulate]。如果 [param width] 大于等" +"于 0,则文本超过指定宽度将被裁剪。\n" +"[b]使用项目默认字体的例子:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 如果在不断重绘的脚本中使用此方法,\n" +"# 则将 `default_font` 声明移动到在 `_ready()` 中赋值的成员变量中\n" +"# 这样 Control 只创建一次。\n" +"var default_font = ThemeDB.fallback_font\n" +"var default_font_size = ThemeDB.fallback_font_size\n" +"draw_string(default_font, Vector2(64, 64), \"Hello world\", " +"HORIZONTAL_ALIGNMENT_LEFT, -1, default_font_size)\n" +"[/gdscript]\n" +"[csharp]\n" +"// 如果在不断重绘的脚本中使用此方法,\n" +"// 则将 `default_font` 声明移动到在 `_ready()` 中赋值的成员变量中\n" +"// 这样 Control 只创建一次。\n" +"Font defaultFont = ThemeDB.FallbackFont;\n" +"int defaultFontSize = ThemeDB.FallbackFontSize;\n" +"DrawString(defaultFont, new Vector2(64, 64), \"Hello world\", " +"HORIZONTAL_ALIGNMENT_LEFT, -1, defaultFontSize);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"另请参阅 [method Font.draw_string]。" + +msgid "Draws a styled rectangle." +msgstr "绘制一个样式矩形。" + +msgid "Draws a texture at a given position." +msgstr "在给定的位置绘制纹理。" + +msgid "" +"Forces the transform to update. Transform changes in physics are not instant " +"for performance reasons. Transforms are accumulated and then set. Use this " +"if you need an up-to-date transform when doing physics operations." +msgstr "" +"强制更新变换。由于性能原因,物理中的变换改变不是即时的。变换是在累积后再设" +"置。如果你在进行物理操作时需要最新的变换,请使用此功能。" + +msgid "Returns the [RID] of the [World2D] canvas where this item is in." +msgstr "返回此项目所在的 [World2D] 画布的 [RID]。" + +msgid "" +"Returns the mouse's position in the [CanvasLayer] that this [CanvasItem] is " +"in using the coordinate system of the [CanvasLayer]." +msgstr "" +"返回该 [CanvasItem] 所在的 [CanvasLayer] 中鼠标的位置,使用该 [CanvasLayer] " +"的坐标系。" + +msgid "" +"Returns the mouse's position in this [CanvasItem] using the local coordinate " +"system of this [CanvasItem]." +msgstr "返回该 [CanvasItem] 中鼠标的位置,使用该 [CanvasItem] 的局部坐标系。" + +msgid "Returns the transform matrix of this item." +msgstr "返回此项目的变换矩阵。" + +msgid "Returns the viewport's boundaries as a [Rect2]." +msgstr "以 [Rect2] 形式返回视口的边界。" + +msgid "Returns an individual bit on the rendering visibility layer." +msgstr "返回渲染可见层上的某个比特位。" + +msgid "Returns the [World2D] where this item is in." +msgstr "返回此物品所在的 [World2D]。" + +msgid "" +"Hide the [CanvasItem] if it's currently visible. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" +"如果该 [CanvasItem] 目前是可见的,则将其隐藏。相当于将 [member visible] 设为 " +"[code]false[/code]。" + +msgid "" +"Returns [code]true[/code] if local transform notifications are communicated " +"to children." +msgstr "如果将本地变换通知传达给子级,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if global transform notifications are communicated " +"to children." +msgstr "如果将全局变换通知传达给子级,则返回 [code]true[/code]。" + +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 " +"the scene tree, and is consequently not drawn (see [method _draw])." +msgstr "" +"如果该节点位于 [SceneTree] 中,并且其 [member visible] 属性为 [code]true[/" +"code],并且其所有上层节点也均可见,则返回 [code]true[/code]。如果任何上层节点" +"被隐藏,则该节点在场景树中将不可见,因此也不会进行绘制(见 [method _draw])。" + +msgid "" +"Queues the [CanvasItem] to redraw. During idle time, if [CanvasItem] is " +"visible, [constant NOTIFICATION_DRAW] is sent and [method _draw] is called. " +"This only occurs [b]once[/b] per frame, even if this method has been called " +"multiple times." +msgstr "" +"将该 [CanvasItem] 加入重绘队列。空闲时,如果 [CanvasItem] 可见,则会发送 " +"[constant NOTIFICATION_DRAW] 并调用 [method _draw]。即便多次调用这个方法,每" +"帧也都只会发生[b]一次[/b]绘制。" + +msgid "" +"Show the [CanvasItem] if it's currently hidden. This is equivalent to " +"setting [member visible] to [code]true[/code]. For controls that inherit " +"[Popup], the correct way to make them visible is to call one of the multiple " +"[code]popup*()[/code] functions instead." +msgstr "" +"如果该 [CanvasItem] 目前是隐藏的,则将其显示。相当于将 [member visible] 设为 " +"[code]true[/code]。对于继承自 [Popup] 的控件,让它们可见的正确做法是换成调用" +"各种 [code]popup*()[/code] 函数的其中之一。" + +msgid "" +"Allows the current node to clip children nodes, essentially acting as a mask." +msgstr "允许当前节点裁剪子节点,本质上是充当遮罩。" + +msgid "" +"The rendering layers in which this [CanvasItem] responds to [Light2D] nodes." +msgstr "该 [CanvasItem] 的渲染层,用于响应 [Light2D] 节点。" + +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],则对象在其父对象后面绘制。" + +msgid "The texture filtering mode to use on this [CanvasItem]." +msgstr "在该 [CanvasItem] 上使用的纹理过滤模式。" + +msgid "The texture repeating mode to use on this [CanvasItem]." +msgstr "在该 [CanvasItem] 上使用的纹理重复模式。" + +msgid "" +"If [code]true[/code], this [CanvasItem] will [i]not[/i] inherit its " +"transform from parent [CanvasItem]s. Its draw order will also be changed to " +"make it draw on top of other [CanvasItem]s that do not have [member " +"top_level] set to [code]true[/code]. The [CanvasItem] will effectively act " +"as if it was placed as a child of a bare [Node]." +msgstr "" +"如果为 [code]true[/code],则该 [CanvasItem] [i]不会[/i]继承父级 [CanvasItem] " +"的变换。它的绘制顺序也会发生改变,会在其他没有将 [member top_level] 设置为 " +"[code]true[/code] 的 [CanvasItem] 之上绘制。效果和把该 [CanvasItem] 作为裸 " +"[Node] 的子级一样。" + +msgid "" +"If [code]true[/code], the parent [CanvasItem]'s [member material] property " +"is used as this one's material." +msgstr "" +"如果为 [code]true[/code],则将父级 [CanvasItem] 的 [member material] 属性用作" +"此项的材质。" + +msgid "" +"The rendering layer in which this [CanvasItem] is rendered by [Viewport] " +"nodes. A [Viewport] will render a [CanvasItem] if it and all its parents " +"share a layer with the [Viewport]'s canvas cull mask." +msgstr "" +"[Viewport] 节点渲染该 [CanvasItem] 时所使用的渲染层。只有 [CanvasItem] 及其所" +"有父级均与 [Viewport] 的画布剔除遮罩有交集,该 [Viewport] 才会渲染此 " +"[CanvasItem]。" + +msgid "" +"If [code]true[/code], this [CanvasItem] is drawn. The node is only visible " +"if all of its antecedents are visible as well (in other words, [method " +"is_visible_in_tree] must return [code]true[/code]).\n" +"[b]Note:[/b] For controls that inherit [Popup], the correct way to make them " +"visible is to call one of the multiple [code]popup*()[/code] functions " +"instead." +msgstr "" +"如果为 [code]true[/code],这个 [CanvasItem] 被绘制。只有当它的所有父节点也可" +"见时,该节点才是可见的(换句话说,[method is_visible_in_tree] 必须返回 " +"[code]true[/code])。\n" +"[b]注意:[/b]对于继承了 [Popup] 的控件,使其可见的正确方法是调用多个 " +"[code]popup*()[/code] 函数之一。" + +msgid "" +"If [code]true[/code], child nodes with the lowest Y position are drawn " +"before those with a higher Y position. If [code]false[/code], Y-sorting is " +"disabled. Y-sorting only affects children that inherit from [CanvasItem].\n" +"You can nest nodes with Y-sorting. Child Y-sorted nodes are sorted in the " +"same space as the parent Y-sort. This feature allows you to organize a scene " +"better or divide it into multiple ones without changing your scene tree." +msgstr "" +"如果为 [code]true[/code],则会在绘制 Y 位置最低的子节点之后再绘制 Y 位置较高" +"的子节点。如果为 [code]false[/code],则禁用 Y 排序。Y 排序仅影响继承自 " +"[CanvasItem] 的子节点。\n" +"可以将 Y 排序的节点进行嵌套。子级 Y 排序的节点,会与父级在同一空间中进行 Y 排" +"序。此功能可以让你在不更改场景树的情况下,更好地组织场景,或者将场景分为多个" +"场景。" + +msgid "" +"If [code]true[/code], the node's Z index is relative to its parent's Z " +"index. If this node's Z index is 2 and its parent's effective Z index is 3, " +"then this node's effective Z index will be 2 + 3 = 5." +msgstr "" +"如果为 [code]true[/code],节点的 Z 索引是相对于它的父节点的 Z 索引而言的。如" +"果这个节点的 Z 索引是 2,它的父节点的实际 Z 索引是 3,那么这个节点的实际 Z 索" +"引将是 2 + 3 = 5。" + +msgid "" +"Z index. Controls the order in which the nodes render. A node with a higher " +"Z index will display in front of others. Must be between [constant " +"RenderingServer.CANVAS_ITEM_Z_MIN] and [constant RenderingServer." +"CANVAS_ITEM_Z_MAX] (inclusive).\n" +"[b]Note:[/b] Changing the Z index of a [Control] only affects the drawing " +"order, not the order in which input events are handled. This can be useful " +"to implement certain UI animations, e.g. a menu where hovered items are " +"scaled and should overlap others." +msgstr "" +"Z 索引。控制节点的渲染顺序。具有较高 Z 索引的节点将显示在其他节点的前面。必须" +"在 [constant RenderingServer.CANVAS_ITEM_Z_MIN] 和 [constant RenderingServer." +"CANVAS_ITEM_Z_MAX]之间(包含)。\n" +"[b]注意:[/b]改变 [Control] 的 Z 索引只影响绘图顺序,不影响处理输入事件的顺" +"序。可用于实现某些 UI 动画,例如对处于悬停状态的菜单项进行缩放,此时会与其他" +"内容重叠。" + +msgid "" +"Emitted when the [CanvasItem] must redraw, [i]after[/i] the related " +"[constant NOTIFICATION_DRAW] notification, and [i]before[/i] [method _draw] " +"is called.\n" +"[b]Note:[/b] Deferred connections do not allow drawing through the " +"[code]draw_*[/code] methods." +msgstr "" +"当该 [CanvasItem] 必须重绘时发出,发生在相关的 [constant NOTIFICATION_DRAW] " +"通知[i]之后[/i],调用 [method _draw] [i]之前[/i]。\n" +"[b]注意:[/b]延迟连接无法使用 [code]draw_*[/code] 方法进行绘制。" + +msgid "Emitted when becoming hidden." +msgstr "当隐藏时发出。" + +msgid "" +"Emitted when the item's [Rect2] boundaries (position or size) have changed, " +"or when an action is taking place that may have impacted these boundaries (e." +"g. changing [member Sprite2D.texture])." +msgstr "" +"当 CanvasItem 的 [Rect2] 边界(位置或大小)发生变化时,或者当发生可能影响这些" +"边界的操作(例如,更改 [member Sprite2D.texture])时发出。" + +msgid "Emitted when the visibility (hidden/visible) changes." +msgstr "当可见性(隐藏/可见)更改时发出。" + +msgid "" +"The [CanvasItem]'s global transform has changed. This notification is only " +"received if enabled by [method set_notify_transform]." +msgstr "" +"该 [CanvasItem] 的全局变换已更改。只有在通过 [method set_notify_transform] 启" +"用时,才会收到这个通知。" + +msgid "" +"The [CanvasItem]'s local transform has changed. This notification is only " +"received if enabled by [method set_notify_local_transform]." +msgstr "" +"该 [CanvasItem] 的局部变换已更改。只有在通过 [method " +"set_notify_local_transform] 启用时,才会收到这个通知。" + +msgid "The [CanvasItem] is requested to draw (see [method _draw])." +msgstr "要求绘制该 [CanvasItem](见 [method _draw])。" + +msgid "The [CanvasItem]'s visibility has changed." +msgstr "该 [CanvasItem] 的可见性已更改。" + +msgid "The [CanvasItem] has entered the canvas." +msgstr "该 [CanvasItem] 已进入画布。" + +msgid "The [CanvasItem] has exited the canvas." +msgstr "该 [CanvasItem] 已退出画布。" + +msgid "The [CanvasItem] will inherit the filter from its parent." +msgstr "该 [CanvasItem] 将从其父级继承过滤器。" + +msgid "Texture will not repeat." +msgstr "纹理不会重复。" + +msgid "Texture will repeat normally." +msgstr "纹理将正常重复。" + +msgid "" +"Texture will repeat in a 2x2 tiled mode, where elements at even positions " +"are mirrored." +msgstr "纹理将以 2x2 平铺模式重复,其中偶数位置的元素会被镜像。" + +msgid "Represents the size of the [enum TextureRepeat] enum." +msgstr "代表 [enum TextureRepeat] 枚举的大小。" + +msgid "" +"Parent is used for the purposes of clipping only. Child is clipped to the " +"parent's visible area, parent is not drawn." +msgstr "父级仅用于裁剪目的。子级被裁剪到父级的可见区域,不绘制父级。" + +msgid "" +"Parent is used for clipping child, but parent is also drawn underneath child " +"as normal before clipping child to its visible area." +msgstr "" +"父级用于裁剪子级,但在将子级剪裁到其可见区域之前,父级也像往常一样绘制在子级" +"下方。" + +msgid "Represents the size of the [enum ClipChildrenMode] enum." +msgstr "代表 [enum ClipChildrenMode] 枚举的大小。" + +msgid "A material for [CanvasItem]s." +msgstr "[CanvasItem]的材质。" + +msgid "" +"[CanvasItemMaterial]s provide a means of modifying the textures associated " +"with a CanvasItem. They specialize in describing blend and lighting " +"behaviors for textures. Use a [ShaderMaterial] to more fully customize a " +"material's interactions with a [CanvasItem]." +msgstr "" +"[CanvasItemMaterial]提供了一种修改与CanvasItem相关联的纹理的方法。他们专注于" +"描述纹理的混合和照明行为。使用[ShaderMaterial]可以更全面地自定义材质与" +"[CanvasItem]的交互。" + +msgid "" +"The manner in which a material's rendering is applied to underlying textures." +msgstr "将材质的渲染应用于基础纹理的方式。" + +msgid "The manner in which material reacts to lighting." +msgstr "材质对照明的反应方式。" + +msgid "" +"The number of columns in the spritesheet assigned as [Texture2D] for a " +"[GPUParticles2D] or [CPUParticles2D].\n" +"[b]Note:[/b] This property is only used and visible in the editor if [member " +"particles_animation] is [code]true[/code]." +msgstr "" +"[GPUParticles2D] 或 [CPUParticles2D] 指定给 [Texture2D] 的精灵表中拥有的列" +"数。\n" +"[b]注意:[/b] 该属性只有在 [member particles_animation] 为 [code]true[/code] " +"时,才会在编辑器中被使用和可见。" + +msgid "" +"If [code]true[/code], the particles animation will loop.\n" +"[b]Note:[/b] This property is only used and visible in the editor if [member " +"particles_animation] is [code]true[/code]." +msgstr "" +"如果为 [code]true[/code],粒子动画将循环播放。\n" +"[b]注意:[/b] 该属性只有在 [member particles_animation]为 [code]true[/code] " +"时,才会在编辑器中被使用和可见。" + +msgid "" +"The number of rows in the spritesheet assigned as [Texture2D] for a " +"[GPUParticles2D] or [CPUParticles2D].\n" +"[b]Note:[/b] This property is only used and visible in the editor if [member " +"particles_animation] is [code]true[/code]." +msgstr "" +"[GPUParticles2D] 或 [CPUParticles2D] 指定给 [Texture2D] 的精灵表中拥有的行" +"数。\n" +"[b]注意:[/b] 该属性只有在 [member particles_animation] 为 [code]true[/code] " +"时,才会在编辑器中被使用和可见。" + +msgid "" +"If [code]true[/code], enable spritesheet-based animation features when " +"assigned to [GPUParticles2D] and [CPUParticles2D] nodes. The [member " +"ParticleProcessMaterial.anim_speed_max] or [member CPUParticles2D." +"anim_speed_max] should also be set to a positive value for the animation to " +"play.\n" +"This property (and other [code]particles_anim_*[/code] properties that " +"depend on it) has no effect on other types of nodes." +msgstr "" +"如果 [code]true[/code] ,在分配给 [GPUParticles2D] 和 [CPUParticles2D] 节点" +"时,启用基于精灵表的动画功能。[member ParticleProcessMaterial." +"anim_speed_max] 或 [member CPUParticles2D.anim_speed_max] 也应该设置为正值," +"才能播放动画。\n" +"这个属性(以及其他依赖它的 [code]particles_anim_*[/code] 属性)对其他类型的节" +"点没有影响。" + +msgid "" +"Mix blending mode. Colors are assumed to be independent of the alpha " +"(opacity) value." +msgstr "混合混合模式。假设颜色与 Alpha 值(不透明度)无关。" + +msgid "Additive blending mode." +msgstr "添加混合模式。" + +msgid "Subtractive blending mode." +msgstr "减去混合模式。" + +msgid "Multiplicative blending mode." +msgstr "正片叠底混合模式。" + +msgid "" +"Mix blending mode. Colors are assumed to be premultiplied by the alpha " +"(opacity) value." +msgstr "混合混合模式。假定颜色已预先乘以 Alpha 值(不透明度)。" + +msgid "" +"Render the material using both light and non-light sensitive material " +"properties." +msgstr "使用光敏和非光敏材料属性渲染材质。" + +msgid "Render the material as if there were no light." +msgstr "将材质渲染成没有光的样子。" + +msgid "Render the material as if there were only light." +msgstr "将材质渲染成只有光的样子。" + +msgid "Canvas drawing layer." +msgstr "画布绘图层。" + +msgid "" +"Canvas drawing layer. [CanvasItem] nodes that are direct or indirect " +"children of a [CanvasLayer] will be drawn in that layer. The layer is a " +"numeric index that defines the draw order. The default 2D scene renders with " +"index 0, so a [CanvasLayer] with index -1 will be drawn below, and one with " +"index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or " +"above), or backgrounds (in layer -1 or below).\n" +"Embedded [Window]s are placed in layer 1024. CanvasItems in layer 1025 or " +"above appear in front of embedded windows, CanvasItems in layer 1023 or " +"below appear behind embedded windows." +msgstr "" +"画布绘图层。[CanvasLayer] 的直接或间接子级的 [CanvasItem] 节点将在该层中绘" +"制。层是一个决定绘制顺序的数字索引。默认 2D 场景的渲染索引为 0,因此索引为 " +"-1 的 [CanvasLayer] 会在其下方绘制,索引为 1 的则会在其上方绘制。这对于 HUD" +"(在 1+ 层或更高层中)或背景(在 -1 层或更低层中)非常有用。\n" +"内嵌 [Window] 位于 1024 层。位于 1024 层及更高层的 CanvasItem 会出现在内嵌窗" +"口之前,位于 1024 层及更低层的 CanvasItem 会出现在内嵌窗口之后。" + +msgid "Canvas layers" +msgstr "画布层" + +msgid "Returns the RID of the canvas used by this layer." +msgstr "返回此层使用的画布的 RID。" + +msgid "" +"Hides any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]false[/code]." +msgstr "" +"隐藏该 [CanvasLayer] 下的所有 [CanvasItem]。相当于将 [member visible] 设为 " +"[code]false[/code]。" + +msgid "" +"Shows any [CanvasItem] under this [CanvasLayer]. This is equivalent to " +"setting [member visible] to [code]true[/code]." +msgstr "" +"显示该 [CanvasLayer] 下的所有 [CanvasItem]。相当于将 [member visible] 设为 " +"[code]true[/code]。" + +msgid "" +"The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/" +"code], uses the default viewport instead." +msgstr "" +"分配给该 [CanvasLayer] 的自定义 [Viewport] 节点。如果为 [code]null[/code],则" +"使用默认的视口。" + +msgid "" +"If enabled, the [CanvasLayer] will use the viewport's transform, so it will " +"move when camera moves instead of being anchored in a fixed position on the " +"screen.\n" +"Together with [member follow_viewport_scale] it can be used for a pseudo 3D " +"effect." +msgstr "" +"启用时,该 [CanvasLayer] 会使用视口的变换,所以它会随相机移动,而不是保持在屏" +"幕上的某个固定位置。\n" +"与 [member follow_viewport_scale] 配合可以实现伪 3D 效果。" + +msgid "The layer's base offset." +msgstr "图层的基本偏移量。" + +msgid "The layer's rotation in radians." +msgstr "图层的旋转弧度。" + +msgid "The layer's scale." +msgstr "图层的缩放。" + +msgid "The layer's transform." +msgstr "图层的变换。" + +msgid "" +"If [code]false[/code], any [CanvasItem] under this [CanvasLayer] will be " +"hidden.\n" +"Unlike [member CanvasItem.visible], visibility of a [CanvasLayer] isn't " +"propagated to underlying layers." +msgstr "" +"为 [code]false[/code] 时,该 [CanvasLayer] 下的所有 [CanvasItem] 都会被隐" +"藏。\n" +"与 [member CanvasItem.visible] 不同,[CanvasLayer] 的显示与否不会传播到其内部" +"的层。" + +msgid "Emitted when visibility of the layer is changed. See [member visible]." +msgstr "当该层的可见性发生变化时触发。请参阅 [member visible]。" + +msgid "Tint the entire canvas." +msgstr "给整个画布上色。" + +msgid "" +"[CanvasModulate] tints the canvas elements using its assigned [member color]." +msgstr "[CanvasModulate]使用其分配的[member color]对画布元素进行着色。" + +msgid "The tint color to apply." +msgstr "要应用的色调颜色。" + +msgid "Class representing a capsule-shaped [PrimitiveMesh]." +msgstr "表示胶囊状 [PrimitiveMesh] 的类。" + +msgid "Number of radial segments on the capsule mesh." +msgstr "胶囊网格上的径向线段数。" + +msgid "Radius of the capsule mesh." +msgstr "胶囊网格的半径。" + +msgid "Number of rings along the height of the capsule." +msgstr "沿胶囊高度的环数。" + +msgid "The capsule's height." +msgstr "胶囊体的高度。" + +msgid "The capsule's radius." +msgstr "胶囊体的半径。" + +msgid "Keeps children controls centered." +msgstr "使子级控件居中。" + +msgid "" +"CenterContainer keeps children controls centered. This container keeps all " +"children to their minimum size, in the center." +msgstr "" +"CenterContainer 会使子节点居中。该容器会将所有子节点保持在最小尺寸并居中。" + +msgid "" +"If [code]true[/code], centers children relative to the [CenterContainer]'s " +"top left corner." +msgstr "" +"如果为 [code]true[/code],会将子节点相对于 [CenterContainer] 的左上角居中。" + +msgid "Kinematic character (2D)" +msgstr "运动学角色(2D)" + +msgid "Using CharacterBody2D" +msgstr "使用 CharacterBody2D" + +msgid "2D Kinematic Character Demo" +msgstr "2D 运动学角色演示" + +msgid "" +"Returns a [KinematicCollision2D], which contains information about the " +"latest collision that occurred during the last call to [method " +"move_and_slide]." +msgstr "" +"返回 [KinematicCollision2D],它包含在最后一次调用 [method move_and_slide] 时" +"发生的最新碰撞信息。" + +msgid "Do nothing when leaving a platform." +msgstr "离开平台时什么也不做。" + +msgid "" +"Controls how an individual character will be displayed in a [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]中的显示方式。" + +msgid "BBCode in RichTextLabel" +msgstr "RichTextLabel 中的 BBCode" + +msgid "RichTextEffect test project (third-party)" +msgstr "RichTextEffect 测试项目(第三方)" + +msgid "The color the character will be drawn with." +msgstr "绘制字符所用的颜色。" + +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 " +"[code]#rrggbb[/code] or [code]#rgb[/code] will be converted to an opaque " +"[Color]. String arguments may not contain spaces, even if they're quoted. If " +"present, quotes will also be present in the final string.\n" +"For example, the opening BBCode tag [code][example foo=hello bar=true baz=42 " +"color=#ffffff][/code] will map to the following [Dictionary]:\n" +"[codeblock]\n" +"{\"foo\": \"hello\", \"bar\": true, \"baz\": 42, \"color\": Color(1, 1, 1, " +"1)}\n" +"[/codeblock]" +msgstr "" +"包含在开头的 BBCode 标记中传递的参数。默认情况下,参数是字符串。如果它们的内" +"容与 [bool]、[int]、[float] 之类的类型匹配,它们将被自动转换。格式为 " +"[code]#rrggbb[/code] 或 [code]#rgb[/code] 的颜色代码将转换为不透明的 " +"[Color]。字符串参数即使使用引号也不能包含空格。如果存在,引号也将出现在最终字" +"符串中。\n" +"例如,开头的 BBCode 标签 [code][example foo = hello bar = true baz = 42 " +"color =#ffffff][/code] 将映射到以下 [Dictionary]:\n" +"[codeblock]\n" +"{\"foo\": \"hello\", \"bar\": true, \"baz\": 42, \"color\": Color(1, 1, 1, " +"1)}\n" +"[/codeblock]" + +msgid "Font resource used to render glyph." +msgstr "用于渲染字形的字体资源。" + +msgid "" +"Number of glyphs in the grapheme cluster. This value is set in the first " +"glyph of a cluster. Setting this property won't affect drawing." +msgstr "" +"字素簇中的字形数量。该值在簇的第一个字形中设置。设置此属性不会影响绘制。" + +msgid "" +"Glyph flags. See [enum TextServer.GraphemeFlag] for more info. Setting this " +"property won't affect drawing." +msgstr "" +"字形标志。详情见 [enum TextServer.GraphemeFlag]。设置此属性不会影响绘制。" + +msgid "The position offset the character will be drawn with (in pixels)." +msgstr "绘制字符的位置偏移量(以像素为单位)。" + +msgid "" +"If [code]true[/code], the character will be drawn. If [code]false[/code], " +"the character will be hidden. Characters around hidden characters will " +"reflow to take the space of hidden characters. If this is not desired, set " +"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]。" + +msgid "Binary choice user interface widget. See also [CheckButton]." +msgstr "二项选择用户界面小部件。另请参阅 [CheckButton]。" + +msgid "The [CheckBox] text's font color." +msgstr "该 [CheckBox] 的文本字体颜色。" + +msgid "The [CheckBox] text's font color when it's disabled." +msgstr "该 [CheckBox] 被禁用时的文本字体颜色。" + +msgid "" +"The [CheckBox] text's font color when it's focused. Only replaces the normal " +"text color of the checkbox. Disabled, hovered, and pressed states take " +"precedence over this color." +msgstr "" +"该 [CheckBox] 被聚焦时的文本字体颜色。只取代复选框的正常文本颜色。禁用、悬停" +"和按下状态优先于这个颜色。" + +msgid "The [CheckBox] text's font color when it's hovered." +msgstr "该 [CheckBox] 被悬停时的文本字体颜色。" + +msgid "The [CheckBox] text's font color when it's hovered and pressed." +msgstr "该 [CheckBox] 被悬停且被按下时的文本字体颜色。" + +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 "渲染复选图标时使用的垂直偏移量(单位为像素)。" + +msgid "The [Font] to use for the [CheckBox] text." +msgstr "该 [CheckBox] 的文本所使用的 [Font]。" + +msgid "Font size of the [CheckBox]'s text." +msgstr "该 [CheckBox] 的文本字体大小。" + +msgid "The check icon to display when the [CheckBox] is checked." +msgstr "选中图标,该 [CheckBox] 处于选中状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is checked and is disabled." +msgstr "选中图标,该 [CheckBox] 处于选中且禁用状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is configured as a radio " +"button and is checked." +msgstr "选中图标,该 [CheckBox] 被配置为单选按钮并处于选中状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is configured as a radio " +"button, is disabled, and is unchecked." +msgstr "选中图标,该 [CheckBox] 被配置为单选按钮并处于未选且禁用状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is configured as a radio " +"button and is unchecked." +msgstr "选中图标,该 [CheckBox] 被配置为单选按钮并处于未选状态时使用。" + +msgid "The check icon to display when the [CheckBox] is unchecked." +msgstr "选中图标,该 [CheckBox] 处于未选状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is unchecked and is disabled." +msgstr "选中图标,该 [CheckBox] 处于未选状态时使用。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckBox] is disabled." +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于禁用状态时使用。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckBox] is focused. " +"The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base " +"[StyleBox], so a partially transparent [StyleBox] should be used to ensure " +"the base [StyleBox] remains visible. A [StyleBox] that represents an outline " +"or an underline works well for this purpose. To disable the focus visual " +"effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus " +"visual effect will harm keyboard/controller navigation usability, so this is " +"not recommended for accessibility reasons." +msgstr "" +"作为背景显示的 [StyleBox],该 [CheckBox] 处于聚焦状态时使用。[code]focus[/" +"code] [StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" +"很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" +"意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" +"原因,不建议这样做。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckBox] is hovered." +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于悬停状态时使用。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckBox] is hovered and " +"pressed." +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] 处于按下状态时使用。" + +msgid "Checkable button. See also [CheckBox]." +msgstr "可复选的按钮。另请参阅 [CheckBox]。" + +msgid "The [CheckButton] text's font color." +msgstr "该 [CheckButton] 的文本字体颜色。" + +msgid "The [CheckButton] text's font color when it's disabled." +msgstr "该 [CheckButton] 被禁用时的文本字体颜色。" + +msgid "" +"The [CheckButton] text's font color when it's focused. Only replaces the " +"normal text color of the button. Disabled, hovered, and pressed states take " +"precedence over this color." +msgstr "" +"该 [CheckButton] 被聚焦时的文本字体颜色。仅替换按钮的正常文本颜色。禁用、悬停" +"和按下状态优先于此颜色。" + +msgid "The [CheckButton] text's font color when it's hovered." +msgstr "该 [CheckButton] 被悬停时的文本字体颜色。" + +msgid "The [CheckButton] text's font color when it's hovered and pressed." +msgstr "该 [CheckButton] 被悬停且被按下时的文本字体颜色。" + +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 "渲染切换图标时使用的垂直偏移量(单位为像素)。" + +msgid "The [Font] to use for the [CheckButton] text." +msgstr "该 [CheckButton] 文本所使用的 [Font]。" + +msgid "Font size of the [CheckButton]'s text." +msgstr "该 [CheckButton] 文本的字体大小。" + +msgid "" +"The icon to display when the [CheckButton] is checked (for left-to-right " +"layouts)." +msgstr "显示的图标,用于该 [CheckButton] 的勾选状态(从左至右布局)。" + +msgid "" +"The icon to display when the [CheckButton] is checked and disabled (for left-" +"to-right layouts)." +msgstr "" +"显示的图标,用于该 [CheckButton] 的勾选且禁用状态(用于从左至右布局)。" + +msgid "" +"The icon to display when the [CheckButton] is checked and disabled (for " +"right-to-left layouts)." +msgstr "" +"显示的图标,用于该 [CheckButton] 的勾选且禁用状态(用于从右至左布局)。" + +msgid "" +"The icon to display when the [CheckButton] is checked (for right-to-left " +"layouts)." +msgstr "显示的图标,用于该 [CheckButton] 的勾选状态(用于从右至左布局)。" + +msgid "" +"The icon to display when the [CheckButton] is unchecked (for left-to-right " +"layouts)." +msgstr "显示的图标,用于该 [CheckButton] 的未选状态(用于从左至右布局)。" + +msgid "" +"The icon to display when the [CheckButton] is unchecked and disabled (for " +"left-to-right layouts)." +msgstr "" +"显示的图标,用于该 [CheckButton] 的未选且禁用状态(用于从左至右布局)。" + +msgid "" +"The icon to display when the [CheckButton] is unchecked and disabled (for " +"right-to-left layouts)." +msgstr "" +"显示的图标,用于该 [CheckButton] 的未选且禁用状态(用于从右至左布局)。" + +msgid "" +"The icon to display when the [CheckButton] is unchecked (for right-to-left " +"layouts)." +msgstr "显示的图标,用于该 [CheckButton] 的未选状态(用于从右至左布局)。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckButton] is disabled." +msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的禁用状态。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckButton] is focused. " +"The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base " +"[StyleBox], so a partially transparent [StyleBox] should be used to ensure " +"the base [StyleBox] remains visible. A [StyleBox] that represents an outline " +"or an underline works well for this purpose. To disable the focus visual " +"effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus " +"visual effect will harm keyboard/controller navigation usability, so this is " +"not recommended for accessibility reasons." +msgstr "" +"作为背景显示的 [StyleBox],用于该 [CheckButton] 的聚焦状态。[code]focus[/" +"code] [StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" +"很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" +"意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" +"原因,不建议这样做。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckButton] is hovered." +msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的悬停状态。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckButton] is hovered " +"and pressed." +msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的悬停且按下状态。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckButton] is pressed." +msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的按下状态。" + +msgid "The circle's radius." +msgstr "圆的半径。" + +msgid "Class information repository." +msgstr "类信息存储库。" + +msgid "Provides access to metadata stored for every available class." +msgstr "提供对为每个可用类存储的元数据的访问。" + +msgid "Returns the names of all the classes available." +msgstr "返回所有可用类的名称。" + +msgid "" +"Returns the names of all the classes that directly or indirectly inherit " +"from [param class]." +msgstr "返回所有直接或间接继承自 [param class] 的类的名称。" + +msgid "Returns the parent class of [param class]." +msgstr "返回 [param class] 的父类。" + +msgid "Creates an instance of [param class]." +msgstr "创建 [param class] 的实例。" + +msgid "Returns whether this [param class] is enabled or not." +msgstr "返回这个 [param class] 是否已启用。" + +msgid "" +"Returns whether [param inherits] is an ancestor of [param class] or not." +msgstr "返回 [param inherits] 是否为 [param class] 的祖先。" + +msgid "" +"Override this method to define what items in [param candidates] should be " +"displayed.\n" +"Both [param candidates] and the return is a [Array] of [Dictionary], see " +"[method get_code_completion_option] for [Dictionary] content." +msgstr "" +"覆盖此方法以确定应该显示 [param candidates] 中的哪些项。\n" +"参数 [param candidates] 和返回值都是一个 [Array] 的 [Dictionary],而 " +"[Dictionary] 的键值,详见 [method get_code_completion_option]。" + +msgid "" +"Override this method to define what happens when the user requests code " +"completion. If [param force] is true, any checks should be bypassed." +msgstr "" +"覆盖此方法以定义当用户请求代码完成时发生的情况。如果 [param force] 为真,会绕" +"过任何检查。" + +msgid "" +"Adds a brace pair.\n" +"Both the start and end keys must be symbols. Only the start key has to be " +"unique." +msgstr "" +"添加一对大括号。\n" +"开始和结束键都必须是符号。只有开始键必须是唯一的。" + +msgid "" +"Submits an item to the queue of potential candidates for the autocomplete " +"menu. Call [method update_code_completion_options] to update the list.\n" +"[b]Note:[/b] This list will replace all current candidates." +msgstr "" +"将补全项提交到自动补全菜单的潜在候选队列。调用 [method " +"update_code_completion_options] 来更新列表。\n" +"[b]注意:[/b] 此列表将替换所有当前候选。" + +msgid "" +"Returns if the given line is foldable, that is, it has indented lines right " +"below it or a comment / string block." +msgstr "" +"返回给定的行是否可折叠,也就是说,它的正下方有缩进的行或注释 / 字符串块。" + +msgid "Cancels the autocomplete menu." +msgstr "取消自动补全菜单。" + +msgid "Clears all bookmarked lines." +msgstr "清除所有书签行。" + +msgid "Clears all breakpointed lines." +msgstr "清除所有断点行。" + +msgid "Removes all comment delimiters." +msgstr "移除所有注释分隔符。" + +msgid "Clears all executed lines." +msgstr "清除所有已执行的行。" + +msgid "Removes all string delimiters." +msgstr "移除所有字符串分隔符。" + +msgid "" +"Inserts the selected entry into the text. If [param replace] is true, any " +"existing text is replaced rather then merged." +msgstr "" +"将选定的条目插入文本中。如果 [param replace] 为真,任何现有的文本都会被替换," +"而不是合并。" + +msgid "" +"Perform an indent as if the user activated the \"ui_text_indent\" action." +msgstr "执行一个缩进,就像用户触发了“ui_text_indent”动作一样。" + +msgid "" +"Folds all lines that are possible to be folded (see [method can_fold_line])." +msgstr "折叠所有可能被折叠的行(参见 [method can_fold_line])。" + +msgid "Folds the given line, if possible (see [method can_fold_line])." +msgstr "如果可能,折叠给定的行(参见 [method can_fold_line])。" + +msgid "Gets all bookmarked lines." +msgstr "获取所有书签行。" + +msgid "Gets all breakpointed lines." +msgstr "获取所有断点行。" + +msgid "" +"Gets the completion option at [param index]. The return [Dictionary] has the " +"following key-values:\n" +"[code]kind[/code]: [enum CodeCompletionKind]\n" +"[code]display_text[/code]: Text that is shown on the autocomplete menu.\n" +"[code]insert_text[/code]: Text that is to be inserted when this item is " +"selected.\n" +"[code]font_color[/code]: Color of the text on the autocomplete menu.\n" +"[code]icon[/code]: Icon to draw on the autocomplete menu.\n" +"[code]default_value[/code]: Value of the symbol." +msgstr "" +"获取在 [param index] 处的补全选项。返回的 [Dictionary] 有以下键值。\n" +"[code]kind[/code]:[enum CodeCompletionKind]\n" +"[code]display_text[/code] :在自动补全菜单上显示的文本。\n" +"[code]insert_text[/code] :当选中这个选项时要插入的文本。\n" +"[code]font_color[/code]:自动补全菜单上文本的颜色。\n" +"[code]icon[/code] :在自动补全菜单上绘制的图标。\n" +"[code]default_value[/code]:符号的值。" + +msgid "" +"Gets all completion options, see [method get_code_completion_option] for " +"return content." +msgstr "获取所有补全选项,返回值见 [method get_code_completion_option]。" + +msgid "Gets the index of the current selected completion option." +msgstr "获取当前已选定补全项的索引。" + +msgid "Gets the end key for a string or comment region index." +msgstr "获取字符串或注释块索引的结束键。" + +msgid "Gets the start key for a string or comment region index." +msgstr "获取字符串或注释块索引的开始键。" + +msgid "Gets all executing lines." +msgstr "获取所有正在执行的行。" + +msgid "Returns all lines that are current folded." +msgstr "返回当前折叠的所有行。" + +msgid "" +"Returns the full text with char [code]0xFFFF[/code] at the caret location." +msgstr "返回在插入符号位置带有 [code]0xFFFF[/code] 字符的全文。" + +msgid "" +"Returns the full text with char [code]0xFFFF[/code] at the cursor location." +msgstr "返回在光标位置处带有 [code]0xFFFF[/code] 字符的全文。" + +msgid "Returns [code]true[/code] if comment [param start_key] exists." +msgstr "如果注释的 [param start_key] 存在,返回 [code]true[/code] 。" + +msgid "Returns [code]true[/code] if string [param start_key] exists." +msgstr "如果字符串的 [param start_key] 存在,返回 [code]true[/code] 。" + +msgid "" +"Indents selected lines, or in the case of no selection the caret line by one." +msgstr "缩进选定的行,或者在没有选择的情况下,将光标行缩进一个。" + +msgid "Returns whether the line at the specified index is bookmarked or not." +msgstr "返回指定索引处的行是否添加了书签。" + +msgid "Returns whether the line at the specified index is breakpointed or not." +msgstr "返回指定索引处的行是否有断点。" + +msgid "" +"Returns whether the line at the specified index is marked as executing or " +"not." +msgstr "返回指定索引处的行是否标记为正在执行。" + +msgid "Returns whether the line at the specified index is folded or not." +msgstr "返回指定索引处的行是否折叠。" + +msgid "Removes the comment delimiter with [param start_key]." +msgstr "移除带有 [param start_key] 的注释分隔符。" + +msgid "Removes the string delimiter with [param start_key]." +msgstr "移除带有 [param start_key] 的字符串分隔符。" + +msgid "" +"Emits [signal code_completion_requested], if [param force] is true will " +"bypass all checks. Otherwise will check that the caret is in a word or in " +"front of a prefix. Will ignore the request if all current options are of " +"type file path, node path or signal." +msgstr "" +"发出 [signal code_completion_requested],如果 [param force] 为真将绕过所有检" +"查。否则,将检查光标是否在一个词中或在一个前缀的前面。如果当前所有选项都是文" +"件路径、节点路径或信号类型,将忽略该请求。" + +msgid "Sets the current selected completion option." +msgstr "设置当前选定的补全选项。" + +msgid "Sets the code hint text. Pass an empty string to clear." +msgstr "设置代码提示文本。传递一个空字符串来清除。" + +msgid "Sets if the code hint should draw below the text." +msgstr "设置代码提示是否应绘制在文本下方。" + +msgid "Sets the line as bookmarked." +msgstr "将该行设置为书签。" + +msgid "Sets the line as breakpointed." +msgstr "将该行设置为断点。" + +msgid "Sets the line as executing." +msgstr "将该行设置为正在执行。" + +msgid "Toggle the folding of the code block at the given line." +msgstr "在给定行切换代码块的折叠。" + +msgid "Unfolds all lines, folded or not." +msgstr "展开所有行,无论是否被折叠。" + +msgid "Unfolds all lines that were previously folded." +msgstr "展开之前被折叠的所有行。" + +msgid "" +"Unindents selected lines, or in the case of no selection the caret line by " +"one. Same as performing \"ui_text_unindent\" action." +msgstr "" +"解除所选行的缩进,或者在没有选择的情况下,将光标行缩进一个。与触" +"发“ui_text_unindent ”动作相同。" + +msgid "" +"Submits all completion options added with [method " +"add_code_completion_option]. Will try to force the autoccomplete menu to " +"popup, if [param force] is [code]true[/code].\n" +"[b]Note:[/b] This will replace all current candidates." +msgstr "" +"提交所有用 [method add_code_completion_option] 添加的补全选项。如果 [param " +"force] 是 [code]true[/code],将尝试强制弹出自动补全菜单 。\n" +"[b]注意:[/b] 这将取代所有当前的候补选项。" + +msgid "Sets the font [Color]." +msgstr "设置字体颜色 [Color]。" + +msgid "Sets the highlight [Color] of text selections." +msgstr "设置文本选择的高亮 [Color] 颜色。" + +msgid "Sets the spacing between the lines." +msgstr "设置行间距。" + +msgid "Sets the default [Font]." +msgstr "设置默认的字体 [Font]。" + +msgid "Sets default font size." +msgstr "设置默认的字体大小。" + +msgid "" +"Sets a custom [Texture2D] to draw in the line folding gutter when a line is " +"folded and can be unfolded." +msgstr "" +"当行被折叠且可以展开时,设置要在行折叠装订线中绘制的一个自定义 [Texture2D]。" + +msgid "Sets a custom [Texture2D] to draw at the end of a folded line." +msgstr "设置要绘制在折叠行末尾的一个自定义 [Texture2D]。" + +msgid "Sets a custom [Texture2D] for space text characters." +msgstr "为空格文本字符,设置一个自定义 [Texture2D]。" + +msgid "Sets a custom [Texture2D] for tab text characters." +msgstr "为制表符文本字符,设置一个自定义 [Texture2D]。" + +msgid "[StyleBox] for the code completion popup." +msgstr "用于代码补全弹窗的 [StyleBox]。" + +msgid "" +"Sets the [StyleBox] when in focus. The [code]focus[/code] [StyleBox] is " +"displayed [i]over[/i] the base [StyleBox], so a partially transparent " +"[StyleBox] should be used to ensure the base [StyleBox] remains visible. A " +"[StyleBox] that represents an outline or an underline works well for this " +"purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] " +"resource. Note that disabling the focus visual effect will harm keyboard/" +"controller navigation usability, so this is not recommended for " +"accessibility reasons." +msgstr "" +"设置当获得焦点时的 [StyleBox]。该 [code]focus[/code] [StyleBox] 显示在基础 " +"[StyleBox] [i]之上[/i],因此应使用部分透明的 [StyleBox] 以确保基础 " +"[StyleBox] 保持可见。表示轮廓或下划线的 [StyleBox] 非常适合此目的。要禁用焦点" +"视觉效果,请指定一个 [StyleBoxEmpty] 资源。请注意,禁用焦点视觉效果会破坏键" +"盘 / 控制器导航的可用性,出于可访问性原因,不建议这样做。" + +msgid "Sets the [StyleBox]." +msgstr "设置该 [StyleBox]。" + +msgid "Base node for 2D collision objects." +msgstr "2D 碰撞对象的基础节点。" + +msgid "" +"CollisionObject2D is the base class for 2D physics objects. It can hold any " +"number of 2D collision [Shape2D]s. Each shape must be assigned to a [i]shape " +"owner[/i]. The CollisionObject2D 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]Note:[/b] Only collisions between objects within the same canvas " +"([Viewport] canvas or [CanvasLayer]) are supported. The behavior of " +"collisions between objects in different canvases is undefined." +msgstr "" +"CollisionObject2D 是 2D 物理对象的基类,可以容纳任意数量的 2D 碰撞形状 " +"[Shape2D]。每个形状必须分配给一个[i]形状所有者[/i]。CollisionObject2D 可以拥" +"有任意数量的形状所有者。形状所有者不是节点,也不会出现在编辑器中,但可以通过" +"代码使用 [code]shape_owner_*[/code] 方法访问。\n" +"[b]注意:[/b]仅支持相同画布中不同对象的碰撞([Viewport] 画布或 " +"[CanvasLayer])。不同画布中的对象之间的碰撞行为是未定义的。" + +msgid "" +"Accepts unhandled [InputEvent]s. [param shape_idx] is the child index of the " +"clicked [Shape2D]. Connect to the [code]input_event[/code] signal to easily " +"pick up these events.\n" +"[b]Note:[/b] [method _input_event] requires [member input_pickable] to be " +"[code]true[/code] and at least one [member collision_layer] bit to be set." +msgstr "" +"接收未处理的 [InputEvent]。[param shape_idx] 是被点击的 [Shape2D] 的子索引。" +"连接到 [code]input_event[/code] 信号即可轻松获取这些事件。\n" +"[b]注意:[/b][method _input_event] 要求 [member input_pickable] 为 " +"[code]true[/code],并且至少要设置一个 [member collision_layer] 位。" + +msgid "" +"Creates a new shape owner for the given object. Returns [code]owner_id[/" +"code] of the new owner for future reference." +msgstr "" +"为给定对象创建一个新的形状所有者。返回 [code]owner_id[/code]的新所有者,供将" +"来引用。" + +msgid "Returns the object's [RID]." +msgstr "返回对象的 [RID]。" + +msgid "" +"Returns an [Array] of [code]owner_id[/code] identifiers. You can use these " +"ids in other methods that take [code]owner_id[/code] as an argument." +msgstr "" +"返回一个 [code]owner_id[/code] 标识符的 [Array]。你可以在其他使用 " +"[code]owner_id[/code] 作为参数的方法中使用这些 ID。" + +msgid "If [code]true[/code], the shape owner and its shapes are disabled." +msgstr "如果为 [code]true[/code],则禁用形状所有者及其形状。" + +msgid "" +"Returns [code]true[/code] if collisions for the shape owner originating from " +"this [CollisionObject2D] will not be reported to collided with " +"[CollisionObject2D]s." +msgstr "" +"返回 [code]true[/code],如果源于这个 [CollisionObject2D] 的形状所有者的碰撞不" +"会被报告给 [CollisionObject2D]。" + +msgid "Removes the given shape owner." +msgstr "移除给定形状的所有者。" + +msgid "Returns the [code]owner_id[/code] of the given shape." +msgstr "返回指定形状的 [code]owner_id[/code]。" + +msgid "Adds a [Shape2D] to the shape owner." +msgstr "给形状所有者添加一个 [Shape2D]。" + +msgid "Removes all shapes from the shape owner." +msgstr "移除形状所有者的所有形状。" + +msgid "Returns the parent object of the given shape owner." +msgstr "返回给定形状所有者的父对象。" + +msgid "Returns the number of shapes the given shape owner contains." +msgstr "返回给定形状所有者包含的形状数量。" + +msgid "Returns the shape owner's [Transform2D]." +msgstr "返回形状所有者的 [Transform2D]。" + +msgid "Removes a shape from the given shape owner." +msgstr "从给定的形状所有者中移除一个形状。" + +msgid "If [code]true[/code], disables the given shape owner." +msgstr "如果为 [code]true[/code],则禁用给定的形状所有者。" + +msgid "Sets the [Transform2D] of the given shape owner." +msgstr "设置给定形状所有者的 [Transform2D]。" + +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." +msgstr "" +"如果为 [code]true[/code],则该对象是可拾取的。可拾取的对象可以检测鼠标指针的" +"进入/离开,鼠标位于其中时,就会报告输入事件。要求至少设置一个 [member " +"collision_layer] 位。" + +msgid "" +"When [member Node.process_mode] is set to [constant Node." +"PROCESS_MODE_DISABLED], remove from the physics simulation to stop all " +"physics interactions with this [CollisionObject2D].\n" +"Automatically re-added to the physics simulation when the [Node] is " +"processed again." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,从物理仿真中移除,停止与此 [CollisionObject2D] 的所有物理交互。\n" +"当该 [Node] 再次被处理时,会自动重新加入到物理仿真中。" -msgid "The [ClassDB] singleton." -msgstr "[ClassDB] 单例。" +msgid "" +"When [member Node.process_mode] is set to [constant Node." +"PROCESS_MODE_DISABLED], do not affect the physics simulation." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,不影响物理仿真。" -msgid "The [Engine] singleton." -msgstr "[Engine] 单例。" +msgid "Base node for collision objects." +msgstr "碰撞对象的基础节点。" -msgid "The [IP] singleton." -msgstr "[IP] 单例。" +msgid "" +"Receives unhandled [InputEvent]s. [param position] is the location in world " +"space of the mouse pointer on the surface of the shape with index [param " +"shape_idx] and [param normal] is the normal vector of the surface at that " +"point. Connect to the [signal input_event] signal to easily pick up these " +"events.\n" +"[b]Note:[/b] [method _input_event] requires [member input_ray_pickable] to " +"be [code]true[/code] and at least one [member collision_layer] bit to be set." +msgstr "" +"接收未处理的 [InputEvent]。[param position] 是鼠标指针在索引为 [param " +"shape_idx] 的形状表面上的世界空间位置,[param normal] 是该点表面的法向量。连" +"接到 [signal input_event] 信号即可轻松获取这些事件。\n" +"[b]注意:[/b][method _input_event] 要求 [member input_ray_pickable] 为 " +"[code]true[/code],并且至少要设置一个 [member collision_layer] 位。" -msgid "The [Input] singleton." -msgstr "[Input] 单例。" +msgid "" +"When [member Node.process_mode] is set to [constant Node." +"PROCESS_MODE_DISABLED], remove from the physics simulation to stop all " +"physics interactions with this [CollisionObject3D].\n" +"Automatically re-added to the physics simulation when the [Node] is " +"processed again." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,从物理仿真中移除,停止与此 [CollisionObject3D] 的所有物理交互。\n" +"当该 [Node] 再次被处理时,会自动重新加入到物理仿真中。" -msgid "The [InputMap] singleton." -msgstr "[InputMap] 单例。" +msgid "Defines a 2D collision polygon." +msgstr "定义 2D 碰撞多边形。" + +msgid "Collision build mode. Use one of the [enum BuildMode] constants." +msgstr "碰撞构建模式。使用 [enum BuildMode] 常量之一。" + +msgid "If [code]true[/code], no collisions will be detected." +msgstr "如果为 [code]true[/code],则不会检测到碰撞。" msgid "" -"The [JavaClassWrapper] singleton.\n" -"[b]Note:[/b] Only implemented on Android." +"If [code]true[/code], only edges that face up, relative to " +"[CollisionPolygon2D]'s rotation, will collide with other objects.\n" +"[b]Note:[/b] This property has no effect if this [CollisionPolygon2D] is a " +"child of an [Area2D] node." msgstr "" -"[JavaClassWrapper] 单例。\n" -"[b]注意:[/b]仅在 Android 上实现。" +"如果为 [code]true[/code],则只有面朝上的边缘才会与其他对象发生碰撞,方向是相" +"对于 [CollisionPolygon2D] 的旋转而言的。\n" +"[b]注意:[/b]如果这个 [CollisionPolygon2D] 是 [Area2D] 节点的子节点,则这个属" +"性无效。" -msgid "The [Marshalls] singleton." -msgstr "[Marshalls] 单例。" +msgid "" +"The margin used for one-way collision (in pixels). Higher values will make " +"the shape thicker, and work better for colliders that enter the polygon at a " +"high velocity." +msgstr "" +"用于单向碰撞的边距(以像素为单位)。较高的值将使形状更厚,并且对于以高速进入" +"多边形的对撞机来说效果更好。" -msgid "The [NavigationMeshGenerator] singleton." -msgstr "[NavigationMeshGenerator] 单例。" +msgid "Collisions will include the polygon and its contained area." +msgstr "碰撞将包括多边形及其包含的区域。" -msgid "The [OS] singleton." -msgstr "[OS] 单例。" +msgid "Collisions will only include the polygon edges." +msgstr "碰撞将仅包括多边形边缘。" -msgid "The [Performance] singleton." -msgstr "[Performance] 单例。" +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 "The [ProjectSettings] singleton." -msgstr "[ProjectSettings] 单例。" +msgid "" +"Length that the resulting collision extends in either direction " +"perpendicular to its polygon." +msgstr "产生的碰撞在垂直于其多边形的任一方向上延伸的长度。" -msgid "The [ResourceLoader] singleton." -msgstr "[ResourceLoader] 单例。" +msgid "If [code]true[/code], no collision will be produced." +msgstr "如果为 [code]true[/code],将不会产生碰撞。" -msgid "The [ResourceSaver] singleton." -msgstr "[ResourceSaver] 单例。" +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]成员。" -msgid "The [Time] singleton." -msgstr "[Time] 单例。" +msgid "Node that represents collision shape data in 2D space." +msgstr "表示2D空间中的碰撞形状数据的节点。" -msgid "The [TranslationServer] singleton." -msgstr "[TranslationServer] 单例。" +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 "Top-left corner." -msgstr "左上角。" +msgid "Physics introduction" +msgstr "物理介绍" -msgid "Top-right corner." -msgstr "右上角。" +msgid "" +"A disabled collision shape has no effect in the world. This property should " +"be changed with [method Object.set_deferred]." +msgstr "" +"禁用的碰撞形状在世界中没有影响。这个属性应该用 [method Object.set_deferred] " +"改变。" -msgid "Bottom-right corner." -msgstr "右下角。" +msgid "" +"Sets whether this collision shape should only detect collision on one side " +"(top or bottom).\n" +"[b]Note:[/b] This property has no effect if this [CollisionShape2D] is a " +"child of an [Area2D] node." +msgstr "" +"设置此碰撞形状是否仅应检测到一侧(顶部或底部)的碰撞。\n" +"[b]注意:[/b]如果这个 [CollisionShape2D] 是 [Area2D] 节点的子节点,则这个属性" +"无效。" -msgid "Bottom-left corner." -msgstr "左下角。" +msgid "" +"The margin used for one-way collision (in pixels). Higher values will make " +"the shape thicker, and work better for colliders that enter the shape at a " +"high velocity." +msgstr "" +"用于单向碰撞的边距(以像素为单位)。较高的值将使形状更厚,并且对于高速进入形" +"状的对撞机来说效果更好。" + +msgid "The actual shape owned by this collision shape." +msgstr "该碰撞形状拥有的实际形状。" + +msgid "Node that represents collision shape data in 3D space." +msgstr "表示 3D 空间中的碰撞形状数据的节点。" msgid "" -"General vertical alignment, usually used for [Separator], [ScrollBar], " -"[Slider], etc." -msgstr "通用垂直对齐,常用于 [Separator]、[ScrollBar]、[Slider] 等。" +"Editor facility for creating and editing collision shapes in 3D space. Set " +"the [member shape] property to configure the shape. [b]IMPORTANT[/b]: this " +"is an Editor-only helper to create shapes, use [method CollisionObject3D." +"shape_owner_get_shape] to get the actual shape.\n" +"You can use this node to represent all sorts of collision shapes, for " +"example, add this to an [Area3D] to give it a detection shape, or add it to " +"a [PhysicsBody3D] to create a solid object.\n" +"[b]Warning:[/b] A non-uniformly scaled CollisionShape3D node will probably " +"not function as expected. Please make sure to keep its scale uniform (i.e. " +"the same on all axes), and change the size of its [member shape] resource " +"instead." +msgstr "" +"用于在 3D 空间中创建和编辑碰撞形状的编辑器工具。请设置 [member shape] 属性来" +"配置形状。[b]重要[/b]:这是一个仅供编辑器使用的用于创建形状的助手类,使用 " +"[method CollisionObject3D.shape_owner_get_shape] 来获取实际形状。\n" +"您可以使用此节点来表示各种碰撞形状,例如,将其添加到 [Area3D] 以为其提供检测" +"形状,或将其添加到 [PhysicsBody3D] 以创建实体对象。\n" +"[b]警告:[/b]非均匀缩放的 CollisionShape3D 节点可能无法按预期运行。请确保保持" +"其比例统一(即在所有轴上相同),并改为更改其 [member shape] 资源的大小。" msgid "" -"General horizontal alignment, usually used for [Separator], [ScrollBar], " -"[Slider], etc." -msgstr "通用水平对齐,常用于 [Separator]、[ScrollBar]、[Slider] 等。" +"If this method exists within a script it will be called whenever the shape " +"resource has been modified." +msgstr "如果脚本中存在此方法,则只要修改形状资源,就会调用该方法。" -msgid "Horizontal left alignment, usually for text-derived classes." -msgstr "水平左对齐,常用于文本派生类。" +msgid "A disabled collision shape has no effect in the world." +msgstr "禁用的碰撞形状对世界没有任何影响。" -msgid "Horizontal center alignment, usually for text-derived classes." -msgstr "水平居中对齐,常用于文本派生类。" +msgid "Color built-in type, in RGBA format." +msgstr "颜色内置类型,格式为 RGBA。" + +msgid "" +"A color represented in RGBA format by red ([member r]), green ([member g]), " +"blue ([member b]), and alpha ([member a]) components. Each component is a 16-" +"bit floating-point value, usually ranging from 0 to 1. Some properties (such " +"as [member CanvasItem.modulate]) may support values greater than 1, for " +"overbright or High Dynamic Range colors. If you want to supply values in a " +"range of 0 to 255, you should use [method @GDScript.Color8].\n" +"Colors can also be created by name from a set of standardized colors, " +"through the [String] constructor, [method from_string], or by directly " +"fetching the color constants documented here. The standardized color set is " +"based on the [url=https://en.wikipedia.org/wiki/X11_color_names]X11 color " +"names[/url], with the addition of [constant TRANSPARENT].\n" +"[b]Note:[/b] In a boolean context, a Color will evaluate to [code]false[/" +"code] if it's equal to [code]Color(0, 0, 0, 1)[/code] (opaque black). " +"Otherwise, a Color will always evaluate to [code]true[/code].\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"color_constants.png]Color constants cheatsheet[/url]" +msgstr "" +"由红([member r])、绿([member g])、蓝([member b])和 alpha([member a])" +"分量表示的 RGBA 格式的颜色。每个分量都是一个 16 位浮点值,通常介于 0 到 1 之" +"间。对于过亮或高动态范围颜色,某些属性(例如 [member CanvasItem.modulate])可" +"能支持大于 1 的值。使用 [method @GDScript.Color8] 提供 0 到 255 范围内的" +"值。\n" +"也可以通过 [String] 构造函数、[method from_string] 或通过直接获取此处记录的颜" +"色常量,从一组标准化颜色中按名称创建颜色。标准化颜色集基于 [url=https://en." +"wikipedia.org/wiki/X11_color_names]X11 颜色名称[/url],并添加了 [constant " +"TRANSPARENT]。\n" +"[b]注意:[/b]在布尔上下文中,等于 [code]Color(0, 0, 0, 1)[/code](不透明的黑" +"色)的 Color 将被评估为 [code]false[/code]。否则,Color 将始终被评估为 " +"[code]true[/code]。\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"color_constants.png]Color 常量速查表[/url]" -msgid "Horizontal right alignment, usually for text-derived classes." -msgstr "水平右对齐,常用于文本派生类。" +msgid "2D GD Paint Demo" +msgstr "2D GD 画图演示" -msgid "Vertical top alignment, usually for text-derived classes." -msgstr "垂直上对齐,常用于文本派生类。" +msgid "Tween Demo" +msgstr "Tween 演示" -msgid "Vertical center alignment, usually for text-derived classes." -msgstr "垂直居中对齐,常用于文本派生类。" +msgid "GUI Drag And Drop Demo" +msgstr "GUI 拖放演示" -msgid "Vertical bottom alignment, usually for text-derived classes." -msgstr "垂直下对齐,常用于文本派生类。" +msgid "" +"Constructs a default [Color] from opaque black. This is the same as " +"[constant BLACK].\n" +"[b]Note:[/b] in C#, constructs an empty color with all of its components set " +"to [code]0.0[/code] (transparent black)." +msgstr "" +"用不透明的黑色构造默认的 [Color],与 [constant BLACK] 相同。\n" +"[b]注意:[/b]在 C# 中构造的空颜色,其所有分量都为 [code]0.0[/code](透明" +"黑)。" -msgid "Escape key." -msgstr "ESC 键。" +msgid "Constructs a [Color] as a copy of the given [Color]." +msgstr "构造给定 [Color] 的副本。" -msgid "Tab key." -msgstr "Tab 键。" +msgid "" +"Constructs a [Color] from RGB values, typically between 0.0 and 1.0. [member " +"a] is set to 1.0.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(0.2, 1.0, 0.7) # Similar to `Color8(51, 255, 178, 255)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(0.2f, 1.0f, 0.7f); // Similar to `Color.Color8(51, " +"255, 178, 255)`\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从通常介于 0.0 和 1.0 之间的 RGB 值构造一个 [Color]。[member a] 被设置为 " +"1.0。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(0.2, 1.0, 0.7) # 类似于 `Color8(51, 255, 178, 255)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(0.2f, 1.0f, 0.7f); // 类似于 `Color.Color8(51, 255, " +"178, 255)`\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Shift + Tab key." -msgstr "Shift + Tab 键。" +msgid "" +"Constructs a [Color] from RGBA values, typically between 0.0 and 1.0.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(0.2, 1.0, 0.7, 0.8) # Similar to `Color8(51, 255, 178, " +"204)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(0.2f, 1.0f, 0.7f, 0.8f); // Similar to `Color." +"Color8(51, 255, 178, 255, 204)`\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从通常介于 0.0 和 1.0 之间的 RGBA 值构造一个 [Color]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(0.2, 1.0, 0.7, 0.8) # 类似于 `Color8(51, 255, 178, 204)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(0.2f, 1.0f, 0.7f, 0.8f); // 类似于 `Color.Color8(51, " +"255, 178, 255, 204)`\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Backspace key." -msgstr "退格键。" +msgid "" +"Returns a new color resulting from overlaying this color over the given " +"color. In a painting program, you can imagine it as the [param over] color " +"painted over this color (including alpha).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var bg = Color(0.0, 1.0, 0.0, 0.5) # Green with alpha of 50%\n" +"var fg = Color(1.0, 0.0, 0.0, 0.5) # Red with alpha of 50%\n" +"var blended_color = bg.blend(fg) # Brown with alpha of 75%\n" +"[/gdscript]\n" +"[csharp]\n" +"var bg = new Color(0.0f, 1.0f, 0.0f, 0.5f); // Green with alpha of 50%\n" +"var fg = new Color(1.0f, 0.0f, 0.0f, 0.5f); // Red with alpha of 50%\n" +"Color blendedColor = bg.Blend(fg); // Brown with alpha of 75%\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回将该颜色混合到给定颜色上所产生的新颜色。在绘画程序中,您可以将其想象为在" +"该颜色(包括 alpha)上绘制的 [param over] 颜色。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var bg = Color(0.0, 1.0, 0.0, 0.5) # 50% 不透明的绿色\n" +"var fg = Color(1.0, 0.0, 0.0, 0.5) # 50% 不透明的红色\n" +"var blended_color = bg.blend(fg) # 75% 不透明的棕色\n" +"[/gdscript]\n" +"[csharp]\n" +"var bg = new Color(0.0f, 1.0f, 0.0f, 0.5f); // 50% 不透明的绿色\n" +"var fg = new Color(1.0f, 0.0f, 0.0f, 0.5f); // 50% 不透明的红色\n" +"Color blendedColor = bg.Blend(fg); // 75% 不透明的棕色\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Return key (on the main keyboard)." -msgstr "回车键(位于主键盘)。" +msgid "" +"Returns a new color resulting from making this color darker by the specified " +"[param amount] (ratio from 0.0 to 1.0). See also [method lightened].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var green = Color(0.0, 1.0, 0.0)\n" +"var darkgreen = green.darkened(0.2) # 20% darker than regular green\n" +"[/gdscript]\n" +"[csharp]\n" +"var green = new Color(0.0f, 1.0f, 0.0f);\n" +"Color darkgreen = green.Darkened(0.2f); // 20% darker than regular green\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回通过指定 [param amount](从 0.0 到 1.0 的比率)使该颜色变暗而产生的新颜" +"色。另见 [method lightened]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var green = Color(0.0, 1.0, 0.0)\n" +"var darkgreen = green.darkened(0.2) # 比普通的绿色深 20%\n" +"[/gdscript]\n" +"[csharp]\n" +"var green = new Color(0.0f, 1.0f, 0.0f);\n" +"Color darkgreen = green.Darkened(0.2f); // 比普通的绿色深 20%\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Enter key on the numeric keypad." -msgstr "小键盘区的回车键。" +msgid "" +"Returns a new color from [param rgba], an HTML hexadecimal color string. " +"[param rgba] is not case-sensitive, and may be prefixed by a hash sign " +"([code]#[/code]).\n" +"[param rgba] must be a valid three-digit or six-digit hexadecimal color " +"string, and may contain an alpha channel value. If [param rgba] does not " +"contain an alpha channel value, an alpha channel value of 1.0 is applied. If " +"[param rgba] is invalid, returns an empty color.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var blue = Color.html(\"#0000ff\") # blue is Color(0.0, 0.0, 1.0, 1.0)\n" +"var green = Color.html(\"#0F0\") # green is Color(0.0, 1.0, 0.0, 1.0)\n" +"var col = Color.html(\"663399cc\") # col is Color(0.4, 0.2, 0.6, 0.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var blue = Color.FromHtml(\"#0000ff\"); // blue is Color(0.0, 0.0, 1.0, " +"1.0)\n" +"var green = Color.FromHtml(\"#0F0\"); // green is Color(0.0, 1.0, 0.0, " +"1.0)\n" +"var col = Color.FromHtml(\"663399cc\"); // col is Color(0.4, 0.2, 0.6, 0.8)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从 HTML 十六进制颜色字符串 [param rgba] 返回一个新颜色。[param rgba] 不区分大" +"小写,可以使用哈希符号([code]#[/code])作为前缀。\n" +"[param rgba] 必须是有效的三位或六位十六进制颜色字符串,并且可以包含 alpha 通" +"道值。如果 [param rgba] 不包含 alpha 通道值,则应用 alpha 通道值 1.0。如果 " +"[param rgba] 无效,则返回一个空颜色。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var blue = Color.html(\"#0000ff\") # blue 为 Color(0.0, 0.0, 1.0, 1.0)\n" +"var green = Color.html(\"#0F0\") # green 为 Color(0.0, 1.0, 0.0, 1.0)\n" +"var col = Color.html(\"663399cc\") # col 为 Color(0.4, 0.2, 0.6, 0.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var blue = Color.FromHtml(\"#0000ff\"); // blue 为 Color(0.0, 0.0, 1.0, " +"1.0)\n" +"var green = Color.FromHtml(\"#0F0\"); // green 为 Color(0.0, 1.0, 0.0, " +"1.0)\n" +"var col = Color.FromHtml(\"663399cc\"); // col 为 Color(0.4, 0.2, 0.6, 0.8)\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Insert key." -msgstr "Insert 键。" +msgid "" +"Returns the linear interpolation between this color's components and [param " +"to]'s components. The interpolation factor [param weight] should be between " +"0.0 and 1.0 (inclusive). See also [method @GlobalScope.lerp].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var red = Color(1.0, 0.0, 0.0)\n" +"var aqua = Color(0.0, 1.0, 0.8)\n" +"\n" +"red.lerp(aqua, 0.2) # Returns Color(0.8, 0.2, 0.16)\n" +"red.lerp(aqua, 0.5) # Returns Color(0.5, 0.5, 0.4)\n" +"red.lerp(aqua, 1.0) # Returns Color(0.0, 1.0, 0.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var red = new Color(1.0f, 0.0f, 0.0f);\n" +"var aqua = new Color(0.0f, 1.0f, 0.8f);\n" +"\n" +"red.Lerp(aqua, 0.2f); // Returns Color(0.8f, 0.2f, 0.16f)\n" +"red.Lerp(aqua, 0.5f); // Returns Color(0.5f, 0.5f, 0.4f)\n" +"red.Lerp(aqua, 1.0f); // Returns Color(0.0f, 1.0f, 0.8f)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回将该颜色的分量和 [param to] 的分量进行线性插值的结果。插值系数 [param " +"weight] 应该在 0.0 和 1.0 之间(闭区间)。另请参阅 [method @GlobalScope." +"lerp]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var red = Color(1.0, 0.0, 0.0)\n" +"var aqua = Color(0.0, 1.0, 0.8)\n" +"\n" +"red.lerp(aqua, 0.2) # 返回 Color(0.8, 0.2, 0.16)\n" +"red.lerp(aqua, 0.5) # 返回 Color(0.5, 0.5, 0.4)\n" +"red.lerp(aqua, 1.0) # 返回 Color(0.0, 1.0, 0.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var red = new Color(1.0f, 0.0f, 0.0f);\n" +"var aqua = new Color(0.0f, 1.0f, 0.8f);\n" +"\n" +"red.Lerp(aqua, 0.2f); // 返回 Color(0.8f, 0.2f, 0.16f)\n" +"red.Lerp(aqua, 0.5f); // 返回 Color(0.5f, 0.5f, 0.4f)\n" +"red.Lerp(aqua, 1.0f); // 返回 Color(0.0f, 1.0f, 0.8f)\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Delete key." -msgstr "Delete 键。" +msgid "" +"Returns a new color resulting from making this color lighter by the " +"specified [param amount], which should be a ratio from 0.0 to 1.0. See also " +"[method darkened].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var green = Color(0.0, 1.0, 0.0)\n" +"var light_green = green.lightened(0.2) # 20% lighter than regular green\n" +"[/gdscript]\n" +"[csharp]\n" +"var green = new Color(0.0f, 1.0f, 0.0f);\n" +"Color lightGreen = green.Lightened(0.2f); // 20% lighter than regular green\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回通过指定 [param amount](从 0.0 到 1.0 的比率)使该颜色变亮而产生的新颜" +"色。另见 [method darkened]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var green = Color(0.0, 1.0, 0.0)\n" +"var light_green = green.lightened(0.2) # 比普通的绿色要淡 20%\n" +"[/gdscript]\n" +"[csharp]\n" +"var green = new Color(0.0f, 1.0f, 0.0f);\n" +"Color lightGreen = green.Lightened(0.2f); // 比普通的绿色要淡 20%\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Pause key." -msgstr "Pause 键。" +msgid "" +"Returns the color converted to a 32-bit integer in ABGR format (each " +"component is 8 bits). ABGR is the reversed version of the default RGBA " +"format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_abgr32()) # Prints 4281565439\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToAbgr32()); // Prints 4281565439\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 ABGR 格式(每个分量为 8 位)的 32 位整数的颜色。ABGR 是默认 RGBA " +"格式的反转版本。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_abgr32()) # 输出 4281565439\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToAbgr32()); // 输出 4281565439\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Print Screen key." -msgstr "Print Screen 键。" +msgid "" +"Returns the color converted to a 64-bit integer in ABGR format (each " +"component is 16 bits). ABGR is the reversed version of the default RGBA " +"format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_abgr64()) # Prints -225178692812801\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToAbgr64()); // Prints -225178692812801\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 ABGR 格式(每个分量为 16 位)的 64 位整数的颜色。ABGR 是默认 RGBA " +"格式的反转版本。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_abgr64()) # 输出 -225178692812801\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToAbgr64()); // 输出 -225178692812801\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "System Request key." -msgstr "System Request 键。" +msgid "" +"Returns the color converted to a 32-bit integer in ARGB format (each " +"component is 8 bits). ARGB is more compatible with DirectX.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_argb32()) # Prints 4294934323\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToArgb32()); // Prints 4294934323\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 ARGB 格式(每个分量为 8 位)的 32 位整数的颜色。ARGB 与 DirectX 更" +"兼容。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_argb32()) # 输出 4294934323\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToArgb32()); // 输出 4294934323\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Clear key." -msgstr "Clear 键。" +msgid "" +"Returns the color converted to a 64-bit integer in ARGB format (each " +"component is 16 bits). ARGB is more compatible with DirectX.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_argb64()) # Prints -2147470541\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToArgb64()); // Prints -2147470541\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 ARGB 格式(每个分量为 16 位)的 64 位整数的颜色。ARGB 与 DirectX " +"更兼容。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_argb64()) # 输出 -2147470541\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToArgb64()); // 输出 -2147470541\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to an HTML hexadecimal color [String] in RGBA " +"format, without the hash ([code]#[/code]) prefix.\n" +"Setting [param with_alpha] to [code]false[/code], excludes alpha from the " +"hexadecimal string, using RGB format instead of RGBA format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var white = Color(1, 1, 1, 0.5)\n" +"var with_alpha = white.to_html() # Returns \"ffffff7f\"\n" +"var without_alpha = white.to_html(false) # Returns \"ffffff\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var white = new Color(1, 1, 1, 0.5f);\n" +"string withAlpha = white.ToHtml(); // Returns \"ffffff7f\"\n" +"string withoutAlpha = white.ToHtml(false); // Returns \"ffffff\"\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回将该颜色转换为 RGBA 格式的 HTML 十六进制颜色 [String],不带([code]#[/" +"code])前缀。\n" +"将 [param with_alpha] 设置为 [code]false[/code],会从十六进制字符串中排除 " +"alpha,使用 RGB 格式而不是 RGBA 格式。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var white = Color(1, 1, 1, 0.5)\n" +"var with_alpha = white.to_html() # 返回 \"ffffff7f\"\n" +"var without_alpha = white.to_html(false) # 返回 \"ffffff\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var white = new Color(1, 1, 1, 0.5f);\n" +"string withAlpha = white.ToHtml(); // 返回 \"ffffff7f\"\n" +"string withoutAlpha = white.ToHtml(false); // 返回 \"ffffff\"\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 32-bit integer in RGBA format (each " +"component is 8 bits). RGBA is Godot's default format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_rgba32()) # Prints 4286526463\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1, 0.5f, 0.2f);\n" +"GD.Print(color.ToRgba32()); // Prints 4286526463\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 RGBA 格式(每个分量为 8 位)的 32 位整数的颜色。RGBA 是 Godot 的默" +"认格式。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_rgba32()) # 输出 4286526463\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1, 0.5f, 0.2f);\n" +"GD.Print(color.ToRgba32()); // 输出 4286526463\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 64-bit integer in RGBA format (each " +"component is 16 bits). RGBA is Godot's default format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_rgba64()) # Prints -140736629309441\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1, 0.5f, 0.2f);\n" +"GD.Print(color.ToRgba64()); // Prints -140736629309441\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 RGBA 格式(每个分量为 16 位)的 64 位整数的颜色。RGBA 是 Godot 的" +"默认格式。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_rgba64()) # 输出 -140736629309441\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1, 0.5f, 0.2f);\n" +"GD.Print(color.ToRgba64()); // 输出 -140736629309441\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"The color's alpha component, typically on the range of 0 to 1. A value of 0 " +"means that the color is fully transparent. A value of 1 means that the color " +"is fully opaque." +msgstr "" +"颜色的 Alpha 分量,一般在 0 到 1 的范围内。0 表示该颜色完全透明。1 表示该颜色" +"完全不透明。" + +msgid "The color's blue component, typically on the range of 0 to 1." +msgstr "颜色的蓝色分量,一般在 0 到 1 的范围内。" + +msgid "The color's green component, typically on the range of 0 to 1." +msgstr "颜色的绿色分量,一般在 0 到 1 的范围内。" + +msgid "The HSV hue of this color, on the range 0 to 1." +msgstr "这个颜色的 HSV 色相,范围是 0 到 1。" + +msgid "The color's red component, typically on the range of 0 to 1." +msgstr "颜色的红色分量,通常在 0 到 1 的范围内。" + +msgid "The HSV saturation of this color, on the range 0 to 1." +msgstr "这个颜色的 HSV 饱和度,范围为 0 到 1。" + +msgid "The HSV value (brightness) of this color, on the range 0 to 1." +msgstr "这个颜色的 HSV 值(亮度),范围为 0 至 1。" + +msgid "Alice blue color." +msgstr "爱丽丝蓝。" + +msgid "Antique white color." +msgstr "古董白。" + +msgid "Aqua color." +msgstr "水色。" + +msgid "Aquamarine color." +msgstr "海蓝色。" + +msgid "Azure color." +msgstr "天蓝色。" + +msgid "Beige color." +msgstr "米黄色。" + +msgid "Bisque color." +msgstr "橘黄色。" + +msgid "Black color. In GDScript, this is the default value of any color." +msgstr "黑色。在 GDScript 中,这是所有颜色的默认值。" + +msgid "Blue color." +msgstr "蓝色。" + +msgid "Blue violet color." +msgstr "蓝紫色的颜色。" + +msgid "Brown color." +msgstr "棕色。" + +msgid "Cadet blue color." +msgstr "军服蓝。" -msgid "Home key." -msgstr "Home 键。" +msgid "Chartreuse color." +msgstr "黄褐色。" -msgid "End key." -msgstr "End 键。" +msgid "Chocolate color." +msgstr "巧克力色。" -msgid "Left arrow key." -msgstr "左方向键。" +msgid "Coral color." +msgstr "珊瑚色。" -msgid "Up arrow key." -msgstr "上方向键。" +msgid "Crimson color." +msgstr "绯红的颜色。" -msgid "Right arrow key." -msgstr "右方向键。" +msgid "Cyan color." +msgstr "青色。" -msgid "Down arrow key." -msgstr "下方向键。" +msgid "Dark blue color." +msgstr "深蓝色。" -msgid "Page Up key." -msgstr "Page Up 键。" +msgid "Dark cyan color." +msgstr "深青色。" -msgid "Page Down key." -msgstr "Page Down 键。" +msgid "Dark goldenrod color." +msgstr "深色菊科植物的颜色。" -msgid "Shift key." -msgstr "Shift 键。" +msgid "Dark gray color." +msgstr "深灰色。" -msgid "Control key." -msgstr "Control 键。" +msgid "Dark green color." +msgstr "深绿色。" -msgid "Meta key." -msgstr "Meta 键。" +msgid "Dark khaki color." +msgstr "深卡其色。" -msgid "Alt key." -msgstr "Alt 键。" +msgid "Dark magenta color." +msgstr "深洋红色。" -msgid "Caps Lock key." -msgstr "Caps Lock 键。" +msgid "Dark olive green color." +msgstr "深橄榄绿色。" -msgid "Num Lock key." -msgstr "Num Lock 键。" +msgid "Dark orange color." +msgstr "深橙色。" -msgid "Scroll Lock key." -msgstr "Scroll Lock 键。" +msgid "Dark orchid color." +msgstr "深色的兰花色。" -msgid "F1 key." -msgstr "F1 键。" +msgid "Dark red color." +msgstr "深红色。" -msgid "F2 key." -msgstr "F2 键。" +msgid "Dark salmon color." +msgstr "深鲑鱼色。" -msgid "F3 key." -msgstr "F3 键。" +msgid "Dark sea green color." +msgstr "深海绿色。" -msgid "F4 key." -msgstr "F4 键。" +msgid "Dark slate blue color." +msgstr "深板蓝的颜色。" -msgid "F5 key." -msgstr "F5 键。" +msgid "Dark slate gray color." +msgstr "暗石板灰色。" -msgid "F6 key." -msgstr "F6 键。" +msgid "Dark turquoise color." +msgstr "深绿松石色。" -msgid "F7 key." -msgstr "F7 键。" +msgid "Dark violet color." +msgstr "深紫罗兰色。" -msgid "F8 key." -msgstr "F8 键。" +msgid "Deep pink color." +msgstr "深粉色。" -msgid "F9 key." -msgstr "F9 键。" +msgid "Deep sky blue color." +msgstr "深邃的天蓝色。" -msgid "F10 key." -msgstr "F10 键。" +msgid "Dim gray color." +msgstr "暗灰色。" -msgid "F11 key." -msgstr "F11 键。" +msgid "Dodger blue color." +msgstr "道奇蓝色。" -msgid "F12 key." -msgstr "F12 键。" +msgid "Firebrick color." +msgstr "耐火砖红色。" -msgid "F13 key." -msgstr "F13 键。" +msgid "Floral white color." +msgstr "花白色。" -msgid "F14 key." -msgstr "F14 键。" +msgid "Forest green color." +msgstr "森林绿色。" -msgid "F15 key." -msgstr "F15 键。" +msgid "Fuchsia color." +msgstr "洋红色。" -msgid "F16 key." -msgstr "F16 键。" +msgid "Gainsboro color." +msgstr "庚斯伯勒灰色。" -msgid "Multiply (*) key on the numeric keypad." -msgstr "小键盘的星键/乘以键(*)。" +msgid "Ghost white color." +msgstr "幽灵白颜色。" -msgid "Divide (/) key on the numeric keypad." -msgstr "小键盘的除以键(/)。" +msgid "Gold color." +msgstr "金色。" -msgid "Subtract (-) key on the numeric keypad." -msgstr "小键盘的减号键(-)。" +msgid "Goldenrod color." +msgstr "金菊色。" -msgid "Period (.) key on the numeric keypad." -msgstr "小件盘的点键(.)。" +msgid "Gray color." +msgstr "灰色。" -msgid "Add (+) key on the numeric keypad." -msgstr "小键盘的加号键(+)。" +msgid "Green color." +msgstr "绿色。" -msgid "Number 0 on the numeric keypad." -msgstr "小键盘的数字 0。" +msgid "Green yellow color." +msgstr "绿黄色。" -msgid "Number 1 on the numeric keypad." -msgstr "小键盘的数字 1。" +msgid "Honeydew color." +msgstr "蜜露色。" -msgid "Number 2 on the numeric keypad." -msgstr "小键盘的数字 2。" +msgid "Hot pink color." +msgstr "亮粉色。" -msgid "Number 3 on the numeric keypad." -msgstr "小键盘的数字 3。" +msgid "Indian red color." +msgstr "印度红色。" -msgid "Number 4 on the numeric keypad." -msgstr "小键盘的数字 4。" +msgid "Indigo color." +msgstr "靛青色。" -msgid "Number 5 on the numeric keypad." -msgstr "小键盘的数字 5。" +msgid "Ivory color." +msgstr "象牙色。" -msgid "Number 6 on the numeric keypad." -msgstr "小键盘的数字 6。" +msgid "Khaki color." +msgstr "卡其色。" -msgid "Number 7 on the numeric keypad." -msgstr "小键盘的数字 7。" +msgid "Lavender color." +msgstr "薰衣草色。" -msgid "Number 8 on the numeric keypad." -msgstr "小键盘的数字 8。" +msgid "Lavender blush color." +msgstr "薰衣草紫红色。" -msgid "Number 9 on the numeric keypad." -msgstr "小键盘的数字 9。" +msgid "Lawn green color." +msgstr "草坪绿色。" -msgid "Context menu key." -msgstr "菜单键。" +msgid "Lemon chiffon color." +msgstr "柠檬雪纺色。" -msgid "Help key." -msgstr "Help 键。" +msgid "Light blue color." +msgstr "浅蓝色。" -msgid "" -"Media back key. Not to be confused with the Back button on an Android device." -msgstr "媒体返回键。不要与 Android 设备上的返回键相混淆。" +msgid "Light coral color." +msgstr "浅珊瑚色。" -msgid "Media forward key." -msgstr "媒体前进键。" +msgid "Light cyan color." +msgstr "淡青色。" -msgid "Media stop key." -msgstr "媒体停止播放键。" +msgid "Light goldenrod color." +msgstr "亮金菊黄色。" -msgid "Media refresh key." -msgstr "媒体刷新键。" +msgid "Light gray color." +msgstr "浅灰色。" -msgid "Volume down key." -msgstr "音量降低键。" +msgid "Light green color." +msgstr "浅绿色。" -msgid "Mute volume key." -msgstr "静音键。" +msgid "Light pink color." +msgstr "浅粉色。" -msgid "Volume up key." -msgstr "音量升高键。" +msgid "Light salmon color." +msgstr "浅鲑鱼色。" -msgid "Media play key." -msgstr "媒体播放键。" +msgid "Light sea green color." +msgstr "浅海绿色。" -msgid "Previous song key." -msgstr "上一首歌键。" +msgid "Light sky blue color." +msgstr "浅天蓝色。" -msgid "Next song key." -msgstr "下一首歌键。" +msgid "Light slate gray color." +msgstr "浅板岩灰色。" -msgid "Media record key." -msgstr "媒体录制键。" +msgid "Light steel blue color." +msgstr "浅钢蓝色。" -msgid "Home page key." -msgstr "主页键。" +msgid "Light yellow color." +msgstr "浅黄色。" -msgid "Favorites key." -msgstr "收藏键。" +msgid "Lime color." +msgstr "青柠色。" -msgid "Search key." -msgstr "搜索键。" +msgid "Lime green color." +msgstr "石灰绿色。" -msgid "Standby key." -msgstr "Standby 键。" +msgid "Linen color." +msgstr "亚麻色。" -msgid "Open URL / Launch Browser key." -msgstr "打开 URL / 启动浏览器键。" +msgid "Magenta color." +msgstr "洋红色。" -msgid "Launch Mail key." -msgstr "启动邮箱键。" +msgid "Maroon color." +msgstr "栗色。" -msgid "Launch Media key." -msgstr "启动多媒体键。" +msgid "Medium aquamarine color." +msgstr "中等海蓝宝石色。" -msgid "Launch Shortcut 0 key." -msgstr "快捷启动键 0。" +msgid "Medium blue color." +msgstr "中蓝色。" -msgid "Launch Shortcut 1 key." -msgstr "快捷启动键 1。" +msgid "Medium orchid color." +msgstr "中等兰色。" -msgid "Launch Shortcut 2 key." -msgstr "快捷启动键 2。" +msgid "Medium purple color." +msgstr "中等紫色。" -msgid "Launch Shortcut 3 key." -msgstr "快捷启动键 3。" +msgid "Medium sea green color." +msgstr "中海绿色。" -msgid "Launch Shortcut 4 key." -msgstr "快捷启动键 4。" +msgid "Medium slate blue color." +msgstr "中等板岩蓝色。" -msgid "Launch Shortcut 5 key." -msgstr "快捷启动键 5。" +msgid "Medium spring green color." +msgstr "中等春天绿色。" -msgid "Launch Shortcut 6 key." -msgstr "快捷启动键 6。" +msgid "Medium turquoise color." +msgstr "中等绿松石色。" -msgid "Launch Shortcut 7 key." -msgstr "快捷启动键 7。" +msgid "Medium violet red color." +msgstr "中等紫红色。" -msgid "Launch Shortcut 8 key." -msgstr "快捷启动键 8。" +msgid "Midnight blue color." +msgstr "午夜蓝色。" -msgid "Launch Shortcut 9 key." -msgstr "快捷启动键 9。" +msgid "Mint cream color." +msgstr "薄荷奶油色。" -msgid "Launch Shortcut A key." -msgstr "快捷启动键 A。" +msgid "Misty rose color." +msgstr "朦胧的玫瑰色。" -msgid "Launch Shortcut B key." -msgstr "快捷启动键 B。" +msgid "Moccasin color." +msgstr "鹿皮鞋颜色。" -msgid "Launch Shortcut C key." -msgstr "快捷启动键 C。" +msgid "Navajo white color." +msgstr "纳瓦白。" -msgid "Launch Shortcut D key." -msgstr "快捷启动键 D。" +msgid "Navy blue color." +msgstr "藏青色。" -msgid "Launch Shortcut E key." -msgstr "快捷启动键 E。" +msgid "Old lace color." +msgstr "旧蕾丝色。" -msgid "Launch Shortcut F key." -msgstr "快捷启动键 F。" +msgid "Olive color." +msgstr "橄榄色。" -msgid "Unknown key." -msgstr "未知键。" +msgid "Olive drab color." +msgstr "暗淡橄榄色。" -msgid "Space key." -msgstr "空格键。" +msgid "Orange color." +msgstr "橙色。" -msgid "! key." -msgstr "! 键。" +msgid "Orange red color." +msgstr "橘红色。" -msgid "\" key." -msgstr "\" 键。" +msgid "Orchid color." +msgstr "兰花色。" -msgid "# key." -msgstr "# 键。" +msgid "Pale goldenrod color." +msgstr "淡金色。" -msgid "$ key." -msgstr "$ 键。" +msgid "Pale green color." +msgstr "淡绿色。" -msgid "% key." -msgstr "% 键。" +msgid "Pale turquoise color." +msgstr "淡绿松石色。" -msgid "& key." -msgstr "& 键。" +msgid "Pale violet red color." +msgstr "淡紫红色。" -msgid "' key." -msgstr "' 键。" +msgid "Papaya whip color." +msgstr "木瓜鞭色。" -msgid "( key." -msgstr "( 键。" +msgid "Peach puff color." +msgstr "桃花粉。" -msgid ") key." -msgstr ") 键。" +msgid "Peru color." +msgstr "秘鲁色。" -msgid "* key." -msgstr "* 键。" +msgid "Pink color." +msgstr "粉红色。" -msgid "+ key." -msgstr "+ 键。" +msgid "Plum color." +msgstr "梅花色。" -msgid ", key." -msgstr ", 键。" +msgid "Powder blue color." +msgstr "浅蓝色。" -msgid "- key." -msgstr "- 键。" +msgid "Purple color." +msgstr "紫色。" -msgid ". key." -msgstr ". 键。" +msgid "Rebecca purple color." +msgstr "丽贝卡紫色。" -msgid "/ key." -msgstr "/ 键。" +msgid "Red color." +msgstr "红色。" -msgid ": key." -msgstr ": 键。" +msgid "Rosy brown color." +msgstr "玫瑰棕。" -msgid "; key." -msgstr "; 键。" +msgid "Royal blue color." +msgstr "宝蓝色。" -msgid "< key." -msgstr "< 键。" +msgid "Saddle brown color." +msgstr "鞍棕色。" -msgid "= key." -msgstr "= 键。" +msgid "Salmon color." +msgstr "鲑鱼色。" -msgid "> key." -msgstr "> 键。" +msgid "Sandy brown color." +msgstr "沙褐色。" -msgid "? key." -msgstr "? 键。" +msgid "Sea green color." +msgstr "海绿色。" -msgid "@ key." -msgstr "@ 键。" +msgid "Seashell color." +msgstr "贝壳色。" -msgid "A key." -msgstr "A 键。" +msgid "Sienna color." +msgstr "西恩娜色。" -msgid "B key." -msgstr "B 键。" +msgid "Silver color." +msgstr "银色。" -msgid "C key." -msgstr "C 键。" +msgid "Sky blue color." +msgstr "天蓝色。" -msgid "D key." -msgstr "D 键。" +msgid "Slate blue color." +msgstr "石板蓝色。" -msgid "E key." -msgstr "E 键。" +msgid "Slate gray color." +msgstr "石板灰。" -msgid "F key." -msgstr "F 键。" +msgid "Snow color." +msgstr "雪白。" -msgid "G key." -msgstr "G 键。" +msgid "Spring green color." +msgstr "春绿。" -msgid "H key." -msgstr "H 键。" +msgid "Steel blue color." +msgstr "钢蓝色。" -msgid "I key." -msgstr "I 键。" +msgid "Tan color." +msgstr "棕褐色。" -msgid "J key." -msgstr "J 键。" +msgid "Teal color." +msgstr "青色。" -msgid "K key." -msgstr "K 键。" +msgid "Thistle color." +msgstr "蓟色。" -msgid "L key." -msgstr "L 键。" +msgid "Tomato color." +msgstr "番茄色。" -msgid "M key." -msgstr "M 键。" +msgid "Transparent color (white with zero alpha)." +msgstr "透明色(Alpha 为零的白色)。" -msgid "N key." -msgstr "N 键。" +msgid "Turquoise color." +msgstr "松石绿。" -msgid "O key." -msgstr "O 键。" +msgid "Violet color." +msgstr "紫罗兰色。" -msgid "P key." -msgstr "P 键。" +msgid "Web gray color." +msgstr "网格灰。" -msgid "Q key." -msgstr "Q 键。" +msgid "Web green color." +msgstr "网络绿。" -msgid "R key." -msgstr "R 键。" +msgid "Web maroon color." +msgstr "网络栗。" -msgid "S key." -msgstr "S 键。" +msgid "Web purple color." +msgstr "网络紫。" -msgid "T key." -msgstr "T 键。" +msgid "Wheat color." +msgstr "小麦色。" -msgid "U key." -msgstr "U 键。" +msgid "White color." +msgstr "白色。" -msgid "V key." -msgstr "V 键。" +msgid "White smoke color." +msgstr "白烟色。" + +msgid "Yellow color." +msgstr "黄色。" -msgid "W key." -msgstr "W 键。" +msgid "Yellow green color." +msgstr "黄绿色。" -msgid "X key." -msgstr "X 键。" +msgid "" +"Returns [code]true[/code] if the colors are not exactly equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"is_equal_approx] instead, which is more reliable." +msgstr "" +"如果颜色不完全相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" -msgid "Y key." -msgstr "Y 键。" +msgid "" +"Multiplies each component of the [Color] by the components of the given " +"[Color]." +msgstr "将该 [Color] 的每个分量乘以给定 [Color] 的对应分量。" -msgid "Z key." -msgstr "Z 键。" +msgid "Multiplies each component of the [Color] by the given [float]." +msgstr "将该 [Color] 的每个分量乘以给定的 [float]。" -msgid "[ key." -msgstr "[ 键。" +msgid "Multiplies each component of the [Color] by the given [int]." +msgstr "将该 [Color] 的每个分量乘以给定的 [int]。" -msgid "\\ key." -msgstr "\\ 键。" +msgid "" +"Adds each component of the [Color] with the components of the given [Color]." +msgstr "将该 [Color] 的每个分量加上给定 [Color] 的对应分量。" -msgid "] key." -msgstr "] 键。" +msgid "" +"Subtracts each component of the [Color] by the components of the given " +"[Color]." +msgstr "将该 [Color] 的每个分量减去给定 [Color] 的对应分量。" -msgid "^ key." -msgstr "^ 键。" +msgid "" +"Divides each component of the [Color] by the components of the given [Color]." +msgstr "将该 [Color] 的每个分量除以给定 [Color] 的每个分量。" -msgid "_ key." -msgstr "_ 键。" +msgid "Divides each component of the [Color] by the given [float]." +msgstr "将该 [Color] 的每个分量除以给定的 [float]。" -msgid "` key." -msgstr "` 键。" +msgid "Divides each component of the [Color] by the given [int]." +msgstr "将该 [Color] 的每个分量除以给定的 [int]。" -msgid "{ key." -msgstr "{ 键。" +msgid "Color picker control." +msgstr "取色器控件。" -msgid "| key." -msgstr "| 键。" +msgid "" +"Displays a color picker widget. Useful for selecting a color from an RGB/" +"RGBA colorspace.\n" +"[b]Note:[/b] This control is the color picker widget itself. You can use a " +"[ColorPickerButton] instead if you need a button that brings up a " +"[ColorPicker] in a pop-up." +msgstr "" +"显示一个取色器部件。可以从 RGB/RGBA 彩色空间内选取一个颜色。\n" +"[b]注意:[/b]这个控件就是取色器本身。如果你需要一个能够弹出一个 " +"[ColorPicker] 窗口的按钮,你可以使用一个 [ColorPickerButton] 来代替它。" -msgid "} key." -msgstr "} 键。" +msgid "" +"Adds the given color to a list of color presets. The presets are displayed " +"in the color picker and the user will be able to select them.\n" +"[b]Note:[/b] The presets list is only for [i]this[/i] color picker." +msgstr "" +"将给定的颜色添加到颜色预设列表中。预设会显示在取色器中,可以被用户选择。\n" +"[b]注意:[/b]预设列表仅适用于[i]这个[/i]取色器。" -msgid "~ key." -msgstr "~ 键。" +msgid "" +"Removes the given color from the list of color presets of this color picker." +msgstr "从这个取色器的颜色预设列表中移除给定的颜色。" -msgid "¥ key." -msgstr "¥ 键。" +msgid "Returns the list of colors in the presets of the color picker." +msgstr "返回取色器的预设颜色列表。" -msgid "§ key." -msgstr "§ 键。" +msgid "The currently selected color." +msgstr "当前选择的颜色。" -msgid "Key Code mask." -msgstr "键码掩码。" +msgid "" +"If [code]true[/code], the color will apply only after the user releases the " +"mouse button, otherwise it will apply immediately even in mouse motion event " +"(which can cause performance issues)." +msgstr "" +"如果为 [code]true[/code],只有在用户松开鼠标按钮后才会应用颜色,否则即使在鼠" +"标移动事件中也会立即应用(会造成性能问题)。" -msgid "Modifier key mask." -msgstr "Modifier 键掩码。" +msgid "If [code]true[/code], shows an alpha channel slider (opacity)." +msgstr "如果为 [code]true[/code],则显示 Alpha 通道滑动条(不透明度)。" -msgid "Shift key mask." -msgstr "Shift 键掩码。" +msgid "Emitted when the color is changed." +msgstr "更改颜色时发出。" -msgid "Ctrl key mask." -msgstr "Ctrl 键掩码。" +msgid "Emitted when a preset is added." +msgstr "添加预设时发出。" -msgid "Keypad key mask." -msgstr "Keypad 键掩码。" +msgid "Emitted when a preset is removed." +msgstr "移除预设时发出。" -msgid "Group Switch key mask." -msgstr "Group Switch 键掩码。" +msgid "The width of the hue selection slider." +msgstr "色相选择滑块的宽度。" -msgid "Middle mouse button." -msgstr "鼠标中键。" +msgid "The margin around the [ColorPicker]." +msgstr "[ColorPicker] 周围的边距。" -msgid "Mouse wheel up." -msgstr "鼠标滚轮向上。" +msgid "The height of the saturation-value selection box." +msgstr "饱和值选择框的高度。" -msgid "Mouse wheel down." -msgstr "鼠标滚轮向下。" +msgid "The width of the saturation-value selection box." +msgstr "饱和度选择框的宽度。" -msgid "Mouse wheel left button (only present on some mice)." -msgstr "鼠标滚轮左键(仅在某些鼠标上有实现)。" +msgid "The icon for the \"Add Preset\" button." +msgstr "“添加预设”按钮的图标。" -msgid "Mouse wheel right button (only present on some mice)." -msgstr "鼠标滚轮右键(仅在某些鼠标上有实现)。" +msgid "Custom texture for the hue selection slider on the right." +msgstr "右侧的色相选择滑块的自定义纹理。" -msgid "Middle mouse button mask." -msgstr "鼠标中键掩码。" +msgid "" +"The indicator used to signalize that the color value is outside the 0-1 " +"range." +msgstr "该指示器用于指示颜色值在 0-1 范围之外。" -msgid "Extra mouse button 1 mask." -msgstr "鼠标额外键 1 掩码。" +msgid "The icon for the screen color picker button." +msgstr "屏幕取色器按钮的图标。" -msgid "Extra mouse button 2 mask." -msgstr "鼠标额外键 2 掩码。" +msgid "Button that pops out a [ColorPicker]." +msgstr "弹出 [ColorPicker] 的按钮。" msgid "" -"MIDI note OFF message. See the documentation of [InputEventMIDI] for " -"information of how to use MIDI inputs." +"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 " +"[member CanvasItem.visible] property." msgstr "" -"MIDI 音符 OFF 消息。如何使用 MIDI 输入的信息请参阅 [InputEventMIDI] 的文档。" +"返回此节点所切换的 [ColorPicker]。\n" +"[b]警告:[/b]这是一个必需的内部节点,移除和释放它可能会导致崩溃。如果你希望隐" +"藏它或其所有子项,请使用其 [member CanvasItem.visible] 属性。" msgid "" -"MIDI note ON message. See the documentation of [InputEventMIDI] for " -"information of how to use MIDI inputs." +"If [code]true[/code], the alpha channel in the displayed [ColorPicker] will " +"be visible." msgstr "" -"MIDI 音符 ON 消息。如何使用 MIDI 输入的信息请参阅 [InputEventMIDI] 的文档。" +"如果为 [code]true[/code],则显示的 [ColorPicker] 中的 Alpha 通道将可见。" -msgid "" -"MIDI aftertouch message. This message is most often sent by pressing down on " -"the key after it \"bottoms out\"." -msgstr "MIDI 触后消息。这个消息经常都是在按键“结束”后继续施压时发送。" +msgid "Emitted when the color changes." +msgstr "颜色改变时发出。" msgid "" -"MIDI control change message. This message is sent when a controller value " -"changes. Controllers include devices such as pedals and levers." -msgstr "" -"MIDI 控制变化消息。这个消息会在控制器值发生变化时发送。控制器包括踏板、推杆等" -"设备。" +"Emitted when the [ColorPicker] is created (the button is pressed for the " +"first time)." +msgstr "创建 [ColorPicker] 时(第一次按下按钮)发出。" -msgid "" -"MIDI program change message. This message sent when the program patch number " -"changes." -msgstr "MIDI 音色变化消息。这个消息会在音色 Patch 号变化时发送。" +msgid "Emitted when the [ColorPicker] is closed." +msgstr "当 [ColorPicker] 关闭时发出。" -msgid "" -"MIDI channel pressure message. This message is most often sent by pressing " -"down on the key after it \"bottoms out\". This message is different from " -"polyphonic after-touch as it indicates the highest pressure across all keys." -msgstr "" -"MIDI 通道压力消息。这个消息经常都是在按键“结束”后继续施压时发送。这个消息与复" -"音触后不同,因为它表示的是所有键中的最大压力。" +msgid "Default text [Color] of the [ColorPickerButton]." +msgstr "[ColorPickerButton] 的默认文本颜色 [Color]。" -msgid "" -"MIDI pitch bend message. This message is sent to indicate a change in the " -"pitch bender (wheel or lever, typically)." -msgstr "" -"MIDI 弯音消息。发送这个消息表示弯音器(一般是弯音轮或推杆)产生了变化。" +msgid "Text [Color] used when the [ColorPickerButton] is disabled." +msgstr "禁用 [ColorPickerButton] 时使用的文本颜色 [Color]。" msgid "" -"MIDI system exclusive message. This has behavior exclusive to the device " -"you're receiving input from. Getting this data is not implemented in Godot." +"Text [Color] used when the [ColorPickerButton] is focused. Only replaces the " +"normal text color of the button. Disabled, hovered, and pressed states take " +"precedence over this color." msgstr "" -"MIDI 系统专有消息。行为由你所用来获取输入的设备专有。Godot 未实现该数据的获" -"取。" +"当 [ColorPickerButton] 获得焦点时使用的文本颜色 [Color]。只替换按钮的正常文本" +"颜色。禁用、悬停和按下状态优先于这个颜色。" -msgid "" -"MIDI quarter frame message. Contains timing information that is used to " -"synchronize MIDI devices. Getting this data is not implemented in Godot." -msgstr "" -"MIDI 四分帧消息。包含用于同步 MIDI 设备的时间信息。Godot 未实现该数据的获取。" +msgid "Text [Color] used when the [ColorPickerButton] is being hovered." +msgstr "悬停 [ColorPickerButton] 时使用的文本 [Color]。" -msgid "" -"MIDI song position pointer message. Gives the number of 16th notes since the " -"start of the song. Getting this data is not implemented in Godot." -msgstr "" -"MIDI 歌曲位置指针消息。提供自歌曲开始以来所经过的十六分音符数。Godot 未实现该" -"数据的获取。" +msgid "Text [Color] used when the [ColorPickerButton] is being pressed." +msgstr "按下 [ColorPickerButton] 时使用的文本颜色 [Color]。" -msgid "" -"MIDI song select message. Specifies which sequence or song is to be played. " -"Getting this data is not implemented in Godot." -msgstr "MIDI 歌曲选择消息。指定要播放的序列或歌曲。Godot 未实现该数据的获取。" +msgid "The horizontal space between [ColorPickerButton]'s icon and text." +msgstr "[ColorPickerButton] 的图标和文本之间的水平间距。" -msgid "" -"MIDI tune request message. Upon receiving a tune request, all analog " -"synthesizers should tune their oscillators." -msgstr "MIDI 调整请求消息。收到调整请求后,所有模拟合成器都应该调整其晶振。" +msgid "[Font] of the [ColorPickerButton]'s text." +msgstr "[ColorPickerButton] 文本的 [Font]。" -msgid "" -"MIDI timing clock message. Sent 24 times per quarter note when " -"synchronization is required." -msgstr "MIDI 时钟消息。需要同步时,每四分音符会发送 24 次。" +msgid "Font size of the [ColorPickerButton]'s text." +msgstr "[ColorPickerButton] 文本的字体大小。" + +msgid "The background of the color preview rect on the button." +msgstr "颜色预览的背景将在按钮上显示。" + +msgid "[StyleBox] used when the [ColorPickerButton] is disabled." +msgstr "该 [ColorPickerButton] 处于禁用状态时使用的 [StyleBox]。" msgid "" -"MIDI start message. Start the current sequence playing. This message will be " -"followed with Timing Clocks." -msgstr "MIDI 开始消息。开始当前序列的播放。这个消息后会跟随时钟消息。" +"[StyleBox] used when the [ColorPickerButton] is focused. The [code]focus[/" +"code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a " +"partially transparent [StyleBox] should be used to ensure the base " +"[StyleBox] remains visible. A [StyleBox] that represents an outline or an " +"underline works well for this purpose. To disable the focus visual effect, " +"assign a [StyleBoxEmpty] resource. Note that disabling the focus visual " +"effect will harm keyboard/controller navigation usability, so this is not " +"recommended for accessibility reasons." +msgstr "" +"该 [ColorPickerButton] 处于聚焦状态时使用的 [StyleBox]。[code]focus[/code] " +"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" +"很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" +"意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" +"原因,不建议这样做。" -msgid "MIDI continue message. Continue at the point the sequence was stopped." -msgstr "MIDI 继续消息。从序列停止的位置继续。" +msgid "[StyleBox] used when the [ColorPickerButton] is being hovered." +msgstr "该 [ColorPickerButton] 处于悬停状态时使用的 [StyleBox]。" -msgid "MIDI stop message. Stop the current sequence." -msgstr "MIDI 停止消息。停止当前序列。" +msgid "Default [StyleBox] for the [ColorPickerButton]." +msgstr "该 [ColorPickerButton] 的默认 [StyleBox]。" -msgid "" -"MIDI active sensing message. This message is intended to be sent repeatedly " -"to tell the receiver that a connection is alive." -msgstr "MIDI 活跃感知消息。这个消息的目的是要重复发送,告知接收方连接仍存在。" +msgid "[StyleBox] used when the [ColorPickerButton] is being pressed." +msgstr "该 [ColorPickerButton] 处于按下状态时使用的 [StyleBox]。" + +msgid "Colored rectangle." +msgstr "彩色矩形。" msgid "" -"MIDI system reset message. Reset all receivers in the system to power-up " -"status. It should not be sent on power-up itself." +"Displays a rectangle filled with a solid [member color]. If you need to " +"display the border alone, consider using [ReferenceRect] instead." msgstr "" -"MIDI 系统重置消息。将系统中的所有接收方重置为上电状态。本身不应在上电时发送。" - -msgid "Generic error." -msgstr "一般性错误。" +"显示一个用纯色 [member color] 填充的矩形。如果你需要单独显示边框,请考虑使用 " +"[ReferenceRect] 代替。" -msgid "Unavailable error." -msgstr "不可用的错误。" +msgid "" +"The fill color.\n" +"[codeblocks]\n" +"[gdscript]\n" +"$ColorRect.color = Color(1, 0, 0, 1) # Set ColorRect's color to red.\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode(\"ColorRect\").Color = new Color(1, 0, 0, 1); // Set " +"ColorRect's color to red.\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"填充色。\n" +"[codeblocks]\n" +"[gdscript]\n" +"$ColorRect.color = Color(1, 0, 0, 1) # 将 ColorRect 的颜色设置为红色。\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode(\"ColorRect\").Color = new Color(1, 0, 0, 1); // 将 " +"ColorRect 的颜色设置为红色。\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Unconfigured error." -msgstr "未配置的错误。" +msgid "6-sided texture typically used in 3D rendering, optionally compressed." +msgstr "6 面纹理,通常用于 3D 渲染,可选择压缩。" + +msgid "" +"Array of 6-sided textures typically used in 3D rendering, optionally " +"compressed." +msgstr "6 面纹理的数组,通常用于 3D 渲染,可选择压缩。" + +msgid "Texture with 2 dimensions, optionally compressed." +msgstr "二维纹理,可选择压缩。" + +msgid "Loads the texture from the specified [param path]." +msgstr "从指定的路径 [param path] 加载纹理。" + +msgid "The [CompressedTexture2D]'s file path to a [code].ctex[/code] file." +msgstr "该 [CompressedTexture2D] 的文件路径,指向 [code].ctex[/code] 文件。" + +msgid "Array of 2-dimensional textures, optionally compressed." +msgstr "二维纹理的数组,可选择压缩。" + +msgid "Texture with 3 dimensions, optionally compressed." +msgstr "三维纹理,可选择压缩。" + +msgid "The [CompressedTexture3D]'s file path to a [code].ctex3d[/code] file." +msgstr "该 [CompressedTexture3D] 的文件路径,指向 [code].ctex3d[/code] 文件。" + +msgid "Base class for texture arrays that can optionally be compressed." +msgstr "可压缩纹理数组的基类。" + +msgid "Loads the texture at [param path]." +msgstr "从路径 [param path] 加载纹理。" + +msgid "" +"2D concave polygon shape to be added as a [i]direct[/i] child of a " +"[PhysicsBody2D] or [Area2D] using a [CollisionShape2D] node. It is made out " +"of segments and is optimal for complex polygonal concave collisions. " +"However, it is not advised to use for [RigidBody2D] nodes. A " +"CollisionPolygon2D in convex decomposition mode (solids) or several convex " +"objects are advised for that instead. Otherwise, a concave polygon 2D shape " +"is better for static collisions.\n" +"The main difference between a [ConvexPolygonShape2D] and a " +"[ConcavePolygonShape2D] is that a concave polygon assumes it is concave and " +"uses a more complex method of collision detection, and a convex one forces " +"itself to be convex to speed up collision detection.\n" +"[b]Performance:[/b] Due to its complexity, [ConcavePolygonShape2D] is the " +"slowest collision shape to check collisions against. Its use should " +"generally be limited to level geometry. For convex geometry, using " +"[ConvexPolygonShape2D] will perform better. For dynamic physics bodies that " +"need concave collision, several [ConvexPolygonShape2D]s can be used to " +"represent its collision by using convex decomposition; see " +"[ConvexPolygonShape2D]'s documentation for instructions. However, consider " +"using primitive collision shapes such as [CircleShape2D] or " +"[RectangleShape2D] first.\n" +"[b]Warning:[/b] Using this shape for an [Area2D] (via a [CollisionShape2D] " +"node) may give unexpected results: the area will only detect collisions with " +"the segments in the [ConcavePolygonShape2D] (and not with any \"inside\" of " +"the shape, for example)." +msgstr "" +"使用 [CollisionShape2D] 节点作为 [PhysicsBody2D] 或 [Area2D] 的[i]直接[/i]子" +"节点添加的 2D 凹多边形形状。它由线段组成,最适合复杂的多边形凹面碰撞。但是," +"不建议用于 [RigidBody2D] 节点。建议改用凸分解模式(实体)的 " +"CollisionPolygon2D 或多个凸对象。否则,凹多边形 2D 形状更适合静态碰撞。\n" +"[ConvexPolygonShape2D] 和 [ConcavePolygonShape2D] 之间的主要区别在于,凹多边" +"形假设它是凹的,并使用更复杂的碰撞检测方法,而凸多边形强制自身成为凸面以加速" +"碰撞检测。\n" +"[b]性能:[/b]由于其复杂性,[ConcavePolygonShape2D] 是检查碰撞时最慢的碰撞形" +"状。它的使用通常应限于关卡几何。对于凸几何,使用 [ConvexPolygonShape2D] 会表" +"现更好。对于需要凹碰撞的动态物理实体,可以用几个 [ConvexPolygonShape2D] 来表" +"示它的碰撞,使用凸分解;有关说明,请参阅 [ConvexPolygonShape2D] 的文档。但" +"是,请首先考虑使用原始碰撞形状,例如 [CircleShape2D] 或 " +"[RectangleShape2D]。\n" +"[b]警告:[/b]将该形状用于 [Area2D](通过 [CollisionShape2D] 节点)可能会产生" +"意想不到的结果:该区域将仅检测与 [ConcavePolygonShape2D] 中的线段的碰撞(而非" +"任何诸如形状的“内部”)。" -msgid "Unauthorized error." -msgstr "未经授权的错误。" +msgid "" +"The array of points that make up the [ConcavePolygonShape2D]'s line segments." +msgstr "组成 [ConcavePolygonShape2D] 线段的点的数组。" -msgid "Parameter range error." -msgstr "参数范围错误。" +msgid "Returns the faces (an array of triangles)." +msgstr "返回面(三角形数组)。" -msgid "Out of memory (OOM) error." -msgstr "内存不足(OOM)错误。" +msgid "Sets the faces (an array of triangles)." +msgstr "设置面(三角形数组)。" -msgid "File: Not found error." -msgstr "文件:未找到错误。" +msgid "A twist joint between two 3D PhysicsBodies." +msgstr "两个 3D PhysicsBody 之间的扭转关节。" -msgid "File: Bad drive error." -msgstr "文件:坏驱动器错误。" +msgid "" +"The speed with which the swing or twist will take place.\n" +"The higher, the faster." +msgstr "" +"摆动或扭转的速度。\n" +"越高,速度越快。" -msgid "File: Bad path error." -msgstr "文件:错误的路径错误。" +msgid "" +"Defines, how fast the swing- and twist-speed-difference on both sides gets " +"synced." +msgstr "定义两侧的摆动速度和扭转速度差异同步的速度。" -msgid "File: No permission error." -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 "关节开始扭曲的难易程度。如果太低,则需要更多的力才能开始扭转关节。" -msgid "File: Already in use error." -msgstr "文件:已在使用错误。" +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,则扭曲被锁定。" -msgid "File: Can't open error." -msgstr "文件:无法打开错误。" +msgid "Represents the size of the [enum Param] enum." +msgstr "代表 [enum Param] 枚举的大小。" -msgid "File: Can't write error." -msgstr "文件:无法写入错误。" +msgid "Helper class to handle INI-style files." +msgstr "用于处理 INI 样式文件的辅助类。" -msgid "File: Can't read error." -msgstr "文件:无法读取错误。" +msgid "Removes the entire contents of the config." +msgstr "移除配置的全部内容。" -msgid "File: Unrecognized error." -msgstr "文件:未识别的错误。" +msgid "" +"Deletes the specified section along with all the key-value pairs inside. " +"Raises an error if the section does not exist." +msgstr "删除指定的部分以及内部的所有键值对。如果该节不存在,则会引发错误。" -msgid "File: Corrupt error." -msgstr "文件:损坏错误。" +msgid "" +"Deletes the specified key in a section. Raises an error if either the " +"section or the key do not exist." +msgstr "删除部分中的指定键。如果该部分或键不存在,则会引发错误。" -msgid "File: Missing dependencies error." -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 "File: End of file (EOF) error." -msgstr "文件:文件结束(EOF)错误。" +msgid "Returns an array of all defined section identifiers." +msgstr "返回所有已定义节标识符的数组。" -msgid "Can't open error." -msgstr "无法打开错误。" +msgid "Returns [code]true[/code] if the specified section exists." +msgstr "如果指定的部分存在,则返回 [code]true[/code]。" -msgid "Can't create error." -msgstr "无法创建错误。" +msgid "Returns [code]true[/code] if the specified section-key pair exists." +msgstr "如果指定的段键对存在,则返回 [code]true[/code]。" -msgid "Query failed error." -msgstr "查询失败错误。" +msgid "" +"Assigns a value to the specified key of the specified section. If either the " +"section or the key do not exist, they are created. Passing a [code]null[/" +"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] 值就会移除指定的键,如果键被移除后,键最终是空的,就会移除" +"节。" -msgid "Already in use error." -msgstr "已在使用中错误。" +msgid "Dialog for confirmation of actions." +msgstr "确认动作的对话框。" -msgid "Locked error." -msgstr "锁定错误。" +msgid "" +"Dialog for confirmation of actions. This dialog inherits from " +"[AcceptDialog], but has by default an OK and Cancel button (in host OS " +"order).\n" +"To get cancel action, you can use:\n" +"[codeblocks]\n" +"[gdscript]\n" +"get_cancel_button().pressed.connect(self.canceled)\n" +"[/gdscript]\n" +"[csharp]\n" +"GetCancelButton().Pressed += Canceled;\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"用于确认操作的对话框。这个对话框继承自 [AcceptDialog],但默认有一个确定和取消" +"按钮(按主机操作系统顺序)。\n" +"要获得取消操作,你可以使用\n" +"[codeblocks]\n" +"[gdscript]\n" +"get_cancel_button().pressed.connect(self.canceled)\n" +"[/gdscript]\n" +"[csharp]\n" +"GetCancelButton().Pressed += Canceled;\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Timeout error." -msgstr "超时错误。" +msgid "" +"Returns the cancel button.\n" +"[b]Warning:[/b] This is a required internal node, removing and freeing it " +"may cause a crash. If you wish to hide it or any of its children, use their " +"[member CanvasItem.visible] property." +msgstr "" +"返回取消按钮。\n" +"[b]警告:[/b]这是一个必需的内部节点,移除并释放它可能会导致崩溃。如果你希望隐" +"藏它或其任何子项,请使用其 [member CanvasItem.visible] 属性。" -msgid "Can't connect error." -msgstr "无法连接错误。" +msgid "Base node for containers." +msgstr "容器的基础节点。" -msgid "Can't resolve error." -msgstr "无法解决错误。" +msgid "" +"Base node for containers. A [Container] contains other controls and " +"automatically arranges them in a certain way.\n" +"A Control can inherit this to create custom container classes." +msgstr "" +"容器的基础节点。[Container] 包含其他控件,并自动以某种方式排列它们。\n" +"Control 可以继承该类来创建自定义的容器类。" -msgid "Connection error." -msgstr "连接错误。" +msgid "" +"Fit a child control in a given rect. This is mainly a helper for creating " +"custom container classes." +msgstr "在给定的矩形中适配子控件。这主要是用于创建自定义容器类的辅助工具。" -msgid "Can't acquire resource error." -msgstr "无法获取资源错误。" +msgid "" +"Queue resort of the contained children. This is called automatically anyway, " +"but can be called upon request." +msgstr "将子节点的重排加入队列。虽然会被自动调用,但也可以在需要时手动调用。" -msgid "Can't fork process error." -msgstr "无法分叉进程错误。" +msgid "Emitted when sorting the children is needed." +msgstr "需要对子节点进行排序时发出。" -msgid "Invalid data error." -msgstr "无效数据错误。" +msgid "" +"Notification for when sorting the children, it must be obeyed immediately." +msgstr "对子节点进行排序时的通知,必须立即服从。" -msgid "Invalid parameter error." -msgstr "无效参数错误。" +msgid "" +"All user interface nodes inherit from Control. A control's anchors and " +"offsets adapt its position and size relative to its parent." +msgstr "" +"所有用户界面节点都继承自 Control(控件)。控件使用锚点和偏移来调整相对于父级" +"的位置和大小。" + +msgid "" +"Base class for all UI-related nodes. [Control] features a bounding rectangle " +"that defines its extents, an anchor position relative to its parent control " +"or the current viewport, and offsets relative to the anchor. The offsets " +"update automatically when the node, any of its parents, or the screen size " +"change.\n" +"For more information on Godot's UI system, anchors, offsets, and containers, " +"see the related tutorials in the manual. To build flexible UIs, you'll need " +"a mix of UI elements that inherit from [Control] and [Container] nodes.\n" +"[b]User Interface nodes and input[/b]\n" +"Godot propagates input events via viewports. Each [Viewport] is responsible " +"for propagating [InputEvent]s to their child nodes. As the [member SceneTree." +"root] is a [Window], this already happens automatically for all UI elements " +"in your game.\n" +"Input events are propagated through the [SceneTree] from the root node to " +"all child nodes by calling [method Node._input]. For UI elements " +"specifically, it makes more sense to override the virtual method [method " +"_gui_input], which filters out unrelated input events, such as by checking z-" +"order, [member mouse_filter], focus, or if the event was inside of the " +"control's bounding box.\n" +"Call [method accept_event] so no other node receives the event. Once you " +"accept an input, it becomes handled so [method Node._unhandled_input] will " +"not process it.\n" +"Only one [Control] node can be in focus. Only the node in focus will receive " +"events. To get the focus, call [method grab_focus]. [Control] nodes lose " +"focus when another node grabs it, or if you hide the node in focus.\n" +"Sets [member mouse_filter] to [constant MOUSE_FILTER_IGNORE] to tell a " +"[Control] node to ignore mouse or touch events. You'll need it if you place " +"an icon on top of a button.\n" +"[Theme] resources change the Control's appearance. If you change the [Theme] " +"on a [Control] node, it affects all of its children. To override some of the " +"theme's parameters, call one of the [code]add_theme_*_override[/code] " +"methods, like [method add_theme_font_override]. You can override the theme " +"with the Inspector.\n" +"[b]Note:[/b] Theme items are [i]not[/i] [Object] properties. This means you " +"can't access their values using [method Object.get] and [method Object.set]. " +"Instead, use the [code]get_theme_*[/code] and [code]add_theme_*_override[/" +"code] methods provided by this class." +msgstr "" +"所有 UI 相关节点的基类。[Control] 具有定义其范围的边界矩形,相对于父控件或当" +"前视口的锚点位置,以及相对于锚点的偏移。当节点、任何父节点或屏幕尺寸发生变化" +"时,偏移就会自动更新。\n" +"更多关于 Godot 的 UI 系统、锚点、偏移和容器的信息,请参阅手册中的相关教程。要" +"构建灵活的 UI,你需要混合使用从 [Control] 和 [Container] 节点继承的 UI 元" +"素。\n" +"[b]用户界面节点与输入[/b]\n" +"Godot 使用视口来传播输入事件。视口负责将 [InputEvent] 传播给它的子节点。因为 " +"[member SceneTree.root] 是 [Window],所以游戏中的所有 UI 元素都会自动进行传" +"播。\n" +"输入事件通过调用 [method Node._input] 在 [SceneTree] 中传播,从根节点传播到所" +"有子节点。对 UI 元素而言,覆盖的最好是 [method _gui_input],可以过滤掉无关的" +"输入事件,例如它会对 Z 顺序、[member mouse_filter]、焦点、事件是否在该控件的" +"边界框内等条件进行检查。\n" +"请调用 [method accept_event],这样其他节点就不会收到该事件。输入被接受后,就" +"会被标记为已处理,[method Node._unhandled_input] 不会对它进行处理。\n" +"只能有一个 [Control] 节点处于焦点。只有处于焦点的节点才会接收到事件。要获得焦" +"点,请调用 [method grab_focus]。导致 [Control] 节点失去焦点的情况有:其他节点" +"获得了焦点、隐藏了聚焦节点。\n" +"将 [member mouse_filter] 设置为 [constant MOUSE_FILTER_IGNORE] 可以让 " +"[Control] 节点忽略鼠标或触摸事件。如果你在按钮上放了一个图标,就会需要用" +"到。\n" +"[Theme] 资源会更改控件的外观。如果你更改了 [Control] 节点上的 [Theme],则会影" +"响其所有子节点。要覆盖某些主题的参数,请调用 [code]add_theme_*_override[/" +"code] 方法,例如 [method add_theme_font_override]。你可以使用检查器覆盖主" +"题。\n" +"[b]注意:[/b]主题项[i]不是[/i] [Object] 的属性。这意味着你无法使用 [method " +"Object.get] 和 [method Object.set] 访问它们的值。请改用这个类的 " +"[code]get_theme_*[/code] 和 [code]add_theme_*_override[/code] 方法。" + +msgid "GUI documentation index" +msgstr "GUI 文档索引" -msgid "Already exists error." -msgstr "已存在的错误。" +msgid "Control node gallery" +msgstr "控件节点一览" -msgid "Does not exist error." -msgstr "不存在的错误。" +msgid "All GUI Demos" +msgstr "所有 GUI 演示" -msgid "Database: Read error." -msgstr "数据库:读取错误。" +msgid "" +"Godot calls this method to test if [param data] from a control's [method " +"_get_drag_data] can be dropped at [param at_position]. [param at_position] " +"is local to this control.\n" +"This method should only be used to test the data. Process the data in " +"[method _drop_data].\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" # Check position if it is relevant to you\n" +" # Otherwise, just check data\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"expected\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" // Check position if it is relevant to you\n" +" // Otherwise, just check data\n" +" return data.VariantType == Variant.Type.Dictionary && data." +"AsGodotDictionary().Contains(\"expected\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Godot 调用该方法来测试是否可以将控件的 [method _get_drag_data] 中的 [param " +"data] 放在 [param at_position] 处。[param at_position] 是该控件的局部位置。\n" +"此方法应仅用于测试数据。处理 [method _drop_data] 中的数据。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" # 如果 position 与您相关则检查它\n" +" # 否则,只检查 data\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"expected\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" // 如果 position 与您相关则检查它\n" +" // 否则,只检查 data\n" +" return data.VariantType == Variant.Type.Dictionary && data." +"AsGodotDictionary().Contains(\"expected\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Database: Write error." -msgstr "数据库:写入错误。" +msgid "" +"Godot calls this method to pass you the [param data] from a control's " +"[method _get_drag_data] result. Godot first calls [method _can_drop_data] to " +"test if [param data] is allowed to drop at [param at_position] where [param " +"at_position] is local to this control.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"color\")\n" +"\n" +"func _drop_data(position, data):\n" +" var color = data[\"color\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" return data.VariantType == Variant.Type.Dictionary && dict." +"AsGodotDictionary().Contains(\"color\");\n" +"}\n" +"\n" +"public override void _DropData(Vector2 atPosition, Variant data)\n" +"{\n" +" Color color = data.AsGodotDictionary()[\"color\"].AsColor();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Godot 调用该方法从控件的 [method _get_drag_data] 结果中向您传递 [param " +"data]。Godot 首先调用 [method _can_drop_data] 来测试是否允许 [param data] 在 " +"[param at_position] 处放置,其中 [param at_position] 是该控件的局部位置。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"color\")\n" +"\n" +"func _drop_data(position, data):\n" +" var color = data[\"color\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" return data.VariantType == Variant.Type.Dictionary && dict." +"AsGodotDictionary().Contains(\"color\");\n" +"}\n" +"\n" +"public override void _DropData(Vector2 atPosition, Variant data)\n" +"{\n" +" Color color = data.AsGodotDictionary()[\"color\"].AsColor();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Compilation failed error." -msgstr "编译失败错误。" +msgid "" +"Godot calls this method to get data that can be dragged and dropped onto " +"controls that expect drop data. Returns [code]null[/code] if there is no " +"data to drag. Controls that want to receive drop data should implement " +"[method _can_drop_data] and [method _drop_data]. [param at_position] is " +"local to this control. Drag may be forced with [method force_drag].\n" +"A preview that will follow the mouse that should represent the data can be " +"set with [method set_drag_preview]. A good time to set the preview is in " +"this method.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get_drag_data(position):\n" +" var mydata = make_data() # This is your custom method generating the " +"drag data.\n" +" set_drag_preview(make_preview(mydata)) # This is your custom method " +"generating the preview of the drag data.\n" +" return mydata\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Variant _GetDragData(Vector2 atPosition)\n" +"{\n" +" var myData = MakeData(); // This is your custom method generating the " +"drag data.\n" +" SetDragPreview(MakePreview(myData)); // This is your custom method " +"generating the preview of the drag data.\n" +" return myData;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Godot 调用该方法来获取可以拖放到期望放置数据的控件上的数据。如果没有要拖动的" +"数据,则返回 [code]null[/code]。想要接收拖放数据的控件应该实现 [method " +"_can_drop_data] 和 [method _drop_data]。[param at_position] 是该控件的局部位" +"置。可以使用 [method force_drag] 强制拖动。\n" +"可以使用 [method set_drag_preview] 设置跟随鼠标显示数据的预览。设置预览的好时" +"机就是在这个方法中。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get_drag_data(position):\n" +" var mydata = make_data() # This is your custom method generating the " +"drag data.\n" +" set_drag_preview(make_preview(mydata)) # 这是您生成拖动数据预览的自定义方" +"法。\n" +" return mydata\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Variant _GetDragData(Vector2 atPosition)\n" +"{\n" +" var myData = MakeData(); // This is your custom method generating the " +"drag data.\n" +" SetDragPreview(MakePreview(myData)); // 这是您生成拖动数据预览的自定义方" +"法。\n" +" return myData;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" -msgid "Method not found error." -msgstr "方法未找到错误。" +msgid "" +"Virtual method to be implemented by the user. Use this method to process and " +"accept inputs on UI elements. See [method accept_event].\n" +"[b]Example usage for clicking a control:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _gui_input(event):\n" +" if event is InputEventMouseButton:\n" +" if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:\n" +" print(\"I've been clicked D:\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _GuiInput(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseButton mb)\n" +" {\n" +" if (mb.ButtonIndex == MouseButton.Left && mb.Pressed)\n" +" {\n" +" GD.Print(\"I've been clicked D:\");\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The event won't trigger if:\n" +"* clicking outside the control (see [method _has_point]);\n" +"* control has [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];\n" +"* control is obstructed by another [Control] on top of it, which doesn't " +"have [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];\n" +"* control's parent has [member mouse_filter] set to [constant " +"MOUSE_FILTER_STOP] or has accepted the event;\n" +"* it happens outside the parent's rectangle and the parent has either " +"[member clip_contents] enabled.\n" +"[b]Note:[/b] Event position is relative to the control origin." +msgstr "" +"由用户实现的虚方法。使用此方法处理和接受 UI 元素上的输入。请参阅 [method " +"accept_event]。\n" +"[b]点击控件的用法示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _gui_input(event):\n" +" if event is InputEventMouseButton:\n" +" if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:\n" +" print(\"我已被点击 D:\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _GuiInput(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseButton mb)\n" +" {\n" +" if (mb.ButtonIndex == MouseButton.Left && mb.Pressed)\n" +" {\n" +" GD.Print(\"我已被点击 D:\");\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果出现以下情况,则不会触发该事件:\n" +"* 在控件外点击(参阅[method _has_point]);\n" +"* 控件将 [member mouse_filter] 设置为 [constant MOUSE_FILTER_IGNORE];\n" +"* 控件被其上的另一个 [Control] 阻挡,该控件没有将 [member mouse_filter] 设置" +"为 [constant MOUSE_FILTER_IGNORE];\n" +"* 控件的父级已将 [member mouse_filter] 设置为 [constant MOUSE_FILTER_STOP] 或" +"已接受该事件;\n" +"* 它发生在父级的矩形之外,并且父级已启用 [member clip_contents]。\n" +"[b]注意:[/b]事件位置相对于该控件原点。" + +msgid "" +"Virtual method to be implemented by the user. Returns a [Control] node that " +"should be used as a tooltip instead of the default one. The [param for_text] " +"includes the contents of the [member tooltip_text] property.\n" +"The returned node must be of type [Control] or Control-derived. It can have " +"child nodes of any type. It is freed when the tooltip disappears, so make " +"sure you always provide a new instance (if you want to use a pre-existing " +"node from your scene tree, you can duplicate it and pass the duplicated " +"instance). When [code]null[/code] or a non-Control node is returned, the " +"default tooltip will be used instead.\n" +"The returned node will be added as child to a [PopupPanel], so you should " +"only provide the contents of that panel. That [PopupPanel] can be themed " +"using [method Theme.set_stylebox] for the type [code]\"TooltipPanel\"[/code] " +"(see [member tooltip_text] for an example).\n" +"[b]Note:[/b] The tooltip is shrunk to minimal size. If you want to ensure " +"it's fully visible, you might want to set its [member custom_minimum_size] " +"to some non-zero value.\n" +"[b]Note:[/b] The node (and any relevant children) should be [member " +"CanvasItem.visible] when returned, otherwise, the viewport that instantiates " +"it will not be able to calculate its minimum size reliably.\n" +"[b]Example of usage with a custom-constructed node:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _make_custom_tooltip(for_text):\n" +" var label = Label.new()\n" +" label.text = for_text\n" +" return label\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Control _MakeCustomTooltip(string forText)\n" +"{\n" +" var label = new Label();\n" +" label.Text = forText;\n" +" return label;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Example of usage with a custom scene instance:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _make_custom_tooltip(for_text):\n" +" var tooltip = preload(\"res://some_tooltip_scene.tscn\").instantiate()\n" +" tooltip.get_node(\"Label\").text = for_text\n" +" return tooltip\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Control _MakeCustomTooltip(string forText)\n" +"{\n" +" Node tooltip = ResourceLoader.Load(\"res://" +"some_tooltip_scene.tscn\").Instantiate();\n" +" tooltip.GetNode