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,8 +15330,15 @@ 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 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 "" "Removes a shape from a body. The shape is not deleted, so it can be reused " @@ -15354,440 +15362,6 @@ msgid "Sets the physics layer or layers a body can collide with." 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" -"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" -"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." -msgstr "" -"Establece el modo corporal usando una de las constantes de [enum BodyMode]." - -msgid "" -"Sets whether a body uses a callback function to calculate its own physics " -"(see [method body_set_force_integration_callback])." -msgstr "" -"Establece si un cuerpo utiliza una función de llamada de retorno para " -"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." -msgstr "" -"Establece un parámetro corporal. Véase [enum BodyParameter] para una lista " -"de parámetros disponibles." - -msgid "" -"Substitutes a given body shape by another. The old shape is selected by its " -"index, the new one by its [RID]." -msgstr "" -"Sustituye una forma corporal dada por otra. La forma antigua es seleccionada " -"por su índice, la nueva por su [RID]." - -msgid "Sets the transform matrix for a body shape." -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 " @@ -15803,6 +15377,13 @@ msgstr "" "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 " +"(see [method body_set_force_integration_callback])." +msgstr "" +"Establece si un cuerpo utiliza una función de llamada de retorno para " +"calcular su propia física (ver [method body_set_force_integration_callback])." + msgid "" "Sets a body parameter. A list of available parameters is on the [enum " "BodyParameter] constants." @@ -15810,6 +15391,19 @@ msgstr "" "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 " +"index, the new one by its [RID]." +msgstr "" +"Sustituye una forma corporal dada por otra. La forma antigua es seleccionada " +"por su índice, la nueva por su [RID]." + +msgid "Sets the transform matrix for a body shape." +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 "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,120 +15240,24 @@ 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 "Activates or deactivates the 2D physics engine." -msgstr "Active ou désactive le moteur physique 2D." - -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 value of a space parameter." -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 shape data." +msgstr "Retourne les données de forme." + 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." + +msgid "Returns whether the space is active." +msgstr "Retourne quand cet espace est actif." + 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_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" +"你可以通过冒号来添加显式值:\n" +"[codeblock]\n" +"@export_flags(\"Self:4\", \"Allies:8\", \"Foes:16\") var spell_targets = 0\n" +"[/codeblock]\n" +"你还可以对标志进行组合:\n" +"[codeblock]\n" +"@export_flags(\"Self:4\", \"Allies:8\", \"Self and Allies:12\", " +"\"Foes:16\")\n" +"var spell_targets = 0\n" +"[/codeblock]\n" +"[b]注意:[/b]标志值最多为 [code]1[/code],最多为 [code]2 ** 32 - 1[/code]。\n" +"[b]注意:[/b]与 [annotation @export_enum] 不同,不会考虑前一个显式值。下面的" +"例子中,A 为 16、B 为 2、C 为 4。\n" +"[codeblock]\n" +"@export_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" @@ -877,91 +751,6 @@ msgstr "" "@export_flags_3d_render var render_layers: int\n" "[/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" -"[codeblock]\n" -"@export_global_dir var sprite_folder: String\n" -"[/codeblock]" -msgstr "" -"将 [String] 属性导出为目录路径。可以从整个文件系统中选择路径。请参阅 " -"[annotation @export_dir] 以将其限制为项目文件夹及其子文件夹。\n" -"另请参见 [constant PROPERTY_HINT_GLOBAL_DIR]。\n" -"[codeblock]\n" -"@export_global_dir var sprite_folder: String\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" -"[codeblock]\n" -"@export_global_file var sound_effect_file: String\n" -"@export_global_file(\"*.txt\") var notes_file: String\n" -"[/codeblock]" -msgstr "" -"将 [String] 属性作为文件路径导出。可以从整个文件系统中选择路径。请参阅 " -"[annotation @export_file],以将其限制为项目文件夹及其子文件夹。\n" -"如果提供了 [param filter],则只有匹配的文件可供选择。\n" -"另请参见 [constant PROPERTY_HINT_GLOBAL_FILE]。\n" -"[codeblock]\n" -"@export_global_file var sound_effect_file: String\n" -"@export_global_file(\"*.txt\") var notes_file: 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" -"[codeblock]\n" -"@export_group(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" -"\n" -"@export_group(\"Prefixed Properties\", \"prefix_\")\n" -"@export var prefix_number = 3\n" -"@export var prefix_string = \"\"\n" -"\n" -"@export_group(\"\", \"\")\n" -"@export var ungrouped_number = 3\n" -"[/codeblock]" -msgstr "" -"为以下导出的属性定义一个新组。这有助于在检查器停靠面板中组织属性。可以使用可" -"选的 [param prefix] 添加组,这将使组仅考虑具有此前缀的属性。分组将在第一个没" -"有前缀的属性上中断。前缀也将从检查器停靠面板中的属性名称中移除。\n" -"如果未提供 [param prefix],则将以下每个属性添加到组中。当定义下一个组或类别" -"时,该组结束。您还可以通过将此注解与空字符串的参数一起使用来强制结束组," -"[code]@export_group(\"\", \"\")[/code]。\n" -"组不能被嵌套,使用 [annotation @export_subgroup] 在组内添加子组。\n" -"另见 [constant PROPERTY_USAGE_GROUP]。\n" -"[codeblock]\n" -"@export_group(\"My Properties\")\n" -"@export var number = 3\n" -"@export var string = \"\"\n" -"\n" -"@export_group(\"Prefixed Properties\", \"prefix_\")\n" -"@export var prefix_number = 3\n" -"@export var prefix_string = \"\"\n" -"\n" -"@export_group(\"\", \"\")\n" -"@export var ungrouped_number = 3\n" -"[/codeblock]" - msgid "" "Export a [String] property with a large [TextEdit] widget instead of a " "[LineEdit]. This adds support for multiline content and makes it easier to " @@ -978,6 +767,19 @@ msgstr "" "@export_multiline var character_biography\n" "[/codeblock]" +msgid "" +"Export a [NodePath] property with a filter for allowed node types.\n" +"See also [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n" +"[codeblock]\n" +"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n" +"[/codeblock]" +msgstr "" +"导出一个 [NodePath] 属性,对允许的节点类型进行过滤。\n" +"参见 [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES]。\n" +"[codeblock]\n" +"@export_node_path(Button, TouchScreenButton) var some_button\n" +"[/codeblock]" + msgid "" "Export a [String] property with a placeholder text displayed in the editor " "widget when no value is present.\n" @@ -994,39 +796,195 @@ msgstr "" "[/codeblock]" 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" +"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_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." +"@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_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 "" -"为接下来的导出属性定义一个新的子组。这有助于组织检查器停靠面板中的属性。子组" -"的工作方式与组完全一样,只是它们需要一个父组才能存在。请参阅 [annotation " -"@export_group]。\n" -"另请参见 [constant PROPERTY_USAGE_SUBGROUP]。\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_subgroup(\"My 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_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 "" +"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" +"@icon(\"res://path/to/class/icon.svg\")\n" "[/codeblock]\n" -"[b]注意:[/b]子组不能嵌套,它们只提供一层额外的深度。就像新组使前一个组结束一" -"样,后续的子组也会打断之前的子组。" +"[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 "" +"将以下方法标记为远程过程调用。请参见 [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" +"@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 "" +"Mark the current script as a tool script, allowing it to be loaded and " +"executed by the editor. See [url=$DOCS_URL/tutorials/plugins/" +"running_code_in_the_editor.html]Running code in the editor[/url].\n" +"[codeblock]\n" +"@tool\n" +"extends Node\n" +"[/codeblock]\n" +"[b]Note:[/b] As annotations describe their subject, the [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 "" +"将后续语句标记为忽略指定的 [param warning] 警告。见[url=$DOCS_URL/tutorials/" +"scripting/gdscript/warning_system.html]《GDScript 警告系统》[/url]。\n" +"[codeblock]\n" +"func test():\n" +" print(\"你好\")\n" +" return\n" +" @warning_ignore(\"unreachable_code\")\n" +" print(\"无法到达\")\n" +"[/codeblock]" + +msgid "Global scope constants and functions." +msgstr "全局范围常量和函数。" + +msgid "" +"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,6 +1719,1413 @@ msgid "" "invalid) value." msgstr "如果 [param x] 是 NaN(“非数字”或无效)值,则返回 [code]true[/code] 。" +msgid "" +"Returns [code]true[/code], for value types, if [param a] and [param b] share " +"the same value. Returns [code]true[/code], for reference types, if the " +"references of [param a] and [param b] are the same.\n" +"[codeblock]\n" +"# Vector2 is a value type\n" +"var vec2_a = Vector2(0, 0)\n" +"var vec2_b = Vector2(0, 0)\n" +"var vec2_c = Vector2(1, 1)\n" +"is_same(vec2_a, vec2_a) # true\n" +"is_same(vec2_a, vec2_b) # true\n" +"is_same(vec2_a, vec2_c) # false\n" +"\n" +"# Array is a reference type\n" +"var arr_a = []\n" +"var arr_b = []\n" +"is_same(arr_a, arr_a) # true\n" +"is_same(arr_a, arr_b) # false\n" +"[/codeblock]\n" +"These are [Variant] value types: [code]null[/code], [bool], [int], [float], " +"[String], [StringName], [Vector2], [Vector2i], [Vector3], [Vector3i], " +"[Vector4], [Vector4i], [Rect2], [Rect2i], [Transform2D], [Transform3D], " +"[Plane], [Quaternion], [AABB], [Basis], [Projection], [Color], [NodePath], " +"[RID], [Callable] and [Signal].\n" +"These are [Variant] reference types: [Object], [Dictionary], [Array], " +"[PackedByteArray], [PackedInt32Array], [PackedInt64Array], " +"[PackedFloat32Array], [PackedFloat64Array], [PackedStringArray], " +"[PackedVector2Array], [PackedVector3Array] and [PackedColorArray]." +msgstr "" +"当 [param a] 和 [param b] 为值类型时,如果他们相同,那么返回 [code]true[/" +"code]。当 [param a] 和 [param b] 为引用类型时,如果它们的引用对象相同,那么返" +"回 [code]true[/code]。\n" +"[codeblock]\n" +"# Vector2 is a value type\n" +"var vec2_a = Vector2(0, 0)\n" +"var vec2_b = Vector2(0, 0)\n" +"var vec2_c = Vector2(1, 1)\n" +"is_same(vec2_a, vec2_a) # true\n" +"is_same(vec2_a, vec2_b) # true\n" +"is_same(vec2_a, vec2_c) # false\n" +"\n" +"# Array is a reference type\n" +"var arr_a = []\n" +"var arr_b = []\n" +"is_same(arr_a, arr_a) # true\n" +"is_same(arr_a, arr_b) # false\n" +"[/codeblock]\n" +"[Varient] 值类型有:[code]null[/code],[bool],[int],[float],[String]," +"[StringName],[Vector2],[Vector2i],[Vector3],[Vector3i],[Vector4]," +"[Vector4i],[Rect2],[Rect2i],[Transform2D],[Transform3D],[Plane]," +"[Quaternion],[AABB],[Basis],[Projection],[Color],[NodePath],[RID]," +"[Callable] 和 [Signal]。\n" +"[Varient] 引用类型有:[Object],[Dictionary],[Array],[PackedByteArray]," +"[PackedInt32Array],[PackedInt64Array],[PackedFloat32Array]," +"[PackedFloat64Array],[PackedStringArray],[PackedVector2Array]," +"[PackedVector3Array] 和 [PackedColorArray]。" + +msgid "" +"Returns [code]true[/code] if [param x] is zero or almost zero. The " +"comparison is done using a tolerance calculation with a small internal " +"epsilon.\n" +"This function is faster than using [method is_equal_approx] with one value " +"as zero." +msgstr "" +"如果 [param x] 为零或几乎为零,则返回 [code]true[/code]。比较是使用具有小内" +"部 epsilon 的公差计算的。\n" +"该函数比使用一个值为零的 [method is_equal_approx] 更快。" + +msgid "" +"Linearly interpolates between two values by the factor defined in [param " +"weight]. To perform interpolation, [param weight] should be between " +"[code]0.0[/code] and [code]1.0[/code] (inclusive). However, values outside " +"this range are allowed and can be used to perform [i]extrapolation[/i]. If " +"this is not desired, use [method clamp] on the result of this function.\n" +"Both [param from] and [param to] must be the same type. Supported types: " +"[int], [float], [Vector2], [Vector3], [Vector4], [Color], [Quaternion], " +"[Basis].\n" +"[codeblock]\n" +"lerp(0, 4, 0.75) # Returns 3.0\n" +"[/codeblock]\n" +"See also [method inverse_lerp] which performs the reverse of this operation. " +"To perform eased interpolation with [method lerp], combine it with [method " +"ease] or [method smoothstep]. See also [method remap] to map a continuous " +"series of values to another.\n" +"[b]Note:[/b] For better type safety, use [method lerpf], [method Vector2." +"lerp], [method Vector3.lerp], [method Vector4.lerp], [method Color.lerp], " +"[method Quaternion.slerp] or [method Basis.slerp]." +msgstr "" +"通过 [param weight] 中定义的因子在两个值之间进行线性插值。要执行插值,[param " +"weight] 应介于 [code]0.0[/code] 和 [code]1.0[/code] 之间(包含)。但是,超出" +"此范围的值也是允许的,并可用于执行[i]外推 [/i]。如果不需要,请在该函数的结果" +"上使用 [method clamp]。\n" +"[param from] 和 [param to] 必须是同一类型。支持的类型:[int]、[float]、" +"[Vector2]、[Vector3]、[Vector4]、[Color]、[Quaternion]、[Basis]。\n" +"[codeblock]\n" +"lerp(0, 4, 0.75) # 返回 3.0\n" +"[/codeblock]\n" +"另请参阅执行本操作的逆操作的 [method inverse_lerp]。要使用 [method lerp] 执行" +"缓动插值,请将其与 [method ease] 或 [method smoothstep] 结合使用。另见 " +"[method remap],可将一系列连续的值映射到另一个值。\n" +"[b]注意:[/b]为了更好的类型安全,使用 [method lerpf]、[method Vector2.lerp]、" +"[method Vector3.lerp]、[method Vector4.lerp]、[method Color.lerp]、[method " +"Quaternion.slerp] 或 [method Basis.slerp]。" + +msgid "" +"Linearly interpolates between two angles (in radians) by a [param weight] " +"value between 0.0 and 1.0.\n" +"Similar to [method lerp], but interpolates correctly when the angles wrap " +"around [constant @GDScript.TAU]. To perform eased interpolation with [method " +"lerp_angle], combine it with [method ease] or [method smoothstep].\n" +"[codeblock]\n" +"extends Sprite\n" +"var elapsed = 0.0\n" +"func _process(delta):\n" +" var min_angle = deg_to_rad(0.0)\n" +" var max_angle = deg_to_rad(90.0)\n" +" rotation = lerp_angle(min_angle, max_angle, elapsed)\n" +" elapsed += delta\n" +"[/codeblock]\n" +"[b]Note:[/b] This function lerps through the shortest path between [param " +"from] and [param to]. However, when these two angles are approximately " +"[code]PI + k * TAU[/code] apart for any integer [code]k[/code], it's not " +"obvious which way they lerp due to floating-point precision errors. For " +"example, [code]lerp_angle(0, PI, weight)[/code] lerps counter-clockwise, " +"while [code]lerp_angle(0, PI + 5 * TAU, weight)[/code] lerps clockwise." +msgstr "" +"通过 0.0 和 1.0 之间的 [param weight] 值,在两个角度(以弧度为单位)之间进行" +"线性插值。\n" +"类似于 [method lerp],但当角度环绕 [constant @GDScript.TAU] 时会正确插值。要" +"使用 [method lerp_angle] 执行缓动插值,请将其与 [method ease] 或 [method " +"smoothstep] 结合使用。\n" +"[codeblock]\n" +"extends Sprite\n" +"var elapsed = 0.0\n" +"func _process(delta):\n" +" var min_angle = deg_to_rad(0.0)\n" +" var max_angle = deg_to_rad(90.0)\n" +" rotation = lerp_angle(min_angle, max_angle, elapsed)\n" +" elapsed += delta\n" +"[/codeblock]\n" +"[b]注意:[/b]该函数通过 [param from] 和 [param to] 之间的最短路径进行插值。然" +"而,当这两个角度相距大致 [code]PI + k * TAU[/code] 其中 [code]k[/code] 为任意" +"整数时,由于浮点数精度误差的缘故,要对插值的方向进行判断是很难的。例如," +"[code]lerp_angle(0, PI, weight)[/code] 会逆时针插值,而 [code]lerp_angle(0, " +"PI + 5 * TAU, weight)[/code] 则会顺时针插值。" + +msgid "" +"Linearly interpolates between two values by the factor defined in [param " +"weight]. To perform interpolation, [param weight] should be between " +"[code]0.0[/code] and [code]1.0[/code] (inclusive). However, values outside " +"this range are allowed and can be used to perform [i]extrapolation[/i]. If " +"this is not desired, use [method clampf] on the result of this function.\n" +"[codeblock]\n" +"lerp(0, 4, 0.75) # Returns 3.0\n" +"[/codeblock]\n" +"See also [method inverse_lerp] which performs the reverse of this operation. " +"To perform eased interpolation with [method lerp], combine it with [method " +"ease] or [method smoothstep]." +msgstr "" +"通过 [param weight] 中定义的因子在两个值之间进行线性插值。要执行插值,[param " +"weight] 应介于 [code]0.0[/code] 和 [code]1.0[/code] 之间(包含)。但是,超出" +"此范围的值是允许的,并可用于执行 [i]外推 [/i]。如果不需要,请对此函数的结果使" +"用 [method clampf]。\n" +"[codeblock]\n" +"lerp(0, 4, 0.75) # 返回 3.0\n" +"[/codeblock]\n" +"另请参阅执行本操作的逆运算的 [method inverse_lerp]。要使用 [method lerp] 执行" +"缓动插值,请将其与 [method ease] 或 [method smoothstep] 结合使用。" + +msgid "" +"Converts from linear energy to decibels (audio). This can be used to " +"implement volume sliders that behave as expected (since volume isn't " +"linear).\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"# \"Slider\" refers to a node that inherits Range such as HSlider or " +"VSlider.\n" +"# Its range must be configured to go from 0 to 1.\n" +"# Change the bus name if you'd like to change the volume of a specific bus " +"only.\n" +"AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), " +"linear_to_db($Slider.value))\n" +"[/codeblock]" +msgstr "" +"从线性能量转换为分贝(音频)。这可用于实现按预期运行的音量滑块(因为音量不是" +"线性的)。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"# “Slider”引用的是 HSlider、VSlider 等继承自 Range 的节点。\n" +"# 必须将其范围配置为 0 到 1。\n" +"# 如果只想修改特定总线的音量,请修改总线名称。\n" +"AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), " +"linear_to_db($Slider.value))\n" +"[/codeblock]" + +msgid "" +"Returns the natural logarithm of [param x]. This is the amount of time " +"needed to reach a certain level of continuous growth.\n" +"[b]Note:[/b] This is not the same as the \"log\" function on most " +"calculators, which uses a base 10 logarithm.\n" +"[codeblock]\n" +"log(10) # Returns 2.302585\n" +"[/codeblock]\n" +"[b]Note:[/b] The logarithm of [code]0[/code] returns [code]-inf[/code], " +"while negative values return [code]-nan[/code]." +msgstr "" +"返回 [param x] 的自然对数。这是持续增长到一定程度所需的时间。\n" +"[b]注意:[/b]这个函数与大多数计算器上的对数“log”函数不同,他们适用的底数是 " +"10。\n" +"[codeblock]\n" +"log(10) # 返回 2.302585\n" +"[/codeblock]\n" +"[b]注意:[/b][code]0[/code] 的对数返回 [code]-inf[/code],负值返回 [code]-" +"nan[/code]。" + +msgid "" +"Returns the maximum of the given values. This function can take any number " +"of arguments.\n" +"[codeblock]\n" +"max(1, 7, 3, -6, 5) # Returns 7\n" +"[/codeblock]" +msgstr "" +"返回给定值的最大值。这个函数可以接受任意数量的参数。\n" +"[codeblock]\n" +"max(1, 7, 3, -6, 5) # 返回 7\n" +"[/codeblock]" + +msgid "" +"Returns the maximum of two [float] values.\n" +"[codeblock]\n" +"maxf(3.6, 24) # Returns 24.0\n" +"maxf(-3.99, -4) # Returns -3.99\n" +"[/codeblock]" +msgstr "" +"返回两个 [float] 值中的最大值。\n" +"[codeblock]\n" +"maxf(3.6, 24) # 返回 24.0\n" +"maxf(-3.99, -4) # 返回 -3.99\n" +"[/codeblock]" + +msgid "" +"Returns the maximum of two [int] values.\n" +"[codeblock]\n" +"maxi(1, 2) # Returns 2\n" +"maxi(-3, -4) # Returns -3\n" +"[/codeblock]" +msgstr "" +"返回两个 [int] 值中的最大值。\n" +"[codeblock]\n" +"maxi(1, 2) # 返回 2\n" +"maxi(-3, -4) # 返回 -3\n" +"[/codeblock]" + +msgid "" +"Returns the minimum of the given values. This function can take any number " +"of arguments.\n" +"[codeblock]\n" +"min(1, 7, 3, -6, 5) # Returns -6\n" +"[/codeblock]" +msgstr "" +"返回给定值的最小值。这个函数可以接受任意数量的参数。\n" +"[codeblock]\n" +"min(1, 7, 3, -6, 5) # 返回 -6\n" +"[/codeblock]" + +msgid "" +"Returns the minimum of two [float] values.\n" +"[codeblock]\n" +"minf(3.6, 24) # Returns 3.6\n" +"minf(-3.99, -4) # Returns -4.0\n" +"[/codeblock]" +msgstr "" +"返回两个 [float] 值中的最小值。\n" +"[codeblock]\n" +"minf(3.6, 24) # 返回 3.6\n" +"minf(-3.99, -4) # 返回 -4.0\n" +"[/codeblock]" + +msgid "" +"Returns the minimum of two [int] values.\n" +"[codeblock]\n" +"mini(1, 2) # Returns 1\n" +"mini(-3, -4) # Returns -4\n" +"[/codeblock]" +msgstr "" +"返回两个 [int] 值中的最小值。\n" +"[codeblock]\n" +"mini(1, 2) # 返回 1\n" +"mini(-3, -4) # 返回 -4\n" +"[/codeblock]" + +msgid "" +"Moves [param from] toward [param to] by the [param delta] value.\n" +"Use a negative [param delta] value to move away.\n" +"[codeblock]\n" +"move_toward(5, 10, 4) # Returns 9\n" +"move_toward(10, 5, 4) # Returns 6\n" +"move_toward(10, 5, -1.5) # Returns 11.5\n" +"[/codeblock]" +msgstr "" +"将 [param from] 向 [param to] 移动,移动的长度是 [param delta]。\n" +"使用负的 [param delta] 值则向远离的方向移动。\n" +"[codeblock]\n" +"move_toward(5, 10, 4) # 返回 9\n" +"move_toward(10, 5, 4) # 返回 6\n" +"move_toward(10, 5, -1.5) # 返回 11.5\n" +"[/codeblock]" + +msgid "" +"Returns the nearest equal or larger power of 2 for the integer [param " +"value].\n" +"In other words, returns the smallest value [code]a[/code] where [code]a = " +"pow(2, n)[/code] such that [code]value <= a[/code] for some non-negative " +"integer [code]n[/code].\n" +"[codeblock]\n" +"nearest_po2(3) # Returns 4\n" +"nearest_po2(4) # Returns 4\n" +"nearest_po2(5) # Returns 8\n" +"\n" +"nearest_po2(0) # Returns 0 (this may not be expected)\n" +"nearest_po2(-1) # Returns 0 (this may not be expected)\n" +"[/codeblock]\n" +"[b]Warning:[/b] Due to the way it is implemented, this function returns " +"[code]0[/code] rather than [code]1[/code] for negative values of [param " +"value] (in reality, 1 is the smallest integer power of 2)." +msgstr "" +"返回最接近且不小于整数 [param value] 的 2 的幂。\n" +"换句话说,返回最小值 [code]a[/code],其中 [code]a = pow(2, n)[/code],某些非" +"负整数 [code]n[/code] 使得值 [code]value <= a[/code]。\n" +"[codeblock]\n" +"nearest_po2(3) # 返回 4\n" +"nearest_po2(4) # 返回 4\n" +"nearest_po2(5) # 返回 8\n" +"\n" +"nearest_po2(0) # 返回 0(可能出乎意料)\n" +"nearest_po2(-1) # 返回 0(可能出乎意料)\n" +"[/codeblock]\n" +"[b]警告:[/b]由于其实现方式,此函数会对非正数的 [param value] 返回 [code]0[/" +"code] 而不是 [code]1[/code] (实际上 1 是 2 的最小整数幂)。" + +msgid "" +"Wraps [param value] between [code]0[/code] and the [param length]. If the " +"limit is reached, the next value the function returns is decreased to the " +"[code]0[/code] side or increased to the [param length] side (like a triangle " +"wave). If [param length] is less than zero, it becomes positive.\n" +"[codeblock]\n" +"pingpong(-3.0, 3.0) # Returns 3.0\n" +"pingpong(-2.0, 3.0) # Returns 2.0\n" +"pingpong(-1.0, 3.0) # Returns 1.0\n" +"pingpong(0.0, 3.0) # Returns 0.0\n" +"pingpong(1.0, 3.0) # Returns 1.0\n" +"pingpong(2.0, 3.0) # Returns 2.0\n" +"pingpong(3.0, 3.0) # Returns 3.0\n" +"pingpong(4.0, 3.0) # Returns 2.0\n" +"pingpong(5.0, 3.0) # Returns 1.0\n" +"pingpong(6.0, 3.0) # Returns 0.0\n" +"[/codeblock]" +msgstr "" +"将 [param value] 包裹在 [code]0[/code] 和 [param length] 之间。如果达到限制," +"函数返回的下一个值将减少到 [code]0[/code] 侧或增加到 [param length] 侧(像三" +"角波)。如果 [param length] 小于零,则变为正数。\n" +"[codeblock]\n" +"pingpong(-3.0, 3.0) # 返回 3.0\n" +"pingpong(-2.0, 3.0) # 返回 2.0\n" +"pingpong(-1.0, 3.0) # 返回 1.0\n" +"pingpong(0.0, 3.0) # 返回 0.0\n" +"pingpong(1.0, 3.0) # 返回 1.0\n" +"pingpong(2.0, 3.0) # 返回 2.0\n" +"pingpong(3.0, 3.0) # 返回 3.0\n" +"pingpong(4.0, 3.0) # 返回 2.0\n" +"pingpong(5.0, 3.0) # 返回 1.0\n" +"pingpong(6.0, 3.0) # 返回 0.0\n" +"[/codeblock]" + +msgid "" +"Returns the integer modulus of [param x] divided by [param y] that wraps " +"equally in positive and negative.\n" +"[codeblock]\n" +"print(\"#(i) (i % 3) (posmod(i, 3))\")\n" +"for i in range(-3, 4):\n" +" print(\"%2d %2d | %2d\" % [i, i % 3, posmod(i, 3)])\n" +"[/codeblock]\n" +"Produces:\n" +"[codeblock]\n" +"(i) (i % 3) (posmod(i, 3))\n" +"-3 0 | 0\n" +"-2 -2 | 1\n" +"-1 -1 | 2\n" +" 0 0 | 0\n" +" 1 1 | 1\n" +" 2 2 | 2\n" +" 3 0 | 0\n" +"[/codeblock]" +msgstr "" +"返回 [param x] 除以 [param y] 的整数模数,对正负数进行一致的循环。\n" +"[codeblock]\n" +"print(\"#(i) (i % 3) (posmod(i, 3))\")\n" +"for i in range(-3, 4):\n" +" print(\"%2d %2d | %2d\" % [i, i % 3, posmod(i, 3)])\n" +"[/codeblock]\n" +"结果:\n" +"[codeblock]\n" +"(i) (i % 3) (posmod(i, 3))\n" +"-3 0 | 0\n" +"-2 -2 | 1\n" +"-1 -1 | 2\n" +" 0 0 | 0\n" +" 1 1 | 1\n" +" 2 2 | 2\n" +" 3 0 | 0\n" +"[/codeblock]" + +msgid "" +"Converts one or more arguments of any type to string in the best way " +"possible and prints them to the console.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = [1, 2, 3]\n" +"print(\"a\", \"b\", a) # Prints ab[1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Array { 1, 2, 3 };\n" +"GD.Print(\"a\", \"b\", a); // Prints ab[1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to " +"print error and warning messages instead of [method print] or [method " +"print_rich]. This distinguishes them from print messages used for debugging " +"purposes, while also displaying a stack trace when an error or warning is " +"printed." +msgstr "" +"以尽可能最佳的方式将一个或多个任意类型的参数转换为字符串,并将其打印到控制" +"台。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = [1, 2, 3]\n" +"print(\"a\", \"b\", a) # 输出 ab[1, 2, 3]\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Array { 1, 2, 3 };\n" +"GD.Print(\"a\", \"b\", a); // 输出 ab[1, 2, 3]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]请考虑使用 [method push_error] 和 [method push_warning] 来打印错" +"误和警告消息,而不是 [method print] 或 [method print_rich]。这将它们与用于调" +"试目的的打印消息区分开来,同时还会在打印错误或警告时显示堆栈跟踪。" + +msgid "" +"Converts one or more arguments of any type to string in the best way " +"possible and prints them to the console. The following BBCode tags are " +"supported: b, i, u, s, indent, code, url, center, right, color, bgcolor, " +"fgcolor. Color tags only support named colors such as [code]red[/code], " +"[i]not[/i] hexadecimal color codes. Unsupported tags will be left as-is in " +"standard output.\n" +"When printing to standard output, the supported subset of BBCode is " +"converted to ANSI escape codes for the terminal emulator to display. " +"Displaying ANSI escape codes is currently only supported on Linux and macOS. " +"Support for ANSI escape codes may vary across terminal emulators, especially " +"for italic and strikethrough.\n" +"[codeblocks]\n" +"[gdscript]\n" +"print_rich(\"[code][b]Hello world![/b][/code]\") # Prints out: [b]Hello " +"world![/b]\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRich(\"[code][b]Hello world![/b][/code]\"); // Prints out: [b]Hello " +"world![/b]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to " +"print error and warning messages instead of [method print] or [method " +"print_rich]. This distinguishes them from print messages used for debugging " +"purposes, while also displaying a stack trace when an error or warning is " +"printed." +msgstr "" +"以尽可能最佳的方式将一个或多个任意类型的参数转换为字符串,并将其打印到控制" +"台。支持以下 BBCode 标签:b、i、u、s、indent、code、url、center、right、" +"color、bgcolor、fgcolor。颜色标签仅支持命名颜色,例如 [code]red[/code]、[i]不" +"支持[/i] 十六进制颜色代码。不支持的标签将在标准输出中保持原样。\n" +"当打印到标准输出时,支持的 BBCode 子集被转换为 ANSI 转义码以供终端仿真器显" +"示。目前仅 Linux 和 macOS 支持显示 ANSI 转义码。对 ANSI 转义码的支持可能因终" +"端仿真器而异,尤其是斜体和删除线。\n" +"[codeblocks]\n" +"[gdscript]\n" +"print_rich(\"[code][b]Hello world![/b][/code]\") # 输出:[b]Hello world![/" +"b]\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRich(\"[code][b]Hello world![/b][/code]\"); // 输出:[b]Hello world!" +"[/b]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]请考虑使用 [method push_error] 和 [method push_warning] 来打印错" +"误和警告消息,而不是 [method print] 或 [method print_rich]。这将它们与用于调" +"试目的的打印消息区分开来,同时还会在打印错误或警告时显示堆栈跟踪。" + +msgid "" +"If verbose mode is enabled ([method OS.is_stdout_verbose] returning " +"[code]true[/code]), converts one or more arguments of any type to string in " +"the best way possible and prints them to the console." +msgstr "" +"如果启用了详细模式([method OS.is_stdout_verbose] 返回 [code]true[/code])," +"则尽可能以最佳方式将一个或多个任意类型的参数转换为字符串,并将它们打印到控制" +"台。" + +msgid "" +"Prints one or more arguments to strings in the best way possible to standard " +"error line.\n" +"[codeblocks]\n" +"[gdscript]\n" +"printerr(\"prints to stderr\")\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintErr(\"prints to stderr\");\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"以尽可能最佳的方式将一个或多个参数作为字符串输出到标准错误行。\n" +"[codeblocks]\n" +"[gdscript]\n" +"printerr(\"prints to stderr\")\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintErr(\"prints to stderr\");\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Prints one or more arguments to strings in the best way possible to the OS " +"terminal. Unlike [method print], no newline is automatically added at the " +"end.\n" +"[codeblocks]\n" +"[gdscript]\n" +"printraw(\"A\")\n" +"printraw(\"B\")\n" +"printraw(\"C\")\n" +"# Prints ABC to terminal\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRaw(\"A\");\n" +"GD.PrintRaw(\"B\");\n" +"GD.PrintRaw(\"C\");\n" +"// Prints ABC to terminal\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"以尽可能最佳的方式将一个或多个参数作为字符串输出到 OS 终端。与 [method " +"print] 不同的是,最后不会自动添加换行符。\n" +"[codeblocks]\n" +"[gdscript]\n" +"printraw(\"A\")\n" +"printraw(\"B\")\n" +"printraw(\"C\")\n" +"# 输出 ABC 到终端\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintRaw(\"A\");\n" +"GD.PrintRaw(\"B\");\n" +"GD.PrintRaw(\"C\");\n" +"// 输出 ABC 到终端\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Prints one or more arguments to the console with a space between each " +"argument.\n" +"[codeblocks]\n" +"[gdscript]\n" +"prints(\"A\", \"B\", \"C\") # Prints A B C\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintS(\"A\", \"B\", \"C\"); // Prints A B C\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将一个或多个参数打印到控制台,每个参数之间有一个空格。\n" +"[codeblocks]\n" +"[gdscript]\n" +"prints(\"A\", \"B\", \"C\") # 输出 A B C\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintS(\"A\", \"B\", \"C\"); // 输出 A B C\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Prints one or more arguments to the console with a tab between each " +"argument.\n" +"[codeblocks]\n" +"[gdscript]\n" +"printt(\"A\", \"B\", \"C\") # Prints A B C\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintT(\"A\", \"B\", \"C\"); // Prints A B C\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将一个或多个参数打印到控制台,每个参数之间有一个制表符。\n" +"[codeblocks]\n" +"[gdscript]\n" +"printt(\"A\", \"B\", \"C\") # 输出 A B C\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PrintT(\"A\", \"B\", \"C\"); // 输出 A B C\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Pushes an error message to Godot's built-in debugger and to the OS " +"terminal.\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_error(\"test error\") # Prints \"test error\" to debugger and terminal " +"as error call\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushError(\"test error\"); // Prints \"test error\" to debugger and " +"terminal as error call\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] This function does not pause project execution. To print an " +"error message and pause project execution in debug builds, use " +"[code]assert(false, \"test error\")[/code] instead." +msgstr "" +"将错误消息推送到 Godot 的内置调试器和 OS 终端。\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_error(\"test error\") # 向调试器和终端打印 “test error” 作为错误调用\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushError(\"test error\"); // 向调试器和终端打印 “test error” 作为错误调" +"用\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]该函数不会暂停项目执行。要在调试版本中打印错误消息并暂停项目执" +"行,请改用 [code]assert(false, \"test error\")[/code]。" + +msgid "" +"Pushes a warning message to Godot's built-in debugger and to the OS " +"terminal.\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_warning(\"test warning\") # Prints \"test warning\" to debugger and " +"terminal as warning call\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushWarning(\"test warning\"); // Prints \"test warning\" to debugger and " +"terminal as warning call\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将警告消息推送到 Godot 的内置调试器和 OS 终端。\n" +"[codeblocks]\n" +"[gdscript]\n" +"push_warning(\"test warning\") # 以警告的形式向调试器和终端输出 “test " +"warning”\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.PushWarning(\"test warning\"); // 以警告的形式向调试器和终端输出 “test " +"warning”\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Converts an angle expressed in radians to degrees.\n" +"[codeblock]\n" +"rad_to_deg(0.523599) # Returns 30\n" +"rad_to_deg(PI) # Returns 180\n" +"rad_to_deg(PI * 2) # Returns 360\n" +"[/codeblock]" +msgstr "" +"将以弧度表示的角度转换为度。\n" +"[codeblock]\n" +"rad_to_deg(0.523599) # 返回 30\n" +"rad_to_deg(PI) # 返回 180\n" +"rad_to_deg(PI * 2) # 返回 360\n" +"[/codeblock]" + +msgid "" +"Given a [param seed], returns a [PackedInt64Array] of size [code]2[/code], " +"where its first element is the randomized [int] value, and the second " +"element is the same as [param seed]. Passing the same [param seed] " +"consistently returns the same array.\n" +"[b]Note:[/b] \"Seed\" here refers to the internal state of the pseudo random " +"number generator, currently implemented as a 64 bit integer.\n" +"[codeblock]\n" +"var a = rand_from_seed(4)\n" +"\n" +"print(a[0])\t# Prints 2879024997\n" +"print(a[1])\t# Prints 4\n" +"[/codeblock]" +msgstr "" +"给定一个 [param seed],返回一个大小为 [code]2[/code] 的 [PackedInt64Array]," +"其中第一个元素是随机化的 [int] 值,第二个元素与 [param seed] 相同。传入相同" +"的 [param seed] 会一致地返回相同的数组。\n" +"[b]注意:[/b]这里的“种子”是指伪随机数发生器的内部状态,目前实现为一个 64 位整" +"数。\n" +"[codeblock]\n" +"var a = rand_from_seed(4)\n" +"\n" +"print(a[0])\t# 输出 2879024997\n" +"print(a[1])\t# 输出 4\n" +"[/codeblock]" + +msgid "" +"Returns a random floating point value between [code]0.0[/code] and " +"[code]1.0[/code] (inclusive).\n" +"[codeblocks]\n" +"[gdscript]\n" +"randf() # Returns e.g. 0.375671\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Randf(); // Returns e.g. 0.375671\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回 [code]0.0[/code] 和 [code]1.0[/code](包含)之间的随机浮点值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"randf() # 返回示例 0.375671\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Randf(); // 返回示例 0.375671\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a random floating point value between [param from] and [param to] " +"(inclusive).\n" +"[codeblocks]\n" +"[gdscript]\n" +"randf_range(0, 20.5) # Returns e.g. 7.45315\n" +"randf_range(-10, 10) # Returns e.g. -3.844535\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.RandRange(0.0, 20.5); // Returns e.g. 7.45315\n" +"GD.RandRange(-10.0, 10.0); // Returns e.g. -3.844535\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回 [param from] 和 [param to](包含)之间的随机浮点值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"randf_range(0, 20.5) # 返回示例 7.45315\n" +"randf_range(-10, 10) # 返回示例 -3.844535\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.RandRange(0.0, 20.5); // 返回示例 7.45315\n" +"GD.RandRange(-10.0, 10.0); // 返回示例 -3.844535\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a normally-distributed pseudo-random floating point value using Box-" +"Muller transform with the specified [param mean] and a standard [param " +"deviation]. This is also called Gaussian distribution." +msgstr "" +"返回一个正态分布的伪随机浮点值,该分布使用具有指定 [param mean] 和标准 " +"[param deviation] 的 Box-Muller 变换。这也被称为高斯分布。" + +msgid "" +"Returns a random unsigned 32-bit integer. Use remainder to obtain a random " +"value in the interval [code][0, N - 1][/code] (where N is smaller than " +"2^32).\n" +"[codeblocks]\n" +"[gdscript]\n" +"randi() # Returns random integer between 0 and 2^32 - 1\n" +"randi() % 20 # Returns random integer between 0 and 19\n" +"randi() % 100 # Returns random integer between 0 and 99\n" +"randi() % 100 + 1 # Returns random integer between 1 and 100\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Randi(); // Returns random integer between 0 and 2^32 - 1\n" +"GD.Randi() % 20; // Returns random integer between 0 and 19\n" +"GD.Randi() % 100; // Returns random integer between 0 and 99\n" +"GD.Randi() % 100 + 1; // Returns random integer between 1 and 100\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回一个随机的无符号 32 位整数。使用余数获得区间 [code][0, N - 1][/code] (其" +"中 N 小于 2^32)的随机值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"randi() # 返回介于 0 到 2^32 - 1 之间的随机整数\n" +"randi() % 20 # 返回介于 0 到 19之间的随机整数\n" +"randi() % 100 # 返回介于 0 到 99 之间的随机整数\n" +"randi() % 100 + 1 # 返回介于 1 到 100 之间的随机整数\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.Randi(); // 返回介于 0 到 2^32 - 1 之间的随机整数\n" +"GD.Randi() % 20; // 返回介于 0 到 19之间的随机整数\n" +"GD.Randi() % 100; // 返回介于 0 到 99 之间的随机整数\n" +"GD.Randi() % 100 + 1; // 返回介于 1 到 100 之间的随机整数\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a random signed 32-bit integer between [param from] and [param to] " +"(inclusive). If [param to] is lesser than [param from], they are swapped.\n" +"[codeblocks]\n" +"[gdscript]\n" +"randi_range(0, 1) # Returns either 0 or 1\n" +"randi_range(-10, 1000) # Returns random integer between -10 and 1000\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.RandRange(0, 1); // Returns either 0 or 1\n" +"GD.RandRange(-10, 1000); // Returns random integer between -10 and 1000\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回介于 [param from] 和 [param to](包含)之间的一个随机有符号 32 位整数。如" +"果 [param to] 小于 [param from],则它们将被交换。\n" +"[codeblocks]\n" +"[gdscript]\n" +"randi_range(0, 1) # 返回 0 或 1\n" +"randi_range(-10, 1000) # 返回介于 -10 和 1000 之间的随机整数\n" +"[/gdscript]\n" +"[csharp]\n" +"GD.RandRange(0, 1); // 返回 0 或 1\n" +"GD.RandRange(-10, 1000); // 返回介于 -10 和 1000 之间的随机整数\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Randomizes the seed (or the internal state) of the random number generator. " +"The current implementation uses a number based on the device's time.\n" +"[b]Note:[/b] This function is called automatically when the project is run. " +"If you need to fix the seed to have consistent, reproducible results, use " +"[method seed] to initialize the random number generator." +msgstr "" +"随机化随机数发生器的种子(或内部状态)。目前的实现使用一个基于设备时间的数" +"字。\n" +"[b]注意:[/b]该函数在项目运行时自动被调用。如果需要修复种子以获得一致、可重现" +"的结果,请使用 [method seed] 来初始化随机数生成器。" + +msgid "" +"Maps a [param value] from range [code][istart, istop][/code] to [code]" +"[ostart, ostop][/code]. See also [method lerp] and [method inverse_lerp]. If " +"[param value] is outside [code][istart, istop][/code], then the resulting " +"value will also be outside [code][ostart, ostop][/code]. If this is not " +"desired, use [method clamp] on the result of this function.\n" +"[codeblock]\n" +"remap(75, 0, 100, -1, 1) # Returns 0.5\n" +"[/codeblock]\n" +"For complex use cases where multiple ranges are needed, consider using " +"[Curve] or [Gradient] instead." +msgstr "" +"将 [param value] 从范围 [code][istart, istop][/code] 映射到 [code][ostart, " +"ostop][/code]。另见 [method lerp] 和 [method inverse_lerp]。如果 [param " +"value] 在 [code][istart, istop][/code] 之外,那么结果值也将在 [code][ostart, " +"ostop][/code] 之外。如果不希望这样,请对该函数的结果使用 [method clamp]。\n" +"[codeblock]\n" +"remap(75, 0, 100, -1, 1) # 返回 0.5\n" +"[/codeblock]\n" +"对于需要多个范围的复杂用例,请考虑改用 [Curve] 或 [Gradient]。" + +msgid "" +"Allocates a unique ID which can be used by the implementation to construct a " +"RID. This is used mainly from native extensions to implement servers." +msgstr "" +"分配一个唯一的 ID,可被实现用来构造一个 RID。这主要被本地扩展使用以实现服务" +"器。" + +msgid "" +"Creates a RID from a [param base]. This is used mainly from native " +"extensions to build servers." +msgstr "从 [param base] 创建一个 RID。这主要被本地扩展使用以构建服务器。" + +msgid "" +"Rounds [param x] to the nearest whole number, with halfway cases rounded " +"away from 0. Supported types: [int], [float], [Vector2], [Vector3], " +"[Vector4].\n" +"[codeblock]\n" +"round(2.4) # Returns 2\n" +"round(2.5) # Returns 3\n" +"round(2.6) # Returns 3\n" +"[/codeblock]\n" +"See also [method floor], [method ceil], and [method snapped].\n" +"[b]Note:[/b] For better type safety, use [method roundf], [method roundi], " +"[method Vector2.round], [method Vector3.round], or [method Vector4.round]." +msgstr "" +"将 [param x] 舍入到最接近的整数,中间情况远离 0 舍入。支持的类型:[int]、" +"[float]、[Vector2]、[Vector3]、[Vector4]。\n" +"[codeblock]\n" +"round(2.4) # 返回 2\n" +"round(2.5) # 返回 3\n" +"round(2.6) # 返回 3\n" +"[/codeblock]\n" +"另请参见 [method floor]、[method ceil] 和 [method snapped]。\n" +"[b]注意:[/b]为了更好的类型安全,使用 [method roundf]、[method roundi]、" +"[method Vector2.round]、[method Vector3.round] 或 [method Vector4.round]。" + +msgid "" +"Rounds [param x] to the nearest whole number, with halfway cases rounded " +"away from 0.\n" +"A type-safe version of [method round], returning a [float]." +msgstr "" +"将 [param x] 舍入到最接近的整数,中间情况远离 0 舍入。\n" +"[method round] 的类型安全版本,返回一个 [float]。" + +msgid "" +"Rounds [param x] to the nearest whole number, with halfway cases rounded " +"away from 0.\n" +"A type-safe version of [method round], returning an [int]." +msgstr "" +"将 [param x] 舍入到最接近的整数,中间情况远离 0 舍入。\n" +"[method round] 的类型安全版本,返回一个 [int]。" + +msgid "" +"Sets the seed for the random number generator to [param base]. Setting the " +"seed manually can ensure consistent, repeatable results for most random " +"functions.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_seed = \"Godot Rocks\".hash()\n" +"seed(my_seed)\n" +"var a = randf() + randi()\n" +"seed(my_seed)\n" +"var b = randf() + randi()\n" +"# a and b are now identical\n" +"[/gdscript]\n" +"[csharp]\n" +"ulong mySeed = (ulong)GD.Hash(\"Godot Rocks\");\n" +"GD.Seed(mySeed);\n" +"var a = GD.Randf() + GD.Randi();\n" +"GD.Seed(mySeed);\n" +"var b = GD.Randf() + GD.Randi();\n" +"// a and b are now identical\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"将随机数生成器的种子设置为 [param base]。手动设置种子可以确保大多数随机函数的" +"结果一致、可重复。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var my_seed = \"Godot Rocks\".hash()\n" +"seed(my_seed)\n" +"var a = randf() + randi()\n" +"seed(my_seed)\n" +"var b = randf() + randi()\n" +"# a 和 b 现在是一样的\n" +"[/gdscript]\n" +"[csharp]\n" +"ulong mySeed = (ulong)GD.Hash(\"Godot Rocks\");\n" +"GD.Seed(mySeed);\n" +"var a = GD.Randf() + GD.Randi();\n" +"GD.Seed(mySeed);\n" +"var b = GD.Randf() + GD.Randi();\n" +"// a 和 b 现在是一样的\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the same type of [Variant] as [param x], with [code]-1[/code] for " +"negative values, [code]1[/code] for positive values, and [code]0[/code] for " +"zeros. Supported types: [int], [float], [Vector2], [Vector2i], [Vector3], " +"[Vector3i], [Vector4], [Vector4i].\n" +"[codeblock]\n" +"sign(-6.0) # Returns -1\n" +"sign(0.0) # Returns 0\n" +"sign(6.0) # Returns 1\n" +"\n" +"sign(Vector3(-6.0, 0.0, 6.0)) # Returns (-1, 0, 1)\n" +"[/codeblock]\n" +"[b]Note:[/b] For better type safety, use [method signf], [method signi], " +"[method Vector2.sign], [method Vector2i.sign], [method Vector3.sign], " +"[method Vector3i.sign], [method Vector4.sign], or [method Vector4i.sign]." +msgstr "" +"返回与 [param x] 相同类型的 [Variant],[code]-1[/code] 为负值,[code]1[/" +"code] 为正值,[code]0[/code] 为零值。支持的类型:[int]、[float]、[Vector2]、" +"[Vector2i]、[Vector3]、[Vector3i]、[Vector4]、[Vector4i]。\n" +"[codeblock]\n" +"sign(-6.0) # 返回 -1\n" +"sign(0.0) # 返回 0\n" +"sign(6.0) # 返回 1\n" +"\n" +"sign(Vector3(-6.0, 0.0, 6.0)) # 返回 (-1, 0, 1)\n" +"[/codeblock]\n" +"[b]注意:[/b]为了更好的类型安全,请使用 [method signf]、[method signi]、" +"[method Vector2.sign]、[method Vector2i.sign]、[method Vector3.sign]、" +"[method Vector3i.sign]、[method Vector4.sign]、或 [method Vector4i.sign]。" + +msgid "" +"Returns [code]-1[/code] if [param x] is negative, [code]1[/code] if [param " +"x] is positive, and [code]0[/code] if if [param x] is zero.\n" +"[codeblock]\n" +"sign(-6) # Returns -1\n" +"sign(0) # Returns 0\n" +"sign(6) # Returns 1\n" +"[/codeblock]" +msgstr "" +"如果 [param x] 为负,则返回 [code]-1[/code];如果 [param x] 为正,则返回 " +"[code]1[/code];如果 [param x] 为零,则返回 [code]0[/code]。\n" +"[codeblock]\n" +"sign(-6) # 返回 -1\n" +"sign(0) # 返回 0\n" +"sign(6) # 返回 1\n" +"[/codeblock]" + +msgid "" +"Returns the sine of angle [param angle_rad] in radians.\n" +"[codeblock]\n" +"sin(0.523599) # Returns 0.5\n" +"sin(deg_to_rad(90)) # Returns 1.0\n" +"[/codeblock]" +msgstr "" +"返回弧度角 [param angle_rad] 的正弦值。\n" +"[codeblock]\n" +"sin(0.523599) # 返回 0.5\n" +"sin(deg_to_rad(90)) # 返回 1.0\n" +"[/codeblock]" + +msgid "" +"Returns the hyperbolic sine of [param x].\n" +"[codeblock]\n" +"var a = log(2.0) # Returns 0.693147\n" +"sinh(a) # Returns 0.75\n" +"[/codeblock]" +msgstr "" +"返回 [param x] 的双曲正弦值。\n" +"[codeblock]\n" +"var a = log(2.0) # 返回 0.693147\n" +"sinh(a) # 返回 0.75\n" +"[/codeblock]" + +msgid "" +"Returns the result of smoothly interpolating the value of [param x] between " +"[code]0[/code] and [code]1[/code], based on the where [param x] lies with " +"respect to the edges [param from] and [param to].\n" +"The return value is [code]0[/code] if [code]x <= from[/code], and [code]1[/" +"code] if [code]x >= to[/code]. If [param x] lies between [param from] and " +"[param to], the returned value follows an S-shaped curve that maps [param x] " +"between [code]0[/code] and [code]1[/code].\n" +"This S-shaped curve is the cubic Hermite interpolator, given by [code]f(y) = " +"3*y^2 - 2*y^3[/code] where [code]y = (x-from) / (to-from)[/code].\n" +"[codeblock]\n" +"smoothstep(0, 2, -5.0) # Returns 0.0\n" +"smoothstep(0, 2, 0.5) # Returns 0.15625\n" +"smoothstep(0, 2, 1.0) # Returns 0.5\n" +"smoothstep(0, 2, 2.0) # Returns 1.0\n" +"[/codeblock]\n" +"Compared to [method ease] with a curve value of [code]-1.6521[/code], " +"[method smoothstep] returns the smoothest possible curve with no sudden " +"changes in the derivative. If you need to perform more advanced transitions, " +"use [Tween] or [AnimationPlayer].\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"smoothstep_ease_comparison.png]Comparison between smoothstep() and ease(x, " +"-1.6521) return values[/url]" +msgstr "" +"返回 [param x] 在 [code]0[/code] 和 [code]1[/code] 之间平滑插值的结果,基于 " +"[param x] 相对于边 [param from] 和 [param to] 的位置。\n" +"如果 [code]x <= from[/code],则返回值为 [code]0[/code];如果 [code]x >= to[/" +"code],则返回值为 [code]1[/code]。如果 [param x] 位于 [param from] 和 [param " +"to] 之间,则返回值遵循一条将 [param x] 映射到 [code]0[/code] 和 [code]1[/" +"code] 之间的 S 形曲线。\n" +"这条 S 形曲线是三次 Hermite 插值器,由 [code]f(y) = 3*y^2 - 2*y^3[/code] 给" +"出,其中 [code]y = (x-from) / (to-from)[/code]。\n" +"[codeblock]\n" +"smoothstep(0, 2, -5.0) # 返回 0.0\n" +"smoothstep(0, 2, 0.5) # 返回 0.15625\n" +"smoothstep(0, 2, 1.0) # 返回 0.5\n" +"smoothstep(0, 2, 2.0) # 返回 1.0\n" +"[/codeblock]\n" +"与曲线值为 [code]-1.6521[/code] 的 [method ease] 相比,[method smoothstep] 返" +"回最平滑的曲线,导数没有突然变化。如果您需要执行更高级的过渡,请使用 [Tween] " +"或 [AnimationPlayer]。\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"smoothstep_ease_comparison.png]smoothstep() 与 ease(x, -1.6521) 返回值的比较" +"[/url]" + +msgid "" +"Returns the multiple of [param step] that is the closest to [param x]. This " +"can also be used to round a floating point number to an arbitrary number of " +"decimals.\n" +"The returned value is the same type of [Variant] as [param step]. Supported " +"types: [int], [float], [Vector2], [Vector2i], [Vector3], [Vector3i], " +"[Vector4], [Vector4i].\n" +"[codeblock]\n" +"snapped(100, 32) # Returns 96\n" +"snapped(3.14159, 0.01) # Returns 3.14\n" +"\n" +"snapped(Vector2(34, 70), Vector2(8, 8)) # Returns (32, 72)\n" +"[/codeblock]\n" +"See also [method ceil], [method floor], and [method round].\n" +"[b]Note:[/b] For better type safety, use [method snappedf], [method " +"snappedi], [method Vector2.snapped], [method Vector2i.snapped], [method " +"Vector3.snapped], [method Vector3i.snapped], [method Vector4.snapped], or " +"[method Vector4i.snapped]." +msgstr "" +"返回最接近 [param x] 的 [param step] 的倍数。这也可用于将一个浮点数四舍五入为" +"任意小数位数。\n" +"返回值是与 [param step] 相同类型的 [Variant]。支持的类型:[int]、[float]、" +"[Vector2]、[Vector2i]、[Vector3]、[Vector3i]、[Vector4]、[Vector4i]。\n" +"[codeblock]\n" +"snapped(100, 32) # 返回 96\n" +"snapped(3.14159, 0.01) # 返回 3.14\n" +"\n" +"snapped(Vector2(34, 70), Vector2(8, 8)) # 返回 (32, 72)\n" +"[/codeblock]\n" +"另见 [method ceil]、[method floor] 和 [method round]。\n" +"[b]注意:[/b]为了更好的类型安全,请使用 [method snappedf]、[method " +"snappedi]、[method Vector2.snapped]、[method Vector2i.snapped]、[method " +"Vector3.snapped]、[method Vector3i.snapped]、[method Vector4.snapped]、或 " +"[method Vector4i.snapped]。" + +msgid "" +"Returns the multiple of [param step] that is the closest to [param x]. This " +"can also be used to round a floating point number to an arbitrary number of " +"decimals.\n" +"A type-safe version of [method snapped], returning a [float].\n" +"[codeblock]\n" +"snapped(32.0, 2.5) # Returns 32.5\n" +"snapped(3.14159, 0.01) # Returns 3.14\n" +"[/codeblock]" +msgstr "" +"返回最接近 [param x] 的 [param step] 的倍数。也可用于将浮点数四舍五入为任意的" +"小数位数。\n" +"[method snapped] 的类型安全版本,返回一个 [float]。\n" +"[codeblock]\n" +"snapped(32.0, 2.5) # 返回 32.5\n" +"snapped(3.14159, 0.01) # 返回 3.14\n" +"[/codeblock]" + +msgid "" +"Returns the multiple of [param step] that is the closest to [param x].\n" +"A type-safe version of [method snapped], returning an [int].\n" +"[codeblock]\n" +"snapped(53, 16) # Returns 48\n" +"snapped(4096, 100) # Returns 4100\n" +"[/codeblock]" +msgstr "" +"返回最接近 [param x] 的 [param step] 的倍数。\n" +"[method snapped] 的类型安全版本,返回一个 [int]。\n" +"[codeblock]\n" +"snapped(53, 16) # 返回 48\n" +"snapped(4096, 100) # 返回 4100\n" +"[/codeblock]" + +msgid "" +"Returns the square root of [param x], where [param x] is a non-negative " +"number.\n" +"[codeblock]\n" +"sqrt(9) # Returns 3\n" +"sqrt(10.24) # Returns 3.2\n" +"sqrt(-1) # Returns NaN\n" +"[/codeblock]\n" +"[b]Note:[/b] Negative values of [param x] return NaN (\"Not a Number\"). in " +"C#, if you need negative inputs, use [code]System.Numerics.Complex[/code]." +msgstr "" +"返回 [param x] 的平方根,其中 [param x] 是一个非负数。\n" +"[codeblock]\n" +"sqrt(9) # 返回 3\n" +"sqrt(10.24) # 返回 3.2\n" +"sqrt(-1) # 返回 NaN\n" +"[/codeblock]\n" +"[b]注意:[/b]负数的 [param x] 会返回 NaN(“不是数字”)。在 C# 中,如果需要负" +"输入,请使用 [code]System.Numerics.Complex[/code]。" + +msgid "" +"Returns the position of the first non-zero digit, after the decimal point. " +"Note that the maximum return value is 10, which is a design decision in the " +"implementation.\n" +"[codeblock]\n" +"var n = step_decimals(5) # n is 0\n" +"n = step_decimals(1.0005) # n is 4\n" +"n = step_decimals(0.000000005) # n is 9\n" +"[/codeblock]" +msgstr "" +"返回小数点后第一个非零数字的位置。注意最大返回值是 10,这是实现中的设计决" +"定。\n" +"[codeblock]\n" +"var n = step_decimals(5) # n 为 0\n" +"n = step_decimals(1.0005) # n 为 4\n" +"n = step_decimals(0.000000005) # n 为 9\n" +"[/codeblock]" + +msgid "" +"Converts one or more arguments of any [Variant] type to a [String] in the " +"best way possible.\n" +"[codeblock]\n" +"var a = [10, 20, 30]\n" +"var b = str(a)\n" +"print(len(a)) # Prints 3 (the number of elements in the array).\n" +"print(len(b)) # Prints 12 (the length of the string \"[10, 20, 30]\").\n" +"[/codeblock]" +msgstr "" +"尽可能以最佳方式将一个或多个任何 [Variant] 类型的参数转换为一个 [String]。\n" +"[codeblock]\n" +"var a = [10, 20, 30]\n" +"var b = str(a)\n" +"print(len(a)) # 输出 3(数组中元素的数量)。\n" +"print(len(b)) # 输出 12(字符串“[10, 20, 30]”的长度)。\n" +"[/codeblock]" + +msgid "" +"Returns the tangent of angle [param angle_rad] in radians.\n" +"[codeblock]\n" +"tan(deg_to_rad(45)) # Returns 1\n" +"[/codeblock]" +msgstr "" +"返回弧度角 [param angle_rad] 的正切值。\n" +"[codeblock]\n" +"tan(deg_to_rad(45)) # 返回 1\n" +"[/codeblock]" + +msgid "" +"Returns the hyperbolic tangent of [param x].\n" +"[codeblock]\n" +"var a = log(2.0) # Returns 0.693147\n" +"tanh(a) # Returns 0.6\n" +"[/codeblock]" +msgstr "" +"返回 [param x] 的双曲正切值。\n" +"[codeblock]\n" +"var a = log(2.0) # 返回 0.693147\n" +"tanh(a) # 返回 0.6\n" +"[/codeblock]" + +msgid "" +"Returns the internal type of the given [param variable], using the [enum " +"Variant.Type] values.\n" +"[codeblock]\n" +"var json = JSON.new()\n" +"json.parse('[\"a\", \"b\", \"c\"]')\n" +"var result = json.get_data()\n" +"if typeof(result) == TYPE_ARRAY:\n" +" print(result[0]) # Prints a\n" +"else:\n" +" print(\"Unexpected result\")\n" +"[/codeblock]" +msgstr "" +"使用 [enum Variant.Type] 值返回给定 [param variable] 的内部类型。\n" +"[codeblock]\n" +"var json = JSON.new()\n" +"json.parse('[\"a\", \"b\", \"c\"]')\n" +"var result = json.get_data()\n" +"if typeof(result) == TYPE_ARRAY:\n" +" print(result[0]) # 输出 a\n" +"else:\n" +" print(\"出乎意料的结果\")\n" +"[/codeblock]" + +msgid "" +"Encodes a [Variant] value to a byte array, without encoding objects. " +"Deserialization can be done with [method bytes_to_var].\n" +"[b]Note:[/b] If you need object serialization, see [method " +"var_to_bytes_with_objects]." +msgstr "" +"将 [Variant] 值编码为字节数组,不编码对象。反序列化可以使用 [method " +"bytes_to_var] 来完成。\n" +"[b]注意:[/b]如果需要对象序列化,参见 [method var_to_bytes_with_objects]。" + +msgid "" +"Encodes a [Variant] value to a byte array. Encoding objects is allowed (and " +"can potentially include executable code). Deserialization can be done with " +"[method bytes_to_var_with_objects]." +msgstr "" +"将 [Variant] 值编码为字节数组。允许对对象进行编码(并且可能包括可执行代码)。" +"反序列化可以使用 [method bytes_to_var_with_objects] 来完成。" + +msgid "" +"Converts a [Variant] [param variable] to a formatted [String] that can then " +"be parsed using [method str_to_var].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = { \"a\": 1, \"b\": 2 }\n" +"print(var_to_str(a))\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Dictionary { [\"a\"] = 1, [\"b\"] = 2 };\n" +"GD.Print(GD.VarToStr(a));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Prints:\n" +"[codeblock]\n" +"{\n" +" \"a\": 1,\n" +" \"b\": 2\n" +"}\n" +"[/codeblock]" +msgstr "" +"将 [Variant] [param variable] 转换为格式化的 [String],然后可以使用 [method " +"str_to_var] 对其进行解析。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var a = { \"a\": 1, \"b\": 2 }\n" +"print(var_to_str(a))\n" +"[/gdscript]\n" +"[csharp]\n" +"var a = new Godot.Collections.Dictionary { [\"a\"] = 1, [\"b\"] = 2 };\n" +"GD.Print(GD.VarToStr(a));\n" +"[/csharp]\n" +"[/codeblocks]\n" +"输出:\n" +"[codeblock]\n" +"{\n" +" \"a\": 1,\n" +" \"b\": 2\n" +"}\n" +"[/codeblock]" + +msgid "" +"Returns a weak reference to an object, or [code]null[/code] if [param obj] " +"is invalid.\n" +"A weak reference to an object is not enough to keep the object alive: when " +"the only remaining references to a referent are weak references, garbage " +"collection is free to destroy the referent and reuse its memory for " +"something else. However, until the object is actually destroyed the weak " +"reference may return the object even if there are no strong references to it." +msgstr "" +"返回对某个对象的弱引用,如果 [param obj] 无效,则返回 [code]null[/code]。\n" +"对对象的弱引用不足以使对象保持存活:当对引用对象的剩余引用都是弱引用时,垃圾" +"回收可以自由销毁该引用对象并将其内存重新用于其他用途。但是,在对象实际被销毁" +"之前,弱引用可能会返回该对象,即使不存在对它的强引用也是如此。" + +msgid "" +"Wraps the [Variant] [param value] between [param min] and [param max]. Can " +"be used for creating loop-alike behavior or infinite surfaces.\n" +"Variant types [int] and [float] are supported. If any of the arguments is " +"[float] this function returns a [float], otherwise it returns an [int].\n" +"[codeblock]\n" +"var a = wrap(4, 5, 10)\n" +"# a is 9 (int)\n" +"\n" +"var a = wrap(7, 5, 10)\n" +"# a is 7 (int)\n" +"\n" +"var a = wrap(10.5, 5, 10)\n" +"# a is 5.5 (float)\n" +"[/codeblock]" +msgstr "" +"在 [param min] 和 [param max] 之间包裹 [Variant] [param value]。可用于创建类" +"似循环的行为或无限曲面。\n" +"支持变体类型 [int] 和 [float]。如果任一参数是 [float],则该函数返回 [float]," +"否则返回 [int]。\n" +"[codeblock]\n" +"var a = wrap(4, 5, 10)\n" +"# a 为 9 (整数类型)\n" +"\n" +"var a = wrap(7, 5, 10)\n" +"# a 为 7 (整数类型)\n" +"\n" +"var a = wrap(10.5, 5, 10)\n" +"# a 为 5.5 (浮点类型)\n" +"[/codeblock]" + +msgid "" +"Wraps the float [param value] between [param min] and [param max]. Can be " +"used for creating loop-alike behavior or infinite surfaces.\n" +"[codeblock]\n" +"# Infinite loop between 5.0 and 9.9\n" +"value = wrapf(value + 0.1, 5.0, 10.0)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# Infinite rotation (in radians)\n" +"angle = wrapf(angle + 0.1, 0.0, TAU)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# Infinite rotation (in radians)\n" +"angle = wrapf(angle + 0.1, -PI, PI)\n" +"[/codeblock]\n" +"[b]Note:[/b] If [param min] is [code]0[/code], this is equivalent to [method " +"fposmod], so prefer using that instead.\n" +"[code]wrapf[/code] is more flexible than using the [method fposmod] approach " +"by giving the user control over the minimum value." +msgstr "" +"在 [param min] 和 [param max] 之间将浮点数 [param value] 循环。可用于创建类似" +"循环的行为或无限曲面。\n" +"[codeblock]\n" +"# 在 5.0 和 9.9 之间无限循环\n" +"value = wrapf(value + 0.1, 5.0, 10.0)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# 无限旋转(弧度)\n" +"angle = wrapf(angle + 0.1, 0.0, TAU)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# 无限旋转(弧度)\n" +"angle = wrapf(angle + 0.1, -PI, PI)\n" +"[/codeblock]\n" +"[b]注意:[/b]如果 [param min] 为 [code]0[/code],则相当于 [method fposmod]," +"因此请改用它。\n" +"通过让用户控制最小值,[code]wrapf[/code] 比使用 [method fposmod] 方法更灵活。" + +msgid "" +"Wraps the integer [param value] between [param min] and [param max]. Can be " +"used for creating loop-alike behavior or infinite surfaces.\n" +"[codeblock]\n" +"# Infinite loop between 5 and 9\n" +"frame = wrapi(frame + 1, 5, 10)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# result is -2\n" +"var result = wrapi(-6, -5, -1)\n" +"[/codeblock]" +msgstr "" +"在 [param min] 和 [param max] 之间环绕整数 [param value]。 可用于创建类似循环" +"的行为或无限曲面。\n" +"[codeblock]\n" +"# 在 5 和 9 之间无限循环\n" +"frame = wrapi(frame + 1, 5, 10)\n" +"[/codeblock]\n" +"[codeblock]\n" +"# result 是 -2\n" +"var result = wrapi(-6, -5, -1)\n" +"[/codeblock]" + msgid "The [AudioServer] singleton." msgstr "[AudioServer] 单例。" @@ -1236,9 +3135,27 @@ msgstr "[CameraServer] 单例。" msgid "The [ClassDB] singleton." msgstr "[ClassDB] 单例。" +msgid "The [DisplayServer] singleton." +msgstr "[DisplayServer] 单例。" + msgid "The [Engine] singleton." msgstr "[Engine] 单例。" +msgid "The [EngineDebugger] singleton." +msgstr "[EngineDebugger] 单例。" + +msgid "The [GDExtensionManager] singleton." +msgstr "[GDExtensionManager] 单例。" + +msgid "The [Geometry2D] singleton." +msgstr "[Geometry2D] 单例。" + +msgid "The [Geometry3D] singleton." +msgstr "[Geometry3D] 单例。" + +msgid "The [GodotSharp] singleton." +msgstr "[GodotSharp] 单例。" + msgid "The [IP] singleton." msgstr "[IP] 单例。" @@ -1255,33 +3172,85 @@ msgstr "" "[JavaClassWrapper] 单例。\n" "[b]注意:[/b]仅在 Android 上实现。" +msgid "" +"The [JavaScriptBridge] singleton.\n" +"[b]Note:[/b] Only implemented on the Web platform." +msgstr "" +"[JavaScriptBridge] 单例。\n" +"[b]注意:[/b]仅在 Web 平台上实现。" + msgid "The [Marshalls] singleton." msgstr "[Marshalls] 单例。" msgid "The [NavigationMeshGenerator] singleton." msgstr "[NavigationMeshGenerator] 单例。" +msgid "The [NavigationServer2D] singleton." +msgstr "[NavigationServer2D] 单例。" + msgid "The [OS] singleton." msgstr "[OS] 单例。" msgid "The [Performance] singleton." msgstr "[Performance] 单例。" +msgid "The [PhysicsServer2D] singleton." +msgstr "[PhysicsServer2D] 单例。" + +msgid "The [PhysicsServer2DManager] singleton." +msgstr "[PhysicsServer2DManager] 单例。" + +msgid "The [PhysicsServer3D] singleton." +msgstr "[PhysicsServer3D] 单例。" + +msgid "The [PhysicsServer3DManager] singleton." +msgstr "[PhysicsServer3DManager] 单例。" + msgid "The [ProjectSettings] singleton." msgstr "[ProjectSettings] 单例。" +msgid "The [RenderingServer] singleton." +msgstr "[RenderingServer] 单例。" + msgid "The [ResourceLoader] singleton." msgstr "[ResourceLoader] 单例。" msgid "The [ResourceSaver] singleton." msgstr "[ResourceSaver] 单例。" +msgid "The [ResourceUID] singleton." +msgstr "[ResourceUID] 单例。" + +msgid "The [TextServerManager] singleton." +msgstr "[TextServerManager] 单例。" + +msgid "The [ThemeDB] singleton." +msgstr "[ThemeDB] 单例。" + msgid "The [Time] singleton." msgstr "[Time] 单例。" msgid "The [TranslationServer] singleton." msgstr "[TranslationServer] 单例。" +msgid "The [WorkerThreadPool] singleton." +msgstr "[WorkerThreadPool] 单例。" + +msgid "The [XRServer] singleton." +msgstr "[XRServer] 单例。" + +msgid "Left side, usually used for [Control] or [StyleBox]-derived classes." +msgstr "左边,常用于 [Control] 或 [StyleBox] 的派生类。" + +msgid "Top side, usually used for [Control] or [StyleBox]-derived classes." +msgstr "顶边,常用于 [Control] 或 [StyleBox] 的派生类。" + +msgid "Right side, usually used for [Control] or [StyleBox]-derived classes." +msgstr "右边,常用于 [Control] 或 [StyleBox] 的派生类。" + +msgid "Bottom side, usually used for [Control] or [StyleBox]-derived classes." +msgstr "底边,常用于 [Control] 或 [StyleBox] 的派生类。" + msgid "Top-left corner." msgstr "左上角。" @@ -1304,6 +3273,15 @@ msgid "" "[Slider], etc." msgstr "通用水平对齐,常用于 [Separator]、[ScrollBar]、[Slider] 等。" +msgid "" +"Clockwise rotation. Used by some methods (e.g. [method Image.rotate_90])." +msgstr "顺时针旋转。被一些方法使用(例如 [method Image.rotate_90])。" + +msgid "" +"Counter-clockwise rotation. Used by some methods (e.g. [method Image." +"rotate_90])." +msgstr "逆时针旋转。被一些方法使用(例如 [method Image.rotate_90])。" + msgid "Horizontal left alignment, usually for text-derived classes." msgstr "水平左对齐,常用于文本派生类。" @@ -1313,6 +3291,9 @@ msgstr "水平居中对齐,常用于文本派生类。" msgid "Horizontal right alignment, usually for text-derived classes." msgstr "水平右对齐,常用于文本派生类。" +msgid "Expand row to fit width, usually for text-derived classes." +msgstr "扩展行以适应宽度,常用于文本派生类。" + msgid "Vertical top alignment, usually for text-derived classes." msgstr "垂直上对齐,常用于文本派生类。" @@ -1322,6 +3303,147 @@ msgstr "垂直居中对齐,常用于文本派生类。" msgid "Vertical bottom alignment, usually for text-derived classes." msgstr "垂直下对齐,常用于文本派生类。" +msgid "Expand rows to fit height, usually for text-derived classes." +msgstr "扩展行以适应高度,通常用于文本派生类。" + +msgid "" +"Aligns the top of the inline object (e.g. image, table) to the position of " +"the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant." +msgstr "" +"将内联对象(例如图像、表格)的顶部与 [code]INLINE_ALIGNMENT_TO_*[/code] 常量" +"指定的文本位置对齐。" + +msgid "" +"Aligns the center of the inline object (e.g. image, table) to the position " +"of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant." +msgstr "" +"将内联对象(例如图像、表格)的中心与 [code]INLINE_ALIGNMENT_TO_*[/code] 常量" +"指定的文本位置对齐。" + +msgid "" +"Aligns the baseline (user defined) of the inline object (e.g. image, table) " +"to the position of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] " +"constant." +msgstr "" +"将内联对象(如图像、表格)的基线(用户定义)与[code]INLINE_ALIGNMENT_TO_*[/" +"code] 常数指定的文本位置对齐。" + +msgid "" +"Aligns the bottom of the inline object (e.g. image, table) to the position " +"of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant." +msgstr "" +"将内联对象(例如图像、表格)的底部与 [code]INLINE_ALIGNMENT_TO_*[/code] 常量" +"指定的文本位置对齐。" + +msgid "" +"Aligns the position of the inline object (e.g. image, table) specified by " +"[code]INLINE_ALIGNMENT_*_TO[/code] constant to the top of the text." +msgstr "" +"将由 [code]INLINE_ALIGNMENT_*_TO[/code] 常量指定的内联对象(例如图像、表格)" +"的位置与文本顶部对齐。" + +msgid "" +"Aligns the position of the inline object (e.g. image, table) specified by " +"[code]INLINE_ALIGNMENT_*_TO[/code] constant to the center of the text." +msgstr "" +"将由 [code]INLINE_ALIGNMENT_*_TO[/code] 常量指定的内联对象(例如图像、表格)" +"的位置与文本中心对齐。" + +msgid "" +"Aligns the position of the inline object (e.g. image, table) specified by " +"[code]INLINE_ALIGNMENT_*_TO[/code] constant to the baseline of the text." +msgstr "" +"将由 [code]INLINE_ALIGNMENT_*_TO[/code] 常量指定的内联对象(例如图像、表格)" +"的位置与文本基线对齐。" + +msgid "Aligns inline object (e.g. image, table) to the bottom of the text." +msgstr "将内联对象(例如图像、表格)与文本底部对齐。" + +msgid "" +"Aligns top of the inline object (e.g. image, table) to the top of the text. " +"Equivalent to [code]INLINE_ALIGNMENT_TOP_TO | INLINE_ALIGNMENT_TO_TOP[/code]." +msgstr "" +"将内联对象(例如图像、表格)的顶部与文本的顶部对齐。等效于 " +"[code]INLINE_ALIGNMENT_TOP_TO | INLINE_ALIGNMENT_TO_TOP[/code]。" + +msgid "" +"Aligns center of the inline object (e.g. image, table) to the center of the " +"text. Equivalent to [code]INLINE_ALIGNMENT_CENTER_TO | " +"INLINE_ALIGNMENT_TO_CENTER[/code]." +msgstr "" +"将内联对象(例如图像、表格)的中心与文本的中心对齐。相当于 " +"[code]INLINE_ALIGNMENT_CENTER_TO | INLINE_ALIGNMENT_TO_CENTER[/code]。" + +msgid "" +"Aligns bottom of the inline object (e.g. image, table) to the bottom of the " +"text. Equivalent to [code]INLINE_ALIGNMENT_BOTTOM_TO | " +"INLINE_ALIGNMENT_TO_BOTTOM[/code]." +msgstr "" +"将内联对象(例如图像、表格)的底部与文本底部对齐。等效于 " +"[code]INLINE_ALIGNMENT_BOTTOM_TO | INLINE_ALIGNMENT_TO_BOTTOM[/code]。" + +msgid "A bit mask for [code]INLINE_ALIGNMENT_*_TO[/code] alignment constants." +msgstr "用于 [code]INLINE_ALIGNMENT_*_TO[/code] 对齐常量的位掩码。" + +msgid "A bit mask for [code]INLINE_ALIGNMENT_TO_*[/code] alignment constants." +msgstr "用于 [code]INLINE_ALIGNMENT_TO_*[/code] 对齐常量的位掩码。" + +msgid "" +"Specifies that Euler angles should be in XYZ order. When composing, the " +"order is X, Y, Z. When decomposing, the order is reversed, first Z, then Y, " +"and X last." +msgstr "" +"指定欧拉角应按 XYZ 顺序排列。组合时,顺序为 X、Y、Z。分解时,顺序相反,先 Z," +"再 Y,最后 X。" + +msgid "" +"Specifies that Euler angles should be in XZY order. When composing, the " +"order is X, Z, Y. When decomposing, the order is reversed, first Y, then Z, " +"and X last." +msgstr "" +"指定欧拉角应按 XZY 顺序排列。组合时,顺序为 X、Z、Y。分解时,顺序相反,先 Y," +"再 Z,最后 X。" + +msgid "" +"Specifies that Euler angles should be in YXZ order. When composing, the " +"order is Y, X, Z. When decomposing, the order is reversed, first Z, then X, " +"and Y last." +msgstr "" +"指定欧拉角应按 YXZ 顺序排列。组合时,顺序为 Y、X、Z。分解时,顺序相反,先 Z," +"再 X,最后 Y。" + +msgid "" +"Specifies that Euler angles should be in YZX order. When composing, the " +"order is Y, Z, X. When decomposing, the order is reversed, first X, then Z, " +"and Y last." +msgstr "" +"指定欧拉角应按 YZX 顺序排列。组合时,顺序为 Y、Z、X。分解时,顺序相反,先 X," +"再 Z,最后 Y。" + +msgid "" +"Specifies that Euler angles should be in ZXY order. When composing, the " +"order is Z, X, Y. When decomposing, the order is reversed, first Y, then X, " +"and Z last." +msgstr "" +"指定欧拉角应按 ZXY 顺序排列。组合时,顺序为 Z、X、Y。分解时,顺序相反,先 Y," +"再 X,最后 Z。" + +msgid "" +"Specifies that Euler angles should be in ZYX order. When composing, the " +"order is Z, Y, X. When decomposing, the order is reversed, first X, then Y, " +"and Z last." +msgstr "" +"指定欧拉角应按 ZYX 顺序排列。组合时,顺序为 Z、Y、X。分解时,顺序相反,先 X," +"再 Y,最后 Z。" + +msgid "" +"Enum value which doesn't correspond to any key. This is used to initialize " +"[enum Key] properties with a generic state." +msgstr "与任何键都不对应的枚举值。这用于初始化具有通用状态的 [enum Key] 属性。" + +msgid "Keycodes with this bit applied are non-printable." +msgstr "应用此位的键码不可打印。" + msgid "Escape key." msgstr "ESC 键。" @@ -1451,6 +3573,63 @@ msgstr "F15 键。" msgid "F16 key." msgstr "F16 键。" +msgid "F17 key." +msgstr "F17 键。" + +msgid "F18 key." +msgstr "F18 键。" + +msgid "F19 key." +msgstr "F19 键。" + +msgid "F20 key." +msgstr "F20 键。" + +msgid "F21 key." +msgstr "F21 键。" + +msgid "F22 key." +msgstr "F22 键。" + +msgid "F23 key." +msgstr "F23 键。" + +msgid "F24 key." +msgstr "F24 键。" + +msgid "F25 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F25 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F26 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F26 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F27 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F27 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F28 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F28 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F29 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F29 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F30 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F30 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F31 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F31 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F32 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F32 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F33 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F33 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F34 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F34 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + +msgid "F35 key. Only supported on macOS and Linux due to a Windows limitation." +msgstr "F35 键。由于 Windows 限制,仅支持 macOS 和 Linux。" + msgid "Multiply (*) key on the numeric keypad." msgstr "小键盘的星键/乘以键(*)。" @@ -1461,7 +3640,7 @@ msgid "Subtract (-) key on the numeric keypad." msgstr "小键盘的减号键(-)。" msgid "Period (.) key on the numeric keypad." -msgstr "小件盘的点键(.)。" +msgstr "小键盘的点键(.)。" msgid "Add (+) key on the numeric keypad." msgstr "小键盘的加号键(+)。" @@ -1497,7 +3676,10 @@ msgid "Number 9 on the numeric keypad." msgstr "小键盘的数字 9。" msgid "Context menu key." -msgstr "菜单键。" +msgstr "上下文菜单键。" + +msgid "Hyper key. (On Linux/X11 only)." +msgstr "超级键。(仅在 Linux/X11 上)。" msgid "Help key." msgstr "Help 键。" @@ -1656,6 +3838,36 @@ msgstr ". 键。" msgid "/ key." msgstr "/ 键。" +msgid "Number 0 key." +msgstr "数字 0 键。" + +msgid "Number 1 key." +msgstr "数字 1 键。" + +msgid "Number 2 key." +msgstr "数字 2 键。" + +msgid "Number 3 key." +msgstr "数字 3 键。" + +msgid "Number 4 key." +msgstr "数字 4 键。" + +msgid "Number 5 key." +msgstr "数字 5 键。" + +msgid "Number 6 key." +msgstr "数字 6 键。" + +msgid "Number 7 key." +msgstr "数字 7 键。" + +msgid "Number 8 key." +msgstr "数字 8 键。" + +msgid "Number 9 key." +msgstr "数字 9 键。" + msgid ": key." msgstr ": 键。" @@ -1791,17 +4003,40 @@ msgstr "¥ 键。" msgid "§ key." msgstr "§ 键。" +msgid "\"Globe\" key on Mac / iPad keyboard." +msgstr "Mac / iPad 键盘上的“地球”键。" + +msgid "\"On-screen keyboard\" key iPad keyboard." +msgstr "iPad 键盘上的“屏幕键盘”键。" + +msgid "英数 key on Mac keyboard." +msgstr "Mac 键盘上的“英数”键。" + +msgid "かな key on Mac keyboard." +msgstr "Mac 键盘上的“かな”键。" + msgid "Key Code mask." msgstr "键码掩码。" msgid "Modifier key mask." -msgstr "Modifier 键掩码。" +msgstr "修饰键掩码。" + +msgid "" +"Automatically remapped to [constant KEY_META] on macOS and [constant " +"KEY_CTRL] on other platforms, this mask is never set in the actual events, " +"and should be used for key mapping only." +msgstr "" +"自动重映射为 macOS 上的 [constant KEY_META] 和其他平台上的 [constant " +"KEY_CTRL],此掩码在实际事件中从不设置,应仅用于键映射。" msgid "Shift key mask." msgstr "Shift 键掩码。" -msgid "Ctrl key mask." -msgstr "Ctrl 键掩码。" +msgid "Alt or Option (on macOS) key mask." +msgstr "Alt 或 Option(在 macOS 上)键掩码。" + +msgid "Command (on macOS) or Meta/Windows key mask." +msgstr "命令(在 macOS 上)或 Meta/Windows 键掩码。" msgid "Keypad key mask." msgstr "Keypad 键掩码。" @@ -1809,21 +4044,44 @@ 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 up." -msgstr "鼠标滚轮向上。" - -msgid "Mouse wheel down." -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 "鼠标中键掩码。" @@ -1833,6 +4091,152 @@ msgstr "鼠标额外键 1 掩码。" msgid "Extra mouse button 2 mask." msgstr "鼠标额外键 2 掩码。" +msgid "An invalid game controller button." +msgstr "无效的游戏控制器按钮。" + +msgid "" +"Game controller SDL button A. Corresponds to the bottom action button: Sony " +"Cross, Xbox A, Nintendo B." +msgstr "" +"游戏控制器 SDL 按键 A。对应底部动作按钮:Sony Cross、Xbox A、Nintendo B。" + +msgid "" +"Game controller SDL button B. Corresponds to the right action button: Sony " +"Circle, Xbox B, Nintendo A." +msgstr "" +"游戏控制器 SDL 按钮 B。对应右侧动作按钮:Sony Circle、Xbox B、Nintendo A。" + +msgid "" +"Game controller SDL button X. Corresponds to the left action button: Sony " +"Square, Xbox X, Nintendo Y." +msgstr "" +"游戏控制器 SDL 按钮 X。对应左侧动作按钮:Sony Square、Xbox X、Nintendo Y。" + +msgid "" +"Game controller SDL button Y. Corresponds to the top action button: Sony " +"Triangle, Xbox Y, Nintendo X." +msgstr "" +"游戏控制器 SDL 按钮 Y。对应顶部动作按钮:Sony Triangle、Xbox Y、Nintendo X。" + +msgid "" +"Game controller SDL back button. Corresponds to the Sony Select, Xbox Back, " +"Nintendo - button." +msgstr "" +"游戏控制器 SDL back按钮。对应于 Sony Select、Xbox Back、Nintendo - 按钮。" + +msgid "" +"Game controller SDL guide button. Corresponds to the Sony PS, Xbox Home " +"button." +msgstr "游戏控制器 SDL guide 按钮。对应于索尼 PS、Xbox 的 Home 键。" + +msgid "Game controller SDL start button. Corresponds to the Nintendo + button." +msgstr "游戏控制器 SDL start 按钮。对应 Nintendo + 按钮。" + +msgid "" +"Game controller SDL left stick button. Corresponds to the Sony L3, Xbox L/LS " +"button." +msgstr "游戏控制器 SDL 左摇杆按钮。对应于 Sony L3、Xbox L/LS 按钮。" + +msgid "" +"Game controller SDL right stick button. Corresponds to the Sony R3, Xbox R/" +"RS button." +msgstr "游戏控制器 SDL 右摇杆按钮。对应于 Sony R3、Xbox R/RS 按钮。" + +msgid "" +"Game controller SDL left shoulder button. Corresponds to the Sony L1, Xbox " +"LB button." +msgstr "游戏控制器 SDL 左肩按钮。对应于 Sony L1、Xbox LB 按钮。" + +msgid "" +"Game controller SDL right shoulder button. Corresponds to the Sony R1, Xbox " +"RB button." +msgstr "游戏控制器 SDL 右肩按钮。对应于 Sony R1、Xbox RB 按钮。" + +msgid "Game controller D-pad up button." +msgstr "游戏控制器方向键向上按钮。" + +msgid "Game controller D-pad down button." +msgstr "游戏控制器方向键向下按钮。" + +msgid "Game controller D-pad left button." +msgstr "游戏控制器方向键向左键。" + +msgid "Game controller D-pad right button." +msgstr "游戏控制器方向键向右键。" + +msgid "" +"Game controller SDL miscellaneous button. Corresponds to Xbox share button, " +"PS5 microphone button, Nintendo Switch capture button." +msgstr "" +"游戏控制器 SDL 杂项按钮。对应 Xbox 分享键、PS5 麦克风键、Nintendo Switch 捕捉" +"键。" + +msgid "Game controller SDL paddle 1 button." +msgstr "游戏控制器 SDL 拨片 1 按钮。" + +msgid "Game controller SDL paddle 2 button." +msgstr "游戏控制器 SDL 拨片 2 按钮。" + +msgid "Game controller SDL paddle 3 button." +msgstr "游戏控制器 SDL 拨片 3 按钮。" + +msgid "Game controller SDL paddle 4 button." +msgstr "游戏控制器 SDL 拨片 4 按钮。" + +msgid "Game controller SDL touchpad button." +msgstr "游戏控制器 SDL 触摸板按钮。" + +msgid "The number of SDL game controller buttons." +msgstr "SDL 游戏控制器按钮的数量。" + +msgid "" +"The maximum number of game controller buttons supported by the engine. The " +"actual limit may be lower on specific platforms:\n" +"- [b]Android:[/b] Up to 36 buttons.\n" +"- [b]Linux:[/b] Up to 80 buttons.\n" +"- [b]Windows[/b] and [b]macOS:[/b] Up to 128 buttons." +msgstr "" +"引擎所支持的最大游戏控制器按钮数。特定平台上的实际界限可能更低:\n" +"- [b]Android:[/b]最多 36 个按钮。\n" +"- [b]Linux:[/b]最多 80 个按钮。\n" +"- [b]Windows[/b] 和 [b]macOS:[/b]最多 128 个按钮。" + +msgid "An invalid game controller axis." +msgstr "无效的游戏控制器轴。" + +msgid "Game controller left joystick x-axis." +msgstr "游戏控制器左操纵杆 x 轴。" + +msgid "Game controller left joystick y-axis." +msgstr "游戏控制器左操纵杆 y 轴。" + +msgid "Game controller right joystick x-axis." +msgstr "游戏控制器右操纵杆 x 轴。" + +msgid "Game controller right joystick y-axis." +msgstr "游戏控制器右操纵杆 y 轴。" + +msgid "Game controller left trigger axis." +msgstr "游戏控制器左扳机轴。" + +msgid "Game controller right trigger axis." +msgstr "游戏控制器左扳机轴。" + +msgid "The number of SDL game controller axes." +msgstr "SDL 游戏控制器轴的数量。" + +msgid "" +"The maximum number of game controller axes: OpenVR supports up to 5 " +"Joysticks making a total of 10 axes." +msgstr "最大游戏控制器轴数:OpenVR 最多支持 5 个操纵杆,总共 10 个轴。" + +msgid "" +"Enum value which doesn't correspond to any MIDI message. This is used to " +"initialize [enum MIDIMessage] properties with a generic state." +msgstr "" +"与任何 MIDI 消息都不对应的枚举值。这用于初始化具有通用状态的 [enum " +"MIDIMessage] 属性。" + msgid "" "MIDI note OFF message. See the documentation of [InputEventMIDI] for " "information of how to use MIDI inputs." @@ -1904,7 +4308,7 @@ msgstr "MIDI 歌曲选择消息。指定要播放的序列或歌曲。Godot 未 msgid "" "MIDI tune request message. Upon receiving a tune request, all analog " "synthesizers should tune their oscillators." -msgstr "MIDI 调整请求消息。收到调整请求后,所有模拟合成器都应该调整其晶振。" +msgstr "MIDI 调谐请求消息。收到调谐请求后,所有模拟合成器都应调整其振荡器。" msgid "" "MIDI timing clock message. Sent 24 times per quarter note when " @@ -1933,6 +4337,39 @@ msgid "" msgstr "" "MIDI 系统重置消息。将系统中的所有接收方重置为上电状态。本身不应在上电时发送。" +msgid "" +"Methods that return [enum Error] return [constant OK] when no error " +"occurred.\n" +"Since [constant OK] has value 0, and all other error constants are positive " +"integers, it can also be used in boolean checks.\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"var error = method_that_returns_error()\n" +"if error != OK:\n" +" printerr(\"Failure!\")\n" +"\n" +"# Or, alternatively:\n" +"if error:\n" +" printerr(\"Still failing!\")\n" +"[/codeblock]\n" +"[b]Note:[/b] Many functions do not return an error code, but will print " +"error messages to standard output." +msgstr "" +"返回 [enum Error] 的方法会在没有错误发生时返回 [constant OK]。\n" +"由于 [constant OK] 的值为 0,并且所有其他错误常数都是正整数,因此返回值也可以" +"用于布尔检查。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"var error = method_that_returns_error()\n" +"if error != OK:\n" +" printerr(\"Failure!\")\n" +"\n" +"# 或者,等价于:\n" +"if error:\n" +" printerr(\"Still failing!\")\n" +"[/codeblock]\n" +"[b]注意:[/b]许多函数不返回错误代码,但会将错误信息打印到标准输出。" + msgid "Generic error." msgstr "一般性错误。" @@ -2068,6 +4505,90 @@ 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 " @@ -2076,6 +4597,30 @@ 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." @@ -2136,6 +4681,15 @@ 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." @@ -2151,6 +4705,57 @@ msgid "" msgstr "" "提示 [String] 属性在为空时应当显示占位文本。提示字符串为所使用的占位文本。" +msgid "" +"Hints that a [Color] property should be edited without affecting its " +"transparency ([member Color.a] is not editable)." +msgstr "" +"提示一个 [Color] 属性在编辑时不能影响其透明度([member Color.a] 不可编辑)。" + +msgid "" +"Hint that a property represents a particular type. If a property is " +"[constant TYPE_STRING], allows to set a type from the create dialog. If you " +"need to create an [Array] to contain elements of a specific type, the " +"[code]hint_string[/code] must encode nested types using [code]\":\"[/code] " +"and [code]\"/\"[/code] for specifying [Resource] types. For instance:\n" +"[codeblock]\n" +"hint_string = \"%s:\" % [TYPE_INT] # Array of integers.\n" +"hint_string = \"%s:%s:\" % [TYPE_ARRAY, TYPE_REAL] # Two-dimensional array " +"of floats.\n" +"hint_string = \"%s/%s:Resource\" % [TYPE_OBJECT, TYPE_OBJECT] # Array of " +"resources.\n" +"hint_string = \"%s:%s/%s:Resource\" % [TYPE_ARRAY, TYPE_OBJECT, TYPE_OBJECT] " +"# Two-dimensional array of resources.\n" +"[/codeblock]\n" +"[b]Note:[/b] The final colon is required for properly detecting built-in " +"types." +msgstr "" +"提示一个属性代表特定的类型。如果属性为 [constant TYPE_STRING],则可以通过创建" +"对话框设置其类型。如果你需要创建一个 [Array] 来放置特定类型的元素,则 " +"[code]hint_string[/code] 必须使用 [code]\":\"[/code] 来编码嵌套类型,使用 " +"[code]\"/\"[/code] 来指定 [Resource] 类型。例如:\n" +"[codeblock]\n" +"hint_string = \"%s:\" % [TYPE_INT] # 整数数组。\n" +"hint_string = \"%s:%s:\" % [TYPE_ARRAY, TYPE_REAL] # 浮点数二维数组。\n" +"hint_string = \"%s/%s:Resource\" % [TYPE_OBJECT, TYPE_OBJECT] # 资源数组。\n" +"hint_string = \"%s:%s/%s:Resource\" % [TYPE_ARRAY, TYPE_OBJECT, TYPE_OBJECT] " +"# 资源二维数组。\n" +"[/codeblock]\n" +"[b]注意:[/b]最后的冒号是必须的,否则无法正确检测内置类型。" + +msgid "" +"Hints that a string property is a locale code. Editing it will show a locale " +"dialog for picking language and country." +msgstr "" +"提示一个字符串属性是一个区域设置代码。编辑它将显示一个用于选择语言和地区的区" +"域设置对话框。" + +msgid "" +"Hints that a dictionary property is string translation map. Dictionary keys " +"are locale codes and, values are translated strings." +msgstr "" +"提示一个字典属性是字符串翻译映射。字典的键是区域设置代码,值是翻译后的字符" +"串。" + msgid "" "Hints that a quaternion property should disable the temporary euler editor." msgstr "提示四元数属性应当禁用临时欧拉值编辑器。" @@ -2160,15 +4765,36 @@ msgid "" "with the secret character." msgstr "提示字符串属性为密码,每一个字符都会被替换为秘密字符。" +msgid "" +"The property is not stored, and does not display in the editor. This is the " +"default for non-exported properties." +msgstr "该属性不被存储,也不会显示在编辑器中。这是非导出属性的默认值。" + msgid "The property is serialized and saved in the scene file (default)." msgstr "将属性序列化并保存到场景文件中(默认)。" +msgid "The property is shown in the [EditorInspector] (default)." +msgstr "该属性将被显示在 [EditorInspector](默认)中。" + +msgid "The property can be checked in the [EditorInspector]." +msgstr "该属性可以在 [EditorInspector] 中被勾选。" + +msgid "The property is checked in the [EditorInspector]." +msgstr "该属性在 [EditorInspector] 中已被勾选。" + msgid "Used to group properties together in the editor. See [EditorInspector]." -msgstr "在编辑器中用于为属性分组。见 [EditorInspector]。" +msgstr "用于在编辑器中将属性编组在一起。请参阅 [EditorInspector]。" msgid "Used to categorize properties together in the editor." msgstr "在编辑器中用于为属性分类。" +msgid "" +"Used to group properties together in the editor in a subgroup (under a " +"group). See [EditorInspector]." +msgstr "" +"用于在子组(一个组下)中将编辑器中的属性编组在一起。请参阅 " +"[EditorInspector]。" + msgid "The property does not save its state in [PackedScene]." msgstr "该属性不在 [PackedScene] 中保存其状态。" @@ -2180,6 +4806,29 @@ msgid "" "the scene file." msgstr "该属性是一个脚本变量,应该被序列化并保存在场景文件中。" +msgid "The property is an array." +msgstr "该属性为数组。" + +msgid "" +"When duplicating a resource with [method Resource.duplicate], and this flag " +"is set on a property of that resource, the property should always be " +"duplicated, regardless of the [code]subresources[/code] bool parameter." +msgstr "" +"当创建一个带有 [method Resource.duplicate] 的 Resource,并且它的标志是在一个 " +"Resource 的属性上设置的副本时候,无论 [code]subresources[/code] 为多少,该属" +"性永远都会被创建为副本。" + +msgid "" +"When duplicating a resource with [method Resource.duplicate], and this flag " +"is set on a property of that resource, the property should never be " +"duplicated, regardless of the [code]subresources[/code] bool parameter." +msgstr "" +"使用 [method Resource.duplicate] 复制资源时,如果该资源的某个属性上设有这个标" +"志,则不会对该属性进行复制,无视 [code]subresources[/code] 布尔型参数。" + +msgid "The property is read-only in the [EditorInspector]." +msgstr "该属性在 [EditorInspector] 中只读。" + msgid "Default usage (storage, editor and network)." msgstr "默认用法(存储、编辑器和网络)。" @@ -2200,6 +4849,22 @@ msgstr "常量方法的标志。" msgid "Flag for a virtual method." msgstr "虚方法的标志。" +msgid "Flag for a method with a variable number of arguments." +msgstr "具有可变数量参数的方法的标志。" + +msgid "Flag for a static method." +msgstr "静态方法的标志。" + +msgid "" +"Used internally. Allows to not dump core virtual methods (such as [method " +"Object._notification]) to the JSON API." +msgstr "" +"内部使用。允许不将核心虚拟方法(例如 [method Object._notification])转储到 " +"JSON API。" + +msgid "Default method flags (normal)." +msgstr "默认方法标志(正常)。" + msgid "Variable is [code]null[/code]." msgstr "变量为 [code]null[/code]。" @@ -2209,56 +4874,119 @@ msgstr "变量类型为 [bool]。" msgid "Variable is of type [int]." msgstr "变量类型为 [int]。" +msgid "Variable is of type [float]." +msgstr "变量的类型为 [float]。" + msgid "Variable is of type [String]." msgstr "变量类型为 [String]。" msgid "Variable is of type [Vector2]." msgstr "变量类型为 [Vector2]。" +msgid "Variable is of type [Vector2i]." +msgstr "变量类型为 [Vector2i]。" + msgid "Variable is of type [Rect2]." msgstr "变量类型为 [Rect2]。" +msgid "Variable is of type [Rect2i]." +msgstr "变量类型为 [Rect2i]。" + msgid "Variable is of type [Vector3]." msgstr "变量类型为 [Vector3]。" +msgid "Variable is of type [Vector3i]." +msgstr "变量类型为 [Vector3i]。" + msgid "Variable is of type [Transform2D]." msgstr "变量类型为 [Transform2D]。" +msgid "Variable is of type [Vector4]." +msgstr "变量类型为 [Vector4]。" + +msgid "Variable is of type [Vector4i]." +msgstr "变量类型为 [Vector4i]。" + msgid "Variable is of type [Plane]." msgstr "变量类型为 [Plane]。" +msgid "Variable is of type [Quaternion]." +msgstr "变量类型为 [Quaternion]。" + msgid "Variable is of type [AABB]." -msgstr "变量的类型为 [AABB]。" +msgstr "变量类型为 [AABB]。" msgid "Variable is of type [Basis]." -msgstr "变量的类型为 [Basis]。" +msgstr "变量类型为 [Basis]。" + +msgid "Variable is of type [Transform3D]." +msgstr "变量类型为 [Transform3D]。" + +msgid "Variable is of type [Projection]." +msgstr "变量类型为 [Projection]。" msgid "Variable is of type [Color]." -msgstr "变量的类型为 [Color]。" +msgstr "变量类型为 [Color]。" + +msgid "Variable is of type [StringName]." +msgstr "变量类型为 [StringName]。" msgid "Variable is of type [NodePath]." -msgstr "变量的类型为 [NodePath]。" +msgstr "变量类型为 [NodePath]。" msgid "Variable is of type [RID]." -msgstr "变量的类型为 [RID]。" +msgstr "变量类型为 [RID]。" msgid "Variable is of type [Object]." -msgstr "变量的类型为 [Object]。" +msgstr "变量类型为 [Object]。" + +msgid "Variable is of type [Callable]." +msgstr "变量类型为 [Callable]。" + +msgid "Variable is of type [Signal]." +msgstr "变量类型为 [Signal]。" msgid "Variable is of type [Dictionary]." -msgstr "变量的类型为 [Dictionary]。" +msgstr "变量类型为 [Dictionary]。" msgid "Variable is of type [Array]." -msgstr "变量的类型为 [Array]。" +msgstr "变量类型为 [Array]。" + +msgid "Variable is of type [PackedByteArray]." +msgstr "变量类型为 [PackedByteArray]。" + +msgid "Variable is of type [PackedInt32Array]." +msgstr "变量类型为 [PackedInt32Array]。" + +msgid "Variable is of type [PackedInt64Array]." +msgstr "变量类型为 [PackedInt64Array]。" + +msgid "Variable is of type [PackedFloat32Array]." +msgstr "变量类型为 [PackedFloat32Array]。" + +msgid "Variable is of type [PackedFloat64Array]." +msgstr "变量类型为 [PackedFloat64Array]。" + +msgid "Variable is of type [PackedStringArray]." +msgstr "变量类型为 [PackedStringArray]。" + +msgid "Variable is of type [PackedVector2Array]." +msgstr "变量类型为 [PackedVector2Array]。" + +msgid "Variable is of type [PackedVector3Array]." +msgstr "变量类型为 [PackedVector3Array]。" + +msgid "Variable is of type [PackedColorArray]." +msgstr "变量类型为 [PackedColorArray]。" msgid "Represents the size of the [enum Variant.Type] enum." -msgstr "表示 [enum Variant.Type] 枚举的大小。" +msgstr "代表 [enum Variant.Type] 枚举的大小。" msgid "Equality operator ([code]==[/code])." -msgstr "等于运算符([code]==[/code])。" +msgstr "相等运算符([code]==[/code])。" msgid "Inequality operator ([code]!=[/code])." -msgstr "不等式运算符([code]!=[/code])。" +msgstr "不等运算符([code]!=[/code])。" msgid "Less than operator ([code]<[/code])." msgstr "小于运算符([code]<[/code])。" @@ -2270,7 +4998,7 @@ msgid "Greater than operator ([code]>[/code])." msgstr "大于运算符([code]>[/code])。" msgid "Greater than or equal operator ([code]>=[/code])." -msgstr "大于等于运算符([code]> =[/code])。" +msgstr "大于等于运算符([code]>=[/code])。" msgid "Addition operator ([code]+[/code])." msgstr "加法运算符([code]+[/code])。" @@ -2293,6 +5021,9 @@ msgstr "一元加号运算符([code]+[/code])。" msgid "Remainder/modulo operator ([code]%[/code])." msgstr "余数/取模运算符([code]%[/code])。" +msgid "Power operator ([code]**[/code])." +msgstr "幂运算符([code]**[/code])。" + msgid "Left shift operator ([code]<<[/code])." msgstr "左移运算符([code]<<[/code])。" @@ -2327,17 +5058,43 @@ msgid "Logical IN operator ([code]in[/code])." msgstr "逻辑 IN 运算符([code]in[/code])。" msgid "Represents the size of the [enum Variant.Operator] enum." -msgstr "表示 [enum Variant.Operator] 枚举的大小。" +msgstr "代表 [enum Variant.Operator] 枚举的大小。" msgid "Axis-Aligned Bounding Box." msgstr "轴对齐包围盒。" +msgid "" +"[AABB] consists of a position, a size, and several utility functions. It is " +"typically used for fast overlap tests.\n" +"It uses floating-point coordinates. The 2D counterpart to [AABB] is " +"[Rect2].\n" +"Negative values for [member size] are not supported and will not work for " +"most methods. Use [method abs] to get an AABB with a positive size.\n" +"[b]Note:[/b] Unlike [Rect2], [AABB] does not have a variant that uses " +"integer coordinates." +msgstr "" +"[AABB] 由一个位置、一个大小和若干实用函数组成。通常用于快速重叠测试。\n" +"它使用浮点坐标。[AABB] 的 2D 对应物为 [Rect2]。\n" +"不支持负的 [member size],并且不适用于大多数方法。使用 [method abs] 获得具有" +"正尺寸的 AABB。\n" +"[b]注意:[/b]与 [Rect2] 不同,[AABB] 没有使用整数坐标的变体。" + +msgid "Math documentation index" +msgstr "数学文档索引" + msgid "Vector math" msgstr "向量数学" msgid "Advanced vector math" msgstr "高等向量数学" +msgid "" +"Constructs a default-initialized [AABB] with default (zero) values of " +"[member position] and [member size]." +msgstr "" +"使用 [member position] 和 [member size] 的默认值(零)构造一个默认初始化的 " +"[AABB]。" + msgid "Constructs an [AABB] as a copy of the given [AABB]." msgstr "构造给定 [AABB] 的副本。" @@ -2353,6 +5110,43 @@ 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)." @@ -2393,12 +5187,83 @@ 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." @@ -2413,9 +5278,30 @@ msgid "" "positive.\n" "If the size is negative, you can use [method abs] to fix it." msgstr "" -"从[member position] 到 [member end] 的大小。通常所有分量都是正数。\n" +"从 [member position] 到 [member end] 的大小。通常所有分量都是正数。\n" "如果大小为负,可以用 [method abs] 修正。" +msgid "" +"Returns [code]true[/code] if the vectors are not equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"is_equal_approx] instead, which is more reliable." +msgstr "" +"如果向量不相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点精度误差,考虑改用更可靠的 [method is_equal_approx]。" + +msgid "" +"Inversely transforms (multiplies) the [AABB] by the given [Transform3D] " +"transformation matrix." +msgstr "通过给定的 [Transform3D] 变换矩阵对该 [AABB] 进行逆变换(相乘)。" + +msgid "" +"Returns [code]true[/code] if the AABBs are exactly equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"is_equal_approx] instead, which is more reliable." +msgstr "" +"如果 AABB 完全相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点精度误差,考虑改用更可靠的 [method is_equal_approx]。" + msgid "Base dialog for user notification." msgstr "用户通知的基本对话框。" @@ -2423,9 +5309,34 @@ 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 " @@ -2451,9 +5362,28 @@ msgid "" "dialog will be accepted." msgstr "在对话框中注册 [LineEdit]。当按下回车键时,对话框将被接受。" +msgid "" +"Removes the [param button] from the dialog. Does NOT free the [param " +"button]. The [param button] must be a [Button] added with [method " +"add_button] or [method add_cancel_button] method. After removal, pressing " +"the [param button] will no longer emit this dialog's [signal custom_action] " +"or [signal canceled] signals." +msgstr "" +"从对话框中移除 [param button]。但不释放该 [param button] 对象。[param " +"button] 必须是用 [method add_button] 或 [method add_cancel] 方法添加的 " +"[Button]。移除后,按下该 [param button] 将不再发出该对话框的 [signal " +"custom_action] 或 [signal canceled] 信号。" + msgid "Sets autowrapping for the text in the dialog." msgstr "为对话框中的文本设置自动换行。" +msgid "" +"If [code]true[/code], the dialog will be hidden when the escape key " +"([constant KEY_ESCAPE]) is pressed." +msgstr "" +"如果为 [code]true[/code],当按下退出键([constant KEY_ESCAPE])时,对话框将被" +"隐藏。" + msgid "" "If [code]true[/code], the dialog is hidden when the OK button is pressed. " "You can set it to [code]false[/code] if you want to do e.g. input validation " @@ -2477,15 +5407,184 @@ msgstr "" msgid "The text displayed by the dialog." msgstr "对话框显示的文本。" +msgid "The text displayed by the OK button (see [method get_ok_button])." +msgstr "确定按钮(参见 [method get_ok_button])显示的文本。" + +msgid "" +"Emitted when the dialog is closed or the button created with [method " +"add_cancel_button] is pressed." +msgstr "当对话框关闭或按下 [method add_cancel_button] 创建的按钮时发出。" + msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed." msgstr "接受对话框时,即按下确定按钮时发出。" msgid "Emitted when a custom button is pressed. See [method add_button]." msgstr "按下自定义按钮时发出。见 [method add_button]。" +msgid "" +"The size of the vertical space between the dialog's content and the button " +"row." +msgstr "对话框内容和按钮行之间的垂直空间的大小。" + +msgid "The panel that fills the background of the window." +msgstr "填充窗口背景的面板。" + msgid "Interface to low level AES encryption features." msgstr "底层 AES 加密功能接口。" +msgid "" +"This class provides access to AES encryption/decryption of raw data. Both " +"AES-ECB and AES-CBC mode are supported.\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends Node\n" +"\n" +"var aes = AESContext.new()\n" +"\n" +"func _ready():\n" +" var key = \"My secret key!!!\" # Key must be either 16 or 32 bytes.\n" +" var data = \"My secret text!!\" # Data size must be multiple of 16 " +"bytes, apply padding if needed.\n" +" # Encrypt ECB\n" +" aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8())\n" +" var encrypted = aes.update(data.to_utf8())\n" +" aes.finish()\n" +" # Decrypt ECB\n" +" aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8())\n" +" var decrypted = aes.update(encrypted)\n" +" aes.finish()\n" +" # Check ECB\n" +" assert(decrypted == data.to_utf8())\n" +"\n" +" var iv = \"My secret iv!!!!\" # IV must be of exactly 16 bytes.\n" +" # Encrypt CBC\n" +" aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8(), iv.to_utf8())\n" +" encrypted = aes.update(data.to_utf8())\n" +" aes.finish()\n" +" # Decrypt CBC\n" +" aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8(), iv.to_utf8())\n" +" decrypted = aes.update(encrypted)\n" +" aes.finish()\n" +" # Check CBC\n" +" assert(decrypted == data.to_utf8())\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"using System.Diagnostics;\n" +"\n" +"public partial class MyNode : Node\n" +"{\n" +" private AesContext _aes = new AesContext();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" string key = \"My secret key!!!\"; // Key must be either 16 or 32 " +"bytes.\n" +" string data = \"My secret text!!\"; // Data size must be multiple of " +"16 bytes, apply padding if needed.\n" +" // Encrypt ECB\n" +" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8());\n" +" byte[] encrypted = _aes.Update(data.ToUtf8());\n" +" _aes.Finish();\n" +" // Decrypt ECB\n" +" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8());\n" +" byte[] decrypted = _aes.Update(encrypted);\n" +" _aes.Finish();\n" +" // Check ECB\n" +" Debug.Assert(decrypted == data.ToUtf8());\n" +"\n" +" string iv = \"My secret iv!!!!\"; // IV must be of exactly 16 " +"bytes.\n" +" // Encrypt CBC\n" +" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8(), iv.ToUtf8());\n" +" encrypted = _aes.Update(data.ToUtf8());\n" +" _aes.Finish();\n" +" // Decrypt CBC\n" +" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8(), iv.ToUtf8());\n" +" decrypted = _aes.Update(encrypted);\n" +" _aes.Finish();\n" +" // Check CBC\n" +" Debug.Assert(decrypted == data.ToUtf8());\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"此类提供了对原始数据的 AES 加密/解密的访问。同时支持 AES-ECB 和 AES-CBC 模" +"式。\n" +"[codeblocks]\n" +"[gdscript]\n" +"extends Node\n" +"\n" +"var aes = AESContext.new()\n" +"\n" +"func _ready():\n" +" var key = \"My secret key!!!\" # 密钥必须是 16 或 32 字节。\n" +" var data = \"My secret text!!\" # 数据大小必须是 16 字节的倍数,需要时添" +"加补白。\n" +" # ECB 加密\n" +" aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8())\n" +" var encrypted = aes.update(data.to_utf8())\n" +" aes.finish()\n" +" # ECB 解密\n" +" aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8())\n" +" var decrypted = aes.update(encrypted)\n" +" aes.finish()\n" +" # ECB 校验\n" +" assert(decrypted == data.to_utf8())\n" +"\n" +" var iv = \"My secret iv!!!!\" # IV 必须是 16 字节。\n" +" # CBC 加密\n" +" aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8(), iv.to_utf8())\n" +" encrypted = aes.update(data.to_utf8())\n" +" aes.finish()\n" +" # CBC 解密\n" +" aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8(), iv.to_utf8())\n" +" decrypted = aes.update(encrypted)\n" +" aes.finish()\n" +" # CBC 校验\n" +" assert(decrypted == data.to_utf8())\n" +"[/gdscript]\n" +"[csharp]\n" +"using Godot;\n" +"using System.Diagnostics;\n" +"\n" +"public partial class MyNode : Node\n" +"{\n" +" private AesContext _aes = new AesContext();\n" +"\n" +" public override void _Ready()\n" +" {\n" +" string key = \"My secret key!!!\"; // 密钥必须是 16 或 32 字节。\n" +" string data = \"My secret text!!\"; // 数据大小必须是 16 字节的倍数," +"需要时添加补白。\n" +" // ECB 加密\n" +" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8());\n" +" byte[] encrypted = _aes.Update(data.ToUtf8());\n" +" _aes.Finish();\n" +" // ECB 解密\n" +" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8());\n" +" byte[] decrypted = _aes.Update(encrypted);\n" +" _aes.Finish();\n" +" // ECB 校验\n" +" Debug.Assert(decrypted == data.ToUtf8());\n" +"\n" +" string iv = \"My secret iv!!!!\"; // IV 必须是 16 字节。\n" +" // CBC 加密\n" +" _aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8(), iv.ToUtf8());\n" +" encrypted = _aes.Update(data.ToUtf8());\n" +" _aes.Finish();\n" +" // CBC 解密\n" +" _aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8(), iv.ToUtf8());\n" +" decrypted = _aes.Update(encrypted);\n" +" _aes.Finish();\n" +" // CBC 校验\n" +" Debug.Assert(decrypted == data.ToUtf8());\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "Close this AES context so it can be started again. See [method start]." msgstr "关闭此 AES 上下文,以便可以再次启动它。见 [method start]。" @@ -2500,6 +5599,27 @@ msgstr "" "[b]注意:[/b]仅当上下文以 [constant MODE_CBC_ENCRYPT] 或 [constant " "MODE_CBC_DECRYPT] 开头时,此函数才有意义。" +msgid "" +"Start the AES context in the given [param mode]. A [param key] of either 16 " +"or 32 bytes must always be provided, while an [param iv] (initialization " +"vector) of exactly 16 bytes, is only needed when [param mode] is either " +"[constant MODE_CBC_ENCRYPT] or [constant MODE_CBC_DECRYPT]." +msgstr "" +"在给定的 [param mode] 中启动 AES 上下文。必须始终提供 16 或 32 字节的 [param " +"key],而仅当 [param mode] 为 [constant MODE_CBC_ENCRYPT] 或 [constant " +"MODE_CBC_DECRYPT] 时,才需要正好为 16 字节的 [param iv](初始化向量)。" + +msgid "" +"Run the desired operation for this AES context. Will return a " +"[PackedByteArray] containing the result of encrypting (or decrypting) the " +"given [param src]. See [method start] for mode of operation.\n" +"[b]Note:[/b] The size of [param src] must be a multiple of 16. Apply some " +"padding if needed." +msgstr "" +"运行此 AES 上下文所需的操作。将返回包含加密(或解密)给定 [param src] 结果的 " +"[PackedByteArray] 。有关操作模式,请参阅 [method start]。\n" +"[b]注意:[/b][param src] 的大小必须是 16 倍的倍数。如果需要,应用一些填充。" + msgid "AES electronic codebook encryption mode." msgstr "AES 电子密码簿加密模式。" @@ -2515,6 +5635,73 @@ msgstr "AES 密码封锁器链式解密模式。" msgid "Maximum value for the mode enum." msgstr "模式列举的最大值。" +msgid "" +"Physics body for 2D physics which moves only by script or animation. Useful " +"for moving platforms and doors." +msgstr "用于 2D 物理中仅通过脚本或动画移动的物理实体。适用于移动的平台和门。" + +msgid "" +"Animatable body for 2D physics.\n" +"An animatable body can't be moved by external forces or contacts, but can be " +"moved by script or animation to affect other bodies in its path. It is ideal " +"for implementing moving objects in the environment, such as moving platforms " +"or doors.\n" +"When the body is moved manually, either from code or from an " +"[AnimationPlayer] (with [member AnimationPlayer.playback_process_mode] set " +"to [code]physics[/code]), the physics will automatically compute an estimate " +"of their linear and angular velocity. This makes them very useful for moving " +"platforms or other AnimationPlayer-controlled objects (like a door, a bridge " +"that opens, etc)." +msgstr "" +"用于 2D 物理的可动画化实体。\n" +"可动画化实体无法通过外力或接触移动,但可以通过脚本或动画移动以影响其路径中的" +"其他实体。它非常适合实现移动环境中的对象,例如移动的平台或门。\n" +"当实体通过代码或 [AnimationPlayer](将 [member AnimationPlayer." +"playback_process_mode] 设置为 [code]physics[/code])手动移动时,物理将自动计" +"算其线速度和角速度的估计值。这使得它们对于移动的平台或其他 AnimationPlayer 控" +"制的对象(如门、打开的桥等)非常有用。" + +msgid "" +"If [code]true[/code], the body's movement will be synchronized to the " +"physics frame. This is useful when animating movement via [AnimationPlayer], " +"for example on moving platforms. Do [b]not[/b] use together with [method " +"PhysicsBody2D.move_and_collide]." +msgstr "" +"如果为 [code]true[/code],则物体的运动将与物理帧同步。当通过 " +"[AnimationPlayer] 为运动设置动画时,例如在移动的平台上,这个功能很有用。[b]不" +"要[/b]与[method PhysicsBody2D.move_and_collide]一起使用。" + +msgid "" +"Physics body for 3D physics which moves only by script or animation. Useful " +"for moving platforms and doors." +msgstr "仅通过脚本或动画移动、用于3D 物理的物理体。适用于移动的平台和门。" + +msgid "" +"Animatable body for 3D physics.\n" +"An animatable body can't be moved by external forces or contacts, but can be " +"moved by script or animation to affect other bodies in its path. It is ideal " +"for implementing moving objects in the environment, such as moving platforms " +"or doors.\n" +"When the body is moved manually, either from code or from an " +"[AnimationPlayer] (with [member AnimationPlayer.playback_process_mode] set " +"to [code]physics[/code]), the physics will automatically compute an estimate " +"of their linear and angular velocity. This makes them very useful for moving " +"platforms or other AnimationPlayer-controlled objects (like a door, a bridge " +"that opens, etc).\n" +"[b]Warning:[/b] With a non-uniform scale this node will probably not " +"function as expected. Please make sure to keep its scale uniform (i.e. the " +"same on all axes), and change the size(s) of its collision shape(s) instead." +msgstr "" +"用于 3D 物理的可动画实体。\n" +"可动画的实体不能被外力或接触移动,但可以被脚本或动画移动以影响其路径中的其他" +"实体。它非常适合在环境中实现移动的实体,例如移动的平台或门。\n" +"当通过代码或 [AnimationPlayer]([member AnimationPlayer." +"playback_process_mode] 被设置为 [code]physics[/code])手动移动实体时,物理将" +"自动计算其线速度和角速度的估计值。这使得它们对于移动的平台或其他 " +"AnimationPlayer 控制的对象(如门、打开的桥等)非常有用。\n" +"[b]警告:[/b]如果缩放比例不均匀,此节点可能无法按预期运行。请确保保持其比例统" +"一(即在所有轴上相同),并改为更改其碰撞形状的大小。" + msgid "3D Physics Tests Demo" msgstr "3D 物理测试演示" @@ -2524,9 +5711,31 @@ 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 "可以使用多个纹理进行动画处理的精灵节点。" +msgstr "包含多个纹理作为动画播放帧的 Sprite 节点。" + +msgid "" +"[AnimatedSprite2D] is similar to the [Sprite2D] node, except it carries " +"multiple textures as animation frames. Animations are created using a " +"[SpriteFrames] resource, which allows you to import image files (or a folder " +"containing said files) to provide the animation frames for the sprite. The " +"[SpriteFrames] resource can be configured in the editor via the SpriteFrames " +"bottom panel." +msgstr "" +"[AnimatedSprite2D] 与 [Sprite2D] 节点类似,但是包含多张纹理,可用作动画帧。动" +"画使用 [SpriteFrames] 资源创建,可以导入图像文件(或包含此类文件的文件夹)为" +"该精灵提供动画帧。可以在编辑器的“动画帧”底部面板中配置 [SpriteFrames] 资源。" msgid "2D Sprite animation" msgstr "2D 精灵动画" @@ -2534,6 +5743,111 @@ msgstr "2D 精灵动画" msgid "2D Dodge The Creeps Demo" msgstr "2D Dodge The Creeps 演示" +msgid "" +"Returns the actual playing speed of current animation or [code]0[/code] if " +"not playing. This speed is the [member speed_scale] property multiplied by " +"[code]custom_speed[/code] argument specified when calling the [method play] " +"method.\n" +"Returns a negative value if the current animation is playing backwards." +msgstr "" +"返回当前动画的实际播放速度,未播放时则为 [code]0[/code]。这个速度是 [member " +"speed_scale] 属性乘以调用 [method play] 时指定的 [code]custom_speed[/code] 参" +"数。\n" +"如果当前动画是倒放的,则返回负值。" + +msgid "" +"Returns [code]true[/code] if an animation is currently playing (even if " +"[member speed_scale] and/or [code]custom_speed[/code] are [code]0[/code])." +msgstr "" +"如果动画目前正在播放,则返回 [code]true[/code](即便 [member speed_scale] 和/" +"或 [code]custom_speed[/code] 为 [code]0[/code])。" + +msgid "" +"Pauses the currently playing animation. The [member frame] and [member " +"frame_progress] will be kept and calling [method play] or [method " +"play_backwards] without arguments will resume the animation from the current " +"playback position.\n" +"See also [method stop]." +msgstr "" +"暂停当前正在播放的动画。会保留 [member frame] 和 [member frame_progress],不" +"带参数调用 [method play] 或 [method play_backwards] 会从当前播放位置恢复播放" +"该动画。\n" +"另见 [method stop]。" + +msgid "" +"Plays the animation with key [param name]. If [param custom_speed] is " +"negative and [param from_end] is [code]true[/code], the animation will play " +"backwards (which is equivalent to calling [method play_backwards]).\n" +"If this method is called with that same animation [param name], or with no " +"[param name] parameter, the assigned animation will resume playing if it was " +"paused." +msgstr "" +"播放名称键为 [param name] 的动画。如果 [param custom_speed] 为负且 [param " +"from_end] 为 [code]true[/code],则该动画会倒放(等价于 [method " +"play_backwards])。\n" +"如果调用这个方法时使用了相同的动画名称 [param name] 或者没有使用 [param " +"name] 参数,则会继续播放已暂停的分配动画。" + +msgid "" +"Plays the animation with key [param name] in reverse.\n" +"This method is a shorthand for [method play] with [code]custom_speed = -1.0[/" +"code] and [code]from_end = true[/code], so see its description for more " +"information." +msgstr "" +"倒放名称键为 [param name] 的动画。\n" +"这个方法是简写,等价于调用 [method play] 时使用 [code]custom_speed = -1.0[/" +"code] 和 [code]from_end = true[/code],所以更多信息请参阅其描述。" + +msgid "" +"The setter of [member frame] resets the [member frame_progress] to " +"[code]0.0[/code] implicitly, but this method avoids that.\n" +"This is useful when you want to carry over the current [member " +"frame_progress] to another [member frame].\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# Change the animation with keeping the frame index and progress.\n" +"var current_frame = animated_sprite.get_frame()\n" +"var current_progress = animated_sprite.get_frame_progress()\n" +"animated_sprite.play(\"walk_another_skin\")\n" +"animated_sprite.set_frame_and_progress(current_frame, current_progress)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"设置 [member frame] 时会隐式将 [member frame_progress] 重置为 [code]0.0[/" +"code],但这个方法可以避免。\n" +"如果你想要把当前的 [member frame_progress] 带到其他 [member frame] 中,就会非" +"常有用。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 更改动画的同时保留帧索引和进度。\n" +"var current_frame = animated_sprite.get_frame()\n" +"var current_progress = animated_sprite.get_frame_progress()\n" +"animated_sprite.play(\"walk_another_skin\")\n" +"animated_sprite.set_frame_and_progress(current_frame, current_progress)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Stops the currently playing animation. The animation position is reset to " +"[code]0[/code] and the [code]custom_speed[/code] is reset to [code]1.0[/" +"code]. See also [method pause]." +msgstr "" +"停止当前正在播放的动画。会将动画的位置重置为 [code]0[/code],并将 " +"[code]custom_speed[/code] 重置为 [code]1.0[/code]。另见 [method pause]。" + +msgid "" +"The current animation from the [member sprite_frames] resource. If this " +"value is changed, the [member frame] counter and the [member frame_progress] " +"are reset." +msgstr "" +"当前动画,来自 [member sprite_frames]。如果更改了这个值,会重置 [member " +"frame] 计数和 [member frame_progress]。" + +msgid "The key of the animation to play when the scene loads." +msgstr "场景加载时要播放的动画名称。" + msgid "If [code]true[/code], texture will be centered." msgstr "如果为 [code]true[/code],纹理将被居中。" @@ -2543,9 +5857,37 @@ 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 " @@ -2554,18 +5896,74 @@ msgstr "" "包含动画的 [SpriteFrames] 资源。可以对 [SpriteFrames] 资源进行加载、编辑、清" "空、唯一化、保存状态等操作。" +msgid "Emitted when [member animation] changes." +msgstr "当 [member animation] 更改时发出。" + +msgid "" +"Emitted when the animation reaches the end, or the start if it is played in " +"reverse. When the animation finishes, it pauses the playback." +msgstr "" +"当动画到达结尾时,或者如果反向播放则到达起点时发出。当动画结束时,它会暂停播" +"放。" + +msgid "Emitted when the animation loops." +msgstr "当动画循环播放时发出。" + +msgid "Emitted when [member frame] changes." +msgstr "[member frame] 更改时发出。" + +msgid "Emitted when [member sprite_frames] changes." +msgstr "当 [member sprite_frames] 更改时发出。" + msgid "" "2D sprite node in 3D world, that can use multiple 2D textures for animation." msgstr "3D 世界中的 2D 精灵节点,可以使用多个 2D 纹理进行动画处理。" +msgid "" +"[AnimatedSprite3D] is similar to the [Sprite3D] node, except it carries " +"multiple textures as animation [member sprite_frames]. Animations are " +"created using a [SpriteFrames] resource, which allows you to import image " +"files (or a folder containing said files) to provide the animation frames " +"for the sprite. The [SpriteFrames] resource can be configured in the editor " +"via the SpriteFrames bottom panel." +msgstr "" +"[AnimatedSprite3D] 与 [Sprite3D] 节点类似,但是包含多张纹理,可用作动画 " +"[member sprite_frames]。动画使用 [SpriteFrames] 资源创建,可以导入图像文件" +"(或包含此类文件的文件夹)为该精灵提供动画帧。可以在编辑器的“动画帧”底部面板" +"中配置 [SpriteFrames] 资源。" + msgid "2D Sprite animation (also applies to 3D)" msgstr "2D 精灵动画(也适用于 3D)" msgid "Proxy texture for simple frame-based animations." -msgstr "基于简单帧动画的代理纹理。" +msgstr "用于简单帧动画的代理纹理。" -msgid "Sets the currently visible frame of the texture." -msgstr "设置纹理当前可见的帧。" +msgid "Returns the given [param frame]'s duration, in seconds." +msgstr "返回给定的 [param frame] 的持续时间,以秒为单位。" + +msgid "Returns the given frame's [Texture2D]." +msgstr "返回给定帧的 [Texture2D]。" + +msgid "" +"Sets the duration of any given [param frame]. The final duration is affected " +"by the [member speed_scale]. If set to [code]0[/code], the frame is skipped " +"during playback." +msgstr "" +"设置任何给定 [param frame] 的持续时间。最终的持续时间受 [member speed_scale] " +"影响。如果设置为 [code]0[/code],则该帧在播放过程中被跳过。" + +msgid "" +"Assigns a [Texture2D] to the given frame. Frame IDs start at 0, so the first " +"frame has ID 0, and the last frame of the animation has ID [member frames] - " +"1.\n" +"You can define any number of textures up to [constant MAX_FRAMES], but keep " +"in mind that only frames from 0 to [member frames] - 1 will be part of the " +"animation." +msgstr "" +"将 [Texture2D] 分配给给定的帧。帧 ID 从 0 开始,因此第一帧的 ID 为 0,动画的" +"最后一帧的 ID 为 [member frames] - 1。\n" +"您可以定义最多 [constant MAX_FRAMES] 个纹理,但要记住,只有 0 到 [member " +"frames] - 1 的帧会成为动画的一部分。" msgid "" "Number of frames to use in the animation. While you can create the frames " @@ -2593,40 +5991,327 @@ msgstr "" "current_frame])。将此属性更改为 [code]false[/code] 时,动画将从暂停处继续播" "放。" +msgid "" +"The animation speed is multiplied by this value. If set to a negative value, " +"the animation is played in reverse." +msgstr "动画速度将乘以该值。如果设置为负值,则动画反向播放。" + +msgid "" +"The maximum number of frames supported by [AnimatedTexture]. If you need " +"more frames in your animation, use [AnimationPlayer] or [AnimatedSprite2D]." +msgstr "" +"[AnimatedTexture] 支持的最大帧数。如果动画需要更多帧,请使用 " +"[AnimationPlayer] 或 [AnimatedSprite2D]。" + msgid "Contains data used to animate everything in the engine." msgstr "包含用于对引擎中所有内容进行动画处理的数据。" +msgid "" +"An Animation resource contains data used to animate everything in the " +"engine. Animations are divided into tracks, and each track must be linked to " +"a node. The state of that node can be changed through time, by adding timed " +"keys (events) to the track.\n" +"[codeblocks]\n" +"[gdscript]\n" +"# This creates an animation that makes the node \"Enemy\" move to the right " +"by\n" +"# 100 pixels in 0.5 seconds.\n" +"var animation = Animation.new()\n" +"var track_index = animation.add_track(Animation.TYPE_VALUE)\n" +"animation.track_set_path(track_index, \"Enemy:position:x\")\n" +"animation.track_insert_key(track_index, 0.0, 0)\n" +"animation.track_insert_key(track_index, 0.5, 100)\n" +"[/gdscript]\n" +"[csharp]\n" +"// This creates an animation that makes the node \"Enemy\" move to the right " +"by\n" +"// 100 pixels in 0.5 seconds.\n" +"var animation = new Animation();\n" +"int trackIndex = animation.AddTrack(Animation.TrackType.Value);\n" +"animation.TrackSetPath(trackIndex, \"Enemy:position:x\");\n" +"animation.TrackInsertKey(trackIndex, 0.0f, 0);\n" +"animation.TrackInsertKey(trackIndex, 0.5f, 100);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Animations are just data containers, and must be added to nodes such as an " +"[AnimationPlayer] to be played back. Animation tracks have different types, " +"each with its own set of dedicated methods. Check [enum TrackType] to see " +"available types.\n" +"[b]Note:[/b] For 3D position/rotation/scale, using the dedicated [constant " +"TYPE_POSITION_3D], [constant TYPE_ROTATION_3D] and [constant TYPE_SCALE_3D] " +"track types instead of [constant TYPE_VALUE] is recommended for performance " +"reasons." +msgstr "" +"Animation(动画)资源包含用于对引擎中的一切进行动画处理的数据。动画分为轨道," +"轨道必须与节点相连。向轨道添加定时关键帧(事件)后,节点的状态可以随时间变" +"化。\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 创建动画,让“Enemy”节点在 0.5 秒内\n" +"# 向右移动 100 像素。\n" +"var animation = Animation.new()\n" +"var track_index = animation.add_track(Animation.TYPE_VALUE)\n" +"animation.track_set_path(track_index, \"Enemy:position:x\")\n" +"animation.track_insert_key(track_index, 0.0, 0)\n" +"animation.track_insert_key(track_index, 0.5, 100)\n" +"[/gdscript]\n" +"[csharp]\n" +"# 创建动画,让“Enemy”节点在 0.5 秒内\n" +"# 向右移动 100 像素。\n" +"var animation = new Animation();\n" +"int trackIndex = animation.AddTrack(Animation.TrackType.Value);\n" +"animation.TrackSetPath(trackIndex, \"Enemy:position:x\");\n" +"animation.TrackInsertKey(trackIndex, 0.0f, 0);\n" +"animation.TrackInsertKey(trackIndex, 0.5f, 100);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"动画只是数据的容器,必须添加至 [AnimationPlayer] 等节点才能进行播放。动画轨道" +"分为不同的类型,不同的类型有各自不同的专属方法。可用的类型请查看 [enum " +"TrackType]。\n" +"[b]注意:[/b]对于 3D 的位置、旋转、缩放,推荐使用专门的 [constant " +"TYPE_POSITION_3D]、[constant TYPE_ROTATION_3D]、[constant TYPE_SCALE_3D] 轨道" +"类型,不要使用 [constant TYPE_VALUE],性能更高。" + +msgid "Animation documentation index" +msgstr "动画教程索引" + msgid "Adds a track to the Animation." msgstr "向动画添加轨道。" +msgid "" +"Returns the animation name at the key identified by [param key_idx]. The " +"[param track_idx] must be the index of an Animation Track." +msgstr "" +"返回由 [param key_idx] 标识的键处的动画名称。[param track_idx] 必须是动画轨道" +"的索引。" + +msgid "" +"Inserts a key with value [param animation] at the given [param time] (in " +"seconds). The [param track_idx] must be the index of an Animation Track." +msgstr "" +"在给定的 [param time](以秒为单位)插入一个值为 [param animation] 的键。" +"[param track_idx] 必须是动画轨道的索引。" + +msgid "" +"Sets the key identified by [param key_idx] to value [param animation]. The " +"[param track_idx] must be the index of an Animation Track." +msgstr "" +"将 [param key_idx] 标识的键设置为值 [param animation]。[param track_idx] 必须" +"是动画轨道的索引。" + +msgid "" +"Returns the end offset of the key identified by [param key_idx]. The [param " +"track_idx] must be the index of an Audio Track.\n" +"End offset is the number of seconds cut off at the ending of the audio " +"stream." +msgstr "" +"返回由 [param key_idx] 标识的键的结束偏移量。[param track_idx] 必须是音频轨道" +"的索引。\n" +"结束偏移量是在音频流结束时截断的秒数。" + +msgid "" +"Returns the start offset of the key identified by [param key_idx]. The " +"[param track_idx] must be the index of an Audio Track.\n" +"Start offset is the number of seconds cut off at the beginning of the audio " +"stream." +msgstr "" +"返回由 [param key_idx] 标识的键的起始偏移量。[param track_idx] 必须是音频轨道" +"的索引。\n" +"起始偏移量是在音频流开始时截断的秒数。" + +msgid "" +"Returns the audio stream of the key identified by [param key_idx]. The " +"[param track_idx] must be the index of an Audio Track." +msgstr "" +"返回由 [param key_idx] 标识的键的音频流。[param track_idx] 必须是音频轨道的索" +"引。" + +msgid "" +"Inserts an Audio Track key at the given [param time] in seconds. The [param " +"track_idx] must be the index of an Audio Track.\n" +"[param stream] is the [AudioStream] resource to play. [param start_offset] " +"is the number of seconds cut off at the beginning of the audio stream, while " +"[param end_offset] is at the ending." +msgstr "" +"在 [param time] 秒处插入音频轨道关键帧。[param track_idx] 必须是音频轨道的索" +"引。\n" +"[param stream] 是要播放的 [AudioStream] 资源。[param start_offset] 是音频流开" +"头截断的秒数,而 [param end_offset] 是在结尾处截断的秒数。" + +msgid "" +"Sets the end offset of the key identified by [param key_idx] to value [param " +"offset]. The [param track_idx] must be the index of an Audio Track." +msgstr "" +"将由 [param key_idx] 标识的键的结束偏移量设置为值 [param offset]。[param " +"track_idx] 必须是音频轨道的索引。" + +msgid "" +"Sets the start offset of the key identified by [param key_idx] to value " +"[param offset]. The [param track_idx] must be the index of an Audio Track." +msgstr "" +"将由 [param key_idx] 标识的键的起始偏移量设置为值 [param offset]。[param " +"track_idx] 必须是音频轨道的索引。" + +msgid "" +"Sets the stream of the key identified by [param key_idx] to value [param " +"stream]. The [param track_idx] must be the index of an Audio Track." +msgstr "" +"将由 [param key_idx] 标识的键的流设置为值 [param stream]。[param track_idx] " +"必须是音频轨道的索引。" + +msgid "" +"Sets whether the track will be blended with other animations. If [code]true[/" +"code], the audio playback volume changes depending on the blend value." +msgstr "" +"设置轨道是否将与其他动画混合。如果为 [code]true[/code],音频播放音量会根据混" +"合值而变化。" + +msgid "" +"Returns the in handle of the key identified by [param key_idx]. The [param " +"track_idx] must be the index of a Bezier Track." +msgstr "" +"返回由 [param key_idx] 识别的键的入点手柄,[param track_idx] 必须是贝赛尔曲线" +"轨道的索引。" + +msgid "" +"Returns the out handle of the key identified by [param key_idx]. The [param " +"track_idx] must be the index of a Bezier Track." +msgstr "" +"返回由 [param key_idx] 识别的键的出点手柄,[param track_idx] 必须是贝赛尔曲线" +"轨道的索引。" + +msgid "" +"Returns the value of the key identified by [param key_idx]. The [param " +"track_idx] must be the index of a Bezier Track." +msgstr "" +"返回由 [param key_idx] 识别的键的值,[param track_idx] 必须是贝塞尔轨道的索" +"引。" + +msgid "" +"Inserts a Bezier Track key at the given [param time] in seconds. The [param " +"track_idx] must be the index of a Bezier Track.\n" +"[param in_handle] is the left-side weight of the added Bezier curve point, " +"[param out_handle] is the right-side one, while [param value] is the actual " +"value at this point." +msgstr "" +"在给定的时间 [param time] 秒处插入贝塞尔轨道键。[param track_idx] 必须是贝塞" +"尔轨道的索引。\n" +"[param in_handle] 是添加的贝塞尔曲线点的左侧权重,[param out_handle] 是右侧权" +"重,而 [param value] 是这个点的实际值。" + +msgid "" +"Returns the interpolated value at the given [param time] (in seconds). The " +"[param track_idx] must be the index of a Bezier Track." +msgstr "" +"返回给定 [param time] 处的插值(以秒为单位)。[param track_idx] 必须是贝塞尔" +"轨道的索引。" + +msgid "" +"Sets the in handle of the key identified by [param key_idx] to value [param " +"in_handle]. The [param track_idx] must be the index of a Bezier Track." +msgstr "" +"将 [param key_idx] 所标识的键的入点手柄设置为 [param in_handle] 值。[param " +"track_idx] 必须是贝塞尔轨道的索引。" + +msgid "" +"Sets the out handle of the key identified by [param key_idx] to value [param " +"out_handle]. The [param track_idx] must be the index of a Bezier Track." +msgstr "" +"将由 [param key_idx] 确定的关键帧的出点手柄设置为 [param out_handle]。参数 " +"[param track_idx] 必须是贝塞尔轨道的索引。" + +msgid "" +"Sets the value of the key identified by [param key_idx] to the given value. " +"The [param track_idx] must be the index of a Bezier Track." +msgstr "" +"将 [param key_idx] 所标识的键值设置为给定值。[param track_idx] 必须是贝塞尔轨" +"道的索引。" + +msgid "Inserts a key in a given blend shape track. Returns the key index." +msgstr "在给定的混合形状轨道中插入一个关键帧。返回键索引。" + msgid "Clear the animation (clear all tracks and reset all)." msgstr "清除动画(清除所有轨道并重置所有)。" +msgid "" +"Compress the animation and all its tracks in-place. This will make [method " +"track_is_compressed] return [code]true[/code] once called on this " +"[Animation]. Compressed tracks require less memory to be played, and are " +"designed to be used for complex 3D animations (such as cutscenes) imported " +"from external 3D software. Compression is lossy, but the difference is " +"usually not noticeable in real world conditions.\n" +"[b]Note:[/b] Compressed tracks have various limitations (such as not being " +"editable from the editor), so only use compressed animations if you actually " +"need them." +msgstr "" +"就地压缩动画及其所有轨道。这将使 [method track_is_compressed] 一旦在这个 " +"[Animation] 上被调用就会返回 [code]true[/code]。压缩后的轨道在播放时需要更少" +"的内存,并且这被设计用于从外部3D软件导入的复杂的3D动画(比如过场动画)。压缩" +"是有损失的,但现实中通常不会注意到这种差异。\n" +"[b]注意:[/b]压缩轨道有各种限制(比如不能从编辑器中编辑),所以只有在你真正需" +"要时才使用压缩动画。" + +msgid "" +"Adds a new track that is a copy of the given track from [param to_animation]." +msgstr "添加一个新的轨道,这个轨道是给定轨道 [param to_animation] 的副本。" + msgid "" "Returns the index of the specified track. If the track is not found, return " "-1." msgstr "返回指定轨迹的索引。如果没有找到,返回 -1。" msgid "Returns the amount of tracks in the animation." -msgstr "返回动画中的曲目量。" +msgstr "返回动画中的轨道数。" msgid "Returns the method name of a method track." -msgstr "返回一个方法轨迹的方法名。" +msgstr "返回一个方法轨道的方法名。" msgid "" "Returns the arguments values to be called on a method track for a given key " "in a given track." -msgstr "返回给定轨道中给定键的方法轨道上要调用的参数值。" +msgstr "返回给定方法轨道中给定键的方法要调用的参数值。" + +msgid "Inserts a key in a given 3D position track. Returns the key index." +msgstr "在给定的 3D 位置轨道中插入关键帧。返回该关键帧的索引。" msgid "Removes a track by specifying the track index." msgstr "通过指定轨道索引来移除一个轨道。" +msgid "Inserts a key in a given 3D rotation track. Returns the key index." +msgstr "在给定的 3D 旋转轨道中插入关键帧。返回该关键帧的索引。" + +msgid "Inserts a key in a given 3D scale track. Returns the key index." +msgstr "在给定的 3D 缩放轨道中插入关键帧。返回该关键帧的索引。" + +msgid "" +"Finds the key index by time in a given track. Optionally, only find it if " +"the approx/exact time is given." +msgstr "" +"按时间查找给定轨道中的关键帧索引。也可选择只在给定大约/准确时间的情况下查找。" + +msgid "" +"Returns [code]true[/code] if the track at [param track_idx] wraps the " +"interpolation loop. New tracks wrap the interpolation loop by default." +msgstr "" +"如果 [param track_idx] 处的轨道环绕插值循环,则返回 [code]true[/code]。新建的" +"轨道默认都会环绕插值循环。" + msgid "Returns the interpolation type of a given track." msgstr "返回给定轨道的插值类型。" +msgid "Returns the number of keys in a given track." +msgstr "返回给定轨道中关键帧的数量。" + msgid "Returns the time at which the key is located." msgstr "返回关键帧所在的时间。" +msgid "" +"Returns the transition curve (easing) for a specific key (see the built-in " +"math function [method @GlobalScope.ease])." +msgstr "" +"返回给定关键帧的过渡曲线(缓动)(见内置数学函数 [method @GlobalScope." +"ease])。" + msgid "Returns the value of a given key in a given track." msgstr "返回给定轨道中给定关键帧的值。" @@ -2639,6 +6324,20 @@ msgstr "" msgid "Gets the type of a track." msgstr "获取轨道的类型。" +msgid "Inserts a generic key in a given track. Returns the key index." +msgstr "在给定的轨道中插入一个通用关键帧。返回关键帧索引。" + +msgid "" +"Returns [code]true[/code] if the track is compressed, [code]false[/code] " +"otherwise. See also [method compress]." +msgstr "" +"如果轨道被压缩,则返回 [code]true[/code],否则返回 [code]false[/code]。另见 " +"[method compress]。" + +msgid "" +"Returns [code]true[/code] if the track at index [param track_idx] is enabled." +msgstr "如果启用了索引 [param track_idx] 处的轨道,则返回 [code]true[/code]。" + msgid "" "Returns [code]true[/code] if the given track is imported. Else, return " "[code]false[/code]." @@ -2649,24 +6348,44 @@ msgstr "" msgid "Moves a track down." msgstr "将轨道下移。" +msgid "" +"Changes the index position of track [param track_idx] to the one defined in " +"[param to_idx]." +msgstr "将轨道 [param track_idx] 的索引位置改为 [param to_idx] 中定义的位置。" + msgid "Moves a track up." msgstr "将轨道上移。" msgid "Removes a key by index in a given track." msgstr "在指定的轨道上按索引移除一个键。" +msgid "Removes a key at [param time] in a given track." +msgstr "在给定轨道中的 [param time] 移除一个键。" + msgid "Enables/disables the given track. Tracks are enabled by default." -msgstr "启用/禁用指定的轨道。轨道默认为启用。" +msgstr "启用/禁用给定的轨道。轨道默认为启用。" msgid "Sets the given track as imported or not." msgstr "将指定的轨道设置为导入或不导入。" +msgid "" +"If [code]true[/code], the track at [param track_idx] wraps the interpolation " +"loop." +msgstr "如果为 [code]true[/code],则 [param track_idx] 处的轨道环绕插值循环。" + msgid "Sets the interpolation type of a given track." -msgstr "设置指定轨道的内插类型。" +msgstr "设置指定轨道的插值类型。" msgid "Sets the time of an existing key." msgstr "设置现有关键帧的时间。" +msgid "" +"Sets the transition curve (easing) for a specific key (see the built-in math " +"function [method @GlobalScope.ease])." +msgstr "" +"设置指定关键帧的过渡曲线(缓动)(参阅内置数学函数 [method @GlobalScope." +"ease])。" + msgid "Sets the value of an existing key." msgstr "设置现有关键帧的值。" @@ -2684,9 +6403,22 @@ msgstr "" "例如,[code]\"character/skeleton:ankle\"[/code] 或 [code]\"character/mesh:" "transform/local\"[/code]。" +msgid "" +"Swaps the track [param track_idx]'s index position with the track [param " +"with_idx]." +msgstr "" +"将轨道 [param track_idx] 的索引位置与轨道 [param with_idx] 的索引位置互换。" + msgid "Returns the update mode of a value track." msgstr "返回值轨道的更新模式。" +msgid "" +"Returns the interpolated value at the given time (in seconds). The [param " +"track_idx] must be the index of a value track." +msgstr "" +"返回位于给定时间(以秒为单位)的插值后的值。[param track_idx] 必须是值轨道的" +"索引。" + msgid "Sets the update mode (see [enum UpdateMode]) of a value track." msgstr "设置值轨道的更新模式(请参阅 [enum UpdateMode])。" @@ -2699,9 +6431,41 @@ msgstr "" "[b]注意:[/b]长度不以最后一个关键帧为界,因为这个关键帧可能位于结束前或结束" "后,以确保正确的插值和循环。" +msgid "" +"Determines the behavior of both ends of the animation timeline during " +"animation playback. This is used for correct interpolation of animation " +"cycles, and for hinting the player that it must restart the animation." +msgstr "" +"确定动画播放期间动画时间轴两端的行为。 这用于动画循环的正确插值,以及提示播放" +"器必须重新启动动画。" + msgid "The animation step value." msgstr "动画步长值。" +msgid "" +"Value tracks set values in node properties, but only those which can be " +"interpolated. For 3D position/rotation/scale, using the dedicated [constant " +"TYPE_POSITION_3D], [constant TYPE_ROTATION_3D] and [constant TYPE_SCALE_3D] " +"track types instead of [constant TYPE_VALUE] is recommended for performance " +"reasons." +msgstr "" +"值轨道设置节点属性中的值,但仅限于那些可以被插值的属性。对于 3D 位置/旋转/缩" +"放,出于性能原因,建议使用专用的 [constant TYPE_POSITION_3D]、[constant " +"TYPE_ROTATION_3D] 和 [constant TYPE_SCALE_3D] 轨道类型而不是 [constant " +"TYPE_VALUE]。" + +msgid "3D position track (values are stored in [Vector3]s)." +msgstr "3D 位置轨道(值存储在 [Vector3] 中)。" + +msgid "3D rotation track (values are stored in [Quaternion]s)." +msgstr "3D 旋转轨道(值存储在 [Quaternion] 中)。" + +msgid "3D scale track (values are stored in [Vector3]s)." +msgstr "3D 缩放轨道(值存储在 [Vector3] 中)。" + +msgid "Blend shape track." +msgstr "混合形状轨道。" + msgid "Method tracks call functions with given arguments per key." msgstr "方法轨道会在各个关键帧上使用给定参数的调用函数。" @@ -2730,6 +6494,35 @@ msgstr "无插值(最邻近的值)。" msgid "Linear interpolation." msgstr "线性插值。" +msgid "" +"Cubic interpolation. This looks smoother than linear interpolation, but is " +"more expensive to interpolate. Stick to [constant INTERPOLATION_LINEAR] for " +"complex 3D animations imported from external software, even if it requires " +"using a higher animation framerate in return." +msgstr "" +"三次插值。这看起来比线性插值更平滑,但插值成本更高。对于从外部软件导入的复杂 " +"3D 动画,坚持使用 [constant INTERPOLATION_LINEAR],即使它需要使用更高的动画帧" +"率作为回报。" + +msgid "" +"Linear interpolation with shortest path rotation.\n" +"[b]Note:[/b] The result value is always normalized and may not match the key " +"value." +msgstr "" +"具有最短路径旋转的线性插值。\n" +"[b]注意:[/b]结果值总是归一化的,可能与关键帧的值不匹配。" + +msgid "" +"Cubic interpolation with shortest path rotation.\n" +"[b]Note:[/b] The result value is always normalized and may not match the key " +"value." +msgstr "" +"具有最短路径旋转的三次插值。\n" +"[b]注意:[/b]结果值总是归一化的,可能与关键帧的值不匹配。" + +msgid "Update between keyframes and hold the value." +msgstr "在关键帧之间更新并保持值。" + msgid "Update at the keyframes." msgstr "在关键帧更新。" @@ -2740,9 +6533,104 @@ msgstr "" "与线性插值相同,但如果第一个关键帧不在第 0 秒,则会从当前值进行插值(即在运行" "时动态插值)。" +msgid "At both ends of the animation, the animation will stop playing." +msgstr "在动画的两端,动画将停止播放。" + +msgid "" +"At both ends of the animation, the animation will be repeated without " +"changing the playback direction." +msgstr "在动画的两端,动画会在不改变播放方向的情况下重复播放。" + +msgid "Repeats playback and reverse playback at both ends of the animation." +msgstr "在动画的两端重复进行播放和反向播放。" + +msgid "This flag indicates that the animation proceeds without any looping." +msgstr "该标志指示动画在没有任何循环的情况下继续进行。" + +msgid "" +"This flag indicates that the animation has reached the end of the animation " +"and just after loop processed." +msgstr "该标志表示动画已到达动画的末尾并且刚好在循环处理之后。" + +msgid "" +"This flag indicates that the animation has reached the start of the " +"animation and just after loop processed." +msgstr "该标志表示动画已经到达动画的开始并且刚好在循环处理之后。" + +msgid "Finds the nearest time key." +msgstr "查找最近的时间键。" + +msgid "Finds only the key with approximating the time." +msgstr "仅查找与时间相近的键。" + +msgid "Finds only the key with matching the time." +msgstr "仅查找与时间匹配的键。" + +msgid "Container for [Animation] resources." +msgstr "[Animation] 资源的容器。" + +msgid "" +"An animation library stores a set of animations accessible through " +"[StringName] keys, for use with [AnimationPlayer] nodes." +msgstr "" +"动画库存储一组可通过 [StringName] 键访问的动画,可用于 [AnimationPlayer] 节" +"点。" + msgid "Animation tutorial index" msgstr "动画教程索引" +msgid "" +"Adds the [param animation] to the library, accessible by the key [param " +"name]." +msgstr "将 [param animation] 添加到库中,可通过键 [param name] 访问。" + +msgid "" +"Returns the [Animation] with the key [param name]. If the animation does not " +"exist, [code]null[/code] is returned and an error is logged." +msgstr "" +"返回带有键 [param name] 的 [Animation]。如果动画不存在,则返回 [code]null[/" +"code] 并记录错误。" + +msgid "Returns the keys for the [Animation]s stored in the library." +msgstr "返回库中存储的 [Animation] 的键。" + +msgid "" +"Returns [code]true[/code] if the library stores an [Animation] with [param " +"name] as the key." +msgstr "" +"如果该库存储了以 [param name] 作为键的 [Animation],则返回 [code]true[/" +"code]。" + +msgid "Removes the [Animation] with the key [param name]." +msgstr "使用键 [param name] 移除 [Animation]。" + +msgid "" +"Changes the key of the [Animation] associated with the key [param name] to " +"[param newname]." +msgstr "将与键 [param name] 关联的 [Animation] 的键更改为 [param newname]。" + +msgid "Emitted when an [Animation] is added, under the key [param name]." +msgstr "在键 [param name] 下添加 [Animation] 时发出。" + +msgid "" +"Emitted when there's a change in one of the animations, e.g. tracks are " +"added, moved or have changed paths. [param name] is the key of the animation " +"that was changed.\n" +"See also [signal Resource.changed], which this acts as a relay for." +msgstr "" +"当其中一个动画发生变化时发出,例如轨道被添加、移动,或路径被更改。[param " +"name] 是被改变的动画的键。\n" +"另见 [signal Resource.changed],本信号充当该信号的中继。" + +msgid "" +"Emitted when an [Animation] stored with the key [param name] is removed." +msgstr "当使用键 [param name] 存储的 [Animation] 被移除时发出。" + +msgid "" +"Emitted when the key for an [Animation] is changed, from [param name] to " +"[param to_name]." +msgstr "当 [Animation] 的键从 [param name] 更改为 [param to_name] 时发出。" + msgid "Base resource for [AnimationTree] nodes." msgstr "[AnimationTree] 节点的基础资源。" @@ -2766,6 +6654,13 @@ msgid "" 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." @@ -2773,6 +6668,14 @@ 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 " @@ -2791,13 +6694,79 @@ 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] 时才有用,否则编辑器将不会显示你的节点进行添加。" +"[AnimationRootNode] 时才有用,否则编辑器将不会显示你的节点以供添加。" + +msgid "" +"Returns the input index which corresponds to [param name]. If not found, " +"returns [code]-1[/code]." +msgstr "" +"返回与名称 [param name] 相关的输入索引,如果不存在则返回 [code]-1[/code]。" msgid "" "Amount of inputs in this node, only useful for nodes that go into " @@ -2815,7 +6784,7 @@ msgstr "" "中重复使用。" msgid "Returns whether the given path is filtered." -msgstr "返回是否对给定的路径进行过滤。" +msgstr "返回给定路径是否被过滤。" msgid "Removes an input, call this only when inactive." msgstr "移除输入,仅在处于非活动状态时调用此输入。" @@ -2823,6 +6792,13 @@ 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." @@ -2833,6 +6809,38 @@ msgstr "" msgid "If [code]true[/code], filtering is enabled." msgstr "如果为 [code]true[/code],则启用筛选功能。" +msgid "" +"Emitted by nodes that inherit from this class and that have an internal tree " +"when one of their nodes removes. The nodes that emit this signal are " +"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], " +"[AnimationNodeStateMachine], and [AnimationNodeBlendTree]." +msgstr "" +"由继承自该类的节点发出,并且当其中一个节点移除时具有内部树。发出此信号的节点" +"可以是 [AnimationNodeBlendSpace1D]、[AnimationNodeBlendSpace2D]、" +"[AnimationNodeStateMachine] 和 [AnimationNodeBlendTree]。" + +msgid "" +"Emitted by nodes that inherit from this class and that have an internal tree " +"when one of their node names changes. The nodes that emit this signal are " +"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], " +"[AnimationNodeStateMachine], and [AnimationNodeBlendTree]." +msgstr "" +"由继承自该类的节点发出,并且当其中一个节点名称更改时具有内部树。发出此信号的" +"节点可以是 [AnimationNodeBlendSpace1D]、[AnimationNodeBlendSpace2D]、" +"[AnimationNodeStateMachine] 和 [AnimationNodeBlendTree]。" + +msgid "" +"Emitted by nodes that inherit from this class and that have an internal tree " +"when one of their nodes changes. The nodes that emit this signal are " +"[AnimationNodeBlendSpace1D], [AnimationNodeBlendSpace2D], " +"[AnimationNodeStateMachine], [AnimationNodeBlendTree] and " +"[AnimationNodeTransition]." +msgstr "" +"由继承自该类的节点发出,并且当其一个节点发生变化时具有内部树。发出此信号的节" +"点可以是 [AnimationNodeBlendSpace1D]、[AnimationNodeBlendSpace2D]、" +"[AnimationNodeStateMachine]、[AnimationNodeBlendTree] 和 " +"[AnimationNodeTransition]。" + msgid "Do not use filtering." msgstr "不要使用筛选功能。" @@ -2875,19 +6883,19 @@ msgstr "" "内的值,将三个动画中的两个动画加法混合在一起。\n" "这个节点有三个输入。\n" "- 要添加到基础动画中的动画\n" -"- 当混合量在 [code][-1.0,0.0][/code] 范围内时,添加动画进行混合。\n" -"- 当混合量在 [code][0.0,1.0][/code] 范围内时,添加动画进行混合" +"- 当混合量在 [code][-1.0,0.0][/code] 范围内时,-add 进行混合。\n" +"- 当混合量在 [code][0.0,1.0][/code] 范围内时,+add 进行混合" msgid "Input animation to use in an [AnimationNodeBlendTree]." -msgstr "输入要在 [AnimationNodeBlendTree] 中使用的动画。" +msgstr "要在 [AnimationNodeBlendTree] 中使用的输入动画。" msgid "" "A resource to add to an [AnimationNodeBlendTree]. Only features one output " "set using the [member animation] property. Use it as an input for " "[AnimationNode] that blend animations together." msgstr "" -"添加到 [AnimationNodeBlendTree] 的资源。只具有一个使用 [member animation] 属" -"性的输出集。将其作为 [AnimationNode] 的输入,将动画融合在一起。" +"一种添加到 [AnimationNodeBlendTree] 的资源。仅使用 [member animation] 属性设" +"置一个输出集。将其作为 [AnimationNode] 的输入,将动画混合在一起。" msgid "3D Platformer Demo" msgstr "3D 平台跳跃演示" @@ -2898,6 +6906,9 @@ msgid "" msgstr "" "作为输出使用的动画。它是 [member AnimationTree.anim_player] 提供的动画之一。" +msgid "Determines the playback direction of the animation." +msgstr "确定动画的播放方向。" + msgid "Blends two animations linearly inside of an [AnimationNodeBlendTree]." msgstr "在 [AnimationNodeBlendTree] 中将两个动画进行线性混合。" @@ -2924,12 +6935,12 @@ msgid "" "- A +blend animation to blend with when the blend amount is in the [code]" "[0.0, 1.0][/code] range" msgstr "" -"添加到 [AnimationNodeBlendTree] 的资源。根据[code][-1.0,1.0][/code]范围内的" -"值,将三个动画中的两个动画线性地混合在一起。\n" -"这个节点有三个输入。\n" +"一种添加到 [AnimationNodeBlendTree] 的资源。根据范围在 [code][-1.0,1.0][/" +"code] 内的值,将三个动画中的两个动画,线性地混合在一起。\n" +"这个节点有三个输入:\n" "- 基础动画\n" -"- 当混合量在[code][-1.0,0.0][/code]范围内时,使用-混合动画进行混合。\n" -"- 当混合量在[code][0.0,1.0][/code]范围内时,要使用+混合动画进行混合" +"- 当混合量在 [code][-1.0,0.0][/code] 范围内时,使用 -blend 动画进行混合。\n" +"- 当混合量在 [code][0.0,1.0][/code] 范围内时,使用 +blend 动画进行混合" msgid "" "Blends linearly between two of any number of [AnimationNode] of any type " @@ -2950,12 +6961,40 @@ msgstr "" "可添加到 [AnimationNodeBlendTree] 的资源。\n" "这是一个虚拟轴,您可以使用 [method add_blend_point] 在上面添加任何类型的 " "[AnimationNode]。\n" -"输出最接近节点当前值的两个 [AnimationNode] 的线性混合。\n" -"您可以使用 [member min_space] 和 [member max_space] 来设置轴的外延。" +"输出最接近节点当前值的两个 [AnimationNode] 之间的线性混合。\n" +"您可以使用 [member min_space] 和 [member max_space] 来设置轴的范围。" + +msgid "" +"Adds a new point that represents a [param node] on the virtual axis at a " +"given position set by [param pos]. You can insert it at a specific index " +"using the [param at_index] argument. If you use the default value for [param " +"at_index], the point is inserted at the end of the blend points array." +msgstr "" +"在虚拟轴上 [param pos] 设定的给定位置,添加一个新点代表 [param node]。您可以" +"使用 [param at_index] 参数在特定的索引处插入新点。如果您使用 [param " +"at_index] 的默认值,该点会被插入到混合点数组的末尾。" msgid "Returns the number of points on the blend axis." msgstr "返回混合轴上的点的数量。" +msgid "" +"Returns the [AnimationNode] referenced by the point at index [param point]." +msgstr "返回索引 [param point] 处的点所引用的 [AnimationNode]。" + +msgid "Returns the position of the point at index [param point]." +msgstr "返回索引 [param point] 处的点的位置。" + +msgid "Removes the point at index [param point] from the blend axis." +msgstr "从混合轴移除索引 [param point] 处的点。" + +msgid "" +"Changes the [AnimationNode] referenced by the point at index [param point]." +msgstr "更改索引 [param point] 处的点所引用的 [AnimationNode]。" + +msgid "" +"Updates the position of the point at index [param point] on the blend axis." +msgstr "更新混合轴上索引 [param point] 处的点的位置。" + msgid "" "Controls the interpolation between animations. See [enum BlendMode] " "constants." @@ -2964,21 +7003,30 @@ msgstr "控制动画之间的插值。见 [enum BlendMode] 常量。" msgid "" "The blend space's axis's upper limit for the points' position. See [method " "add_blend_point]." -msgstr "混合空间的轴的点的位置上限。见 [method add_blend_point]。" +msgstr "用于点位置的混合空间轴的上限。见 [method add_blend_point]。" msgid "" "The blend space's axis's lower limit for the points' position. See [method " "add_blend_point]." -msgstr "混合空间的轴的点的位置下限。见 [method add_blend_point]。" +msgstr "用于点位置的混合空间轴的下限。见 [method add_blend_point]。" msgid "Position increment to snap to when moving a point on the axis." msgstr "当在轴上移动一个点时,要捕捉到的位置增量。" +msgid "" +"If [code]false[/code], the blended animations' frame are stopped when the " +"blend value is [code]0[/code].\n" +"If [code]true[/code], forcing the blended animations to advance frame." +msgstr "" +"如果为 [code]false[/code],则当混合值为 [code]0[/code] 时,停止混合动画的" +"帧。\n" +"如果为 [code]true[/code],则强制混合动画以前进帧。" + msgid "Label of the virtual axis of the blend space." msgstr "混合空间虚拟轴的标签。" msgid "The interpolation between animations is linear." -msgstr "动画之间的插点是线性的。" +msgstr "动画之间的插值是线性的。" msgid "" "The blend space plays the animation of the node the blending position is " @@ -2995,7 +7043,7 @@ msgstr "" msgid "" "Blends linearly between three [AnimationNode] of any type placed in a 2D " "space." -msgstr "在 2D 空间中放置的三个任意类型的 [AnimationNode] 之间线性融合。" +msgstr "在 2D 空间中放置的三个任意类型的 [AnimationNode] 之间线性混合。" msgid "" "A resource to add to an [AnimationNodeBlendTree].\n" @@ -3012,12 +7060,49 @@ msgstr "" "auto_triangles] 设置为 [code]true[/code] 来自动进行三角测量。否则,请使用 " "[method add_triangle] 和 [method remove_triangle] 手工创建混合空间。" +msgid "" +"Adds a new point that represents a [param node] at the position set by " +"[param pos]. You can insert it at a specific index using the [param " +"at_index] argument. If you use the default value for [param at_index], the " +"point is inserted at the end of the blend points array." +msgstr "" +"在 [param pos] 设定的位置添加一个代表 [param node] 的新点。您可以使用 [param " +"at_index] 参数将它插入到特定的索引中。如果您使用 [param at_index] 的默认值," +"这个点会被插入到混合点数组的末尾。" + +msgid "" +"Creates a new triangle using three points [param x], [param y], and [param " +"z]. Triangles can overlap. You can insert the triangle at a specific index " +"using the [param at_index] argument. If you use the default value for [param " +"at_index], the point is inserted at the end of the blend points array." +msgstr "" +"使用三个点 [param x]、[param y] 和 [param z] 创建一个新三角形。三角形可以重" +"叠。可以使用 [param at_index] 参数在特定索引处插入三角形。如果使用 [param " +"at_index] 的默认值,该点将插入到混合点数组的末尾。" + msgid "Returns the number of points in the blend space." msgstr "返回混合空间中的点的数量。" +msgid "" +"Returns the [AnimationRootNode] referenced by the point at index [param " +"point]." +msgstr "返回索引 [param point] 处的点所引用的 [AnimationRootNode]。" + msgid "Returns the number of triangles in the blend space." msgstr "返回混合空间中三角形的数量。" +msgid "" +"Returns the position of the point at index [param point] in the triangle of " +"index [param triangle]." +msgstr "" +"返回索引 [param point] 处的点在索引 [param triangle] 的三角形中的位置。" + +msgid "Removes the point at index [param point] from the blend space." +msgstr "从混合空间中移除索引 [param point] 处的点。" + +msgid "Removes the triangle at index [param triangle] from the blend space." +msgstr "从混合空间中移除索引 [param triangle] 处的三角形。" + msgid "" "If [code]true[/code], the blend space is triangulated automatically. The " "mesh updates every time you add or remove points with [method " @@ -3030,15 +7115,17 @@ msgstr "" msgid "" "The blend space's X and Y axes' upper limit for the points' position. See " "[method add_blend_point]." -msgstr "混合空间的 X 轴和 Y 轴的点的位置上限。见 [method add_blend_point]。" +msgstr "" +"用于点的位置的混合空间的 X 轴和 Y 轴的上限。请参阅 [method add_blend_point]。" msgid "" "The blend space's X and Y axes' lower limit for the points' position. See " "[method add_blend_point]." -msgstr "混合空间的 X 轴和 Y 轴的点的位置下限。见 [method add_blend_point]。" +msgstr "" +"用于点的位置的混合空间的 X 轴和 Y 轴的下限。请参阅 [method add_blend_point]。" msgid "Position increment to snap to when moving a point." -msgstr "移动点时要对齐的位置增量。" +msgstr "移动点时要吸附到的位置增量。" msgid "Name of the blend space's X axis." msgstr "混合空间 X 轴的名称。" @@ -3066,9 +7153,33 @@ msgstr "" "最常用的根之一。\n" "默认会创建一个名为 [code]output[/code] 的 [AnimationNodeOutput] 节点。" +msgid "" +"Adds an [AnimationNode] at the given [param position]. The [param name] is " +"used to identify the created sub-node later." +msgstr "" +"在给定的 [param position] 添加一个 [AnimationNode]。[param name] 用于稍后识别" +"该创建的子节点。" + +msgid "" +"Connects the output of an [AnimationNode] as input for another " +"[AnimationNode], at the input port specified by [param input_index]." +msgstr "" +"连接一个 [AnimationNode] 的输出作为另一个 [AnimationNode] 的输入,连接在 " +"[param input_index] 指定的输入端口。" + msgid "Disconnects the node connected to the specified input." msgstr "断开连接到指定输入端的节点。" +msgid "Returns the sub-node with the specified [param name]." +msgstr "返回名称为 [param name] 的子节点。" + +msgid "Returns the position of the sub-node with the specified [param name]." +msgstr "返回名称为 [param name] 的子节点的位置。" + +msgid "" +"Returns [code]true[/code] if a sub-node with specified [param name] exists." +msgstr "如果存在名称为 [param name] 的子节点,则返回 [code]true[/code]。" + msgid "Removes a sub-node." msgstr "移除一个子节点。" @@ -3081,6 +7192,9 @@ msgstr "修改子节点的位置。" msgid "The global offset of all sub-nodes." msgstr "所有子节点的全局偏移量。" +msgid "Emitted when the input port information is changed." +msgstr "当输入端口信息发生更改时发出。" + msgid "The connection was successful." msgstr "连接成功。" @@ -3102,19 +7216,6 @@ msgstr "指定的连接已经存在。" msgid "Plays an animation once in [AnimationNodeBlendTree]." msgstr "在 [AnimationNodeBlendTree] 中播放一次动画。" -msgid "" -"A resource to add to an [AnimationNodeBlendTree]. This node will execute a " -"sub-animation and return once it finishes. Blend times for fading in and out " -"can be customized, as well as filters." -msgstr "" -"可添加到 [AnimationNodeBlendTree] 的资源。这个节点将执行一个子动画,并在完成" -"后返回。可以自定义淡入和淡出的混合时间,以及过滤器。" - -msgid "" -"If [code]true[/code], the sub-animation will restart automatically after " -"finishing." -msgstr "如果为 [code]true[/code],则子动画完成后会自动重新开始。" - msgid "The delay after which the automatic restart is triggered, in seconds." msgstr "触发自动重启的延迟时间,以秒为单位。" @@ -3132,11 +7233,51 @@ msgstr "可添加到 [AnimationNodeBlendTree] 的通用输出节点。" msgid "State machine for control of animations." msgstr "用于控制动画的状态机。" +msgid "" +"Contains multiple nodes representing animation states, connected in a graph. " +"Node transitions can be configured to happen automatically or via code, " +"using a shortest-path algorithm. Retrieve the " +"[AnimationNodeStateMachinePlayback] object from the [AnimationTree] node to " +"control it programmatically.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode(\"AnimationTree\")." +"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 "返回图形的绘制偏移。用于编辑器中的显示。" +msgstr "返回图的绘制偏移。用于在编辑器中显示。" msgid "Returns the animation node with the given name." msgstr "返回指定名称的动画节点。" @@ -3145,7 +7286,7 @@ msgid "Returns the given animation node's name." msgstr "返回指定动画节点的名称。" msgid "Returns the given node's coordinates. Used for display in the editor." -msgstr "返回给定的节点的坐标。用于编辑器中的显示。" +msgstr "返回给定节点的坐标。用于在编辑器中显示。" msgid "Returns the given transition." msgstr "返回给定的过渡。" @@ -3157,7 +7298,7 @@ msgid "Returns the given transition's start node." msgstr "返回给定过渡的开始节点。" msgid "Returns the given transition's end node." -msgstr "返回给定过渡的端节点。" +msgstr "返回给定过渡的末端节点。" msgid "Returns [code]true[/code] if the graph contains the given node." msgstr "如果图中包含给定的节点,返回 [code]true[/code]。" @@ -3179,20 +7320,64 @@ msgid "Renames the given node." msgstr "重命名给定的节点。" msgid "Sets the draw offset of the graph. Used for display in the editor." -msgstr "设置图形的绘制偏移。用于编辑器中的显示。" +msgstr "设置图形的绘制偏移。用于在编辑器中显示。" msgid "Sets the node's coordinates. Used for display in the editor." -msgstr "设置节点的坐标。用于编辑器中的显示。" +msgstr "设置节点的坐标。用于在编辑器中显示。" + +msgid "" +"If [code]true[/code], allows teleport to the self state with [method " +"AnimationNodeStateMachinePlayback.travel]. When the reset option is enabled " +"in [method AnimationNodeStateMachinePlayback.travel], the animation is " +"restarted. If [code]false[/code], nothing happens on the teleportation to " +"the self state." +msgstr "" +"如果为 [code]true[/code],允许使用 [method AnimationNodeStateMachinePlayback." +"travel] 传送到当前状态。当在 [method AnimationNodeStateMachinePlayback." +"travel] 中启用重置选项时,动画将重新启动。如果为 [code]false[/code],传送到当" +"前状态时不会发生任何事情。" msgid "Playback control for [AnimationNodeStateMachine]." msgstr "[AnimationNodeStateMachine] 的播放控件。" -msgid "Returns the currently playing animation state." -msgstr "返回当前播放的动画状态。" +msgid "" +"Allows control of [AnimationTree] state machines created with " +"[AnimationNodeStateMachine]. Retrieve with [code]$AnimationTree." +"get(\"parameters/playback\")[/code].\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var state_machine = $AnimationTree.get(\"parameters/playback\")\n" +"state_machine.travel(\"some_state\")\n" +"[/gdscript]\n" +"[csharp]\n" +"var stateMachine = GetNode(\"AnimationTree\")." +"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* 算法内部计算的当前行进路径。" @@ -3200,11 +7385,109 @@ msgstr "返回 A* 算法内部计算的当前行进路径。" msgid "Returns [code]true[/code] if an animation is playing." msgstr "如果正在播放动画,返回 [code]true[/code]。" +msgid "" +"If there is a next path by travel or auto advance, immediately transitions " +"from the current state to the next state." +msgstr "如果通过行进或自动前进有下一条路径,则立即从当前状态过渡到下一个状态。" + +msgid "" +"Starts playing the given animation.\n" +"If [param reset] is [code]true[/code], the animation is played from the " +"beginning." +msgstr "" +"开始播放给定的动画。\n" +"如果 [param reset] 为 [code]true[/code],则动画从头开始播放。" + msgid "Stops the currently playing animation." msgstr "停止当前播放的动画。" +msgid "" +"Transitions from the current state to another one, following the shortest " +"path.\n" +"If the path does not connect from the current state, the animation will play " +"after the state teleports.\n" +"If [param reset_on_teleport] is [code]true[/code], the animation is played " +"from the beginning when the travel cause a teleportation." +msgstr "" +"按照最短的路径从当前状态过渡到另一个状态。\n" +"如果路径没有连接到当前状态,则动画将在状态传送后播放。\n" +"如果 [param reset_on_teleport] 为 [code]true[/code],当行进导致传送时,该动画" +"将从头开始播放。" + +msgid "" +"Turn on auto advance when this condition is set. The provided name will " +"become a boolean parameter on the [AnimationTree] that can be controlled " +"from code (see [url=$DOCS_URL/tutorials/animation/animation_tree." +"html#controlling-from-code]Using AnimationTree[/url]). For example, if " +"[member AnimationTree.tree_root] is an [AnimationNodeStateMachine] and " +"[member advance_condition] is set to [code]\"idle\"[/code]:\n" +"[codeblocks]\n" +"[gdscript]\n" +"$animation_tree.set(\"parameters/conditions/idle\", is_on_floor and " +"(linear_velocity.x == 0))\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode(\"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 "过渡类型." +msgstr "过渡类型。" + +msgid "" +"Ease curve for better control over cross-fade between this state and the " +"next." +msgstr "缓动曲线可以更好地控制此状态和下一个状态之间的交叉淡入淡出。" msgid "The time to cross-fade between this state and the next." msgstr "这个状态和下一个状态之间的交叉渐变时间。" @@ -3215,18 +7498,33 @@ msgstr "变更 [member advance_condition] 时发出。" msgid "" "Switch to the next state immediately. The current state will end and blend " "into the beginning of the new one." -msgstr "立即切换到下一个状态。当前状态将结束,并融合到新状态的开始。" +msgstr "立即切换到下一个状态。当前状态将结束,并混合到新状态的开始。" msgid "" "Switch to the next state immediately, but will seek the new state to the " "playback position of the old state." -msgstr "立即切换到下一个状态,但会寻找新的状态到旧状态的播放位置。" +msgstr "立即切换到下一个状态,但会将新的状态定位到旧状态的播放位置。" msgid "" "Wait for the current state playback to end, then switch to the beginning of " "the next state animation." msgstr "等待当前状态播放结束,然后切换到下一个状态动画的开头。" +msgid "Don't use this transition." +msgstr "不要使用该过渡。" + +msgid "" +"Only use this transition during [method AnimationNodeStateMachinePlayback." +"travel]." +msgstr "仅在 [method AnimationNodeStateMachinePlayback.travel] 时使用该过渡。" + +msgid "" +"Automatically use this transition if the [member advance_condition] and " +"[member advance_expression] checks are true (if assigned)." +msgstr "" +"如果 [member advance_condition] 和 [member advance_expression] 检查为真,则自" +"动使用该过渡(如果已分配)。" + msgid "A time-scaling animation node to be used with [AnimationTree]." msgstr "与 [AnimationTree] 一起使用的时间缩放动画节点。" @@ -3242,18 +7540,106 @@ msgid "A generic animation transition node for [AnimationTree]." msgstr "[AnimationTree] 的通用动画过渡节点。" msgid "" -"Simple state machine for cases which don't require a more advanced " -"[AnimationNodeStateMachine]. Animations can be connected to the inputs and " -"transition times can be specified." +"Returns whether the animation restarts when the animation transitions from " +"the other animation." +msgstr "返回当动画从另一个动画过渡时,该动画是否重新开始。" + +msgid "" +"Returns [code]true[/code] if auto-advance is enabled for the given [param " +"input] index." msgstr "" -"简单的状态机,适用于不需要更高级的[AnimationNodeStateMachine]的情况。可以将动" -"画连接到输入,并指定过渡时间。" +"如果为给定的 [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." @@ -3264,6 +7650,88 @@ msgstr "" 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 " @@ -3273,12 +7741,107 @@ msgstr "" "[b]注意:[/b]如果当前正在播放循环动画,除非以某种方式停止循环动画,否则排队的" "动画将永远不会播放。" +msgid "Removes the [AnimationLibrary] associated with the key [param name]." +msgstr "移除与键 [param name] 关联的 [AnimationLibrary]。" + +msgid "" +"Moves the [AnimationLibrary] associated with the key [param name] to the key " +"[param newname]." +msgstr "" +"将与键 [param name] 关联的 [AnimationLibrary] 移动到键 [param newname]。" + +msgid "" +"Seeks the animation to the [param seconds] point in time (in seconds). If " +"[param update] is [code]true[/code], the animation updates too, otherwise it " +"updates at process time. Events between the current frame and [param " +"seconds] are skipped.\n" +"[b]Note:[/b] Seeking to the end of the animation doesn't emit [signal " +"animation_finished]. If you want to skip animation and emit the signal, use " +"[method advance]." +msgstr "" +"将动画寻道到时间点 [param seconds](单位为秒)。[param update] 为 " +"[code]true[/code] 时会同时更新动画,否则会在处理时更新。当前帧和 [param " +"seconds] 之间的事件会被跳过。\n" +"[b]注意:[/b]寻道至动画的末尾不会触发 [signal animation_finished]。如果想要跳" +"过动画并触发该信号,请使用 [method advance]。" + +msgid "" +"Specifies a blend time (in seconds) between two animations, referenced by " +"their keys." +msgstr "指定两个动画(由它们的键所引用)之间的混合时间(以秒为单位)。" + +msgid "" +"Stops the currently playing animation. The animation position is reset to " +"[code]0[/code] and the [code]custom_speed[/code] is reset to [code]1.0[/" +"code]. See also [method pause].\n" +"If [param keep_state] is [code]true[/code], the animation state is not " +"updated visually.\n" +"[b]Note:[/b] The method / audio / animation playback tracks will not be " +"processed by this method." +msgstr "" +"停止当前播放的动画。动画位置被重置为 [code]0[/code],[code]custom_speed[/" +"code] 被重置为 [code]1.0[/code]。另见 [method pause]。\n" +"如果 [param keep_state] 为 [code]true[/code],则动画状态不会在视觉上更新。\n" +"[b]注意:[/b]方法/音频/动画播放轨道不会被该方法处理。" + +msgid "" +"If playing, the the current animation's key, otherwise, the animation last " +"played. When set, this changes the animation, but will not play it unless " +"already playing. See also [member current_animation]." +msgstr "" +"如果正在播放,则为当前动画的键,否则为上次播放的动画。设置后会改变动画,但除" +"非已经播放,否则不会播放。另见 [member current_animation]。" + +msgid "" +"The number of possible simultaneous sounds for each of the assigned " +"AudioStreamPlayers.\n" +"For example, if this value is [code]32[/code] and the animation has two " +"audio tracks, the two [AudioStreamPlayer]s assigned can play simultaneously " +"up to [code]32[/code] voices each." +msgstr "" +"每个指定的 AudioStreamPlayer 可能同时发出的声音的数量。\n" +"例如,如果该值为 [code]32[/code] 并且动画有两个音轨,则分配的两个 " +"[AudioStreamPlayer] 可以同时播放最多 [code]32[/code] 个声音。" + +msgid "" +"The key of the currently playing animation. If no animation is playing, the " +"property's value is an empty string. Changing this value does not restart " +"the animation. See [method play] for more information on playing " +"animations.\n" +"[b]Note:[/b] While this property appears in the Inspector, it's not meant to " +"be edited, and it's not saved in the scene. This property is mainly used to " +"get the currently playing animation, and internally for animation playback " +"tracks. For more information, see [Animation]." +msgstr "" +"当前播放的动画的名称。如果没有动画正在播放,该属性的值是一个空字符串。改变这" +"个值不会重新启动动画。关于播放动画的更多信息请参阅 [method play]。\n" +"[b]注意:[/b]虽然这个属性会出现在检查器中,但它不是用来编辑的,也不会保存在场" +"景中。该属性主要用于获取当前播放的动画,内部用于动画播放轨道。详情请参阅 " +"[Animation]。" + +msgid "The length (in seconds) of the currently playing animation." +msgstr "当前正在播放的动画的长度(以秒为单位)。" + msgid "The position (in seconds) of the currently playing animation." msgstr "当前播放的动画的位置(以秒为单位)。" 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." @@ -3292,11 +7855,49 @@ msgstr "混合动画的默认时间。范围从 0 到 4096,精度为 0.01。" msgid "The process notification in which to update animations." msgstr "更新动画的过程通知。" +msgid "" +"This is used by the editor. If set to [code]true[/code], the scene will be " +"saved with the effects of the reset animation (the animation with the key " +"[code]\"RESET\"[/code]) applied as if it had been seeked to time 0, with the " +"editor keeping the values that the scene had before saving.\n" +"This makes it more convenient to preview and edit animations in the editor, " +"as changes to the scene will not be saved as long as they are set in the " +"reset animation." +msgstr "" +"由编辑器使用。如果设置为 [code]true[/code],场景将被保存,并应用重置动画(带" +"有键 [code]\"RESET\"[/code] 的动画)的效果,就好像它已被定位到时间 0 一样,编" +"辑器保留场景在保存之前的值。\n" +"这使得在编辑器中预览和编辑动画更加方便,因为对场景的更改,只要在重置动画中被" +"设置,就不会被保存。" + msgid "The node from which node path references will travel." msgstr "节点路径引用将从其运行的节点。" +msgid "" +"Emitted when a queued animation plays after the previous animation finished. " +"See [method queue].\n" +"[b]Note:[/b] The signal is not emitted when the animation is changed via " +"[method play] or by an [AnimationTree]." +msgstr "" +"在前一个动画完成后,播放队列中的动画时发出。请参阅 [method queue]。\n" +"[b]注意:[/b]通过 [method play] 或 [AnimationTree] 改变动画时,不会发出此信" +"号。" + +msgid "" +"Notifies when an animation finished playing.\n" +"[b]Note:[/b] This signal is not emitted if an animation is looping." +msgstr "" +"动画播放结束时通知。\n" +"[b]注意:[/b]如果动画正在循环播放,则不会发出此信号。" + +msgid "Notifies when the animation libraries have changed." +msgstr "当动画库发生更改时发出通知。" + +msgid "Notifies when an animation list is changed." +msgstr "当动画列表发生更改时发出通知。" + msgid "Notifies when an animation starts playing." -msgstr "当动画开始播放时通知。" +msgstr "当动画开始播放时发出通知。" msgid "" "Notifies when the caches have been cleared, either automatically, or " @@ -3355,15 +7956,300 @@ 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])." @@ -3375,10 +8261,7 @@ msgid "" msgstr "在空闲帧期间进行动画(即 [method Node._process])。" msgid "The animations will only progress manually (see [method advance])." -msgstr "只能手动进行动画(见 [method advance])。" - -msgid "2D area for detection and physics and audio influence." -msgstr "用于检测、物理和音频影响的 2D 区域。" +msgstr "只能手动行进动画(见 [method advance])。" msgid "Using Area2D" msgstr "使用 Area2D" @@ -3401,7 +8284,7 @@ msgstr "" "collision_layer] 必须是这个区域 [member CollisionObject2D.collision_mask] 的" "一部分,这样才能被检测到。\n" "出于性能的考虑(所有碰撞都是一起处理的),这个列表会在物理步骤中进行一次修" -"改,而不是在物体被移动后立即修改。请考虑使用信号来代替。" +"改,而不是在物体被移动后立即修改。可考虑改用信号。" msgid "" "The rate at which objects stop spinning in this area. Represents the angular " @@ -3413,6 +8296,12 @@ msgstr "" "关于阻尼的更多细节见 [member ProjectSettings.physics/2d/" "default_angular_damp]。" +msgid "" +"Override mode for angular damping calculations within this area. See [enum " +"SpaceOverride] for possible values." +msgstr "" +"此区域内的角阻尼计算的覆盖模式。有关可能的值,请参阅 [enum SpaceOverride]。" + msgid "The name of the area's audio bus." msgstr "该区域音频总线的名称。" @@ -3420,6 +8309,35 @@ 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" @@ -3430,6 +8348,11 @@ msgstr "" "关于阻尼的更多细节见 [member ProjectSettings.physics/2d/" "default_linear_damp]。" +msgid "" +"Override mode for linear damping calculations within this area. See [enum " +"SpaceOverride] for possible values." +msgstr "该区域内线性阻尼计算的覆盖模式。可取的值见 [enum SpaceOverride]。" + msgid "If [code]true[/code], other monitoring areas can detect this area." msgstr "如果为 [code]true[/code],其他监测区域可以检测到这个区域。" @@ -3437,11 +8360,141 @@ msgid "" "If [code]true[/code], the area detects bodies or areas entering and exiting " "it." msgstr "" -"如果为 [code]true[/code],该区域能够检测到进入和退出该区域的实体或区域。" +"为 [code]true[/code] 时,该区域能够检测到进入和退出该区域的实体或区域。" msgid "The area's priority. Higher priority areas are processed first." msgstr "该区域的优先级。将优先处理优先级较高的区域。" +msgid "" +"Emitted when the received [param area] enters this area. Requires [member " +"monitoring] to be set to [code]true[/code]." +msgstr "" +"当接收的 [param area] 进入此区域时发出。需要 [member monitoring] 被设置为 " +"[code]true[/code]。" + +msgid "" +"Emitted when the received [param area] exits this area. Requires [member " +"monitoring] to be set to [code]true[/code]." +msgstr "" +"当接收的 [param area] 退出此区域时发出。需要 [member monitoring] 被设置为 " +"[code]true[/code]。" + +msgid "" +"Emitted when a [Shape2D] of the received [param area] enters a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param area_shape_index] contain indices of " +"the interacting shapes from this area and the other area, respectively. " +"[param area_rid] contains the [RID] of the other area. These values can be " +"used with the [PhysicsServer2D].\n" +"[b]Example of getting the[/b] [CollisionShape2D] [b]node from the shape " +"index:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner(area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"当收到的 [param area] 的 [Shape2D] 进入这个区域的形状时发出。要求[成员监控]被" +"设置为 [code]true[/code] 。\n" +"[param local_shape_index] 和 [param area_shape_index] 分别包含来自这个区域和" +"另一个区域的交互形状的索引。[param area_rid] 包含另一个区域的 [RID]。这些值可" +"以与 [PhysicsServer2D] 一起使用。\n" +"[b]从形状索引中获取[/b] [CollisionShape2D][b]节点的例子。[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner( area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Emitted when a [Shape2D] of the received [param area] exits a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"See also [signal area_shape_entered]." +msgstr "" +"当接收的 [param area] 的 [Shape2D] 退出此区域的形状时发出。需要 [member " +"monitoring] 被设置为 [code]true[/code]。\n" +"另见 [signal area_shape_entered]。" + +msgid "" +"Emitted when the received [param body] enters this area. [param body] can be " +"a [PhysicsBody2D] or a [TileMap]. [TileMap]s are detected if their [TileSet] " +"has collision shapes configured. Requires [member monitoring] to be set to " +"[code]true[/code]." +msgstr "" +"当接收到的 [param body] 进入这个区域时发出的。[param body] 可以是一个 " +"[PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] 的 [TileSet] 配置了碰撞形" +"状,就会被检测到。需要将 [member monitoring] 设置为 [code]true[/code] 。" + +msgid "" +"Emitted when the received [param body] exits this area. [param body] can be " +"a [PhysicsBody2D] or a [TileMap]. [TileMap]s are detected if their [TileSet] " +"has collision shapes configured. Requires [member monitoring] to be set to " +"[code]true[/code]." +msgstr "" +"当接收到的 [param body] 离开这个区域时发出的。[param body] 可以是一个 " +"[PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] 的 [TileSet] 配置了碰撞形" +"状,就会被检测到。要求 [member monitoring] 被设置为 [code]true[/code] 。" + +msgid "" +"Emitted when a [Shape2D] of the received [param body] enters a shape of this " +"area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are " +"detected if their [TileSet] has collision shapes configured. Requires " +"[member monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param body_shape_index] contain indices of " +"the interacting shapes from this area and the interacting body, " +"respectively. [param body_rid] contains the [RID] of the body. These values " +"can be used with the [PhysicsServer2D].\n" +"[b]Example of getting the[/b] [CollisionShape2D] [b]node from the shape " +"index:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var body_shape_owner = body.shape_find_owner(body_shape_index)\n" +"var body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"当收到的 [param body] 的 [Shape2D] 进入这个区域的形状时发出。[param body] 可" +"以是一个 [PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] 的 [TileSet] 配置了" +"碰撞形状,则会被检测到。要求 [member monitoring] 被设置为 [code]true[/" +"code] 。\n" +"[param local_shape_index] 和 [param body_shape_index] 分别包含来自这个区域和" +"交互体的交互形状的指数。[param body_rid] 包含体的 [RID]。这些值可以与 " +"[PhysicsServer2D] 一起使用。\n" +"[b]从形状索引中获取[/b] [CollisionShape2D] [b]节点的例子。[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var body_shape_owner = body.shape_find_owner(body_shape_index)\n" +"var body_shape_node = body.shape_owner_get_owner(body_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Emitted when a [Shape2D] of the received [param body] exits a shape of this " +"area. [param body] can be a [PhysicsBody2D] or a [TileMap]. [TileMap]s are " +"detected if their [TileSet] has collision shapes configured. Requires " +"[member monitoring] to be set to [code]true[/code].\n" +"See also [signal body_shape_entered]." +msgstr "" +"当收到的 [param body] 的 [Shape2D] 退出这个区域的形状时发出。[param body] 可" +"以是一个 [PhysicsBody2D] 或一个 [TileMap]。如果 [TileMap] 的 [TileSet] 配置了" +"碰撞形状,则会被检测到。要求 [member monitoring] 被设置为 [code]true[/" +"code] 。\n" +"另请参阅 [signal body_shape_entered]。" + msgid "This area does not affect gravity/damping." msgstr "这个区域不影响重力/阻尼。" @@ -3471,12 +8524,58 @@ msgstr "" "这个区域取代了到目前为止计算出的任何重力/阻尼(按 [member priority] 顺序)," "但继续计算其余的区域。" -msgid "3D area for detection and physics and audio influence." -msgstr "用于检测和物理及音频影响的 3D 区域。" +msgid "" +"3D area that detects [CollisionObject3D] nodes overlapping, entering, or " +"exiting. Can also alter or override local physics parameters (gravity, " +"damping) and route audio to custom audio buses.\n" +"To give the area its shape, add a [CollisionShape3D] or a " +"[CollisionPolygon3D] node as a [i]direct[/i] child (or add multiple such " +"nodes as direct children) of the area.\n" +"[b]Warning:[/b] See [ConcavePolygonShape3D] (also called \"trimesh\") for a " +"warning about possibly unexpected behavior when using that shape for an " +"area.\n" +"[b]Warning:[/b] With a non-uniform scale this node will probably not " +"function as expected. Please make sure to keep its scale uniform (i.e. the " +"same on all axes), and change the size(s) of its collision shape(s) instead." +msgstr "" +"3D 区域可以检测 [CollisionObject3D] 节点重叠、进入或退出 。还可以更改或覆盖局" +"部物理参数(重力、阻尼),以及将音频路由到自定义音频总线。\n" +"要为区域设置形状,请添加一个 [CollisionShape3D] 或 [CollisionPolygon3D] 节点" +"作为该区域的[i]直接[/i]子节点(或添加多个该类节点作为直接子节点)。\n" +"[b]警告:[/b]请参阅 [ConcavePolygonShape3D](也称为“三角形网格”)以获取有关在" +"区域中使用该形状时可能出现意外行为的警告。\n" +"[b]警告:[/b]如果缩放比例不一致,该节点可能无法按预期运行。请确保保持其比例统" +"一(即在所有轴上相同),并改为更改其碰撞形状的大小。" msgid "GUI in 3D Demo" msgstr "3D GUI 演示" +msgid "" +"Returns a list of intersecting [Area3D]s. The overlapping area's [member " +"CollisionObject3D.collision_layer] must be part of this area's [member " +"CollisionObject3D.collision_mask] in order to be detected.\n" +"For performance reasons (collisions are all processed at the same time) this " +"list is modified once during the physics step, not immediately after objects " +"are moved. Consider using signals instead." +msgstr "" +"返回相交的 [Area3D] 的列表。重叠区域的 [member CollisionObject3D." +"collision_layer] 必须是该区域的 [member CollisionObject3D.collision_mask] 的" +"一部分才能被检测到。\n" +"出于性能原因(同时处理所有碰撞),此列表在物理步骤期间修改一次,而不是在实体" +"被移动后立即修改。可考虑改用信号。" + +msgid "" +"Returns [code]true[/code] if the given [Area3D] intersects or overlaps this " +"[Area3D], [code]false[/code] otherwise.\n" +"[b]Note:[/b] The result of this test is not immediate after moving objects. " +"For performance, list of overlaps is updated once per frame and before the " +"physics step. Consider using signals instead." +msgstr "" +"如果给定的 [Area3D] 与此 [Area3D] 相交或重叠,则返回 [code]true[/code],否则" +"返回 [code]false[/code]。\n" +"[b]注意:[/b]此测试的结果不是在移动实体后立即产生的。为了提高性能,重叠列表每" +"帧仅更新一次,并且在物理步骤之前更新。可考虑改用信号。" + msgid "" "The rate at which objects stop spinning in this area. Represents the angular " "velocity lost per second.\n" @@ -3487,13 +8586,21 @@ msgstr "" "关于阻尼的更多细节,见 [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" +"实体在此区域减速的速率。代表每秒损失的线速度。\n" "关于阻尼的更多细节,见[member ProjectSettings.physics/3d/" "default_linear_damp]。" @@ -3505,7 +8612,10 @@ msgstr "" "度为 [code]0.1[/code]。" msgid "If [code]true[/code], the area applies reverb to its associated audio." -msgstr "如果为 [code]true[/code],该区域会将混响应用于其相关音频。" +msgstr "如果为 [code]true[/code],该区域会将混响应用于其关联音频。" + +msgid "The name of the reverb bus to use for this area's associated audio." +msgstr "用于该区域关联音频的混响总线的名称。" msgid "" "The degree to which this area's reverb is a uniform effect. Ranges from " @@ -3514,12 +8624,341 @@ msgstr "" "该区域的混响效果均匀的程度。范围从 [code]0[/code] 到 [code]1[/code],精度为 " "[code]0.1[/code]。" +msgid "" +"The exponential rate at which wind force decreases with distance from its " +"origin." +msgstr "风力随着距其原点的距离而衰减的指数速率。" + +msgid "The magnitude of area-specific wind force." +msgstr "特定区域风力的大小。" + +msgid "" +"The [Node3D] which is used to specify the the direction and origin of an " +"area-specific wind force. The direction is opposite to the z-axis of the " +"[Node3D]'s local transform, and its origin is the origin of the [Node3D]'s " +"local transform." +msgstr "" +"[Node3D] 用于指定特定区域风力的方向和原点。方向与 [Node3D] 局部变换的 z 轴相" +"反,其原点为 [Node3D] 局部变换的原点。" + +msgid "" +"Emitted when a [Shape3D] of the received [param area] enters a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"[param local_shape_index] and [param area_shape_index] contain indices of " +"the interacting shapes from this area and the other area, respectively. " +"[param area_rid] contains the [RID] of the other area. These values can be " +"used with the [PhysicsServer3D].\n" +"[b]Example of getting the[/b] [CollisionShape3D] [b]node from the shape " +"index:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner(area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" +msgstr "" +"当收到的 [param area] 的 [Shape3D] 进入这个区域的形状时发出。要求 [member " +"monitoring] 被设置为 [code]true[/code] 。\n" +"[param local_shape_index] 和 [param area_shape_index] 分别包含来自这个区域和" +"另一个区域的交互形状的索引。[param area_rid] 包含另一个区域的 [RID]。这些值可" +"以与 [PhysicsServer3D] 一起使用。\n" +"[b]从形状索引中获取[/b] [CollisionShape3D] [b]节点的例子。[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var other_shape_owner = area.shape_find_owner( area_shape_index)\n" +"var other_shape_node = area.shape_owner_get_owner(other_shape_owner)\n" +"\n" +"var local_shape_owner = shape_find_owner(local_shape_index)\n" +"var local_shape_node = shape_owner_get_owner(local_shape_owner)\n" +"[/gdscript]\n" +"[/codeblocks]" + +msgid "" +"Emitted when a [Shape3D] of the received [param area] exits a shape of this " +"area. Requires [member monitoring] to be set to [code]true[/code].\n" +"See also [signal area_shape_entered]." +msgstr "" +"当接收的 [param area] 的 [Shape3D] 退出此区域的形状时发出。需要 [member " +"monitoring] 被设置为 [code]true[/code]。\n" +"另见 [signal area_shape_entered]。" + +msgid "" +"Emitted when the received [param body] enters this area. [param body] can be " +"a [PhysicsBody3D] or a [GridMap]. [GridMap]s are detected if their " +"[MeshLibrary] has collision shapes configured. Requires [member monitoring] " +"to be set to [code]true[/code]." +msgstr "" +"当接收到的 [param body] 进入这个区域时触发。[param body] 可以是一个 " +"[PhysicsBody3D] 或一个 [GridMap]。如果 [GridMap] 的 [MeshLibrary] 配置了碰撞" +"形状,就会被检测到。需要将 [member monitoring] 设置为 [code]true[/code] 。" + +msgid "" +"Emitted when the received [param body] exits this area. [param body] can be " +"a [PhysicsBody3D] or a [GridMap]. [GridMap]s are detected if their " +"[MeshLibrary] has collision shapes configured. Requires [member monitoring] " +"to be set to [code]true[/code]." +msgstr "" +"当接收到的 [param body] 离开这个区域时发出的。[param body] 可以是一个 " +"[PhysicsBody3D] 或一个 [GridMap]。如果 [GridMap] 的 [MeshLibrary] 配置了碰撞" +"形状,就会被检测到。要求 [member monitoring] 被设置为 [code]true[/code] 。" + msgid "A generic array datatype." msgstr "通用数组数据类型。" +msgid "" +"A generic array that can contain several elements of any type, accessible by " +"a numerical index starting at 0. Negative indices can be used to count from " +"the back, like in Python (-1 is the last element, -2 is the second to last, " +"etc.).\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = [\"One\", 2, 3, \"Four\"]\n" +"print(array[0]) # One.\n" +"print(array[2]) # 3.\n" +"print(array[-1]) # Four.\n" +"array[2] = \"Three\"\n" +"print(array[-2]) # Three.\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array{\"One\", 2, 3, \"Four\"};\n" +"GD.Print(array[0]); // One.\n" +"GD.Print(array[2]); // 3.\n" +"GD.Print(array[array.Count - 1]); // Four.\n" +"array[2] = \"Three\";\n" +"GD.Print(array[array.Count - 2]); // Three.\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Arrays can be concatenated using the [code]+[/code] operator:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array1 = [\"One\", 2]\n" +"var array2 = [3, \"Four\"]\n" +"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// Array concatenation is not possible with C# arrays, but is with Godot." +"Collections.Array.\n" +"var array1 = new Godot.Collections.Array{\"One\", 2};\n" +"var array2 = new Godot.Collections.Array{3, \"Four\"};\n" +"GD.Print(array1 + array2); // Prints [One, 2, 3, Four]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Note:[/b] Concatenating with the [code]+=[/code] operator will create a " +"new array, which has a cost. If you want to append another array to an " +"existing array, [method append_array] is more efficient.\n" +"[b]Note:[/b] Arrays are always passed by reference. To get a copy of an " +"array that can be modified independently of the original array, use [method " +"duplicate].\n" +"[b]Note:[/b] Erasing elements while iterating over arrays is [b]not[/b] " +"supported and will result in unpredictable behavior.\n" +"[b]Note:[/b] When declaring an array with [code]const[/code], the array " +"itself can still be mutated by defining the values at individual indices or " +"pushing/removing elements. Using [code]const[/code] will only prevent " +"assigning the constant with another value after it was initialized." +msgstr "" +"通用数组,可以包含任意类型的多个元素,可以通过从 0 开始的数字索引进行访问。负" +"数索引可以用来从后面数起,就像在 Python 中一样(-1 是最后一个元素、-2 是倒数" +"第二,以此类推)。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array = [\"One\", 2, 3, \"Four\"]\n" +"print(array[0]) # One。\n" +"print(array[2]) # 3。\n" +"print(array[-1]) # Four。\n" +"array[2] = \"Three\"\n" +"print(array[-2]) # Three。\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array{\"One\", 2, 3, \"Four\"};\n" +"GD.Print(array[0]); // One。\n" +"GD.Print(array[2]); // 3。\n" +"GD.Print(array[array.Count - 1]); // Four。\n" +"array[2] = \"Three\";\n" +"GD.Print(array[array.Count - 2]); // Three。\n" +"[/csharp]\n" +"[/codeblocks]\n" +"可以使用 [code]+[/code] 运算符连接数组:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array1 = [\"One\", 2]\n" +"var array2 = [3, \"Four\"]\n" +"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"// C# 数组无法进行数组串联,但 Godot.Collections.Array 可以。\n" +"var array1 = new Godot.Collections.Array{\"One\", 2};\n" +"var array2 = new Godot.Collections.Array{3, \"Four\"};\n" +"GD.Print(array1 + array2); // Prints [One, 2, 3, Four]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]注意:[/b]用 [code]+=[/code] 操作符串联将创建一个新的数组,这是有代价的。" +"如果要将另一个数组追加到现有的数组中,[method append_array] 会更有效。\n" +"[b]注意:[/b]数组总是通过引用来传递。要获得一个可以独立于原始数组而被修改的数" +"组的副本,请使用 [method duplicate]。\n" +"[b]注意:[/b][b]不[/b]支持在遍历数组时擦除元素,这将导致不可预知的行为。\n" +"[b]注意:[/b]当用 [code]const[/code] 声明数组时,数组本身仍然可以通过定义各个" +"索引上的值或追加/移除元素而被修改。使用 [code]const[/code] 只能防止该常量在初" +"始化后被赋值为另一个值。" + msgid "Constructs an empty [Array]." msgstr "构造空的 [Array]。" +msgid "Creates a typed array from the [param base] array." +msgstr "从 [param base] 数组创建具有类型的数组。" + +msgid "" +"Returns the same array as [param from]. If you need a copy of the array, use " +"[method duplicate]." +msgstr "" +"返回与 [param from] 相同的数组。如果你需要一个数组的副本,请使用 [method " +"duplicate]。" + +msgid "Constructs an array from a [PackedByteArray]." +msgstr "从 [PackedByteArray] 构造一个数组。" + +msgid "Constructs an array from a [PackedColorArray]." +msgstr "从 [PackedColorArray] 构造一个数组。" + +msgid "Constructs an array from a [PackedFloat32Array]." +msgstr "从 [PackedFloat32Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedFloat64Array]." +msgstr "从 [PackedFloat64Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedInt32Array]." +msgstr "从 [PackedInt32Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedInt64Array]." +msgstr "从 [PackedInt64Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedStringArray]." +msgstr "从 [PackedStringArray] 构造一个数组。" + +msgid "Constructs an array from a [PackedVector2Array]." +msgstr "从 [PackedVector2Array] 构造一个数组。" + +msgid "Constructs an array from a [PackedVector3Array]." +msgstr "从 [PackedVector3Array] 构造一个数组。" + +msgid "" +"Calls the provided [Callable] on each element in the array and returns " +"[code]true[/code] if the [Callable] returns [code]true[/code] for [i]all[/i] " +"elements in the array. If the [Callable] returns [code]false[/code] for one " +"array element or more, this method returns [code]false[/code].\n" +"The callable's method should take one [Variant] parameter (the current array " +"element) and return a boolean value.\n" +"[codeblock]\n" +"func _ready():\n" +" print([6, 10, 6].all(greater_than_5)) # Prints True (3/3 elements " +"evaluate to `true`).\n" +" print([4, 10, 4].all(greater_than_5)) # Prints False (1/3 elements " +"evaluate to `true`).\n" +" print([4, 4, 4].all(greater_than_5)) # Prints False (0/3 elements " +"evaluate to `true`).\n" +" print([].all(greater_than_5)) # Prints True (0/0 elements evaluate to " +"`true`).\n" +"\n" +" print([6, 10, 6].all(func(number): return number > 5)) # Prints True. " +"Same as the first line above, but using lambda function.\n" +"\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"[/codeblock]\n" +"See also [method any], [method filter], [method map] and [method reduce].\n" +"[b]Note:[/b] Unlike relying on the size of an array returned by [method " +"filter], this method will return as early as possible to improve performance " +"(especially with large arrays).\n" +"[b]Note:[/b] For an empty array, this method [url=https://en.wikipedia.org/" +"wiki/Vacuous_truth]always[/url] returns [code]true[/code]." +msgstr "" +"对数组中的每个元素调用提供的 [Callable],如果 [Callable] 为数组中的 [i]所有[/" +"i] 元素返回 [code]true[/code],则返回 [code]true[/code]。如果 [Callable] 为一" +"个或多个数组元素返回 [code]false[/code],则此方法返回 [code]false[/code]。\n" +"该可调用的方法应采用一个 [Variant] 参数(当前数组元素)并返回一个布尔值。\n" +"[codeblock]\n" +"func _ready():\n" +" print([6, 10, 6].all(greater_than_5)) # 输出 True(3/3 元素评估为 " +"`true`)。\n" +" print([4, 10, 4].all(greater_than_5)) # 输出 False(1/3 元素评估为 " +"`true`)。\n" +" print([4, 4, 4].all(greater_than_5)) # 输出 False(0/3 元素评估为 " +"`true`)。\n" +" print([].all(greater_than_5)) # 输出 True(0/0 元素评估为 `true`)。\n" +"\n" +" print([6, 10, 6].all(func(number): return number > 5)) # 输出 True。与上" +"面的第一行相同,但使用 lambda 函数。\n" +"\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"[/codeblock]\n" +"另请参见 [method any]、[method filter]、[method map] 和 [method reduce]。\n" +"[b]注意:[/b]与依赖 [method filter] 返回的数组大小不同,此方法会尽可能早地返" +"回以提高性能(尤其是对于大型数组)。\n" +"[b]注意:[/b]对于空数组,此方法 [url=https://en.wikipedia.org/wiki/" +"Vacuous_truth]总是[/url] 返回 [code]true[/code]。" + +msgid "" +"Calls the provided [Callable] on each element in the array and returns " +"[code]true[/code] if the [Callable] returns [code]true[/code] for [i]one or " +"more[/i] elements in the array. If the [Callable] returns [code]false[/code] " +"for all elements in the array, this method returns [code]false[/code].\n" +"The callable's method should take one [Variant] parameter (the current array " +"element) and return a boolean value.\n" +"[codeblock]\n" +"func _ready():\n" +" print([6, 10, 6].any(greater_than_5)) # Prints True (3 elements " +"evaluate to `true`).\n" +" print([4, 10, 4].any(greater_than_5)) # Prints True (1 elements " +"evaluate to `true`).\n" +" print([4, 4, 4].any(greater_than_5)) # Prints False (0 elements " +"evaluate to `true`).\n" +" print([].any(greater_than_5)) # Prints False (0 elements evaluate to " +"`true`).\n" +"\n" +" print([6, 10, 6].any(func(number): return number > 5)) # Prints True. " +"Same as the first line above, but using lambda function.\n" +"\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"[/codeblock]\n" +"See also [method all], [method filter], [method map] and [method reduce].\n" +"[b]Note:[/b] Unlike relying on the size of an array returned by [method " +"filter], this method will return as early as possible to improve performance " +"(especially with large arrays).\n" +"[b]Note:[/b] For an empty array, this method always returns [code]false[/" +"code]." +msgstr "" +"对数组中的每个元素调用提供的 [Callable],如果 [Callable] 为数组中的 [i] 一个" +"或多个 [/i] 元素返回 [code]true[/code],则返回 [code]true[/code]。如果 " +"[Callable] 为数组中的所有元素返回 [code]false[/code],则此方法返回 " +"[code]false[/code]。\n" +"可调用的方法应采用一个 [Variant] 参数(当前数组元素)并返回一个布尔值。\n" +"[codeblock]\n" +"func _ready():\n" +" print([6, 10, 6].any(greater_than_5)) # 输出 True(3 个元素评估为 " +"`true`)。\n" +" print([4, 10, 4].any(greater_than_5)) # 输出 True(1 个元素评估为 " +"`true`)。\n" +" print([4, 4, 4].any(greater_than_5)) # 输出 False(0 个元素评估为 " +"`true`)。\n" +" print([].any(greater_than_5)) # 输出 False(0 个元素评估为 `true`)。\n" +"\n" +" print([6, 10, 6].any(func(number): return number > 5)) # 输出 True。与上" +"面的第一行相同,但使用 lambda 函数。\n" +"\n" +"func greater_than_5(number):\n" +" return number > 5\n" +"[/codeblock]\n" +"另请参阅 [method all]、[method filter]、[method map] 和 [method reduce]。\n" +"[b]注意:[/b]与依赖 [method filter] 返回的数组大小不同,此方法会尽可能早地返" +"回以提高性能(尤其是对于大型数组)。\n" +"[b]注意:[/b]对于一个空数组,这个方法总是返回 [code]false[/code]。" + msgid "" "Appends an element at the end of the array (alias of [method push_back])." msgstr "向数组末尾追加一个元素([method push_back] 的别名)。" @@ -3533,12 +8972,12 @@ msgid "" "print(array1) # Prints [1, 2, 3, 4, 5, 6].\n" "[/codeblock]" msgstr "" -"在此数组的末尾追加另一个数组。\n" +"在该数组的末尾追加其他数组。\n" "[codeblock]\n" "var array1 = [1, 2, 3]\n" "var array2 = [4, 5, 6]\n" "array1.append_array(array2)\n" -"print(array1) # 打印 [1, 2, 3, 4, 5, 6].\n" +"print(array1) # 输出 [1, 2, 3, 4, 5, 6].\n" "[/codeblock]" msgid "" @@ -3561,6 +9000,97 @@ msgstr "清空数组。相当于调用 [method resize] 时指定大小为 [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" @@ -3602,6 +9132,37 @@ msgstr "" 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 " @@ -3618,13 +9179,38 @@ msgstr "" "如果数组中的所有元素都是可比较的类型,返回其中的最小值。如果无法比较,返回 " "[code]null[/code]。" +msgid "" +"Returns a random value from the target array.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array: Array[int] = [1, 2, 3, 4]\n" +"print(array.pick_random()) # Prints either of the four numbers.\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array { 1, 2, 3, 4 };\n" +"GD.Print(array.PickRandom()); // Prints either of the four numbers.\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从目标数组中返回一个随机值。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var array: Array[int] = [1, 2, 3, 4]\n" +"print(array.pick_random()) # 输出四个数字中的任何一个。\n" +"[/gdscript]\n" +"[csharp]\n" +"var array = new Godot.Collections.Array { 1, 2, 3, 4 };\n" +"GD.Print(array.PickRandom()); // 输出四个数字中的任何一个。\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Removes and returns the last element of the array. Returns [code]null[/code] " "if the array is empty, without printing an error message. See also [method " "pop_front]." msgstr "" -"移除并返回数组中的末尾元素。数组为空时,返回 [code]null[/code]。另请参阅 " -"[method pop_front]。" +"移除并返回数组中的末尾元素。如果数组为空,则返回 [code]null[/code],而不打印" +"错误消息。另见[method pop_front]。" msgid "" "Removes and returns the first element of the array. Returns [code]null[/" @@ -3680,19 +9266,328 @@ msgstr "" msgid "Reverses the order of the elements in the array." msgstr "将数组中的元素逆序排列。" +msgid "" +"Searches the array in reverse order. Optionally, a start search index can be " +"passed. If negative, the start index is considered relative to the end of " +"the array." +msgstr "" +"逆序搜索数组。还可以传递起始搜索位置索引。如果为负,则起始索引被视为相对于数" +"组的结尾。" + +msgid "" +"Shuffles the array such that the items will have a random order. This method " +"uses the global random number generator common to methods such as [method " +"@GlobalScope.randi]. Call [method @GlobalScope.randomize] to ensure that a " +"new seed will be used each time if you want non-reproducible shuffling." +msgstr "" +"将数组打乱,元素随机排列。该方法使用全局随机数生成器,与 [method " +"@GlobalScope.randi] 等方法一致。如果你想每次都使用新的种子,让打乱无法重现," +"则可以调用 [method @GlobalScope.randomize]。" + msgid "Returns the number of elements in the array." msgstr "返回数组中元素的个数。" +msgid "" +"Sorts the array.\n" +"[b]Note:[/b] The sorting algorithm used is not [url=https://en.wikipedia.org/" +"wiki/Sorting_algorithm#Stability]stable[/url]. This means that values " +"considered equal may have their order changed when using [method sort].\n" +"[b]Note:[/b] Strings are sorted in alphabetical order (as opposed to natural " +"order). This may lead to unexpected behavior when sorting an array of " +"strings ending with a sequence of numbers. Consider the following example:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n" +"strings.sort()\n" +"print(strings) # Prints [string1, string10, string11, string2]\n" +"[/gdscript]\n" +"[csharp]\n" +"var strings = new Godot.Collections.Array { \"string1\", \"string2\", " +"\"string10\", \"string11\" };\n" +"strings.Sort();\n" +"GD.Print(strings); // Prints [string1, string10, string11, string2]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"To perform natural order sorting, you can use [method sort_custom] with " +"[method String.naturalnocasecmp_to] as follows:\n" +"[codeblock]\n" +"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n" +"strings.sort_custom(func(a, b): return a.naturalnocasecmp_to(b) < 0)\n" +"print(strings) # Prints [string1, string2, string10, string11]\n" +"[/codeblock]" +msgstr "" +"对数组进行排序。\n" +"[b]注意:[/b]排序所使用的算法并不[url=https://zh.wikipedia.org/wiki/" +"%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#%E7%A9%A9%E5%AE%9A%E6%80%A7]稳定[/url]。" +"也就是说,使用 [method sort] 时相等的值之间的顺序可能会改变。\n" +"[b]注意:[/b]字符串按字母顺序排序(与自然顺序相反)。当对一个以数字序列结尾的" +"字符串数组进行排序时,这可能会导致意外的行为。请看下面的例子:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n" +"strings.sort()\n" +"print(strings) # 输出 [string1, string10, string11, string2]\n" +"[/gdscript]\n" +"[csharp]\n" +"var strings = new Godot.Collections.Array { \"string1\", \"string2\", " +"\"string10\", \"string11\" };\n" +"strings.Sort();\n" +"GD.Print(strings); // 输出 [string1, string10, string11, string2]\n" +"[/csharp]\n" +"[/codeblocks]\n" +"要执行自然顺序排序,可以使用 [method sort_custom] 和 [method String." +"naturalnocasecmp_to],如下所示:\n" +"[codeblock]\n" +"var strings = [\"string1\", \"string2\", \"string10\", \"string11\"]\n" +"strings.sort_custom(func(a, b): return a.naturalnocasecmp_to(b) < 0)\n" +"print(strings) # 输出 [string1, string2, string10, string11]\n" +"[/codeblock]" + +msgid "" +"Sorts the array using a custom method. The custom method receives two " +"arguments (a pair of elements from the array) and must return either " +"[code]true[/code] or [code]false[/code]. For two elements [code]a[/code] and " +"[code]b[/code], if the given method returns [code]true[/code], element " +"[code]b[/code] will be after element [code]a[/code] in the array.\n" +"[b]Note:[/b] The sorting algorithm used is not [url=https://en.wikipedia.org/" +"wiki/Sorting_algorithm#Stability]stable[/url]. This means that values " +"considered equal may have their order changed when using [method " +"sort_custom].\n" +"[b]Note:[/b] You cannot randomize the return value as the heapsort algorithm " +"expects a deterministic result. Randomizing the return value will result in " +"unexpected behavior.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func sort_ascending(a, b):\n" +" if a[0] < b[0]:\n" +" return true\n" +" return false\n" +"\n" +"func _ready():\n" +" var my_items = [[5, \"Potato\"], [9, \"Rice\"], [4, \"Tomato\"]]\n" +" my_items.sort_custom(sort_ascending)\n" +" print(my_items) # Prints [[4, Tomato], [5, Potato], [9, Rice]].\n" +"\n" +" # Descending, lambda version.\n" +" my_items.sort_custom(func(a, b): return a[0] > b[0])\n" +" print(my_items) # Prints [[9, Rice], [5, Potato], [4, Tomato]].\n" +"[/gdscript]\n" +"[csharp]\n" +"// There is no custom sort support for Godot.Collections.Array\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"使用自定义的方法对数组进行排序。自定义方法接受两个参数(数组中的一对元素)," +"并且必须返回 [code]true[/code] 或者 [code]false[/code]。对于两个元素 " +"[code]a[/code] 和 [code]b[/code],如果给定的方法返回 [code]true[/code],数组" +"中的元素 [code]b[/code] 将排在元素 [code]a[/code] 之后。\n" +"[b]注意:[/b]排序所使用的算法并不[url=https://zh.wikipedia.org/wiki/" +"%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#%E7%A9%A9%E5%AE%9A%E6%80%A7]稳定[/url]。" +"也就是说,使用 [method sort_custom] 时相等的值之间的顺序可能会改变。\n" +"[b]注意:[/b]您不能随机化返回值,因为堆排序算法期望确定的结果。随机化返回值将" +"导致意外行为。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func sort_ascending(a, b):\n" +" if a[0] < b[0]:\n" +" return true\n" +" return false\n" +"\n" +"func _ready():\n" +" var my_items = [[5, \"Potato\"], [9, \"Rice\"], [4, \"Tomato\"]]\n" +" my_items.sort_custom(sort_ascending)\n" +" print(my_items) # 输出 [[4, Tomato], [5, Potato], [9, Rice]].\n" +"\n" +" # Descending, lambda version.\n" +" my_items.sort_custom(func(a, b): return a[0] > b[0])\n" +" print(my_items) # 输出 [[9, Rice], [5, Potato], [4, Tomato]].\n" +"[/gdscript]\n" +"[csharp]\n" +"// Godot.Collections.Array 不支持自定义排序\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Compares the left operand [Array] against the [param right] [Array]. Returns " +"[code]true[/code] if the sizes and contents of the arrays are equal, " +"[code]false[/code] otherwise." +msgstr "" +"将左操作数 [Array] 与 [param right] [Array] 进行比较。如果数组的大小和内容相" +"等,则返回 [code]true[/code],否则返回 [code]false[/code]。" + msgid "" "[Mesh] type that provides utility for constructing a surface from arrays." msgstr "[Mesh] 网格类型,提供了用于从数组构造表面的工具。" +msgid "" +"The [ArrayMesh] is used to construct a [Mesh] by specifying the attributes " +"as arrays.\n" +"The most basic example is the creation of a single triangle:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var vertices = PackedVector3Array()\n" +"vertices.push_back(Vector3(0, 1, 0))\n" +"vertices.push_back(Vector3(1, 0, 0))\n" +"vertices.push_back(Vector3(0, 0, 1))\n" +"\n" +"# Initialize the ArrayMesh.\n" +"var arr_mesh = ArrayMesh.new()\n" +"var arrays = []\n" +"arrays.resize(Mesh.ARRAY_MAX)\n" +"arrays[Mesh.ARRAY_VERTEX] = vertices\n" +"\n" +"# Create the Mesh.\n" +"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)\n" +"var m = MeshInstance3D.new()\n" +"m.mesh = arr_mesh\n" +"[/gdscript]\n" +"[csharp]\n" +"var vertices = new Vector3[]\n" +"{\n" +" new Vector3(0, 1, 0),\n" +" new Vector3(1, 0, 0),\n" +" new Vector3(0, 0, 1),\n" +"};\n" +"\n" +"// Initialize the ArrayMesh.\n" +"var arrMesh = new ArrayMesh();\n" +"var arrays = new Godot.Collections.Array();\n" +"arrays.Resize((int)Mesh.ArrayType.Max);\n" +"arrays[(int)Mesh.ArrayType.Vertex] = vertices;\n" +"\n" +"// Create the Mesh.\n" +"arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);\n" +"var m = new MeshInstance3D();\n" +"m.Mesh = arrMesh;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The [MeshInstance3D] is ready to be added to the [SceneTree] to be shown.\n" +"See also [ImmediateMesh], [MeshDataTool] and [SurfaceTool] for procedural " +"geometry generation.\n" +"[b]Note:[/b] Godot uses clockwise [url=https://learnopengl.com/Advanced-" +"OpenGL/Face-culling]winding order[/url] for front faces of triangle " +"primitive modes." +msgstr "" +"[ArrayMesh] 是用来构造 [Mesh] 的,其属性指定为数组。\n" +"最基本的例子是创建单个三角形:\n" +"[codeblocks]\n" +"[gdscript]\n" +"var vertices = PackedVector3Array()\n" +"vertices.push_back(Vector3(0, 1, 0))\n" +"vertices.push_back(Vector3(1, 0, 0))\n" +"vertices.push_back(Vector3(0, 0, 1))\n" +"\n" +"# 初始化 ArrayMesh。\n" +"var arr_mesh = ArrayMesh.new()\n" +"var arrays = []\n" +"arrays.resize(Mesh.ARRAY_MAX)\n" +"arrays[Mesh.ARRAY_VERTEX] = vertices\n" +"\n" +"# 创建 Mesh。\n" +"arr_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)\n" +"var m = MeshInstance3D.new()\n" +"m.mesh = arr_mesh\n" +"[/gdscript]\n" +"[csharp]\n" +"var vertices = new Vector3[]\n" +"{\n" +" new Vector3(0, 1, 0),\n" +" new Vector3(1, 0, 0),\n" +" new Vector3(0, 0, 1),\n" +"};\n" +"\n" +"// 初始化 ArrayMesh。\n" +"var arrMesh = new ArrayMesh();\n" +"var arrays = new Godot.Collections.Array();\n" +"arrays.Resize((int)Mesh.ArrayType.Max);\n" +"arrays[(int)Mesh.ArrayType.Vertex] = vertices;\n" +"\n" +"// 创建 Mesh。\n" +"arrMesh.AddSurfaceFromArrays(Mesh.PrimitiveType.Triangles, arrays);\n" +"var m = new MeshInstance3D();\n" +"m.Mesh = arrMesh;\n" +"[/csharp]\n" +"[/codeblocks]\n" +"这个 [MeshInstance3D] 就可以添加到要显示的 [SceneTree] 中了。\n" +"程序几何体生成请参阅 [ImmediateMesh]、[MeshDataTool]、[SurfaceTool]。\n" +"[b]注意:[/b]Godot 对三角形图元模式的正面使用顺时针[url=https://learnopengl-" +"cn.github.io/04%20Advanced%20OpenGL/04%20Face%20culling/]环绕顺序[/url]。" + +msgid "Procedural geometry using the ArrayMesh" +msgstr "使用 ArrayMesh 的程序化几何体" + msgid "" "Adds name for a blend shape that will be added with [method " "add_surface_from_arrays]. Must be called before surface is added." msgstr "" -"为混合形状添加名称,该名称将用[method add_surface_from_arrays]添加。必须在添" -"加曲面之前调用。" +"为混合形状添加名称,该形状将用 [method add_surface_from_arrays] 添加。必须在" +"添加面之前调用。" + +msgid "" +"Creates a new surface. [method Mesh.get_surface_count] will become the " +"[code]surf_idx[/code] for this new surface.\n" +"Surfaces are created to be rendered using a [param primitive], which may be " +"any of the values defined in [enum Mesh.PrimitiveType].\n" +"The [param arrays] argument is an array of arrays. Each of the [constant " +"Mesh.ARRAY_MAX] elements contains an array with some of the mesh data for " +"this surface as described by the corresponding member of [enum Mesh." +"ArrayType] or [code]null[/code] if it is not used by the surface. For " +"example, [code]arrays[0][/code] is the array of vertices. That first vertex " +"sub-array is always required; the others are optional. Adding an index array " +"puts this surface into \"index mode\" where the vertex and other arrays " +"become the sources of data and the index array defines the vertex order. All " +"sub-arrays must have the same length as the vertex array (or be an exact " +"multiple of the vertex array's length, when multiple elements of a sub-array " +"correspond to a single vertex) or be empty, except for [constant Mesh." +"ARRAY_INDEX] if it is used.\n" +"The [param blend_shapes] argument is an array of vertex data for each blend " +"shape. Each element is an array of the same structure as [param arrays], but " +"[constant Mesh.ARRAY_VERTEX], [constant Mesh.ARRAY_NORMAL], and [constant " +"Mesh.ARRAY_TANGENT] are set if and only if they are set in [param arrays] " +"and all other entries are [code]null[/code].\n" +"The [param lods] argument is a dictionary with [float] keys and " +"[PackedInt32Array] values. Each entry in the dictionary represents a LOD " +"level of the surface, where the value is the [constant Mesh.ARRAY_INDEX] " +"array to use for the LOD level and the key is roughly proportional to the " +"distance at which the LOD stats being used. I.e., increasing the key of a " +"LOD also increases the distance that the objects has to be from the camera " +"before the LOD is used.\n" +"The [param flags] argument is the bitwise or of, as required: One value of " +"[enum Mesh.ArrayCustomFormat] left shifted by " +"[code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code] for each custom channel in use, " +"[constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE], [constant Mesh." +"ARRAY_FLAG_USE_8_BONE_WEIGHTS], or [constant Mesh." +"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY].\n" +"[b]Note:[/b] When using indices, it is recommended to only use points, " +"lines, or triangles." +msgstr "" +"创建一个新的表面。[method Mesh.get_surface_count] 将成为这个新表面的 " +"[code]surf_idx[/code]。\n" +"创建表面以使用 [param primitive] 进行渲染,它可以是 [enum Mesh." +"PrimitiveType] 中定义的任何值。\n" +"[param arrays] 参数是数组的数组。每个 [constant Mesh.ARRAY_MAX] 元素都包含一" +"个数组,其中包含此表面的一些网格数据,如 [enum Mesh.ArrayType] 的相应成员所描" +"述的一样;如果它未被使用,则为 [code]null[/code]。例如,[code]arrays[0][/" +"code] 是顶点数组。始终需要第一个顶点子数组;其他的是可选的。添加索引数组会将" +"此表面置于“索引模式”,其中顶点和其他数组成为数据源,索引数组定义顶点顺序。所" +"有子数组的长度必须与顶点数组的长度相同(或者是顶点数组长度的精确倍数,当子数" +"组的多个元素对应于单个顶点时);或者为空,如果使用了 [constant Mesh." +"ARRAY_INDEX ] 则除外。\n" +"[param blend_shapes] 参数是每个混合形状的顶点数据数组。 每个元素都是与 " +"[param arrays] 具有相同结构的数组,但是 [constant Mesh.ARRAY_VERTEX]、" +"[constant Mesh.ARRAY_NORMAL] 和 [constant Mesh.ARRAY_TANGENT] 这些条目,当且" +"仅当在 [param arrays] 被设置且所有其他条目都是 [code]null[/code] 时,会被设" +"置。\n" +"[param lods] 参数是一个带有 [float] 键和 [PackedInt32Array] 值的字典。字典中" +"的每个条目代表了表面的一个 LOD 级别,其中值是用于 LOD 级别的 [constant Mesh." +"ARRAY_INDEX] 数组,键大致与使用 LOD 统计信息的距离成正比。即,增加 LOD 的关键" +"点也会增加在使用 LOD 之前对象必须与相机的距离。\n" +"[param flags] 参数是根据需要按位或的:[enum Mesh.ArrayCustomFormat] 的一个值" +"左移 [code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code],用于每个正在使用的自定义通道," +"[constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE]、[constant Mesh." +"ARRAY_FLAG_USE_8_BONE_WEIGHTS]、或 [constant Mesh." +"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY]。\n" +"[b]注意:[/b]使用索引时,建议只使用点、线或三角形。" msgid "Removes all blend shapes from this [ArrayMesh]." msgstr "移除此 [ArrayMesh] 的所有混合形状。" @@ -3701,11 +9596,21 @@ msgid "Removes all surfaces from this [ArrayMesh]." msgstr "移除此 [ArrayMesh] 的所有表面。" msgid "Returns the number of blend shapes that the [ArrayMesh] holds." -msgstr "返回[ArrayMesh]持有的混合形状的数量。" +msgstr "返回 [ArrayMesh] 持有的混合形状的数量。" msgid "Returns the name of the blend shape at this index." msgstr "返回此索引处的混合形状的名称。" +msgid "" +"Performs a UV unwrap on the [ArrayMesh] to prepare the mesh for lightmapping." +msgstr "在 [ArrayMesh] 上执行 UV 展开,为光照贴图准备该网格。" + +msgid "Regenerates tangents for each of the [ArrayMesh]'s surfaces." +msgstr "为每个 [ArrayMesh] 的表面重新生成切线。" + +msgid "Sets the name of the blend shape at this index." +msgstr "在此索引处设置混合形状的名称。" + msgid "" "Returns the index of the first surface with this name held within this " "[ArrayMesh]. If none are found, -1 is returned." @@ -3716,8 +9621,7 @@ msgid "" "Returns the length in indices of the index array in the requested surface " "(see [method add_surface_from_arrays])." msgstr "" -"返回请求的曲面的索引数组的长度,以指数为单位(见 [method " -"add_surface_from_arrays])。" +"返回所请求的面中索引数组的索引长度(参见 [method add_surface_from_arrays])。" msgid "" "Returns the length in vertices of the vertex array in the requested surface " @@ -3752,6 +9656,30 @@ msgstr "" "用用户定义的用于使用视锥剔除的一种替代 [AABB]。在使用着色器偏移顶点时,避免非" "预期的剔除特别有用。" +msgid "" +"An optional mesh which is used for rendering shadows and can be used for the " +"depth prepass. Can be used to increase performance of shadow rendering by " +"using a mesh that only contains vertex position data (without normals, UVs, " +"colors, etc.)." +msgstr "" +"用于渲染阴影并可用于深度预通道的可选网格。可用于通过使用仅包含顶点位置数据" +"(不含法线、UV、颜色等)的网格来提高阴影渲染的性能。" + +msgid "" +"3D polygon shape for use with occlusion culling in [OccluderInstance3D]." +msgstr "用于与 [OccluderInstance3D] 中的遮挡剔除一起使用的 3D 多边形形状。" + +msgid "" +"[ArrayOccluder3D] stores an arbitrary 3D polygon shape that can be used by " +"the engine's occlusion culling system. This is analogous to [ArrayMesh], but " +"for occluders.\n" +"See [OccluderInstance3D]'s documentation for instructions on setting up " +"occlusion culling." +msgstr "" +"[ArrayOccluder3D] 存储一个任意的 3D 多边形形状,可供引擎的遮挡剔除系统使用。" +"这类似于 [ArrayMesh],但适用于遮挡物。\n" +"有关设置遮挡剔除的说明,请参阅 [OccluderInstance3D] 的文档。" + msgid "Container that preserves its child controls' aspect ratio." msgstr "保留其子控件长宽比的容器。" @@ -3798,6 +9726,19 @@ msgid "" "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 "将子控件与容器的开头对齐(左侧或顶部)。" @@ -3811,12 +9752,17 @@ 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]类中。" +"注意这个函数隐藏在默认的 [code]AStar2D[/code] 类中。" msgid "" "Called when estimating the cost between a point and the path's ending " @@ -3826,34 +9772,813 @@ msgstr "" "当估计一个点和路径终点之间的成本时调用。\n" "请注意,这个函数隐藏在默认的 [code]AStar2D[/code] 类中。" +msgid "" +"Adds a new point at the given position with the given identifier. The [param " +"id] must be 0 or larger, and the [param weight_scale] must be 0.0 or " +"greater.\n" +"The [param weight_scale] is multiplied by the result of [method " +"_compute_cost] when determining the overall cost of traveling across a " +"segment from a neighboring point to this point. Thus, all else being equal, " +"the algorithm prefers points with lower [param weight_scale]s to form a " +"path.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(1, 0), 4) # Adds the point (1, 0) with " +"weight_scale 4 and id 1\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(1, 0), 4); // Adds the point (1, 0) with " +"weight_scale 4 and id 1\n" +"[/csharp]\n" +"[/codeblocks]\n" +"If there already exists a point for the given [param id], its position and " +"weight scale are updated to the given values." +msgstr "" +"在具有给定标识符的给定位置添加一个新点。[param id] 必须为 0 或更大,[param " +"weight_scale] 必须为 0.0 或更大。\n" +"在确定从相邻点到此点的一段路程的总成本时,[param weight_scale] 要乘以 " +"[method _compute_cost] 的结果。因此,在其他条件相同的情况下,算法优先选择 " +"[param weight_scale] 较低的点来形成路径。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(1, 0), 4) # 添加点 (1, 0)、权重为 4、ID 为 1\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(1, 0), 4); // 添加点 (1, 0)、权重为 4、ID 为 " +"1\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果已经存在一个给定 [param id] 的点,则它的位置和权重缩放将被更新为给定值。" + +msgid "" +"Returns whether there is a connection/segment between the given points. If " +"[param bidirectional] is [code]false[/code], returns whether movement from " +"[param id] to [param to_id] is possible through this segment." +msgstr "" +"返回两个给定点之间是否存在连接/线段。如果 [param bidirectional] 为 " +"[code]false[/code],则返回是否可以通过此段从 [param id] 移动到 [param " +"to_id]。" + msgid "Clears all the points and segments." msgstr "清除所有点和线段。" +msgid "" +"Creates a segment between the given points. If [param bidirectional] is " +"[code]false[/code], only movement from [param id] to [param to_id] is " +"allowed, not the reverse direction.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(1, 1))\n" +"astar.add_point(2, Vector2(0, 5))\n" +"astar.connect_points(1, 2, false)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(1, 1));\n" +"astar.AddPoint(2, new Vector2(0, 5));\n" +"astar.ConnectPoints(1, 2, false);\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"在给定的点之间创建一个线段。如果 [param bidirectional] 为 [code]false[/" +"code],则只允许从 [param id] 到 [param to_id] 的移动,而不允许反向移动。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var astar = AStar2D.new()\n" +"astar.add_point(1, Vector2(1, 1))\n" +"astar.add_point(2, Vector2(0, 5))\n" +"astar.connect_points(1, 2, false)\n" +"[/gdscript]\n" +"[csharp]\n" +"var astar = new AStar2D();\n" +"astar.AddPoint(1, new Vector2(1, 1));\n" +"astar.AddPoint(2, new Vector2(0, 5));\n" +"astar.ConnectPoints(1, 2, false);\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Deletes the segment between the given points. If [param bidirectional] is " +"[code]false[/code], only movement from [param id] to [param to_id] is " +"prevented, and a unidirectional segment possibly remains." +msgstr "" +"删除给定点之间的线段。如果 [param bidirectional] 为 [code]false[/code],则仅" +"阻止从 [param id] 到 [param to_id] 的移动,并且可能会保留一个单向线段。" + msgid "Returns the next available point ID with no point associated to it." -msgstr "返回没有关联的下一个可用点的ID。" +msgstr "返回下一个没有关联点的可用点 ID。" + +msgid "" +"Returns the 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 the number of points currently in the points pool." -msgstr "返回当前积分池中的积分数量。" +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 whether a point is disabled or not for pathfinding. By default, all " -"points are enabled." -msgstr "返回是否禁用点以进行寻路。默认情况下,所有点均处于启用状态。" +"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 "" -"Disables or enables the specified point for pathfinding. Useful for making a " -"temporary obstacle." -msgstr "禁用或启用指定点的寻路功能。用于制作临时障碍物。" +"A* (or \"A-Star\") pathfinding tailored to find the shortest paths on 2D " +"grids." +msgstr "A*(或“A 星”)寻路,为寻找 2D 网格上的最短路径定制。" msgid "" -"An implementation of A* to find the shortest paths among connected points in " -"space." -msgstr "A* 的一种实现,用于寻找空间中连接点之间的最短路径。" +"Returns an array with the IDs of the points that form the path found by " +"AStar2D between the given points. The array is ordered from the starting " +"point to the ending point of the path." +msgstr "" +"返回一个数组,其中包含形成 AStar2D 在给定点之间找到的路径的点的 ID。该数组从" +"路径的起点到终点排序。" + +msgid "" +"Returns [code]true[/code] if the [param x] and [param y] is a valid grid " +"coordinate (id)." +msgstr "" +"如果 [param x] 和 [param y] 是有效的网格坐标(ID),则返回 [code]true[/" +"code]。" + +msgid "" +"Returns [code]true[/code] if the [param id] vector is a valid grid " +"coordinate." +msgstr "如果 [param id] 向量是有效的网格坐标,则返回 [code]true[/code]。" + +msgid "" +"Disables or enables the specified point for pathfinding. Useful for making " +"an obstacle. By default, all points are enabled.\n" +"[b]Note:[/b] Calling [method update] is not needed after the call of this " +"function." +msgstr "" +"禁用或启用指定的寻路点。用于制造障碍物。默认情况下,启用所有点。\n" +"[b]注意:[/b]调用该函数后不需要调用 [method update]。" + +msgid "" +"Sets the [param weight_scale] for the point with the given [param id]. The " +"[param weight_scale] is multiplied by the result of [method _compute_cost] " +"when determining the overall cost of traveling across a segment from a " +"neighboring point to this point.\n" +"[b]Note:[/b] Calling [method update] is not needed after the call of this " +"function." +msgstr "" +"为具有给定 [param id] 的点设置 [param weight_scale]。在确定从相邻点到该点穿越" +"路段的总成本时,[param weight_scale] 要乘以 [method _compute_cost] 的结果。\n" +"[b]注意:[/b]调用该函数后不需要调用 [method update]。" + +msgid "Represents the size of the [enum Heuristic] enum." +msgstr "代表 [enum Heuristic] 枚举的大小。" + +msgid "Represents the size of the [enum DiagonalMode] enum." +msgstr "代表 [enum DiagonalMode] 枚举的大小。" + +msgid "A texture that crops out part of another Texture2D." +msgstr "裁剪其他 Texture2D 的纹理。" + +msgid "" +"The texture that contains the atlas. Can be any type inheriting from " +"[Texture2D], including another [AtlasTexture]." +msgstr "" +"包含该图集的纹理。可以是任何继承自 [Texture2D] 的类型,包括其他 " +"[AtlasTexture]。" + +msgid "The region used to draw the [member atlas]." +msgstr "用于绘制 [member atlas] 的区域。" msgid "Stores information about the audio buses." msgstr "存储有关音频总线的信息。" @@ -3866,7 +10591,7 @@ msgstr "" "见 [AudioServer] 。" msgid "Audio effect for audio." -msgstr "音频效果的音频。" +msgstr "用于音频的音频效果。" msgid "" "Base resource for audio bus. Applies an audio effect on the bus that the " @@ -3876,6 +10601,9 @@ msgstr "音频总线的基础资源。在该资源所应用的总线上应用音 msgid "Audio Mic Record Demo" msgstr "音频麦克风录音演示" +msgid "Adds an amplifying audio effect to an audio bus." +msgstr "向音频总线添加一个放大的音频效果。" + msgid "Increases or decreases the volume being routed through the audio bus." msgstr "增加或减少通过音频总线传送的音量。" @@ -3954,13 +10682,13 @@ msgid "The voice's signal delay." msgstr "声音的信号延迟。" msgid "The voice filter's depth." -msgstr "声音滤镜的深度。" +msgstr "声音过滤器的深度。" msgid "The voice's volume." msgstr "声音的音量。" msgid "The voice's pan level." -msgstr "声音的声相级别。" +msgstr "声音的声相电平。" msgid "The voice's filter rate." msgstr "声音过滤比率。" @@ -4036,7 +10764,7 @@ msgstr "使用另一条音频总线进行阈值检测,降低声音级别。" msgid "" "The level above which compression is applied to the audio. Value can range " "from -60 to 0." -msgstr "对音频进行压缩的级别。数值范围从 -60 到 0。" +msgstr "超过该电平,压缩将应用于音频。值的范围可以从 -60 到 0。" msgid "" "Adds a delay audio effect to an audio bus. Plays input signal back after a " @@ -4087,7 +10815,7 @@ msgstr "" "[code]tap1[/code] 的平移位置。取值范围为 -1(完全向左)到 1(完全向右)。" msgid "If [code]true[/code], [code]tap2[/code] will be enabled." -msgstr "如果为 [code]true[/code],将启用[code]tap2[/code]。" +msgstr "如果为 [code]true[/code],将启用 [code]tap2[/code]。" msgid "[b]Tap2[/b] delay time in milliseconds." msgstr "[b]Tap2[/b] 延迟时间,单位为毫秒。" @@ -4112,7 +10840,17 @@ msgstr "" "20000。" msgid "Distortion type." -msgstr "失真类型." +msgstr "失真类型。" + +msgid "" +"Increases or decreases the volume after the effect, in decibels. Value can " +"range from -80 to 24." +msgstr "在效果后增加或减少的音量,单位为分贝。取值范围从 -80 到 24。" + +msgid "" +"Increases or decreases the volume before the effect, in decibels. Value can " +"range from -60 to 60." +msgstr "在效果前增加或减少的音量,单位为分贝。取值范围从 -60 到 60。" msgid "" "Digital distortion effect which cuts off peaks at the top and bottom of the " @@ -4130,8 +10868,8 @@ msgid "" "or [AudioEffectEQ21] don't fit your needs." msgstr "" "音频均衡器的基础类。让你可以控制频率。\n" -"如果 [AudioEffectEQ6]、[AudioEffectEQ10] 或 [AudioEffectEQ21]不符合您的需求," -"请使用它来创建一个自定义均衡器。" +"如果 [AudioEffectEQ6]、[AudioEffectEQ10] 或 [AudioEffectEQ21] 不符合您的需" +"求,请使用它来创建一个自定义均衡器。" msgid "" "AudioEffectEQ gives you control over frequencies. Use it to compensate for " @@ -4160,7 +10898,7 @@ msgid "" "Each frequency can be modulated between -60/+24 dB." msgstr "" "为音频总线添加 10 段均衡器音频效果。让你控制 31Hz 到 16000Hz 的频率。\n" -"每个频率可以在 -60/+24dB 之间进行调制。" +"每个频率可以在 -60/+24 dB 之间进行调制。" msgid "" "Frequency bands:\n" @@ -4194,8 +10932,9 @@ msgid "" "over frequencies from 22 Hz to 22000 Hz.\n" "Each frequency can be modulated between -60/+24 dB." msgstr "" -"为音频总线添加21段均衡器音频效果。让你控制22Hz到22000Hz的频率。\n" -"每个频率可以在-60/+24dB之间进行调制。" +"向音频总线添加一个 21 频段均衡器音频效果。使您可以控制从 22 Hz 到 22000 Hz 的" +"频率。\n" +"每个频率都可以在 -60/+24 dB 之间进行调制。" msgid "" "Frequency bands:\n" @@ -4246,6 +10985,15 @@ msgstr "" "频段 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" @@ -4280,12 +11028,18 @@ msgstr "滤波后频率的增益量。" msgid "Amount of boost in the frequency range near the cutoff frequency." msgstr "在截断频率附近的频率范围内的提升量。" +msgid "Adds a high-pass filter to the audio bus." +msgstr "向音频总线添加一个高通滤波器。" + msgid "" "Cuts frequencies lower than the [member AudioEffectFilter.cutoff_hz] and " "allows higher frequencies to pass." msgstr "" "削减比 [member AudioEffectFilter.cutoff_hz] 更低的频率,允许更高的频率通过。" +msgid "Adds a high-shelf filter to the audio bus." +msgstr "向音频总线添加一个高架滤波器。" + msgid "Reduces all frequencies above the [member AudioEffectFilter.cutoff_hz]." msgstr "降低所有高于 [member AudioEffectFilter.cutoff_hz] 的频率。" @@ -4313,7 +11067,7 @@ msgstr "波形的最大允许值,单位是分贝。数值范围从 -20 到 -0. msgid "" "Applies a gain to the limited waves, in decibels. Value can range from 0 to " "6." -msgstr "将增益应用于有限的波,以分贝为单位。取值范围是 0 到 6。" +msgstr "将增益应用于被限制的波,以分贝为单位。取值范围是 0 到 6。" msgid "" "Threshold from which the limiter begins to be active, in decibels. Value can " @@ -4329,6 +11083,9 @@ msgid "" msgstr "" "削减比 [member AudioEffectFilter.cutoff_hz] 更低的频率,允许更高的频率通过。" +msgid "Adds a low-shelf filter to the audio bus." +msgstr "向音频总线添加一个低架滤波器。" + msgid "Reduces all frequencies below the [member AudioEffectFilter.cutoff_hz]." msgstr "降低 [member AudioEffectFilter.cutoff_hz] 以下的所有频率。" @@ -4342,6 +11099,9 @@ msgstr "" "衰减 [member AudioEffectFilter.cutoff_hz] 周围窄带的频率,并切断这个范围以外" "的频率。" +msgid "Adds a panner audio effect to an audio bus. Pans sound left or right." +msgstr "向音频总线添加一个声相器音频效果。向左或向右平移声音。" + msgid "" "Determines how much of an audio signal is sent to the left and right buses." msgstr "决定向左右总线发送的音频信号量。" @@ -4349,6 +11109,14 @@ 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." @@ -4359,7 +11127,7 @@ msgid "" "affect bass frequencies. High value can sweep high into the treble. Value " "can range from 0.1 to 4." msgstr "" -"控制滤波器频率扫描的频率。较低的值将主要影响低音频率。高值可以推高高音。值的" +"控制滤波器频率扫描的高度。较低的值将主要影响低音频率。高值可以推高高音。值的" "范围可以从 0.1 到 4。" msgid "Output percent of modified sound. Value can range from 0.1 to 0.9." @@ -4380,6 +11148,13 @@ msgid "" "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." @@ -4418,7 +11193,7 @@ msgid "" "Use a buffer of 256 samples for the Fast Fourier transform. Lowest latency, " "but least stable over time." msgstr "" -"使用 256 个样品的缓冲器进行快速傅里叶变换。最低延迟,但随着时间的推移最不稳" +"使用 256 个样本的缓冲器进行快速傅里叶变换。最低延迟,但随着时间的推移最不稳" "定。" msgid "" @@ -4431,22 +11206,25 @@ msgid "" "Use a buffer of 1024 samples for the Fast Fourier transform. This is a " "compromise between latency and stability over time." msgstr "" -"使用 1024 个样本的缓冲器进行快速傅里叶变换。随着时间的推移,这是延迟和稳定性" +"使用 1024 个样本的缓冲器进行快速傅里叶变换。这是延迟和随着时间的推移的稳定性" "之间的折衷。" msgid "" "Use a buffer of 2048 samples for the Fast Fourier transform. High latency, " "but stable over time." msgstr "" -"使用 2048 个样品的缓冲器进行快速傅里叶变换。随着时间的推移,延迟高但稳定。" +"使用 2048 个样本的缓冲器进行快速傅里叶变换。高延迟,但随着时间的推移稳定。" msgid "" "Use a buffer of 4096 samples for the Fast Fourier transform. Highest " "latency, but most stable over time." msgstr "" -"使用 4096 个样品的缓冲器进行快速傅里叶变换。随着时间的推移,延迟最高但最稳" +"使用 4096 个样本的缓冲器进行快速傅里叶变换。延迟最高,但随着时间的推移最稳" "定。" +msgid "Represents the size of the [enum FFTSize] enum." +msgstr "代表 [enum FFTSize] 枚举的大小。" + msgid "Audio effect used for recording the sound from an audio bus." msgstr "用于录制来自音频总线的声音的音频效果。" @@ -4480,6 +11258,20 @@ 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." @@ -4562,12 +11354,74 @@ msgstr "用平均值作为幅度。" msgid "Use the maximum value as magnitude." msgstr "用最大值作为幅度。" +msgid "" +"An audio effect that can be used to adjust the intensity of stereo panning." +msgstr "一种可用于调整立体声声相强度的音频效果。" + msgid "Overrides the location sounds are heard from." msgstr "覆盖听到声音的位置。" +msgid "" +"Once added to the scene tree and enabled using [method make_current], this " +"node will override the location sounds are heard from. Only one " +"[AudioListener2D] can be current. Using [method make_current] will disable " +"the previous [AudioListener2D].\n" +"If there is no active [AudioListener2D] in the current [Viewport], center of " +"the screen will be used as a hearing point for the audio. [AudioListener2D] " +"needs to be inside [SceneTree] to function." +msgstr "" +"一旦被添加到场景树并使用 [method make_current] 启用,此节点将覆盖听到声音的位" +"置。只有一个 [AudioListener2D] 可以是当前的。使用 [method make_current] 将禁" +"用之前的 [AudioListener2D]。\n" +"如果当前 [Viewport] 中没有活动的 [AudioListener2D],则屏幕中心将用作音频的聆" +"听点。[AudioListener2D] 需要在 [SceneTree] 内才能起作用。" + +msgid "" +"Disables the [AudioListener2D]. If it's not set as current, this method will " +"have no effect." +msgstr "禁用 [AudioListener2D]。如果未设置为当前,则此方法无效。" + +msgid "" +"Returns [code]true[/code] if this [AudioListener2D] is currently active." +msgstr "如果该 [AudioListener2D] 当前处于激活状态,则返回 [code]true[/code]。" + +msgid "" +"Makes the [AudioListener2D] active, setting it as the hearing point for the " +"sounds. If there is already another active [AudioListener2D], it will be " +"disabled.\n" +"This method will have no effect if the [AudioListener2D] is not added to " +"[SceneTree]." +msgstr "" +"激活该 [AudioListener2D],将其设置为声音的聆听点。如果已经有另一个激活的 " +"[AudioListener2D],它将被禁用。\n" +"如果 [AudioListener2D] 未添加到 [SceneTree],则该方法无效。" + +msgid "" +"Once added to the scene tree and enabled using [method make_current], this " +"node will override the location sounds are heard from. This can be used to " +"listen from a location different from the [Camera3D]." +msgstr "" +"一旦添加到场景树并使用 [method make_current] 启用,该节点将覆盖听到声音的位" +"置。这可用于从与 [Camera3D] 不同的位置聆听。" + msgid "Disables the listener to use the current camera's listener instead." msgstr "禁用该监听器,用当前相机的监听器代替。" +msgid "Returns the listener's global orthonormalized [Transform3D]." +msgstr "返回该监听器的全局正交归一化 [Transform3D]。" + +msgid "" +"Returns [code]true[/code] if the listener was made current using [method " +"make_current], [code]false[/code] otherwise.\n" +"[b]Note:[/b] There may be more than one AudioListener3D marked as " +"\"current\" in the scene tree, but only the one that was made current last " +"will be used." +msgstr "" +"如果使用 [method make_current] 将监听器设为当前,则返回 [code]true[/code],否" +"则返回 [code]false[/code]。\n" +"[b]注意:[/b] 场景树中标记为“当前”的 AudioListener3D 可能不止一个,但只会使用" +"最后被设置为当前的那个。" + msgid "Enables the listener. This will override the current camera's listener." msgstr "启用该监听器。将覆盖当前相机的监听器。" @@ -4585,18 +11439,56 @@ msgstr "" msgid "Audio Device Changer Demo" msgstr "音频设备切换演示" +msgid "Adds a bus at [param at_position]." +msgstr "在 [param at_position] 处添加一条总线。" + +msgid "" +"Adds an [AudioEffect] effect to the bus [param bus_idx] at [param " +"at_position]." +msgstr "" +"为在 [param at_position] 处索引为 [param bus_idx] 的总线添加 [AudioEffect] 效" +"果。" + msgid "Generates an [AudioBusLayout] using the available buses and effects." msgstr "使用可用的总线和效果来生成 [AudioBusLayout]。" +msgid "Returns the number of channels of the bus at index [param bus_idx]." +msgstr "返回索引为 [param bus_idx] 的总线的通道数。" + +msgid "" +"Returns the [AudioEffect] at position [param effect_idx] in bus [param " +"bus_idx]." +msgstr "" +"返回索引为 [param bus_idx] 的总线中位于 [param effect_idx] 的 [AudioEffect]。" + +msgid "Returns the number of effects on the bus at [param bus_idx]." +msgstr "返回索引为 [param bus_idx] 的总线上的效果数。" + msgid "" "Returns the [AudioEffectInstance] assigned to the given bus and effect " "indices (and optionally channel)." msgstr "" -"返回分配给给定总线和效果指数(以及可选的通道)的 [AudioEffectInstance]。" +"返回分配给给定总线和效果索引(以及可选的通道)的[AudioEffectInstance]。" + +msgid "Returns the index of the bus with the name [param bus_name]." +msgstr "返回名称为 [param bus_name] 的总线的索引。" + +msgid "Returns the name of the bus with the index [param bus_idx]." +msgstr "返回索引为 [param bus_idx] 的总线的名称。" + +msgid "" +"Returns the name of the bus that the bus at index [param bus_idx] sends to." +msgstr "返回索引为 [param bus_idx] 的总线的发送目标总线的名称。" + +msgid "Returns the volume of the bus at index [param bus_idx] in dB." +msgstr "返回索引为 [param bus_idx] 的总线的音量,单位为 dB。" msgid "Returns the sample rate at the output of the [AudioServer]." msgstr "返回 [AudioServer] 输出的采样率。" +msgid "Returns the names of all audio output devices detected on the system." +msgstr "返回系统中检测到的所有音频输出设备的名称。" + msgid "Returns the audio driver's output latency." msgstr "返回音频驱动器的输出延迟。" @@ -4609,16 +11501,60 @@ 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]记得事后解锁。" +"[b]注意:[/b]之后记得解锁。" + +msgid "Moves the bus from index [param index] to index [param to_index]." +msgstr "将总线从索引 [param index] 移动到索引 [param to_index]。" + +msgid "Removes the bus at index [param index]." +msgstr "移除索引 [param index] 处的总线。" + +msgid "" +"Removes the effect at index [param effect_idx] from the bus at index [param " +"bus_idx]." +msgstr "将索引 [param effect_idx] 的效果从索引 [param bus_idx] 的总线上移除。" msgid "Overwrites the currently used [AudioBusLayout]." msgstr "覆盖当前使用的 [AudioBusLayout]。" +msgid "Sets the name of the bus at index [param bus_idx] to [param name]." +msgstr "将索引为 [param bus_idx] 的总线的名称设为 [param name]。" + +msgid "" +"Connects the output of the bus at [param bus_idx] to the bus named [param " +"send]." +msgstr "将索引为 [param bus_idx] 处的总线输出连接到名为 [param send] 的总线。" + +msgid "" +"Sets the volume of the bus at index [param bus_idx] to [param volume_db]." +msgstr "将索引为 [param bus_idx] 的总线的音量设为 [param volume_db]。" + +msgid "Swaps the position of two effects in bus [param bus_idx]." +msgstr "在索引为 [param bus_idx] 的总线中交换两个效果的位置。" + msgid "" "Unlocks the audio driver's main loop. (After locking it, you should always " "unlock it.)" @@ -4645,6 +11581,14 @@ msgstr "检测到 7.1 声道环绕声设置。" msgid "Base class for audio streams." msgstr "音频流的基类。" +msgid "" +"Base class for audio streams. Audio streams are used for sound effects and " +"music playback, and support WAV (via [AudioStreamWAV]) and Ogg (via " +"[AudioStreamOggVorbis]) file formats." +msgstr "" +"音频流的基类。音频流用于播放音效和音乐,支持 WAV(通过 [AudioStreamWAV])和 " +"Ogg(通过 [AudioStreamOggVorbis])文件格式。" + msgid "Audio streams" msgstr "音频流" @@ -4687,9 +11631,9 @@ msgstr "" "code]。\n" "根据[url=https://zh.wikipedia.org/wiki/%E9%87%87%E6%A0%B7%E5%AE%9A%E7%90%86]" "奈奎斯特–香农采样定理[/url],当超过 40000 赫兹时,人类的听觉没有质量上的差别" -"(因为大多数人只能听到 ~20000 赫兹,往往更少)。如果你要生成语音等音高较低的" -"声音,则可以使用 [code]32000[/code] 或 [code]22050[/code] 等较低的采样率,不" -"会降低质量。" +"(因为大多数人最多只能听到 ~20000 赫兹,往往更少)。如果你要生成语音等音高较" +"低的声音,则可以使用 [code]32000[/code] 或 [code]22050[/code] 等较低的采样" +"率,不会降低质量。" msgid "Plays back audio generated using [AudioStreamGenerator]." msgstr "播放使用 [AudioStreamGenerator] 生成的音频。" @@ -4716,6 +11660,58 @@ 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." @@ -4724,9 +11720,36 @@ msgstr "如果为 [code]true[/code],当流到达末尾时将自动循环。" msgid "Time in seconds at which the stream starts after being looped." msgstr "循环时,流开始的时间,单位为秒。" +msgid "Contains the raw Ogg data for this stream." +msgstr "包含用于这个流的原始 Ogg 数据。" + msgid "Meta class for playing back audio." msgstr "播放音频的元类。" +msgid "Playback instance for [AudioStreamPolyphonic]." +msgstr "[AudioStreamPolyphonic] 的播放实例。" + +msgid "" +"Playback instance for [AudioStreamPolyphonic]. After setting the " +"[code]stream[/code] property of [AudioStreamPlayer], [AudioStreamPlayer2D], " +"or [AudioStreamPlayer3D], the playback instance can be obtained by calling " +"[method AudioStreamPlayer.get_stream_playback], [method AudioStreamPlayer2D." +"get_stream_playback] or [method AudioStreamPlayer3D.get_stream_playback] " +"methods." +msgstr "" +"[AudioStreamPolyphonic] 的播放实例。设置 [AudioStreamPlayer]、" +"[AudioStreamPlayer2D] 或 [AudioStreamPlayer3D] 的 [code]stream[/code] 属性" +"后,可以通过调用 [method AudioStreamPlayer.get_stream_playback]、[method " +"AudioStreamPlayer2D.get_stream_playback] 或 [method AudioStreamPlayer3D." +"get_stream_playback] 方法获取播放实例。" + +msgid "" +"Stop a stream. The [param stream] argument is an integer ID returned by " +"[method play_stream], which becomes invalid after calling this function." +msgstr "" +"停止某个流。[param stream] 参数是由 [method play_stream] 返回的整数 ID,在调" +"用这个函数后失效。" + msgid "Plays back audio non-positionally." msgstr "播放音频,不考虑所处位置。" @@ -4747,6 +11770,9 @@ msgid "" "[AudioStreamPlayer]." msgstr "返回与此 [AudioStreamPlayer] 关联的 [AudioStreamPlayback] 对象。" +msgid "Plays the audio from the given [param from_position], in seconds." +msgstr "从给定的位置 [param from_position] 播放音频,以秒为单位。" + msgid "Sets the position from which audio will be played, in seconds." msgstr "设置音频的播放位置,以秒为单位。" @@ -4820,6 +11846,13 @@ msgid "" "[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 " @@ -4834,6 +11867,16 @@ msgstr "" msgid "Maximum distance from which audio is still hearable." msgstr "音频仍可听到的最大距离。" +msgid "" +"If [code]true[/code], audio is playing or is queued to be played (see " +"[method play])." +msgstr "" +"如果为 [code]true[/code],则音频正在播放,或者已加入播放队列(见 [method " +"play])。" + +msgid "Base volume before attenuation." +msgstr "衰减前的基础音量。" + msgid "Plays positional sound in 3D space." msgstr "在 3D 空间中播放与位置相关的声音。" @@ -4891,9 +11934,58 @@ msgid "" "over a larger distance." msgstr "衰减效果的系数。更高的值使声音在更远的距离可以听到。" +msgid "Attenuation of loudness according to linear distance." +msgstr "根据距离对响度进行线性衰减。" + +msgid "Attenuation of loudness according to squared distance." +msgstr "根据距离对响度进行平方衰减。" + +msgid "Attenuation of loudness according to logarithmic distance." +msgstr "根据距离对响度进行对数衰减。" + +msgid "" +"No attenuation of loudness according to distance. The sound will still be " +"heard positionally, unlike an [AudioStreamPlayer]. [constant " +"ATTENUATION_DISABLED] can be combined with a [member max_distance] value " +"greater than [code]0.0[/code] to achieve linear attenuation clamped to a " +"sphere of a defined size." +msgstr "" +"不根据距离衰减响度。与 [AudioStreamPlayer] 不同,声音仍会在位置上被听到。" +"[constant ATTENUATION_DISABLED] 可以与大于 [code]0.0[/code] 的 [member " +"max_distance] 值结合使用,以实现线性衰减,限制在定义的球体大小。" + msgid "Disables doppler tracking." msgstr "禁用多普勒跟踪。" +msgid "Executes doppler tracking in idle step." +msgstr "在空闲步骤中执行多普勒跟踪。" + +msgid "Executes doppler tracking in physics step." +msgstr "在物理步骤中执行多普勒跟踪。" + +msgid "Returns the stream at the specified index." +msgstr "返回指定索引处的流。" + +msgid "Move a stream from one index to another." +msgstr "将流从一个索引移动到另一个索引。" + +msgid "Remove the stream at the specified index." +msgstr "移除指定索引处的流。" + +msgid "Set the AudioStream at the specified index." +msgstr "设置指定索引处的 AudioStream。" + +msgid "" +"The intensity of random pitch variation. A value of 1 means no variation." +msgstr "随机音高变化的强度。值为 1 表示没有变化。" + +msgid "" +"The intensity of random volume variation. A value of 0 means no variation." +msgstr "随机音量变化的强度。值为 0 表示没有变化。" + +msgid "The number of streams in the stream pool." +msgstr "流池中流的数量。" + msgid "Stores audio data loaded from WAV files." msgstr "存储从 WAV 文件加载的音频数据。" @@ -5069,6 +12161,9 @@ msgstr "" "[b]注意:[/b]该属性只影响按钮的视觉表现。无论该属性的值是多少,信号都会在同一" "时刻发出。" +msgid "[Shortcut] associated to the button." +msgstr "与该按钮关联的 [Shortcut]。" + msgid "" "If [code]true[/code], the button will add information about its shortcut in " "the tooltip." @@ -5136,6 +12231,9 @@ msgstr "" "这提供了一个默认的材质,具有多种渲染功能和属性,无需编写着色器代码。详情请看" "下面的教程。" +msgid "Standard Material 3D" +msgstr "标准 3D 材质" + msgid "Returns [code]true[/code], if the specified [enum Feature] is enabled." msgstr "如果指定的 [enum Feature] 被启用,返回 [code]true[/code]。" @@ -5158,6 +12256,15 @@ msgstr "" "用或禁用多个标志。也可以通过将相应成员设置为 [code]true[/code] 来启用标志。选" "项见 [enum Flags] 枚举值。" +msgid "The type of alpha antialiasing to apply. See [enum AlphaAntiAliasing]." +msgstr "要应用的 Alpha 抗锯齿类型。见 [enum AlphaAntiAliasing]。" + +msgid "" +"The hashing scale for Alpha Hash. Recommended values between [code]0[/code] " +"and [code]2[/code]." +msgstr "" +"Alpha Hash 的哈希比例。推荐 [code]0[/code] 和 [code]2[/code] 之间的值。" + msgid "" "The strength of the anisotropy effect. This is multiplied by [member " "anisotropy_flowmap]'s alpha channel if a texture is defined there and the " @@ -5166,6 +12273,24 @@ 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). " @@ -5343,9 +12468,6 @@ msgid "" "distance." msgstr "如果为 [code]true[/code],则无论距离远近,对象都以相同的尺寸呈现。" -msgid "Grows object vertices in the direction of their normals." -msgstr "沿着法线的方向生长对象顶点。" - msgid "" "A high value makes the material appear more like a metal. Non-metals use " "their albedo as the diffuse color and add diffuse to the specular " @@ -5379,14 +12501,14 @@ msgstr "" "效果的信息时,这很有用。例如,如果您将金属效果存储在红色通道中,将粗糙度存储" "在蓝色通道中,将环境遮挡存储在绿色通道中,就可以减少您使用的纹理数量。" +msgid "The width of the shape outine." +msgstr "形状轮廓的宽度。" + msgid "" "If [code]true[/code], depth testing is disabled and the object will be drawn " "in render order." msgstr "如果为 [code]true[/code],深度测试被禁用,对象将按渲染顺序绘制。" -msgid "If [code]true[/code], normal mapping is enabled." -msgstr "如果为 [code]true[/code],则启用法线映射。" - msgid "The strength of the normal map's effect." msgstr "法线贴图的效果强度。" @@ -5463,6 +12585,22 @@ 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 " @@ -5517,13 +12655,13 @@ msgid "Texture specifying per-pixel emission color." msgstr "指定每个像素发射颜色的纹理。" msgid "Texture specifying per-pixel normal vector." -msgstr "指定每像素法向量的纹理。" +msgstr "指定每个像素法向量的纹理。" msgid "Texture specifying per-pixel rim value." msgstr "指定每个像素边缘值的纹理。" msgid "Texture specifying per-pixel clearcoat value." -msgstr "指定每像素清漆值的纹理。" +msgstr "指定每个像素清漆值的纹理。" msgid "" "Texture specifying per-pixel flowmap direction for use with [member " @@ -5533,14 +12671,23 @@ msgstr "指定每个像素流图方向的纹理,用于 [member anisotropy]。" msgid "Texture specifying per-pixel ambient occlusion value." msgstr "指定每个像素环境光遮蔽的纹理。" +msgid "Texture specifying per-pixel height." +msgstr "指定每个像素高度的纹理。" + msgid "Texture specifying per-pixel subsurface scattering." -msgstr "指定每个像素的次表面散射的纹理。" +msgstr "指定每个像素次表面散射的纹理。" + +msgid "Texture specifying per-pixel transmittance for subsurface scattering." +msgstr "指定每个像素用于次表面散射的透射率的纹理。" + +msgid "Texture specifying per-pixel backlight color." +msgstr "指定每个像素背光颜色的纹理。" msgid "Texture specifying per-pixel refraction strength." msgstr "指定每个像素折射强度的纹理。" msgid "Texture specifying per-pixel detail mask blending value." -msgstr "指定每像素细节蒙版混合值的纹理。" +msgstr "指定每个像素细节蒙版混合值的纹理。" msgid "Texture specifying per-pixel detail color." msgstr "指定每个像素细节颜色的纹理。" @@ -5548,8 +12695,69 @@ msgstr "指定每个像素细节颜色的纹理。" msgid "Texture specifying per-pixel detail normal." msgstr "指定每个像素细节法线的纹理。" +msgid "Texture holding ambient occlusion, roughness, and metallic." +msgstr "保存环境光遮蔽、粗糙度和金属度信息的纹理。" + msgid "Represents the size of the [enum TextureParam] enum." -msgstr "表示 [enum TextureParam] 枚举的大小。" +msgstr "代表 [enum TextureParam] 枚举的大小。" + +msgid "" +"The texture filter reads from the nearest pixel only. The simplest and " +"fastest method of filtering, but the texture will look pixelized." +msgstr "" +"纹理过滤器仅读取最邻近的像素。最简单快速的过滤方法,但纹理看起来会像素化。" + +msgid "" +"The texture filter blends between the nearest 4 pixels. Use this when you " +"want to avoid a pixelated style, but do not want mipmaps." +msgstr "" +"纹理过滤器在最邻近的 4 个像素之间混合。如果你想要避免像素化风格,但又不想使" +"用 mipmap,那么请使用这个选项。" + +msgid "" +"The texture filter reads from the nearest pixel in the nearest mipmap. The " +"fastest way to read from textures with mipmaps." +msgstr "" +"纹理过滤器读取最邻近的 mipmap 中的最邻近的像素。带有 mipmap 的纹理的最快读取" +"方法。" + +msgid "" +"The texture filter blends between the nearest 4 pixels and between the " +"nearest 2 mipmaps. Use this for most cases as mipmaps are important to " +"smooth out pixels that are far from the camera." +msgstr "" +"纹理过滤器在最邻近的 4 个像素和最邻近的 2 个 mipmap 之间混合。请在大多数情况" +"下使用,因为 mipmap 对于平滑远离相机的像素很重要。" + +msgid "" +"The texture filter reads from the nearest pixel, but selects a mipmap based " +"on the angle between the surface and the camera view. This reduces artifacts " +"on surfaces that are almost in line with the camera. The anisotropic " +"filtering level can be changed by adjusting [member ProjectSettings." +"rendering/textures/default_filters/anisotropic_filtering_level]." +msgstr "" +"纹理过滤器读取最邻近的像素,但会根据表面和相机视图之间的夹角选择 mipmap。可以" +"减少几乎与相机成一直线的表面的不自然情况。各向异性过滤级别可以通过调整 " +"[member ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level] 来改变。" + +msgid "" +"The texture filter blends between the nearest 4 pixels and selects a mipmap " +"based on the angle between the surface and the camera view. This reduces " +"artifacts on surfaces that are almost in line with the camera. This is the " +"slowest of the filtering options, but results in the highest quality " +"texturing. The anisotropic filtering level can be changed by adjusting " +"[member ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level]." +msgstr "" +"纹理过滤器在最邻近的 4 个像素之间进行混合,并会根据表面和相机视图之间的夹角选" +"择 mipmap。可以减少几乎与相机成一直线的表面的不自然情况。这是过滤选项中最慢的" +"一个,但可以得到最高质量的纹理。各向异性过滤级别可以通过调整 [member " +"ProjectSettings.rendering/textures/default_filters/" +"anisotropic_filtering_level] 来改变。" + +msgid "Represents the size of the [enum TextureFilter] enum." +msgstr "代表 [enum TextureFilter] 枚举的大小。" msgid "Use [code]UV[/code] with the detail texture." msgstr "使用 [code]UV[/code] 与细节纹理。" @@ -5557,6 +12765,12 @@ msgstr "使用 [code]UV[/code] 与细节纹理。" msgid "Use [code]UV2[/code] with the detail texture." msgstr "使用 [code]UV2[/code] 与细节纹理。" +msgid "Represents the size of the [enum Transparency] enum." +msgstr "代表 [enum Transparency] 枚举的大小。" + +msgid "Represents the size of the [enum ShadingMode] enum." +msgstr "代表 [enum ShadingMode] 枚举的大小。" + msgid "Constant for setting [member emission_enabled]." msgstr "用于设置 [member emission_enabled] 的常量。" @@ -5575,9 +12789,18 @@ msgstr "用于设置 [member anisotropy_enabled] 的常量。" msgid "Constant for setting [member ao_enabled]." msgstr "用于设置 [member ao_enabled] 的常量。" +msgid "Constant for setting [member heightmap_enabled]." +msgstr "用于设置 [member heightmap_enabled] 的常量。" + msgid "Constant for setting [member subsurf_scatter_enabled]." msgstr "用于设置 [member subsurf_scatter_enabled] 的常量。" +msgid "Constant for setting [member subsurf_scatter_transmittance_enabled]." +msgstr "用于设置 [member subsurf_scatter_transmittance_enabled] 的常量。" + +msgid "Constant for setting [member backlight_enabled]." +msgstr "用于设置 [member backlight_enabled] 的常量。" + msgid "Constant for setting [member refraction_enabled]." msgstr "用于设置 [member refraction_enabled] 的常量。" @@ -5585,7 +12808,7 @@ msgid "Constant for setting [member detail_enabled]." msgstr "用于设置 [member detail_enabled] 的常量。" msgid "Represents the size of the [enum Feature] enum." -msgstr "表示 [enum Feature] 枚举的大小。" +msgstr "代表 [enum Feature] 枚举的大小。" msgid "" "Default blend mode. The color of the object is blended over the background " @@ -5601,8 +12824,22 @@ msgstr "从背景中减去对象的颜色。" msgid "The color of the object is multiplied by the background." msgstr "对象的颜色与背景相乘。" -msgid "No culling is performed." -msgstr "不进行剔除。" +msgid "Disables Alpha AntiAliasing for the material." +msgstr "禁用该材质的 Alpha 抗锯齿。" + +msgid "" +"Enables AlphaToCoverage. Alpha values in the material are passed to the " +"AntiAliasing sample mask." +msgstr "" +"启用 AlphaToCoverage。材质中的 Alpha 值会被传递到 AntiAliasing 采样遮罩。" + +msgid "" +"Enables AlphaToCoverage and forces all non-zero alpha values to [code]1[/" +"code]. Alpha values in the material are passed to the AntiAliasing sample " +"mask." +msgstr "" +"启用 AlphaToCoverage 并将所有非零的 alpha 值强制设为 [code]1[/code]。材质中" +"的 Alpha 值会被传递到 AntiAliasing 采样遮罩。" msgid "Set [code]ALBEDO[/code] to the per-vertex color specified in the mesh." msgstr "将 [code]ALBEDO[/code] 设置为网格中指定的每顶点颜色。" @@ -5648,7 +12885,7 @@ msgid "Enables the shadow to opacity feature." msgstr "启用阴影到不透明度功能。" msgid "Represents the size of the [enum Flags] enum." -msgstr "表示 [enum Flags] 枚举的大小。" +msgstr "代表 [enum Flags] 枚举的大小。" msgid "Default diffuse scattering algorithm." msgstr "默认的漫反射散射算法。" @@ -5668,9 +12905,6 @@ msgstr "默认镜面反射斑点。" msgid "Toon blob which changes size based on roughness." msgstr "基于粗糙度更改大小的 Toon 斑点。" -msgid "No specular blob." -msgstr "无镜面反射斑点。" - msgid "Billboard mode is disabled." msgstr "广告牌模式被禁用。" @@ -5706,29 +12940,28 @@ msgid "" "using the alpha channel." msgstr "根据每个像素与相机的距离,使用 Alpha 通道平滑地淡化对象。" -msgid "" -"Smoothly fades the object out based on each pixel's distance from the camera " -"using a dither approach. Dithering discards pixels based on a set pattern to " -"smoothly fade without enabling transparency. On certain hardware this can be " -"faster than [constant DISTANCE_FADE_PIXEL_ALPHA]." -msgstr "" -"根据每个像素与相机的距离,使用抖动方法平滑地淡化对象。抖动会根据设定的模式丢" -"弃像素,在不启用透明的情况下平滑淡化。在某些硬件上比 [constant " -"DISTANCE_FADE_PIXEL_ALPHA] 更快。" - -msgid "" -"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 "" -"根据对象与相机的距离,使用抖动的方法平滑地淡化对象。抖动根据设定的模式丢弃像" -"素,在不启用透明度的情况下平滑淡化。在某些硬件上可能比 [constant " -"DISTANCE_FADE_PIXEL_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 "矩阵与变换" @@ -5741,11 +12974,21 @@ msgstr "矩阵变换演示" msgid "2.5D Demo" msgstr "2.5D 演示" +msgid "Constructs a default-initialized [Basis] set to [constant IDENTITY]." +msgstr "构造默认初始化为 [constant IDENTITY] 的 [Basis] 。" + msgid "Constructs a [Basis] as a copy of the given [Basis]." msgstr "构造给定 [Basis] 的副本。" +msgid "" +"Constructs a pure rotation basis matrix, rotated around the given [param " +"axis] by [param angle] (in radians). The axis must be a normalized vector." +msgstr "" +"构造纯旋转的基矩阵,围绕给定的轴 [param axis] 旋转 [param angle](单位为弧" +"度)。该轴必须是归一化向量。" + msgid "Constructs a pure rotation basis matrix from the given quaternion." -msgstr "根据给定的四元数构造一个纯旋转基矩阵。" +msgstr "根据给定的四元数构造纯旋转的基矩阵。" msgid "Constructs a basis matrix from 3 axis vectors (matrix columns)." msgstr "从 3 个轴向量(矩阵列)构造一个基矩阵。" @@ -5776,6 +13019,19 @@ 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 " @@ -5846,6 +13102,9 @@ msgid "" "transformation." msgstr "在变换中使用时,会沿 Z 轴翻转某物的基。" +msgid "Transforms (multiplies) the [Vector3] by the given [Basis] matrix." +msgstr "使用给定的 [Basis] 矩阵变换(乘)该 [Vector3]。" + msgid "Boolean matrix." msgstr "布尔矩阵。" @@ -5867,6 +13126,9 @@ msgstr "返回位图在指定位置的值。" msgid "Returns bitmap's dimensions." msgstr "返回位图的尺寸。" +msgid "Resizes the image to [param new_size]." +msgstr "将该图像的大小修改为 [param new_size]。" + msgid "" "Sets the bitmap's element at the specified position, to the specified value." msgstr "将位图中指定位置的元素设置为指定值。" @@ -5911,6 +13173,9 @@ msgstr "" "如果节点没有父节点,返回节点的 [member rest] [code]Transform2D[/code],或者返" "回它相对于父节点的放松姿势。" +msgid "Sets the length of the bone in the [code]Bone2D[/code] node." +msgstr "设置该 [code]Bone2D[/code] 节点中骨骼的长度。" + msgid "" "Rest transform of the bone. You can reset the node's transforms to this " "value using [method apply_rest]." @@ -5920,12 +13185,248 @@ msgstr "" msgid "A node that will attach to a bone." msgstr "会附着在骨骼上的节点。" +msgid "The index of the attached bone." +msgstr "所附着骨骼的索引。" + msgid "The name of the attached bone." -msgstr "附着骨骼的名称。" +msgstr "所附着骨骼的名称。" + +msgid "Bone map for retargeting." +msgstr "用于重定向的骨骼映射。" + +msgid "" +"This class contains a hashmap that uses a list of bone names in " +"[SkeletonProfile] as key names.\n" +"By assigning the actual [Skeleton3D] bone name as the key value, it maps the " +"[Skeleton3D] to the [SkeletonProfile]." +msgstr "" +"这个类中有一个哈希表,使用 [SkeletonProfile] 中的骨骼名称作为键名。\n" +"将实际的 [Skeleton3D] 骨骼名赋为键值后,就会将 [Skeleton3D] 映射到 " +"[SkeletonProfile]。" + +msgid "Retargeting 3D Skeletons" +msgstr "重定向 3D 骨架" + +msgid "" +"Returns a skeleton bone name is mapped to [param profile_bone_name].\n" +"In the retargeting process, the returned bone name is the bone name of the " +"source skeleton." +msgstr "" +"返回与配置中的某个骨骼名称 [param profile_bone_name] 映射的骨架中的骨骼名" +"称。\n" +"在重定向过程中,设置的骨骼名称是源骨架中骨骼的名称。" + +msgid "" +"Maps a skeleton bone name to [param profile_bone_name].\n" +"In the retargeting process, the setting bone name is the bone name of the " +"source skeleton." +msgstr "" +"将骨架中的某个骨骼名称映射到配置中的骨骼名称 [param profile_bone_name]。\n" +"在重定向过程中,设置的骨骼名称是源骨架中骨骼的名称。" + +msgid "" +"A [SkeletonProfile] of the mapping target. Key names in the [BoneMap] are " +"synchronized with it." +msgstr "映射目标的 [SkeletonProfile]。[BoneMap] 中的键名与此同步。" msgid "Boolean built-in type." msgstr "布尔型内置型。" +msgid "" +"Boolean is a built-in type. There are two boolean values: [code]true[/code] " +"and [code]false[/code]. You can think of it as a switch with on or off (1 or " +"0) setting. Booleans are used in programming for logic in condition " +"statements, like [code]if[/code] statements.\n" +"Booleans can be directly used in [code]if[/code] statements. The code below " +"demonstrates this on the [code]if can_shoot:[/code] line. You don't need to " +"use [code]== true[/code], you only need [code]if can_shoot:[/code]. " +"Similarly, use [code]if not can_shoot:[/code] rather than [code]== false[/" +"code].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"\n" +"func shoot():\n" +" if _can_shoot:\n" +" pass # Perform shooting actions here.\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot)\n" +" {\n" +" // Perform shooting actions here.\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The following code will only create a bullet if both conditions are met: " +"action \"shoot\" is pressed and if [code]can_shoot[/code] is [code]true[/" +"code].\n" +"[b]Note:[/b] [code]Input.is_action_pressed(\"shoot\")[/code] is also a " +"boolean that is [code]true[/code] when \"shoot\" is pressed and [code]false[/" +"code] when \"shoot\" isn't pressed.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"\n" +"func shoot():\n" +" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n" +" create_bullet()\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"\n" +"public void Shoot()\n" +"{\n" +" if (_canShoot && Input.IsActionPressed(\"shoot\"))\n" +" {\n" +" CreateBullet();\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The following code will set [code]can_shoot[/code] to [code]false[/code] and " +"start a timer. This will prevent player from shooting until the timer runs " +"out. Next [code]can_shoot[/code] will be set to [code]true[/code] again " +"allowing player to shoot once again.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var _can_shoot = true\n" +"@onready var _cool_down = $CoolDownTimer\n" +"\n" +"func shoot():\n" +" if _can_shoot and Input.is_action_pressed(\"shoot\"):\n" +" create_bullet()\n" +" _can_shoot = false\n" +" _cool_down.start()\n" +"\n" +"func _on_cool_down_timer_timeout():\n" +" _can_shoot = true\n" +"[/gdscript]\n" +"[csharp]\n" +"private bool _canShoot = true;\n" +"private Timer _coolDown;\n" +"\n" +"public override void _Ready()\n" +"{\n" +" _coolDown = GetNode(\"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] 的副本。" @@ -5948,6 +13449,62 @@ msgstr "" msgid "Base class for box containers." msgstr "盒式容器的基类。" +msgid "" +"Arranges child [Control] nodes vertically or horizontally, and rearranges " +"them automatically when their minimum size changes." +msgstr "" +"将子级 [Control] 节点垂直或水平排列,在它们的最小尺寸发生变化时会自动重新排" +"列。" + +msgid "" +"Adds a [Control] node to the box as a spacer. If [param begin] is " +"[code]true[/code], it will insert the [Control] node in front of all other " +"children." +msgstr "" +"添加 [Control] 节点作为间隔。如果 [param begin] 为 [code]true[/code],则会将" +"该 [Control] 节点添加到所有其他节点之前。" + +msgid "" +"The alignment of the container's children (must be one of [constant " +"ALIGNMENT_BEGIN], [constant ALIGNMENT_CENTER], or [constant ALIGNMENT_END])." +msgstr "" +"该容器子节点的对齐方式(必须是 [constant ALIGNMENT_BEGIN]、[constant " +"ALIGNMENT_CENTER]、[constant ALIGNMENT_END] 之一)。" + +msgid "" +"If [code]true[/code], the [BoxContainer] will arrange its children " +"vertically, rather than horizontally.\n" +"Can't be changed when using [HBoxContainer] and [VBoxContainer]." +msgstr "" +"如果为 [code]true[/code],则该 [BoxContainer] 会将子节点垂直排列,否则会水平" +"排列。\n" +"使用 [HBoxContainer] 和 [VBoxContainer] 时无法改变。" + +msgid "" +"The child controls will be arranged at the beginning of the container, i.e. " +"top if orientation is vertical, left if orientation is horizontal (right for " +"RTL layout)." +msgstr "" +"子控件会被排列在该容器的开头,如果是垂直朝向则为顶部,如果是水平朝向则为左侧" +"(RTL 布局时为右侧)。" + +msgid "The child controls will be centered in the container." +msgstr "子控件会在该容器里居中。" + +msgid "" +"The child controls will be arranged at the end of the container, i.e. bottom " +"if orientation is vertical, right if orientation is horizontal (left for RTL " +"layout)." +msgstr "" +"子控件会被排列在该容器的末尾,如果是垂直朝向则为底部,如果是水平朝向则为右侧" +"(RTL 布局时为左侧)。" + +msgid "The space between the [BoxContainer]'s elements, in pixels." +msgstr "[BoxContainer] 元素之间的距离,单位为像素。" + +msgid "Generate an axis-aligned box [PrimitiveMesh]." +msgstr "生成轴对齐盒 [PrimitiveMesh]。" + msgid "Number of extra edge loops inserted along the Z axis." msgstr "沿 Z 轴插入的额外边缘环的数量。" @@ -5963,6 +13520,81 @@ msgstr "3D 动力学角色演示" msgid "Standard themed Button." msgstr "标准主题按钮。" +msgid "" +"Button is the standard themed button. It can contain text and an icon, and " +"will display them according to the current [Theme].\n" +"[b]Example of creating a button and assigning an action when pressed by code:" +"[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var button = Button.new()\n" +" button.text = \"Click me\"\n" +" button.pressed.connect(self._button_pressed)\n" +" add_child(button)\n" +"\n" +"func _button_pressed():\n" +" print(\"Hello world!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var button = new Button();\n" +" button.Text = \"Click me\";\n" +" button.Pressed += ButtonPressed;\n" +" AddChild(button);\n" +"}\n" +"\n" +"private void ButtonPressed()\n" +"{\n" +" GD.Print(\"Hello world!\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"Buttons (like all Control nodes) can also be created in the editor, but some " +"situations may require creating them from code.\n" +"See also [BaseButton] which contains common properties and methods " +"associated with this node.\n" +"[b]Note:[/b] Buttons do not interpret touch input and therefore don't " +"support multitouch, since mouse emulation can only press one button at a " +"given time. Use [TouchScreenButton] for buttons that trigger gameplay " +"movement or actions, as [TouchScreenButton] supports multitouch." +msgstr "" +"Button 是标准的主题按钮。它可以包含文字和图标,并根据当前的 [Theme] 显示。\n" +"[b]通过代码创建一个按钮并指定一个在按下时的动作的例子:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _ready():\n" +" var button = Button.new()\n" +" button.text = \"Click me\"\n" +" button.pressed.connect(self._button_pressed)\n" +" add_child(button)\n" +"\n" +"func _button_pressed():\n" +" print(\"Hello world!\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _Ready()\n" +"{\n" +" var button = new Button();\n" +" button.Text = \"Click me\";\n" +" button.Pressed += ButtonPressed;\n" +" AddChild(button);\n" +"}\n" +"\n" +"private void ButtonPressed()\n" +"{\n" +" GD.Print(\"Hello world!\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"按钮(与所有控件节点一样)也可以在编辑器中创建,但某些情况下可能需要从代码中" +"创建它们。\n" +"另请参阅 [BaseButton],其中包含与此节点相关联的通用属性和方法。\n" +"[b]注意:[/b]按钮不处理触摸输入,因此不支持多点触控,因为模拟鼠标在给定时间只" +"能按下一个按钮。将 [TouchScreenButton] 用于触发游戏移动或动作的按钮,因为 " +"[TouchScreenButton] 支持多点触控。" + msgid "OS Test Demo" msgstr "操作系统测试演示" @@ -5982,43 +13614,106 @@ msgstr "启用后,按钮的图标将展开/收缩以适应按钮的大小, msgid "Flat buttons don't display decoration." msgstr "平面按钮不显示装饰。" +msgid "" +"Language code used for line-breaking and text shaping algorithms, if left " +"empty current locale is used instead." +msgstr "语言代码,用于断行和文本塑形算法,如果留空则使用当前区域设置。" + msgid "The button's text that will be displayed inside the button's area." -msgstr "按钮的文字,将显示在按钮的区域内。" +msgstr "该按钮的文本,将显示在按钮的区域内。" + +msgid "Base text writing direction." +msgstr "基础文本书写方向。" msgid "Default text [Color] of the [Button]." -msgstr "[Button] 的默认文本 [Color]。" +msgstr "该 [Button] 的默认文本 [Color]。" msgid "Text [Color] used when the [Button] is disabled." -msgstr "禁用 [Button] 时使用的文本 [Color]。" +msgstr "该 [Button] 处于禁用状态时,使用的文本 [Color]。" msgid "" "Text [Color] used when the [Button] is focused. Only replaces the normal " "text color of the button. Disabled, hovered, and pressed states take " "precedence over this color." msgstr "" -"当 [Button] 获得焦点时使用的文本 [Color]。只取代按钮的正常文本颜色。禁用、悬" -"停和按下状态优先于这个颜色。" +"该 [Button] 处于聚焦状态时,使用的文本 [Color]。只替换该按钮的正常文本颜色。" +"禁用、悬停、按下状态优先于这个颜色。" msgid "Text [Color] used when the [Button] is being hovered." -msgstr "悬停 [Button] 时使用的文本 [Color]。" +msgstr "该 [Button] 处于悬停状态时,使用的文本 [Color]。" + +msgid "Text [Color] used when the [Button] is being hovered and pressed." +msgstr "该 [Button] 处于悬停并按下状态时,使用的文本 [Color]。" + +msgid "The tint of text outline of the [Button]." +msgstr "该 [Button] 的文本轮廓的着色。" msgid "Text [Color] used when the [Button] is being pressed." -msgstr "正在按下 [Button] 时使用的文本 [Color] 。" +msgstr "该 [Button] 处于按下状态时,使用的文本 [Color] 。" + +msgid "Icon modulate [Color] used when the [Button] is disabled." +msgstr "该 [Button] 处于禁用状态时,使用的图标调制 [Color]。" + +msgid "" +"Icon modulate [Color] used when the [Button] is focused. Only replaces the " +"normal modulate color of the button. Disabled, hovered, and pressed states " +"take precedence over this color." +msgstr "" +"该 [Button] 处于聚焦状态时,使用的图标调制 [Color]。仅替换该按钮的正常调制颜" +"色。禁用、悬停和按下状态优先于这个颜色。" + +msgid "Icon modulate [Color] used when the [Button] is being hovered." +msgstr "该 [Button] 处于悬停状态时,使用的图标调制[Color]。" + +msgid "" +"Icon modulate [Color] used when the [Button] is being hovered and pressed." +msgstr "该 [Button] 处于悬停并按下按下状态时,使用的图标调制 [Color]。" + +msgid "Default icon modulate [Color] of the [Button]." +msgstr "该 [Button] 的默认图标调制 [Color]。" + +msgid "Icon modulate [Color] used when the [Button] is being pressed." +msgstr "该 [Button] 处于按下状态时,使用的图标调制 [Color]。" + +msgid "" +"The horizontal space between [Button]'s icon and text. Negative values will " +"be treated as [code]0[/code] when used." +msgstr "" +"[Button] 的图标和文本之间的水平间距。使用时会将负值当作 [code]0[/code]。" msgid "[Font] of the [Button]'s text." -msgstr "[Button] 文本的 [Font]。" +msgstr "该 [Button] 文本的 [Font]。" + +msgid "Font size of the [Button]'s text." +msgstr "该 [Button] 文本的字体大小。" msgid "[StyleBox] used when the [Button] is disabled." -msgstr "当 [Button] 被禁用时,使用的 [StyleBox]。" +msgstr "该 [Button] 处于禁用状态时使用的 [StyleBox]。" + +msgid "" +"[StyleBox] used when the [Button] is focused. The [code]focus[/code] " +"[StyleBox] is displayed [i]over[/i] the base [StyleBox], so a partially " +"transparent [StyleBox] should be used to ensure the base [StyleBox] remains " +"visible. A [StyleBox] that represents an outline or an underline works well " +"for this purpose. To disable the focus visual effect, assign a " +"[StyleBoxEmpty] resource. Note that disabling the focus visual effect will " +"harm keyboard/controller navigation usability, so this is not recommended " +"for accessibility reasons." +msgstr "" +"该 [Button] 处于聚焦状态时使用的 [StyleBox]。[code]focus[/code] [StyleBox] 显" +"示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 [StyleBox],确保基础 " +"[StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以很好地实现这个目的。要" +"禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注意,禁用聚焦的视觉效果会" +"影响使用键盘/手柄进行导航的可用性,所以出于可访问性的原因,不建议这样做。" msgid "[StyleBox] used when the [Button] is being hovered." -msgstr "悬停 [Button] 时使用的 [StyleBox]。" +msgstr "该 [Button] 处于悬停状态时使用的 [StyleBox]。" msgid "Default [StyleBox] for the [Button]." -msgstr "[Button] 的默认 [StyleBox]。" +msgstr "该 [Button] 的默认 [StyleBox]。" msgid "[StyleBox] used when the [Button] is being pressed." -msgstr "按下 [Button] 时使用的 [StyleBox]。" +msgstr "该 [Button] 处于按下状态时使用的 [StyleBox]。" msgid "Group of Buttons." msgstr "按钮组。" @@ -6029,20 +13724,343 @@ msgstr "返回当前按下的按钮。" msgid "Emitted when one of the buttons of the group is pressed." msgstr "当该组中的一个按钮被按下时触发。" +msgid "" +"Built-in type representing a method in an object instance or a standalone " +"function." +msgstr "内置类型,代表对象实例中的某个方法,或者某个独立函数。" + +msgid "" +"[Callable] is a built-in [Variant] type that represents a function. It can " +"either be a method within an [Object] instance, or a standalone function not " +"related to any object, like a lambda function. Like all [Variant] types, it " +"can be stored in variables and passed to other functions. It is most " +"commonly used for signal callbacks.\n" +"[b]Example:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func print_args(arg1, arg2, arg3 = \"\"):\n" +" prints(arg1, arg2, arg3)\n" +"\n" +"func test():\n" +" var callable = Callable(self, \"print_args\")\n" +" callable.call(\"hello\", \"world\") # Prints \"hello world \".\n" +" callable.call(Vector2.UP, 42, callable) # Prints \"(0, -1) 42 Node(node." +"gd)::print_args\".\n" +" callable.call(\"invalid\") # Invalid call, should have at least 2 " +"arguments.\n" +"[/gdscript]\n" +"[csharp]\n" +"// Default parameter values are not supported.\n" +"public void PrintArgs(Variant arg1, Variant arg2, Variant arg3 = default)\n" +"{\n" +" GD.PrintS(arg1, arg2, arg3);\n" +"}\n" +"\n" +"public void Test()\n" +"{\n" +" // Invalid calls fail silently.\n" +" Callable callable = new Callable(this, MethodName.PrintArgs);\n" +" callable.Call(\"hello\", \"world\"); // Default parameter values are not " +"supported, should have 3 arguments.\n" +" callable.Call(Vector2.Up, 42, callable); // Prints \"(0, -1) 42 " +"Node(Node.cs)::PrintArgs\".\n" +" callable.Call(\"invalid\"); // Invalid call, should have 3 arguments.\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"In GDScript, it's possible to create lambda functions within a method. " +"Lambda functions are custom callables that are not associated with an " +"[Object] instance. Optionally, lambda functions can also be named. The name " +"will be displayed in the debugger, or when calling [method get_method].\n" +"[codeblock]\n" +"func _init():\n" +" var my_lambda = func (message):\n" +" print(message)\n" +"\n" +" # Prints Hello everyone!\n" +" my_lambda.call(\"Hello everyone!\")\n" +"\n" +" # Prints \"Attack!\", when the button_pressed signal is emitted.\n" +" button_pressed.connect(func(): print(\"Attack!\"))\n" +"[/codeblock]" +msgstr "" +"可调用体 [Callable] 是内置的 [Variant] 类型,代表某个函数。可以是 [Object] 实" +"例中的某个方法,也可以是与对象无关的独立函数,比如 lambda 函数。和所有 " +"[Variant] 类型一样可以保存在变量里,传递给其他函数。最常用于信号回调。\n" +"[b]示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func print_args(arg1, arg2, arg3 = \"\"):\n" +" prints(arg1, arg2, arg3)\n" +"\n" +"func test():\n" +" var callable = Callable(self, \"print_args\")\n" +" callable.call(\"hello\", \"world\") # 输出 \"hello world \".\n" +" callable.call(Vector2.UP, 42, callable) # 输出 \"(0, -1) 42 Node(node." +"gd)::print_args\".\n" +" callable.call(\"invalid\") # 无效调用,应当至少有 2 个参数。\n" +"[/gdscript]\n" +"[csharp]\n" +"// 不支持参数默认值。\n" +"public void PrintArgs(Variant arg1, Variant arg2, Variant arg3 = default)\n" +"{\n" +" GD.PrintS(arg1, arg2, arg3);\n" +"}\n" +"\n" +"public void Test()\n" +"{\n" +" // Invalid calls fail silently.\n" +" Callable callable = new Callable(this, MethodName.PrintArgs);\n" +" callable.Call(\"hello\", \"world\"); // 不支持参数默认值,应当有 3 个参" +"数。\n" +" callable.Call(Vector2.Up, 42, callable); // 输出 \"(0, -1) 42 Node(Node." +"cs)::PrintArgs\".\n" +" callable.Call(\"invalid\"); // 无效调用,应当有 3 个参数。\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"GDScript 中可以在方法里创建 lambda 函数。Lambda 函数是自定义的可调用体,不与 " +"[Object] 实例关联。也可以为 Lambda 函数命名。该名称会显示在调试器中,也会在 " +"[method get_method] 中使用。\n" +"[codeblock]\n" +"func _init():\n" +" var my_lambda = func (message):\n" +" print(message)\n" +"\n" +" # 输出 大家好呀!\n" +" my_lambda.call(\"大家好呀!\")\n" +"\n" +" # 发出 button_pressed 信号时输出 \"全军出击!\"。\n" +" button_pressed.connect(func(): print(\"全军出击!\"))\n" +"[/codeblock]" + msgid "Constructs an empty [Callable], with no object nor method bound." msgstr "构造空的 [Callable],没有绑定对象和方法。" msgid "Constructs a [Callable] as a copy of the given [Callable]." msgstr "构造给定 [Callable] 的副本。" +msgid "" +"Creates a new [Callable] for the method named [param method] in the " +"specified [param object]." +msgstr "" +"创建新的 [Callable],使用指定对象 [param object] 中名为 [param method] 的方" +"法。" + +msgid "" +"Returns a copy of this [Callable] with one or more arguments bound. When " +"called, the bound arguments are passed [i]after[/i] the arguments supplied " +"by [method call]." +msgstr "" +"返回该 [Callable] 的副本,绑定其中的一个或多个参数。调用时,被绑定的参数在提" +"供给 [method call] 的参数[i]之后[/i]传递。" + +msgid "" +"Returns a copy of this [Callable] with one or more arguments bound, reading " +"them from an array. When called, the bound arguments are passed [i]after[/i] " +"the arguments supplied by [method call]." +msgstr "" +"返回该 [Callable] 的副本,绑定其中的一个或多个参数,参数从数组中读取。调用" +"时,被绑定的参数在提供给 [method call] 的参数[i]之后[/i]传递。" + +msgid "" +"Calls the method represented by this [Callable]. Arguments can be passed and " +"should match the method's signature." +msgstr "" +"调用该 [Callable] 所代表的方法。可以传递参数,必须与该方法的签名相匹配。" + +msgid "" +"Calls the method represented by this [Callable] in deferred mode, i.e. " +"during the idle frame. Arguments can be passed and should match the method's " +"signature.\n" +"[codeblock]\n" +"func _ready():\n" +" grab_focus.call_deferred()\n" +"[/codeblock]" +msgstr "" +"使用延迟模式调用该 [Callable] 所代表的方法,即在空闲帧中调用。可以传递参数," +"必须与该方法的签名相匹配。\n" +"[codeblock]\n" +"func _ready():\n" +" grab_focus.call_deferred()\n" +"[/codeblock]" + +msgid "" +"Calls the method represented by this [Callable]. Unlike [method call], this " +"method expects all arguments to be contained inside the [param arguments] " +"[Array]." +msgstr "" +"调用该 [Callable] 所代表的方法。与 [method call] 不同,这个方法需要所有参数都" +"放在 [param arguments] [Array] 之中。" + +msgid "" +"Return the bound arguments (as long as [method get_bound_arguments_count] is " +"greater than zero), or empty (if [method get_bound_arguments_count] is less " +"than or equal to zero)." +msgstr "" +"返回绑定的参数(只要 [method get_bound_arguments_count] 大于零)或者空数组" +"(如果 [method get_bound_arguments_count] 小于等于零)。" + +msgid "" +"Returns the total amount of arguments bound (or unbound) via successive " +"[method bind] or [method unbind] calls. If the amount of arguments unbound " +"is greater than the ones bound, this function returns a value less than zero." +msgstr "" +"返回通过成功调用 [method bind] 或 [method unbind] 绑定(或解绑)参数的总数。" +"如果解绑参数的总数比绑定参数大,则这个函数的返回值小于零。" + +msgid "" +"Returns the name of the method represented by this [Callable]. If the " +"callable is a lambda function, returns the function's name." +msgstr "" +"返回该 [Callable] 所代表的方法的名称。如果该可调用体是 lambda 函数,则返回该" +"函数的名称。" + +msgid "Returns the object on which this [Callable] is called." +msgstr "返回该 [Callable] 所调用的对象。" + +msgid "" +"Returns the ID of this [Callable]'s object (see [method Object." +"get_instance_id])." +msgstr "返回该 [Callable] 中对象的 ID(见 [method Object.get_instance_id])。" + +msgid "" +"Returns the 32-bit hash value of this [Callable]'s object.\n" +"[b]Note:[/b] [Callable]s with equal content will always produce identical " +"hash values. However, the reverse is not true. Returning identical hash " +"values does [i]not[/i] imply the callables are equal, because different " +"callables can have identical hash values due to hash collisions. The engine " +"uses a 32-bit hash algorithm for [method hash]." +msgstr "" +"返回该 [Callable] 对象的 32 位哈希值。\n" +"[b]注意:[/b]内容相同的 [Callable] 哈希值始终相同。反之则不然,返回的哈希值相" +"同[i]并不[/i]意味着可调用体相等,因为不同的可调用体可能由于哈希冲突而具有相同" +"的哈希值。引擎在 [method hash] 中使用 32 位哈希算法。" + +msgid "" +"Returns [code]true[/code] if this [Callable] is a custom callable. Custom " +"callables are created from [method bind] or [method unbind]. In GDScript, " +"lambda functions are also custom callables." +msgstr "" +"如果该 [Callable] 为自定义可调用体,则返回 [code]true[/code]。自定义可调用体" +"是由 [method bind] 或 [method unbind] 创建的。在 GDScript 中,lambda 函数也是" +"自定义可调用体。" + +msgid "" +"Returns [code]true[/code] if this [Callable] has no target to call the " +"method on." +msgstr "如果该 [Callable] 没有调用方法的目标,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if this [Callable] is a standard callable. This " +"method is the opposite of [method is_custom]. Returns [code]false[/code] if " +"this callable is a lambda function." +msgstr "" +"如果该 [Callable] 为标准可调用体,则返回 [code]true[/code]。这个方法与 " +"[method is_custom] 相对。如果该可调用体为 lambda 函数,则返回 [code]false[/" +"code]。" + +msgid "" +"Returns [code]true[/code] if the callable's object exists and has a valid " +"method name assigned, or is a custom callable." +msgstr "" +"如果该可调用体的对象存在,且分配了有效的方法名,或者为自定义可调用体,则返回 " +"[code]true[/code]。" + +msgid "" +"Perform an RPC (Remote Procedure Call). This is used for multiplayer and is " +"normally not available, unless the function being called has been marked as " +"[i]RPC[/i]. Calling this method on unsupported functions will result in an " +"error. See [method Node.rpc]." +msgstr "" +"执行 RPC(Remote Procedure Call,远程过程调用)。用于多人游戏,一般不可用,除" +"非所调用的函数有 [i]RPC[/i] 标记。在不支持的方法上调用该方法会导致出错。见 " +"[method Node.rpc]。" + +msgid "" +"Perform an RPC (Remote Procedure Call) on a specific peer ID (see " +"multiplayer documentation for reference). This is used for multiplayer and " +"is normally not available unless the function being called has been marked " +"as [i]RPC[/i]. Calling this method on unsupported functions will result in " +"an error. See [method Node.rpc_id]." +msgstr "" +"针对特定的对等体 ID(请参阅多人游戏文档)执行 RPC(Remote Procedure Call,远" +"程过程调用)。用于多人游戏,一般不可用,除非所调用的函数有 [i]RPC[/i] 标记。" +"在不支持的方法上调用该方法会导致出错。见 [method Node.rpc_id]。" + +msgid "" +"Returns a copy of this [Callable] with the arguments unbound, as defined by " +"[param argcount]. Calling the returned [Callable] will call the method " +"without the extra arguments that are supplied in the [Callable] on which you " +"are calling this method." +msgstr "" +"返回该 [Callable] 的副本,解绑若干个参数,个数由 [param argcount] 定义。调用" +"返回的 [Callable] 时,会去除所提供参数中的额外参数,再对原 [Callable] 的方法" +"进行调用。" + +msgid "Returns [code]true[/code] if both [Callable]s invoke different targets." +msgstr "如果两个 [Callable] 调用的目标不同,则返回 [code]true[/code]。" + +msgid "" +"Returns [code]true[/code] if both [Callable]s invoke the same custom target." +msgstr "如果两个 [Callable] 调用的自定义目标相同,则返回 [code]true[/code]。" + msgid "Calls the specified method after optional delay." msgstr "在可选的延迟之后调用指定的方法。" +msgid "" +"Makes the callback call delayed by given time in seconds.\n" +"[b]Example:[/b]\n" +"[codeblock]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_callback(queue_free).set_delay(2) #this will call queue_free() " +"after 2 seconds\n" +"[/codeblock]" +msgstr "" +"让该回调延迟给定的时间,单位为秒。\n" +"[b]示例:[/b]\n" +"[codeblock]\n" +"var tween = get_tree().create_tween()\n" +"tween.tween_callback(queue_free).set_delay(2) # 会在 2 秒后调用 " +"queue_free()\n" +"[/codeblock]" + msgid "Camera node for 2D scenes." msgstr "2D 场景的相机节点。" +msgid "" +"Camera node for 2D scenes. It forces the screen (current layer) to scroll " +"following this node. This makes it easier (and faster) to program scrollable " +"scenes than manually changing the position of [CanvasItem]-based nodes.\n" +"Cameras register themselves in the nearest [Viewport] node (when ascending " +"the tree). Only one camera can be active per viewport. If no viewport is " +"available ascending the tree, the camera will register in the global " +"viewport.\n" +"This node is intended to be a simple helper to get things going quickly, but " +"more functionality may be desired to change how the camera works. To make " +"your own custom camera node, inherit it from [Node2D] and change the " +"transform of the canvas by setting [member Viewport.canvas_transform] in " +"[Viewport] (you can obtain the current [Viewport] by using [method Node." +"get_viewport]).\n" +"Note that the [Camera2D] node's [code]position[/code] doesn't represent the " +"actual position of the screen, which may differ due to applied smoothing or " +"limits. You can use [method get_screen_center_position] to get the real " +"position." +msgstr "" +"用于 2D 场景的相机节点。它强制屏幕(当前层)跟随该节点滚动。与手动改变基于 " +"[CanvasItem] 节点的坐标相比,这使得对可滚动场景进行编程更加容易和快捷。\n" +"相机会在最近的 [Viewport](在上层树时)节点中注册自己。每个视口只能激活一个相" +"机。如果树上没有可用的视口,相机将在全局视口中注册。\n" +"这个节点旨在成为简单的辅助工具,让事情便捷,但可能需要更多的功能来改变相机的" +"工作方式。要制作自定义相机节点,则从 [Node2D] 继承,并通过设置 [Viewport] 中" +"的 [member Viewport.canvas_transform] 来改变画布的变换(你可以通过使用 " +"[method Node.get_viewport] 获得当前的 [Viewport])。\n" +"请注意,[Camera2D] 节点的 [code]position[/code] 并不代表屏幕的实际位置,这可" +"能会因应用的平滑或限制而有所不同。可以使用 [method " +"get_screen_center_position] 获取真实位置。" + msgid "2D Isometric Demo" -msgstr "2D 等轴测演示" +msgstr "2D 等轴演示" msgid "2D HDR Demo" msgstr "2D HDR 演示" @@ -6053,6 +14071,22 @@ msgstr "将相机与跟踪的节点对齐。" msgid "Forces the camera to update scroll immediately." msgstr "强制相机立即更新滚动。" +msgid "" +"Returns the specified [enum Side]'s margin. See also [member " +"drag_bottom_margin], [member drag_top_margin], [member drag_left_margin], " +"and [member drag_right_margin]." +msgstr "" +"返回指定边 [enum Side] 的边距。另见 [member drag_bottom_margin]、[member " +"drag_top_margin]、[member drag_left_margin] 和 [member drag_right_margin]。" + +msgid "" +"Returns the camera limit for the specified [enum Side]. See also [member " +"limit_bottom], [member limit_top], [member limit_left], and [member " +"limit_right]." +msgstr "" +"返回指定边 [enum Side] 的相机极限。另见 [member limit_bottom]、[member " +"limit_top]、[member limit_left] 和 [member limit_right]。" + msgid "The Camera2D's anchor point. See [enum AnchorMode] constants." msgstr "Camera2D 的锚点。见 [enum AnchorMode] 常量。" @@ -6094,6 +14128,21 @@ 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 " @@ -6136,6 +14185,9 @@ msgstr "" "返回世界空间中的 3D 坐标,即通过逆相机投影在 [Viewport] 矩形上投影一个点的结" "果。这对于以原点、法线,投射光线形式用于对象相交或拾取很有用。" +msgid "The [CameraAttributes] to use for this camera." +msgstr "该相机所使用的 [CameraAttributes]。" + msgid "" "The culling mask that describes which 3D render layers are rendered by this " "camera." @@ -6259,6 +14311,9 @@ msgstr "" "url]。与这些物体相比,该相机的相对速度的变化会影响音频的感知方式(改变音频的 " "[member AudioStreamPlayer3D.pitch_scale])。" +msgid "Parent class for camera settings." +msgstr "相机设置的父类。" + msgid "" "If [code]true[/code], enables the tonemapping auto exposure mode of the " "scene renderer. If [code]true[/code], the renderer will automatically " @@ -6278,6 +14333,9 @@ msgid "" "camera to perform auto exposure." msgstr "自动曝光效果的速度。影响相机执行自动曝光所需的时间。" +msgid "Physically-based camera settings." +msgstr "基于物理的相机设置。" + msgid "" "A camera feed gives you access to a single physical camera attached to your " "device." @@ -6401,6 +14459,65 @@ msgstr "" "我们要访问 [CameraFeed] 中的哪个图像,如果相机图像被分割成 Y 和 CbCr 分量,这" "一点很重要。" +msgid "" +"Child [CanvasItem] nodes of a [CanvasGroup] are drawn as a single object. It " +"allows to e.g. draw overlapping translucent 2D nodes without blending (set " +"[member CanvasItem.self_modulate] property of [CanvasGroup] to achieve this " +"effect).\n" +"[b]Note:[/b] The [CanvasGroup] uses a custom shader to read from the " +"backbuffer to draw its children. Assigning a [Material] to the [CanvasGroup] " +"overrides the builtin shader. To duplicate the behavior of the builtin " +"shader in a custom [Shader] use the following:\n" +"[codeblock]\n" +"shader_type canvas_item;\n" +"render_mode unshaded;\n" +"\n" +"uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, " +"filter_nearest;\n" +"\n" +"void fragment() {\n" +" vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0);\n" +"\n" +" if (c.a > 0.0001) {\n" +" c.rgb /= c.a;\n" +" }\n" +"\n" +" COLOR *= c;\n" +"}\n" +"[/codeblock]\n" +"[b]Note:[/b] Since [CanvasGroup] and [member CanvasItem.clip_children] both " +"utilize the backbuffer, children of a [CanvasGroup] who have their [member " +"CanvasItem.clip_children] set to anything other than [constant CanvasItem." +"CLIP_CHILDREN_DISABLED] will not function correctly." +msgstr "" +"[CanvasGroup] 的所有子 [CanvasItem] 节点会作为一个单独的对象绘制。它允许在不" +"混合的情况下绘制重叠的半透明 2D 节点(设置 [CanvasGroup] 的 [member " +"CanvasItem.self_modulate] 属性来实现这一效果)。\n" +"[b]注意:[/b][CanvasGroup] 使用一个自定义着色器从后台缓冲区读取以绘制其子节" +"点。为 [CanvasGroup] 指定一个 [Material] 会覆盖内置着色器。要在自定义 " +"[Shader] 中复制内置着色器的行为,请使用以下方法:\n" +"[codeblock]\n" +"shader_type canvas_item;\n" +"render_mode unshaded;\n" +"\n" +"uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, " +"filter_nearest;\n" +"\n" +"void fragment() {\n" +" vec4 c = textureLod(screen_texture, SCREEN_UV, 0.0);\n" +"\n" +" if (c.a > 0.0001) {\n" +" c.rgb /= c.a;\n" +" }\n" +"\n" +" COLOR *= c;\n" +"}\n" +"[/codeblock]\n" +"[b]注意:[/b]由于 [CanvasGroup] 和 [member CanvasItem.clip_children] 都使用后" +"台缓冲区,因此 [CanvasGroup] 的子级如果将其 [member CanvasItem." +"clip_children] 设置为 [constant CanvasItem.CLIP_CHILDREN_DISABLED] 以外的其他" +"值将无法正常工作。" + msgid "Base class of anything 2D." msgstr "任何 2D 对象的基类。" @@ -6410,6 +14527,19 @@ msgstr "Viewport 和画布变换" msgid "Custom drawing in 2D" msgstr "2D 中的自定义绘图" +msgid "Draws a string first character using a custom font." +msgstr "使用自定义字体绘制字符串的第一个字符。" + +msgid "Draws a string first character outline using a custom font." +msgstr "使用自定义字体绘制字符串中第一个字符的轮廓。" + +msgid "" +"Draws a colored, filled circle. See also [method draw_arc], [method " +"draw_polyline] and [method draw_polygon]." +msgstr "" +"绘制彩色的实心圆。另见 [method draw_arc]、[method draw_polyline] 和 [method " +"draw_polygon]。" + msgid "" "Draws a [Mesh] in 2D, using the provided texture. See [MeshInstance2D] for " "related documentation." @@ -6435,16 +14565,65 @@ msgstr "" "消息。另请参阅 [method draw_line]、[method draw_polyline]、[method " "draw_polygon]、[method draw_rect]。" -msgid "" -"Sets a custom transform for drawing via components. Anything drawn " -"afterwards will be transformed by this." -msgstr "设置通过组件进行绘图的自定义变换。此后绘制的任何东西都将被它变换。" - msgid "" "Sets a custom transform for drawing via matrix. Anything drawn afterwards " "will be transformed by this." msgstr "设置通过矩阵绘制时的自定义变换。此后绘制的任何东西都将被它变换。" +msgid "" +"Draws [param text] using the specified [param font] at the [param pos] " +"(bottom-left corner using the baseline of the font). The text will have its " +"color multiplied by [param modulate]. If [param width] is greater than or " +"equal to 0, the text will be clipped if it exceeds the specified width.\n" +"[b]Example using the default project font:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# If using this method in a script that redraws constantly, move the\n" +"# `default_font` declaration to a member variable assigned in `_ready()`\n" +"# so the Control is only created once.\n" +"var default_font = ThemeDB.fallback_font\n" +"var default_font_size = ThemeDB.fallback_font_size\n" +"draw_string(default_font, Vector2(64, 64), \"Hello world\", " +"HORIZONTAL_ALIGNMENT_LEFT, -1, default_font_size)\n" +"[/gdscript]\n" +"[csharp]\n" +"// If using this method in a script that redraws constantly, move the\n" +"// `default_font` declaration to a member variable assigned in `_Ready()`\n" +"// so the Control is only created once.\n" +"Font defaultFont = ThemeDB.FallbackFont;\n" +"int defaultFontSize = ThemeDB.FallbackFontSize;\n" +"DrawString(defaultFont, new Vector2(64, 64), \"Hello world\", " +"HORIZONTAL_ALIGNMENT_LEFT, -1, defaultFontSize);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"See also [method Font.draw_string]." +msgstr "" +"使用指定的 [param font] 在 [param pos](使用的字体的基线的左下角)处绘制 " +"[param text]。该文本的颜色将乘以 [param modulate]。如果 [param width] 大于等" +"于 0,则文本超过指定宽度将被裁剪。\n" +"[b]使用项目默认字体的例子:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"# 如果在不断重绘的脚本中使用此方法,\n" +"# 则将 `default_font` 声明移动到在 `_ready()` 中赋值的成员变量中\n" +"# 这样 Control 只创建一次。\n" +"var default_font = ThemeDB.fallback_font\n" +"var default_font_size = ThemeDB.fallback_font_size\n" +"draw_string(default_font, Vector2(64, 64), \"Hello world\", " +"HORIZONTAL_ALIGNMENT_LEFT, -1, default_font_size)\n" +"[/gdscript]\n" +"[csharp]\n" +"// 如果在不断重绘的脚本中使用此方法,\n" +"// 则将 `default_font` 声明移动到在 `_ready()` 中赋值的成员变量中\n" +"// 这样 Control 只创建一次。\n" +"Font defaultFont = ThemeDB.FallbackFont;\n" +"int defaultFontSize = ThemeDB.FallbackFontSize;\n" +"DrawString(defaultFont, new Vector2(64, 64), \"Hello world\", " +"HORIZONTAL_ALIGNMENT_LEFT, -1, defaultFontSize);\n" +"[/csharp]\n" +"[/codeblocks]\n" +"另请参阅 [method Font.draw_string]。" + msgid "Draws a styled rectangle." msgstr "绘制一个样式矩形。" @@ -6480,6 +14659,9 @@ msgstr "返回此项目的变换矩阵。" msgid "Returns the viewport's boundaries as a [Rect2]." msgstr "以 [Rect2] 形式返回视口的边界。" +msgid "Returns an individual bit on the rendering visibility layer." +msgstr "返回渲染可见层上的某个比特位。" + msgid "Returns the [World2D] where this item is in." msgstr "返回此物品所在的 [World2D]。" @@ -6530,31 +14712,61 @@ msgstr "" "[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] 节点的渲染层。" +msgstr "该 [CanvasItem] 的渲染层,用于响应 [Light2D] 节点。" msgid "The material applied to textures on this [CanvasItem]." -msgstr "在此 [CanvasItem] 上应用于纹理的材质。" +msgstr "材质,应用于该 [CanvasItem] 的纹理。" msgid "The color applied to textures on this [CanvasItem]." -msgstr "应用于此 [CanvasItem] 上纹理的颜色。" +msgstr "颜色,应用于该 [CanvasItem] 的纹理。" msgid "" "The color applied to textures on this [CanvasItem]. This is not inherited by " "children [CanvasItem]s." -msgstr "" -"应用于此 [CanvasItem] 上纹理的颜色。子 [CanvasItem] 节点不会继承这个颜色。" +msgstr "颜色,应用于该 [CanvasItem] 的纹理。不会被子级 [CanvasItem] 继承。" msgid "If [code]true[/code], the object draws behind its parent." msgstr "如果为 [code]true[/code],则对象在其父对象后面绘制。" +msgid "The texture filtering mode to use on this [CanvasItem]." +msgstr "在该 [CanvasItem] 上使用的纹理过滤模式。" + +msgid "The texture repeating mode to use on this [CanvasItem]." +msgstr "在该 [CanvasItem] 上使用的纹理重复模式。" + +msgid "" +"If [code]true[/code], this [CanvasItem] will [i]not[/i] inherit its " +"transform from parent [CanvasItem]s. Its draw order will also be changed to " +"make it draw on top of other [CanvasItem]s that do not have [member " +"top_level] set to [code]true[/code]. The [CanvasItem] will effectively act " +"as if it was placed as a child of a bare [Node]." +msgstr "" +"如果为 [code]true[/code],则该 [CanvasItem] [i]不会[/i]继承父级 [CanvasItem] " +"的变换。它的绘制顺序也会发生改变,会在其他没有将 [member top_level] 设置为 " +"[code]true[/code] 的 [CanvasItem] 之上绘制。效果和把该 [CanvasItem] 作为裸 " +"[Node] 的子级一样。" + msgid "" "If [code]true[/code], the parent [CanvasItem]'s [member material] property " "is used as this one's material." msgstr "" -"如果为 [code]true[/code],则将父级[CanvasItem]的[member material]属性用作此项" -"的材质。" +"如果为 [code]true[/code],则将父级 [CanvasItem] 的 [member material] 属性用作" +"此项的材质。" + +msgid "" +"The rendering layer in which this [CanvasItem] is rendered by [Viewport] " +"nodes. A [Viewport] will render a [CanvasItem] if it and all its parents " +"share a layer with the [Viewport]'s canvas cull mask." +msgstr "" +"[Viewport] 节点渲染该 [CanvasItem] 时所使用的渲染层。只有 [CanvasItem] 及其所" +"有父级均与 [Viewport] 的画布剔除遮罩有交集,该 [Viewport] 才会渲染此 " +"[CanvasItem]。" msgid "" "If [code]true[/code], this [CanvasItem] is drawn. The node is only visible " @@ -6570,6 +14782,21 @@ msgstr "" "[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, " @@ -6579,6 +14806,23 @@ msgstr "" "果这个节点的 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] " @@ -6593,6 +14837,14 @@ msgstr "" msgid "Emitted when becoming hidden." msgstr "当隐藏时发出。" +msgid "" +"Emitted when the item's [Rect2] boundaries (position or size) have changed, " +"or when an action is taking place that may have impacted these boundaries (e." +"g. changing [member Sprite2D.texture])." +msgstr "" +"当 CanvasItem 的 [Rect2] 边界(位置或大小)发生变化时,或者当发生可能影响这些" +"边界的操作(例如,更改 [member Sprite2D.texture])时发出。" + msgid "Emitted when the visibility (hidden/visible) changes." msgstr "当可见性(隐藏/可见)更改时发出。" @@ -6622,6 +14874,38 @@ msgstr "该 [CanvasItem] 已进入画布。" msgid "The [CanvasItem] has exited the canvas." msgstr "该 [CanvasItem] 已退出画布。" +msgid "The [CanvasItem] will inherit the filter from its parent." +msgstr "该 [CanvasItem] 将从其父级继承过滤器。" + +msgid "Texture will not repeat." +msgstr "纹理不会重复。" + +msgid "Texture will repeat normally." +msgstr "纹理将正常重复。" + +msgid "" +"Texture will repeat in a 2x2 tiled mode, where elements at even positions " +"are mirrored." +msgstr "纹理将以 2x2 平铺模式重复,其中偶数位置的元素会被镜像。" + +msgid "Represents the size of the [enum TextureRepeat] enum." +msgstr "代表 [enum TextureRepeat] 枚举的大小。" + +msgid "" +"Parent is used for the purposes of clipping only. Child is clipped to the " +"parent's visible area, parent is not drawn." +msgstr "父级仅用于裁剪目的。子级被裁剪到父级的可见区域,不绘制父级。" + +msgid "" +"Parent is used for clipping child, but parent is also drawn underneath child " +"as normal before clipping child to its visible area." +msgstr "" +"父级用于裁剪子级,但在将子级剪裁到其可见区域之前,父级也像往常一样绘制在子级" +"下方。" + +msgid "Represents the size of the [enum ClipChildrenMode] enum." +msgstr "代表 [enum ClipChildrenMode] 枚举的大小。" + msgid "A material for [CanvasItem]s." msgstr "[CanvasItem]的材质。" @@ -6642,14 +14926,52 @@ 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] 时,该" -"属性才会在编辑器中使用并可见。" +"[b]注意:[/b] 该属性只有在 [member particles_animation]为 [code]true[/code] " +"时,才会在编辑器中被使用和可见。" + +msgid "" +"The number of rows in the spritesheet assigned as [Texture2D] for a " +"[GPUParticles2D] or [CPUParticles2D].\n" +"[b]Note:[/b] This property is only used and visible in the editor if [member " +"particles_animation] is [code]true[/code]." +msgstr "" +"[GPUParticles2D] 或 [CPUParticles2D] 指定给 [Texture2D] 的精灵表中拥有的行" +"数。\n" +"[b]注意:[/b] 该属性只有在 [member particles_animation] 为 [code]true[/code] " +"时,才会在编辑器中被使用和可见。" + +msgid "" +"If [code]true[/code], enable spritesheet-based animation features when " +"assigned to [GPUParticles2D] and [CPUParticles2D] nodes. The [member " +"ParticleProcessMaterial.anim_speed_max] or [member CPUParticles2D." +"anim_speed_max] should also be set to a positive value for the animation to " +"play.\n" +"This property (and other [code]particles_anim_*[/code] properties that " +"depend on it) has no effect on other types of nodes." +msgstr "" +"如果 [code]true[/code] ,在分配给 [GPUParticles2D] 和 [CPUParticles2D] 节点" +"时,启用基于精灵表的动画功能。[member ParticleProcessMaterial." +"anim_speed_max] 或 [member CPUParticles2D.anim_speed_max] 也应该设置为正值," +"才能播放动画。\n" +"这个属性(以及其他依赖它的 [code]particles_anim_*[/code] 属性)对其他类型的节" +"点没有影响。" msgid "" "Mix blending mode. Colors are assumed to be independent of the alpha " @@ -6684,6 +15006,24 @@ msgstr "将材质渲染成只有光的样子。" msgid "Canvas drawing layer." msgstr "画布绘图层。" +msgid "" +"Canvas drawing layer. [CanvasItem] nodes that are direct or indirect " +"children of a [CanvasLayer] will be drawn in that layer. The layer is a " +"numeric index that defines the draw order. The default 2D scene renders with " +"index 0, so a [CanvasLayer] with index -1 will be drawn below, and one with " +"index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or " +"above), or backgrounds (in layer -1 or below).\n" +"Embedded [Window]s are placed in layer 1024. CanvasItems in layer 1025 or " +"above appear in front of embedded windows, CanvasItems in layer 1023 or " +"below appear behind embedded windows." +msgstr "" +"画布绘图层。[CanvasLayer] 的直接或间接子级的 [CanvasItem] 节点将在该层中绘" +"制。层是一个决定绘制顺序的数字索引。默认 2D 场景的渲染索引为 0,因此索引为 " +"-1 的 [CanvasLayer] 会在其下方绘制,索引为 1 的则会在其上方绘制。这对于 HUD" +"(在 1+ 层或更高层中)或背景(在 -1 层或更低层中)非常有用。\n" +"内嵌 [Window] 位于 1024 层。位于 1024 层及更高层的 CanvasItem 会出现在内嵌窗" +"口之前,位于 1024 层及更低层的 CanvasItem 会出现在内嵌窗口之后。" + msgid "Canvas layers" msgstr "画布层" @@ -6722,9 +15062,6 @@ msgstr "" "幕上的某个固定位置。\n" "与 [member follow_viewport_scale] 配合可以实现伪 3D 效果。" -msgid "Layer index for draw order. Lower values are drawn first." -msgstr "绘制顺序的图层索引。首先绘制较低的值。" - msgid "The layer's base offset." msgstr "图层的基本偏移量。" @@ -6797,6 +15134,9 @@ msgstr "" msgid "Kinematic character (2D)" msgstr "运动学角色(2D)" +msgid "Using CharacterBody2D" +msgstr "使用 CharacterBody2D" + msgid "2D Kinematic Character Demo" msgstr "2D 运动学角色演示" @@ -6856,6 +15196,9 @@ msgstr "" "1)}\n" "[/codeblock]" +msgid "Font resource used to render glyph." +msgstr "用于渲染字形的字体资源。" + msgid "" "Number of glyphs in the grapheme cluster. This value is set in the first " "glyph of a cluster. Setting this property won't affect drawing." @@ -6913,31 +15256,74 @@ msgstr "渲染复选图标时使用的垂直偏移量(单位为像素)。" msgid "The [Font] to use for the [CheckBox] text." msgstr "该 [CheckBox] 的文本所使用的 [Font]。" +msgid "Font size of the [CheckBox]'s text." +msgstr "该 [CheckBox] 的文本字体大小。" + msgid "The check icon to display when the [CheckBox] is checked." -msgstr "该 [CheckBox] 被勾选时显示的复选图标。" +msgstr "选中图标,该 [CheckBox] 处于选中状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is checked and is disabled." +msgstr "选中图标,该 [CheckBox] 处于选中且禁用状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is configured as a radio " +"button and is checked." +msgstr "选中图标,该 [CheckBox] 被配置为单选按钮并处于选中状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is configured as a radio " +"button, is disabled, and is unchecked." +msgstr "选中图标,该 [CheckBox] 被配置为单选按钮并处于未选且禁用状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is configured as a radio " +"button and is unchecked." +msgstr "选中图标,该 [CheckBox] 被配置为单选按钮并处于未选状态时使用。" msgid "The check icon to display when the [CheckBox] is unchecked." -msgstr "该 [CheckBox] 未被勾选时显示的复选图标。" +msgstr "选中图标,该 [CheckBox] 处于未选状态时使用。" + +msgid "" +"The check icon to display when the [CheckBox] is unchecked and is disabled." +msgstr "选中图标,该 [CheckBox] 处于未选状态时使用。" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is disabled." -msgstr "该 [CheckBox] 被禁用时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于禁用状态时使用。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckBox] is focused. " +"The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base " +"[StyleBox], so a partially transparent [StyleBox] should be used to ensure " +"the base [StyleBox] remains visible. A [StyleBox] that represents an outline " +"or an underline works well for this purpose. To disable the focus visual " +"effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus " +"visual effect will harm keyboard/controller navigation usability, so this is " +"not recommended for accessibility reasons." +msgstr "" +"作为背景显示的 [StyleBox],该 [CheckBox] 处于聚焦状态时使用。[code]focus[/" +"code] [StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" +"很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" +"意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" +"原因,不建议这样做。" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is hovered." -msgstr "该 [CheckBox] 被悬停时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于悬停状态时使用。" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is hovered and " "pressed." -msgstr "该 [CheckBox] 被悬停且被按下时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于悬停且按下状态时使用。" msgid "The [StyleBox] to display as a background." msgstr "作为背景显示的 [StyleBox]。" msgid "" "The [StyleBox] to display as a background when the [CheckBox] is pressed." -msgstr "该 [CheckBox] 被按下时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],该 [CheckBox] 处于按下状态时使用。" msgid "Checkable button. See also [CheckBox]." msgstr "可复选的按钮。另请参阅 [CheckBox]。" @@ -6969,24 +15355,88 @@ msgid "The vertical offset used when rendering the toggle icons (in pixels)." msgstr "渲染切换图标时使用的垂直偏移量(单位为像素)。" msgid "The [Font] to use for the [CheckButton] text." -msgstr "该 [CheckButton] 的文本所使用的 [Font]。" +msgstr "该 [CheckButton] 文本所使用的 [Font]。" + +msgid "Font size of the [CheckButton]'s text." +msgstr "该 [CheckButton] 文本的字体大小。" + +msgid "" +"The icon to display when the [CheckButton] is checked (for left-to-right " +"layouts)." +msgstr "显示的图标,用于该 [CheckButton] 的勾选状态(从左至右布局)。" + +msgid "" +"The icon to display when the [CheckButton] is checked and disabled (for left-" +"to-right layouts)." +msgstr "" +"显示的图标,用于该 [CheckButton] 的勾选且禁用状态(用于从左至右布局)。" + +msgid "" +"The icon to display when the [CheckButton] is checked and disabled (for " +"right-to-left layouts)." +msgstr "" +"显示的图标,用于该 [CheckButton] 的勾选且禁用状态(用于从右至左布局)。" + +msgid "" +"The icon to display when the [CheckButton] is checked (for right-to-left " +"layouts)." +msgstr "显示的图标,用于该 [CheckButton] 的勾选状态(用于从右至左布局)。" + +msgid "" +"The icon to display when the [CheckButton] is unchecked (for left-to-right " +"layouts)." +msgstr "显示的图标,用于该 [CheckButton] 的未选状态(用于从左至右布局)。" + +msgid "" +"The icon to display when the [CheckButton] is unchecked and disabled (for " +"left-to-right layouts)." +msgstr "" +"显示的图标,用于该 [CheckButton] 的未选且禁用状态(用于从左至右布局)。" + +msgid "" +"The icon to display when the [CheckButton] is unchecked and disabled (for " +"right-to-left layouts)." +msgstr "" +"显示的图标,用于该 [CheckButton] 的未选且禁用状态(用于从右至左布局)。" + +msgid "" +"The icon to display when the [CheckButton] is unchecked (for right-to-left " +"layouts)." +msgstr "显示的图标,用于该 [CheckButton] 的未选状态(用于从右至左布局)。" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is disabled." -msgstr "该 [CheckButton] 被禁用时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的禁用状态。" + +msgid "" +"The [StyleBox] to display as a background when the [CheckButton] is focused. " +"The [code]focus[/code] [StyleBox] is displayed [i]over[/i] the base " +"[StyleBox], so a partially transparent [StyleBox] should be used to ensure " +"the base [StyleBox] remains visible. A [StyleBox] that represents an outline " +"or an underline works well for this purpose. To disable the focus visual " +"effect, assign a [StyleBoxEmpty] resource. Note that disabling the focus " +"visual effect will harm keyboard/controller navigation usability, so this is " +"not recommended for accessibility reasons." +msgstr "" +"作为背景显示的 [StyleBox],用于该 [CheckButton] 的聚焦状态。[code]focus[/" +"code] [StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" +"很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" +"意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" +"原因,不建议这样做。" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is hovered." -msgstr "该 [CheckButton] 被悬停时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的悬停状态。" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is hovered " "and pressed." -msgstr "该 [CheckButton] 被悬停且被按下时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的悬停且按下状态。" msgid "" "The [StyleBox] to display as a background when the [CheckButton] is pressed." -msgstr "该 [CheckButton] 被按下时作为背景显示的 [StyleBox]。" +msgstr "作为背景显示的 [StyleBox],用于该 [CheckButton] 的按下状态。" msgid "The circle's radius." msgstr "圆的半径。" @@ -7000,12 +15450,237 @@ msgstr "提供对为每个可用类存储的元数据的访问。" msgid "Returns the names of all the classes available." msgstr "返回所有可用类的名称。" +msgid "" +"Returns the names of all the classes that directly or indirectly inherit " +"from [param class]." +msgstr "返回所有直接或间接继承自 [param class] 的类的名称。" + +msgid "Returns the parent class of [param class]." +msgstr "返回 [param class] 的父类。" + +msgid "Creates an instance of [param class]." +msgstr "创建 [param class] 的实例。" + +msgid "Returns whether this [param class] is enabled or not." +msgstr "返回这个 [param class] 是否已启用。" + +msgid "" +"Returns whether [param inherits] is an ancestor of [param class] or not." +msgstr "返回 [param inherits] 是否为 [param class] 的祖先。" + +msgid "" +"Override this method to define what items in [param candidates] should be " +"displayed.\n" +"Both [param candidates] and the return is a [Array] of [Dictionary], see " +"[method get_code_completion_option] for [Dictionary] content." +msgstr "" +"覆盖此方法以确定应该显示 [param candidates] 中的哪些项。\n" +"参数 [param candidates] 和返回值都是一个 [Array] 的 [Dictionary],而 " +"[Dictionary] 的键值,详见 [method get_code_completion_option]。" + +msgid "" +"Override this method to define what happens when the user requests code " +"completion. If [param force] is true, any checks should be bypassed." +msgstr "" +"覆盖此方法以定义当用户请求代码完成时发生的情况。如果 [param force] 为真,会绕" +"过任何检查。" + +msgid "" +"Adds a brace pair.\n" +"Both the start and end keys must be symbols. Only the start key has to be " +"unique." +msgstr "" +"添加一对大括号。\n" +"开始和结束键都必须是符号。只有开始键必须是唯一的。" + +msgid "" +"Submits an item to the queue of potential candidates for the autocomplete " +"menu. Call [method update_code_completion_options] to update the list.\n" +"[b]Note:[/b] This list will replace all current candidates." +msgstr "" +"将补全项提交到自动补全菜单的潜在候选队列。调用 [method " +"update_code_completion_options] 来更新列表。\n" +"[b]注意:[/b] 此列表将替换所有当前候选。" + +msgid "" +"Returns if the given line is foldable, that is, it has indented lines right " +"below it or a comment / string block." +msgstr "" +"返回给定的行是否可折叠,也就是说,它的正下方有缩进的行或注释 / 字符串块。" + +msgid "Cancels the autocomplete menu." +msgstr "取消自动补全菜单。" + +msgid "Clears all bookmarked lines." +msgstr "清除所有书签行。" + +msgid "Clears all breakpointed lines." +msgstr "清除所有断点行。" + +msgid "Removes all comment delimiters." +msgstr "移除所有注释分隔符。" + +msgid "Clears all executed lines." +msgstr "清除所有已执行的行。" + +msgid "Removes all string delimiters." +msgstr "移除所有字符串分隔符。" + +msgid "" +"Inserts the selected entry into the text. If [param replace] is true, any " +"existing text is replaced rather then merged." +msgstr "" +"将选定的条目插入文本中。如果 [param replace] 为真,任何现有的文本都会被替换," +"而不是合并。" + +msgid "" +"Perform an indent as if the user activated the \"ui_text_indent\" action." +msgstr "执行一个缩进,就像用户触发了“ui_text_indent”动作一样。" + +msgid "" +"Folds all lines that are possible to be folded (see [method can_fold_line])." +msgstr "折叠所有可能被折叠的行(参见 [method can_fold_line])。" + +msgid "Folds the given line, if possible (see [method can_fold_line])." +msgstr "如果可能,折叠给定的行(参见 [method can_fold_line])。" + +msgid "Gets all bookmarked lines." +msgstr "获取所有书签行。" + +msgid "Gets all breakpointed lines." +msgstr "获取所有断点行。" + +msgid "" +"Gets the completion option at [param index]. The return [Dictionary] has the " +"following key-values:\n" +"[code]kind[/code]: [enum CodeCompletionKind]\n" +"[code]display_text[/code]: Text that is shown on the autocomplete menu.\n" +"[code]insert_text[/code]: Text that is to be inserted when this item is " +"selected.\n" +"[code]font_color[/code]: Color of the text on the autocomplete menu.\n" +"[code]icon[/code]: Icon to draw on the autocomplete menu.\n" +"[code]default_value[/code]: Value of the symbol." +msgstr "" +"获取在 [param index] 处的补全选项。返回的 [Dictionary] 有以下键值。\n" +"[code]kind[/code]:[enum CodeCompletionKind]\n" +"[code]display_text[/code] :在自动补全菜单上显示的文本。\n" +"[code]insert_text[/code] :当选中这个选项时要插入的文本。\n" +"[code]font_color[/code]:自动补全菜单上文本的颜色。\n" +"[code]icon[/code] :在自动补全菜单上绘制的图标。\n" +"[code]default_value[/code]:符号的值。" + +msgid "" +"Gets all completion options, see [method get_code_completion_option] for " +"return content." +msgstr "获取所有补全选项,返回值见 [method get_code_completion_option]。" + +msgid "Gets the index of the current selected completion option." +msgstr "获取当前已选定补全项的索引。" + +msgid "Gets the end key for a string or comment region index." +msgstr "获取字符串或注释块索引的结束键。" + +msgid "Gets the start key for a string or comment region index." +msgstr "获取字符串或注释块索引的开始键。" + +msgid "Gets all executing lines." +msgstr "获取所有正在执行的行。" + +msgid "Returns all lines that are current folded." +msgstr "返回当前折叠的所有行。" + +msgid "" +"Returns the full text with char [code]0xFFFF[/code] at the caret location." +msgstr "返回在插入符号位置带有 [code]0xFFFF[/code] 字符的全文。" + +msgid "" +"Returns the full text with char [code]0xFFFF[/code] at the cursor location." +msgstr "返回在光标位置处带有 [code]0xFFFF[/code] 字符的全文。" + +msgid "Returns [code]true[/code] if comment [param start_key] exists." +msgstr "如果注释的 [param start_key] 存在,返回 [code]true[/code] 。" + +msgid "Returns [code]true[/code] if string [param start_key] exists." +msgstr "如果字符串的 [param start_key] 存在,返回 [code]true[/code] 。" + +msgid "" +"Indents selected lines, or in the case of no selection the caret line by one." +msgstr "缩进选定的行,或者在没有选择的情况下,将光标行缩进一个。" + +msgid "Returns whether the line at the specified index is bookmarked or not." +msgstr "返回指定索引处的行是否添加了书签。" + +msgid "Returns whether the line at the specified index is breakpointed or not." +msgstr "返回指定索引处的行是否有断点。" + +msgid "" +"Returns whether the line at the specified index is marked as executing or " +"not." +msgstr "返回指定索引处的行是否标记为正在执行。" + msgid "Returns whether the line at the specified index is folded or not." msgstr "返回指定索引处的行是否折叠。" +msgid "Removes the comment delimiter with [param start_key]." +msgstr "移除带有 [param start_key] 的注释分隔符。" + +msgid "Removes the string delimiter with [param start_key]." +msgstr "移除带有 [param start_key] 的字符串分隔符。" + +msgid "" +"Emits [signal code_completion_requested], if [param force] is true will " +"bypass all checks. Otherwise will check that the caret is in a word or in " +"front of a prefix. Will ignore the request if all current options are of " +"type file path, node path or signal." +msgstr "" +"发出 [signal code_completion_requested],如果 [param force] 为真将绕过所有检" +"查。否则,将检查光标是否在一个词中或在一个前缀的前面。如果当前所有选项都是文" +"件路径、节点路径或信号类型,将忽略该请求。" + +msgid "Sets the current selected completion option." +msgstr "设置当前选定的补全选项。" + +msgid "Sets the code hint text. Pass an empty string to clear." +msgstr "设置代码提示文本。传递一个空字符串来清除。" + +msgid "Sets if the code hint should draw below the text." +msgstr "设置代码提示是否应绘制在文本下方。" + +msgid "Sets the line as bookmarked." +msgstr "将该行设置为书签。" + +msgid "Sets the line as breakpointed." +msgstr "将该行设置为断点。" + +msgid "Sets the line as executing." +msgstr "将该行设置为正在执行。" + msgid "Toggle the folding of the code block at the given line." msgstr "在给定行切换代码块的折叠。" +msgid "Unfolds all lines, folded or not." +msgstr "展开所有行,无论是否被折叠。" + +msgid "Unfolds all lines that were previously folded." +msgstr "展开之前被折叠的所有行。" + +msgid "" +"Unindents selected lines, or in the case of no selection the caret line by " +"one. Same as performing \"ui_text_unindent\" action." +msgstr "" +"解除所选行的缩进,或者在没有选择的情况下,将光标行缩进一个。与触" +"发“ui_text_unindent ”动作相同。" + +msgid "" +"Submits all completion options added with [method " +"add_code_completion_option]. Will try to force the autoccomplete menu to " +"popup, if [param force] is [code]true[/code].\n" +"[b]Note:[/b] This will replace all current candidates." +msgstr "" +"提交所有用 [method add_code_completion_option] 添加的补全选项。如果 [param " +"force] 是 [code]true[/code],将尝试强制弹出自动补全菜单 。\n" +"[b]注意:[/b] 这将取代所有当前的候补选项。" + msgid "Sets the font [Color]." msgstr "设置字体颜色 [Color]。" @@ -7018,6 +15693,46 @@ msgstr "设置行间距。" msgid "Sets the default [Font]." msgstr "设置默认的字体 [Font]。" +msgid "Sets default font size." +msgstr "设置默认的字体大小。" + +msgid "" +"Sets a custom [Texture2D] to draw in the line folding gutter when a line is " +"folded and can be unfolded." +msgstr "" +"当行被折叠且可以展开时,设置要在行折叠装订线中绘制的一个自定义 [Texture2D]。" + +msgid "Sets a custom [Texture2D] to draw at the end of a folded line." +msgstr "设置要绘制在折叠行末尾的一个自定义 [Texture2D]。" + +msgid "Sets a custom [Texture2D] for space text characters." +msgstr "为空格文本字符,设置一个自定义 [Texture2D]。" + +msgid "Sets a custom [Texture2D] for tab text characters." +msgstr "为制表符文本字符,设置一个自定义 [Texture2D]。" + +msgid "[StyleBox] for the code completion popup." +msgstr "用于代码补全弹窗的 [StyleBox]。" + +msgid "" +"Sets the [StyleBox] when in focus. The [code]focus[/code] [StyleBox] is " +"displayed [i]over[/i] the base [StyleBox], so a partially transparent " +"[StyleBox] should be used to ensure the base [StyleBox] remains visible. A " +"[StyleBox] that represents an outline or an underline works well for this " +"purpose. To disable the focus visual effect, assign a [StyleBoxEmpty] " +"resource. Note that disabling the focus visual effect will harm keyboard/" +"controller navigation usability, so this is not recommended for " +"accessibility reasons." +msgstr "" +"设置当获得焦点时的 [StyleBox]。该 [code]focus[/code] [StyleBox] 显示在基础 " +"[StyleBox] [i]之上[/i],因此应使用部分透明的 [StyleBox] 以确保基础 " +"[StyleBox] 保持可见。表示轮廓或下划线的 [StyleBox] 非常适合此目的。要禁用焦点" +"视觉效果,请指定一个 [StyleBoxEmpty] 资源。请注意,禁用焦点视觉效果会破坏键" +"盘 / 控制器导航的可用性,出于可访问性原因,不建议这样做。" + +msgid "Sets the [StyleBox]." +msgstr "设置该 [StyleBox]。" + msgid "Base node for 2D collision objects." msgstr "2D 碰撞对象的基础节点。" @@ -7038,6 +15753,18 @@ msgstr "" "[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." @@ -7105,9 +15832,53 @@ msgstr "" "进入/离开,鼠标位于其中时,就会报告输入事件。要求至少设置一个 [member " "collision_layer] 位。" +msgid "" +"When [member Node.process_mode] is set to [constant Node." +"PROCESS_MODE_DISABLED], remove from the physics simulation to stop all " +"physics interactions with this [CollisionObject2D].\n" +"Automatically re-added to the physics simulation when the [Node] is " +"processed again." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,从物理仿真中移除,停止与此 [CollisionObject2D] 的所有物理交互。\n" +"当该 [Node] 再次被处理时,会自动重新加入到物理仿真中。" + +msgid "" +"When [member Node.process_mode] is set to [constant Node." +"PROCESS_MODE_DISABLED], do not affect the physics simulation." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,不影响物理仿真。" + msgid "Base node for collision objects." msgstr "碰撞对象的基础节点。" +msgid "" +"Receives unhandled [InputEvent]s. [param position] is the location in world " +"space of the mouse pointer on the surface of the shape with index [param " +"shape_idx] and [param normal] is the normal vector of the surface at that " +"point. Connect to the [signal input_event] signal to easily pick up these " +"events.\n" +"[b]Note:[/b] [method _input_event] requires [member input_ray_pickable] to " +"be [code]true[/code] and at least one [member collision_layer] bit to be set." +msgstr "" +"接收未处理的 [InputEvent]。[param position] 是鼠标指针在索引为 [param " +"shape_idx] 的形状表面上的世界空间位置,[param normal] 是该点表面的法向量。连" +"接到 [signal input_event] 信号即可轻松获取这些事件。\n" +"[b]注意:[/b][method _input_event] 要求 [member input_ray_pickable] 为 " +"[code]true[/code],并且至少要设置一个 [member collision_layer] 位。" + +msgid "" +"When [member Node.process_mode] is set to [constant Node." +"PROCESS_MODE_DISABLED], remove from the physics simulation to stop all " +"physics interactions with this [CollisionObject3D].\n" +"Automatically re-added to the physics simulation when the [Node] is " +"processed again." +msgstr "" +"当 [member Node.process_mode] 被设置为 [constant Node.PROCESS_MODE_DISABLED] " +"时,从物理仿真中移除,停止与此 [CollisionObject3D] 的所有物理交互。\n" +"当该 [Node] 再次被处理时,会自动重新加入到物理仿真中。" + msgid "Defines a 2D collision polygon." msgstr "定义 2D 碰撞多边形。" @@ -7142,6 +15913,26 @@ msgstr "碰撞将包括多边形及其包含的区域。" msgid "Collisions will only include the polygon edges." msgstr "碰撞将仅包括多边形边缘。" +msgid "" +"Allows editing a concave or convex collision polygon's vertices on a " +"selected plane. Can also set a depth perpendicular to that plane. This class " +"is only available in the editor. It will not appear in the scene tree at run-" +"time. Creates several [ConvexPolygonShape3D]s at run-time to represent the " +"original polygon using convex decomposition.\n" +"[b]Note:[/b] Since this is an editor-only helper, properties modified during " +"gameplay will have no effect.\n" +"[b]Warning:[/b] A non-uniformly scaled CollisionPolygon3D node will probably " +"not function as expected. Please make sure to keep its scale uniform (i.e. " +"the same on all axes), and change its [member polygon]'s vertices instead." +msgstr "" +"允许在选定平面上编辑凹形或凸形碰撞多边形的顶点。也可以设置垂直于该平面的深" +"度。该类仅在编辑器中可用。它不会在运行时出现在场景树中。在运行时创建多个 " +"[ConvexPolygonShape3D] 以使用凸分解表示原始多边形。\n" +"[b]注意:[/b]由于这是一个仅限编辑器的助手类,因此在游戏过程中修改的属性将无" +"效。\n" +"[b]警告:[/b]非均匀缩放的 CollisionPolygon3D 节点可能无法按预期运行。请确保保" +"持其比例统一(即在所有轴上相同),并改为更改其 [member polygon] 的顶点。" + msgid "" "Length that the resulting collision extends in either direction " "perpendicular to its polygon." @@ -7215,6 +16006,27 @@ msgstr "该碰撞形状拥有的实际形状。" msgid "Node that represents collision shape data in 3D space." msgstr "表示 3D 空间中的碰撞形状数据的节点。" +msgid "" +"Editor facility for creating and editing collision shapes in 3D space. Set " +"the [member shape] property to configure the shape. [b]IMPORTANT[/b]: this " +"is an Editor-only helper to create shapes, use [method CollisionObject3D." +"shape_owner_get_shape] to get the actual shape.\n" +"You can use this node to represent all sorts of collision shapes, for " +"example, add this to an [Area3D] to give it a detection shape, or add it to " +"a [PhysicsBody3D] to create a solid object.\n" +"[b]Warning:[/b] A non-uniformly scaled CollisionShape3D node will probably " +"not function as expected. Please make sure to keep its scale uniform (i.e. " +"the same on all axes), and change the size of its [member shape] resource " +"instead." +msgstr "" +"用于在 3D 空间中创建和编辑碰撞形状的编辑器工具。请设置 [member shape] 属性来" +"配置形状。[b]重要[/b]:这是一个仅供编辑器使用的用于创建形状的助手类,使用 " +"[method CollisionObject3D.shape_owner_get_shape] 来获取实际形状。\n" +"您可以使用此节点来表示各种碰撞形状,例如,将其添加到 [Area3D] 以为其提供检测" +"形状,或将其添加到 [PhysicsBody3D] 以创建实体对象。\n" +"[b]警告:[/b]非均匀缩放的 CollisionShape3D 节点可能无法按预期运行。请确保保持" +"其比例统一(即在所有轴上相同),并改为更改其 [member shape] 资源的大小。" + msgid "" "If this method exists within a script it will be called whenever the shape " "resource has been modified." @@ -7223,6 +16035,42 @@ msgstr "如果脚本中存在此方法,则只要修改形状资源,就会调 msgid "A disabled collision shape has no effect in the world." msgstr "禁用的碰撞形状对世界没有任何影响。" +msgid "Color built-in type, in RGBA format." +msgstr "颜色内置类型,格式为 RGBA。" + +msgid "" +"A color represented in RGBA format by red ([member r]), green ([member g]), " +"blue ([member b]), and alpha ([member a]) components. Each component is a 16-" +"bit floating-point value, usually ranging from 0 to 1. Some properties (such " +"as [member CanvasItem.modulate]) may support values greater than 1, for " +"overbright or High Dynamic Range colors. If you want to supply values in a " +"range of 0 to 255, you should use [method @GDScript.Color8].\n" +"Colors can also be created by name from a set of standardized colors, " +"through the [String] constructor, [method from_string], or by directly " +"fetching the color constants documented here. The standardized color set is " +"based on the [url=https://en.wikipedia.org/wiki/X11_color_names]X11 color " +"names[/url], with the addition of [constant TRANSPARENT].\n" +"[b]Note:[/b] In a boolean context, a Color will evaluate to [code]false[/" +"code] if it's equal to [code]Color(0, 0, 0, 1)[/code] (opaque black). " +"Otherwise, a Color will always evaluate to [code]true[/code].\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"color_constants.png]Color constants cheatsheet[/url]" +msgstr "" +"由红([member r])、绿([member g])、蓝([member b])和 alpha([member a])" +"分量表示的 RGBA 格式的颜色。每个分量都是一个 16 位浮点值,通常介于 0 到 1 之" +"间。对于过亮或高动态范围颜色,某些属性(例如 [member CanvasItem.modulate])可" +"能支持大于 1 的值。使用 [method @GDScript.Color8] 提供 0 到 255 范围内的" +"值。\n" +"也可以通过 [String] 构造函数、[method from_string] 或通过直接获取此处记录的颜" +"色常量,从一组标准化颜色中按名称创建颜色。标准化颜色集基于 [url=https://en." +"wikipedia.org/wiki/X11_color_names]X11 颜色名称[/url],并添加了 [constant " +"TRANSPARENT]。\n" +"[b]注意:[/b]在布尔上下文中,等于 [code]Color(0, 0, 0, 1)[/code](不透明的黑" +"色)的 Color 将被评估为 [code]false[/code]。否则,Color 将始终被评估为 " +"[code]true[/code]。\n" +"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/" +"color_constants.png]Color 常量速查表[/url]" + msgid "2D GD Paint Demo" msgstr "2D GD 画图演示" @@ -7245,6 +16093,157 @@ msgstr "" msgid "Constructs a [Color] as a copy of the given [Color]." msgstr "构造给定 [Color] 的副本。" +msgid "" +"Constructs a [Color] from RGB values, typically between 0.0 and 1.0. [member " +"a] is set to 1.0.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(0.2, 1.0, 0.7) # Similar to `Color8(51, 255, 178, 255)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(0.2f, 1.0f, 0.7f); // Similar to `Color.Color8(51, " +"255, 178, 255)`\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从通常介于 0.0 和 1.0 之间的 RGB 值构造一个 [Color]。[member a] 被设置为 " +"1.0。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(0.2, 1.0, 0.7) # 类似于 `Color8(51, 255, 178, 255)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(0.2f, 1.0f, 0.7f); // 类似于 `Color.Color8(51, 255, " +"178, 255)`\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Constructs a [Color] from RGBA values, typically between 0.0 and 1.0.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(0.2, 1.0, 0.7, 0.8) # Similar to `Color8(51, 255, 178, " +"204)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(0.2f, 1.0f, 0.7f, 0.8f); // Similar to `Color." +"Color8(51, 255, 178, 255, 204)`\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从通常介于 0.0 和 1.0 之间的 RGBA 值构造一个 [Color]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(0.2, 1.0, 0.7, 0.8) # 类似于 `Color8(51, 255, 178, 204)`\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(0.2f, 1.0f, 0.7f, 0.8f); // 类似于 `Color.Color8(51, " +"255, 178, 255, 204)`\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a new color resulting from overlaying this color over the given " +"color. In a painting program, you can imagine it as the [param over] color " +"painted over this color (including alpha).\n" +"[codeblocks]\n" +"[gdscript]\n" +"var bg = Color(0.0, 1.0, 0.0, 0.5) # Green with alpha of 50%\n" +"var fg = Color(1.0, 0.0, 0.0, 0.5) # Red with alpha of 50%\n" +"var blended_color = bg.blend(fg) # Brown with alpha of 75%\n" +"[/gdscript]\n" +"[csharp]\n" +"var bg = new Color(0.0f, 1.0f, 0.0f, 0.5f); // Green with alpha of 50%\n" +"var fg = new Color(1.0f, 0.0f, 0.0f, 0.5f); // Red with alpha of 50%\n" +"Color blendedColor = bg.Blend(fg); // Brown with alpha of 75%\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回将该颜色混合到给定颜色上所产生的新颜色。在绘画程序中,您可以将其想象为在" +"该颜色(包括 alpha)上绘制的 [param over] 颜色。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var bg = Color(0.0, 1.0, 0.0, 0.5) # 50% 不透明的绿色\n" +"var fg = Color(1.0, 0.0, 0.0, 0.5) # 50% 不透明的红色\n" +"var blended_color = bg.blend(fg) # 75% 不透明的棕色\n" +"[/gdscript]\n" +"[csharp]\n" +"var bg = new Color(0.0f, 1.0f, 0.0f, 0.5f); // 50% 不透明的绿色\n" +"var fg = new Color(1.0f, 0.0f, 0.0f, 0.5f); // 50% 不透明的红色\n" +"Color blendedColor = bg.Blend(fg); // 75% 不透明的棕色\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a new color resulting from making this color darker by the specified " +"[param amount] (ratio from 0.0 to 1.0). See also [method lightened].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var green = Color(0.0, 1.0, 0.0)\n" +"var darkgreen = green.darkened(0.2) # 20% darker than regular green\n" +"[/gdscript]\n" +"[csharp]\n" +"var green = new Color(0.0f, 1.0f, 0.0f);\n" +"Color darkgreen = green.Darkened(0.2f); // 20% darker than regular green\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回通过指定 [param amount](从 0.0 到 1.0 的比率)使该颜色变暗而产生的新颜" +"色。另见 [method lightened]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var green = Color(0.0, 1.0, 0.0)\n" +"var darkgreen = green.darkened(0.2) # 比普通的绿色深 20%\n" +"[/gdscript]\n" +"[csharp]\n" +"var green = new Color(0.0f, 1.0f, 0.0f);\n" +"Color darkgreen = green.Darkened(0.2f); // 比普通的绿色深 20%\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns a new color from [param rgba], an HTML hexadecimal color string. " +"[param rgba] is not case-sensitive, and may be prefixed by a hash sign " +"([code]#[/code]).\n" +"[param rgba] must be a valid three-digit or six-digit hexadecimal color " +"string, and may contain an alpha channel value. If [param rgba] does not " +"contain an alpha channel value, an alpha channel value of 1.0 is applied. If " +"[param rgba] is invalid, returns an empty color.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var blue = Color.html(\"#0000ff\") # blue is Color(0.0, 0.0, 1.0, 1.0)\n" +"var green = Color.html(\"#0F0\") # green is Color(0.0, 1.0, 0.0, 1.0)\n" +"var col = Color.html(\"663399cc\") # col is Color(0.4, 0.2, 0.6, 0.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var blue = Color.FromHtml(\"#0000ff\"); // blue is Color(0.0, 0.0, 1.0, " +"1.0)\n" +"var green = Color.FromHtml(\"#0F0\"); // green is Color(0.0, 1.0, 0.0, " +"1.0)\n" +"var col = Color.FromHtml(\"663399cc\"); // col is Color(0.4, 0.2, 0.6, 0.8)\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"从 HTML 十六进制颜色字符串 [param rgba] 返回一个新颜色。[param rgba] 不区分大" +"小写,可以使用哈希符号([code]#[/code])作为前缀。\n" +"[param rgba] 必须是有效的三位或六位十六进制颜色字符串,并且可以包含 alpha 通" +"道值。如果 [param rgba] 不包含 alpha 通道值,则应用 alpha 通道值 1.0。如果 " +"[param rgba] 无效,则返回一个空颜色。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var blue = Color.html(\"#0000ff\") # blue 为 Color(0.0, 0.0, 1.0, 1.0)\n" +"var green = Color.html(\"#0F0\") # green 为 Color(0.0, 1.0, 0.0, 1.0)\n" +"var col = Color.html(\"663399cc\") # col 为 Color(0.4, 0.2, 0.6, 0.8)\n" +"[/gdscript]\n" +"[csharp]\n" +"var blue = Color.FromHtml(\"#0000ff\"); // blue 为 Color(0.0, 0.0, 1.0, " +"1.0)\n" +"var green = Color.FromHtml(\"#0F0\"); // green 为 Color(0.0, 1.0, 0.0, " +"1.0)\n" +"var col = Color.FromHtml(\"663399cc\"); // col 为 Color(0.4, 0.2, 0.6, 0.8)\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Returns the linear interpolation between this color's components and [param " "to]'s components. The interpolation factor [param weight] should be between " @@ -7290,6 +16289,233 @@ msgstr "" "[/csharp]\n" "[/codeblocks]" +msgid "" +"Returns a new color resulting from making this color lighter by the " +"specified [param amount], which should be a ratio from 0.0 to 1.0. See also " +"[method darkened].\n" +"[codeblocks]\n" +"[gdscript]\n" +"var green = Color(0.0, 1.0, 0.0)\n" +"var light_green = green.lightened(0.2) # 20% lighter than regular green\n" +"[/gdscript]\n" +"[csharp]\n" +"var green = new Color(0.0f, 1.0f, 0.0f);\n" +"Color lightGreen = green.Lightened(0.2f); // 20% lighter than regular green\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回通过指定 [param amount](从 0.0 到 1.0 的比率)使该颜色变亮而产生的新颜" +"色。另见 [method darkened]。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var green = Color(0.0, 1.0, 0.0)\n" +"var light_green = green.lightened(0.2) # 比普通的绿色要淡 20%\n" +"[/gdscript]\n" +"[csharp]\n" +"var green = new Color(0.0f, 1.0f, 0.0f);\n" +"Color lightGreen = green.Lightened(0.2f); // 比普通的绿色要淡 20%\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 32-bit integer in ABGR format (each " +"component is 8 bits). ABGR is the reversed version of the default RGBA " +"format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_abgr32()) # Prints 4281565439\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToAbgr32()); // Prints 4281565439\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 ABGR 格式(每个分量为 8 位)的 32 位整数的颜色。ABGR 是默认 RGBA " +"格式的反转版本。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_abgr32()) # 输出 4281565439\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToAbgr32()); // 输出 4281565439\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 64-bit integer in ABGR format (each " +"component is 16 bits). ABGR is the reversed version of the default RGBA " +"format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_abgr64()) # Prints -225178692812801\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToAbgr64()); // Prints -225178692812801\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 ABGR 格式(每个分量为 16 位)的 64 位整数的颜色。ABGR 是默认 RGBA " +"格式的反转版本。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_abgr64()) # 输出 -225178692812801\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToAbgr64()); // 输出 -225178692812801\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 32-bit integer in ARGB format (each " +"component is 8 bits). ARGB is more compatible with DirectX.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_argb32()) # Prints 4294934323\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToArgb32()); // Prints 4294934323\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 ARGB 格式(每个分量为 8 位)的 32 位整数的颜色。ARGB 与 DirectX 更" +"兼容。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_argb32()) # 输出 4294934323\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToArgb32()); // 输出 4294934323\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 64-bit integer in ARGB format (each " +"component is 16 bits). ARGB is more compatible with DirectX.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_argb64()) # Prints -2147470541\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToArgb64()); // Prints -2147470541\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 ARGB 格式(每个分量为 16 位)的 64 位整数的颜色。ARGB 与 DirectX " +"更兼容。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_argb64()) # 输出 -2147470541\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1.0f, 0.5f, 0.2f);\n" +"GD.Print(color.ToArgb64()); // 输出 -2147470541\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to an HTML hexadecimal color [String] in RGBA " +"format, without the hash ([code]#[/code]) prefix.\n" +"Setting [param with_alpha] to [code]false[/code], excludes alpha from the " +"hexadecimal string, using RGB format instead of RGBA format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var white = Color(1, 1, 1, 0.5)\n" +"var with_alpha = white.to_html() # Returns \"ffffff7f\"\n" +"var without_alpha = white.to_html(false) # Returns \"ffffff\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var white = new Color(1, 1, 1, 0.5f);\n" +"string withAlpha = white.ToHtml(); // Returns \"ffffff7f\"\n" +"string withoutAlpha = white.ToHtml(false); // Returns \"ffffff\"\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回将该颜色转换为 RGBA 格式的 HTML 十六进制颜色 [String],不带([code]#[/" +"code])前缀。\n" +"将 [param with_alpha] 设置为 [code]false[/code],会从十六进制字符串中排除 " +"alpha,使用 RGB 格式而不是 RGBA 格式。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var white = Color(1, 1, 1, 0.5)\n" +"var with_alpha = white.to_html() # 返回 \"ffffff7f\"\n" +"var without_alpha = white.to_html(false) # 返回 \"ffffff\"\n" +"[/gdscript]\n" +"[csharp]\n" +"var white = new Color(1, 1, 1, 0.5f);\n" +"string withAlpha = white.ToHtml(); // 返回 \"ffffff7f\"\n" +"string withoutAlpha = white.ToHtml(false); // 返回 \"ffffff\"\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 32-bit integer in RGBA format (each " +"component is 8 bits). RGBA is Godot's default format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_rgba32()) # Prints 4286526463\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1, 0.5f, 0.2f);\n" +"GD.Print(color.ToRgba32()); // Prints 4286526463\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 RGBA 格式(每个分量为 8 位)的 32 位整数的颜色。RGBA 是 Godot 的默" +"认格式。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_rgba32()) # 输出 4286526463\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1, 0.5f, 0.2f);\n" +"GD.Print(color.ToRgba32()); // 输出 4286526463\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Returns the color converted to a 64-bit integer in RGBA format (each " +"component is 16 bits). RGBA is Godot's default format.\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_rgba64()) # Prints -140736629309441\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1, 0.5f, 0.2f);\n" +"GD.Print(color.ToRgba64()); // Prints -140736629309441\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"返回转换为 RGBA 格式(每个分量为 16 位)的 64 位整数的颜色。RGBA 是 Godot 的" +"默认格式。\n" +"[codeblocks]\n" +"[gdscript]\n" +"var color = Color(1, 0.5, 0.2)\n" +"print(color.to_rgba64()) # 输出 -140736629309441\n" +"[/gdscript]\n" +"[csharp]\n" +"var color = new Color(1, 0.5f, 0.2f);\n" +"GD.Print(color.ToRgba64()); // 输出 -140736629309441\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "The color's alpha component, typically on the range of 0 to 1. A value of 0 " "means that the color is fully transparent. A value of 1 means that the color " @@ -7337,6 +16563,9 @@ msgstr "米黄色。" msgid "Bisque color." msgstr "橘黄色。" +msgid "Black color. In GDScript, this is the default value of any color." +msgstr "黑色。在 GDScript 中,这是所有颜色的默认值。" + msgid "Blue color." msgstr "蓝色。" @@ -7703,6 +16932,9 @@ msgstr "蓟色。" msgid "Tomato color." msgstr "番茄色。" +msgid "Transparent color (white with zero alpha)." +msgstr "透明色(Alpha 为零的白色)。" + msgid "Turquoise color." msgstr "松石绿。" @@ -7736,6 +16968,45 @@ msgstr "黄色。" msgid "Yellow green color." msgstr "黄绿色。" +msgid "" +"Returns [code]true[/code] if the colors are not exactly equal.\n" +"[b]Note:[/b] Due to floating-point precision errors, consider using [method " +"is_equal_approx] instead, which is more reliable." +msgstr "" +"如果颜色不完全相等,则返回 [code]true[/code]。\n" +"[b]注意:[/b]由于浮点数精度误差,请考虑改用 [method is_equal_approx],会更可" +"靠。" + +msgid "" +"Multiplies each component of the [Color] by the components of the given " +"[Color]." +msgstr "将该 [Color] 的每个分量乘以给定 [Color] 的对应分量。" + +msgid "Multiplies each component of the [Color] by the given [float]." +msgstr "将该 [Color] 的每个分量乘以给定的 [float]。" + +msgid "Multiplies each component of the [Color] by the given [int]." +msgstr "将该 [Color] 的每个分量乘以给定的 [int]。" + +msgid "" +"Adds each component of the [Color] with the components of the given [Color]." +msgstr "将该 [Color] 的每个分量加上给定 [Color] 的对应分量。" + +msgid "" +"Subtracts each component of the [Color] by the components of the given " +"[Color]." +msgstr "将该 [Color] 的每个分量减去给定 [Color] 的对应分量。" + +msgid "" +"Divides each component of the [Color] by the components of the given [Color]." +msgstr "将该 [Color] 的每个分量除以给定 [Color] 的每个分量。" + +msgid "Divides each component of the [Color] by the given [float]." +msgstr "将该 [Color] 的每个分量除以给定的 [float]。" + +msgid "Divides each component of the [Color] by the given [int]." +msgstr "将该 [Color] 的每个分量除以给定的 [int]。" + msgid "Color picker control." msgstr "取色器控件。" @@ -7870,20 +17141,40 @@ msgstr "[ColorPickerButton] 的图标和文本之间的水平间距。" msgid "[Font] of the [ColorPickerButton]'s text." msgstr "[ColorPickerButton] 文本的 [Font]。" +msgid "Font size of the [ColorPickerButton]'s text." +msgstr "[ColorPickerButton] 文本的字体大小。" + msgid "The background of the color preview rect on the button." msgstr "颜色预览的背景将在按钮上显示。" msgid "[StyleBox] used when the [ColorPickerButton] is disabled." -msgstr "当 [ColorPickerButton] 被禁用时使用的 [StyleBox]。" +msgstr "该 [ColorPickerButton] 处于禁用状态时使用的 [StyleBox]。" + +msgid "" +"[StyleBox] used when the [ColorPickerButton] is focused. The [code]focus[/" +"code] [StyleBox] is displayed [i]over[/i] the base [StyleBox], so a " +"partially transparent [StyleBox] should be used to ensure the base " +"[StyleBox] remains visible. A [StyleBox] that represents an outline or an " +"underline works well for this purpose. To disable the focus visual effect, " +"assign a [StyleBoxEmpty] resource. Note that disabling the focus visual " +"effect will harm keyboard/controller navigation usability, so this is not " +"recommended for accessibility reasons." +msgstr "" +"该 [ColorPickerButton] 处于聚焦状态时使用的 [StyleBox]。[code]focus[/code] " +"[StyleBox] 显示在基础 [StyleBox] [i]之上[/i],所以应该使用部分透明的 " +"[StyleBox],确保基础 [StyleBox] 仍然可见。代表轮廓或下划线的 [StyleBox] 可以" +"很好地实现这个目的。要禁用聚焦的视觉效果,请指定 [StyleBoxEmpty] 资源。请注" +"意,禁用聚焦的视觉效果会影响使用键盘/手柄进行导航的可用性,所以出于可访问性的" +"原因,不建议这样做。" msgid "[StyleBox] used when the [ColorPickerButton] is being hovered." -msgstr "悬停 [ColorPickerButton] 时使用的 [StyleBox]。" +msgstr "该 [ColorPickerButton] 处于悬停状态时使用的 [StyleBox]。" msgid "Default [StyleBox] for the [ColorPickerButton]." -msgstr "[ColorPickerButton] 的默认 [StyleBox]。" +msgstr "该 [ColorPickerButton] 的默认 [StyleBox]。" msgid "[StyleBox] used when the [ColorPickerButton] is being pressed." -msgstr "按下 [ColorPickerButton] 时使用的 [StyleBox]。" +msgstr "该 [ColorPickerButton] 处于按下状态时使用的 [StyleBox]。" msgid "Colored rectangle." msgstr "彩色矩形。" @@ -7895,6 +17186,104 @@ msgstr "" "显示一个用纯色 [member color] 填充的矩形。如果你需要单独显示边框,请考虑使用 " "[ReferenceRect] 代替。" +msgid "" +"The fill color.\n" +"[codeblocks]\n" +"[gdscript]\n" +"$ColorRect.color = Color(1, 0, 0, 1) # Set ColorRect's color to red.\n" +"[/gdscript]\n" +"[csharp]\n" +"GetNode(\"ColorRect\").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 "6-sided texture typically used in 3D rendering, optionally compressed." +msgstr "6 面纹理,通常用于 3D 渲染,可选择压缩。" + +msgid "" +"Array of 6-sided textures typically used in 3D rendering, optionally " +"compressed." +msgstr "6 面纹理的数组,通常用于 3D 渲染,可选择压缩。" + +msgid "Texture with 2 dimensions, optionally compressed." +msgstr "二维纹理,可选择压缩。" + +msgid "Loads the texture from the specified [param path]." +msgstr "从指定的路径 [param path] 加载纹理。" + +msgid "The [CompressedTexture2D]'s file path to a [code].ctex[/code] file." +msgstr "该 [CompressedTexture2D] 的文件路径,指向 [code].ctex[/code] 文件。" + +msgid "Array of 2-dimensional textures, optionally compressed." +msgstr "二维纹理的数组,可选择压缩。" + +msgid "Texture with 3 dimensions, optionally compressed." +msgstr "三维纹理,可选择压缩。" + +msgid "The [CompressedTexture3D]'s file path to a [code].ctex3d[/code] file." +msgstr "该 [CompressedTexture3D] 的文件路径,指向 [code].ctex3d[/code] 文件。" + +msgid "Base class for texture arrays that can optionally be compressed." +msgstr "可压缩纹理数组的基类。" + +msgid "Loads the texture at [param path]." +msgstr "从路径 [param path] 加载纹理。" + +msgid "" +"2D concave polygon shape to be added as a [i]direct[/i] child of a " +"[PhysicsBody2D] or [Area2D] using a [CollisionShape2D] node. It is made out " +"of segments and is optimal for complex polygonal concave collisions. " +"However, it is not advised to use for [RigidBody2D] nodes. A " +"CollisionPolygon2D in convex decomposition mode (solids) or several convex " +"objects are advised for that instead. Otherwise, a concave polygon 2D shape " +"is better for static collisions.\n" +"The main difference between a [ConvexPolygonShape2D] and a " +"[ConcavePolygonShape2D] is that a concave polygon assumes it is concave and " +"uses a more complex method of collision detection, and a convex one forces " +"itself to be convex to speed up collision detection.\n" +"[b]Performance:[/b] Due to its complexity, [ConcavePolygonShape2D] is the " +"slowest collision shape to check collisions against. Its use should " +"generally be limited to level geometry. For convex geometry, using " +"[ConvexPolygonShape2D] will perform better. For dynamic physics bodies that " +"need concave collision, several [ConvexPolygonShape2D]s can be used to " +"represent its collision by using convex decomposition; see " +"[ConvexPolygonShape2D]'s documentation for instructions. However, consider " +"using primitive collision shapes such as [CircleShape2D] or " +"[RectangleShape2D] first.\n" +"[b]Warning:[/b] Using this shape for an [Area2D] (via a [CollisionShape2D] " +"node) may give unexpected results: the area will only detect collisions with " +"the segments in the [ConcavePolygonShape2D] (and not with any \"inside\" of " +"the shape, for example)." +msgstr "" +"使用 [CollisionShape2D] 节点作为 [PhysicsBody2D] 或 [Area2D] 的[i]直接[/i]子" +"节点添加的 2D 凹多边形形状。它由线段组成,最适合复杂的多边形凹面碰撞。但是," +"不建议用于 [RigidBody2D] 节点。建议改用凸分解模式(实体)的 " +"CollisionPolygon2D 或多个凸对象。否则,凹多边形 2D 形状更适合静态碰撞。\n" +"[ConvexPolygonShape2D] 和 [ConcavePolygonShape2D] 之间的主要区别在于,凹多边" +"形假设它是凹的,并使用更复杂的碰撞检测方法,而凸多边形强制自身成为凸面以加速" +"碰撞检测。\n" +"[b]性能:[/b]由于其复杂性,[ConcavePolygonShape2D] 是检查碰撞时最慢的碰撞形" +"状。它的使用通常应限于关卡几何。对于凸几何,使用 [ConvexPolygonShape2D] 会表" +"现更好。对于需要凹碰撞的动态物理实体,可以用几个 [ConvexPolygonShape2D] 来表" +"示它的碰撞,使用凸分解;有关说明,请参阅 [ConvexPolygonShape2D] 的文档。但" +"是,请首先考虑使用原始碰撞形状,例如 [CircleShape2D] 或 " +"[RectangleShape2D]。\n" +"[b]警告:[/b]将该形状用于 [Area2D](通过 [CollisionShape2D] 节点)可能会产生" +"意想不到的结果:该区域将仅检测与 [ConcavePolygonShape2D] 中的线段的碰撞(而非" +"任何诸如形状的“内部”)。" + msgid "" "The array of points that make up the [ConcavePolygonShape2D]'s line segments." msgstr "组成 [ConcavePolygonShape2D] 线段的点的数组。" @@ -7934,7 +17323,7 @@ msgstr "" "如果低于 0.05,则扭曲被锁定。" msgid "Represents the size of the [enum Param] enum." -msgstr "表示 [enum Param] 枚举的大小。" +msgstr "代表 [enum Param] 枚举的大小。" msgid "Helper class to handle INI-style files." msgstr "用于处理 INI 样式文件的辅助类。" @@ -7981,6 +17370,32 @@ msgstr "" msgid "Dialog for confirmation of actions." msgstr "确认动作的对话框。" +msgid "" +"Dialog for confirmation of actions. This dialog inherits from " +"[AcceptDialog], but has by default an OK and Cancel button (in host OS " +"order).\n" +"To get cancel action, you can use:\n" +"[codeblocks]\n" +"[gdscript]\n" +"get_cancel_button().pressed.connect(self.canceled)\n" +"[/gdscript]\n" +"[csharp]\n" +"GetCancelButton().Pressed += Canceled;\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"用于确认操作的对话框。这个对话框继承自 [AcceptDialog],但默认有一个确定和取消" +"按钮(按主机操作系统顺序)。\n" +"要获得取消操作,你可以使用\n" +"[codeblocks]\n" +"[gdscript]\n" +"get_cancel_button().pressed.connect(self.canceled)\n" +"[/gdscript]\n" +"[csharp]\n" +"GetCancelButton().Pressed += Canceled;\n" +"[/csharp]\n" +"[/codeblocks]" + msgid "" "Returns the cancel button.\n" "[b]Warning:[/b] This is a required internal node, removing and freeing it " @@ -8019,12 +17434,418 @@ msgid "" "Notification for when sorting the children, it must be obeyed immediately." msgstr "对子节点进行排序时的通知,必须立即服从。" +msgid "" +"All user interface nodes inherit from Control. A control's anchors and " +"offsets adapt its position and size relative to its parent." +msgstr "" +"所有用户界面节点都继承自 Control(控件)。控件使用锚点和偏移来调整相对于父级" +"的位置和大小。" + +msgid "" +"Base class for all UI-related nodes. [Control] features a bounding rectangle " +"that defines its extents, an anchor position relative to its parent control " +"or the current viewport, and offsets relative to the anchor. The offsets " +"update automatically when the node, any of its parents, or the screen size " +"change.\n" +"For more information on Godot's UI system, anchors, offsets, and containers, " +"see the related tutorials in the manual. To build flexible UIs, you'll need " +"a mix of UI elements that inherit from [Control] and [Container] nodes.\n" +"[b]User Interface nodes and input[/b]\n" +"Godot propagates input events via viewports. Each [Viewport] is responsible " +"for propagating [InputEvent]s to their child nodes. As the [member SceneTree." +"root] is a [Window], this already happens automatically for all UI elements " +"in your game.\n" +"Input events are propagated through the [SceneTree] from the root node to " +"all child nodes by calling [method Node._input]. For UI elements " +"specifically, it makes more sense to override the virtual method [method " +"_gui_input], which filters out unrelated input events, such as by checking z-" +"order, [member mouse_filter], focus, or if the event was inside of the " +"control's bounding box.\n" +"Call [method accept_event] so no other node receives the event. Once you " +"accept an input, it becomes handled so [method Node._unhandled_input] will " +"not process it.\n" +"Only one [Control] node can be in focus. Only the node in focus will receive " +"events. To get the focus, call [method grab_focus]. [Control] nodes lose " +"focus when another node grabs it, or if you hide the node in focus.\n" +"Sets [member mouse_filter] to [constant MOUSE_FILTER_IGNORE] to tell a " +"[Control] node to ignore mouse or touch events. You'll need it if you place " +"an icon on top of a button.\n" +"[Theme] resources change the Control's appearance. If you change the [Theme] " +"on a [Control] node, it affects all of its children. To override some of the " +"theme's parameters, call one of the [code]add_theme_*_override[/code] " +"methods, like [method add_theme_font_override]. You can override the theme " +"with the Inspector.\n" +"[b]Note:[/b] Theme items are [i]not[/i] [Object] properties. This means you " +"can't access their values using [method Object.get] and [method Object.set]. " +"Instead, use the [code]get_theme_*[/code] and [code]add_theme_*_override[/" +"code] methods provided by this class." +msgstr "" +"所有 UI 相关节点的基类。[Control] 具有定义其范围的边界矩形,相对于父控件或当" +"前视口的锚点位置,以及相对于锚点的偏移。当节点、任何父节点或屏幕尺寸发生变化" +"时,偏移就会自动更新。\n" +"更多关于 Godot 的 UI 系统、锚点、偏移和容器的信息,请参阅手册中的相关教程。要" +"构建灵活的 UI,你需要混合使用从 [Control] 和 [Container] 节点继承的 UI 元" +"素。\n" +"[b]用户界面节点与输入[/b]\n" +"Godot 使用视口来传播输入事件。视口负责将 [InputEvent] 传播给它的子节点。因为 " +"[member SceneTree.root] 是 [Window],所以游戏中的所有 UI 元素都会自动进行传" +"播。\n" +"输入事件通过调用 [method Node._input] 在 [SceneTree] 中传播,从根节点传播到所" +"有子节点。对 UI 元素而言,覆盖的最好是 [method _gui_input],可以过滤掉无关的" +"输入事件,例如它会对 Z 顺序、[member mouse_filter]、焦点、事件是否在该控件的" +"边界框内等条件进行检查。\n" +"请调用 [method accept_event],这样其他节点就不会收到该事件。输入被接受后,就" +"会被标记为已处理,[method Node._unhandled_input] 不会对它进行处理。\n" +"只能有一个 [Control] 节点处于焦点。只有处于焦点的节点才会接收到事件。要获得焦" +"点,请调用 [method grab_focus]。导致 [Control] 节点失去焦点的情况有:其他节点" +"获得了焦点、隐藏了聚焦节点。\n" +"将 [member mouse_filter] 设置为 [constant MOUSE_FILTER_IGNORE] 可以让 " +"[Control] 节点忽略鼠标或触摸事件。如果你在按钮上放了一个图标,就会需要用" +"到。\n" +"[Theme] 资源会更改控件的外观。如果你更改了 [Control] 节点上的 [Theme],则会影" +"响其所有子节点。要覆盖某些主题的参数,请调用 [code]add_theme_*_override[/" +"code] 方法,例如 [method add_theme_font_override]。你可以使用检查器覆盖主" +"题。\n" +"[b]注意:[/b]主题项[i]不是[/i] [Object] 的属性。这意味着你无法使用 [method " +"Object.get] 和 [method Object.set] 访问它们的值。请改用这个类的 " +"[code]get_theme_*[/code] 和 [code]add_theme_*_override[/code] 方法。" + +msgid "GUI documentation index" +msgstr "GUI 文档索引" + msgid "Control node gallery" msgstr "控件节点一览" msgid "All GUI Demos" msgstr "所有 GUI 演示" +msgid "" +"Godot calls this method to test if [param data] from a control's [method " +"_get_drag_data] can be dropped at [param at_position]. [param at_position] " +"is local to this control.\n" +"This method should only be used to test the data. Process the data in " +"[method _drop_data].\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" # Check position if it is relevant to you\n" +" # Otherwise, just check data\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"expected\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" // Check position if it is relevant to you\n" +" // Otherwise, just check data\n" +" return data.VariantType == Variant.Type.Dictionary && data." +"AsGodotDictionary().Contains(\"expected\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Godot 调用该方法来测试是否可以将控件的 [method _get_drag_data] 中的 [param " +"data] 放在 [param at_position] 处。[param at_position] 是该控件的局部位置。\n" +"此方法应仅用于测试数据。处理 [method _drop_data] 中的数据。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" # 如果 position 与您相关则检查它\n" +" # 否则,只检查 data\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"expected\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" // 如果 position 与您相关则检查它\n" +" // 否则,只检查 data\n" +" return data.VariantType == Variant.Type.Dictionary && data." +"AsGodotDictionary().Contains(\"expected\");\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Godot calls this method to pass you the [param data] from a control's " +"[method _get_drag_data] result. Godot first calls [method _can_drop_data] to " +"test if [param data] is allowed to drop at [param at_position] where [param " +"at_position] is local to this control.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"color\")\n" +"\n" +"func _drop_data(position, data):\n" +" var color = data[\"color\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" return data.VariantType == Variant.Type.Dictionary && dict." +"AsGodotDictionary().Contains(\"color\");\n" +"}\n" +"\n" +"public override void _DropData(Vector2 atPosition, Variant data)\n" +"{\n" +" Color color = data.AsGodotDictionary()[\"color\"].AsColor();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Godot 调用该方法从控件的 [method _get_drag_data] 结果中向您传递 [param " +"data]。Godot 首先调用 [method _can_drop_data] 来测试是否允许 [param data] 在 " +"[param at_position] 处放置,其中 [param at_position] 是该控件的局部位置。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _can_drop_data(position, data):\n" +" return typeof(data) == TYPE_DICTIONARY and data.has(\"color\")\n" +"\n" +"func _drop_data(position, data):\n" +" var color = data[\"color\"]\n" +"[/gdscript]\n" +"[csharp]\n" +"public override bool _CanDropData(Vector2 atPosition, Variant data)\n" +"{\n" +" return data.VariantType == Variant.Type.Dictionary && dict." +"AsGodotDictionary().Contains(\"color\");\n" +"}\n" +"\n" +"public override void _DropData(Vector2 atPosition, Variant data)\n" +"{\n" +" Color color = data.AsGodotDictionary()[\"color\"].AsColor();\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Godot calls this method to get data that can be dragged and dropped onto " +"controls that expect drop data. Returns [code]null[/code] if there is no " +"data to drag. Controls that want to receive drop data should implement " +"[method _can_drop_data] and [method _drop_data]. [param at_position] is " +"local to this control. Drag may be forced with [method force_drag].\n" +"A preview that will follow the mouse that should represent the data can be " +"set with [method set_drag_preview]. A good time to set the preview is in " +"this method.\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get_drag_data(position):\n" +" var mydata = make_data() # This is your custom method generating the " +"drag data.\n" +" set_drag_preview(make_preview(mydata)) # This is your custom method " +"generating the preview of the drag data.\n" +" return mydata\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Variant _GetDragData(Vector2 atPosition)\n" +"{\n" +" var myData = MakeData(); // This is your custom method generating the " +"drag data.\n" +" SetDragPreview(MakePreview(myData)); // This is your custom method " +"generating the preview of the drag data.\n" +" return myData;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" +msgstr "" +"Godot 调用该方法来获取可以拖放到期望放置数据的控件上的数据。如果没有要拖动的" +"数据,则返回 [code]null[/code]。想要接收拖放数据的控件应该实现 [method " +"_can_drop_data] 和 [method _drop_data]。[param at_position] 是该控件的局部位" +"置。可以使用 [method force_drag] 强制拖动。\n" +"可以使用 [method set_drag_preview] 设置跟随鼠标显示数据的预览。设置预览的好时" +"机就是在这个方法中。\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _get_drag_data(position):\n" +" var mydata = make_data() # This is your custom method generating the " +"drag data.\n" +" set_drag_preview(make_preview(mydata)) # 这是您生成拖动数据预览的自定义方" +"法。\n" +" return mydata\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Variant _GetDragData(Vector2 atPosition)\n" +"{\n" +" var myData = MakeData(); // This is your custom method generating the " +"drag data.\n" +" SetDragPreview(MakePreview(myData)); // 这是您生成拖动数据预览的自定义方" +"法。\n" +" return myData;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]" + +msgid "" +"Virtual method to be implemented by the user. Use this method to process and " +"accept inputs on UI elements. See [method accept_event].\n" +"[b]Example usage for clicking a control:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _gui_input(event):\n" +" if event is InputEventMouseButton:\n" +" if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:\n" +" print(\"I've been clicked D:\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _GuiInput(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseButton mb)\n" +" {\n" +" if (mb.ButtonIndex == MouseButton.Left && mb.Pressed)\n" +" {\n" +" GD.Print(\"I've been clicked D:\");\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"The event won't trigger if:\n" +"* clicking outside the control (see [method _has_point]);\n" +"* control has [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];\n" +"* control is obstructed by another [Control] on top of it, which doesn't " +"have [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];\n" +"* control's parent has [member mouse_filter] set to [constant " +"MOUSE_FILTER_STOP] or has accepted the event;\n" +"* it happens outside the parent's rectangle and the parent has either " +"[member clip_contents] enabled.\n" +"[b]Note:[/b] Event position is relative to the control origin." +msgstr "" +"由用户实现的虚方法。使用此方法处理和接受 UI 元素上的输入。请参阅 [method " +"accept_event]。\n" +"[b]点击控件的用法示例:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _gui_input(event):\n" +" if event is InputEventMouseButton:\n" +" if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:\n" +" print(\"我已被点击 D:\")\n" +"[/gdscript]\n" +"[csharp]\n" +"public override void _GuiInput(InputEvent @event)\n" +"{\n" +" if (@event is InputEventMouseButton mb)\n" +" {\n" +" if (mb.ButtonIndex == MouseButton.Left && mb.Pressed)\n" +" {\n" +" GD.Print(\"我已被点击 D:\");\n" +" }\n" +" }\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"如果出现以下情况,则不会触发该事件:\n" +"* 在控件外点击(参阅[method _has_point]);\n" +"* 控件将 [member mouse_filter] 设置为 [constant MOUSE_FILTER_IGNORE];\n" +"* 控件被其上的另一个 [Control] 阻挡,该控件没有将 [member mouse_filter] 设置" +"为 [constant MOUSE_FILTER_IGNORE];\n" +"* 控件的父级已将 [member mouse_filter] 设置为 [constant MOUSE_FILTER_STOP] 或" +"已接受该事件;\n" +"* 它发生在父级的矩形之外,并且父级已启用 [member clip_contents]。\n" +"[b]注意:[/b]事件位置相对于该控件原点。" + +msgid "" +"Virtual method to be implemented by the user. Returns a [Control] node that " +"should be used as a tooltip instead of the default one. The [param for_text] " +"includes the contents of the [member tooltip_text] property.\n" +"The returned node must be of type [Control] or Control-derived. It can have " +"child nodes of any type. It is freed when the tooltip disappears, so make " +"sure you always provide a new instance (if you want to use a pre-existing " +"node from your scene tree, you can duplicate it and pass the duplicated " +"instance). When [code]null[/code] or a non-Control node is returned, the " +"default tooltip will be used instead.\n" +"The returned node will be added as child to a [PopupPanel], so you should " +"only provide the contents of that panel. That [PopupPanel] can be themed " +"using [method Theme.set_stylebox] for the type [code]\"TooltipPanel\"[/code] " +"(see [member tooltip_text] for an example).\n" +"[b]Note:[/b] The tooltip is shrunk to minimal size. If you want to ensure " +"it's fully visible, you might want to set its [member custom_minimum_size] " +"to some non-zero value.\n" +"[b]Note:[/b] The node (and any relevant children) should be [member " +"CanvasItem.visible] when returned, otherwise, the viewport that instantiates " +"it will not be able to calculate its minimum size reliably.\n" +"[b]Example of usage with a custom-constructed node:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _make_custom_tooltip(for_text):\n" +" var label = Label.new()\n" +" label.text = for_text\n" +" return label\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Control _MakeCustomTooltip(string forText)\n" +"{\n" +" var label = new Label();\n" +" label.Text = forText;\n" +" return label;\n" +"}\n" +"[/csharp]\n" +"[/codeblocks]\n" +"[b]Example of usage with a custom scene instance:[/b]\n" +"[codeblocks]\n" +"[gdscript]\n" +"func _make_custom_tooltip(for_text):\n" +" var tooltip = preload(\"res://some_tooltip_scene.tscn\").instantiate()\n" +" tooltip.get_node(\"Label\").text = for_text\n" +" return tooltip\n" +"[/gdscript]\n" +"[csharp]\n" +"public override Control _MakeCustomTooltip(string forText)\n" +"{\n" +" Node tooltip = ResourceLoader.Load(\"res://" +"some_tooltip_scene.tscn\").Instantiate();\n" +" tooltip.GetNode