summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/classes/@GlobalScope.xml26
-rw-r--r--doc/classes/AcceptDialog.xml6
-rw-r--r--doc/classes/AnimatableBody3D.xml6
-rw-r--r--doc/classes/AnimatedSprite2D.xml2
-rw-r--r--doc/classes/Animation.xml7
-rw-r--r--doc/classes/AnimationMixer.xml8
-rw-r--r--doc/classes/AnimationNode.xml2
-rw-r--r--doc/classes/AnimationNodeAdd3.xml2
-rw-r--r--doc/classes/AnimationNodeAnimation.xml4
-rw-r--r--doc/classes/AnimationNodeBlend2.xml4
-rw-r--r--doc/classes/AnimationNodeBlendSpace2D.xml2
-rw-r--r--doc/classes/AnimationNodeOneShot.xml2
-rw-r--r--doc/classes/AnimationNodeOutput.xml4
-rw-r--r--doc/classes/AnimationNodeSync.xml2
-rw-r--r--doc/classes/AnimationNodeTimeScale.xml2
-rw-r--r--doc/classes/AnimationNodeTransition.xml4
-rw-r--r--doc/classes/AnimationPlayer.xml23
-rw-r--r--doc/classes/AnimationTree.xml2
-rw-r--r--doc/classes/Area2D.xml6
-rw-r--r--doc/classes/Area3D.xml7
-rw-r--r--doc/classes/Array.xml39
-rw-r--r--doc/classes/AudioEffect.xml2
-rw-r--r--doc/classes/AudioEffectRecord.xml2
-rw-r--r--doc/classes/AudioEffectReverb.xml2
-rw-r--r--doc/classes/AudioEffectSpectrumAnalyzer.xml3
-rw-r--r--doc/classes/AudioServer.xml6
-rw-r--r--doc/classes/AudioStream.xml6
-rw-r--r--doc/classes/AudioStreamGenerator.xml2
-rw-r--r--doc/classes/AudioStreamGeneratorPlayback.xml2
-rw-r--r--doc/classes/AudioStreamPlayback.xml2
-rw-r--r--doc/classes/AudioStreamPlayer.xml56
-rw-r--r--doc/classes/AudioStreamWAV.xml5
-rw-r--r--doc/classes/BaseMaterial3D.xml3
-rw-r--r--doc/classes/Basis.xml8
-rw-r--r--doc/classes/BoneAttachment3D.xml5
-rw-r--r--doc/classes/BoxShape3D.xml6
-rw-r--r--doc/classes/Button.xml6
-rw-r--r--doc/classes/Camera2D.xml5
-rw-r--r--doc/classes/Camera3D.xml2
-rw-r--r--doc/classes/CameraServer.xml2
-rw-r--r--doc/classes/CanvasItem.xml28
-rw-r--r--doc/classes/CanvasLayer.xml2
-rw-r--r--doc/classes/CapsuleShape3D.xml2
-rw-r--r--doc/classes/CharacterBody2D.xml10
-rw-r--r--doc/classes/CharacterBody3D.xml14
-rw-r--r--doc/classes/ClassDB.xml17
-rw-r--r--doc/classes/CodeEdit.xml38
-rw-r--r--doc/classes/CollisionPolygon2D.xml1
-rw-r--r--doc/classes/CollisionPolygon3D.xml1
-rw-r--r--doc/classes/CollisionShape2D.xml6
-rw-r--r--doc/classes/CollisionShape3D.xml6
-rw-r--r--doc/classes/Color.xml6
-rw-r--r--doc/classes/ColorPicker.xml2
-rw-r--r--doc/classes/ColorPickerButton.xml4
-rw-r--r--doc/classes/ColorRect.xml2
-rw-r--r--doc/classes/Compositor.xml2
-rw-r--r--doc/classes/ConcavePolygonShape3D.xml2
-rw-r--r--doc/classes/ConfigFile.xml2
-rw-r--r--doc/classes/ConfirmationDialog.xml4
-rw-r--r--doc/classes/Control.xml4
-rw-r--r--doc/classes/ConvexPolygonShape3D.xml2
-rw-r--r--doc/classes/Crypto.xml109
-rw-r--r--doc/classes/CryptoKey.xml2
-rw-r--r--doc/classes/CylinderShape3D.xml6
-rw-r--r--doc/classes/Dictionary.xml4
-rw-r--r--doc/classes/DirAccess.xml26
-rw-r--r--doc/classes/DisplayServer.xml78
-rw-r--r--doc/classes/EditorExportPlatformPC.xml3
-rw-r--r--doc/classes/EditorFileDialog.xml6
-rw-r--r--doc/classes/EditorInspector.xml1
-rw-r--r--doc/classes/EditorInspectorPlugin.xml3
-rw-r--r--doc/classes/EditorPaths.xml6
-rw-r--r--doc/classes/EditorPlugin.xml8
-rw-r--r--doc/classes/EditorSettings.xml55
-rw-r--r--doc/classes/Environment.xml5
-rw-r--r--doc/classes/FileAccess.xml21
-rw-r--r--doc/classes/FileSystemDock.xml5
-rw-r--r--doc/classes/FlowContainer.xml15
-rw-r--r--doc/classes/GDExtensionManager.xml2
-rw-r--r--doc/classes/GPUParticles2D.xml16
-rw-r--r--doc/classes/GPUParticles3D.xml14
-rw-r--r--doc/classes/Geometry2D.xml1
-rw-r--r--doc/classes/GeometryInstance3D.xml3
-rw-r--r--doc/classes/Gradient.xml8
-rw-r--r--doc/classes/GraphNode.xml3
-rw-r--r--doc/classes/GridContainer.xml2
-rw-r--r--doc/classes/HingeJoint3D.xml4
-rw-r--r--doc/classes/Input.xml7
-rw-r--r--doc/classes/InputEvent.xml4
-rw-r--r--doc/classes/InputEventAction.xml4
-rw-r--r--doc/classes/InputEventKey.xml4
-rw-r--r--doc/classes/InputEventMouseMotion.xml2
-rw-r--r--doc/classes/JSONRPC.xml4
-rw-r--r--doc/classes/JavaClass.xml4
-rw-r--r--doc/classes/JavaClassWrapper.xml5
-rw-r--r--doc/classes/Joint2D.xml10
-rw-r--r--doc/classes/Joint3D.xml14
-rw-r--r--doc/classes/Label.xml2
-rw-r--r--doc/classes/Light3D.xml4
-rw-r--r--doc/classes/LightmapGI.xml3
-rw-r--r--doc/classes/Line2D.xml4
-rw-r--r--doc/classes/Material.xml4
-rw-r--r--doc/classes/Mesh.xml10
-rw-r--r--doc/classes/MeshInstance3D.xml22
-rw-r--r--doc/classes/MeshLibrary.xml6
-rw-r--r--doc/classes/MultiplayerPeer.xml1
-rw-r--r--doc/classes/NavigationAgent2D.xml9
-rw-r--r--doc/classes/NavigationAgent3D.xml9
-rw-r--r--doc/classes/NavigationMesh.xml2
-rw-r--r--doc/classes/NavigationMeshSourceGeometryData2D.xml14
-rw-r--r--doc/classes/NavigationMeshSourceGeometryData3D.xml8
-rw-r--r--doc/classes/NavigationPathQueryParameters2D.xml7
-rw-r--r--doc/classes/NavigationPathQueryParameters3D.xml7
-rw-r--r--doc/classes/NavigationPolygon.xml2
-rw-r--r--doc/classes/NavigationRegion2D.xml21
-rw-r--r--doc/classes/NavigationServer2D.xml28
-rw-r--r--doc/classes/NavigationServer3D.xml28
-rw-r--r--doc/classes/Node.xml33
-rw-r--r--doc/classes/Node2D.xml3
-rw-r--r--doc/classes/NodePath.xml4
-rw-r--r--doc/classes/OS.xml25
-rw-r--r--doc/classes/Object.xml17
-rw-r--r--doc/classes/OccluderPolygon2D.xml1
-rw-r--r--doc/classes/PackedByteArray.xml1
-rw-r--r--doc/classes/PackedColorArray.xml2
-rw-r--r--doc/classes/PackedFloat32Array.xml1
-rw-r--r--doc/classes/PackedFloat64Array.xml2
-rw-r--r--doc/classes/PackedInt32Array.xml1
-rw-r--r--doc/classes/PackedInt64Array.xml2
-rw-r--r--doc/classes/PackedScene.xml6
-rw-r--r--doc/classes/PackedStringArray.xml4
-rw-r--r--doc/classes/PackedVector2Array.xml4
-rw-r--r--doc/classes/PackedVector3Array.xml2
-rw-r--r--doc/classes/PackedVector4Array.xml225
-rw-r--r--doc/classes/Panel.xml5
-rw-r--r--doc/classes/PanelContainer.xml2
-rw-r--r--doc/classes/ParticleProcessMaterial.xml1
-rw-r--r--doc/classes/PhysicalBone3D.xml5
-rw-r--r--doc/classes/PhysicsDirectBodyState2D.xml2
-rw-r--r--doc/classes/PhysicsDirectBodyState2DExtension.xml44
-rw-r--r--doc/classes/PhysicsDirectBodyState3D.xml2
-rw-r--r--doc/classes/PhysicsMaterial.xml2
-rw-r--r--doc/classes/PhysicsServer2D.xml22
-rw-r--r--doc/classes/PhysicsServer2DExtension.xml160
-rw-r--r--doc/classes/PhysicsServer3D.xml21
-rw-r--r--doc/classes/Polygon2D.xml1
-rw-r--r--doc/classes/Popup.xml5
-rw-r--r--doc/classes/PopupMenu.xml3
-rw-r--r--doc/classes/PopupPanel.xml5
-rw-r--r--doc/classes/ProjectSettings.xml53
-rw-r--r--doc/classes/QuadMesh.xml4
-rw-r--r--doc/classes/Quaternion.xml2
-rw-r--r--doc/classes/RayCast2D.xml15
-rw-r--r--doc/classes/RayCast3D.xml17
-rw-r--r--doc/classes/Rect2.xml4
-rw-r--r--doc/classes/Rect2i.xml4
-rw-r--r--doc/classes/RectangleShape2D.xml4
-rw-r--r--doc/classes/RenderingDevice.xml11
-rw-r--r--doc/classes/RenderingServer.xml53
-rw-r--r--doc/classes/ResourceImporterCSVTranslation.xml2
-rw-r--r--doc/classes/ResourceImporterWAV.xml1
-rw-r--r--doc/classes/ResourceLoader.xml5
-rw-r--r--doc/classes/RichTextLabel.xml17
-rw-r--r--doc/classes/RigidBody2D.xml9
-rw-r--r--doc/classes/RigidBody3D.xml9
-rw-r--r--doc/classes/ScriptEditor.xml29
-rw-r--r--doc/classes/ScriptEditorBase.xml6
-rw-r--r--doc/classes/ShapeCast2D.xml1
-rw-r--r--doc/classes/ShapeCast3D.xml1
-rw-r--r--doc/classes/Skeleton3D.xml25
-rw-r--r--doc/classes/SkeletonIK3D.xml4
-rw-r--r--doc/classes/SkeletonModifier3D.xml10
-rw-r--r--doc/classes/SkeletonProfileHumanoid.xml2
-rw-r--r--doc/classes/SkinReference.xml9
-rw-r--r--doc/classes/SliderJoint3D.xml46
-rw-r--r--doc/classes/SoftBody3D.xml1
-rw-r--r--doc/classes/SphereShape3D.xml2
-rw-r--r--doc/classes/SpotLight3D.xml2
-rw-r--r--doc/classes/Sprite2D.xml2
-rw-r--r--doc/classes/StaticBody3D.xml6
-rw-r--r--doc/classes/StatusIndicator.xml14
-rw-r--r--doc/classes/String.xml25
-rw-r--r--doc/classes/StringName.xml16
-rw-r--r--doc/classes/StyleBoxFlat.xml4
-rw-r--r--doc/classes/SubViewport.xml12
-rw-r--r--doc/classes/SurfaceTool.xml12
-rw-r--r--doc/classes/TabBar.xml16
-rw-r--r--doc/classes/TabContainer.xml31
-rw-r--r--doc/classes/TextEdit.xml200
-rw-r--r--doc/classes/TextServer.xml18
-rw-r--r--doc/classes/TextServerExtension.xml7
-rw-r--r--doc/classes/TextureButton.xml2
-rw-r--r--doc/classes/TextureRect.xml2
-rw-r--r--doc/classes/Thread.xml2
-rw-r--r--doc/classes/TileMap.xml12
-rw-r--r--doc/classes/TileMapLayer.xml4
-rw-r--r--doc/classes/TileSet.xml12
-rw-r--r--doc/classes/TileSetAtlasSource.xml9
-rw-r--r--doc/classes/Time.xml2
-rw-r--r--doc/classes/Timer.xml2
-rw-r--r--doc/classes/Transform2D.xml4
-rw-r--r--doc/classes/Transform3D.xml6
-rw-r--r--doc/classes/Tree.xml14
-rw-r--r--doc/classes/TreeItem.xml23
-rw-r--r--doc/classes/VBoxContainer.xml2
-rw-r--r--doc/classes/Variant.xml4
-rw-r--r--doc/classes/Vector2.xml55
-rw-r--r--doc/classes/Vector2i.xml43
-rw-r--r--doc/classes/Vector3.xml52
-rw-r--r--doc/classes/Vector3i.xml43
-rw-r--r--doc/classes/Vector4.xml43
-rw-r--r--doc/classes/Vector4i.xml43
-rw-r--r--doc/classes/VehicleBody3D.xml2
-rw-r--r--doc/classes/VehicleWheel3D.xml2
-rw-r--r--doc/classes/Viewport.xml70
-rw-r--r--doc/classes/ViewportTexture.xml17
-rw-r--r--doc/classes/VisibleOnScreenNotifier2D.xml2
-rw-r--r--doc/classes/VisualShaderNodeComment.xml16
-rw-r--r--doc/classes/VisualShaderNodeFrame.xml2
-rw-r--r--doc/classes/VisualShaderNodeReroute.xml19
-rw-r--r--doc/classes/VoxelGI.xml2
-rw-r--r--doc/classes/VoxelGIData.xml2
-rw-r--r--doc/classes/WorkerThreadPool.xml4
-rw-r--r--doc/classes/WorldEnvironment.xml5
-rw-r--r--doc/classes/XRBodyModifier3D.xml9
-rw-r--r--doc/classes/XRBodyTracker.xml3
-rw-r--r--doc/classes/XRControllerTracker.xml17
-rw-r--r--doc/classes/XRFaceModifier3D.xml2
-rw-r--r--doc/classes/XRFaceTracker.xml3
-rw-r--r--doc/classes/XRHandModifier3D.xml6
-rw-r--r--doc/classes/XRHandTracker.xml16
-rw-r--r--doc/classes/XRNode3D.xml3
-rw-r--r--doc/classes/XRPositionalTracker.xml22
-rw-r--r--doc/classes/XRServer.xml172
-rw-r--r--doc/classes/XRTracker.xml30
-rw-r--r--doc/classes/XRVRS.xml30
-rwxr-xr-xdoc/tools/doc_status.py8
-rwxr-xr-xdoc/tools/make_rst.py124
-rw-r--r--doc/translations/de.po3337
-rw-r--r--doc/translations/es.po1384
-rw-r--r--doc/translations/fr.po1249
-rw-r--r--doc/translations/zh_CN.po17959
-rw-r--r--doc/translations/zh_TW.po5934
243 files changed, 14182 insertions, 19067 deletions
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml
index 3a1bd83c18..bcab80ea94 100644
--- a/doc/classes/@GlobalScope.xml
+++ b/doc/classes/@GlobalScope.xml
@@ -368,7 +368,7 @@
<param index="1" name="curve" type="float" />
<description>
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:
- [codeblock]
+ [codeblock lang=text]
- Lower than -1.0 (exclusive): Ease in-out
- 1.0: Linear
- Between -1.0 and 0.0 (exclusive): Ease out-in
@@ -460,8 +460,8 @@
var x = i * 0.5 - 1.5
print("%4.1f %4.1f | %4.1f" % [x, fmod(x, 1.5), fposmod(x, 1.5)])
[/codeblock]
- Produces:
- [codeblock]
+ Prints:
+ [codeblock lang=text]
(x) (fmod(x, 1.5)) (fposmod(x, 1.5))
-1.5 -0.0 | 0.0
-1.0 -1.0 | 0.5
@@ -604,7 +604,7 @@
is_same(arr_a, arr_b) # false
[/codeblock]
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].
- These are [Variant] reference types: [Object], [Dictionary], [Array], [PackedByteArray], [PackedInt32Array], [PackedInt64Array], [PackedFloat32Array], [PackedFloat64Array], [PackedStringArray], [PackedVector2Array], [PackedVector3Array] and [PackedColorArray].
+ These are [Variant] reference types: [Object], [Dictionary], [Array], [PackedByteArray], [PackedInt32Array], [PackedInt64Array], [PackedFloat32Array], [PackedFloat64Array], [PackedStringArray], [PackedVector2Array], [PackedVector3Array], [PackedVector4Array], and [PackedColorArray].
</description>
</method>
<method name="is_zero_approx">
@@ -696,6 +696,7 @@
[codeblock]
max(1, 7, 3, -6, 5) # Returns 7
[/codeblock]
+ [b]Note:[/b] When using this on vectors it will [i]not[/i] perform component-wise maximum, and will pick the largest value when compared using [code]x &lt; y[/code]. To perform component-wise maximum, use [method Vector2.max], [method Vector2i.max], [method Vector3.max], [method Vector3i.max], [method Vector4.max], and [method Vector4i.max].
</description>
</method>
<method name="maxf">
@@ -729,6 +730,7 @@
[codeblock]
min(1, 7, 3, -6, 5) # Returns -6
[/codeblock]
+ [b]Note:[/b] When using this on vectors it will [i]not[/i] perform component-wise minimum, and will pick the smallest value when compared using [code]x &lt; y[/code]. To perform component-wise minimum, use [method Vector2.min], [method Vector2i.min], [method Vector3.min], [method Vector3i.min], [method Vector4.min], and [method Vector4i.min].
</description>
</method>
<method name="minf">
@@ -818,8 +820,8 @@
for i in range(-3, 4):
print("%2d %2d | %2d" % [i, i % 3, posmod(i, 3)])
[/codeblock]
- Produces:
- [codeblock]
+ Prints:
+ [codeblock lang=text]
(i) (i % 3) (posmod(i, 3))
-3 0 | 0
-2 -2 | 1
@@ -901,6 +903,7 @@
<method name="printraw" qualifiers="vararg">
<description>
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.
+ [b]Note:[/b] The OS terminal is [i]not[/i] the same as the editor's Output dock. The output sent to the OS terminal can be seen when running Godot from a terminal. On Windows, this requires using the [code]console.exe[/code] executable.
[codeblocks]
[gdscript]
printraw("A")
@@ -1094,6 +1097,7 @@
remap(75, 0, 100, -1, 1) # Returns 0.5
[/codeblock]
For complex use cases where multiple ranges are needed, consider using [Curve] or [Gradient] instead.
+ [b]Note:[/b] If [code]istart == istop[/code], the return value is undefined (most likely NaN, INF, or -INF).
</description>
</method>
<method name="rid_allocate_id">
@@ -1457,7 +1461,7 @@
[/csharp]
[/codeblocks]
Prints:
- [codeblock]
+ [codeblock lang=text]
{
"a": 1,
"b": 2
@@ -1567,9 +1571,6 @@
<member name="Geometry3D" type="Geometry3D" setter="" getter="">
The [Geometry3D] singleton.
</member>
- <member name="GodotSharp" type="GodotSharp" setter="" getter="">
- The [GodotSharp] singleton.
- </member>
<member name="IP" type="IP" setter="" getter="">
The [IP] singleton.
</member>
@@ -3166,7 +3167,10 @@
<constant name="TYPE_PACKED_COLOR_ARRAY" value="37" enum="Variant.Type">
Variable is of type [PackedColorArray].
</constant>
- <constant name="TYPE_MAX" value="38" enum="Variant.Type">
+ <constant name="TYPE_PACKED_VECTOR4_ARRAY" value="38" enum="Variant.Type">
+ Variable is of type [PackedVector4Array].
+ </constant>
+ <constant name="TYPE_MAX" value="39" enum="Variant.Type">
Represents the size of the [enum Variant.Type] enum.
</constant>
<constant name="OP_EQUAL" value="0" enum="Variant.Operator">
diff --git a/doc/classes/AcceptDialog.xml b/doc/classes/AcceptDialog.xml
index 7fbdd4272d..392364425b 100644
--- a/doc/classes/AcceptDialog.xml
+++ b/doc/classes/AcceptDialog.xml
@@ -100,6 +100,12 @@
</signal>
</signals>
<theme_items>
+ <theme_item name="buttons_min_height" data_type="constant" type="int" default="0">
+ The minimum height of each button in the bottom row (such as OK/Cancel) in pixels. This can be increased to make buttons with short texts easier to click/tap.
+ </theme_item>
+ <theme_item name="buttons_min_width" data_type="constant" type="int" default="0">
+ The minimum width of each button in the bottom row (such as OK/Cancel) in pixels. This can be increased to make buttons with short texts easier to click/tap.
+ </theme_item>
<theme_item name="buttons_separation" data_type="constant" type="int" default="10">
The size of the vertical space between the dialog's content and the button row.
</theme_item>
diff --git a/doc/classes/AnimatableBody3D.xml b/doc/classes/AnimatableBody3D.xml
index f5c6217477..f888ca1416 100644
--- a/doc/classes/AnimatableBody3D.xml
+++ b/doc/classes/AnimatableBody3D.xml
@@ -8,9 +8,9 @@
When [AnimatableBody3D] is moved, its linear and angular velocity are estimated and used to affect other physics bodies in its path. This makes it useful for moving platforms, doors, and other moving objects.
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="sync_to_physics" type="bool" setter="set_sync_to_physics" getter="is_sync_to_physics_enabled" default="true">
diff --git a/doc/classes/AnimatedSprite2D.xml b/doc/classes/AnimatedSprite2D.xml
index 4b38773505..012ae4fe29 100644
--- a/doc/classes/AnimatedSprite2D.xml
+++ b/doc/classes/AnimatedSprite2D.xml
@@ -8,7 +8,7 @@
</description>
<tutorials>
<link title="2D Sprite animation">$DOCS_URL/tutorials/2d/2d_sprite_animation.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<methods>
<method name="get_playing_speed" qualifiers="const">
diff --git a/doc/classes/Animation.xml b/doc/classes/Animation.xml
index b00889f483..26ed881502 100644
--- a/doc/classes/Animation.xml
+++ b/doc/classes/Animation.xml
@@ -595,6 +595,9 @@
</method>
</methods>
<members>
+ <member name="capture_included" type="bool" setter="_set_capture_included" getter="is_capture_included" default="false">
+ Returns [code]true[/code] if the capture track is included. This is a cached readonly value for performance.
+ </member>
<member name="length" type="float" setter="set_length" getter="get_length" default="1.0">
The total length of the animation (in seconds).
[b]Note:[/b] Length is not delimited by the last key, as this one may be before or after the end to ensure correct interpolation and looping.
@@ -602,7 +605,7 @@
<member name="loop_mode" type="int" setter="set_loop_mode" getter="get_loop_mode" enum="Animation.LoopMode" default="0">
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.
</member>
- <member name="step" type="float" setter="set_step" getter="get_step" default="0.1">
+ <member name="step" type="float" setter="set_step" getter="get_step" default="0.0333333">
The animation step value.
</member>
</members>
@@ -658,7 +661,7 @@
Update at the keyframes.
</constant>
<constant name="UPDATE_CAPTURE" value="2" enum="UpdateMode">
- Same as [constant UPDATE_CONTINUOUS] but works as a flag to capture the value of the current object and perform interpolation in some methods. See also [method AnimationMixer.capture] and [method AnimationPlayer.play_with_capture].
+ Same as [constant UPDATE_CONTINUOUS] but works as a flag to capture the value of the current object and perform interpolation in some methods. See also [method AnimationMixer.capture], [member AnimationPlayer.playback_auto_capture], and [method AnimationPlayer.play_with_capture].
</constant>
<constant name="LOOP_NONE" value="0" enum="LoopMode">
At both ends of the animation, the animation will stop playing.
diff --git a/doc/classes/AnimationMixer.xml b/doc/classes/AnimationMixer.xml
index a77e9e28c6..c635eba2ab 100644
--- a/doc/classes/AnimationMixer.xml
+++ b/doc/classes/AnimationMixer.xml
@@ -273,7 +273,7 @@
The number of possible simultaneous sounds for each of the assigned AudioStreamPlayers.
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.
</member>
- <member name="callback_mode_discrete" type="int" setter="set_callback_mode_discrete" getter="get_callback_mode_discrete" enum="AnimationMixer.AnimationCallbackModeDiscrete" default="0">
+ <member name="callback_mode_discrete" type="int" setter="set_callback_mode_discrete" getter="get_callback_mode_discrete" enum="AnimationMixer.AnimationCallbackModeDiscrete" default="1">
Ordinarily, tracks can be set to [constant Animation.UPDATE_DISCRETE] to update infrequently, usually when using nearest interpolation.
However, when blending with [constant Animation.UPDATE_CONTINUOUS] several results are considered. The [member callback_mode_discrete] specify it explicitly. See also [enum AnimationCallbackModeDiscrete].
To make the blended results look good, it is recommended to set this to [constant ANIMATION_CALLBACK_MODE_DISCRETE_FORCE_CONTINUOUS] to update every frame during blending. Other values exist for compatibility and they are fine if there is no blending, but not so, may produce artifacts.
@@ -361,14 +361,14 @@
Make method calls immediately when reached in the animation.
</constant>
<constant name="ANIMATION_CALLBACK_MODE_DISCRETE_DOMINANT" value="0" enum="AnimationCallbackModeDiscrete">
- An [constant Animation.UPDATE_DISCRETE] track value takes precedence when blending [constant Animation.UPDATE_CONTINUOUS] or [constant Animation.UPDATE_CAPTURE] track values and [constant Animation.UPDATE_DISCRETE] track values. This is the default behavior for [AnimationPlayer].
- [b]Note:[/b] If a value track has non-numeric type key values, it is internally converted to use [constant ANIMATION_CALLBACK_MODE_DISCRETE_DOMINANT] with [constant Animation.UPDATE_DISCRETE].
+ An [constant Animation.UPDATE_DISCRETE] track value takes precedence when blending [constant Animation.UPDATE_CONTINUOUS] or [constant Animation.UPDATE_CAPTURE] track values and [constant Animation.UPDATE_DISCRETE] track values.
</constant>
<constant name="ANIMATION_CALLBACK_MODE_DISCRETE_RECESSIVE" value="1" enum="AnimationCallbackModeDiscrete">
- An [constant Animation.UPDATE_CONTINUOUS] or [constant Animation.UPDATE_CAPTURE] track value takes precedence when blending the [constant Animation.UPDATE_CONTINUOUS] or [constant Animation.UPDATE_CAPTURE] track values and the [constant Animation.UPDATE_DISCRETE] track values.
+ An [constant Animation.UPDATE_CONTINUOUS] or [constant Animation.UPDATE_CAPTURE] track value takes precedence when blending the [constant Animation.UPDATE_CONTINUOUS] or [constant Animation.UPDATE_CAPTURE] track values and the [constant Animation.UPDATE_DISCRETE] track values. This is the default behavior for [AnimationPlayer].
</constant>
<constant name="ANIMATION_CALLBACK_MODE_DISCRETE_FORCE_CONTINUOUS" value="2" enum="AnimationCallbackModeDiscrete">
Always treat the [constant Animation.UPDATE_DISCRETE] track value as [constant Animation.UPDATE_CONTINUOUS] with [constant Animation.INTERPOLATION_NEAREST]. This is the default behavior for [AnimationTree].
+ If a value track has non-numeric type key values, it is internally converted to use [constant ANIMATION_CALLBACK_MODE_DISCRETE_RECESSIVE] with [constant Animation.UPDATE_DISCRETE].
</constant>
</constants>
</class>
diff --git a/doc/classes/AnimationNode.xml b/doc/classes/AnimationNode.xml
index 960bbe68ad..4e093cb887 100644
--- a/doc/classes/AnimationNode.xml
+++ b/doc/classes/AnimationNode.xml
@@ -7,7 +7,7 @@
Base resource for [AnimationTree] nodes. In general, it's not used directly, but you can create custom ones with custom blending formulas.
Inherit this when creating animation nodes mainly for use in [AnimationNodeBlendTree], otherwise [AnimationRootNode] should be used instead.
You can access the time information as read-only parameter which is processed and stored in the previous frame for all nodes except [AnimationNodeOutput].
- [b]Note:[/b] If more than two inputs exist in the [AnimationNode], which time information takes precedence depends on the type of [AnimationNode].
+ [b]Note:[/b] If multiple inputs exist in the [AnimationNode], which time information takes precedence depends on the type of [AnimationNode].
[codeblock]
var current_length = $AnimationTree[parameters/AnimationNodeName/current_length]
var current_position = $AnimationTree[parameters/AnimationNodeName/current_position]
diff --git a/doc/classes/AnimationNodeAdd3.xml b/doc/classes/AnimationNodeAdd3.xml
index 12f00849cc..edd733ad34 100644
--- a/doc/classes/AnimationNodeAdd3.xml
+++ b/doc/classes/AnimationNodeAdd3.xml
@@ -13,6 +13,6 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
</class>
diff --git a/doc/classes/AnimationNodeAnimation.xml b/doc/classes/AnimationNodeAnimation.xml
index 5683371182..0c85e8e670 100644
--- a/doc/classes/AnimationNodeAnimation.xml
+++ b/doc/classes/AnimationNodeAnimation.xml
@@ -8,8 +8,8 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<members>
<member name="animation" type="StringName" setter="set_animation" getter="get_animation" default="&amp;&quot;&quot;">
diff --git a/doc/classes/AnimationNodeBlend2.xml b/doc/classes/AnimationNodeBlend2.xml
index 61df0b26b3..50d785fee7 100644
--- a/doc/classes/AnimationNodeBlend2.xml
+++ b/doc/classes/AnimationNodeBlend2.xml
@@ -9,7 +9,7 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
</class>
diff --git a/doc/classes/AnimationNodeBlendSpace2D.xml b/doc/classes/AnimationNodeBlendSpace2D.xml
index 47933a1fd0..596767599c 100644
--- a/doc/classes/AnimationNodeBlendSpace2D.xml
+++ b/doc/classes/AnimationNodeBlendSpace2D.xml
@@ -10,7 +10,7 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="add_blend_point">
diff --git a/doc/classes/AnimationNodeOneShot.xml b/doc/classes/AnimationNodeOneShot.xml
index 6ff2d6f6db..b2a8002d74 100644
--- a/doc/classes/AnimationNodeOneShot.xml
+++ b/doc/classes/AnimationNodeOneShot.xml
@@ -53,7 +53,7 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<members>
<member name="autorestart" type="bool" setter="set_autorestart" getter="has_autorestart" default="false">
diff --git a/doc/classes/AnimationNodeOutput.xml b/doc/classes/AnimationNodeOutput.xml
index f957650294..6186fdd8e1 100644
--- a/doc/classes/AnimationNodeOutput.xml
+++ b/doc/classes/AnimationNodeOutput.xml
@@ -8,7 +8,7 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
</class>
diff --git a/doc/classes/AnimationNodeSync.xml b/doc/classes/AnimationNodeSync.xml
index e9e1519672..57c79378c0 100644
--- a/doc/classes/AnimationNodeSync.xml
+++ b/doc/classes/AnimationNodeSync.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AnimationNodeSync" inherits="AnimationNode" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
- Base class for [AnimationNode]s with more than two input ports that must be synchronized.
+ Base class for [AnimationNode]s with multiple input ports that must be synchronized.
</brief_description>
<description>
An animation node used to combine, mix, or blend two or more animations together while keeping them synchronized within an [AnimationTree].
diff --git a/doc/classes/AnimationNodeTimeScale.xml b/doc/classes/AnimationNodeTimeScale.xml
index 4cb8ccb962..9bf7529124 100644
--- a/doc/classes/AnimationNodeTimeScale.xml
+++ b/doc/classes/AnimationNodeTimeScale.xml
@@ -8,6 +8,6 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
</tutorials>
</class>
diff --git a/doc/classes/AnimationNodeTransition.xml b/doc/classes/AnimationNodeTransition.xml
index 775a208735..382166d823 100644
--- a/doc/classes/AnimationNodeTransition.xml
+++ b/doc/classes/AnimationNodeTransition.xml
@@ -38,8 +38,8 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="is_input_loop_broken_at_end" qualifiers="const">
diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml
index 9d2d93b0f0..302ca314bb 100644
--- a/doc/classes/AnimationPlayer.xml
+++ b/doc/classes/AnimationPlayer.xml
@@ -12,7 +12,7 @@
<tutorials>
<link title="2D Sprite animation">$DOCS_URL/tutorials/2d/2d_sprite_animation.html</link>
<link title="Animation documentation index">$DOCS_URL/tutorials/animation/index.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="animation_get_next" qualifiers="const">
@@ -112,7 +112,7 @@
</method>
<method name="play_with_capture">
<return type="void" />
- <param index="0" name="name" type="StringName" />
+ <param index="0" name="name" type="StringName" default="&amp;&quot;&quot;" />
<param index="1" name="duration" type="float" default="-1.0" />
<param index="2" name="custom_blend" type="float" default="-1" />
<param index="3" name="custom_speed" type="float" default="1.0" />
@@ -120,12 +120,13 @@
<param index="5" name="trans_type" type="int" enum="Tween.TransitionType" default="0" />
<param index="6" name="ease_type" type="int" enum="Tween.EaseType" default="0" />
<description>
- See [method AnimationMixer.capture]. It is almost the same as the following:
+ See also [method AnimationMixer.capture].
+ You can use this method to use more detailed options for capture than those performed by [member playback_auto_capture]. When [member playback_auto_capture] is [code]false[/code], this method is almost the same as the following:
[codeblock]
capture(name, duration, trans_type, ease_type)
play(name, custom_blend, custom_speed, from_end)
[/codeblock]
- If name is blank, it specifies [member assigned_animation].
+ If [param name] is blank, it specifies [member assigned_animation].
If [param duration] is a negative value, the duration is set to the interval between the current position and the first key, when [param from_end] is [code]true[/code], uses the interval between the current position and the last key instead.
[b]Note:[/b] The [param duration] takes [member speed_scale] into account, but [param custom_speed] does not, because the capture cache is interpolated with the blend result and the result may contain multiple animations.
</description>
@@ -210,6 +211,20 @@
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.
[b]Note:[/b] This obeys the same logic as the [signal AnimationMixer.animation_finished] signal, so it will not quit the engine if the animation is set to be looping.
</member>
+ <member name="playback_auto_capture" type="bool" setter="set_auto_capture" getter="is_auto_capture" default="true">
+ If [code]true[/code], performs [method AnimationMixer.capture] before playback automatically. This means just [method play_with_capture] is executed with default arguments instead of [method play].
+ [b]Note:[/b] Capture interpolation is only performed if the animation contains a capture track. See also [constant Animation.UPDATE_CAPTURE].
+ </member>
+ <member name="playback_auto_capture_duration" type="float" setter="set_auto_capture_duration" getter="get_auto_capture_duration" default="-1.0">
+ See also [method play_with_capture] and [method AnimationMixer.capture].
+ If [member playback_auto_capture_duration] is negative value, the duration is set to the interval between the current position and the first key.
+ </member>
+ <member name="playback_auto_capture_ease_type" type="int" setter="set_auto_capture_ease_type" getter="get_auto_capture_ease_type" enum="Tween.EaseType" default="0">
+ The ease type of the capture interpolation. See also [enum Tween.EaseType].
+ </member>
+ <member name="playback_auto_capture_transition_type" type="int" setter="set_auto_capture_transition_type" getter="get_auto_capture_transition_type" enum="Tween.TransitionType" default="0">
+ The transition type of the capture interpolation. See also [enum Tween.TransitionType].
+ </member>
<member name="playback_default_blend_time" type="float" setter="set_default_blend_time" getter="get_default_blend_time" default="0.0">
The default time in which to blend animations. Ranges from 0 to 4096 with 0.01 precision.
</member>
diff --git a/doc/classes/AnimationTree.xml b/doc/classes/AnimationTree.xml
index d240a4967e..4a63b35ba0 100644
--- a/doc/classes/AnimationTree.xml
+++ b/doc/classes/AnimationTree.xml
@@ -9,7 +9,7 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="get_process_callback" qualifiers="const" deprecated="Use [member AnimationMixer.callback_mode_process] instead.">
diff --git a/doc/classes/Area2D.xml b/doc/classes/Area2D.xml
index a52aa80606..4ad5db2b67 100644
--- a/doc/classes/Area2D.xml
+++ b/doc/classes/Area2D.xml
@@ -10,9 +10,9 @@
</description>
<tutorials>
<link title="Using Area2D">$DOCS_URL/tutorials/physics/using_area_2d.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="2D Pong Demo">https://godotengine.org/asset-library/asset/121</link>
- <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/120</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="2D Pong Demo">https://godotengine.org/asset-library/asset/2728</link>
+ <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/2727</link>
</tutorials>
<methods>
<method name="get_overlapping_areas" qualifiers="const">
diff --git a/doc/classes/Area3D.xml b/doc/classes/Area3D.xml
index 671c824c30..8eedd3cdf2 100644
--- a/doc/classes/Area3D.xml
+++ b/doc/classes/Area3D.xml
@@ -11,8 +11,8 @@
</description>
<tutorials>
<link title="Using Area2D">$DOCS_URL/tutorials/physics/using_area_2d.html</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="GUI in 3D Demo">https://godotengine.org/asset-library/asset/127</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="GUI in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2807</link>
</tutorials>
<methods>
<method name="get_overlapping_areas" qualifiers="const">
@@ -124,12 +124,15 @@
</member>
<member name="wind_attenuation_factor" type="float" setter="set_wind_attenuation_factor" getter="get_wind_attenuation_factor" default="0.0">
The exponential rate at which wind force decreases with distance from its origin.
+ [b]Note:[/b] This wind force only applies to [SoftBody3D] nodes. Other physics bodies are currently not affected by wind.
</member>
<member name="wind_force_magnitude" type="float" setter="set_wind_force_magnitude" getter="get_wind_force_magnitude" default="0.0">
The magnitude of area-specific wind force.
+ [b]Note:[/b] This wind force only applies to [SoftBody3D] nodes. Other physics bodies are currently not affected by wind.
</member>
<member name="wind_source_path" type="NodePath" setter="set_wind_source_path" getter="get_wind_source_path" default="NodePath(&quot;&quot;)">
The [Node3D] which is used to specify 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.
+ [b]Note:[/b] This wind force only applies to [SoftBody3D] nodes. Other physics bodies are currently not affected by wind.
</member>
</members>
<signals>
diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml
index fd5ba57615..326b71c588 100644
--- a/doc/classes/Array.xml
+++ b/doc/classes/Array.xml
@@ -40,6 +40,7 @@
[/codeblocks]
[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].
[b]Note:[/b] Erasing elements while iterating over arrays is [b]not[/b] supported and will result in unpredictable behavior.
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedInt64Array] versus [code]Array[int][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
</description>
<tutorials>
</tutorials>
@@ -57,7 +58,30 @@
<param index="2" name="class_name" type="StringName" />
<param index="3" name="script" type="Variant" />
<description>
- Creates a typed array from the [param base] array.
+ Creates a typed array from the [param base] array. All arguments are required.
+ - [param type] is the built-in type as a [enum Variant.Type] constant, for example [constant TYPE_INT].
+ - [param class_name] is the [b]native[/b] class name, for example [Node]. If [param type] is not [constant TYPE_OBJECT], must be an empty string.
+ - [param script] is the associated script. Must be a [Script] instance or [code]null[/code].
+ Examples:
+ [codeblock]
+ class_name MyNode
+ extends Node
+
+ class MyClass:
+ pass
+
+ func _ready():
+ var a = Array([], TYPE_INT, &amp;"", null) # Array[int]
+ var b = Array([], TYPE_OBJECT, &amp;"Node", null) # Array[Node]
+ var c = Array([], TYPE_OBJECT, &amp;"Node", MyNode) # Array[MyNode]
+ var d = Array([], TYPE_OBJECT, &amp;"RefCounted", MyClass) # Array[MyClass]
+ [/codeblock]
+ [b]Note:[/b] This constructor can be useful if you want to create a typed array on the fly, but you are not required to use it. In GDScript you can use a temporary variable with the static type you need and then pass it:
+ [codeblock]
+ func _ready():
+ var a: Array[int] = []
+ some_func(a)
+ [/codeblock]
</description>
</constructor>
<constructor name="Array">
@@ -130,6 +154,13 @@
Constructs an array from a [PackedVector3Array].
</description>
</constructor>
+ <constructor name="Array">
+ <return type="Array" />
+ <param index="0" name="from" type="PackedVector4Array" />
+ <description>
+ Constructs an array from a [PackedVector4Array].
+ </description>
+ </constructor>
</constructors>
<methods>
<method name="all" qualifiers="const">
@@ -323,19 +354,19 @@
<method name="get_typed_builtin" qualifiers="const">
<return type="int" />
<description>
- Returns the [enum Variant.Type] constant for a typed array. If the [Array] is not typed, returns [constant TYPE_NIL].
+ Returns the built-in type of the typed array as a [enum Variant.Type] constant. If the array is not typed, returns [constant TYPE_NIL].
</description>
</method>
<method name="get_typed_class_name" qualifiers="const">
<return type="StringName" />
<description>
- Returns a class name of a typed [Array] of type [constant TYPE_OBJECT].
+ Returns the [b]native[/b] class name of the typed array if the built-in type is [constant TYPE_OBJECT]. Otherwise, this method returns an empty string.
</description>
</method>
<method name="get_typed_script" qualifiers="const">
<return type="Variant" />
<description>
- Returns the script associated with a typed array tied to a class name.
+ Returns the script associated with the typed array. This method returns a [Script] instance or [code]null[/code].
</description>
</method>
<method name="has" qualifiers="const" keywords="includes, contains">
diff --git a/doc/classes/AudioEffect.xml b/doc/classes/AudioEffect.xml
index 4fe47ac011..bd31603517 100644
--- a/doc/classes/AudioEffect.xml
+++ b/doc/classes/AudioEffect.xml
@@ -9,7 +9,7 @@
</description>
<tutorials>
<link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
- <link title="Audio Mic Record Demo">https://godotengine.org/asset-library/asset/527</link>
+ <link title="Audio Microphone Record Demo">https://godotengine.org/asset-library/asset/2760</link>
</tutorials>
<methods>
<method name="_instantiate" qualifiers="virtual">
diff --git a/doc/classes/AudioEffectRecord.xml b/doc/classes/AudioEffectRecord.xml
index 5b43c5ebaa..ed0a0c5b08 100644
--- a/doc/classes/AudioEffectRecord.xml
+++ b/doc/classes/AudioEffectRecord.xml
@@ -11,7 +11,7 @@
</description>
<tutorials>
<link title="Recording with microphone">$DOCS_URL/tutorials/audio/recording_with_microphone.html</link>
- <link title="Audio Mic Record Demo">https://godotengine.org/asset-library/asset/527</link>
+ <link title="Audio Microphone Record Demo">https://godotengine.org/asset-library/asset/2760</link>
</tutorials>
<methods>
<method name="get_recording" qualifiers="const">
diff --git a/doc/classes/AudioEffectReverb.xml b/doc/classes/AudioEffectReverb.xml
index 2c055f3825..4ac9672a8f 100644
--- a/doc/classes/AudioEffectReverb.xml
+++ b/doc/classes/AudioEffectReverb.xml
@@ -8,7 +8,7 @@
</description>
<tutorials>
<link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<members>
<member name="damping" type="float" setter="set_damping" getter="get_damping" default="0.5">
diff --git a/doc/classes/AudioEffectSpectrumAnalyzer.xml b/doc/classes/AudioEffectSpectrumAnalyzer.xml
index eb70396433..fbc0c2275f 100644
--- a/doc/classes/AudioEffectSpectrumAnalyzer.xml
+++ b/doc/classes/AudioEffectSpectrumAnalyzer.xml
@@ -8,8 +8,7 @@
See also [AudioStreamGenerator] for procedurally generating sounds.
</description>
<tutorials>
- <link title="Audio Spectrum Demo">https://godotengine.org/asset-library/asset/528</link>
- <link title="Godot 3.2 will get new audio features">https://godotengine.org/article/godot-32-will-get-new-audio-features</link>
+ <link title="Audio Spectrum Visualizer Demo">https://godotengine.org/asset-library/asset/2762</link>
</tutorials>
<members>
<member name="buffer_length" type="float" setter="set_buffer_length" getter="get_buffer_length" default="2.0">
diff --git a/doc/classes/AudioServer.xml b/doc/classes/AudioServer.xml
index 993aa581dc..b3cf53367d 100644
--- a/doc/classes/AudioServer.xml
+++ b/doc/classes/AudioServer.xml
@@ -8,9 +8,9 @@
</description>
<tutorials>
<link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
- <link title="Audio Device Changer Demo">https://godotengine.org/asset-library/asset/525</link>
- <link title="Audio Mic Record Demo">https://godotengine.org/asset-library/asset/527</link>
- <link title="Audio Spectrum Demo">https://godotengine.org/asset-library/asset/528</link>
+ <link title="Audio Device Changer Demo">https://godotengine.org/asset-library/asset/2758</link>
+ <link title="Audio Microphone Record Demo">https://godotengine.org/asset-library/asset/2760</link>
+ <link title="Audio Spectrum Visualizer Demo">https://godotengine.org/asset-library/asset/2762</link>
</tutorials>
<methods>
<method name="add_bus">
diff --git a/doc/classes/AudioStream.xml b/doc/classes/AudioStream.xml
index 9813c2f251..4abce3f1da 100644
--- a/doc/classes/AudioStream.xml
+++ b/doc/classes/AudioStream.xml
@@ -8,9 +8,9 @@
</description>
<tutorials>
<link title="Audio streams">$DOCS_URL/tutorials/audio/audio_streams.html</link>
- <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/526</link>
- <link title="Audio Mic Record Demo">https://godotengine.org/asset-library/asset/527</link>
- <link title="Audio Spectrum Demo">https://godotengine.org/asset-library/asset/528</link>
+ <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/2759</link>
+ <link title="Audio Microphone Record Demo">https://godotengine.org/asset-library/asset/2760</link>
+ <link title="Audio Spectrum Visualizer Demo">https://godotengine.org/asset-library/asset/2762</link>
</tutorials>
<methods>
<method name="_get_beat_count" qualifiers="virtual const">
diff --git a/doc/classes/AudioStreamGenerator.xml b/doc/classes/AudioStreamGenerator.xml
index 9e91d5c450..f618e69631 100644
--- a/doc/classes/AudioStreamGenerator.xml
+++ b/doc/classes/AudioStreamGenerator.xml
@@ -63,7 +63,7 @@
[b]Note:[/b] Due to performance constraints, this class is best used from C# or from a compiled language via GDExtension. If you still want to use this class from GDScript, consider using a lower [member mix_rate] such as 11,025 Hz or 22,050 Hz.
</description>
<tutorials>
- <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/526</link>
+ <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/2759</link>
</tutorials>
<members>
<member name="buffer_length" type="float" setter="set_buffer_length" getter="get_buffer_length" default="0.5">
diff --git a/doc/classes/AudioStreamGeneratorPlayback.xml b/doc/classes/AudioStreamGeneratorPlayback.xml
index 88c5cf6dbe..2f86eaf9e9 100644
--- a/doc/classes/AudioStreamGeneratorPlayback.xml
+++ b/doc/classes/AudioStreamGeneratorPlayback.xml
@@ -7,7 +7,7 @@
This class is meant to be used with [AudioStreamGenerator] to play back the generated audio in real-time.
</description>
<tutorials>
- <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/526</link>
+ <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/2759</link>
<link title="Godot 3.2 will get new audio features">https://godotengine.org/article/godot-32-will-get-new-audio-features</link>
</tutorials>
<methods>
diff --git a/doc/classes/AudioStreamPlayback.xml b/doc/classes/AudioStreamPlayback.xml
index 460a7050c8..9f87b76a2b 100644
--- a/doc/classes/AudioStreamPlayback.xml
+++ b/doc/classes/AudioStreamPlayback.xml
@@ -7,7 +7,7 @@
Can play, loop, pause a scroll through audio. See [AudioStream] and [AudioStreamOggVorbis] for usage.
</description>
<tutorials>
- <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/526</link>
+ <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/2759</link>
</tutorials>
<methods>
<method name="_get_loop_count" qualifiers="virtual const">
diff --git a/doc/classes/AudioStreamPlayer.xml b/doc/classes/AudioStreamPlayer.xml
index fbe2508da3..a7d0a10073 100644
--- a/doc/classes/AudioStreamPlayer.xml
+++ b/doc/classes/AudioStreamPlayer.xml
@@ -1,100 +1,104 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioStreamPlayer" inherits="Node" keywords="sound, music, song" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
- Plays back audio non-positionally.
+ A node for audio playback.
</brief_description>
<description>
- Plays an audio stream non-positionally.
- To play audio positionally, use [AudioStreamPlayer2D] or [AudioStreamPlayer3D] instead of [AudioStreamPlayer].
+ The [AudioStreamPlayer] node plays an audio stream non-positionally. It is ideal for user interfaces, menus, or background music.
+ To use this node, [member stream] needs to be set to a valid [AudioStream] resource. Playing more than one sound at the time is also supported, see [member max_polyphony].
+ If you need to play audio at a specific position, use [AudioStreamPlayer2D] or [AudioStreamPlayer3D] instead.
</description>
<tutorials>
<link title="Audio streams">$DOCS_URL/tutorials/audio/audio_streams.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="Audio Device Changer Demo">https://godotengine.org/asset-library/asset/525</link>
- <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/526</link>
- <link title="Audio Mic Record Demo">https://godotengine.org/asset-library/asset/527</link>
- <link title="Audio Spectrum Demo">https://godotengine.org/asset-library/asset/528</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="Audio Device Changer Demo">https://godotengine.org/asset-library/asset/2758</link>
+ <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/2759</link>
+ <link title="Audio Microphone Record Demo">https://godotengine.org/asset-library/asset/2760</link>
+ <link title="Audio Spectrum Visualizer Demo">https://godotengine.org/asset-library/asset/2762</link>
</tutorials>
<methods>
<method name="get_playback_position">
<return type="float" />
<description>
- Returns the position in the [AudioStream] in seconds.
+ Returns the position in the [AudioStream] of the latest sound, in seconds. Returns [code]0.0[/code] if no sounds are playing.
+ [b]Note:[/b] The position is not always accurate, as the [AudioServer] does not mix audio every processed frame. To get more accurate results, add [method AudioServer.get_time_since_last_mix] to the returned position.
</description>
</method>
<method name="get_stream_playback">
<return type="AudioStreamPlayback" />
<description>
- Returns the [AudioStreamPlayback] object associated with this [AudioStreamPlayer].
+ Returns the latest [AudioStreamPlayback] of this node, usually the most recently created by [method play]. If no sounds are playing, this method fails and returns an empty playback.
</description>
</method>
<method name="has_stream_playback">
<return type="bool" />
<description>
- Returns whether the [AudioStreamPlayer] can return the [AudioStreamPlayback] object or not.
+ Returns [code]true[/code] if any sound is active, even if [member stream_paused] is set to [code]true[/code]. See also [member playing] and [method get_stream_playback].
</description>
</method>
<method name="play">
<return type="void" />
<param index="0" name="from_position" type="float" default="0.0" />
<description>
- Plays the audio from the given [param from_position], in seconds.
+ Plays a sound from the beginning, or the given [param from_position] in seconds.
</description>
</method>
<method name="seek">
<return type="void" />
<param index="0" name="to_position" type="float" />
<description>
- Sets the position from which audio will be played, in seconds.
+ Restarts all sounds to be played from the given [param to_position], in seconds. Does nothing if no sounds are playing.
</description>
</method>
<method name="stop">
<return type="void" />
<description>
- Stops the audio.
+ Stops all sounds from this node.
</description>
</method>
</methods>
<members>
<member name="autoplay" type="bool" setter="set_autoplay" getter="is_autoplay_enabled" default="false">
- If [code]true[/code], audio plays when added to scene tree.
+ If [code]true[/code], this node calls [method play] when entering the tree.
</member>
<member name="bus" type="StringName" setter="set_bus" getter="get_bus" default="&amp;&quot;Master&quot;">
- Bus on which this audio is playing.
- [b]Note:[/b] When setting this property, keep in mind that no validation is performed to see if the given name matches an existing bus. This is because audio bus layouts might be loaded after this property is set. If this given name can't be resolved at runtime, it will fall back to [code]"Master"[/code].
+ The target bus name. All sounds from this node will be playing on this bus.
+ [b]Note:[/b] At runtime, if no bus with the given name exists, all sounds will fall back on [code]"Master"[/code]. See also [method AudioServer.get_bus_name].
</member>
<member name="max_polyphony" type="int" setter="set_max_polyphony" getter="get_max_polyphony" default="1">
- The maximum number of sounds this node can play at the same time. Playing additional sounds after this value is reached will cut off the oldest sounds.
+ The maximum number of sounds this node can play at the same time. Calling [method play] after this value is reached will cut off the oldest sounds.
</member>
<member name="mix_target" type="int" setter="set_mix_target" getter="get_mix_target" enum="AudioStreamPlayer.MixTarget" default="0">
- If the audio configuration has more than two speakers, this sets the target channels. See [enum MixTarget] constants.
+ The mix target channels, as one of the [enum MixTarget] constants. Has no effect when two speakers or less are detected (see [enum AudioServer.SpeakerMode]).
</member>
<member name="pitch_scale" type="float" setter="set_pitch_scale" getter="get_pitch_scale" default="1.0">
- The pitch and the tempo of the audio, as a multiplier of the audio sample's sample rate.
+ The audio's pitch and tempo, as a multiplier of the [member stream]'s sample rate. A value of [code]2.0[/code] doubles the audio's pitch, while a value of [code]0.5[/code] halves the pitch.
</member>
<member name="playing" type="bool" setter="_set_playing" getter="is_playing" default="false">
- If [code]true[/code], audio is playing.
+ If [code]true[/code], this node is playing sounds. Setting this property has the same effect as [method play] and [method stop].
</member>
<member name="stream" type="AudioStream" setter="set_stream" getter="get_stream">
- The [AudioStream] object to be played.
+ The [AudioStream] resource to be played. Setting this property stops all currently playing sounds. If left empty, the [AudioStreamPlayer] does not work.
</member>
<member name="stream_paused" type="bool" setter="set_stream_paused" getter="get_stream_paused" default="false">
- If [code]true[/code], the playback is paused. You can resume it by setting [member stream_paused] to [code]false[/code].
+ If [code]true[/code], the sounds are paused. Setting [member stream_paused] to [code]false[/code] resumes all sounds.
+ [b]Note:[/b] This property is automatically changed when exiting or entering the tree, or this node is paused (see [member Node.process_mode]).
</member>
<member name="volume_db" type="float" setter="set_volume_db" getter="get_volume_db" default="0.0">
- Volume of sound, in dB.
+ Volume of sound, in decibel. This is an offset of the [member stream]'s volume.
+ [b]Note:[/b] To convert between decibel and linear energy (like most volume sliders do), use [method @GlobalScope.db_to_linear] and [method @GlobalScope.linear_to_db].
</member>
</members>
<signals>
<signal name="finished">
<description>
- Emitted when the audio stops playing.
+ Emitted when a sound finishes playing without interruptions. This signal is [i]not[/i] emitted when calling [method stop], or when exiting the tree while sounds are playing.
</description>
</signal>
</signals>
<constants>
<constant name="MIX_TARGET_STEREO" value="0" enum="MixTarget">
- The audio will be played only on the first channel.
+ The audio will be played only on the first channel. This is the default.
</constant>
<constant name="MIX_TARGET_SURROUND" value="1" enum="MixTarget">
The audio will be played on all surround channels.
diff --git a/doc/classes/AudioStreamWAV.xml b/doc/classes/AudioStreamWAV.xml
index 206b6361cc..3df814cb7f 100644
--- a/doc/classes/AudioStreamWAV.xml
+++ b/doc/classes/AudioStreamWAV.xml
@@ -15,7 +15,7 @@
<return type="int" enum="Error" />
<param index="0" name="path" type="String" />
<description>
- Saves the AudioStreamWAV as a WAV file to [param path]. Samples with IMA ADPCM format can't be saved.
+ Saves the AudioStreamWAV as a WAV file to [param path]. Samples with IMA ADPCM or QOA formats can't be saved.
[b]Note:[/b] A [code].wav[/code] extension is automatically appended to [param path] if it is missing.
</description>
</method>
@@ -56,6 +56,9 @@
<constant name="FORMAT_IMA_ADPCM" value="2" enum="Format">
Audio is compressed using IMA ADPCM.
</constant>
+ <constant name="FORMAT_QOA" value="3" enum="Format">
+ Audio is compressed as QOA ([url=https://qoaformat.org/]Quite OK Audio[/url]).
+ </constant>
<constant name="LOOP_DISABLED" value="0" enum="LoopMode">
Audio does not loop.
</constant>
diff --git a/doc/classes/BaseMaterial3D.xml b/doc/classes/BaseMaterial3D.xml
index 1bd4183b3c..fc8af02869 100644
--- a/doc/classes/BaseMaterial3D.xml
+++ b/doc/classes/BaseMaterial3D.xml
@@ -609,6 +609,9 @@
<constant name="BLEND_MODE_MUL" value="3" enum="BlendMode">
The color of the object is multiplied by the background.
</constant>
+ <constant name="BLEND_MODE_PREMULT_ALPHA" value="4" enum="BlendMode">
+ The color of the object is added to the background and the alpha channel is used to mask out the background. This is effectively a hybrid of the blend mix and add modes, useful for effects like fire where you want the flame to add but the smoke to mix. By default, this works with unshaded materials using premultiplied textures. For shaded materials, use the [code]PREMUL_ALPHA_FACTOR[/code] built-in so that lighting can be modulated as well.
+ </constant>
<constant name="ALPHA_ANTIALIASING_OFF" value="0" enum="AlphaAntiAliasing">
Disables Alpha AntiAliasing for the material.
</constant>
diff --git a/doc/classes/Basis.xml b/doc/classes/Basis.xml
index 32077c0b89..338d9523fa 100644
--- a/doc/classes/Basis.xml
+++ b/doc/classes/Basis.xml
@@ -15,10 +15,10 @@
<link title="Math documentation index">$DOCS_URL/tutorials/math/index.html</link>
<link title="Matrices and transforms">$DOCS_URL/tutorials/math/matrices_and_transforms.html</link>
<link title="Using 3D transforms">$DOCS_URL/tutorials/3d/using_transforms.html</link>
- <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/584</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
- <link title="2.5D Demo">https://godotengine.org/asset-library/asset/583</link>
+ <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/2787</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
+ <link title="2.5D Game Demo">https://godotengine.org/asset-library/asset/2783</link>
</tutorials>
<constructors>
<constructor name="Basis">
diff --git a/doc/classes/BoneAttachment3D.xml b/doc/classes/BoneAttachment3D.xml
index bafa463f82..a51b2d9a94 100644
--- a/doc/classes/BoneAttachment3D.xml
+++ b/doc/classes/BoneAttachment3D.xml
@@ -21,11 +21,10 @@
Returns whether the BoneAttachment3D node is using an external [Skeleton3D] rather than attempting to use its parent node as the [Skeleton3D].
</description>
</method>
- <method name="on_bone_pose_update">
+ <method name="on_skeleton_update">
<return type="void" />
- <param index="0" name="bone_index" type="int" />
<description>
- A function that is called automatically when the [Skeleton3D] the BoneAttachment3D node is using has a bone that has changed its pose. This function is where the BoneAttachment3D node updates its position so it is correctly bound when it is [i]not[/i] set to override the bone pose.
+ A function that is called automatically when the [Skeleton3D] is updated. This function is where the [BoneAttachment3D] node updates its position so it is correctly bound when it is [i]not[/i] set to override the bone pose.
</description>
</method>
<method name="set_external_skeleton">
diff --git a/doc/classes/BoxShape3D.xml b/doc/classes/BoxShape3D.xml
index 5190e6e759..ead5afd89c 100644
--- a/doc/classes/BoxShape3D.xml
+++ b/doc/classes/BoxShape3D.xml
@@ -8,9 +8,9 @@
[b]Performance:[/b] [BoxShape3D] is fast to check collisions against. It is faster than [CapsuleShape3D] and [CylinderShape3D], but slower than [SphereShape3D].
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
- <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
+ <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2739</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
</tutorials>
<members>
<member name="size" type="Vector3" setter="set_size" getter="get_size" default="Vector3(1, 1, 1)">
diff --git a/doc/classes/Button.xml b/doc/classes/Button.xml
index e5b47ffb89..d2af6179d9 100644
--- a/doc/classes/Button.xml
+++ b/doc/classes/Button.xml
@@ -36,8 +36,8 @@
[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.
</description>
<tutorials>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<members>
<member name="alignment" type="int" setter="set_text_alignment" getter="get_text_alignment" enum="HorizontalAlignment" default="1">
@@ -122,7 +122,7 @@
The horizontal space between [Button]'s icon and text. Negative values will be treated as [code]0[/code] when used.
</theme_item>
<theme_item name="icon_max_width" data_type="constant" type="int" default="0">
- The maximum allowed width of the [Button]'s icon. This limit is applied on top of the default size of the icon, or its expanded size if [member expand_icon] is [code]true[/code]. The height is adjusted according to the icon's ratio.
+ The maximum allowed width of the [Button]'s icon. This limit is applied on top of the default size of the icon, or its expanded size if [member expand_icon] is [code]true[/code]. The height is adjusted according to the icon's ratio. If the button has additional icons (e.g. [CheckBox]), they will also be limited.
</theme_item>
<theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
diff --git a/doc/classes/Camera2D.xml b/doc/classes/Camera2D.xml
index 6319bfb3d1..da98e6c26a 100644
--- a/doc/classes/Camera2D.xml
+++ b/doc/classes/Camera2D.xml
@@ -10,9 +10,8 @@
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.
</description>
<tutorials>
- <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/120</link>
- <link title="2D Isometric Demo">https://godotengine.org/asset-library/asset/112</link>
- <link title="2D HDR Demo">https://godotengine.org/asset-library/asset/110</link>
+ <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/2727</link>
+ <link title="2D Isometric Demo">https://godotengine.org/asset-library/asset/2718</link>
</tutorials>
<methods>
<method name="align">
diff --git a/doc/classes/Camera3D.xml b/doc/classes/Camera3D.xml
index 01890b471c..27194122d5 100644
--- a/doc/classes/Camera3D.xml
+++ b/doc/classes/Camera3D.xml
@@ -7,7 +7,7 @@
[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.
</description>
<tutorials>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="clear_current">
diff --git a/doc/classes/CameraServer.xml b/doc/classes/CameraServer.xml
index 983bd6cd91..020b5d887b 100644
--- a/doc/classes/CameraServer.xml
+++ b/doc/classes/CameraServer.xml
@@ -6,7 +6,7 @@
<description>
The [CameraServer] keeps track of different cameras accessible in Godot. These are external cameras such as webcams or the cameras on your phone.
It is notably used to provide AR modules with a video feed from the camera.
- [b]Note:[/b] This class is currently only implemented on macOS and iOS. On other platforms, no [CameraFeed]s will be available.
+ [b]Note:[/b] This class is currently only implemented on macOS and iOS. To get a [CameraFeed] on iOS, the camera plugin from [url=https://github.com/godotengine/godot-ios-plugins]godot-ios-plugins[/url] is required. On other platforms, no [CameraFeed]s will be available.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml
index 72783bc5d6..207045b065 100644
--- a/doc/classes/CanvasItem.xml
+++ b/doc/classes/CanvasItem.xml
@@ -8,11 +8,12 @@
Any [CanvasItem] can draw. For this, [method queue_redraw] is called by the engine, then [constant NOTIFICATION_DRAW] will be received on idle time to request a redraw. Because of this, canvas items don't need to be redrawn on every frame, improving the performance significantly. Several functions for drawing on the [CanvasItem] are provided (see [code]draw_*[/code] functions). However, they can only be used inside [method _draw], its corresponding [method Object._notification] or methods connected to the [signal draw] signal.
Canvas items are drawn in tree order on their canvas layer. By default, children are on top of their parents, so a root [CanvasItem] will be drawn behind everything. This behavior can be changed on a per-item basis.
A [CanvasItem] can be hidden, which will also hide its children. By adjusting various other properties of a [CanvasItem], you can also modulate its color (via [member modulate] or [member self_modulate]), change its Z-index, blend mode, and more.
+ Note that properties like transform, modulation, and visibility are only propagated to [i]direct[/i] [CanvasItem] child nodes. If there is a non-[CanvasItem] node in between, like [Node] or [AnimationPlayer], the [CanvasItem] nodes below will have an independent position and [member modulate] chain. See also [member top_level].
</description>
<tutorials>
<link title="Viewport and canvas transforms">$DOCS_URL/tutorials/2d/2d_transforms.html</link>
<link title="Custom drawing in 2D">$DOCS_URL/tutorials/2d/custom_drawing_in_2d.html</link>
- <link title="Audio Spectrum Demo">https://godotengine.org/asset-library/asset/528</link>
+ <link title="Audio Spectrum Visualizer Demo">https://godotengine.org/asset-library/asset/2762</link>
</tutorials>
<methods>
<method name="_draw" qualifiers="virtual">
@@ -76,8 +77,15 @@
<param index="0" name="position" type="Vector2" />
<param index="1" name="radius" type="float" />
<param index="2" name="color" type="Color" />
+ <param index="3" name="filled" type="bool" default="true" />
+ <param index="4" name="width" type="float" default="-1.0" />
+ <param index="5" name="antialiased" type="bool" default="false" />
<description>
- Draws a colored, filled circle. See also [method draw_arc], [method draw_polyline] and [method draw_polygon].
+ Draws a circle. See also [method draw_arc], [method draw_polyline], and [method draw_polygon].
+ If [param filled] is [code]true[/code], the circle will be filled with the [param color] specified. If [param filled] is [code]false[/code], the circle will be drawn as a stroke with the [param color] and [param width] specified.
+ If [param width] is negative, then two-point primitives will be drawn instead of a four-point ones. This means that when the CanvasItem is scaled, the lines will remain thin. If this behavior is not desired, then pass a positive [param width] like [code]1.0[/code].
+ If [param antialiased] is [code]true[/code], half transparent "feathers" will be attached to the boundary, making outlines smooth.
+ [b]Note:[/b] [param width] is only effective if [param filled] is [code]false[/code].
</description>
</method>
<method name="draw_colored_polygon">
@@ -98,9 +106,12 @@
<param index="3" name="width" type="float" default="-1.0" />
<param index="4" name="dash" type="float" default="2.0" />
<param index="5" name="aligned" type="bool" default="true" />
+ <param index="6" name="antialiased" type="bool" default="false" />
<description>
Draws a dashed line from a 2D point to another, with a given color and width. See also [method draw_multiline] and [method draw_polyline].
If [param width] is negative, then a two-point primitives will be drawn instead of a four-point ones. This means that when the CanvasItem is scaled, the line parts will remain thin. If this behavior is not desired, then pass a positive [param width] like [code]1.0[/code].
+ If [param antialiased] is [code]true[/code], half transparent "feathers" will be attached to the boundary, making outlines smooth.
+ [b]Note:[/b] [param antialiased] is only effective if [param width] is greater than [code]0.0[/code].
</description>
</method>
<method name="draw_end_animation">
@@ -168,9 +179,11 @@
<param index="0" name="points" type="PackedVector2Array" />
<param index="1" name="color" type="Color" />
<param index="2" name="width" type="float" default="-1.0" />
+ <param index="3" name="antialiased" type="bool" default="false" />
<description>
Draws multiple disconnected lines with a uniform [param width] and [param color]. Each line is defined by two consecutive points from [param points] array, i.e. i-th segment consists of [code]points[2 * i][/code], [code]points[2 * i + 1][/code] endpoints. When drawing large amounts of lines, this is faster than using individual [method draw_line] calls. To draw interconnected lines, use [method draw_polyline] instead.
If [param width] is negative, then two-point primitives will be drawn instead of a four-point ones. This means that when the CanvasItem is scaled, the lines will remain thin. If this behavior is not desired, then pass a positive [param width] like [code]1.0[/code].
+ [b]Note:[/b] [param antialiased] is only effective if [param width] is greater than [code]0.0[/code].
</description>
</method>
<method name="draw_multiline_colors">
@@ -178,9 +191,11 @@
<param index="0" name="points" type="PackedVector2Array" />
<param index="1" name="colors" type="PackedColorArray" />
<param index="2" name="width" type="float" default="-1.0" />
+ <param index="3" name="antialiased" type="bool" default="false" />
<description>
Draws multiple disconnected lines with a uniform [param width] and segment-by-segment coloring. Each segment is defined by two consecutive points from [param points] array and a corresponding color from [param colors] array, i.e. i-th segment consists of [code]points[2 * i][/code], [code]points[2 * i + 1][/code] endpoints and has [code]colors[i][/code] color. When drawing large amounts of lines, this is faster than using individual [method draw_line] calls. To draw interconnected lines, use [method draw_polyline_colors] instead.
If [param width] is negative, then two-point primitives will be drawn instead of a four-point ones. This means that when the CanvasItem is scaled, the lines will remain thin. If this behavior is not desired, then pass a positive [param width] like [code]1.0[/code].
+ [b]Note:[/b] [param antialiased] is only effective if [param width] is greater than [code]0.0[/code].
</description>
</method>
<method name="draw_multiline_string" qualifiers="const">
@@ -276,9 +291,11 @@
<param index="1" name="color" type="Color" />
<param index="2" name="filled" type="bool" default="true" />
<param index="3" name="width" type="float" default="-1.0" />
+ <param index="4" name="antialiased" type="bool" default="false" />
<description>
Draws a rectangle. If [param filled] is [code]true[/code], the rectangle will be filled with the [param color] specified. If [param filled] is [code]false[/code], the rectangle will be drawn as a stroke with the [param color] and [param width] specified. See also [method draw_texture_rect].
If [param width] is negative, then two-point primitives will be drawn instead of a four-point ones. This means that when the CanvasItem is scaled, the lines will remain thin. If this behavior is not desired, then pass a positive [param width] like [code]1.0[/code].
+ If [param antialiased] is [code]true[/code], half transparent "feathers" will be attached to the boundary, making outlines smooth.
[b]Note:[/b] [param width] is only effective if [param filled] is [code]false[/code].
[b]Note:[/b] Unfilled rectangles drawn with a negative [param width] may not display perfectly. For example, corners may be missing or brighter due to overlapping lines (for a translucent [param color]).
</description>
@@ -606,14 +623,15 @@
[b]Note:[/b] For controls that inherit [Popup], the correct way to make them visible is to call one of the multiple [code]popup*()[/code] functions instead.
</member>
<member name="y_sort_enabled" type="bool" setter="set_y_sort_enabled" getter="is_y_sort_enabled" default="false">
- If [code]true[/code], this [CanvasItem] and its [CanvasItem] child nodes are sorted according to the Y position. Nodes with a lower Y position are drawn before those with a higher Y position. If [code]false[/code], Y-sorting is disabled.
- 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.
+ If [code]true[/code], this and child [CanvasItem] nodes with a lower Y position are rendered in front of nodes with a higher Y position. If [code]false[/code], this and child [CanvasItem] nodes are rendered normally in scene tree order.
+ With Y-sorting enabled on a parent node ('A') but disabled on a child node ('B'), the child node ('B') is sorted but its children ('C1', 'C2', etc) render together on the same Y position as the child node 'B'. This allows you to organize the render order of a scene without changing the scene tree.
+ Nodes sort relative to each other only if they are on the same [member z_index].
</member>
<member name="z_as_relative" type="bool" setter="set_z_as_relative" getter="is_z_relative" default="true">
If [code]true[/code], the node's Z index is relative to its parent's Z index. If this node's Z index is 2 and its parent's effective Z index is 3, then this node's effective Z index will be 2 + 3 = 5.
</member>
<member name="z_index" type="int" setter="set_z_index" getter="get_z_index" default="0">
- 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).
+ 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).
[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.
</member>
</members>
diff --git a/doc/classes/CanvasLayer.xml b/doc/classes/CanvasLayer.xml
index a91b003d79..597ec78089 100644
--- a/doc/classes/CanvasLayer.xml
+++ b/doc/classes/CanvasLayer.xml
@@ -12,7 +12,7 @@
<tutorials>
<link title="Viewport and canvas transforms">$DOCS_URL/tutorials/2d/2d_transforms.html</link>
<link title="Canvas layers">$DOCS_URL/tutorials/2d/canvas_layers.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<methods>
<method name="get_canvas" qualifiers="const">
diff --git a/doc/classes/CapsuleShape3D.xml b/doc/classes/CapsuleShape3D.xml
index 2c8c2cef9e..4c6b3a870f 100644
--- a/doc/classes/CapsuleShape3D.xml
+++ b/doc/classes/CapsuleShape3D.xml
@@ -8,7 +8,7 @@
[b]Performance:[/b] [CapsuleShape3D] is fast to check collisions against. It is faster than [CylinderShape3D], but slower than [SphereShape3D] and [BoxShape3D].
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
</tutorials>
<members>
<member name="height" type="float" setter="set_height" getter="get_height" default="2.0">
diff --git a/doc/classes/CharacterBody2D.xml b/doc/classes/CharacterBody2D.xml
index b66a01a282..ede4d63cfc 100644
--- a/doc/classes/CharacterBody2D.xml
+++ b/doc/classes/CharacterBody2D.xml
@@ -10,8 +10,8 @@
<tutorials>
<link title="Kinematic character (2D)">$DOCS_URL/tutorials/physics/kinematic_character_2d.html</link>
<link title="Using CharacterBody2D">$DOCS_URL/tutorials/physics/using_character_body_2d.html</link>
- <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/113</link>
- <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/120</link>
+ <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2719</link>
+ <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/2727</link>
</tutorials>
<methods>
<method name="apply_floor_snap">
@@ -30,7 +30,8 @@
<method name="get_floor_normal" qualifiers="const">
<return type="Vector2" />
<description>
- Returns the surface normal of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns [code]true[/code].
+ Returns the collision normal of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns [code]true[/code].
+ [b]Warning:[/b] The collision normal is not always the same as the surface normal.
</description>
</method>
<method name="get_last_motion" qualifiers="const">
@@ -94,7 +95,8 @@
<method name="get_wall_normal" qualifiers="const">
<return type="Vector2" />
<description>
- Returns the surface normal of the wall at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_wall] returns [code]true[/code].
+ Returns the collision normal of the wall at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_wall] returns [code]true[/code].
+ [b]Warning:[/b] The collision normal is not always the same as the surface normal.
</description>
</method>
<method name="is_on_ceiling" qualifiers="const">
diff --git a/doc/classes/CharacterBody3D.xml b/doc/classes/CharacterBody3D.xml
index 2382c77a12..474adfc6ff 100644
--- a/doc/classes/CharacterBody3D.xml
+++ b/doc/classes/CharacterBody3D.xml
@@ -9,10 +9,10 @@
</description>
<tutorials>
<link title="Kinematic character (2D)">$DOCS_URL/tutorials/physics/kinematic_character_2d.html</link>
- <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2739</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="apply_floor_snap">
@@ -31,7 +31,8 @@
<method name="get_floor_normal" qualifiers="const">
<return type="Vector3" />
<description>
- Returns the surface normal of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns [code]true[/code].
+ Returns the collision normal of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns [code]true[/code].
+ [b]Warning:[/b] The collision normal is not always the same as the surface normal.
</description>
</method>
<method name="get_last_motion" qualifiers="const">
@@ -86,7 +87,8 @@
<method name="get_wall_normal" qualifiers="const">
<return type="Vector3" />
<description>
- Returns the surface normal of the wall at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_wall] returns [code]true[/code].
+ Returns the collision normal of the wall at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_wall] returns [code]true[/code].
+ [b]Warning:[/b] The collision normal is not always the same as the surface normal.
</description>
</method>
<method name="is_on_ceiling" qualifiers="const">
diff --git a/doc/classes/ClassDB.xml b/doc/classes/ClassDB.xml
index 3f71406091..59ed0b8fe7 100644
--- a/doc/classes/ClassDB.xml
+++ b/doc/classes/ClassDB.xml
@@ -91,6 +91,14 @@
Returns the value of [param property] of [param object] or its ancestry.
</description>
</method>
+ <method name="class_get_property_default_value" qualifiers="const">
+ <return type="Variant" />
+ <param index="0" name="class" type="StringName" />
+ <param index="1" name="property" type="StringName" />
+ <description>
+ Returns the default value of [param property] of [param class] or its ancestor classes.
+ </description>
+ </method>
<method name="class_get_property_list" qualifiers="const">
<return type="Dictionary[]" />
<param index="0" name="class" type="StringName" />
@@ -192,6 +200,15 @@
Returns whether this [param class] is enabled or not.
</description>
</method>
+ <method name="is_class_enum_bitfield" qualifiers="const">
+ <return type="bool" />
+ <param index="0" name="class" type="StringName" />
+ <param index="1" name="enum" type="StringName" />
+ <param index="2" name="no_inheritance" type="bool" default="false" />
+ <description>
+ Returns whether [param class] (or its ancestor classes if [param no_inheritance] is [code]false[/code]) has an enum called [param enum] that is a bitfield.
+ </description>
+ </method>
<method name="is_parent_class" qualifiers="const">
<return type="bool" />
<param index="0" name="class" type="StringName" />
diff --git a/doc/classes/CodeEdit.xml b/doc/classes/CodeEdit.xml
index 7c6f1a51c4..d455799c29 100644
--- a/doc/classes/CodeEdit.xml
+++ b/doc/classes/CodeEdit.xml
@@ -14,7 +14,7 @@
<return type="void" />
<param index="0" name="replace" type="bool" />
<description>
- Override this method to define how the selected entry should be inserted. If [param replace] is true, any existing text should be replaced.
+ Override this method to define how the selected entry should be inserted. If [param replace] is [code]true[/code], any existing text should be replaced.
</description>
</method>
<method name="_filter_code_completion_candidates" qualifiers="virtual const">
@@ -29,7 +29,7 @@
<return type="void" />
<param index="0" name="force" type="bool" />
<description>
- Override this method to define what happens when the user requests code completion. If [param force] is true, any checks should be bypassed.
+ Override this method to define what happens when the user requests code completion. If [param force] is [code]true[/code], any checks should be bypassed.
</description>
</method>
<method name="add_auto_brace_completion_pair">
@@ -123,7 +123,7 @@
<return type="void" />
<param index="0" name="replace" type="bool" default="false" />
<description>
- Inserts the selected entry into the text. If [param replace] is true, any existing text is replaced rather than merged.
+ Inserts the selected entry into the text. If [param replace] is [code]true[/code], any existing text is replaced rather than merged.
</description>
</method>
<method name="convert_indent">
@@ -144,6 +144,12 @@
Code regions are delimited using start and end tags (respectively [code]region[/code] and [code]endregion[/code] by default) preceded by one line comment delimiter. (eg. [code]#region[/code] and [code]#endregion[/code])
</description>
</method>
+ <method name="delete_lines">
+ <return type="void" />
+ <description>
+ Deletes all lines that are selected or have a caret on them.
+ </description>
+ </method>
<method name="do_indent">
<return type="void" />
<description>
@@ -156,6 +162,12 @@
Duplicates all lines currently selected with any caret. Duplicates the entire line beneath the current one no matter where the caret is within the line.
</description>
</method>
+ <method name="duplicate_selection">
+ <return type="void" />
+ <description>
+ Duplicates all selected text and duplicates all lines with a caret on them.
+ </description>
+ </method>
<method name="fold_all_lines">
<return type="void" />
<description>
@@ -379,6 +391,18 @@
Returns whether the line at the specified index is folded or not.
</description>
</method>
+ <method name="move_lines_down">
+ <return type="void" />
+ <description>
+ Moves all lines down that are selected or have a caret on them.
+ </description>
+ </method>
+ <method name="move_lines_up">
+ <return type="void" />
+ <description>
+ Moves all lines up that are selected or have a caret on them.
+ </description>
+ </method>
<method name="remove_comment_delimiter">
<return type="void" />
<param index="0" name="start_key" type="String" />
@@ -397,7 +421,7 @@
<return type="void" />
<param index="0" name="force" type="bool" default="false" />
<description>
- 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.
+ Emits [signal code_completion_requested], if [param force] is [code]true[/code] 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.
</description>
</method>
<method name="set_code_completion_selected_index">
@@ -467,6 +491,12 @@
Toggle the folding of the code block at the given line.
</description>
</method>
+ <method name="toggle_foldable_lines_at_carets">
+ <return type="void" />
+ <description>
+ Toggle the folding of the code block on all lines with a caret on them.
+ </description>
+ </method>
<method name="unfold_all_lines">
<return type="void" />
<description>
diff --git a/doc/classes/CollisionPolygon2D.xml b/doc/classes/CollisionPolygon2D.xml
index 29535ffd64..1805683de5 100644
--- a/doc/classes/CollisionPolygon2D.xml
+++ b/doc/classes/CollisionPolygon2D.xml
@@ -26,7 +26,6 @@
<member name="polygon" type="PackedVector2Array" setter="set_polygon" getter="get_polygon" default="PackedVector2Array()">
The polygon's list of vertices. Each point will be connected to the next, and the final point will be connected to the first.
[b]Note:[/b] The returned vertices are in the local coordinate space of the given [CollisionPolygon2D].
- [b]Warning:[/b] The returned value is a clone of the [PackedVector2Array], not a reference.
</member>
</members>
<constants>
diff --git a/doc/classes/CollisionPolygon3D.xml b/doc/classes/CollisionPolygon3D.xml
index 16090c203e..4f5866c348 100644
--- a/doc/classes/CollisionPolygon3D.xml
+++ b/doc/classes/CollisionPolygon3D.xml
@@ -21,7 +21,6 @@
</member>
<member name="polygon" type="PackedVector2Array" setter="set_polygon" getter="get_polygon" default="PackedVector2Array()">
Array of vertices which define the 2D polygon in the local XY plane.
- [b]Note:[/b] The returned value is a copy of the original. Methods which mutate the size or properties of the return value will not impact the original polygon. To change properties of the polygon, assign it to a temporary variable and make changes before reassigning the class property.
</member>
</members>
</class>
diff --git a/doc/classes/CollisionShape2D.xml b/doc/classes/CollisionShape2D.xml
index 1320982376..dd04bf7b82 100644
--- a/doc/classes/CollisionShape2D.xml
+++ b/doc/classes/CollisionShape2D.xml
@@ -8,9 +8,9 @@
</description>
<tutorials>
<link title="Physics introduction">$DOCS_URL/tutorials/physics/physics_introduction.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="2D Pong Demo">https://godotengine.org/asset-library/asset/121</link>
- <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/113</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="2D Pong Demo">https://godotengine.org/asset-library/asset/2728</link>
+ <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2719</link>
</tutorials>
<members>
<member name="debug_color" type="Color" setter="set_debug_color" getter="get_debug_color" default="Color(0, 0, 0, 1)">
diff --git a/doc/classes/CollisionShape3D.xml b/doc/classes/CollisionShape3D.xml
index f6c0c323f4..a4e0ed0b28 100644
--- a/doc/classes/CollisionShape3D.xml
+++ b/doc/classes/CollisionShape3D.xml
@@ -9,9 +9,9 @@
</description>
<tutorials>
<link title="Physics introduction">$DOCS_URL/tutorials/physics/physics_introduction.html</link>
- <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2739</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="make_convex_from_siblings">
diff --git a/doc/classes/Color.xml b/doc/classes/Color.xml
index 942d3bc80d..37beca5f81 100644
--- a/doc/classes/Color.xml
+++ b/doc/classes/Color.xml
@@ -10,9 +10,9 @@
[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/color_constants.png]Color constants cheatsheet[/url]
</description>
<tutorials>
- <link title="2D GD Paint Demo">https://godotengine.org/asset-library/asset/517</link>
- <link title="Tween Demo">https://godotengine.org/asset-library/asset/146</link>
- <link title="GUI Drag And Drop Demo">https://godotengine.org/asset-library/asset/133</link>
+ <link title="2D GD Paint Demo">https://godotengine.org/asset-library/asset/2768</link>
+ <link title="Tween Interpolation Demo">https://godotengine.org/asset-library/asset/2733</link>
+ <link title="GUI Drag And Drop Demo">https://godotengine.org/asset-library/asset/2767</link>
</tutorials>
<constructors>
<constructor name="Color">
diff --git a/doc/classes/ColorPicker.xml b/doc/classes/ColorPicker.xml
index 9aa0122ed2..cf26f917e1 100644
--- a/doc/classes/ColorPicker.xml
+++ b/doc/classes/ColorPicker.xml
@@ -8,7 +8,7 @@
[b]Note:[/b] This control is the color picker widget itself. You can use a [ColorPickerButton] instead if you need a button that brings up a [ColorPicker] in a popup.
</description>
<tutorials>
- <link title="Tween Demo">https://godotengine.org/asset-library/asset/146</link>
+ <link title="Tween Interpolation Demo">https://godotengine.org/asset-library/asset/2733</link>
</tutorials>
<methods>
<method name="add_preset">
diff --git a/doc/classes/ColorPickerButton.xml b/doc/classes/ColorPickerButton.xml
index c53d61f036..bec2520397 100644
--- a/doc/classes/ColorPickerButton.xml
+++ b/doc/classes/ColorPickerButton.xml
@@ -9,8 +9,8 @@
[b]Note:[/b] By default, the button may not be wide enough for the color preview swatch to be visible. Make sure to set [member Control.custom_minimum_size] to a big enough value to give the button enough space.
</description>
<tutorials>
- <link title="GUI Drag And Drop Demo">https://godotengine.org/asset-library/asset/133</link>
- <link title="2D GD Paint Demo">https://godotengine.org/asset-library/asset/517</link>
+ <link title="2D GD Paint Demo">https://godotengine.org/asset-library/asset/2768</link>
+ <link title="GUI Drag And Drop Demo">https://godotengine.org/asset-library/asset/2767</link>
</tutorials>
<methods>
<method name="get_picker">
diff --git a/doc/classes/ColorRect.xml b/doc/classes/ColorRect.xml
index 413d51db72..6b2ddd748e 100644
--- a/doc/classes/ColorRect.xml
+++ b/doc/classes/ColorRect.xml
@@ -7,7 +7,7 @@
Displays a rectangle filled with a solid [member color]. If you need to display the border alone, consider using a [Panel] instead.
</description>
<tutorials>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<members>
<member name="color" type="Color" setter="set_color" getter="get_color" default="Color(1, 1, 1, 1)" keywords="colour">
diff --git a/doc/classes/Compositor.xml b/doc/classes/Compositor.xml
index c030896b6f..7605083319 100644
--- a/doc/classes/Compositor.xml
+++ b/doc/classes/Compositor.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Compositor" inherits="Resource" experimental="More customisation of the rendering pipeline will be added in the future." xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="Compositor" inherits="Resource" experimental="More customization of the rendering pipeline will be added in the future." xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Stores attributes used to customize how a Viewport is rendered.
</brief_description>
diff --git a/doc/classes/ConcavePolygonShape3D.xml b/doc/classes/ConcavePolygonShape3D.xml
index 7e4df2073f..5c93325b63 100644
--- a/doc/classes/ConcavePolygonShape3D.xml
+++ b/doc/classes/ConcavePolygonShape3D.xml
@@ -11,7 +11,7 @@
[b]Performance:[/b] Due to its complexity, [ConcavePolygonShape3D] is the slowest 3D collision shape to check collisions against. Its use should generally be limited to level geometry. For convex geometry, [ConvexPolygonShape3D] should be used. For dynamic physics bodies that need concave collision, several [ConvexPolygonShape3D]s can be used to represent its collision by using convex decomposition; see [ConvexPolygonShape3D]'s documentation for instructions.
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
</tutorials>
<methods>
<method name="get_faces" qualifiers="const">
diff --git a/doc/classes/ConfigFile.xml b/doc/classes/ConfigFile.xml
index e6b28ae98e..feeea339fe 100644
--- a/doc/classes/ConfigFile.xml
+++ b/doc/classes/ConfigFile.xml
@@ -5,7 +5,7 @@
</brief_description>
<description>
This helper class can be used to store [Variant] values on the filesystem using INI-style formatting. The stored values are identified by a section and a key:
- [codeblock]
+ [codeblock lang=text]
[section]
some_key=42
string_example="Hello World3D!"
diff --git a/doc/classes/ConfirmationDialog.xml b/doc/classes/ConfirmationDialog.xml
index 8fa5dac7bf..5cdff076bd 100644
--- a/doc/classes/ConfirmationDialog.xml
+++ b/doc/classes/ConfirmationDialog.xml
@@ -8,10 +8,10 @@
To get cancel action, you can use:
[codeblocks]
[gdscript]
- get_cancel_button().pressed.connect(self.canceled)
+ get_cancel_button().pressed.connect(_on_canceled)
[/gdscript]
[csharp]
- GetCancelButton().Pressed += Canceled;
+ GetCancelButton().Pressed += OnCanceled;
[/csharp]
[/codeblocks]
</description>
diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml
index cc32964e87..a0c76a3ad6 100644
--- a/doc/classes/Control.xml
+++ b/doc/classes/Control.xml
@@ -937,14 +937,14 @@
<member name="anchor_top" type="float" setter="_set_anchor" getter="get_anchor" default="0.0">
Anchors the top edge of the node to the origin, the center or the end of its parent control. It changes how the top offset updates when the node moves or changes size. You can use one of the [enum Anchor] constants for convenience.
</member>
- <member name="auto_translate" type="bool" setter="set_auto_translate" getter="is_auto_translating" default="true" deprecated="Use [member Node.auto_translate_mode] instead.">
+ <member name="auto_translate" type="bool" setter="set_auto_translate" getter="is_auto_translating" deprecated="Use [member Node.auto_translate_mode] instead.">
Toggles if any text should automatically change to its translated version depending on the current locale.
</member>
<member name="clip_contents" type="bool" setter="set_clip_contents" getter="is_clipping_contents" default="false">
Enables whether rendering of [CanvasItem] based children should be clipped to this control's rectangle. If [code]true[/code], parts of a child which would be visibly outside of this control's rectangle will not be rendered and won't receive input.
</member>
<member name="custom_minimum_size" type="Vector2" setter="set_custom_minimum_size" getter="get_custom_minimum_size" default="Vector2(0, 0)">
- The minimum size of the node's bounding rectangle. If you set it to a value greater than (0, 0), the node's bounding rectangle will always have at least this size, even if its content is smaller. If it's set to (0, 0), the node sizes automatically to fit its content, be it a texture or child nodes.
+ The minimum size of the node's bounding rectangle. If you set it to a value greater than [code](0, 0)[/code], the node's bounding rectangle will always have at least this size. Note that [Control] nodes have their internal minimum size returned by [method get_minimum_size]. It depends on the control's contents, like text, textures, or style boxes. The actual minimum size is the maximum value of this property and the internal minimum size (see [method get_combined_minimum_size]).
</member>
<member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" enum="Control.FocusMode" default="0">
The focus access mode for the control (None, Click or All). Only one Control can be focused at the same time, and it will receive keyboard, gamepad, and mouse signals.
diff --git a/doc/classes/ConvexPolygonShape3D.xml b/doc/classes/ConvexPolygonShape3D.xml
index 280cadde78..98c3459289 100644
--- a/doc/classes/ConvexPolygonShape3D.xml
+++ b/doc/classes/ConvexPolygonShape3D.xml
@@ -10,7 +10,7 @@
[b]Performance:[/b] [ConvexPolygonShape3D] is faster to check collisions against compared to [ConcavePolygonShape3D], but it is slower than primitive collision shapes such as [SphereShape3D] and [BoxShape3D]. Its use should generally be limited to medium-sized objects that cannot have their collision accurately represented by primitive shapes.
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
</tutorials>
<members>
<member name="points" type="PackedVector3Array" setter="set_points" getter="get_points" default="PackedVector3Array()">
diff --git a/doc/classes/Crypto.xml b/doc/classes/Crypto.xml
index 65abc4c641..0effd54fb9 100644
--- a/doc/classes/Crypto.xml
+++ b/doc/classes/Crypto.xml
@@ -8,66 +8,67 @@
Currently, this includes asymmetric key encryption/decryption, signing/verification, and generating cryptographically secure random bytes, RSA keys, HMAC digests, and self-signed [X509Certificate]s.
[codeblocks]
[gdscript]
- extends Node
-
var crypto = Crypto.new()
- var key = CryptoKey.new()
- var cert = X509Certificate.new()
-
- func _ready():
- # Generate new RSA key.
- key = crypto.generate_rsa(4096)
- # Generate new self-signed certificate with the given key.
- cert = crypto.generate_self_signed_certificate(key, "CN=mydomain.com,O=My Game Company,C=IT")
- # Save key and certificate in the user folder.
- key.save("user://generated.key")
- cert.save("user://generated.crt")
- # Encryption
- var data = "Some data"
- var encrypted = crypto.encrypt(key, data.to_utf8_buffer())
- # Decryption
- var decrypted = crypto.decrypt(key, encrypted)
- # Signing
- var signature = crypto.sign(HashingContext.HASH_SHA256, data.sha256_buffer(), key)
- # Verifying
- var verified = crypto.verify(HashingContext.HASH_SHA256, data.sha256_buffer(), signature, key)
- # Checks
- assert(verified)
- assert(data.to_utf8_buffer() == decrypted)
+
+ # Generate new RSA key.
+ var key = crypto.generate_rsa(4096)
+
+ # Generate new self-signed certificate with the given key.
+ var cert = crypto.generate_self_signed_certificate(key, "CN=mydomain.com,O=My Game Company,C=IT")
+
+ # Save key and certificate in the user folder.
+ key.save("user://generated.key")
+ cert.save("user://generated.crt")
+
+ # Encryption
+ var data = "Some data"
+ var encrypted = crypto.encrypt(key, data.to_utf8_buffer())
+
+ # Decryption
+ var decrypted = crypto.decrypt(key, encrypted)
+
+ # Signing
+ var signature = crypto.sign(HashingContext.HASH_SHA256, data.sha256_buffer(), key)
+
+ # Verifying
+ var verified = crypto.verify(HashingContext.HASH_SHA256, data.sha256_buffer(), signature, key)
+
+ # Checks
+ assert(verified)
+ assert(data.to_utf8_buffer() == decrypted)
[/gdscript]
[csharp]
using Godot;
using System.Diagnostics;
- public partial class MyNode : Node
- {
- private Crypto _crypto = new Crypto();
- private CryptoKey _key = new CryptoKey();
- private X509Certificate _cert = new X509Certificate();
-
- public override void _Ready()
- {
- // Generate new RSA key.
- _key = _crypto.GenerateRsa(4096);
- // Generate new self-signed certificate with the given key.
- _cert = _crypto.GenerateSelfSignedCertificate(_key, "CN=mydomain.com,O=My Game Company,C=IT");
- // Save key and certificate in the user folder.
- _key.Save("user://generated.key");
- _cert.Save("user://generated.crt");
- // Encryption
- string data = "Some data";
- byte[] encrypted = _crypto.Encrypt(_key, data.ToUtf8Buffer());
- // Decryption
- byte[] decrypted = _crypto.Decrypt(_key, encrypted);
- // Signing
- byte[] signature = _crypto.Sign(HashingContext.HashType.Sha256, Data.Sha256Buffer(), _key);
- // Verifying
- bool verified = _crypto.Verify(HashingContext.HashType.Sha256, Data.Sha256Buffer(), signature, _key);
- // Checks
- Debug.Assert(verified);
- Debug.Assert(data.ToUtf8Buffer() == decrypted);
- }
- }
+ Crypto crypto = new Crypto();
+
+ // Generate new RSA key.
+ CryptoKey key = crypto.GenerateRsa(4096);
+
+ // Generate new self-signed certificate with the given key.
+ X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "CN=mydomain.com,O=My Game Company,C=IT");
+
+ // Save key and certificate in the user folder.
+ key.Save("user://generated.key");
+ cert.Save("user://generated.crt");
+
+ // Encryption
+ string data = "Some data";
+ byte[] encrypted = crypto.Encrypt(key, data.ToUtf8Buffer());
+
+ // Decryption
+ byte[] decrypted = crypto.Decrypt(key, encrypted);
+
+ // Signing
+ byte[] signature = crypto.Sign(HashingContext.HashType.Sha256, Data.Sha256Buffer(), key);
+
+ // Verifying
+ bool verified = crypto.Verify(HashingContext.HashType.Sha256, Data.Sha256Buffer(), signature, key);
+
+ // Checks
+ Debug.Assert(verified);
+ Debug.Assert(data.ToUtf8Buffer() == decrypted);
[/csharp]
[/codeblocks]
</description>
diff --git a/doc/classes/CryptoKey.xml b/doc/classes/CryptoKey.xml
index ff826a3ae5..dd128b6806 100644
--- a/doc/classes/CryptoKey.xml
+++ b/doc/classes/CryptoKey.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="CryptoKey" inherits="Resource" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
- A cryptographic key (RSA).
+ A cryptographic key (RSA or elliptic-curve).
</brief_description>
<description>
The CryptoKey class represents a cryptographic key. Keys can be loaded and saved like any other [Resource].
diff --git a/doc/classes/CylinderShape3D.xml b/doc/classes/CylinderShape3D.xml
index 8bec199ab6..db98cac6e3 100644
--- a/doc/classes/CylinderShape3D.xml
+++ b/doc/classes/CylinderShape3D.xml
@@ -9,9 +9,9 @@
[b]Performance:[/b] [CylinderShape3D] is fast to check collisions against, but it is slower than [CapsuleShape3D], [BoxShape3D], and [SphereShape3D].
</description>
<tutorials>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="height" type="float" setter="set_height" getter="get_height" default="2.0">
diff --git a/doc/classes/Dictionary.xml b/doc/classes/Dictionary.xml
index 14ce7c894f..7f0fdddcdd 100644
--- a/doc/classes/Dictionary.xml
+++ b/doc/classes/Dictionary.xml
@@ -138,8 +138,8 @@
</description>
<tutorials>
<link title="GDScript basics: Dictionary">$DOCS_URL/tutorials/scripting/gdscript/gdscript_basics.html#dictionary</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<constructors>
<constructor name="Dictionary">
diff --git a/doc/classes/DirAccess.xml b/doc/classes/DirAccess.xml
index 03d7f68f43..9c71addf0c 100644
--- a/doc/classes/DirAccess.xml
+++ b/doc/classes/DirAccess.xml
@@ -94,6 +94,16 @@
Static version of [method copy]. Supports only absolute paths.
</description>
</method>
+ <method name="create_link">
+ <return type="int" enum="Error" />
+ <param index="0" name="source" type="String" />
+ <param index="1" name="target" type="String" />
+ <description>
+ Creates symbolic link between files or folders.
+ [b]Note:[/b] On Windows, this method works only if the application is running with elevated privileges or Developer Mode is enabled.
+ [b]Note:[/b] This method is implemented on macOS, Linux, and Windows.
+ </description>
+ </method>
<method name="current_is_dir" qualifiers="const">
<return type="bool" />
<description>
@@ -212,6 +222,14 @@
[b]Note:[/b] This method is implemented on macOS, Linux (for EXT4 and F2FS filesystems only) and Windows. On other platforms, it always returns [code]true[/code].
</description>
</method>
+ <method name="is_link">
+ <return type="bool" />
+ <param index="0" name="path" type="String" />
+ <description>
+ Returns [code]true[/code] if the file or directory is a symbolic link, directory junction, or other reparse point.
+ [b]Note:[/b] This method is implemented on macOS, Linux, and Windows.
+ </description>
+ </method>
<method name="list_dir_begin">
<return type="int" enum="Error" />
<description>
@@ -264,6 +282,14 @@
Returns [code]null[/code] if opening the directory failed. You can use [method get_open_error] to check the error that occurred.
</description>
</method>
+ <method name="read_link">
+ <return type="String" />
+ <param index="0" name="path" type="String" />
+ <description>
+ Returns target of the symbolic link.
+ [b]Note:[/b] This method is implemented on macOS, Linux, and Windows.
+ </description>
+ </method>
<method name="remove">
<return type="int" enum="Error" />
<param index="0" name="path" type="String" />
diff --git a/doc/classes/DisplayServer.xml b/doc/classes/DisplayServer.xml
index 9eb5f9e334..ff1c390b3c 100644
--- a/doc/classes/DisplayServer.xml
+++ b/doc/classes/DisplayServer.xml
@@ -58,11 +58,12 @@
</method>
<method name="create_status_indicator">
<return type="int" />
- <param index="0" name="icon" type="Image" />
+ <param index="0" name="icon" type="Texture2D" />
<param index="1" name="tooltip" type="String" />
<param index="2" name="callback" type="Callable" />
<description>
Creates a new application status indicator with the specified icon, tooltip, and activation callback.
+ [param callback] should take two arguments: the pressed mouse button (one of the [enum MouseButton] constants) and the click position in screen coordinates (a [Vector2i]).
</description>
</method>
<method name="cursor_get_shape" qualifiers="const">
@@ -249,7 +250,7 @@
<param index="0" name="position" type="Vector2i" />
<description>
Returns the ID of the window at the specified screen [param position] (in pixels). On multi-monitor setups, the screen position is relative to the virtual desktop area. On multi-monitor setups with different screen resolutions or orientations, the origin may be located outside any display like this:
- [codeblock]
+ [codeblock lang=text]
* (0, 0) +-------+
| |
+-------------+ | |
@@ -282,7 +283,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -308,7 +309,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -334,7 +335,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -361,7 +362,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -386,7 +387,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -415,7 +416,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -441,7 +442,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -459,7 +460,7 @@
Returns index of the inserted item, it's not guaranteed to be the same as [param index] value.
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -479,7 +480,7 @@
Returns index of the inserted item, it's not guaranteed to be the same as [param index] value.
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -495,7 +496,7 @@
Removes all items from the global menu with ID [param menu_root].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -875,7 +876,7 @@
<param index="1" name="open_callback" type="Callable" />
<param index="2" name="close_callback" type="Callable" />
<description>
- Registers callables to emit when the menu is respectively about to show or closed.
+ Registers callables to emit when the menu is respectively about to show or closed. Callback methods should have zero arguments.
</description>
</method>
<method name="has_feature" qualifiers="const">
@@ -930,6 +931,12 @@
Returns [code]true[/code] if touch events are available (Android or iOS), the capability is detected on the Web platform or if [member ProjectSettings.input_devices/pointing/emulate_touch_from_mouse] is [code]true[/code].
</description>
</method>
+ <method name="is_window_transparency_available" qualifiers="const">
+ <return type="bool" />
+ <description>
+ Returns [code]true[/code] if the window background can be made transparent. This method returns [code]false[/code] if [member ProjectSettings.display/window/per_pixel_transparency/allowed] is set to [code]false[/code], or if transparency is not supported by the renderer or OS compositor.
+ </description>
+ </method>
<method name="keyboard_get_current_layout" qualifiers="const">
<return type="int" />
<description>
@@ -1022,7 +1029,7 @@
Returns the dots per inch density of the specified screen. If [param screen] is [constant SCREEN_OF_MAIN_WINDOW] (the default value), a screen with the main window will be used.
[b]Note:[/b] On macOS, returned value is inaccurate if fractional display scaling mode is used.
[b]Note:[/b] On Android devices, the actual screen densities are grouped into six generalized densities:
- [codeblock]
+ [codeblock lang=text]
ldpi - 120 dpi
mdpi - 160 dpi
hdpi - 240 dpi
@@ -1072,7 +1079,7 @@
<param index="0" name="screen" type="int" default="-1" />
<description>
Returns the screen's top-left corner position in pixels. On multi-monitor setups, the screen position is relative to the virtual desktop area. On multi-monitor setups with different screen resolutions or orientations, the origin may be located outside any display like this:
- [codeblock]
+ [codeblock lang=text]
* (0, 0) +-------+
| |
+-------------+ | |
@@ -1103,8 +1110,9 @@
<param index="0" name="screen" type="int" default="-1" />
<description>
Returns the scale factor of the specified screen by index.
- [b]Note:[/b] On macOS returned value is [code]2.0[/code] for hiDPI (Retina) screen, and [code]1.0[/code] for all other cases.
- [b]Note:[/b] This method is implemented only on macOS.
+ [b]Note:[/b] On macOS, the returned value is [code]2.0[/code] for hiDPI (Retina) screens, and [code]1.0[/code] for all other cases.
+ [b]Note:[/b] On Linux (Wayland), the returned value is accurate only when [param screen] is [constant SCREEN_OF_MAIN_WINDOW]. Due to API limitations, passing a direct index will return a rounded-up integer, if the screen has a fractional scale (e.g. [code]1.25[/code] would get rounded up to [code]2.0[/code]).
+ [b]Note:[/b] This method is implemented only on macOS and Linux (Wayland).
</description>
</method>
<method name="screen_get_size" qualifiers="const">
@@ -1167,20 +1175,41 @@
[b]Note:[/b] This method is implemented on Android, iOS, macOS, Windows, and Linux (X11/Wayland).
</description>
</method>
+ <method name="status_indicator_get_rect" qualifiers="const">
+ <return type="Rect2" />
+ <param index="0" name="id" type="int" />
+ <description>
+ Returns the rectangle for the given status indicator [param id] in screen coordinates. If the status indicator is not visible, returns an empty [Rect2].
+ [b]Note:[/b] This method is implemented on macOS and Windows.
+ </description>
+ </method>
<method name="status_indicator_set_callback">
<return type="void" />
<param index="0" name="id" type="int" />
<param index="1" name="callback" type="Callable" />
<description>
- Sets the application status indicator activation callback.
+ Sets the application status indicator activation callback. [param callback] should take two arguments: [int] mouse button index (one of [enum MouseButton] values) and [Vector2i] click position in screen coordinates.
+ [b]Note:[/b] This method is implemented on macOS and Windows.
</description>
</method>
<method name="status_indicator_set_icon">
<return type="void" />
<param index="0" name="id" type="int" />
- <param index="1" name="icon" type="Image" />
+ <param index="1" name="icon" type="Texture2D" />
<description>
Sets the application status indicator icon.
+ [b]Note:[/b] This method is implemented on macOS and Windows.
+ </description>
+ </method>
+ <method name="status_indicator_set_menu">
+ <return type="void" />
+ <param index="0" name="id" type="int" />
+ <param index="1" name="menu_rid" type="RID" />
+ <description>
+ Sets the application status indicator native popup menu.
+ [b]Note:[/b] On macOS, the menu is activated by any mouse button. Its activation callback is [i]not[/i] triggered.
+ [b]Note:[/b] On Windows, the menu is activated by the right mouse button, selecting the status icon and pressing [kbd]Shift + F10[/kbd], or the applications key. The menu's activation callback for the other mouse buttons is still triggered.
+ [b]Note:[/b] Native popup is only supported if [NativeMenu] supports the [constant NativeMenu.FEATURE_POPUP_MENU] feature.
</description>
</method>
<method name="status_indicator_set_tooltip">
@@ -1189,6 +1218,7 @@
<param index="1" name="tooltip" type="String" />
<description>
Sets the application status indicator tooltip.
+ [b]Note:[/b] This method is implemented on macOS and Windows.
</description>
</method>
<method name="tablet_get_current_driver" qualifiers="const">
@@ -1539,7 +1569,7 @@
<param index="0" name="callback" type="Callable" />
<param index="1" name="window_id" type="int" default="0" />
<description>
- Sets the [param callback] that should be called when files are dropped from the operating system's file manager to the window specified by [param window_id].
+ Sets the [param callback] that should be called when files are dropped from the operating system's file manager to the window specified by [param window_id]. [param callback] should take one [PackedStringArray] argument, which is the list of dropped files.
[b]Warning:[/b] Advanced users only! Adding such a callback to a [Window] node will override its default implementation, which can introduce bugs.
[b]Note:[/b] This method is implemented on Windows, macOS, Linux (X11/Wayland), and Web.
</description>
@@ -1602,7 +1632,7 @@
<param index="0" name="max_size" type="Vector2i" />
<param index="1" name="window_id" type="int" default="0" />
<description>
- Sets the maximum size of the window specified by [param window_id] in pixels. Normally, the user will not be able to drag the window to make it smaller than the specified size. See also [method window_get_max_size].
+ Sets the maximum size of the window specified by [param window_id] in pixels. Normally, the user will not be able to drag the window to make it larger than the specified size. See also [method window_get_max_size].
[b]Note:[/b] It's recommended to change this value using [member Window.max_size] instead.
[b]Note:[/b] Using third-party tools, it is possible for users to disable window geometry restrictions and therefore bypass this limit.
</description>
@@ -1612,7 +1642,7 @@
<param index="0" name="min_size" type="Vector2i" />
<param index="1" name="window_id" type="int" default="0" />
<description>
- Sets the minimum size for the given window to [param min_size] (in pixels). Normally, the user will not be able to drag the window to make it larger than the specified size. See also [method window_get_min_size].
+ Sets the minimum size for the given window to [param min_size] in pixels. Normally, the user will not be able to drag the window to make it smaller than the specified size. See also [method window_get_min_size].
[b]Note:[/b] It's recommended to change this value using [member Window.min_size] instead.
[b]Note:[/b] By default, the main window has a minimum size of [code]Vector2i(64, 64)[/code]. This prevents issues that can arise when the window is resized to a near-zero size.
[b]Note:[/b] Using third-party tools, it is possible for users to disable window geometry restrictions and therefore bypass this limit.
@@ -1674,7 +1704,7 @@
<param index="1" name="window_id" type="int" default="0" />
<description>
Sets the position of the given window to [param position]. On multi-monitor setups, the screen position is relative to the virtual desktop area. On multi-monitor setups with different screen resolutions or orientations, the origin may be located outside any display like this:
- [codeblock]
+ [codeblock lang=text]
* (0, 0) +-------+
| |
+-------------+ | |
@@ -2022,7 +2052,7 @@
</constant>
<constant name="WINDOW_FLAG_TRANSPARENT" value="3" enum="WindowFlags">
The window background can be transparent.
- [b]Note:[/b] This flag has no effect if [member ProjectSettings.display/window/per_pixel_transparency/allowed] is set to [code]false[/code].
+ [b]Note:[/b] This flag has no effect if [method is_window_transparency_available] returns [code]false[/code].
[b]Note:[/b] Transparency support is implemented on Linux (X11/Wayland), macOS, and Windows, but availability might vary depending on GPU driver, display manager, and compositor capabilities.
</constant>
<constant name="WINDOW_FLAG_NO_FOCUS" value="4" enum="WindowFlags">
diff --git a/doc/classes/EditorExportPlatformPC.xml b/doc/classes/EditorExportPlatformPC.xml
index 3c2a27deab..def14e5955 100644
--- a/doc/classes/EditorExportPlatformPC.xml
+++ b/doc/classes/EditorExportPlatformPC.xml
@@ -4,7 +4,10 @@
Base class for the desktop platform exporter (Windows and Linux/BSD).
</brief_description>
<description>
+ The base class for the desktop platform exporters. These include Windows and Linux/BSD, but not macOS. See the classes inheriting this one for more details.
</description>
<tutorials>
+ <link title="Exporting for Windows">$DOCS_URL/tutorials/export/exporting_for_windows.html</link>
+ <link title="Exporting for Linux">$DOCS_URL/tutorials/export/exporting_for_linux.html</link>
</tutorials>
</class>
diff --git a/doc/classes/EditorFileDialog.xml b/doc/classes/EditorFileDialog.xml
index 4befcf5e69..d5c2ed55d7 100644
--- a/doc/classes/EditorFileDialog.xml
+++ b/doc/classes/EditorFileDialog.xml
@@ -90,6 +90,12 @@
Notify the [EditorFileDialog] that its view of the data is no longer accurate. Updates the view contents on next view update.
</description>
</method>
+ <method name="popup_file_dialog">
+ <return type="void" />
+ <description>
+ Shows the [EditorFileDialog] at the default size and position for file dialogs in the editor, and selects the file name if there is a current file.
+ </description>
+ </method>
<method name="set_option_default">
<return type="void" />
<param index="0" name="option" type="int" />
diff --git a/doc/classes/EditorInspector.xml b/doc/classes/EditorInspector.xml
index 6b25be490e..cfdc172fd1 100644
--- a/doc/classes/EditorInspector.xml
+++ b/doc/classes/EditorInspector.xml
@@ -28,7 +28,6 @@
</method>
</methods>
<members>
- <member name="follow_focus" type="bool" setter="set_follow_focus" getter="is_following_focus" overrides="ScrollContainer" default="true" />
<member name="horizontal_scroll_mode" type="int" setter="set_horizontal_scroll_mode" getter="get_horizontal_scroll_mode" overrides="ScrollContainer" enum="ScrollContainer.ScrollMode" default="0" />
</members>
<signals>
diff --git a/doc/classes/EditorInspectorPlugin.xml b/doc/classes/EditorInspectorPlugin.xml
index efa881591c..4f6ef76c4c 100644
--- a/doc/classes/EditorInspectorPlugin.xml
+++ b/doc/classes/EditorInspectorPlugin.xml
@@ -78,8 +78,11 @@
<param index="0" name="property" type="String" />
<param index="1" name="editor" type="Control" />
<param index="2" name="add_to_end" type="bool" default="false" />
+ <param index="3" name="label" type="String" default="&quot;&quot;" />
<description>
Adds a property editor for an individual property. The [param editor] control must extend [EditorProperty].
+ There can be multiple property editors for a property. If [param add_to_end] is [code]true[/code], this newly added editor will be displayed after all the other editors of the property whose [param add_to_end] is [code]false[/code]. For example, the editor uses this parameter to add an "Edit Region" button for [member Sprite2D.region_rect] below the regular [Rect2] editor.
+ [param label] can be used to choose a custom label for the property editor in the inspector. If left empty, the label is computed from the name of the property instead.
</description>
</method>
<method name="add_property_editor_for_multiple_properties">
diff --git a/doc/classes/EditorPaths.xml b/doc/classes/EditorPaths.xml
index 94ddb37658..f57e728c93 100644
--- a/doc/classes/EditorPaths.xml
+++ b/doc/classes/EditorPaths.xml
@@ -17,7 +17,7 @@
<description>
Returns the absolute path to the user's cache folder. This folder should be used for temporary data that can be removed safely whenever the editor is closed (such as generated resource thumbnails).
[b]Default paths per platform:[/b]
- [codeblock]
+ [codeblock lang=text]
- Windows: %LOCALAPPDATA%\Godot\
- macOS: ~/Library/Caches/Godot/
- Linux: ~/.cache/godot/
@@ -29,7 +29,7 @@
<description>
Returns the absolute path to the user's configuration folder. This folder should be used for [i]persistent[/i] user configuration files.
[b]Default paths per platform:[/b]
- [codeblock]
+ [codeblock lang=text]
- Windows: %APPDATA%\Godot\ (same as `get_data_dir()`)
- macOS: ~/Library/Application Support/Godot/ (same as `get_data_dir()`)
- Linux: ~/.config/godot/
@@ -41,7 +41,7 @@
<description>
Returns the absolute path to the user's data folder. This folder should be used for [i]persistent[/i] user data files such as installed export templates.
[b]Default paths per platform:[/b]
- [codeblock]
+ [codeblock lang=text]
- Windows: %APPDATA%\Godot\ (same as `get_config_dir()`)
- macOS: ~/Library/Application Support/Godot/ (same as `get_config_dir()`)
- Linux: ~/.local/share/godot/
diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml
index e874b44cfc..89b9e7d6c2 100644
--- a/doc/classes/EditorPlugin.xml
+++ b/doc/classes/EditorPlugin.xml
@@ -727,6 +727,14 @@
Removes a callback previously added by [method add_undo_redo_inspector_hook_callback].
</description>
</method>
+ <method name="set_dock_tab_icon">
+ <return type="void" />
+ <param index="0" name="control" type="Control" />
+ <param index="1" name="icon" type="Texture2D" />
+ <description>
+ Sets the tab icon for the given control in a dock slot. Setting to [code]null[/code] removes the icon.
+ </description>
+ </method>
<method name="set_force_draw_over_forwarding_enabled">
<return type="void" />
<description>
diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml
index 573171b7e1..e0a14e990b 100644
--- a/doc/classes/EditorSettings.xml
+++ b/doc/classes/EditorSettings.xml
@@ -384,15 +384,15 @@
<member name="editors/3d/selection_box_color" type="Color" setter="" getter="">
The color to use for the selection box that surrounds selected nodes in the 3D editor viewport. The color's alpha channel influences the selection box's opacity.
</member>
+ <member name="editors/3d_gizmos/gizmo_colors/aabb" type="Color" setter="" getter="">
+ The color to use for the AABB gizmo that displays the [GeometryInstance3D]'s custom [AABB].
+ </member>
<member name="editors/3d_gizmos/gizmo_colors/instantiated" type="Color" setter="" getter="">
The color override to use for 3D editor gizmos if the [Node3D] in question is part of an instantiated scene file (from the perspective of the current scene).
</member>
<member name="editors/3d_gizmos/gizmo_colors/joint" type="Color" setter="" getter="">
The 3D editor gizmo color for [Joint3D]s and [PhysicalBone3D]s.
</member>
- <member name="editors/3d_gizmos/gizmo_colors/shape" type="Color" setter="" getter="">
- The 3D editor gizmo color for [CollisionShape3D]s, [VehicleWheel3D]s, [RayCast3D]s and [SpringArm3D]s.
- </member>
<member name="editors/animation/autorename_animation_tracks" type="bool" setter="" getter="">
If [code]true[/code], automatically updates animation tracks' target paths when renaming or reparenting nodes in the Scene tree dock.
</member>
@@ -632,6 +632,9 @@
If set to [b]Auto[/b], the editor scale is automatically determined based on the screen resolution and reported display DPI. This heuristic is not always ideal, which means you can get better results by setting the editor scale manually.
If set to [b]Custom[/b], the scaling value in [member interface/editor/custom_display_scale] will be used.
</member>
+ <member name="interface/editor/dock_tab_style" type="int" setter="" getter="">
+ Tab style of editor docks.
+ </member>
<member name="interface/editor/editor_language" type="String" setter="" getter="">
The language to use for the editor interface.
Translations are provided by the community. If you spot a mistake, [url=$DOCS_URL/contributing/documentation/editor_and_docs_localization.html]contribute to editor translations on Weblate![/url]
@@ -646,6 +649,9 @@
<member name="interface/editor/font_antialiasing" type="int" setter="" getter="">
FreeType's font anti-aliasing mode used to render the editor fonts. Most fonts are not designed to look good with anti-aliasing disabled, so it's recommended to leave this enabled unless you're using a pixel art font.
</member>
+ <member name="interface/editor/font_disable_embedded_bitmaps" type="bool" setter="" getter="">
+ If set to [code]true[/code], embedded font bitmap loading is disabled (bitmap-only and color fonts ignore this property).
+ </member>
<member name="interface/editor/font_hinting" type="int" setter="" getter="">
The font hinting mode to use for the editor fonts. FreeType supports the following font hinting modes:
- [b]None:[/b] Don't use font hinting when rasterizing the font. This results in a smooth font, but it can look blurry.
@@ -656,6 +662,9 @@
<member name="interface/editor/font_subpixel_positioning" type="int" setter="" getter="">
The subpixel positioning mode to use when rendering editor font glyphs. This affects both the main and code fonts. [b]Disabled[/b] is the fastest to render and uses the least memory. [b]Auto[/b] only uses subpixel positioning for small font sizes (where the benefit is the most noticeable). [b]One Half of a Pixel[/b] and [b]One Quarter of a Pixel[/b] force the same subpixel positioning mode for all editor fonts, regardless of their size (with [b]One Quarter of a Pixel[/b] being the highest-quality option).
</member>
+ <member name="interface/editor/import_resources_when_unfocused" type="bool" setter="" getter="">
+ If [code]true[/code], (re)imports resources even if the editor window is unfocused or minimized. If [code]false[/code], resources are only (re)imported when the editor window is focused. This can be set to [code]true[/code] to speed up iteration by starting the import process earlier when saving files in the project folder. This also allows getting visual feedback on changes without having to click the editor window, which is useful with multi-monitor setups. The downside of setting this to [code]true[/code] is that it increases idle CPU usage and may steal CPU time from other applications when importing resources.
+ </member>
<member name="interface/editor/localize_settings" type="bool" setter="" getter="">
If [code]true[/code], setting names in the editor are localized when possible.
[b]Note:[/b] This setting affects most [EditorInspector]s in the editor UI, primarily Project Settings and Editor Settings. To control names displayed in the Inspector dock, use [member interface/inspector/default_property_name_style] instead.
@@ -744,6 +753,10 @@
- [b]Localized:[/b] Displays the localized string for the current editor language if a translation is available for the given property. If no translation is available, falls back to [b]Capitalized[/b].
[b]Note:[/b] To display translated setting names in Project Settings and Editor Settings, use [member interface/editor/localize_settings] instead.
</member>
+ <member name="interface/inspector/delimitate_all_container_and_resources" type="bool" setter="" getter="">
+ If [code]true[/code], add a margin around Array, Dictionary, and Resource Editors that are not already colored.
+ [b]Note:[/b] If [member interface/inspector/nested_color_mode] is set to [b]Containers &amp; Resources[/b] this parameter will have no effect since those editors will already be colored
+ </member>
<member name="interface/inspector/disable_folding" type="bool" setter="" getter="">
If [code]true[/code], forces all property groups to be expanded in the Inspector dock and prevents collapsing them.
</member>
@@ -759,6 +772,12 @@
<member name="interface/inspector/max_array_dictionary_items_per_page" type="int" setter="" getter="">
The number of [Array] or [Dictionary] items to display on each "page" in the inspector. Higher values allow viewing more values per page, but take more time to load. This increased load time is noticeable when selecting nodes that have array or dictionary properties in the editor.
</member>
+ <member name="interface/inspector/nested_color_mode" type="int" setter="" getter="">
+ Control which property editors are colored when they are opened.
+ - [b]Containers &amp; Resources:[/b] Color all Array, Dictionary, and Resource Editors.
+ - [b]Resources:[/b] Color all Resource Editors.
+ - [b]External Resources:[/b] Color Resource Editors that edits an external resource.
+ </member>
<member name="interface/inspector/open_resources_in_current_inspector" type="bool" setter="" getter="">
If [code]true[/code], subresources can be edited in the current inspector view. If the resource type is defined in [member interface/inspector/resources_to_open_in_new_inspector] or if this setting is [code]false[/code], attempting to edit a subresource always opens a new inspector view.
</member>
@@ -830,7 +849,7 @@
<member name="interface/theme/icon_and_font_color" type="int" setter="" getter="">
The icon and font color scheme to use in the editor.
- [b]Auto[/b] determines the color scheme to use automatically based on [member interface/theme/base_color].
- - [b]Dark[/b] makes fonts and icons dark (suitable for light themes). Icon colors are automatically converted by the editor following the set of rules defined in [url=https://github.com/godotengine/godot/blob/master/editor/editor_themes.cpp]this file[/url].
+ - [b]Dark[/b] makes fonts and icons dark (suitable for light themes). Icon colors are automatically converted by the editor following the set of rules defined in [url=https://github.com/godotengine/godot/blob/master/editor/themes/editor_theme_manager.cpp]this file[/url].
- [b]Light[/b] makes fonts and icons light (suitable for dark themes).
</member>
<member name="interface/theme/icon_saturation" type="float" setter="" getter="">
@@ -866,8 +885,16 @@
Specify the multiplier to apply to the scale for the editor gizmo handles to improve usability on touchscreen devices.
[b]Note:[/b] Defaults to [code]1[/code] on non-touchscreen devices.
</member>
+ <member name="network/connection/engine_version_update_mode" type="int" setter="" getter="">
+ Specifies how the engine should check for updates.
+ - [b]Disable Update Checks[/b] will block the engine from checking updates (see also [member network/connection/network_mode]).
+ - [b]Check Newest Preview[/b] (default for preview versions) will check for the newest available development snapshot.
+ - [b]Check Newest Stable[/b] (default for stable versions) will check for the newest available stable version.
+ - [b]Check Newest Patch[/b] will check for the latest available stable version, but only within the same minor version. E.g. if your version is [code]4.3.stable[/code], you will be notified about [code]4.3.1.stable[/code], but not [code]4.4.stable[/code].
+ All update modes will ignore builds with different major versions (e.g. Godot 4 -&gt; Godot 5).
+ </member>
<member name="network/connection/network_mode" type="int" setter="" getter="">
- Determines whether online features are enabled in the editor, such as the Asset Library. Setting this property to "Offline" is recommended to limit editor's internet activity, especially if privacy is a concern.
+ Determines whether online features are enabled in the editor, such as the Asset Library or update checks. Disabling these online features helps alleviate privacy concerns by preventing the editor from making HTTP requests to the Godot website or third-party platforms hosting assets from the Asset Library.
</member>
<member name="network/debug/remote_host" type="String" setter="" getter="">
The address to listen to when starting the remote debugger. This can be set to [code]0.0.0.0[/code] to allow external clients to connect to the remote debugger (instead of restricting the remote debugger to connections from [code]localhost[/code]).
@@ -898,18 +925,21 @@
<member name="run/auto_save/save_before_running" type="bool" setter="" getter="">
If [code]true[/code], saves all scenes and scripts automatically before running the project. Setting this to [code]false[/code] prevents the editor from saving if there are no changes which can speed up the project startup slightly, but it makes it possible to run a project that has unsaved changes. (Unsaved changes will not be visible in the running project.)
</member>
- <member name="run/output/always_clear_output_on_play" type="bool" setter="" getter="">
- If [code]true[/code], the editor will clear the Output panel when running the project.
+ <member name="run/bottom_panel/action_on_play" type="int" setter="" getter="">
+ The action to execute on the bottom panel when running the project.
</member>
- <member name="run/output/always_close_output_on_stop" type="bool" setter="" getter="">
- If [code]true[/code], the editor will collapse the Output panel when stopping the project.
+ <member name="run/bottom_panel/action_on_stop" type="int" setter="" getter="">
+ The action to execute on the bottom panel when stopping the project.
</member>
- <member name="run/output/always_open_output_on_play" type="bool" setter="" getter="">
- If [code]true[/code], the editor will expand the Output panel when running the project.
+ <member name="run/output/always_clear_output_on_play" type="bool" setter="" getter="">
+ If [code]true[/code], the editor will clear the Output panel when running the project.
</member>
<member name="run/output/font_size" type="int" setter="" getter="">
The size of the font in the [b]Output[/b] panel at the bottom of the editor. This setting does not impact the font size of the script editor (see [member interface/editor/code_font_size]).
</member>
+ <member name="run/output/max_lines" type="int" setter="" getter="">
+ Maximum number of lines to show at any one time in the Output panel.
+ </member>
<member name="run/platforms/linuxbsd/prefer_wayland" type="bool" setter="" getter="">
If [code]true[/code], on Linux/BSD, the editor will check for Wayland first instead of X11 (if available).
</member>
@@ -998,6 +1028,9 @@
<member name="text_editor/behavior/files/restore_scripts_on_load" type="bool" setter="" getter="">
If [code]true[/code], reopens scripts that were opened in the last session when the editor is reopened on a given project.
</member>
+ <member name="text_editor/behavior/files/trim_final_newlines_on_save" type="bool" setter="" getter="">
+ If [code]true[/code], trims all empty newlines after the final newline when saving a script. Final newlines refer to the empty newlines found at the end of files. Since these serve no practical purpose, they can and should be removed to make version control diffs less noisy.
+ </member>
<member name="text_editor/behavior/files/trim_trailing_whitespace_on_save" type="bool" setter="" getter="">
If [code]true[/code], trims trailing whitespace when saving a script. Trailing whitespace refers to tab and space characters placed at the end of lines. Since these serve no practical purpose, they can and should be removed to make version control diffs less noisy.
</member>
diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml
index 189517c392..c28476aa3c 100644
--- a/doc/classes/Environment.xml
+++ b/doc/classes/Environment.xml
@@ -13,9 +13,8 @@
<tutorials>
<link title="Environment and post-processing">$DOCS_URL/tutorials/3d/environment_and_post_processing.html</link>
<link title="High dynamic range lighting">$DOCS_URL/tutorials/3d/high_dynamic_range.html</link>
- <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/123</link>
- <link title="2D HDR Demo">https://godotengine.org/asset-library/asset/110</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/2742</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="get_glow_level" qualifiers="const">
diff --git a/doc/classes/FileAccess.xml b/doc/classes/FileAccess.xml
index fad6cbcc93..99574da808 100644
--- a/doc/classes/FileAccess.xml
+++ b/doc/classes/FileAccess.xml
@@ -8,23 +8,23 @@
Here's a sample on how to write and read from a file:
[codeblocks]
[gdscript]
- func save(content):
+ func save_to_file(content):
var file = FileAccess.open("user://save_game.dat", FileAccess.WRITE)
file.store_string(content)
- func load():
+ func load_from_file():
var file = FileAccess.open("user://save_game.dat", FileAccess.READ)
var content = file.get_as_text()
return content
[/gdscript]
[csharp]
- public void Save(string content)
+ public void SaveToFile(string content)
{
using var file = FileAccess.Open("user://save_game.dat", FileAccess.ModeFlags.Write);
file.StoreString(content);
}
- public string Load()
+ public string LoadFromFile()
{
using var file = FileAccess.Open("user://save_game.dat", FileAccess.ModeFlags.Read);
string content = file.GetAsText();
@@ -40,7 +40,7 @@
<tutorials>
<link title="File system">$DOCS_URL/tutorials/scripting/filesystem.html</link>
<link title="Runtime file loading and saving">$DOCS_URL/tutorials/io/runtime_file_loading_and_saving.html</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<methods>
<method name="close">
@@ -131,7 +131,7 @@
Returns the next value of the file in CSV (Comma-Separated Values) format. You can pass a different delimiter [param delim] to use other than the default [code]","[/code] (comma). This delimiter must be one-character long, and cannot be a double quotation mark.
Text is interpreted as being UTF-8 encoded. Text values must be enclosed in double quotes if they include the delimiter character. Double quotes within a text value can be escaped by doubling their occurrence.
For example, the following CSV lines are valid and will be properly parsed as two strings each:
- [codeblock]
+ [codeblock lang=text]
Alice,"Hello, Bob!"
Bob,Alice! What a surprise!
Alice,"I thought you'd reply with ""Hello, world""."
@@ -190,7 +190,7 @@
<method name="get_line" qualifiers="const">
<return type="String" />
<description>
- Returns the next line of the file as a [String].
+ Returns the next line of the file as a [String]. The returned string doesn't include newline ([code]\n[/code]) or carriage return ([code]\r[/code]) characters, but does include any other leading or trailing whitespace.
Text is interpreted as being UTF-8 encoded.
</description>
</method>
@@ -324,6 +324,13 @@
Returns [code]null[/code] if opening the file failed. You can use [method get_open_error] to check the error that occurred.
</description>
</method>
+ <method name="resize">
+ <return type="int" enum="Error" />
+ <param index="0" name="length" type="int" />
+ <description>
+ Resizes the file to a specified length. The file must be open in a mode that permits writing. If the file is extended, NUL characters are appended. If the file is truncated, all data from the end file to the original length of the file is lost.
+ </description>
+ </method>
<method name="seek">
<return type="void" />
<param index="0" name="position" type="int" />
diff --git a/doc/classes/FileSystemDock.xml b/doc/classes/FileSystemDock.xml
index 9028dd4b9f..b3dc51ffaa 100644
--- a/doc/classes/FileSystemDock.xml
+++ b/doc/classes/FileSystemDock.xml
@@ -51,6 +51,11 @@
Emitted when a file is moved from [param old_file] path to [param new_file] path.
</description>
</signal>
+ <signal name="folder_color_changed">
+ <description>
+ Emitted when folders change color.
+ </description>
+ </signal>
<signal name="folder_moved">
<param index="0" name="old_folder" type="String" />
<param index="1" name="new_folder" type="String" />
diff --git a/doc/classes/FlowContainer.xml b/doc/classes/FlowContainer.xml
index 5e767acf7d..2839143960 100644
--- a/doc/classes/FlowContainer.xml
+++ b/doc/classes/FlowContainer.xml
@@ -21,6 +21,9 @@
<member name="alignment" type="int" setter="set_alignment" getter="get_alignment" enum="FlowContainer.AlignmentMode" default="0">
The alignment of the container's children (must be one of [constant ALIGNMENT_BEGIN], [constant ALIGNMENT_CENTER], or [constant ALIGNMENT_END]).
</member>
+ <member name="last_wrap_alignment" type="int" setter="set_last_wrap_alignment" getter="get_last_wrap_alignment" enum="FlowContainer.LastWrapAlignmentMode" default="0">
+ The wrap behavior of the last, partially filled row or column (must be one of [constant LAST_WRAP_ALIGNMENT_INHERIT], [constant LAST_WRAP_ALIGNMENT_BEGIN], [constant LAST_WRAP_ALIGNMENT_CENTER], or [constant LAST_WRAP_ALIGNMENT_END]).
+ </member>
<member name="reverse_fill" type="bool" setter="set_reverse_fill" getter="is_reverse_fill" default="false">
If [code]true[/code], reverses fill direction. Horizontal [FlowContainer]s will fill rows bottom to top, vertical [FlowContainer]s will fill columns right to left.
When using a vertical [FlowContainer] with a right to left [member Control.layout_direction], columns will fill left to right instead.
@@ -40,6 +43,18 @@
<constant name="ALIGNMENT_END" value="2" enum="AlignmentMode">
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).
</constant>
+ <constant name="LAST_WRAP_ALIGNMENT_INHERIT" value="0" enum="LastWrapAlignmentMode">
+ The last partially filled row or column will wrap aligned to the previous row or column in accordance with [member alignment].
+ </constant>
+ <constant name="LAST_WRAP_ALIGNMENT_BEGIN" value="1" enum="LastWrapAlignmentMode">
+ The last partially filled row or column will wrap aligned to the beginning of the previous row or column.
+ </constant>
+ <constant name="LAST_WRAP_ALIGNMENT_CENTER" value="2" enum="LastWrapAlignmentMode">
+ The last partially filled row or column will wrap aligned to the center of the previous row or column.
+ </constant>
+ <constant name="LAST_WRAP_ALIGNMENT_END" value="3" enum="LastWrapAlignmentMode">
+ The last partially filled row or column will wrap aligned to the end of the previous row or column.
+ </constant>
</constants>
<theme_items>
<theme_item name="h_separation" data_type="constant" type="int" default="4">
diff --git a/doc/classes/GDExtensionManager.xml b/doc/classes/GDExtensionManager.xml
index 1ecb23a03b..211bc023c0 100644
--- a/doc/classes/GDExtensionManager.xml
+++ b/doc/classes/GDExtensionManager.xml
@@ -43,7 +43,7 @@
<return type="int" enum="GDExtensionManager.LoadStatus" />
<param index="0" name="path" type="String" />
<description>
- Reloads the extension at the given file path. The [param path] needs to point to a valid [GDExtension], otherwise this method may return either [constant LOAD_STATUS_NOT_LOADED] or [constant LOAD_STATUS_FAILED].
+ Reloads the extension at the given file path. The [param path] needs to point to a valid [GDExtension], otherwise this method may return either [constant LOAD_STATUS_NOT_LOADED] or [constant LOAD_STATUS_FAILED].
[b]Note:[/b] You can only reload extensions in the editor. In release builds, this method always fails and returns [constant LOAD_STATUS_FAILED].
</description>
</method>
diff --git a/doc/classes/GPUParticles2D.xml b/doc/classes/GPUParticles2D.xml
index f4ba305f8b..3c48f5ba31 100644
--- a/doc/classes/GPUParticles2D.xml
+++ b/doc/classes/GPUParticles2D.xml
@@ -10,8 +10,8 @@
</description>
<tutorials>
<link title="Particle systems (2D)">$DOCS_URL/tutorials/2d/particle_systems_2d.html</link>
- <link title="2D Particles Demo">https://godotengine.org/asset-library/asset/118</link>
- <link title="2D Dodge The Creeps Demo (uses GPUParticles2D for the trail behind the player)">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Particles Demo">https://godotengine.org/asset-library/asset/2724</link>
+ <link title="2D Dodge The Creeps Demo (uses GPUParticles2D for the trail behind the player)">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<methods>
<method name="capture_rect" qualifiers="const">
@@ -43,7 +43,8 @@
<method name="restart">
<return type="void" />
<description>
- Restarts all the existing particles.
+ Restarts the particle emission cycle, clearing existing particles. To avoid particles vanishing from the viewport, wait for the [signal finished] signal before calling.
+ [b]Note:[/b] The [signal finished] signal is only emitted by [member one_shot] emitters.
</description>
</method>
</methods>
@@ -64,7 +65,9 @@
Particle draw order. Uses [enum DrawOrder] values.
</member>
<member name="emitting" type="bool" setter="set_emitting" getter="is_emitting" default="true">
- If [code]true[/code], particles are being emitted. [member emitting] can be used to start and stop particles from emitting. However, if [member one_shot] is [code]true[/code] setting [member emitting] to [code]true[/code] will not restart the emission cycle until after all active particles finish processing. You can use the [signal finished] signal to be notified once all active particles finish processing.
+ If [code]true[/code], particles are being emitted. [member emitting] can be used to start and stop particles from emitting. However, if [member one_shot] is [code]true[/code] setting [member emitting] to [code]true[/code] will not restart the emission cycle unless all active particles have finished processing. Use the [signal finished] signal to be notified once all active particles finish processing.
+ [b]Note:[/b] For [member one_shot] emitters, due to the particles being computed on the GPU, there may be a short period after receiving the [signal finished] signal during which setting this to [code]true[/code] will not restart the emission cycle.
+ [b]Tip:[/b] If your [member one_shot] emitter needs to immediately restart emitting particles once [signal finished] signal is received, consider calling [method restart] instead of setting [member emitting].
</member>
<member name="explosiveness" type="float" setter="set_explosiveness_ratio" getter="get_explosiveness_ratio" default="0.0">
How rapidly particles in an emission cycle are emitted. If greater than [code]0[/code], there will be a gap in emissions before the next cycle begins.
@@ -132,8 +135,9 @@
<signals>
<signal name="finished">
<description>
- Emitted when all active particles have finished processing. When [member one_shot] is disabled, particles will process continuously, so this is never emitted.
- [b]Note:[/b] Due to the particles being computed on the GPU there might be a delay before the signal gets emitted.
+ Emitted when all active particles have finished processing. To immediately restart the emission cycle, call [method restart].
+ Never emitted when [member one_shot] is disabled, as particles will be emitted and processed continuously.
+ [b]Note:[/b] For [member one_shot] emitters, due to the particles being computed on the GPU, there may be a short period after receiving the signal during which setting [member emitting] to [code]true[/code] will not restart the emission cycle. This delay is avoided by instead calling [method restart].
</description>
</signal>
</signals>
diff --git a/doc/classes/GPUParticles3D.xml b/doc/classes/GPUParticles3D.xml
index d1903b85cd..61a3b467f1 100644
--- a/doc/classes/GPUParticles3D.xml
+++ b/doc/classes/GPUParticles3D.xml
@@ -10,7 +10,7 @@
<tutorials>
<link title="Particle systems (3D)">$DOCS_URL/tutorials/3d/particles/index.html</link>
<link title="Controlling thousands of fish with Particles">$DOCS_URL/tutorials/performance/vertex_animation/controlling_thousands_of_fish.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="capture_aabb" qualifiers="const">
@@ -48,7 +48,8 @@
<method name="restart">
<return type="void" />
<description>
- Restarts the particle emission, clearing existing particles.
+ Restarts the particle emission cycle, clearing existing particles. To avoid particles vanishing from the viewport, wait for the [signal finished] signal before calling.
+ [b]Note:[/b] The [signal finished] signal is only emitted by [member one_shot] emitters.
</description>
</method>
<method name="set_draw_pass_mesh">
@@ -95,7 +96,9 @@
<member name="draw_skin" type="Skin" setter="set_skin" getter="get_skin">
</member>
<member name="emitting" type="bool" setter="set_emitting" getter="is_emitting" default="true">
- If [code]true[/code], particles are being emitted. [member emitting] can be used to start and stop particles from emitting. However, if [member one_shot] is [code]true[/code] setting [member emitting] to [code]true[/code] will not restart the emission cycle until after all active particles finish processing. You can use the [signal finished] signal to be notified once all active particles finish processing.
+ If [code]true[/code], particles are being emitted. [member emitting] can be used to start and stop particles from emitting. However, if [member one_shot] is [code]true[/code] setting [member emitting] to [code]true[/code] will not restart the emission cycle unless all active particles have finished processing. Use the [signal finished] signal to be notified once all active particles finish processing.
+ [b]Note:[/b] For [member one_shot] emitters, due to the particles being computed on the GPU, there may be a short period after receiving the [signal finished] signal during which setting this to [code]true[/code] will not restart the emission cycle.
+ [b]Tip:[/b] If your [member one_shot] emitter needs to immediately restart emitting particles once [signal finished] signal is received, consider calling [method restart] instead of setting [member emitting].
</member>
<member name="explosiveness" type="float" setter="set_explosiveness_ratio" getter="get_explosiveness_ratio" default="0.0">
Time ratio between each emission. If [code]0[/code], particles are emitted continuously. If [code]1[/code], all particles are emitted simultaneously.
@@ -157,8 +160,9 @@
<signals>
<signal name="finished">
<description>
- Emitted when all active particles have finished processing. When [member one_shot] is disabled, particles will process continuously, so this is never emitted.
- [b]Note:[/b] Due to the particles being computed on the GPU there might be a delay before the signal gets emitted.
+ Emitted when all active particles have finished processing. To immediately emit new particles, call [method restart].
+ Never emitted when [member one_shot] is disabled, as particles will be emitted and processed continuously.
+ [b]Note:[/b] For [member one_shot] emitters, due to the particles being computed on the GPU, there may be a short period after receiving the signal during which setting [member emitting] to [code]true[/code] will not restart the emission cycle. This delay is avoided by instead calling [method restart].
</description>
</signal>
</signals>
diff --git a/doc/classes/Geometry2D.xml b/doc/classes/Geometry2D.xml
index dfcf299fe6..f21696d02c 100644
--- a/doc/classes/Geometry2D.xml
+++ b/doc/classes/Geometry2D.xml
@@ -116,6 +116,7 @@
<param index="0" name="polygon" type="PackedVector2Array" />
<description>
Returns [code]true[/code] if [param polygon]'s vertices are ordered in clockwise order, otherwise returns [code]false[/code].
+ [b]Note:[/b] Assumes a Cartesian coordinate system where [code]+x[/code] is right and [code]+y[/code] is up. If using screen coordinates ([code]+y[/code] is down), the result will need to be flipped (i.e. a [code]true[/code] result will indicate counter-clockwise).
</description>
</method>
<method name="line_intersects_line">
diff --git a/doc/classes/GeometryInstance3D.xml b/doc/classes/GeometryInstance3D.xml
index e52a3d7683..f4075af186 100644
--- a/doc/classes/GeometryInstance3D.xml
+++ b/doc/classes/GeometryInstance3D.xml
@@ -66,6 +66,7 @@
The transparency applied to the whole geometry (as a multiplier of the materials' existing transparency). [code]0.0[/code] is fully opaque, while [code]1.0[/code] is fully transparent. Values greater than [code]0.0[/code] (exclusive) will force the geometry's materials to go through the transparent pipeline, which is slower to render and can exhibit rendering issues due to incorrect transparency sorting. However, unlike using a transparent material, setting [member transparency] to a value greater than [code]0.0[/code] (exclusive) will [i]not[/i] disable shadow rendering.
In spatial shaders, [code]1.0 - transparency[/code] is set as the default value of the [code]ALPHA[/code] built-in.
[b]Note:[/b] [member transparency] is clamped between [code]0.0[/code] and [code]1.0[/code], so this property cannot be used to make transparent materials more opaque than they originally are.
+ [b]Note:[/b] Only supported when using the Forward+ rendering method. When using the Mobile or Compatibility rendering method, [member transparency] is ignored and is considered as always being [code]0.0[/code].
</member>
<member name="visibility_range_begin" type="float" setter="set_visibility_range_begin" getter="get_visibility_range_begin" default="0.0" keywords="lod_begin, hlod_begin">
Starting distance from which the GeometryInstance3D will be visible, taking [member visibility_range_begin_margin] into account as well. The default value of 0 is used to disable the range check.
@@ -130,9 +131,11 @@
</constant>
<constant name="VISIBILITY_RANGE_FADE_SELF" value="1" enum="VisibilityRangeFadeMode">
Will fade-out itself when reaching the limits of its own visibility range. This is slower than [constant VISIBILITY_RANGE_FADE_DISABLED], but it can provide smoother transitions. The fading range is determined by [member visibility_range_begin_margin] and [member visibility_range_end_margin].
+ [b]Note:[/b] Only supported when using the Forward+ rendering method. When using the Mobile or Compatibility rendering method, this mode acts like [constant VISIBILITY_RANGE_FADE_DISABLED] but with hysteresis disabled.
</constant>
<constant name="VISIBILITY_RANGE_FADE_DEPENDENCIES" value="2" enum="VisibilityRangeFadeMode">
Will fade-in its visibility dependencies (see [member Node3D.visibility_parent]) when reaching the limits of its own visibility range. This is slower than [constant VISIBILITY_RANGE_FADE_DISABLED], but it can provide smoother transitions. The fading range is determined by [member visibility_range_begin_margin] and [member visibility_range_end_margin].
+ [b]Note:[/b] Only supported when using the Forward+ rendering method. When using the Mobile or Compatibility rendering method, this mode acts like [constant VISIBILITY_RANGE_FADE_DISABLED] but with hysteresis disabled.
</constant>
</constants>
</class>
diff --git a/doc/classes/Gradient.xml b/doc/classes/Gradient.xml
index c7fa1f40e0..c85b3acafa 100644
--- a/doc/classes/Gradient.xml
+++ b/doc/classes/Gradient.xml
@@ -78,8 +78,8 @@
</methods>
<members>
<member name="colors" type="PackedColorArray" setter="set_colors" getter="get_colors" default="PackedColorArray(0, 0, 0, 1, 1, 1, 1, 1)">
- Gradient's colors returned as a [PackedColorArray].
- [b]Note:[/b] This property returns a copy, modifying the return value does not update the gradient. To update the gradient use [method set_color] method (for updating colors individually) or assign to this property directly (for bulk-updating all colors at once).
+ Gradient's colors as a [PackedColorArray].
+ [b]Note:[/b] Setting this property updates all colors at once. To update any color individually use [method set_color].
</member>
<member name="interpolation_color_space" type="int" setter="set_interpolation_color_space" getter="get_interpolation_color_space" enum="Gradient.ColorSpace" default="0">
The color space used to interpolate between points of the gradient. It does not affect the returned colors, which will always be in sRGB space. See [enum ColorSpace] for available modes.
@@ -89,8 +89,8 @@
The algorithm used to interpolate between points of the gradient. See [enum InterpolationMode] for available modes.
</member>
<member name="offsets" type="PackedFloat32Array" setter="set_offsets" getter="get_offsets" default="PackedFloat32Array(0, 1)">
- Gradient's offsets returned as a [PackedFloat32Array].
- [b]Note:[/b] This property returns a copy, modifying the return value does not update the gradient. To update the gradient use [method set_offset] method (for updating offsets individually) or assign to this property directly (for bulk-updating all offsets at once).
+ Gradient's offsets as a [PackedFloat32Array].
+ [b]Note:[/b] Setting this property updates all offsets at once. To update any offset individually use [method set_offset].
</member>
</members>
<constants>
diff --git a/doc/classes/GraphNode.xml b/doc/classes/GraphNode.xml
index ad1028d7f4..cc3acad6d6 100644
--- a/doc/classes/GraphNode.xml
+++ b/doc/classes/GraphNode.xml
@@ -267,6 +267,9 @@
</method>
</methods>
<members>
+ <member name="ignore_invalid_connection_type" type="bool" setter="set_ignore_invalid_connection_type" getter="is_ignoring_valid_connection_type" default="false">
+ If [code]true[/code], you can connect ports with different types, even if the connection was not explicitly allowed in the parent [GraphEdit].
+ </member>
<member name="mouse_filter" type="int" setter="set_mouse_filter" getter="get_mouse_filter" overrides="Control" enum="Control.MouseFilter" default="0" />
<member name="title" type="String" setter="set_title" getter="get_title" default="&quot;&quot;">
The text displayed in the GraphNode's title bar.
diff --git a/doc/classes/GridContainer.xml b/doc/classes/GridContainer.xml
index d69f4a10d2..76f789a058 100644
--- a/doc/classes/GridContainer.xml
+++ b/doc/classes/GridContainer.xml
@@ -9,7 +9,7 @@
</description>
<tutorials>
<link title="Using Containers">$DOCS_URL/tutorials/ui/gui_containers.html</link>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<members>
<member name="columns" type="int" setter="set_columns" getter="get_columns" default="1">
diff --git a/doc/classes/HingeJoint3D.xml b/doc/classes/HingeJoint3D.xml
index d150c79b78..f794853caf 100644
--- a/doc/classes/HingeJoint3D.xml
+++ b/doc/classes/HingeJoint3D.xml
@@ -53,7 +53,7 @@
<member name="angular_limit/relaxation" type="float" setter="set_param" getter="get_param" default="1.0">
The lower this value, the more the rotation gets slowed down.
</member>
- <member name="angular_limit/softness" type="float" setter="set_param" getter="get_param" default="0.9">
+ <member name="angular_limit/softness" type="float" setter="set_param" getter="get_param" default="0.9" deprecated="This property is never set by the engine and is kept for compatibility purposes.">
</member>
<member name="angular_limit/upper" type="float" setter="set_param" getter="get_param" default="1.5708">
The maximum rotation. Only active if [member angular_limit/enable] is [code]true[/code].
@@ -84,7 +84,7 @@
<constant name="PARAM_LIMIT_BIAS" value="3" enum="Param">
The speed with which the rotation across the axis perpendicular to the hinge gets corrected.
</constant>
- <constant name="PARAM_LIMIT_SOFTNESS" value="4" enum="Param">
+ <constant name="PARAM_LIMIT_SOFTNESS" value="4" enum="Param" deprecated="This property is never used by the engine and is kept for compatibility purpose.">
</constant>
<constant name="PARAM_LIMIT_RELAXATION" value="5" enum="Param">
The lower this value, the more the rotation gets slowed down.
diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml
index e622a6bce3..642bb76e75 100644
--- a/doc/classes/Input.xml
+++ b/doc/classes/Input.xml
@@ -9,8 +9,8 @@
</description>
<tutorials>
<link title="Inputs documentation index">$DOCS_URL/tutorials/inputs/index.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<methods>
<method name="action_press">
@@ -397,11 +397,14 @@
<method name="vibrate_handheld">
<return type="void" />
<param index="0" name="duration_ms" type="int" default="500" />
+ <param index="1" name="amplitude" type="float" default="-1.0" />
<description>
+ [b]Note:[/b] While [code skip-lint]amplitude[/code] expects a value between 0 and 1, -1 does the default amplitude for the device.
Vibrate the handheld device for the specified duration in milliseconds.
[b]Note:[/b] This method is implemented on Android, iOS, and Web. It has no effect on other platforms.
[b]Note:[/b] For Android, [method vibrate_handheld] requires enabling the [code]VIBRATE[/code] permission in the export preset. Otherwise, [method vibrate_handheld] will have no effect.
[b]Note:[/b] For iOS, specifying the duration is only supported in iOS 13 and later.
+ [b]Note:[/b] For Web, the amplitude cannot be changed.
[b]Note:[/b] Some web browsers such as Safari and Firefox for Android do not support [method vibrate_handheld].
</description>
</method>
diff --git a/doc/classes/InputEvent.xml b/doc/classes/InputEvent.xml
index 96a4612466..6f2e6aac20 100644
--- a/doc/classes/InputEvent.xml
+++ b/doc/classes/InputEvent.xml
@@ -9,8 +9,8 @@
<tutorials>
<link title="Using InputEvent">$DOCS_URL/tutorials/inputs/inputevent.html</link>
<link title="Viewport and canvas transforms">$DOCS_URL/tutorials/2d/2d_transforms.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<methods>
<method name="accumulate">
diff --git a/doc/classes/InputEventAction.xml b/doc/classes/InputEventAction.xml
index 1fe4cfcd79..4715f9fe95 100644
--- a/doc/classes/InputEventAction.xml
+++ b/doc/classes/InputEventAction.xml
@@ -9,8 +9,8 @@
</description>
<tutorials>
<link title="Using InputEvent: Actions">$DOCS_URL/tutorials/inputs/inputevent.html#actions</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="action" type="StringName" setter="set_action" getter="get_action" default="&amp;&quot;&quot;">
diff --git a/doc/classes/InputEventKey.xml b/doc/classes/InputEventKey.xml
index 7b6fc3f216..dc4872ba03 100644
--- a/doc/classes/InputEventKey.xml
+++ b/doc/classes/InputEventKey.xml
@@ -66,7 +66,7 @@
Represents the localized label printed on the key in the current keyboard layout, which corresponds to one of the [enum Key] constants or any valid Unicode character.
For keyboard layouts with a single label on the key, it is equivalent to [member keycode].
To get a human-readable representation of the [InputEventKey], use [code]OS.get_keycode_string(event.key_label)[/code] where [code]event[/code] is the [InputEventKey].
- [codeblock]
+ [codeblock lang=text]
+-----+ +-----+
| Q | | Q | - "Q" - keycode
| Й | | ض | - "Й" and "ض" - key_label
@@ -76,7 +76,7 @@
<member name="keycode" type="int" setter="set_keycode" getter="get_keycode" enum="Key" default="0">
Latin label printed on the key in the current keyboard layout, which corresponds to one of the [enum Key] constants.
To get a human-readable representation of the [InputEventKey], use [code]OS.get_keycode_string(event.keycode)[/code] where [code]event[/code] is the [InputEventKey].
- [codeblock]
+ [codeblock lang=text]
+-----+ +-----+
| Q | | Q | - "Q" - keycode
| Й | | ض | - "Й" and "ض" - key_label
diff --git a/doc/classes/InputEventMouseMotion.xml b/doc/classes/InputEventMouseMotion.xml
index e6ec674975..98a0221fe8 100644
--- a/doc/classes/InputEventMouseMotion.xml
+++ b/doc/classes/InputEventMouseMotion.xml
@@ -10,7 +10,7 @@
<tutorials>
<link title="Using InputEvent">$DOCS_URL/tutorials/inputs/inputevent.html</link>
<link title="Mouse and input coordinates">$DOCS_URL/tutorials/inputs/mouse_and_input_coordinates.html</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="pen_inverted" type="bool" setter="set_pen_inverted" getter="get_pen_inverted" default="false">
diff --git a/doc/classes/JSONRPC.xml b/doc/classes/JSONRPC.xml
index 348688f7f8..e5ee93cb93 100644
--- a/doc/classes/JSONRPC.xml
+++ b/doc/classes/JSONRPC.xml
@@ -79,15 +79,19 @@
</methods>
<constants>
<constant name="PARSE_ERROR" value="-32700" enum="ErrorCode">
+ The request could not be parsed as it was not valid by JSON standard ([method JSON.parse] failed).
</constant>
<constant name="INVALID_REQUEST" value="-32600" enum="ErrorCode">
+ A method call was requested but the request's format is not valid.
</constant>
<constant name="METHOD_NOT_FOUND" value="-32601" enum="ErrorCode">
A method call was requested but no function of that name existed in the JSONRPC subclass.
</constant>
<constant name="INVALID_PARAMS" value="-32602" enum="ErrorCode">
+ A method call was requested but the given method parameters are not valid. Not used by the built-in JSONRPC.
</constant>
<constant name="INTERNAL_ERROR" value="-32603" enum="ErrorCode">
+ An internal error occurred while processing the request. Not used by the built-in JSONRPC.
</constant>
</constants>
</class>
diff --git a/doc/classes/JavaClass.xml b/doc/classes/JavaClass.xml
index 541f23013d..ecfcaa8781 100644
--- a/doc/classes/JavaClass.xml
+++ b/doc/classes/JavaClass.xml
@@ -1,8 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="JavaClass" inherits="RefCounted" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ Represents an object from the Java Native Interface.
</brief_description>
<description>
+ Represents an object from the Java Native Interface. It is returned from [method JavaClassWrapper.wrap].
+ [b]Note:[/b] This class only works on Android. For any other build, this class does nothing.
+ [b]Note:[/b] This class is not to be confused with [JavaScriptObject].
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/JavaClassWrapper.xml b/doc/classes/JavaClassWrapper.xml
index e197b1e97e..01c3392b04 100644
--- a/doc/classes/JavaClassWrapper.xml
+++ b/doc/classes/JavaClassWrapper.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="JavaClassWrapper" inherits="Object" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ Provides access to the Java Native Interface.
</brief_description>
<description>
+ The JavaClassWrapper singleton provides a way for the Godot application to send and receive data through the [url=https://developer.android.com/training/articles/perf-jni]Java Native Interface[/url] (JNI).
+ [b]Note:[/b] This singleton is only available in Android builds.
</description>
<tutorials>
</tutorials>
@@ -11,6 +14,8 @@
<return type="JavaClass" />
<param index="0" name="name" type="String" />
<description>
+ Wraps a class defined in Java, and returns it as a [JavaClass] [Object] type that Godot can interact with.
+ [b]Note:[/b] This method only works on Android. On every other platform, this method does nothing and returns an empty [JavaClass].
</description>
</method>
</methods>
diff --git a/doc/classes/Joint2D.xml b/doc/classes/Joint2D.xml
index af0a54815f..0099c76d08 100644
--- a/doc/classes/Joint2D.xml
+++ b/doc/classes/Joint2D.xml
@@ -4,7 +4,7 @@
Abstract base class for all 2D physics joints.
</brief_description>
<description>
- Abstract base class for all joints in 2D physics. 2D joints bind together two physics bodies and apply a constraint.
+ Abstract base class for all joints in 2D physics. 2D joints bind together two physics bodies ([member node_a] and [member node_b]) and apply a constraint.
</description>
<tutorials>
</tutorials>
@@ -12,7 +12,7 @@
<method name="get_rid" qualifiers="const">
<return type="RID" />
<description>
- Returns the joint's [RID].
+ Returns the joint's internal [RID] from the [PhysicsServer2D].
</description>
</method>
</methods>
@@ -22,13 +22,13 @@
When set to [code]0[/code], the default value from [member ProjectSettings.physics/2d/solver/default_constraint_bias] is used.
</member>
<member name="disable_collision" type="bool" setter="set_exclude_nodes_from_collision" getter="get_exclude_nodes_from_collision" default="true">
- If [code]true[/code], [member node_a] and [member node_b] can not collide.
+ If [code]true[/code], the two bodies bound together do not collide with each other.
</member>
<member name="node_a" type="NodePath" setter="set_node_a" getter="get_node_a" default="NodePath(&quot;&quot;)">
- The first body attached to the joint. Must derive from [PhysicsBody2D].
+ Path to the first body (A) attached to the joint. The node must inherit [PhysicsBody2D].
</member>
<member name="node_b" type="NodePath" setter="set_node_b" getter="get_node_b" default="NodePath(&quot;&quot;)">
- The second body attached to the joint. Must derive from [PhysicsBody2D].
+ Path to the second body (B) attached to the joint. The node must inherit [PhysicsBody2D].
</member>
</members>
</class>
diff --git a/doc/classes/Joint3D.xml b/doc/classes/Joint3D.xml
index 9e0b753701..950129806a 100644
--- a/doc/classes/Joint3D.xml
+++ b/doc/classes/Joint3D.xml
@@ -4,28 +4,30 @@
Abstract base class for all 3D physics joints.
</brief_description>
<description>
- Abstract base class for all joints in 3D physics. 3D joints bind together two physics bodies and apply a constraint.
+ Abstract base class for all joints in 3D physics. 3D joints bind together two physics bodies ([member node_a] and [member node_b]) and apply a constraint. If only one body is defined, it is attached to a fixed [StaticBody3D] without collision shapes.
</description>
<tutorials>
- <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/524</link>
+ <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/2752</link>
</tutorials>
<methods>
<method name="get_rid" qualifiers="const">
<return type="RID" />
<description>
- Returns the joint's [RID].
+ Returns the joint's internal [RID] from the [PhysicsServer3D].
</description>
</method>
</methods>
<members>
<member name="exclude_nodes_from_collision" type="bool" setter="set_exclude_nodes_from_collision" getter="get_exclude_nodes_from_collision" default="true">
- If [code]true[/code], the two bodies of the nodes are not able to collide with each other.
+ If [code]true[/code], the two bodies bound together do not collide with each other.
</member>
<member name="node_a" type="NodePath" setter="set_node_a" getter="get_node_a" default="NodePath(&quot;&quot;)">
- The node attached to the first side (A) of the joint.
+ Path to the first node (A) attached to the joint. The node must inherit [PhysicsBody3D].
+ If left empty and [member node_b] is set, the body is attached to a fixed [StaticBody3D] without collision shapes.
</member>
<member name="node_b" type="NodePath" setter="set_node_b" getter="get_node_b" default="NodePath(&quot;&quot;)">
- The node attached to the second side (B) of the joint.
+ Path to the second node (B) attached to the joint. The node must inherit [PhysicsBody3D].
+ If left empty and [member node_a] is set, the body is attached to a fixed [StaticBody3D] without collision shapes.
</member>
<member name="solver_priority" type="int" setter="set_solver_priority" getter="get_solver_priority" default="1">
The priority used to define which solver is executed first for multiple joints. The lower the value, the higher the priority.
diff --git a/doc/classes/Label.xml b/doc/classes/Label.xml
index f39f5616f0..8acd05cbd1 100644
--- a/doc/classes/Label.xml
+++ b/doc/classes/Label.xml
@@ -7,7 +7,7 @@
A control for displaying plain text. It gives you control over the horizontal and vertical alignment and can wrap the text inside the node's bounding rectangle. It doesn't support bold, italics, or other rich text formatting. For that, use [RichTextLabel] instead.
</description>
<tutorials>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<methods>
<method name="get_character_bounds" qualifiers="const">
diff --git a/doc/classes/Light3D.xml b/doc/classes/Light3D.xml
index bffa20bf23..bda5fb69de 100644
--- a/doc/classes/Light3D.xml
+++ b/doc/classes/Light3D.xml
@@ -9,7 +9,7 @@
<tutorials>
<link title="3D lights and shadows">$DOCS_URL/tutorials/3d/lights_and_shadows.html</link>
<link title="Faking global illumination">$DOCS_URL/tutorials/3d/global_illumination/faking_global_illumination.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="get_correlated_color" qualifiers="const">
@@ -199,7 +199,7 @@
</constant>
<constant name="BAKE_DISABLED" value="0" enum="BakeMode">
Light is ignored when baking. This is the fastest mode, but the light will be taken into account when baking global illumination. This mode should generally be used for dynamic lights that change quickly, as the effect of global illumination is less noticeable on those lights.
- [b]Note:[/b] Hiding a light does [i]not[/i] affect baking [LightmapGI]. Hiding a light will still affect baking [VoxelGI] and SDFGI (see [member Environment.sdfgi_enabled).
+ [b]Note:[/b] Hiding a light does [i]not[/i] affect baking [LightmapGI]. Hiding a light will still affect baking [VoxelGI] and SDFGI (see [member Environment.sdfgi_enabled]).
</constant>
<constant name="BAKE_STATIC" value="1" enum="BakeMode">
Light is taken into account in static baking ([VoxelGI], [LightmapGI], SDFGI ([member Environment.sdfgi_enabled])). The light can be moved around or modified, but its global illumination will not update in real-time. This is suitable for subtle changes (such as flickering torches), but generally not large changes such as toggling a light on and off.
diff --git a/doc/classes/LightmapGI.xml b/doc/classes/LightmapGI.xml
index 13d48d8650..6fb15e4d21 100644
--- a/doc/classes/LightmapGI.xml
+++ b/doc/classes/LightmapGI.xml
@@ -28,6 +28,9 @@
<member name="camera_attributes" type="CameraAttributes" setter="set_camera_attributes" getter="get_camera_attributes">
The [CameraAttributes] resource that specifies exposure levels to bake at. Auto-exposure and non exposure properties will be ignored. Exposure settings should be used to reduce the dynamic range present when baking. If exposure is too high, the [LightmapGI] will have banding artifacts or may have over-exposure artifacts.
</member>
+ <member name="denoiser_range" type="int" setter="set_denoiser_range" getter="get_denoiser_range" default="10">
+ The distance in pixels from which the denoiser samples. Lower values preserve more details, but may give blotchy results if the lightmap quality is not high enough. Only effective if [member use_denoiser] is [code]true[/code] and [member ProjectSettings.rendering/lightmapping/denoising/denoiser] is set to JNLM.
+ </member>
<member name="denoiser_strength" type="float" setter="set_denoiser_strength" getter="get_denoiser_strength" default="0.1">
The strength of denoising step applied to the generated lightmaps. Only effective if [member use_denoiser] is [code]true[/code] and [member ProjectSettings.rendering/lightmapping/denoising/denoiser] is set to JNLM.
</member>
diff --git a/doc/classes/Line2D.xml b/doc/classes/Line2D.xml
index 283d847a93..a553e79746 100644
--- a/doc/classes/Line2D.xml
+++ b/doc/classes/Line2D.xml
@@ -9,8 +9,8 @@
[b]Note:[/b] [Line2D] is drawn using a 2D mesh.
</description>
<tutorials>
- <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/584</link>
- <link title="2.5D Demo">https://godotengine.org/asset-library/asset/583</link>
+ <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/2787</link>
+ <link title="2.5D Game Demo">https://godotengine.org/asset-library/asset/2783</link>
</tutorials>
<methods>
<method name="add_point">
diff --git a/doc/classes/Material.xml b/doc/classes/Material.xml
index 87fa3fd676..4a73bc2271 100644
--- a/doc/classes/Material.xml
+++ b/doc/classes/Material.xml
@@ -8,8 +8,8 @@
Importantly, you can inherit from [Material] to create your own custom material type in script or in GDExtension.
</description>
<tutorials>
- <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/123</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/2742</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="_can_do_next_pass" qualifiers="virtual const">
diff --git a/doc/classes/Mesh.xml b/doc/classes/Mesh.xml
index 3f8ed91ad7..6b5a50d97b 100644
--- a/doc/classes/Mesh.xml
+++ b/doc/classes/Mesh.xml
@@ -4,13 +4,13 @@
A [Resource] that contains vertex array-based geometry.
</brief_description>
<description>
- Mesh is a type of [Resource] that contains vertex array-based geometry, divided in [i]surfaces[/i]. Each surface contains a completely separate array and a material used to draw it. Design wise, a mesh with multiple surfaces is preferred to a single surface, because objects created in 3D editing software commonly contain multiple materials.
+ Mesh is a type of [Resource] that contains vertex array-based geometry, divided in [i]surfaces[/i]. Each surface contains a completely separate array and a material used to draw it. Design wise, a mesh with multiple surfaces is preferred to a single surface, because objects created in 3D editing software commonly contain multiple materials. The maximum number of surfaces per mesh is [constant RenderingServer.MAX_MESH_SURFACES].
</description>
<tutorials>
- <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/123</link>
- <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/2742</link>
+ <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2739</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="_get_aabb" qualifiers="virtual const">
diff --git a/doc/classes/MeshInstance3D.xml b/doc/classes/MeshInstance3D.xml
index 4645435f55..abbb4c4eeb 100644
--- a/doc/classes/MeshInstance3D.xml
+++ b/doc/classes/MeshInstance3D.xml
@@ -7,12 +7,20 @@
MeshInstance3D is a node that takes a [Mesh] resource and adds it to the current scenario by creating an instance of it. This is the class most often used render 3D geometry and can be used to instance a single [Mesh] in many places. This allows reusing geometry, which can save on resources. When a [Mesh] has to be instantiated more than thousands of times at close proximity, consider using a [MultiMesh] in a [MultiMeshInstance3D] instead.
</description>
<tutorials>
- <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/123</link>
- <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/2742</link>
+ <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2739</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
+ <method name="bake_mesh_from_current_blend_shape_mix">
+ <return type="ArrayMesh" />
+ <param index="0" name="existing" type="ArrayMesh" default="null" />
+ <description>
+ Takes a snapshot from the current [ArrayMesh] with all blend shapes applied according to their current weights and bakes it to the provided [param existing] mesh. If no [param existing] mesh is provided a new [ArrayMesh] is created, baked and returned. Mesh surface materials are not copied.
+ [b]Performance:[/b] [Mesh] data needs to be received from the GPU, stalling the [RenderingServer] in the process.
+ </description>
+ </method>
<method name="create_convex_collision">
<return type="void" />
<param index="0" name="clean" type="bool" default="true" />
@@ -70,6 +78,12 @@
Returns the value of the blend shape at the given [param blend_shape_idx]. Returns [code]0.0[/code] and produces an error if [member mesh] is [code]null[/code] or doesn't have a blend shape at that index.
</description>
</method>
+ <method name="get_skin_reference" qualifiers="const">
+ <return type="SkinReference" />
+ <description>
+ Returns the internal [SkinReference] containing the skeleton's [RID] attached to this RID. See also [method Resource.get_rid], [method SkinReference.get_skeleton], and [method RenderingServer.instance_attach_skeleton].
+ </description>
+ </method>
<method name="get_surface_override_material" qualifiers="const">
<return type="Material" />
<param index="0" name="surface" type="int" />
diff --git a/doc/classes/MeshLibrary.xml b/doc/classes/MeshLibrary.xml
index f7099e569f..f65e29af8e 100644
--- a/doc/classes/MeshLibrary.xml
+++ b/doc/classes/MeshLibrary.xml
@@ -7,8 +7,8 @@
A library of meshes. Contains a list of [Mesh] resources, each with a name and ID. Each item can also include collision and navigation shapes. This resource is used in [GridMap].
</description>
<tutorials>
- <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
+ <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2739</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
</tutorials>
<methods>
<method name="clear">
@@ -29,7 +29,7 @@
<return type="int" />
<param index="0" name="name" type="String" />
<description>
- Returns the first item with the given name.
+ Returns the first item with the given name, or [code]-1[/code] if no item is found.
</description>
</method>
<method name="get_item_list" qualifiers="const">
diff --git a/doc/classes/MultiplayerPeer.xml b/doc/classes/MultiplayerPeer.xml
index 04fd282457..edb2c39e24 100644
--- a/doc/classes/MultiplayerPeer.xml
+++ b/doc/classes/MultiplayerPeer.xml
@@ -10,7 +10,6 @@
</description>
<tutorials>
<link title="High-level multiplayer">$DOCS_URL/tutorials/networking/high_level_multiplayer.html</link>
- <link title="WebRTC Signaling Demo">https://godotengine.org/asset-library/asset/537</link>
</tutorials>
<methods>
<method name="close">
diff --git a/doc/classes/NavigationAgent2D.xml b/doc/classes/NavigationAgent2D.xml
index 132ece53b0..94c372106b 100644
--- a/doc/classes/NavigationAgent2D.xml
+++ b/doc/classes/NavigationAgent2D.xml
@@ -198,6 +198,13 @@
The radius of the avoidance agent. This is the "body" of the avoidance agent and not the avoidance maneuver starting radius (which is controlled by [member neighbor_distance]).
Does not affect normal pathfinding. To change an actor's pathfinding radius bake [NavigationMesh] resources with a different [member NavigationMesh.agent_radius] property and use different navigation maps for each actor size.
</member>
+ <member name="simplify_epsilon" type="float" setter="set_simplify_epsilon" getter="get_simplify_epsilon" default="0.0">
+ The path simplification amount in worlds units.
+ </member>
+ <member name="simplify_path" type="bool" setter="set_simplify_path" getter="get_simplify_path" default="false">
+ If [code]true[/code] a simplified version of the path will be returned with less critical path points removed. The simplification amount is controlled by [member simplify_epsilon]. The simplification uses a variant of Ramer-Douglas-Peucker algorithm for curve point decimation.
+ Path simplification can be helpful to mitigate various path following issues that can arise with certain agent types and script behaviors. E.g. "steering" agents or avoidance in "open fields".
+ </member>
<member name="target_desired_distance" type="float" setter="set_target_desired_distance" getter="get_target_desired_distance" default="10.0">
The distance threshold before the target is considered to be reached. On reaching the target, [signal target_reached] is emitted and navigation ends (see [method is_navigation_finished] and [signal navigation_finished]).
You can make navigation end early by setting this property to a value greater than [member path_desired_distance] (navigation will end before reaching the last waypoint).
@@ -254,7 +261,7 @@
<signal name="velocity_computed">
<param index="0" name="safe_velocity" type="Vector2" />
<description>
- Notifies when the collision avoidance velocity is calculated. Emitted when [member velocity] is set. Only emitted when [member avoidance_enabled] is true.
+ Notifies when the collision avoidance velocity is calculated. Emitted every update as long as [member avoidance_enabled] is [code]true[/code] and the agent has a navigation map.
</description>
</signal>
<signal name="waypoint_reached">
diff --git a/doc/classes/NavigationAgent3D.xml b/doc/classes/NavigationAgent3D.xml
index dd75cedf61..5f9f4991d1 100644
--- a/doc/classes/NavigationAgent3D.xml
+++ b/doc/classes/NavigationAgent3D.xml
@@ -204,6 +204,13 @@
The radius of the avoidance agent. This is the "body" of the avoidance agent and not the avoidance maneuver starting radius (which is controlled by [member neighbor_distance]).
Does not affect normal pathfinding. To change an actor's pathfinding radius bake [NavigationMesh] resources with a different [member NavigationMesh.agent_radius] property and use different navigation maps for each actor size.
</member>
+ <member name="simplify_epsilon" type="float" setter="set_simplify_epsilon" getter="get_simplify_epsilon" default="0.0">
+ The path simplification amount in worlds units.
+ </member>
+ <member name="simplify_path" type="bool" setter="set_simplify_path" getter="get_simplify_path" default="false">
+ If [code]true[/code] a simplified version of the path will be returned with less critical path points removed. The simplification amount is controlled by [member simplify_epsilon]. The simplification uses a variant of Ramer-Douglas-Peucker algorithm for curve point decimation.
+ Path simplification can be helpful to mitigate various path following issues that can arise with certain agent types and script behaviors. E.g. "steering" agents or avoidance in "open fields".
+ </member>
<member name="target_desired_distance" type="float" setter="set_target_desired_distance" getter="get_target_desired_distance" default="1.0">
The distance threshold before the target is considered to be reached. On reaching the target, [signal target_reached] is emitted and navigation ends (see [method is_navigation_finished] and [signal navigation_finished]).
You can make navigation end early by setting this property to a value greater than [member path_desired_distance] (navigation will end before reaching the last waypoint).
@@ -264,7 +271,7 @@
<signal name="velocity_computed">
<param index="0" name="safe_velocity" type="Vector3" />
<description>
- Notifies when the collision avoidance velocity is calculated. Emitted when [member velocity] is set. Only emitted when [member avoidance_enabled] is true.
+ Notifies when the collision avoidance velocity is calculated. Emitted every update as long as [member avoidance_enabled] is [code]true[/code] and the agent has a navigation map.
</description>
</signal>
<signal name="waypoint_reached">
diff --git a/doc/classes/NavigationMesh.xml b/doc/classes/NavigationMesh.xml
index 42ef354bc8..8be8a89543 100644
--- a/doc/classes/NavigationMesh.xml
+++ b/doc/classes/NavigationMesh.xml
@@ -8,7 +8,7 @@
</description>
<tutorials>
<link title="Using NavigationMeshes">$DOCS_URL/tutorials/navigation/navigation_using_navigationmeshes.html</link>
- <link title="3D Navmesh Demo">https://godotengine.org/asset-library/asset/124</link>
+ <link title="3D Navigation Demo">https://godotengine.org/asset-library/asset/2743</link>
</tutorials>
<methods>
<method name="add_polygon">
diff --git a/doc/classes/NavigationMeshSourceGeometryData2D.xml b/doc/classes/NavigationMeshSourceGeometryData2D.xml
index 609877fadc..1d8689420b 100644
--- a/doc/classes/NavigationMeshSourceGeometryData2D.xml
+++ b/doc/classes/NavigationMeshSourceGeometryData2D.xml
@@ -31,6 +31,20 @@
Adds the outline points of a shape as traversable area.
</description>
</method>
+ <method name="append_obstruction_outlines">
+ <return type="void" />
+ <param index="0" name="obstruction_outlines" type="PackedVector2Array[]" />
+ <description>
+ Appends another array of [param obstruction_outlines] at the end of the existing obstruction outlines array.
+ </description>
+ </method>
+ <method name="append_traversable_outlines">
+ <return type="void" />
+ <param index="0" name="traversable_outlines" type="PackedVector2Array[]" />
+ <description>
+ Appends another array of [param traversable_outlines] at the end of the existing traversable outlines array.
+ </description>
+ </method>
<method name="clear">
<return type="void" />
<description>
diff --git a/doc/classes/NavigationMeshSourceGeometryData3D.xml b/doc/classes/NavigationMeshSourceGeometryData3D.xml
index 322e2e7c66..0b3126a63b 100644
--- a/doc/classes/NavigationMeshSourceGeometryData3D.xml
+++ b/doc/classes/NavigationMeshSourceGeometryData3D.xml
@@ -43,6 +43,14 @@
Adds a projected obstruction shape to the source geometry. The [param vertices] are considered projected on a xz-axes plane, placed at the global y-axis [param elevation] and extruded by [param height]. If [param carve] is [code]true[/code] the carved shape will not be affected by additional offsets (e.g. agent radius) of the navigation mesh baking process.
</description>
</method>
+ <method name="append_arrays">
+ <return type="void" />
+ <param index="0" name="vertices" type="PackedFloat32Array" />
+ <param index="1" name="indices" type="PackedInt32Array" />
+ <description>
+ Appends arrays of [param vertices] and [param indices] at the end of the existing arrays. Adds the existing index as an offset to the appended indices.
+ </description>
+ </method>
<method name="clear">
<return type="void" />
<description>
diff --git a/doc/classes/NavigationPathQueryParameters2D.xml b/doc/classes/NavigationPathQueryParameters2D.xml
index 7d9ecf61b0..ce0a00bc83 100644
--- a/doc/classes/NavigationPathQueryParameters2D.xml
+++ b/doc/classes/NavigationPathQueryParameters2D.xml
@@ -25,6 +25,13 @@
<member name="pathfinding_algorithm" type="int" setter="set_pathfinding_algorithm" getter="get_pathfinding_algorithm" enum="NavigationPathQueryParameters2D.PathfindingAlgorithm" default="0">
The pathfinding algorithm used in the path query.
</member>
+ <member name="simplify_epsilon" type="float" setter="set_simplify_epsilon" getter="get_simplify_epsilon" default="0.0">
+ The path simplification amount in worlds units.
+ </member>
+ <member name="simplify_path" type="bool" setter="set_simplify_path" getter="get_simplify_path" default="false">
+ If [code]true[/code] a simplified version of the path will be returned with less critical path points removed. The simplification amount is controlled by [member simplify_epsilon]. The simplification uses a variant of Ramer-Douglas-Peucker algorithm for curve point decimation.
+ Path simplification can be helpful to mitigate various path following issues that can arise with certain agent types and script behaviors. E.g. "steering" agents or avoidance in "open fields".
+ </member>
<member name="start_position" type="Vector2" setter="set_start_position" getter="get_start_position" default="Vector2(0, 0)">
The pathfinding start position in global coordinates.
</member>
diff --git a/doc/classes/NavigationPathQueryParameters3D.xml b/doc/classes/NavigationPathQueryParameters3D.xml
index 862f8a8347..fcd913f73b 100644
--- a/doc/classes/NavigationPathQueryParameters3D.xml
+++ b/doc/classes/NavigationPathQueryParameters3D.xml
@@ -25,6 +25,13 @@
<member name="pathfinding_algorithm" type="int" setter="set_pathfinding_algorithm" getter="get_pathfinding_algorithm" enum="NavigationPathQueryParameters3D.PathfindingAlgorithm" default="0">
The pathfinding algorithm used in the path query.
</member>
+ <member name="simplify_epsilon" type="float" setter="set_simplify_epsilon" getter="get_simplify_epsilon" default="0.0">
+ The path simplification amount in worlds units.
+ </member>
+ <member name="simplify_path" type="bool" setter="set_simplify_path" getter="get_simplify_path" default="false">
+ If [code]true[/code] a simplified version of the path will be returned with less critical path points removed. The simplification amount is controlled by [member simplify_epsilon]. The simplification uses a variant of Ramer-Douglas-Peucker algorithm for curve point decimation.
+ Path simplification can be helpful to mitigate various path following issues that can arise with certain agent types and script behaviors. E.g. "steering" agents or avoidance in "open fields".
+ </member>
<member name="start_position" type="Vector3" setter="set_start_position" getter="get_start_position" default="Vector3(0, 0, 0)">
The pathfinding start position in global coordinates.
</member>
diff --git a/doc/classes/NavigationPolygon.xml b/doc/classes/NavigationPolygon.xml
index 9c4e8169b0..eebdc817a7 100644
--- a/doc/classes/NavigationPolygon.xml
+++ b/doc/classes/NavigationPolygon.xml
@@ -43,8 +43,8 @@
[/codeblocks]
</description>
<tutorials>
- <link title="2D Navigation Demo">https://godotengine.org/asset-library/asset/117</link>
<link title="Using NavigationMeshes">$DOCS_URL/tutorials/navigation/navigation_using_navigationmeshes.html</link>
+ <link title="Navigation Polygon 2D Demo">https://godotengine.org/asset-library/asset/2722</link>
</tutorials>
<methods>
<method name="add_outline">
diff --git a/doc/classes/NavigationRegion2D.xml b/doc/classes/NavigationRegion2D.xml
index c490620fc0..31ce1dba4a 100644
--- a/doc/classes/NavigationRegion2D.xml
+++ b/doc/classes/NavigationRegion2D.xml
@@ -23,13 +23,6 @@
Bakes the [NavigationPolygon]. If [param on_thread] is set to [code]true[/code] (default), the baking is done on a separate thread.
</description>
</method>
- <method name="get_avoidance_layer_value" qualifiers="const">
- <return type="bool" />
- <param index="0" name="layer_number" type="int" />
- <description>
- Returns whether or not the specified layer of the [member avoidance_layers] bitmask is enabled, given a [param layer_number] between 1 and 32.
- </description>
- </method>
<method name="get_navigation_layer_value" qualifiers="const">
<return type="bool" />
<param index="0" name="layer_number" type="int" />
@@ -61,14 +54,6 @@
Returns [code]true[/code] when the [NavigationPolygon] is being baked on a background thread.
</description>
</method>
- <method name="set_avoidance_layer_value">
- <return type="void" />
- <param index="0" name="layer_number" type="int" />
- <param index="1" name="value" type="bool" />
- <description>
- Based on [param value], enables or disables the specified layer in the [member avoidance_layers] bitmask, given a [param layer_number] between 1 and 32.
- </description>
- </method>
<method name="set_navigation_layer_value">
<return type="void" />
<param index="0" name="layer_number" type="int" />
@@ -86,12 +71,6 @@
</method>
</methods>
<members>
- <member name="avoidance_layers" type="int" setter="set_avoidance_layers" getter="get_avoidance_layers" default="1">
- A bitfield determining all avoidance layers for the avoidance constrain.
- </member>
- <member name="constrain_avoidance" type="bool" setter="set_constrain_avoidance" getter="get_constrain_avoidance" default="false" experimental="When enabled, agents are known to get stuck on the navigation polygon corners and edges, especially at a high frame rate. Not recommended for use in production at this stage.">
- If [code]true[/code] constraints avoidance agent's with an avoidance mask bit that matches with a bit of the [member avoidance_layers] to the navigation polygon. Due to each navigation polygon outline creating an obstacle and each polygon edge creating an avoidance line constrain keep the navigation polygon shape as simple as possible for performance.
- </member>
<member name="enabled" type="bool" setter="set_enabled" getter="is_enabled" default="true">
Determines if the [NavigationRegion2D] is enabled or disabled.
</member>
diff --git a/doc/classes/NavigationServer2D.xml b/doc/classes/NavigationServer2D.xml
index 91d69edf29..a0d03d7a01 100644
--- a/doc/classes/NavigationServer2D.xml
+++ b/doc/classes/NavigationServer2D.xml
@@ -14,8 +14,8 @@
This server keeps tracks of any call and executes them during the sync phase. This means that you can request any change to the map, using any thread, without worrying.
</description>
<tutorials>
- <link title="2D Navigation Demo">https://godotengine.org/asset-library/asset/117</link>
<link title="Using NavigationServer">$DOCS_URL/tutorials/navigation/navigation_using_navigationservers.html</link>
+ <link title="Navigation Polygon 2D Demo">https://godotengine.org/asset-library/asset/2722</link>
</tutorials>
<methods>
<method name="agent_create">
@@ -947,6 +947,32 @@
If [code]true[/code] enables debug mode on the NavigationServer.
</description>
</method>
+ <method name="simplify_path">
+ <return type="PackedVector2Array" />
+ <param index="0" name="path" type="PackedVector2Array" />
+ <param index="1" name="epsilon" type="float" />
+ <description>
+ Returns a simplified version of [param path] with less critical path points removed. The simplification amount is in worlds units and controlled by [param epsilon]. The simplification uses a variant of Ramer-Douglas-Peucker algorithm for curve point decimation.
+ Path simplification can be helpful to mitigate various path following issues that can arise with certain agent types and script behaviors. E.g. "steering" agents or avoidance in "open fields".
+ </description>
+ </method>
+ <method name="source_geometry_parser_create">
+ <return type="RID" />
+ <description>
+ Creates a new source geometry parser. If a [Callable] is set for the parser with [method source_geometry_parser_set_callback] the callback will be called for every single node that gets parsed whenever [method parse_source_geometry_data] is used.
+ </description>
+ </method>
+ <method name="source_geometry_parser_set_callback">
+ <return type="void" />
+ <param index="0" name="parser" type="RID" />
+ <param index="1" name="callback" type="Callable" />
+ <description>
+ Sets the [param callback] [Callable] for the specific source geometry [param parser]. The [Callable] will receive a call with the following parameters:
+ - [code]navigation_mesh[/code] - The [NavigationPolygon] reference used to define the parse settings. Do NOT edit or add directly to the navigation mesh.
+ - [code]source_geometry_data[/code] - The [NavigationMeshSourceGeometryData2D] reference. Add custom source geometry for navigation mesh baking to this object.
+ - [code]node[/code] - The [Node] that is parsed.
+ </description>
+ </method>
</methods>
<signals>
<signal name="map_changed">
diff --git a/doc/classes/NavigationServer3D.xml b/doc/classes/NavigationServer3D.xml
index 29d9f5424a..ff3e6fd8a6 100644
--- a/doc/classes/NavigationServer3D.xml
+++ b/doc/classes/NavigationServer3D.xml
@@ -14,8 +14,8 @@
This server keeps tracks of any call and executes them during the sync phase. This means that you can request any change to the map, using any thread, without worrying.
</description>
<tutorials>
- <link title="3D Navmesh Demo">https://godotengine.org/asset-library/asset/124</link>
<link title="Using NavigationServer">$DOCS_URL/tutorials/navigation/navigation_using_navigationservers.html</link>
+ <link title="3D Navigation Demo">https://godotengine.org/asset-library/asset/2743</link>
</tutorials>
<methods>
<method name="agent_create">
@@ -1094,6 +1094,32 @@
If [code]true[/code] enables debug mode on the NavigationServer.
</description>
</method>
+ <method name="simplify_path">
+ <return type="PackedVector3Array" />
+ <param index="0" name="path" type="PackedVector3Array" />
+ <param index="1" name="epsilon" type="float" />
+ <description>
+ Returns a simplified version of [param path] with less critical path points removed. The simplification amount is in worlds units and controlled by [param epsilon]. The simplification uses a variant of Ramer-Douglas-Peucker algorithm for curve point decimation.
+ Path simplification can be helpful to mitigate various path following issues that can arise with certain agent types and script behaviors. E.g. "steering" agents or avoidance in "open fields".
+ </description>
+ </method>
+ <method name="source_geometry_parser_create">
+ <return type="RID" />
+ <description>
+ Creates a new source geometry parser. If a [Callable] is set for the parser with [method source_geometry_parser_set_callback] the callback will be called for every single node that gets parsed whenever [method parse_source_geometry_data] is used.
+ </description>
+ </method>
+ <method name="source_geometry_parser_set_callback">
+ <return type="void" />
+ <param index="0" name="parser" type="RID" />
+ <param index="1" name="callback" type="Callable" />
+ <description>
+ Sets the [param callback] [Callable] for the specific source geometry [param parser]. The [Callable] will receive a call with the following parameters:
+ - [code]navigation_mesh[/code] - The [NavigationMesh] reference used to define the parse settings. Do NOT edit or add directly to the navigation mesh.
+ - [code]source_geometry_data[/code] - The [NavigationMeshSourceGeometryData3D] reference. Add custom source geometry for navigation mesh baking to this object.
+ - [code]node[/code] - The [Node] that is parsed.
+ </description>
+ </method>
</methods>
<signals>
<signal name="avoidance_debug_changed">
diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml
index ae6cd9596c..176bdea4a1 100644
--- a/doc/classes/Node.xml
+++ b/doc/classes/Node.xml
@@ -383,7 +383,7 @@
Fetches a node. The [NodePath] can either be a relative path (from this node), or an absolute path (from the [member SceneTree.root]) to a node. If [param path] does not point to a valid node, generates an error and returns [code]null[/code]. Attempts to access methods on the return value will result in an [i]"Attempt to call &lt;method&gt; on a null instance."[/i] error.
[b]Note:[/b] Fetching by absolute path only works when the node is inside the scene tree (see [method is_inside_tree]).
[b]Example:[/b] Assume this method is called from the Character node, inside the following tree:
- [codeblock]
+ [codeblock lang=text]
┖╴root
┠╴Character (you are here!)
┃ ┠╴Sword
@@ -514,8 +514,8 @@
<return type="String" />
<description>
Returns the tree as a [String]. Used mainly for debugging purposes. This version displays the path relative to the current node, and is good for copy/pasting into the [method get_node] function. It also can be used in game UI/UX.
- [b]Example output:[/b]
- [codeblock]
+ May print, for example:
+ [codeblock lang=text]
TheGame
TheGame/Menu
TheGame/Menu/Label
@@ -529,8 +529,8 @@
<return type="String" />
<description>
Similar to [method get_tree_string], this returns the tree as a [String]. This version displays a more graphical representation similar to what is displayed in the Scene Dock. It is useful for inspecting larger trees.
- [b]Example output:[/b]
- [codeblock]
+ May print, for example:
+ [codeblock lang=text]
┖╴TheGame
┠╴Menu
┃ ┠╴Label
@@ -619,6 +619,12 @@
[method request_ready] resets it back to [code]false[/code].
</description>
</method>
+ <method name="is_part_of_edited_scene" qualifiers="const">
+ <return type="bool" />
+ <description>
+ Returns [code]true[/code] if the node is part of the scene currently opened in the editor.
+ </description>
+ </method>
<method name="is_physics_interpolated" qualifiers="const">
<return type="bool" />
<description>
@@ -716,8 +722,8 @@
<return type="void" />
<description>
Prints the node and its children to the console, recursively. The node does not have to be inside the tree. This method outputs [NodePath]s relative to this node, and is good for copy/pasting into [method get_node]. See also [method print_tree_pretty].
- [b]Example output:[/b]
- [codeblock]
+ May print, for example:
+ [codeblock lang=text]
.
Menu
Menu/Label
@@ -731,8 +737,8 @@
<return type="void" />
<description>
Prints the node and its children to the console, recursively. The node does not have to be inside the tree. Similar to [method print_tree], but the graphical representation looks like what is displayed in the editor's Scene dock. It is useful for inspecting larger trees.
- [b]Example output:[/b]
- [codeblock]
+ May print, for example:
+ [codeblock lang=text]
┖╴TheGame
┠╴Menu
┃ ┠╴Label
@@ -795,9 +801,8 @@
<return type="void" />
<param index="0" name="node" type="Node" />
<param index="1" name="keep_groups" type="bool" default="false" />
- <param index="2" name="keep_children" type="bool" default="true" />
<description>
- Replaces this node by the given [param node]. If [param keep_children] is [code]true[/code] all children of this node are moved to [param node].
+ Replaces this node by the given [param node]. All children of this node are moved to [param node].
If [param keep_groups] is [code]true[/code], the [param node] is added to the same groups that the replaced node is in (see [method add_to_group]).
[b]Warning:[/b] The replaced node is removed from the tree, but it is [b]not[/b] deleted. To prevent memory leaks, store a reference to the node in a variable, or use [method Object.free].
</description>
@@ -971,8 +976,8 @@
</methods>
<members>
<member name="auto_translate_mode" type="int" setter="set_auto_translate_mode" getter="get_auto_translate_mode" enum="Node.AutoTranslateMode" default="0">
- Defines if any text should automatically change to its translated version depending on the current locale (for nodes such as [Label], [RichTextLabel], [Window], etc.). See [enum AutoTranslateMode].
- Also decides if the node's strings should be parsed for POT generation.
+ Defines if any text should automatically change to its translated version depending on the current locale (for nodes such as [Label], [RichTextLabel], [Window], etc.). Also decides if the node's strings should be parsed for POT generation.
+ [b]Note:[/b] For the root node, auto translate mode can also be set via [member ProjectSettings.internationalization/rendering/root_node_auto_translate].
</member>
<member name="editor_description" type="String" setter="set_editor_description" getter="get_editor_description" default="&quot;&quot;">
An optional description to the node. It will be displayed as a tooltip when hovering over the node in the editor's Scene dock.
@@ -986,7 +991,7 @@
[b]Note:[/b] When changing the name, the following characters will be replaced with an underscore: ([code].[/code] [code]:[/code] [code]@[/code] [code]/[/code] [code]"[/code] [code]%[/code]). In particular, the [code]@[/code] character is reserved for auto-generated names. See also [method String.validate_node_name].
</member>
<member name="owner" type="Node" setter="set_owner" getter="get_owner">
- The owner of this node. The owner must be an ancestor of this node. When packing the owner node in a [PackedScene], all the nodes it owns are also saved with it.
+ The owner of this node. The owner must be an ancestor of this node. When packing the owner node in a [PackedScene], all the nodes it owns are also saved with it.
[b]Note:[/b] In the editor, nodes not owned by the scene root are usually not displayed in the Scene dock, and will [b]not[/b] be saved. To prevent this, remember to set the owner after calling [method add_child]. See also (see [member unique_name_in_owner])
</member>
<member name="physics_interpolation_mode" type="int" setter="set_physics_interpolation_mode" getter="get_physics_interpolation_mode" enum="Node.PhysicsInterpolationMode" default="0">
diff --git a/doc/classes/Node2D.xml b/doc/classes/Node2D.xml
index 091acdf6f2..851290de7b 100644
--- a/doc/classes/Node2D.xml
+++ b/doc/classes/Node2D.xml
@@ -44,7 +44,8 @@
<return type="void" />
<param index="0" name="point" type="Vector2" />
<description>
- Rotates the node so it points towards the [param point], which is expected to use global coordinates.
+ Rotates the node so that its local +X axis points towards the [param point], which is expected to use global coordinates.
+ [param point] should not be the same as the node's position, otherwise the node always looks to the right.
</description>
</method>
<method name="move_local_x">
diff --git a/doc/classes/NodePath.xml b/doc/classes/NodePath.xml
index 6e0799e796..b4969b8906 100644
--- a/doc/classes/NodePath.xml
+++ b/doc/classes/NodePath.xml
@@ -30,11 +30,11 @@
[/codeblock]
Node paths cannot check whether they are valid and may point to nodes or properties that do not exist. Their meaning depends entirely on the context in which they're used.
You usually do not have to worry about the [NodePath] type, as strings are automatically converted to the type when necessary. There are still times when defining node paths is useful. For example, exported [NodePath] properties allow you to easily select any node within the currently edited scene. They are also automatically updated when moving, renaming or deleting nodes in the scene tree editor. See also [annotation @GDScript.@export_node_path].
- See also [StringName], which is a similar type designed for optimised strings.
+ See also [StringName], which is a similar type designed for optimized strings.
[b]Note:[/b] In a boolean context, a [NodePath] will evaluate to [code]false[/code] if it is empty ([code]NodePath("")[/code]). Otherwise, a [NodePath] will always evaluate to [code]true[/code].
</description>
<tutorials>
- <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
+ <link title="2D Role Playing Game (RPG) Demo">https://godotengine.org/asset-library/asset/2729</link>
</tutorials>
<constructors>
<constructor name="NodePath">
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index bd1bd9afa7..7c69bc6ed2 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -8,7 +8,7 @@
[b]Note:[/b] In Godot 4, [OS] functions related to window management, clipboard, and TTS were moved to the [DisplayServer] singleton (and the [Window] class). Functions related to time were removed and are only available in the [Time] class.
</description>
<tutorials>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<methods>
<method name="alert">
@@ -189,26 +189,26 @@
for argument in OS.get_cmdline_args():
if argument.contains("="):
var key_value = argument.split("=")
- arguments[key_value[0].lstrip("--")] = key_value[1]
+ arguments[key_value[0].trim_prefix("--")] = key_value[1]
else:
# Options without an argument will be present in the dictionary,
# with the value set to an empty string.
- arguments[argument.lstrip("--")] = ""
+ arguments[argument.trim_prefix("--")] = ""
[/gdscript]
[csharp]
- var arguments = new Godot.Collections.Dictionary();
+ var arguments = new Dictionary&lt;string, string&gt;();
foreach (var argument in OS.GetCmdlineArgs())
{
if (argument.Contains('='))
{
string[] keyValue = argument.Split("=");
- arguments[keyValue[0].LStrip("--")] = keyValue[1];
+ arguments[keyValue[0].TrimPrefix("--")] = keyValue[1];
}
else
{
// Options without an argument will be present in the dictionary,
// with the value set to an empty string.
- arguments[keyValue[0].LStrip("--")] = "";
+ arguments[argument.TrimPrefix("--")] = "";
}
}
[/csharp]
@@ -408,11 +408,20 @@
[b]Note:[/b] On Web platforms, it is still possible to determine the host platform's OS with feature tags. See [method has_feature].
</description>
</method>
+ <method name="get_process_exit_code" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="pid" type="int" />
+ <description>
+ Returns the exit code of a spawned process once it has finished running (see [method is_process_running]).
+ Returns [code]-1[/code] if the [param pid] is not a PID of a spawned child process, the process is still running, or the method is not implemented for the current platform.
+ [b]Note:[/b] This method is implemented on Android, Linux, macOS and Windows.
+ </description>
+ </method>
<method name="get_process_id" qualifiers="const">
<return type="int" />
<description>
Returns the number used by the host machine to uniquely identify this application.
- [b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and Windows.
+ [b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS, and Windows.
</description>
</method>
<method name="get_processor_count" qualifiers="const">
@@ -592,7 +601,7 @@
<param index="0" name="pid" type="int" />
<description>
Returns [code]true[/code] if the child process ID ([param pid]) is still running or [code]false[/code] if it has terminated. [param pid] must be a valid ID generated from [method create_process].
- [b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and Windows.
+ [b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS, and Windows.
</description>
</method>
<method name="is_restart_on_exit_set" qualifiers="const">
diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml
index b69326b6e0..b0dec2d00a 100644
--- a/doc/classes/Object.xml
+++ b/doc/classes/Object.xml
@@ -357,7 +357,7 @@
<param index="0" name="signal" type="String" />
<param index="1" name="arguments" type="Array" default="[]" />
<description>
- Adds a user-defined [param signal]. Optional arguments for the signal can be added as an [Array] of dictionaries, each defining a [code]name[/code] [String] and a [code]type[/code] [int] (see [enum Variant.Type]). See also [method has_user_signal].
+ Adds a user-defined [param signal]. Optional arguments for the signal can be added as an [Array] of dictionaries, each defining a [code]name[/code] [String] and a [code]type[/code] [int] (see [enum Variant.Type]). See also [method has_user_signal] and [method remove_user_signal].
[codeblocks]
[gdscript]
add_user_signal("hurt", [
@@ -556,7 +556,7 @@
While all options have the same outcome ([code]button[/code]'s [signal BaseButton.button_down] signal will be connected to [code]_on_button_down[/code]), [b]option 3[/b] offers the best validation: it will print a compile-time error if either the [code]button_down[/code] [Signal] or the [code]_on_button_down[/code] [Callable] are not defined. On the other hand, [b]option 2[/b] only relies on string names and will only be able to validate either names at runtime: it will print a runtime error if [code]"button_down"[/code] doesn't correspond to a signal, or if [code]"_on_button_down"[/code] is not a registered method in the object [code]self[/code]. The main reason for using options 1, 2, or 4 would be if you actually need to use strings (e.g. to connect signals programmatically based on strings read from a configuration file). Otherwise, option 3 is the recommended (and fastest) method.
[b]Binding and passing parameters:[/b]
The syntax to bind parameters is through [method Callable.bind], which returns a copy of the [Callable] with its parameters bound.
- When calling [method emit_signal], the signal parameters can be also passed. The examples below show the relationship between these signal parameters and bound parameters.
+ When calling [method emit_signal] or [method Signal.emit], the signal parameters can be also passed. The examples below show the relationship between these signal parameters and bound parameters.
[codeblocks]
[gdscript]
func _ready():
@@ -566,7 +566,7 @@
player.hit.connect(_on_player_hit.bind("sword", 100))
# Parameters added when emitting the signal are passed first.
- player.emit_signal("hit", "Dark lord", 5)
+ player.hit.emit("Dark lord", 5)
# We pass two arguments when emitting (`hit_by`, `level`),
# and bind two more arguments when connecting (`weapon_type`, `damage`).
@@ -797,7 +797,7 @@
<return type="bool" />
<param index="0" name="signal" type="StringName" />
<description>
- Returns [code]true[/code] if the given user-defined [param signal] name exists. Only signals added with [method add_user_signal] are included.
+ Returns [code]true[/code] if the given user-defined [param signal] name exists. Only signals added with [method add_user_signal] are included. See also [method remove_user_signal].
</description>
</method>
<method name="is_blocking_signals" qualifiers="const">
@@ -905,6 +905,13 @@
[b]Note:[/b] Metadata that has a name starting with an underscore ([code]_[/code]) is considered editor-only. Editor-only metadata is not displayed in the Inspector and should not be edited, although it can still be found by this method.
</description>
</method>
+ <method name="remove_user_signal">
+ <return type="void" />
+ <param index="0" name="signal" type="StringName" />
+ <description>
+ Removes the given user signal [param signal] from the object. See also [method add_user_signal] and [method has_user_signal].
+ </description>
+ </method>
<method name="set">
<return type="void" />
<param index="0" name="property" type="StringName" />
@@ -1027,6 +1034,7 @@
Translates a [param message], using the translation catalogs configured in the Project Settings. Further [param context] can be specified to help with the translation. Note that most [Control] nodes automatically translate their strings, so this method is mostly useful for formatted strings or custom drawn text.
If [method can_translate_messages] is [code]false[/code], or no translation is available, this method returns the [param message] without changes. See [method set_message_translation].
For detailed examples, see [url=$DOCS_URL/tutorials/i18n/internationalizing_games.html]Internationalizing games[/url].
+ [b]Note:[/b] This method can't be used without an [Object] instance, as it requires the [method can_translate_messages] method. To translate strings in a static context, use [method TranslationServer.translate].
</description>
</method>
<method name="tr_n" qualifiers="const">
@@ -1041,6 +1049,7 @@
The [param n] is the number, or amount, of the message's subject. It is used by the translation system to fetch the correct plural form for the current language.
For detailed examples, see [url=$DOCS_URL/tutorials/i18n/localization_using_gettext.html]Localization using gettext[/url].
[b]Note:[/b] Negative and [float] numbers may not properly apply to some countable subjects. It's recommended to handle these cases with [method tr].
+ [b]Note:[/b] This method can't be used without an [Object] instance, as it requires the [method can_translate_messages] method. To translate strings in a static context, use [method TranslationServer.translate_plural].
</description>
</method>
</methods>
diff --git a/doc/classes/OccluderPolygon2D.xml b/doc/classes/OccluderPolygon2D.xml
index a78375ad01..36e1540b39 100644
--- a/doc/classes/OccluderPolygon2D.xml
+++ b/doc/classes/OccluderPolygon2D.xml
@@ -17,7 +17,6 @@
</member>
<member name="polygon" type="PackedVector2Array" setter="set_polygon" getter="get_polygon" default="PackedVector2Array()">
A [Vector2] array with the index for polygon's vertices positions.
- [b]Note:[/b] The returned value is a copy of the underlying array, rather than a reference.
</member>
</members>
<constants>
diff --git a/doc/classes/PackedByteArray.xml b/doc/classes/PackedByteArray.xml
index 0c1532f61a..e179c111a2 100644
--- a/doc/classes/PackedByteArray.xml
+++ b/doc/classes/PackedByteArray.xml
@@ -6,6 +6,7 @@
<description>
An array specifically designed to hold bytes. Packs data tightly, so it saves memory for large array sizes.
[PackedByteArray] also provides methods to encode/decode various types to/from bytes. The way values are encoded is an implementation detail and shouldn't be relied upon when interacting with external apps.
+ [b]Note:[/b] Packed 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]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedColorArray.xml b/doc/classes/PackedColorArray.xml
index ad96ba2490..57295cb1e3 100644
--- a/doc/classes/PackedColorArray.xml
+++ b/doc/classes/PackedColorArray.xml
@@ -5,6 +5,8 @@
</brief_description>
<description>
An array specifically designed to hold [Color]. Packs data tightly, so it saves memory for large array sizes.
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedColorArray] versus [code]Array[Color][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
+ [b]Note:[/b] Packed 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]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedFloat32Array.xml b/doc/classes/PackedFloat32Array.xml
index 6f1ecacca4..2db1386fd0 100644
--- a/doc/classes/PackedFloat32Array.xml
+++ b/doc/classes/PackedFloat32Array.xml
@@ -6,6 +6,7 @@
<description>
An array specifically designed to hold 32-bit floating-point values (float). Packs data tightly, so it saves memory for large array sizes.
If you need to pack 64-bit floats tightly, see [PackedFloat64Array].
+ [b]Note:[/b] Packed 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]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedFloat64Array.xml b/doc/classes/PackedFloat64Array.xml
index aef5ab90ac..0bcee918ed 100644
--- a/doc/classes/PackedFloat64Array.xml
+++ b/doc/classes/PackedFloat64Array.xml
@@ -6,6 +6,8 @@
<description>
An array specifically designed to hold 64-bit floating-point values (double). Packs data tightly, so it saves memory for large array sizes.
If you only need to pack 32-bit floats tightly, see [PackedFloat32Array] for a more memory-friendly alternative.
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedFloat64Array] versus [code]Array[float][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
+ [b]Note:[/b] Packed 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]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedInt32Array.xml b/doc/classes/PackedInt32Array.xml
index e6396e2a93..93b2ae7394 100644
--- a/doc/classes/PackedInt32Array.xml
+++ b/doc/classes/PackedInt32Array.xml
@@ -6,6 +6,7 @@
<description>
An array specifically designed to hold 32-bit integer values. Packs data tightly, so it saves memory for large array sizes.
[b]Note:[/b] This type stores signed 32-bit integers, which means it can take values in the interval [code][-2^31, 2^31 - 1][/code], i.e. [code][-2147483648, 2147483647][/code]. Exceeding those bounds will wrap around. In comparison, [int] uses signed 64-bit integers which can hold much larger values. If you need to pack 64-bit integers tightly, see [PackedInt64Array].
+ [b]Note:[/b] Packed 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]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedInt64Array.xml b/doc/classes/PackedInt64Array.xml
index 55024341c1..3d34165915 100644
--- a/doc/classes/PackedInt64Array.xml
+++ b/doc/classes/PackedInt64Array.xml
@@ -6,6 +6,8 @@
<description>
An array specifically designed to hold 64-bit integer values. Packs data tightly, so it saves memory for large array sizes.
[b]Note:[/b] This type stores signed 64-bit integers, which means it can take values in the interval [code][-2^63, 2^63 - 1][/code], i.e. [code][-9223372036854775808, 9223372036854775807][/code]. Exceeding those bounds will wrap around. If you only need to pack 32-bit integers tightly, see [PackedInt32Array] for a more memory-friendly alternative.
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedInt32Array] versus [code]Array[int][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
+ [b]Note:[/b] Packed 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]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedScene.xml b/doc/classes/PackedScene.xml
index 9324f99535..26d8fa8d5f 100644
--- a/doc/classes/PackedScene.xml
+++ b/doc/classes/PackedScene.xml
@@ -73,7 +73,7 @@
[/codeblocks]
</description>
<tutorials>
- <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
+ <link title="2D Role Playing Game (RPG) Demo">https://godotengine.org/asset-library/asset/2729</link>
</tutorials>
<methods>
<method name="can_instantiate" qualifiers="const">
@@ -99,14 +99,14 @@
<return type="int" enum="Error" />
<param index="0" name="path" type="Node" />
<description>
- Pack will ignore any sub-nodes not owned by given node. See [member Node.owner].
+ Packs the [param path] node, and all owned sub-nodes, into this [PackedScene]. Any existing data will be cleared. See [member Node.owner].
</description>
</method>
</methods>
<members>
<member name="_bundled" type="Dictionary" setter="_set_bundled_scene" getter="_get_bundled_scene" default="{ &quot;conn_count&quot;: 0, &quot;conns&quot;: PackedInt32Array(), &quot;editable_instances&quot;: [], &quot;names&quot;: PackedStringArray(), &quot;node_count&quot;: 0, &quot;node_paths&quot;: [], &quot;nodes&quot;: PackedInt32Array(), &quot;variants&quot;: [], &quot;version&quot;: 3 }">
A dictionary representation of the scene contents.
- Available keys include "rnames" and "variants" for resources, "node_count", "nodes", "node_paths" for nodes, "editable_instances" for paths to overridden nodes, "conn_count" and "conns" for signal connections, and "version" for the format style of the PackedScene.
+ Available keys include "names" and "variants" for resources, "node_count", "nodes", "node_paths" for nodes, "editable_instances" for paths to overridden nodes, "conn_count" and "conns" for signal connections, and "version" for the format style of the PackedScene.
</member>
</members>
<constants>
diff --git a/doc/classes/PackedStringArray.xml b/doc/classes/PackedStringArray.xml
index f1b02272f3..621831c7a3 100644
--- a/doc/classes/PackedStringArray.xml
+++ b/doc/classes/PackedStringArray.xml
@@ -11,9 +11,11 @@
var string = " ".join(string_array)
print(string) # "hello world"
[/codeblock]
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedStringArray] versus [code]Array[String][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
+ [b]Note:[/b] Packed 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]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<constructors>
<constructor name="PackedStringArray">
diff --git a/doc/classes/PackedVector2Array.xml b/doc/classes/PackedVector2Array.xml
index c73fea9114..14a3816353 100644
--- a/doc/classes/PackedVector2Array.xml
+++ b/doc/classes/PackedVector2Array.xml
@@ -5,9 +5,11 @@
</brief_description>
<description>
An array specifically designed to hold [Vector2]. Packs data tightly, so it saves memory for large array sizes.
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedVector3Array] versus [code]Array[Vector2][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
+ [b]Note:[/b] Packed 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]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
- <link title="2D Navigation Astar Demo">https://godotengine.org/asset-library/asset/519</link>
+ <link title="Grid-based Navigation with AStarGrid2D Demo">https://godotengine.org/asset-library/asset/2723</link>
</tutorials>
<constructors>
<constructor name="PackedVector2Array">
diff --git a/doc/classes/PackedVector3Array.xml b/doc/classes/PackedVector3Array.xml
index 89f258eaea..49220c6fd6 100644
--- a/doc/classes/PackedVector3Array.xml
+++ b/doc/classes/PackedVector3Array.xml
@@ -5,6 +5,8 @@
</brief_description>
<description>
An array specifically designed to hold [Vector3]. Packs data tightly, so it saves memory for large array sizes.
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedVector3Array] versus [code]Array[Vector3][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
+ [b]Note:[/b] Packed 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]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedVector4Array.xml b/doc/classes/PackedVector4Array.xml
new file mode 100644
index 0000000000..fd0cfeb74b
--- /dev/null
+++ b/doc/classes/PackedVector4Array.xml
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="PackedVector4Array" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ A packed array of [Vector4]s.
+ </brief_description>
+ <description>
+ An array specifically designed to hold [Vector4]. Packs data tightly, so it saves memory for large array sizes.
+ [b]Note:[/b] Packed 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]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
+ </description>
+ <tutorials>
+ </tutorials>
+ <constructors>
+ <constructor name="PackedVector4Array">
+ <return type="PackedVector4Array" />
+ <description>
+ Constructs an empty [PackedVector4Array].
+ </description>
+ </constructor>
+ <constructor name="PackedVector4Array">
+ <return type="PackedVector4Array" />
+ <param index="0" name="from" type="PackedVector4Array" />
+ <description>
+ Constructs a [PackedVector4Array] as a copy of the given [PackedVector4Array].
+ </description>
+ </constructor>
+ <constructor name="PackedVector4Array">
+ <return type="PackedVector4Array" />
+ <param index="0" name="from" type="Array" />
+ <description>
+ Constructs a new [PackedVector4Array]. Optionally, you can pass in a generic [Array] that will be converted.
+ [b]Note:[/b] When initializing a [PackedVector4Array] with elements, it must be initialized with an [Array] of [Vector4] values:
+ [codeblock]
+ var array = PackedVector4Array([Vector4(12, 34, 56, 78), Vector4(90, 12, 34, 56)])
+ [/codeblock]
+ </description>
+ </constructor>
+ </constructors>
+ <methods>
+ <method name="append">
+ <return type="bool" />
+ <param index="0" name="value" type="Vector4" />
+ <description>
+ Appends an element at the end of the array (alias of [method push_back]).
+ </description>
+ </method>
+ <method name="append_array">
+ <return type="void" />
+ <param index="0" name="array" type="PackedVector4Array" />
+ <description>
+ Appends a [PackedVector4Array] at the end of this array.
+ </description>
+ </method>
+ <method name="bsearch">
+ <return type="int" />
+ <param index="0" name="value" type="Vector4" />
+ <param index="1" name="before" type="bool" default="true" />
+ <description>
+ Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [param before] specifier can be passed. If [code]false[/code], the returned index comes after all existing entries of the value in the array.
+ [b]Note:[/b] Calling [method bsearch] on an unsorted array results in unexpected behavior.
+ [b]Note:[/b] Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.
+ </description>
+ </method>
+ <method name="clear">
+ <return type="void" />
+ <description>
+ Clears the array. This is equivalent to using [method resize] with a size of [code]0[/code].
+ </description>
+ </method>
+ <method name="count" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="value" type="Vector4" />
+ <description>
+ Returns the number of times an element is in the array.
+ [b]Note:[/b] Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.
+ </description>
+ </method>
+ <method name="duplicate">
+ <return type="PackedVector4Array" />
+ <description>
+ Creates a copy of the array, and returns it.
+ </description>
+ </method>
+ <method name="fill">
+ <return type="void" />
+ <param index="0" name="value" type="Vector4" />
+ <description>
+ 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.
+ </description>
+ </method>
+ <method name="find" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="value" type="Vector4" />
+ <param index="1" name="from" type="int" default="0" />
+ <description>
+ 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.
+ [b]Note:[/b] Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.
+ </description>
+ </method>
+ <method name="has" qualifiers="const">
+ <return type="bool" />
+ <param index="0" name="value" type="Vector4" />
+ <description>
+ Returns [code]true[/code] if the array contains [param value].
+ [b]Note:[/b] Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.
+ </description>
+ </method>
+ <method name="insert">
+ <return type="int" />
+ <param index="0" name="at_index" type="int" />
+ <param index="1" name="value" type="Vector4" />
+ <description>
+ Inserts a new element at a given position in the array. The position must be valid, or at the end of the array ([code]idx == size()[/code]).
+ </description>
+ </method>
+ <method name="is_empty" qualifiers="const">
+ <return type="bool" />
+ <description>
+ Returns [code]true[/code] if the array is empty.
+ </description>
+ </method>
+ <method name="push_back">
+ <return type="bool" />
+ <param index="0" name="value" type="Vector4" />
+ <description>
+ Inserts a [Vector4] at the end.
+ </description>
+ </method>
+ <method name="remove_at">
+ <return type="void" />
+ <param index="0" name="index" type="int" />
+ <description>
+ Removes an element from the array by index.
+ </description>
+ </method>
+ <method name="resize">
+ <return type="int" />
+ <param index="0" name="new_size" type="int" />
+ <description>
+ Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size.
+ </description>
+ </method>
+ <method name="reverse">
+ <return type="void" />
+ <description>
+ Reverses the order of the elements in the array.
+ </description>
+ </method>
+ <method name="rfind" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="value" type="Vector4" />
+ <param index="1" name="from" type="int" default="-1" />
+ <description>
+ 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.
+ [b]Note:[/b] Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.
+ </description>
+ </method>
+ <method name="set">
+ <return type="void" />
+ <param index="0" name="index" type="int" />
+ <param index="1" name="value" type="Vector4" />
+ <description>
+ Changes the [Vector4] at the given index.
+ </description>
+ </method>
+ <method name="size" qualifiers="const">
+ <return type="int" />
+ <description>
+ Returns the number of elements in the array.
+ </description>
+ </method>
+ <method name="slice" qualifiers="const">
+ <return type="PackedVector4Array" />
+ <param index="0" name="begin" type="int" />
+ <param index="1" name="end" type="int" default="2147483647" />
+ <description>
+ Returns the slice of the [PackedVector4Array], from [param begin] (inclusive) to [param end] (exclusive), as a new [PackedVector4Array].
+ The absolute value of [param begin] and [param end] will be clamped to the array size, so the default value for [param end] makes it slice to the size of the array by default (i.e. [code]arr.slice(1)[/code] is a shorthand for [code]arr.slice(1, arr.size())[/code]).
+ If either [param begin] or [param end] are negative, they will be relative to the end of the array (i.e. [code]arr.slice(0, -2)[/code] is a shorthand for [code]arr.slice(0, arr.size() - 2)[/code]).
+ </description>
+ </method>
+ <method name="sort">
+ <return type="void" />
+ <description>
+ Sorts the elements of the array in ascending order.
+ [b]Note:[/b] Vectors with [constant @GDScript.NAN] elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included.
+ </description>
+ </method>
+ <method name="to_byte_array" qualifiers="const">
+ <return type="PackedByteArray" />
+ <description>
+ Returns a [PackedByteArray] with each vector encoded as bytes.
+ </description>
+ </method>
+ </methods>
+ <operators>
+ <operator name="operator !=">
+ <return type="bool" />
+ <param index="0" name="right" type="PackedVector4Array" />
+ <description>
+ Returns [code]true[/code] if contents of the arrays differ.
+ </description>
+ </operator>
+ <operator name="operator +">
+ <return type="PackedVector4Array" />
+ <param index="0" name="right" type="PackedVector4Array" />
+ <description>
+ Returns a new [PackedVector4Array] with contents of [param right] added at the end of this array. For better performance, consider using [method append_array] instead.
+ </description>
+ </operator>
+ <operator name="operator ==">
+ <return type="bool" />
+ <param index="0" name="right" type="PackedVector4Array" />
+ <description>
+ Returns [code]true[/code] if contents of both arrays are the same, i.e. they have all equal [Vector4]s at the corresponding indices.
+ </description>
+ </operator>
+ <operator name="operator []">
+ <return type="Vector4" />
+ <param index="0" name="index" type="int" />
+ <description>
+ Returns the [Vector4] at index [param index]. Negative indices can be used to access the elements starting from the end. Using index out of array's bounds will result in an error.
+ </description>
+ </operator>
+ </operators>
+</class>
diff --git a/doc/classes/Panel.xml b/doc/classes/Panel.xml
index db1fa1ccda..993c383c70 100644
--- a/doc/classes/Panel.xml
+++ b/doc/classes/Panel.xml
@@ -7,9 +7,8 @@
[Panel] is a GUI control that displays a [StyleBox]. See also [PanelContainer].
</description>
<tutorials>
- <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
- <link title="2D Finite State Machine Demo">https://godotengine.org/asset-library/asset/516</link>
- <link title="3D Inverse Kinematics Demo">https://godotengine.org/asset-library/asset/523</link>
+ <link title="2D Role Playing Game (RPG) Demo">https://godotengine.org/asset-library/asset/2729</link>
+ <link title="Hierarchical Finite State Machine Demo">https://godotengine.org/asset-library/asset/2714</link>
</tutorials>
<theme_items>
<theme_item name="panel" data_type="style" type="StyleBox">
diff --git a/doc/classes/PanelContainer.xml b/doc/classes/PanelContainer.xml
index c6b3604cc4..c2972abc14 100644
--- a/doc/classes/PanelContainer.xml
+++ b/doc/classes/PanelContainer.xml
@@ -8,7 +8,7 @@
</description>
<tutorials>
<link title="Using Containers">$DOCS_URL/tutorials/ui/gui_containers.html</link>
- <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
+ <link title="2D Role Playing Game (RPG) Demo">https://godotengine.org/asset-library/asset/2729</link>
</tutorials>
<members>
<member name="mouse_filter" type="int" setter="set_mouse_filter" getter="get_mouse_filter" overrides="Control" enum="Control.MouseFilter" default="0" />
diff --git a/doc/classes/ParticleProcessMaterial.xml b/doc/classes/ParticleProcessMaterial.xml
index 8d0ae317b9..1502690b45 100644
--- a/doc/classes/ParticleProcessMaterial.xml
+++ b/doc/classes/ParticleProcessMaterial.xml
@@ -185,6 +185,7 @@
</member>
<member name="emission_box_extents" type="Vector3" setter="set_emission_box_extents" getter="get_emission_box_extents">
The box's extents if [member emission_shape] is set to [constant EMISSION_SHAPE_BOX].
+ [b]Note:[/b] [member emission_box_extents] starts from the center point and applies the X, Y, and Z values in both directions. The size is twice the area of the extents.
</member>
<member name="emission_color_texture" type="Texture2D" setter="set_emission_color_texture" getter="get_emission_color_texture">
Particle color will be modulated by color determined by sampling this texture at the same point as the [member emission_point_texture].
diff --git a/doc/classes/PhysicalBone3D.xml b/doc/classes/PhysicalBone3D.xml
index c3b202e0a5..bce1a80526 100644
--- a/doc/classes/PhysicalBone3D.xml
+++ b/doc/classes/PhysicalBone3D.xml
@@ -13,7 +13,7 @@
<return type="void" />
<param index="0" name="state" type="PhysicsDirectBodyState3D" />
<description>
- Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it works in addition to the usual physics behavior, but the [member custom_integrator] property allows you to disable the default behavior and do fully custom force integration for a body.
+ Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it is called before the standard force integration, but the [member custom_integrator] property allows you to disable the standard force integration and do fully custom force integration for a body.
</description>
</method>
<method name="apply_central_impulse">
@@ -67,7 +67,8 @@
If [code]true[/code], the body is deactivated when there is no movement, so it will not take part in the simulation until it is awakened by an external force.
</member>
<member name="custom_integrator" type="bool" setter="set_use_custom_integrator" getter="is_using_custom_integrator" default="false">
- If [code]true[/code], internal force integration will be disabled (like gravity or air friction) for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] function, if defined.
+ If [code]true[/code], the standard force integration (like gravity or damping) will be disabled for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] method, if that virtual method is overridden.
+ Setting this property will call the method [method PhysicsServer3D.body_set_omit_force_integration] internally.
</member>
<member name="friction" type="float" setter="set_friction" getter="get_friction" default="1.0">
The body's friction, from [code]0[/code] (frictionless) to [code]1[/code] (max friction).
diff --git a/doc/classes/PhysicsDirectBodyState2D.xml b/doc/classes/PhysicsDirectBodyState2D.xml
index 7051663a78..d60cc1ee6b 100644
--- a/doc/classes/PhysicsDirectBodyState2D.xml
+++ b/doc/classes/PhysicsDirectBodyState2D.xml
@@ -202,7 +202,7 @@
<method name="integrate_forces">
<return type="void" />
<description>
- Calls the built-in force integration code.
+ Updates the body's linear and angular velocity by applying gravity and damping for the equivalent of one physics tick.
</description>
</method>
<method name="set_constant_force">
diff --git a/doc/classes/PhysicsDirectBodyState2DExtension.xml b/doc/classes/PhysicsDirectBodyState2DExtension.xml
index 04612b461e..932c1c8352 100644
--- a/doc/classes/PhysicsDirectBodyState2DExtension.xml
+++ b/doc/classes/PhysicsDirectBodyState2DExtension.xml
@@ -14,6 +14,7 @@
<return type="void" />
<param index="0" name="force" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.add_constant_central_force].
</description>
</method>
<method name="_add_constant_force" qualifiers="virtual">
@@ -21,24 +22,28 @@
<param index="0" name="force" type="Vector2" />
<param index="1" name="position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.add_constant_force].
</description>
</method>
<method name="_add_constant_torque" qualifiers="virtual">
<return type="void" />
<param index="0" name="torque" type="float" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.add_constant_torque].
</description>
</method>
<method name="_apply_central_force" qualifiers="virtual">
<return type="void" />
<param index="0" name="force" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.apply_central_force].
</description>
</method>
<method name="_apply_central_impulse" qualifiers="virtual">
<return type="void" />
<param index="0" name="impulse" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.apply_central_impulse].
</description>
</method>
<method name="_apply_force" qualifiers="virtual">
@@ -46,6 +51,7 @@
<param index="0" name="force" type="Vector2" />
<param index="1" name="position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.apply_force].
</description>
</method>
<method name="_apply_impulse" qualifiers="virtual">
@@ -53,211 +59,249 @@
<param index="0" name="impulse" type="Vector2" />
<param index="1" name="position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.apply_impulse].
</description>
</method>
<method name="_apply_torque" qualifiers="virtual">
<return type="void" />
<param index="0" name="torque" type="float" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.apply_torque].
</description>
</method>
<method name="_apply_torque_impulse" qualifiers="virtual">
<return type="void" />
<param index="0" name="impulse" type="float" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.apply_torque_impulse].
</description>
</method>
<method name="_get_angular_velocity" qualifiers="virtual const">
<return type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.angular_velocity] and its respective getter.
</description>
</method>
<method name="_get_center_of_mass" qualifiers="virtual const">
<return type="Vector2" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.center_of_mass] and its respective getter.
</description>
</method>
<method name="_get_center_of_mass_local" qualifiers="virtual const">
<return type="Vector2" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.center_of_mass_local] and its respective getter.
</description>
</method>
<method name="_get_constant_force" qualifiers="virtual const">
<return type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_constant_force].
</description>
</method>
<method name="_get_constant_torque" qualifiers="virtual const">
<return type="float" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_constant_torque].
</description>
</method>
<method name="_get_contact_collider" qualifiers="virtual const">
<return type="RID" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider].
</description>
</method>
<method name="_get_contact_collider_id" qualifiers="virtual const">
<return type="int" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_id].
</description>
</method>
<method name="_get_contact_collider_object" qualifiers="virtual const">
<return type="Object" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_object].
</description>
</method>
<method name="_get_contact_collider_position" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_position].
</description>
</method>
<method name="_get_contact_collider_shape" qualifiers="virtual const">
<return type="int" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_shape].
</description>
</method>
<method name="_get_contact_collider_velocity_at_position" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_velocity_at_position].
</description>
</method>
<method name="_get_contact_count" qualifiers="virtual const">
<return type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_count].
</description>
</method>
<method name="_get_contact_impulse" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_impulse].
</description>
</method>
<method name="_get_contact_local_normal" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_normal].
</description>
</method>
<method name="_get_contact_local_position" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_position].
</description>
</method>
<method name="_get_contact_local_shape" qualifiers="virtual const">
<return type="int" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_shape].
</description>
</method>
<method name="_get_contact_local_velocity_at_position" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_velocity_at_position].
</description>
</method>
<method name="_get_inverse_inertia" qualifiers="virtual const">
<return type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.inverse_inertia] and its respective getter.
</description>
</method>
<method name="_get_inverse_mass" qualifiers="virtual const">
<return type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.inverse_mass] and its respective getter.
</description>
</method>
<method name="_get_linear_velocity" qualifiers="virtual const">
<return type="Vector2" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.linear_velocity] and its respective getter.
</description>
</method>
<method name="_get_space_state" qualifiers="virtual">
<return type="PhysicsDirectSpaceState2D" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_space_state].
</description>
</method>
<method name="_get_step" qualifiers="virtual const">
<return type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.step] and its respective getter.
</description>
</method>
<method name="_get_total_angular_damp" qualifiers="virtual const">
<return type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.total_angular_damp] and its respective getter.
</description>
</method>
<method name="_get_total_gravity" qualifiers="virtual const">
<return type="Vector2" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.total_gravity] and its respective getter.
</description>
</method>
<method name="_get_total_linear_damp" qualifiers="virtual const">
<return type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.total_linear_damp] and its respective getter.
</description>
</method>
<method name="_get_transform" qualifiers="virtual const">
<return type="Transform2D" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.transform] and its respective getter.
</description>
</method>
<method name="_get_velocity_at_local_position" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="local_position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_velocity_at_local_position].
</description>
</method>
<method name="_integrate_forces" qualifiers="virtual">
<return type="void" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.integrate_forces].
</description>
</method>
<method name="_is_sleeping" qualifiers="virtual const">
<return type="bool" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.sleeping] and its respective getter.
</description>
</method>
<method name="_set_angular_velocity" qualifiers="virtual">
<return type="void" />
<param index="0" name="velocity" type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.angular_velocity] and its respective setter.
</description>
</method>
<method name="_set_constant_force" qualifiers="virtual">
<return type="void" />
<param index="0" name="force" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.set_constant_force].
</description>
</method>
<method name="_set_constant_torque" qualifiers="virtual">
<return type="void" />
<param index="0" name="torque" type="float" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.set_constant_torque].
</description>
</method>
<method name="_set_linear_velocity" qualifiers="virtual">
<return type="void" />
<param index="0" name="velocity" type="Vector2" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.linear_velocity] and its respective setter.
</description>
</method>
<method name="_set_sleep_state" qualifiers="virtual">
<return type="void" />
<param index="0" name="enabled" type="bool" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.sleeping] and its respective setter.
</description>
</method>
<method name="_set_transform" qualifiers="virtual">
<return type="void" />
<param index="0" name="transform" type="Transform2D" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.transform] and its respective setter.
</description>
</method>
</methods>
diff --git a/doc/classes/PhysicsDirectBodyState3D.xml b/doc/classes/PhysicsDirectBodyState3D.xml
index 42c65763aa..e8c3f3f89d 100644
--- a/doc/classes/PhysicsDirectBodyState3D.xml
+++ b/doc/classes/PhysicsDirectBodyState3D.xml
@@ -202,7 +202,7 @@
<method name="integrate_forces">
<return type="void" />
<description>
- Calls the built-in force integration code.
+ Updates the body's linear and angular velocity by applying gravity and damping for the equivalent of one physics tick.
</description>
</method>
<method name="set_constant_force">
diff --git a/doc/classes/PhysicsMaterial.xml b/doc/classes/PhysicsMaterial.xml
index 1601a1040e..03cbfb4ce7 100644
--- a/doc/classes/PhysicsMaterial.xml
+++ b/doc/classes/PhysicsMaterial.xml
@@ -14,7 +14,7 @@
</member>
<member name="bounce" type="float" setter="set_bounce" getter="get_bounce" default="0.0">
The body's bounciness. Values range from [code]0[/code] (no bounce) to [code]1[/code] (full bounciness).
- [b]Note:[/b] Even with [member bounce] set to [code]1.0[/code], some energy will be lost over time due to linear and angular damping. To have a [PhysicsBody3D] that preserves all its energy over time, set [member bounce] to [code]1.0[/code], the body's linear damp mode to [b]Replace[/b] (if applicable), its linear damp to [code]0.0[/code], its angular damp mode to [b]Replace[/b] (if applicable), and its angular damp to [code]0.0[/code].
+ [b]Note:[/b] Even with [member bounce] set to [code]1.0[/code], some energy will be lost over time due to linear and angular damping. To have a physics body that preserves all its energy over time, set [member bounce] to [code]1.0[/code], the body's linear damp mode to [b]Replace[/b] (if applicable), its linear damp to [code]0.0[/code], its angular damp mode to [b]Replace[/b] (if applicable), and its angular damp to [code]0.0[/code].
</member>
<member name="friction" type="float" setter="set_friction" getter="get_friction" default="1.0">
The body's friction. Values range from [code]0[/code] (frictionless) to [code]1[/code] (maximum friction).
diff --git a/doc/classes/PhysicsServer2D.xml b/doc/classes/PhysicsServer2D.xml
index 8be92edbad..c0672cc503 100644
--- a/doc/classes/PhysicsServer2D.xml
+++ b/doc/classes/PhysicsServer2D.xml
@@ -52,7 +52,8 @@
<method name="area_create">
<return type="RID" />
<description>
- Creates a 2D area object in the physics server, and returns the [RID] that identifies it. Use [method area_add_shape] to add shapes to it, use [method area_set_transform] to set its transform, and use [method area_set_space] to add the area to a space.
+ Creates a 2D area object in the physics server, and returns the [RID] that identifies it. The default settings for the created area include a collision layer and mask set to [code]1[/code], and [code]monitorable[/code] set to [code]false[/code].
+ Use [method area_add_shape] to add shapes to it, use [method area_set_transform] to set its transform, and use [method area_set_space] to add the area to a space. If you want the area to be detectable use [method area_set_monitorable].
</description>
</method>
<method name="area_get_canvas_instance_id" qualifiers="const">
@@ -369,7 +370,8 @@
<method name="body_create">
<return type="RID" />
<description>
- Creates a 2D body object in the physics server, and returns the [RID] that identifies it. Use [method body_add_shape] to add shapes to it, use [method body_set_state] to set its transform, and use [method body_set_space] to add the body to a space.
+ Creates a 2D body object in the physics server, and returns the [RID] that identifies it. The default settings for the created area include a collision layer and mask set to [code]1[/code], and body mode set to [constant BODY_MODE_RIGID].
+ Use [method body_add_shape] to add shapes to it, use [method body_set_state] to set its transform, and use [method body_set_space] to add the body to a space.
</description>
</method>
<method name="body_get_canvas_instance_id" qualifiers="const">
@@ -501,7 +503,7 @@
<return type="bool" />
<param index="0" name="body" type="RID" />
<description>
- Returns [code]true[/code] if the body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
+ Returns [code]true[/code] if the body is omitting the standard force integration. See [method body_set_omit_force_integration].
</description>
</method>
<method name="body_remove_collision_exception">
@@ -592,11 +594,12 @@
<param index="1" name="callable" type="Callable" />
<param index="2" name="userdata" type="Variant" default="null" />
<description>
- Sets the function used to calculate physics for the body, if that body allows it (see [method body_set_omit_force_integration]).
- The force integration function takes the following two parameters:
- 1. a [PhysicsDirectBodyState2D] [code]state[/code]: used to retrieve and modify the body's state,
- 2. a [Variant] [param userdata]: optional user data.
- [b]Note:[/b] This callback is currently not called in Godot Physics.
+ Sets the body's custom force integration callback function to [param callable]. Use an empty [Callable] ([code skip-lint]Callable()[/code]) to clear the custom callback.
+ The function [param callable] will be called every physics tick, before the standard force integration (see [method body_set_omit_force_integration]). It can be used for example to update the body's linear and angular velocity based on contact with other bodies.
+ If [param userdata] is not [code]null[/code], the function [param callable] must take the following two parameters:
+ 1. [code]state[/code]: a [PhysicsDirectBodyState2D] used to retrieve and modify the body's state,
+ 2. [code skip-lint]userdata[/code]: a [Variant]; its value will be the [param userdata] passed into this method.
+ If [param userdata] is [code]null[/code], then [param callable] must take only the [code]state[/code] parameter.
</description>
</method>
<method name="body_set_max_contacts_reported">
@@ -620,7 +623,8 @@
<param index="0" name="body" type="RID" />
<param index="1" name="enable" type="bool" />
<description>
- Sets whether the body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
+ Sets whether the body omits the standard force integration. If [param enable] is [code]true[/code], the body will not automatically use applied forces, torques, and damping to update the body's linear and angular velocity. In this case, [method body_set_force_integration_callback] can be used to manually update the linear and angular velocity instead.
+ This method is called when the property [member RigidBody2D.custom_integrator] is set.
</description>
</method>
<method name="body_set_param">
diff --git a/doc/classes/PhysicsServer2DExtension.xml b/doc/classes/PhysicsServer2DExtension.xml
index 8d9a171337..41826ea7c2 100644
--- a/doc/classes/PhysicsServer2DExtension.xml
+++ b/doc/classes/PhysicsServer2DExtension.xml
@@ -17,6 +17,7 @@
<param index="2" name="transform" type="Transform2D" />
<param index="3" name="disabled" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.area_add_shape].
</description>
</method>
<method name="_area_attach_canvas_instance_id" qualifiers="virtual">
@@ -24,6 +25,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="id" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_attach_canvas_instance_id].
</description>
</method>
<method name="_area_attach_object_instance_id" qualifiers="virtual">
@@ -31,41 +33,48 @@
<param index="0" name="area" type="RID" />
<param index="1" name="id" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_attach_object_instance_id].
</description>
</method>
<method name="_area_clear_shapes" qualifiers="virtual">
<return type="void" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_clear_shapes].
</description>
</method>
<method name="_area_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_create].
</description>
</method>
<method name="_area_get_canvas_instance_id" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_canvas_instance_id].
</description>
</method>
<method name="_area_get_collision_layer" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_collision_layer].
</description>
</method>
<method name="_area_get_collision_mask" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_collision_mask].
</description>
</method>
<method name="_area_get_object_instance_id" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_object_instance_id].
</description>
</method>
<method name="_area_get_param" qualifiers="virtual const">
@@ -73,6 +82,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="param" type="int" enum="PhysicsServer2D.AreaParameter" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_param].
</description>
</method>
<method name="_area_get_shape" qualifiers="virtual const">
@@ -80,12 +90,14 @@
<param index="0" name="area" type="RID" />
<param index="1" name="shape_idx" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_shape].
</description>
</method>
<method name="_area_get_shape_count" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_shape_count].
</description>
</method>
<method name="_area_get_shape_transform" qualifiers="virtual const">
@@ -93,18 +105,21 @@
<param index="0" name="area" type="RID" />
<param index="1" name="shape_idx" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_shape_transform].
</description>
</method>
<method name="_area_get_space" qualifiers="virtual const">
<return type="RID" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_space].
</description>
</method>
<method name="_area_get_transform" qualifiers="virtual const">
<return type="Transform2D" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_transform].
</description>
</method>
<method name="_area_remove_shape" qualifiers="virtual">
@@ -112,6 +127,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="shape_idx" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_remove_shape].
</description>
</method>
<method name="_area_set_area_monitor_callback" qualifiers="virtual">
@@ -119,6 +135,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="callback" type="Callable" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_area_monitor_callback].
</description>
</method>
<method name="_area_set_collision_layer" qualifiers="virtual">
@@ -126,6 +143,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="layer" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_collision_layer].
</description>
</method>
<method name="_area_set_collision_mask" qualifiers="virtual">
@@ -133,6 +151,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="mask" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_collision_mask].
</description>
</method>
<method name="_area_set_monitor_callback" qualifiers="virtual">
@@ -140,6 +159,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="callback" type="Callable" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_monitor_callback].
</description>
</method>
<method name="_area_set_monitorable" qualifiers="virtual">
@@ -147,6 +167,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="monitorable" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_monitorable].
</description>
</method>
<method name="_area_set_param" qualifiers="virtual">
@@ -155,6 +176,7 @@
<param index="1" name="param" type="int" enum="PhysicsServer2D.AreaParameter" />
<param index="2" name="value" type="Variant" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_param].
</description>
</method>
<method name="_area_set_pickable" qualifiers="virtual">
@@ -162,6 +184,8 @@
<param index="0" name="area" type="RID" />
<param index="1" name="pickable" type="bool" />
<description>
+ If set to [code]true[/code], allows the area with the given [RID] to detect mouse inputs when the mouse cursor is hovering on it.
+ Overridable version of [PhysicsServer2D]'s internal [code]area_set_pickable[/code] method. Corresponds to [member CollisionObject2D.input_pickable].
</description>
</method>
<method name="_area_set_shape" qualifiers="virtual">
@@ -170,6 +194,7 @@
<param index="1" name="shape_idx" type="int" />
<param index="2" name="shape" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_shape].
</description>
</method>
<method name="_area_set_shape_disabled" qualifiers="virtual">
@@ -178,6 +203,7 @@
<param index="1" name="shape_idx" type="int" />
<param index="2" name="disabled" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_shape_disabled].
</description>
</method>
<method name="_area_set_shape_transform" qualifiers="virtual">
@@ -186,6 +212,7 @@
<param index="1" name="shape_idx" type="int" />
<param index="2" name="transform" type="Transform2D" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_shape_transform].
</description>
</method>
<method name="_area_set_space" qualifiers="virtual">
@@ -193,6 +220,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="space" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_space].
</description>
</method>
<method name="_area_set_transform" qualifiers="virtual">
@@ -200,6 +228,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="transform" type="Transform2D" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_transform].
</description>
</method>
<method name="_body_add_collision_exception" qualifiers="virtual">
@@ -207,6 +236,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="excepted_body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_add_collision_exception].
</description>
</method>
<method name="_body_add_constant_central_force" qualifiers="virtual">
@@ -214,6 +244,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="force" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_add_constant_central_force].
</description>
</method>
<method name="_body_add_constant_force" qualifiers="virtual">
@@ -222,6 +253,7 @@
<param index="1" name="force" type="Vector2" />
<param index="2" name="position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_add_constant_force].
</description>
</method>
<method name="_body_add_constant_torque" qualifiers="virtual">
@@ -229,6 +261,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="torque" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.body_add_constant_torque].
</description>
</method>
<method name="_body_add_shape" qualifiers="virtual">
@@ -238,6 +271,7 @@
<param index="2" name="transform" type="Transform2D" />
<param index="3" name="disabled" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.body_add_shape].
</description>
</method>
<method name="_body_apply_central_force" qualifiers="virtual">
@@ -245,6 +279,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="force" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_apply_central_force].
</description>
</method>
<method name="_body_apply_central_impulse" qualifiers="virtual">
@@ -252,6 +287,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="impulse" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_apply_central_impulse].
</description>
</method>
<method name="_body_apply_force" qualifiers="virtual">
@@ -260,6 +296,7 @@
<param index="1" name="force" type="Vector2" />
<param index="2" name="position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_apply_force].
</description>
</method>
<method name="_body_apply_impulse" qualifiers="virtual">
@@ -268,6 +305,7 @@
<param index="1" name="impulse" type="Vector2" />
<param index="2" name="position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_apply_impulse].
</description>
</method>
<method name="_body_apply_torque" qualifiers="virtual">
@@ -275,6 +313,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="torque" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.body_apply_torque].
</description>
</method>
<method name="_body_apply_torque_impulse" qualifiers="virtual">
@@ -282,6 +321,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="impulse" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.body_apply_torque_impulse].
</description>
</method>
<method name="_body_attach_canvas_instance_id" qualifiers="virtual">
@@ -289,6 +329,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="id" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_attach_canvas_instance_id].
</description>
</method>
<method name="_body_attach_object_instance_id" qualifiers="virtual">
@@ -296,12 +337,14 @@
<param index="0" name="body" type="RID" />
<param index="1" name="id" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_attach_object_instance_id].
</description>
</method>
<method name="_body_clear_shapes" qualifiers="virtual">
<return type="void" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_clear_shapes].
</description>
</method>
<method name="_body_collide_shape" qualifiers="virtual">
@@ -315,89 +358,107 @@
<param index="6" name="result_max" type="int" />
<param index="7" name="result_count" type="int32_t*" />
<description>
+ Given a [param body], a [param shape], and their respective parameters, this method should return [code]true[/code] if a collision between the two would occur, with additional details passed in [param results].
+ Overridable version of [PhysicsServer2D]'s internal [code]shape_collide[/code] method. Corresponds to [method PhysicsDirectSpaceState2D.collide_shape].
</description>
</method>
<method name="_body_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_create].
</description>
</method>
<method name="_body_get_canvas_instance_id" qualifiers="virtual const">
<return type="int" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_canvas_instance_id].
</description>
</method>
<method name="_body_get_collision_exceptions" qualifiers="virtual const">
<return type="RID[]" />
<param index="0" name="body" type="RID" />
<description>
+ Returns the [RID]s of all bodies added as collision exceptions for the given [param body]. See also [method _body_add_collision_exception] and [method _body_remove_collision_exception].
+ Overridable version of [PhysicsServer2D]'s internal [code]body_get_collision_exceptions[/code] method. Corresponds to [method PhysicsBody2D.get_collision_exceptions].
</description>
</method>
<method name="_body_get_collision_layer" qualifiers="virtual const">
<return type="int" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_collision_layer].
</description>
</method>
<method name="_body_get_collision_mask" qualifiers="virtual const">
<return type="int" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_collision_mask].
</description>
</method>
<method name="_body_get_collision_priority" qualifiers="virtual const">
<return type="float" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_collision_priority].
</description>
</method>
<method name="_body_get_constant_force" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_constant_force].
</description>
</method>
<method name="_body_get_constant_torque" qualifiers="virtual const">
<return type="float" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_constant_torque].
</description>
</method>
<method name="_body_get_contacts_reported_depth_threshold" qualifiers="virtual const">
<return type="float" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [PhysicsServer2D]'s internal [code]body_get_contacts_reported_depth_threshold[/code] method.
+ [b]Note:[/b] This method is currently unused by Godot's default physics implementation.
</description>
</method>
<method name="_body_get_continuous_collision_detection_mode" qualifiers="virtual const">
<return type="int" enum="PhysicsServer2D.CCDMode" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_continuous_collision_detection_mode].
</description>
</method>
<method name="_body_get_direct_state" qualifiers="virtual">
<return type="PhysicsDirectBodyState2D" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_direct_state].
</description>
</method>
<method name="_body_get_max_contacts_reported" qualifiers="virtual const">
<return type="int" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_max_contacts_reported].
</description>
</method>
<method name="_body_get_mode" qualifiers="virtual const">
<return type="int" enum="PhysicsServer2D.BodyMode" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_mode].
</description>
</method>
<method name="_body_get_object_instance_id" qualifiers="virtual const">
<return type="int" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_object_instance_id].
</description>
</method>
<method name="_body_get_param" qualifiers="virtual const">
@@ -405,6 +466,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="param" type="int" enum="PhysicsServer2D.BodyParameter" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_param].
</description>
</method>
<method name="_body_get_shape" qualifiers="virtual const">
@@ -412,12 +474,14 @@
<param index="0" name="body" type="RID" />
<param index="1" name="shape_idx" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_shape].
</description>
</method>
<method name="_body_get_shape_count" qualifiers="virtual const">
<return type="int" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_shape_count].
</description>
</method>
<method name="_body_get_shape_transform" qualifiers="virtual const">
@@ -425,12 +489,14 @@
<param index="0" name="body" type="RID" />
<param index="1" name="shape_idx" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_shape_transform].
</description>
</method>
<method name="_body_get_space" qualifiers="virtual const">
<return type="RID" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_space].
</description>
</method>
<method name="_body_get_state" qualifiers="virtual const">
@@ -438,12 +504,14 @@
<param index="0" name="body" type="RID" />
<param index="1" name="state" type="int" enum="PhysicsServer2D.BodyState" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_state].
</description>
</method>
<method name="_body_is_omitting_force_integration" qualifiers="virtual const">
<return type="bool" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_is_omitting_force_integration].
</description>
</method>
<method name="_body_remove_collision_exception" qualifiers="virtual">
@@ -451,6 +519,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="excepted_body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_remove_collision_exception].
</description>
</method>
<method name="_body_remove_shape" qualifiers="virtual">
@@ -458,12 +527,14 @@
<param index="0" name="body" type="RID" />
<param index="1" name="shape_idx" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_remove_shape].
</description>
</method>
<method name="_body_reset_mass_properties" qualifiers="virtual">
<return type="void" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_reset_mass_properties].
</description>
</method>
<method name="_body_set_axis_velocity" qualifiers="virtual">
@@ -471,6 +542,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="axis_velocity" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_axis_velocity].
</description>
</method>
<method name="_body_set_collision_layer" qualifiers="virtual">
@@ -478,6 +550,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="layer" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_collision_layer].
</description>
</method>
<method name="_body_set_collision_mask" qualifiers="virtual">
@@ -485,6 +558,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="mask" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_collision_mask].
</description>
</method>
<method name="_body_set_collision_priority" qualifiers="virtual">
@@ -492,6 +566,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="priority" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_collision_priority].
</description>
</method>
<method name="_body_set_constant_force" qualifiers="virtual">
@@ -499,6 +574,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="force" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_constant_force].
</description>
</method>
<method name="_body_set_constant_torque" qualifiers="virtual">
@@ -506,6 +582,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="torque" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_constant_torque].
</description>
</method>
<method name="_body_set_contacts_reported_depth_threshold" qualifiers="virtual">
@@ -513,6 +590,8 @@
<param index="0" name="body" type="RID" />
<param index="1" name="threshold" type="float" />
<description>
+ Overridable version of [PhysicsServer2D]'s internal [code]body_set_contacts_reported_depth_threshold[/code] method.
+ [b]Note:[/b] This method is currently unused by Godot's default physics implementation.
</description>
</method>
<method name="_body_set_continuous_collision_detection_mode" qualifiers="virtual">
@@ -520,6 +599,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="mode" type="int" enum="PhysicsServer2D.CCDMode" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_continuous_collision_detection_mode].
</description>
</method>
<method name="_body_set_force_integration_callback" qualifiers="virtual">
@@ -528,6 +608,7 @@
<param index="1" name="callable" type="Callable" />
<param index="2" name="userdata" type="Variant" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_force_integration_callback].
</description>
</method>
<method name="_body_set_max_contacts_reported" qualifiers="virtual">
@@ -535,6 +616,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="amount" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_max_contacts_reported].
</description>
</method>
<method name="_body_set_mode" qualifiers="virtual">
@@ -542,6 +624,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="mode" type="int" enum="PhysicsServer2D.BodyMode" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_mode].
</description>
</method>
<method name="_body_set_omit_force_integration" qualifiers="virtual">
@@ -549,6 +632,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="enable" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_omit_force_integration].
</description>
</method>
<method name="_body_set_param" qualifiers="virtual">
@@ -557,6 +641,7 @@
<param index="1" name="param" type="int" enum="PhysicsServer2D.BodyParameter" />
<param index="2" name="value" type="Variant" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_param].
</description>
</method>
<method name="_body_set_pickable" qualifiers="virtual">
@@ -564,6 +649,8 @@
<param index="0" name="body" type="RID" />
<param index="1" name="pickable" type="bool" />
<description>
+ If set to [code]true[/code], allows the body with the given [RID] to detect mouse inputs when the mouse cursor is hovering on it.
+ Overridable version of [PhysicsServer2D]'s internal [code]body_set_pickable[/code] method. Corresponds to [member CollisionObject2D.input_pickable].
</description>
</method>
<method name="_body_set_shape" qualifiers="virtual">
@@ -572,6 +659,7 @@
<param index="1" name="shape_idx" type="int" />
<param index="2" name="shape" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_shape].
</description>
</method>
<method name="_body_set_shape_as_one_way_collision" qualifiers="virtual">
@@ -581,6 +669,7 @@
<param index="2" name="enable" type="bool" />
<param index="3" name="margin" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_shape_as_one_way_collision].
</description>
</method>
<method name="_body_set_shape_disabled" qualifiers="virtual">
@@ -589,6 +678,7 @@
<param index="1" name="shape_idx" type="int" />
<param index="2" name="disabled" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_shape_disabled].
</description>
</method>
<method name="_body_set_shape_transform" qualifiers="virtual">
@@ -597,6 +687,7 @@
<param index="1" name="shape_idx" type="int" />
<param index="2" name="transform" type="Transform2D" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_shape_transform].
</description>
</method>
<method name="_body_set_space" qualifiers="virtual">
@@ -604,6 +695,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="space" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_space].
</description>
</method>
<method name="_body_set_state" qualifiers="virtual">
@@ -612,6 +704,7 @@
<param index="1" name="state" type="int" enum="PhysicsServer2D.BodyState" />
<param index="2" name="value" type="Variant" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_state].
</description>
</method>
<method name="_body_set_state_sync_callback" qualifiers="virtual">
@@ -619,6 +712,8 @@
<param index="0" name="body" type="RID" />
<param index="1" name="callable" type="Callable" />
<description>
+ Assigns the [param body] to call the given [param callable] during the synchronization phase of the loop, before [method _step] is called. See also [method _sync].
+ Overridable version of [PhysicsServer2D]'s internal [code]body_set_state_sync_callback[/code] method.
</description>
</method>
<method name="_body_test_motion" qualifiers="virtual const">
@@ -631,26 +726,31 @@
<param index="5" name="recovery_as_collision" type="bool" />
<param index="6" name="result" type="PhysicsServer2DExtensionMotionResult*" />
<description>
+ Overridable version of [method PhysicsServer2D.body_test_motion]. Unlike the exposed implementation, this method does not receive all of the arguments inside a [PhysicsTestMotionParameters2D].
</description>
</method>
<method name="_capsule_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.capsule_shape_create].
</description>
</method>
<method name="_circle_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.circle_shape_create].
</description>
</method>
<method name="_concave_polygon_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.concave_polygon_shape_create].
</description>
</method>
<method name="_convex_polygon_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.convex_polygon_shape_create].
</description>
</method>
<method name="_damped_spring_joint_get_param" qualifiers="virtual const">
@@ -658,6 +758,7 @@
<param index="0" name="joint" type="RID" />
<param index="1" name="param" type="int" enum="PhysicsServer2D.DampedSpringParam" />
<description>
+ Overridable version of [method PhysicsServer2D.damped_spring_joint_get_param].
</description>
</method>
<method name="_damped_spring_joint_set_param" qualifiers="virtual">
@@ -666,54 +767,69 @@
<param index="1" name="param" type="int" enum="PhysicsServer2D.DampedSpringParam" />
<param index="2" name="value" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.damped_spring_joint_set_param].
</description>
</method>
<method name="_end_sync" qualifiers="virtual">
<return type="void" />
<description>
+ Called to indicate that the physics server has stopped synchronizing. It is in the loop's iteration/physics phase, and can access physics objects even if running on a separate thread. See also [method _sync].
+ Overridable version of [PhysicsServer2D]'s internal [code]end_sync[/code] method.
</description>
</method>
<method name="_finish" qualifiers="virtual">
<return type="void" />
<description>
+ Called when the main loop finalizes to shut down the physics server. See also [method MainLoop._finalize] and [method _init].
+ Overridable version of [PhysicsServer2D]'s internal [code]finish[/code] method.
</description>
</method>
<method name="_flush_queries" qualifiers="virtual">
<return type="void" />
<description>
+ Called every physics step before [method _step] to process all remaining queries.
+ Overridable version of [PhysicsServer2D]'s internal [code]flush_queries[/code] method.
</description>
</method>
<method name="_free_rid" qualifiers="virtual">
<return type="void" />
<param index="0" name="rid" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.free_rid].
</description>
</method>
<method name="_get_process_info" qualifiers="virtual">
<return type="int" />
<param index="0" name="process_info" type="int" enum="PhysicsServer2D.ProcessInfo" />
<description>
+ Overridable version of [method PhysicsServer2D.get_process_info].
</description>
</method>
<method name="_init" qualifiers="virtual">
<return type="void" />
<description>
+ Called when the main loop is initialized and creates a new instance of this physics server. See also [method MainLoop._initialize] and [method _finish].
+ Overridable version of [PhysicsServer2D]'s internal [code]init[/code] method.
</description>
</method>
<method name="_is_flushing_queries" qualifiers="virtual const">
<return type="bool" />
<description>
+ Overridable method that should return [code]true[/code] when the physics server is processing queries. See also [method _flush_queries].
+ Overridable version of [PhysicsServer2D]'s internal [code]is_flushing_queries[/code] method.
</description>
</method>
<method name="_joint_clear" qualifiers="virtual">
<return type="void" />
<param index="0" name="joint" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_clear].
</description>
</method>
<method name="_joint_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_create].
</description>
</method>
<method name="_joint_disable_collisions_between_bodies" qualifiers="virtual">
@@ -721,6 +837,7 @@
<param index="0" name="joint" type="RID" />
<param index="1" name="disable" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_disable_collisions_between_bodies].
</description>
</method>
<method name="_joint_get_param" qualifiers="virtual const">
@@ -728,18 +845,21 @@
<param index="0" name="joint" type="RID" />
<param index="1" name="param" type="int" enum="PhysicsServer2D.JointParam" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_get_param].
</description>
</method>
<method name="_joint_get_type" qualifiers="virtual const">
<return type="int" enum="PhysicsServer2D.JointType" />
<param index="0" name="joint" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_get_type].
</description>
</method>
<method name="_joint_is_disabled_collisions_between_bodies" qualifiers="virtual const">
<return type="bool" />
<param index="0" name="joint" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_is_disabled_collisions_between_bodies].
</description>
</method>
<method name="_joint_make_damped_spring" qualifiers="virtual">
@@ -750,6 +870,7 @@
<param index="3" name="body_a" type="RID" />
<param index="4" name="body_b" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_make_damped_spring].
</description>
</method>
<method name="_joint_make_groove" qualifiers="virtual">
@@ -761,6 +882,7 @@
<param index="4" name="body_a" type="RID" />
<param index="5" name="body_b" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_make_groove].
</description>
</method>
<method name="_joint_make_pin" qualifiers="virtual">
@@ -770,6 +892,7 @@
<param index="2" name="body_a" type="RID" />
<param index="3" name="body_b" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_make_pin].
</description>
</method>
<method name="_joint_set_param" qualifiers="virtual">
@@ -778,6 +901,7 @@
<param index="1" name="param" type="int" enum="PhysicsServer2D.JointParam" />
<param index="2" name="value" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_set_param].
</description>
</method>
<method name="_pin_joint_get_flag" qualifiers="virtual const">
@@ -785,6 +909,7 @@
<param index="0" name="joint" type="RID" />
<param index="1" name="flag" type="int" enum="PhysicsServer2D.PinJointFlag" />
<description>
+ Overridable version of [method PhysicsServer2D.pin_joint_get_flag].
</description>
</method>
<method name="_pin_joint_get_param" qualifiers="virtual const">
@@ -792,6 +917,7 @@
<param index="0" name="joint" type="RID" />
<param index="1" name="param" type="int" enum="PhysicsServer2D.PinJointParam" />
<description>
+ Overridable version of [method PhysicsServer2D.pin_joint_get_param].
</description>
</method>
<method name="_pin_joint_set_flag" qualifiers="virtual">
@@ -800,6 +926,7 @@
<param index="1" name="flag" type="int" enum="PhysicsServer2D.PinJointFlag" />
<param index="2" name="enabled" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.pin_joint_set_flag].
</description>
</method>
<method name="_pin_joint_set_param" qualifiers="virtual">
@@ -808,27 +935,32 @@
<param index="1" name="param" type="int" enum="PhysicsServer2D.PinJointParam" />
<param index="2" name="value" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.pin_joint_set_param].
</description>
</method>
<method name="_rectangle_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.rectangle_shape_create].
</description>
</method>
<method name="_segment_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.segment_shape_create].
</description>
</method>
<method name="_separation_ray_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.separation_ray_shape_create].
</description>
</method>
<method name="_set_active" qualifiers="virtual">
<return type="void" />
<param index="0" name="active" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.set_active].
</description>
</method>
<method name="_shape_collide" qualifiers="virtual">
@@ -843,24 +975,30 @@
<param index="7" name="result_max" type="int" />
<param index="8" name="result_count" type="int32_t*" />
<description>
+ Given two shapes and their parameters, should return [code]true[/code] if a collision between the two would occur, with additional details passed in [param results].
+ Overridable version of [PhysicsServer2D]'s internal [code]shape_collide[/code] method. Corresponds to [method PhysicsDirectSpaceState2D.collide_shape].
</description>
</method>
<method name="_shape_get_custom_solver_bias" qualifiers="virtual const">
<return type="float" />
<param index="0" name="shape" type="RID" />
<description>
+ Should return the custom solver bias of the given [param shape], which defines how much bodies are forced to separate on contact when this shape is involved.
+ Overridable version of [PhysicsServer2D]'s internal [code]shape_get_custom_solver_bias[/code] method. Corresponds to [member Shape2D.custom_solver_bias].
</description>
</method>
<method name="_shape_get_data" qualifiers="virtual const">
<return type="Variant" />
<param index="0" name="shape" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.shape_get_data].
</description>
</method>
<method name="_shape_get_type" qualifiers="virtual const">
<return type="int" enum="PhysicsServer2D.ShapeType" />
<param index="0" name="shape" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.shape_get_type].
</description>
</method>
<method name="_shape_set_custom_solver_bias" qualifiers="virtual">
@@ -868,6 +1006,8 @@
<param index="0" name="shape" type="RID" />
<param index="1" name="bias" type="float" />
<description>
+ Should set the custom solver bias for the given [param shape]. It defines how much bodies are forced to separate on contact.
+ Overridable version of [PhysicsServer2D]'s internal [code]shape_get_custom_solver_bias[/code] method. Corresponds to [member Shape2D.custom_solver_bias].
</description>
</method>
<method name="_shape_set_data" qualifiers="virtual">
@@ -875,29 +1015,36 @@
<param index="0" name="shape" type="RID" />
<param index="1" name="data" type="Variant" />
<description>
+ Overridable version of [method PhysicsServer2D.shape_set_data].
</description>
</method>
<method name="_space_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.space_create].
</description>
</method>
<method name="_space_get_contact_count" qualifiers="virtual const">
<return type="int" />
<param index="0" name="space" type="RID" />
<description>
+ Should return how many contacts have occurred during the last physics step in the given [param space]. See also [method _space_get_contacts] and [method _space_set_debug_contacts].
+ Overridable version of [PhysicsServer2D]'s internal [code]space_get_contact_count[/code] method.
</description>
</method>
<method name="_space_get_contacts" qualifiers="virtual const">
<return type="PackedVector2Array" />
<param index="0" name="space" type="RID" />
<description>
+ Should return the positions of all contacts that have occurred during the last physics step in the given [param space]. See also [method _space_get_contact_count] and [method _space_set_debug_contacts].
+ Overridable version of [PhysicsServer2D]'s internal [code]space_get_contacts[/code] method.
</description>
</method>
<method name="_space_get_direct_state" qualifiers="virtual">
<return type="PhysicsDirectSpaceState2D" />
<param index="0" name="space" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.space_get_direct_state].
</description>
</method>
<method name="_space_get_param" qualifiers="virtual const">
@@ -905,12 +1052,14 @@
<param index="0" name="space" type="RID" />
<param index="1" name="param" type="int" enum="PhysicsServer2D.SpaceParameter" />
<description>
+ Overridable version of [method PhysicsServer2D.space_get_param].
</description>
</method>
<method name="_space_is_active" qualifiers="virtual const">
<return type="bool" />
<param index="0" name="space" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.space_is_active].
</description>
</method>
<method name="_space_set_active" qualifiers="virtual">
@@ -918,6 +1067,7 @@
<param index="0" name="space" type="RID" />
<param index="1" name="active" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.space_set_active].
</description>
</method>
<method name="_space_set_debug_contacts" qualifiers="virtual">
@@ -925,6 +1075,8 @@
<param index="0" name="space" type="RID" />
<param index="1" name="max_contacts" type="int" />
<description>
+ Used internally to allow the given [param space] to store contact points, up to [param max_contacts]. This is automatically set for the main [World2D]'s space when [member SceneTree.debug_collisions_hint] is [code]true[/code], or by checking "Visible Collision Shapes" in the editor. Only works in debug builds.
+ Overridable version of [PhysicsServer2D]'s internal [code]space_set_debug_contacts[/code] method.
</description>
</method>
<method name="_space_set_param" qualifiers="virtual">
@@ -933,34 +1085,42 @@
<param index="1" name="param" type="int" enum="PhysicsServer2D.SpaceParameter" />
<param index="2" name="value" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.space_set_param].
</description>
</method>
<method name="_step" qualifiers="virtual">
<return type="void" />
<param index="0" name="step" type="float" />
<description>
+ Called every physics step to process the physics simulation. [param step] is the time elapsed since the last physics step, in seconds. It is usually the same as [method Node.get_physics_process_delta_time].
+ Overridable version of [PhysicsServer2D]'s internal [code skip-lint]step[/code] method.
</description>
</method>
<method name="_sync" qualifiers="virtual">
<return type="void" />
<description>
+ Called to indicate that the physics server is synchronizing and cannot access physics states if running on a separate thread. See also [method _end_sync].
+ Overridable version of [PhysicsServer2D]'s internal [code]sync[/code] method.
</description>
</method>
<method name="_world_boundary_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.world_boundary_shape_create].
</description>
</method>
<method name="body_test_motion_is_excluding_body" qualifiers="const">
<return type="bool" />
<param index="0" name="body" type="RID" />
<description>
+ Returns [code]true[/code] if the body with the given [RID] is being excluded from [method _body_test_motion]. See also [method Object.get_instance_id].
</description>
</method>
<method name="body_test_motion_is_excluding_object" qualifiers="const">
<return type="bool" />
<param index="0" name="object" type="int" />
<description>
+ Returns [code]true[/code] if the object with the given instance ID is being excluded from [method _body_test_motion]. See also [method Object.get_instance_id].
</description>
</method>
</methods>
diff --git a/doc/classes/PhysicsServer3D.xml b/doc/classes/PhysicsServer3D.xml
index e40d73862b..e835724e36 100644
--- a/doc/classes/PhysicsServer3D.xml
+++ b/doc/classes/PhysicsServer3D.xml
@@ -44,7 +44,8 @@
<method name="area_create">
<return type="RID" />
<description>
- Creates an [Area3D].
+ Creates a 3D area object in the physics server, and returns the [RID] that identifies it. The default settings for the created area include a collision layer and mask set to [code]1[/code], and [code]monitorable[/code] set to [code]false[/code].
+ Use [method area_add_shape] to add shapes to it, use [method area_set_transform] to set its transform, and use [method area_set_space] to add the area to a space. If you want the area to be detectable use [method area_set_monitorable].
</description>
</method>
<method name="area_get_collision_layer" qualifiers="const">
@@ -351,6 +352,8 @@
<method name="body_create">
<return type="RID" />
<description>
+ Creates a 3D body object in the physics server, and returns the [RID] that identifies it. The default settings for the created area include a collision layer and mask set to [code]1[/code], and body mode set to [constant BODY_MODE_RIGID].
+ Use [method body_add_shape] to add shapes to it, use [method body_set_state] to set its transform, and use [method body_set_space] to add the body to a space.
</description>
</method>
<method name="body_get_collision_layer" qualifiers="const">
@@ -482,7 +485,7 @@
<return type="bool" />
<param index="0" name="body" type="RID" />
<description>
- Returns whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
+ Returns [code]true[/code] if the body is omitting the standard force integration. See [method body_set_omit_force_integration].
</description>
</method>
<method name="body_remove_collision_exception">
@@ -582,9 +585,12 @@
<param index="1" name="callable" type="Callable" />
<param index="2" name="userdata" type="Variant" default="null" />
<description>
- Sets the function used to calculate physics for an object, if that object allows it (see [method body_set_omit_force_integration]). The force integration function takes 2 arguments:
- - [code]state[/code] — [PhysicsDirectBodyState3D] used to retrieve and modify the body's state.
- - [code skip-lint]userdata[/code] — optional user data passed to [method body_set_force_integration_callback].
+ Sets the body's custom force integration callback function to [param callable]. Use an empty [Callable] ([code skip-lint]Callable()[/code]) to clear the custom callback.
+ The function [param callable] will be called every physics tick, before the standard force integration (see [method body_set_omit_force_integration]). It can be used for example to update the body's linear and angular velocity based on contact with other bodies.
+ If [param userdata] is not [code]null[/code], the function [param callable] must take the following two parameters:
+ 1. [code]state[/code]: a [PhysicsDirectBodyState3D], used to retrieve and modify the body's state,
+ 2. [code skip-lint]userdata[/code]: a [Variant]; its value will be the [param userdata] passed into this method.
+ If [param userdata] is [code]null[/code], then [param callable] must take only the [code]state[/code] parameter.
</description>
</method>
<method name="body_set_max_contacts_reported">
@@ -608,7 +614,8 @@
<param index="0" name="body" type="RID" />
<param index="1" name="enable" type="bool" />
<description>
- Sets whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
+ Sets whether the body omits the standard force integration. If [param enable] is [code]true[/code], the body will not automatically use applied forces, torques, and damping to update the body's linear and angular velocity. In this case, [method body_set_force_integration_callback] can be used to manually update the linear and angular velocity instead.
+ This method is called when the property [member RigidBody3D.custom_integrator] is set.
</description>
</method>
<method name="body_set_param">
@@ -1624,7 +1631,7 @@
Constant to set/get the priority (order of processing) of an area.
</constant>
<constant name="AREA_PARAM_WIND_FORCE_MAGNITUDE" value="10" enum="AreaParameter">
- Constant to set/get the magnitude of area-specific wind force.
+ Constant to set/get the magnitude of area-specific wind force. This wind force only applies to [SoftBody3D] nodes. Other physics bodies are currently not affected by wind.
</constant>
<constant name="AREA_PARAM_WIND_SOURCE" value="11" enum="AreaParameter">
Constant to set/get the 3D vector that specifies the origin from which an area-specific wind blows.
diff --git a/doc/classes/Polygon2D.xml b/doc/classes/Polygon2D.xml
index 029a69a399..90d3522002 100644
--- a/doc/classes/Polygon2D.xml
+++ b/doc/classes/Polygon2D.xml
@@ -91,7 +91,6 @@
</member>
<member name="polygon" type="PackedVector2Array" setter="set_polygon" getter="get_polygon" default="PackedVector2Array()">
The polygon's list of vertices. The final point will be connected to the first.
- [b]Note:[/b] This returns a copy of the [PackedVector2Array] rather than a reference.
</member>
<member name="polygons" type="Array" setter="set_polygons" getter="get_polygons" default="[]">
The list of polygons, in case more than one is being represented. Every individual polygon is stored as a [PackedInt32Array] where each [int] is an index to a point in [member polygon]. If empty, this property will be ignored, and the resulting single polygon will be composed of all points in [member polygon], using the order they are stored in.
diff --git a/doc/classes/Popup.xml b/doc/classes/Popup.xml
index c435f3d291..29b44a98f2 100644
--- a/doc/classes/Popup.xml
+++ b/doc/classes/Popup.xml
@@ -23,9 +23,4 @@
</description>
</signal>
</signals>
- <theme_items>
- <theme_item name="panel" data_type="style" type="StyleBox">
- Default [StyleBox] for the [Popup].
- </theme_item>
- </theme_items>
</class>
diff --git a/doc/classes/PopupMenu.xml b/doc/classes/PopupMenu.xml
index 7831ebd1b9..0f5687f091 100644
--- a/doc/classes/PopupMenu.xml
+++ b/doc/classes/PopupMenu.xml
@@ -768,6 +768,9 @@
<theme_item name="labeled_separator_right" data_type="style" type="StyleBox">
[StyleBox] for the right side of labeled separator. See [method add_separator].
</theme_item>
+ <theme_item name="panel" data_type="style" type="StyleBox">
+ [StyleBox] for the the background panel.
+ </theme_item>
<theme_item name="separator" data_type="style" type="StyleBox">
[StyleBox] used for the separators. See [method add_separator].
</theme_item>
diff --git a/doc/classes/PopupPanel.xml b/doc/classes/PopupPanel.xml
index b86972e8af..399e285402 100644
--- a/doc/classes/PopupPanel.xml
+++ b/doc/classes/PopupPanel.xml
@@ -8,4 +8,9 @@
</description>
<tutorials>
</tutorials>
+ <theme_items>
+ <theme_item name="panel" data_type="style" type="StyleBox">
+ [StyleBox] for the the background panel.
+ </theme_item>
+ </theme_items>
</class>
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index 6a6f53ac60..32e71ce030 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -10,9 +10,9 @@
[b]Overriding:[/b] Any project setting can be overridden by creating a file named [code]override.cfg[/code] in the project's root directory. This can also be used in exported projects by placing this file in the same directory as the project binary. Overriding will still take the base project settings' [url=$DOCS_URL/tutorials/export/feature_tags.html]feature tags[/url] in account. Therefore, make sure to [i]also[/i] override the setting with the desired feature tags if you want them to override base project settings on all platforms and configurations.
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<methods>
<method name="add_property_info">
@@ -254,6 +254,7 @@
Path to an image used as the boot splash. If left empty, the default Godot Engine splash will be displayed instead.
[b]Note:[/b] Only effective if [member application/boot_splash/show_image] is [code]true[/code].
[b]Note:[/b] The only supported format is PNG. Using another image format will result in an error.
+ [b]Note:[/b] The image will also show when opening the project in the editor. If you want to display the default splash image in the editor, add an empty override for [code]editor_hint[/code] feature.
</member>
<member name="application/boot_splash/minimum_display_time" type="int" setter="" getter="" default="0">
Minimum boot splash display time (in milliseconds). It is not recommended to set too high values for this setting.
@@ -323,6 +324,11 @@
If [code]true[/code], disables printing to standard output. This is equivalent to starting the editor or project with the [code]--quiet[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url]. See also [member application/run/disable_stderr].
Changes to this setting will only be applied upon restarting the application.
</member>
+ <member name="application/run/enable_alt_space_menu" type="bool" setter="" getter="" default="false">
+ If [code]true[/code], allows the [kbd]Alt + Space[/kbd] keys to display the window menu. This menu allows the user to perform various window management operations such as moving, resizing, or minimizing the window.
+ [b]Note:[/b] When the menu is displayed, project execution will pause until the menu is [i]fully[/i] closed due to Windows behavior. Consider this when enabling this setting in a networked multiplayer game. The menu is only considered fully closed when an option is selected, when the user clicks outside, or when [kbd]Escape[/kbd] is pressed after bringing up the window menu [i]and[/i] another key is pressed afterwards.
+ [b]Note:[/b] This setting is implemented only on Windows.
+ </member>
<member name="application/run/flush_stdout_on_print" type="bool" setter="" getter="" default="false">
If [code]true[/code], flushes the standard output stream every time a line is printed. This affects both terminal logging and file logging.
When running a project, this setting must be enabled if you want logs to be collected by service managers such as systemd/journalctl. This setting is disabled by default on release builds, since flushing on every printed line will negatively affect performance if lots of lines are printed in a rapid succession. Also, if this setting is enabled, logged files will still be written successfully if the application crashes or is otherwise killed by the user (without being closed "normally").
@@ -338,7 +344,7 @@
This setting can be overridden using the [code]--frame-delay &lt;ms;&gt;[/code] command line argument.
</member>
<member name="application/run/low_processor_mode" type="bool" setter="" getter="" default="false">
- If [code]true[/code], enables low-processor usage mode. This setting only works on desktop platforms. The screen is not redrawn if nothing changes visually. This is meant for writing applications and editors, but is pretty useless (and can hurt performance) in most games.
+ If [code]true[/code], enables low-processor usage mode. The screen is not redrawn if nothing changes visually. This is meant for writing applications and editors, but is pretty useless (and can hurt performance) in most games.
</member>
<member name="application/run/low_processor_mode_sleep_usec" type="int" setter="" getter="" default="6900">
Amount of sleeping between frames when the low-processor usage mode is enabled (in microseconds). Higher values will result in lower CPU usage.
@@ -483,6 +489,9 @@
<member name="debug/gdscript/warnings/enable" type="bool" setter="" getter="" default="true">
If [code]true[/code], enables specific GDScript warnings (see [code]debug/gdscript/warnings/*[/code] settings). If [code]false[/code], disables all GDScript warnings.
</member>
+ <member name="debug/gdscript/warnings/enum_variable_without_default" type="int" setter="" getter="" default="1">
+ When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a variable has an enum type but no explicit default value, but only if the enum does not contain [code]0[/code] as a valid value.
+ </member>
<member name="debug/gdscript/warnings/exclude_addons" type="bool" setter="" getter="" default="true">
If [code]true[/code], scripts in the [code]res://addons[/code] folder will not generate warnings.
</member>
@@ -545,10 +554,10 @@
When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when defining a local or subclass member variable that would shadow a variable that is inherited from a parent class.
</member>
<member name="debug/gdscript/warnings/standalone_expression" type="int" setter="" getter="" default="1">
- When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling an expression that has no effect on the surrounding code, such as writing [code]2 + 2[/code] as a statement.
+ When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling an expression that may have no effect on the surrounding code, such as writing [code]2 + 2[/code] as a statement.
</member>
<member name="debug/gdscript/warnings/standalone_ternary" type="int" setter="" getter="" default="1">
- When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling a ternary expression that has no effect on the surrounding code, such as writing [code]42 if active else 0[/code] as a statement.
+ When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling a ternary expression that may have no effect on the surrounding code, such as writing [code]42 if active else 0[/code] as a statement.
</member>
<member name="debug/gdscript/warnings/static_called_on_instance" type="int" setter="" getter="" default="1">
When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling a static method from an instance of a class instead of from the class directly.
@@ -569,7 +578,7 @@
When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when using an expression whose type may not be compatible with the function parameter expected.
</member>
<member name="debug/gdscript/warnings/unsafe_cast" type="int" setter="" getter="" default="0">
- When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when performing an unsafe cast.
+ When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a [Variant] value is cast to a non-Variant.
</member>
<member name="debug/gdscript/warnings/unsafe_method_access" type="int" setter="" getter="" default="0">
When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling a method whose presence is not guaranteed at compile-time in the class.
@@ -632,6 +641,9 @@
<member name="debug/shader_language/warnings/formatting_error" type="bool" setter="" getter="" default="true">
When set to [code]true[/code], produces a warning upon encountering certain formatting errors. Currently this only checks for empty statements. More formatting errors may be added over time.
</member>
+ <member name="debug/shader_language/warnings/magic_position_write" type="bool" setter="" getter="" default="true">
+ When set to [code]true[/code], produces a warning when the shader contains [code]POSITION = vec4(vertex,[/code] as this was very common code written in Godot 4.2 and earlier that was paired with a QuadMesh to produce a full screen post processes pass. With the switch to reversed z in 4.3, this trick no longer works, as it implicitly relied on the [code]VERTEX.z[/code] being 0.
+ </member>
<member name="debug/shader_language/warnings/treat_warnings_as_errors" type="bool" setter="" getter="" default="false">
When set to [code]true[/code], warnings are treated as errors.
</member>
@@ -786,8 +798,8 @@
<member name="display/window/energy_saving/keep_screen_on" type="bool" setter="" getter="" default="true">
If [code]true[/code], keeps the screen on (even in case of inactivity), so the screensaver does not take over. Works on desktop and mobile platforms.
</member>
- <member name="display/window/energy_saving/keep_screen_on.editor" type="bool" setter="" getter="" default="false">
- Editor-only override for [member display/window/energy_saving/keep_screen_on]. Does not affect exported projects in debug or release mode.
+ <member name="display/window/energy_saving/keep_screen_on.editor_hint" type="bool" setter="" getter="" default="false">
+ Editor-only override for [member display/window/energy_saving/keep_screen_on]. Does not affect running project.
</member>
<member name="display/window/handheld/orientation" type="int" setter="" getter="" default="0">
The default screen orientation to use on mobile devices. See [enum DisplayServer.ScreenOrientation] for possible values.
@@ -890,8 +902,9 @@
<member name="display/window/vsync/vsync_mode" type="int" setter="" getter="" default="1">
Sets the V-Sync mode for the main game window. The editor's own V-Sync mode can be set using [member EditorSettings.interface/editor/vsync_mode].
See [enum DisplayServer.VSyncMode] for possible values and how they affect the behavior of your application.
- Depending on the platform and used renderer, the engine will fall back to [b]Enabled[/b] if the desired mode is not supported.
- [b]Note:[/b] V-Sync modes other than [b]Enabled[/b] are only supported in the Forward+ and Mobile rendering methods, not Compatibility.
+ Depending on the platform and rendering method, the engine will fall back to [b]Enabled[/b] if the desired mode is not supported.
+ V-Sync can be disabled on the command line using the [code]--disable-vsync[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url].
+ [b]Note:[/b] The [b]Adaptive[/b] and [b]Mailbox[/b] V-Sync modes are only supported in the Forward+ and Mobile rendering methods, not Compatibility.
[b]Note:[/b] This property is only read when the project starts. To change the V-Sync mode at runtime, call [method DisplayServer.window_set_vsync_mode] instead.
</member>
<member name="dotnet/project/assembly_name" type="String" setter="" getter="" default="&quot;&quot;">
@@ -964,7 +977,7 @@
The command-line arguments to append to Godot's own command line when running the project. This doesn't affect the editor itself.
It is possible to make another executable run Godot by using the [code]%command%[/code] placeholder. The placeholder will be replaced with Godot's own command line. Program-specific arguments should be placed [i]before[/i] the placeholder, whereas Godot-specific arguments should be placed [i]after[/i] the placeholder.
For example, this can be used to force the project to run on the dedicated GPU in an NVIDIA Optimus system on Linux:
- [codeblock]
+ [codeblock lang=text]
prime-run %command%
[/codeblock]
</member>
@@ -1060,6 +1073,9 @@
<member name="gui/timers/tooltip_delay_sec" type="float" setter="" getter="" default="0.5">
Default delay for tooltips (in seconds).
</member>
+ <member name="gui/timers/tooltip_delay_sec.editor_hint" type="float" setter="" getter="" default="0.5">
+ Delay for tooltips in the editor.
+ </member>
<member name="input/ui_accept" type="Dictionary" setter="" getter="">
Default [InputEventAction] to confirm a focused button, menu or list item, or validate input.
[b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified.
@@ -1431,6 +1447,10 @@
<member name="internationalization/rendering/force_right_to_left_layout_direction" type="bool" setter="" getter="" default="false">
Force layout direction and text writing direction to RTL for all controls.
</member>
+ <member name="internationalization/rendering/root_node_auto_translate" type="bool" setter="" getter="" default="true">
+ If [code]true[/code], root node will use [constant Node.AUTO_TRANSLATE_MODE_ALWAYS], otherwise [constant Node.AUTO_TRANSLATE_MODE_DISABLED] will be used.
+ [b]Note:[/b] This property is only read when the project starts. To change the auto translate mode at runtime, set [member Node.auto_translate_mode] of [member SceneTree.root] instead.
+ </member>
<member name="internationalization/rendering/root_node_layout_direction" type="int" setter="" getter="" default="0">
Root node default layout direction.
</member>
@@ -2694,8 +2714,8 @@
<member name="rendering/renderer/rendering_method.web" type="String" setter="" getter="" default="&quot;gl_compatibility&quot;">
Override for [member rendering/renderer/rendering_method] on web.
</member>
- <member name="rendering/rendering_device/d3d12/agility_sdk_version" type="int" setter="" getter="" default="610">
- Version code of the Direct3D 12 Agility SDK to use ([code]D3D12SDKVersion[/code]).
+ <member name="rendering/rendering_device/d3d12/agility_sdk_version" type="int" setter="" getter="" default="613">
+ Version code of the [url=https://devblogs.microsoft.com/directx/directx12agility/]Direct3D 12 Agility SDK[/url] to use ([code]D3D12SDKVersion[/code]). This must match the [i]minor[/i] version that is installed next to the editor binary and in the export templates directory for the current editor version. For example, if you have [code]1.613.3[/code] installed, you need to input [code]613[/code] here.
</member>
<member name="rendering/rendering_device/d3d12/max_misc_descriptors_per_frame" type="int" setter="" getter="" default="512">
The number of entries in the miscellaneous descriptors heap the Direct3D 12 rendering driver uses each frame, used for various operations like clearing a texture.
@@ -2850,7 +2870,7 @@
<member name="rendering/vrs/texture" type="String" setter="" getter="" default="&quot;&quot;">
If [member rendering/vrs/mode] is set to [b]Texture[/b], this is the path to default texture loaded as the VRS image.
The texture [i]must[/i] use a lossless compression format so that colors can be matched precisely. The following VRS densities are mapped to various colors, with brighter colors representing a lower level of shading precision:
- [codeblock]
+ [codeblock lang=text]
- 1×1 = rgb(0, 0, 0) - #000000
- 1×2 = rgb(0, 85, 0) - #005500
- 2×1 = rgb(85, 0, 0) - #550000
@@ -2881,6 +2901,9 @@
<member name="xr/openxr/extensions/eye_gaze_interaction" type="bool" setter="" getter="" default="false">
Specify whether to enable eye tracking for this project. Depending on the platform, additional export configuration may be needed.
</member>
+ <member name="xr/openxr/extensions/hand_interaction_profile" type="bool" setter="" getter="" default="false">
+ If true the hand interaction profile extension will be activated if supported by the platform.
+ </member>
<member name="xr/openxr/extensions/hand_tracking" type="bool" setter="" getter="" default="true">
If true we enable the hand tracking extension if available.
</member>
diff --git a/doc/classes/QuadMesh.xml b/doc/classes/QuadMesh.xml
index c5164e9feb..d840616fdd 100644
--- a/doc/classes/QuadMesh.xml
+++ b/doc/classes/QuadMesh.xml
@@ -7,8 +7,8 @@
Class representing a square [PrimitiveMesh]. This flat mesh does not have a thickness. By default, this mesh is aligned on the X and Y axes; this rotation is more suited for use with billboarded materials. A [QuadMesh] is equivalent to a [PlaneMesh] except its default [member PlaneMesh.orientation] is [constant PlaneMesh.FACE_Z].
</description>
<tutorials>
- <link title="GUI in 3D Demo">https://godotengine.org/asset-library/asset/127</link>
- <link title="2D in 3D Demo">https://godotengine.org/asset-library/asset/129</link>
+ <link title="GUI in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2807</link>
+ <link title="2D in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2803</link>
</tutorials>
<members>
<member name="orientation" type="int" setter="set_orientation" getter="get_orientation" overrides="PlaneMesh" enum="PlaneMesh.Orientation" default="2" />
diff --git a/doc/classes/Quaternion.xml b/doc/classes/Quaternion.xml
index 8b59448555..665c6335f2 100644
--- a/doc/classes/Quaternion.xml
+++ b/doc/classes/Quaternion.xml
@@ -14,7 +14,7 @@
<link title="3Blue1Brown&apos;s video on Quaternions">https://www.youtube.com/watch?v=d4EgbgTm0Bg</link>
<link title="Online Quaternion Visualization">https://quaternions.online/</link>
<link title="Using 3D transforms">$DOCS_URL/tutorials/3d/using_transforms.html#interpolating-with-quaternions</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
<link title="Advanced Quaternion Visualization">https://iwatake2222.github.io/rotation_master/rotation_master.html</link>
</tutorials>
<constructors>
diff --git a/doc/classes/RayCast2D.xml b/doc/classes/RayCast2D.xml
index 31daaab417..16643b0a71 100644
--- a/doc/classes/RayCast2D.xml
+++ b/doc/classes/RayCast2D.xml
@@ -56,6 +56,21 @@
<return type="int" />
<description>
Returns the shape ID of the first object that the ray intersects, or [code]0[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
+ To get the intersected shape node, for a [CollisionObject2D] target, use:
+ [codeblocks]
+ [gdscript]
+ var target = get_collider() # A CollisionObject2D.
+ var shape_id = get_collider_shape() # The shape index in the collider.
+ var owner_id = target.shape_find_owner(shape_id) # The owner ID in the collider.
+ var shape = target.shape_owner_get_owner(owner_id)
+ [/gdscript]
+ [csharp]
+ var target = (CollisionObject2D)GetCollider(); // A CollisionObject2D.
+ var shapeId = GetColliderShape(); // The shape index in the collider.
+ var ownerId = target.ShapeFindOwner(shapeId); // The owner ID in the collider.
+ var shape = target.ShapeOwnerGetOwner(ownerId);
+ [/csharp]
+ [/codeblocks]
</description>
</method>
<method name="get_collision_mask_value" qualifiers="const">
diff --git a/doc/classes/RayCast3D.xml b/doc/classes/RayCast3D.xml
index f9f94e5cfc..18a544d114 100644
--- a/doc/classes/RayCast3D.xml
+++ b/doc/classes/RayCast3D.xml
@@ -11,7 +11,7 @@
</description>
<tutorials>
<link title="Ray-casting">$DOCS_URL/tutorials/physics/ray-casting.html</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<methods>
<method name="add_exception">
@@ -57,6 +57,21 @@
<return type="int" />
<description>
Returns the shape ID of the first object that the ray intersects, or [code]0[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
+ To get the intersected shape node, for a [CollisionObject3D] target, use:
+ [codeblocks]
+ [gdscript]
+ var target = get_collider() # A CollisionObject3D.
+ var shape_id = get_collider_shape() # The shape index in the collider.
+ var owner_id = target.shape_find_owner(shape_id) # The owner ID in the collider.
+ var shape = target.shape_owner_get_owner(owner_id)
+ [/gdscript]
+ [csharp]
+ var target = (CollisionObject3D)GetCollider(); // A CollisionObject3D.
+ var shapeId = GetColliderShape(); // The shape index in the collider.
+ var ownerId = target.ShapeFindOwner(shapeId); // The owner ID in the collider.
+ var shape = target.ShapeOwnerGetOwner(ownerId);
+ [/csharp]
+ [/codeblocks]
</description>
</method>
<method name="get_collision_face_index" qualifiers="const">
diff --git a/doc/classes/Rect2.xml b/doc/classes/Rect2.xml
index 0471d73749..ba7dcab2d7 100644
--- a/doc/classes/Rect2.xml
+++ b/doc/classes/Rect2.xml
@@ -89,13 +89,13 @@
var rect = Rect2(0, 0, 5, 2)
rect = rect.expand(Vector2(10, 0)) # rect is Rect2(0, 0, 10, 2)
- rect = rect.expand(Vector2(-5, 5)) # rect is Rect2(-5, 0, 10, 5)
+ rect = rect.expand(Vector2(-5, 5)) # rect is Rect2(-5, 0, 15, 5)
[/gdscript]
[csharp]
var rect = new Rect2(0, 0, 5, 2);
rect = rect.Expand(new Vector2(10, 0)); // rect is Rect2(0, 0, 10, 2)
- rect = rect.Expand(new Vector2(-5, 5)); // rect is Rect2(-5, 0, 10, 5)
+ rect = rect.Expand(new Vector2(-5, 5)); // rect is Rect2(-5, 0, 15, 5)
[/csharp]
[/codeblocks]
</description>
diff --git a/doc/classes/Rect2i.xml b/doc/classes/Rect2i.xml
index c021a1be26..cbd09f8430 100644
--- a/doc/classes/Rect2i.xml
+++ b/doc/classes/Rect2i.xml
@@ -88,13 +88,13 @@
var rect = Rect2i(0, 0, 5, 2)
rect = rect.expand(Vector2i(10, 0)) # rect is Rect2i(0, 0, 10, 2)
- rect = rect.expand(Vector2i(-5, 5)) # rect is Rect2i(-5, 0, 10, 5)
+ rect = rect.expand(Vector2i(-5, 5)) # rect is Rect2i(-5, 0, 15, 5)
[/gdscript]
[csharp]
var rect = new Rect2I(0, 0, 5, 2);
rect = rect.Expand(new Vector2I(10, 0)); // rect is Rect2I(0, 0, 10, 2)
- rect = rect.Expand(new Vector2I(-5, 5)); // rect is Rect2I(-5, 0, 10, 5)
+ rect = rect.Expand(new Vector2I(-5, 5)); // rect is Rect2I(-5, 0, 15, 5)
[/csharp]
[/codeblocks]
</description>
diff --git a/doc/classes/RectangleShape2D.xml b/doc/classes/RectangleShape2D.xml
index 721d73dc14..a62b997a0a 100644
--- a/doc/classes/RectangleShape2D.xml
+++ b/doc/classes/RectangleShape2D.xml
@@ -8,8 +8,8 @@
[b]Performance:[/b] [RectangleShape2D] is fast to check collisions against. It is faster than [CapsuleShape2D], but slower than [CircleShape2D].
</description>
<tutorials>
- <link title="2D Pong Demo">https://godotengine.org/asset-library/asset/121</link>
- <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/113</link>
+ <link title="2D Pong Demo">https://godotengine.org/asset-library/asset/2728</link>
+ <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2719</link>
</tutorials>
<members>
<member name="size" type="Vector2" setter="set_size" getter="get_size" default="Vector2(20, 20)">
diff --git a/doc/classes/RenderingDevice.xml b/doc/classes/RenderingDevice.xml
index 33cd831175..3c1061dee9 100644
--- a/doc/classes/RenderingDevice.xml
+++ b/doc/classes/RenderingDevice.xml
@@ -138,6 +138,15 @@
Submits the compute list for processing on the GPU. This is the compute equivalent to [method draw_list_draw].
</description>
</method>
+ <method name="compute_list_dispatch_indirect">
+ <return type="void" />
+ <param index="0" name="compute_list" type="int" />
+ <param index="1" name="buffer" type="RID" />
+ <param index="2" name="offset" type="int" />
+ <description>
+ Submits the compute list for processing on the GPU with the given group counts stored in the [param buffer] at [param offset]. Buffer must have been created with [constant STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT] flag.
+ </description>
+ </method>
<method name="compute_list_end">
<return type="void" />
<description>
@@ -2129,8 +2138,10 @@
Represents the size of the [enum BlendOperation] enum.
</constant>
<constant name="DYNAMIC_STATE_LINE_WIDTH" value="1" enum="PipelineDynamicStateFlags" is_bitfield="true">
+ Allows dynamically changing the width of rendering lines.
</constant>
<constant name="DYNAMIC_STATE_DEPTH_BIAS" value="2" enum="PipelineDynamicStateFlags" is_bitfield="true">
+ Allows dynamically changing the depth bias.
</constant>
<constant name="DYNAMIC_STATE_BLEND_CONSTANTS" value="4" enum="PipelineDynamicStateFlags" is_bitfield="true">
</constant>
diff --git a/doc/classes/RenderingServer.xml b/doc/classes/RenderingServer.xml
index c74d61ab88..3c9f0fc7af 100644
--- a/doc/classes/RenderingServer.xml
+++ b/doc/classes/RenderingServer.xml
@@ -92,13 +92,13 @@
Sets the exposure values that will be used by the renderers. The normalization amount is used to bake a given Exposure Value (EV) into rendering calculations to reduce the dynamic range of the scene.
The normalization factor can be calculated from exposure value (EV100) as follows:
[codeblock]
- func get_exposure_normalization(float ev100):
- return 1.0 / (pow(2.0, ev100) * 1.2)
+ func get_exposure_normalization(ev100: float):
+ return 1.0 / (pow(2.0, ev100) * 1.2)
[/codeblock]
The exposure value can be calculated from aperture (in f-stops), shutter speed (in seconds), and sensitivity (in ISO) as follows:
[codeblock]
- func get_exposure(float aperture, float shutter_speed, float sensitivity):
- return log2((aperture * aperture) / shutterSpeed * (100.0 / sensitivity))
+ func get_exposure(aperture: float, shutter_speed: float, sensitivity: float):
+ return log((aperture * aperture) / shutter_speed * (100.0 / sensitivity)) / log(2)
[/codeblock]
</description>
</method>
@@ -214,6 +214,7 @@
<param index="1" name="pos" type="Vector2" />
<param index="2" name="radius" type="float" />
<param index="3" name="color" type="Color" />
+ <param index="4" name="antialiased" type="bool" default="false" />
<description>
Draws a circle on the [CanvasItem] pointed to by the [param item] [RID]. See also [method CanvasItem.draw_circle].
</description>
@@ -280,6 +281,7 @@
<param index="1" name="points" type="PackedVector2Array" />
<param index="2" name="colors" type="PackedColorArray" />
<param index="3" name="width" type="float" default="-1.0" />
+ <param index="4" name="antialiased" type="bool" default="false" />
<description>
Draws a 2D multiline on the [CanvasItem] pointed to by the [param item] [RID]. See also [method CanvasItem.draw_multiline] and [method CanvasItem.draw_multiline_colors].
</description>
@@ -356,6 +358,7 @@
<param index="0" name="item" type="RID" />
<param index="1" name="rect" type="Rect2" />
<param index="2" name="color" type="Color" />
+ <param index="3" name="antialiased" type="bool" default="false" />
<description>
Draws a rectangle on the [CanvasItem] pointed to by the [param item] [RID]. See also [method CanvasItem.draw_rect].
</description>
@@ -634,7 +637,7 @@
<param index="1" name="transform" type="Transform2D" />
<description>
Transforms both the current and previous stored transform for a canvas item.
- This allows transforming a canvas item without creating a "glitch" in the interpolation, which is particularly useful for large worlds utilising a shifting origin.
+ This allows transforming a canvas item without creating a "glitch" in the interpolation, which is particularly useful for large worlds utilizing a shifting origin.
</description>
</method>
<method name="canvas_light_attach_to_canvas">
@@ -730,7 +733,7 @@
<param index="1" name="transform" type="Transform2D" />
<description>
Transforms both the current and previous stored transform for a light occluder.
- This allows transforming an occluder without creating a "glitch" in the interpolation, which is particularly useful for large worlds utilising a shifting origin.
+ This allows transforming an occluder without creating a "glitch" in the interpolation, which is particularly useful for large worlds utilizing a shifting origin.
</description>
</method>
<method name="canvas_light_reset_physics_interpolation">
@@ -901,7 +904,7 @@
<param index="1" name="transform" type="Transform2D" />
<description>
Transforms both the current and previous stored transform for a canvas light.
- This allows transforming a light without creating a "glitch" in the interpolation, which is is particularly useful for large worlds utilising a shifting origin.
+ This allows transforming a light without creating a "glitch" in the interpolation, which is is particularly useful for large worlds utilizing a shifting origin.
</description>
</method>
<method name="canvas_occluder_polygon_create">
@@ -1932,7 +1935,7 @@
<param index="0" name="instance" type="RID" />
<param index="1" name="transform" type="Transform3D" />
<description>
- Sets the world space transform of the instance. Equivalent to [member Node3D.transform].
+ Sets the world space transform of the instance. Equivalent to [member Node3D.global_transform].
</description>
</method>
<method name="instance_set_visibility_parent">
@@ -1979,6 +1982,12 @@
[b]Warning:[/b] This function is primarily intended for editor usage. For in-game use cases, prefer physics collision.
</description>
</method>
+ <method name="is_on_render_thread">
+ <return type="bool" />
+ <description>
+ Returns [code]true[/code] if our code is currently executing on the rendering thread.
+ </description>
+ </method>
<method name="light_directional_set_blend_splits">
<return type="void" />
<param index="0" name="light" type="RID" />
@@ -2576,7 +2585,7 @@
<description>
Set the entire data to use for drawing the [param multimesh] at once to [param buffer] (such as instance transforms and colors). [param buffer]'s size must match the number of instances multiplied by the per-instance data size (which depends on the enabled MultiMesh fields). Otherwise, an error message is printed and nothing is rendered. See also [method multimesh_get_buffer].
The per-instance data size and expected data order is:
- [codeblock]
+ [codeblock lang=text]
2D:
- Position: 8 floats (8 floats for Transform2D)
- Position + Vertex color: 12 floats (8 floats for Transform2D, 4 floats for Color)
@@ -4030,6 +4039,15 @@
The texture to use when the VRS mode is set to [constant RenderingServer.VIEWPORT_VRS_TEXTURE]. Equivalent to [member ProjectSettings.rendering/vrs/texture].
</description>
</method>
+ <method name="viewport_set_vrs_update_mode">
+ <return type="void" />
+ <param index="0" name="viewport" type="RID" />
+ <param index="1" name="mode" type="int" enum="RenderingServer.ViewportVRSUpdateMode" />
+ <description>
+ Sets the update mode for Variable Rate Shading (VRS) for the viewport. VRS requires the input texture to be converted to the format usable by the VRS method supported by the hardware. The update mode defines how often this happens. If the GPU does not support VRS, or VRS is not enabled, this property is ignored.
+ If set to [constant RenderingServer.VIEWPORT_VRS_UPDATE_ONCE], the input texture is copied once and the mode is changed to [constant RenderingServer.VIEWPORT_VRS_UPDATE_DISABLED].
+ </description>
+ </method>
<method name="visibility_notifier_create">
<return type="RID" />
<description>
@@ -4221,6 +4239,9 @@
<constant name="MAX_2D_DIRECTIONAL_LIGHTS" value="8">
The maximum number of directional lights that can be rendered at a given time in 2D.
</constant>
+ <constant name="MAX_MESH_SURFACES" value="256">
+ The maximum number of surfaces a mesh can have.
+ </constant>
<constant name="TEXTURE_LAYERED_2D_ARRAY" value="0" enum="TextureLayeredType">
Array of 2-dimensional textures (see [Texture2DArray]).
</constant>
@@ -4970,11 +4991,23 @@
Variable rate shading uses a texture. Note, for stereoscopic use a texture atlas with a texture for each view.
</constant>
<constant name="VIEWPORT_VRS_XR" value="2" enum="ViewportVRSMode">
- Variable rate shading texture is supplied by the primary [XRInterface].
+ Variable rate shading texture is supplied by the primary [XRInterface]. Note that this may override the update mode.
</constant>
<constant name="VIEWPORT_VRS_MAX" value="3" enum="ViewportVRSMode">
Represents the size of the [enum ViewportVRSMode] enum.
</constant>
+ <constant name="VIEWPORT_VRS_UPDATE_DISABLED" value="0" enum="ViewportVRSUpdateMode">
+ The input texture for variable rate shading will not be processed.
+ </constant>
+ <constant name="VIEWPORT_VRS_UPDATE_ONCE" value="1" enum="ViewportVRSUpdateMode">
+ The input texture for variable rate shading will be processed once.
+ </constant>
+ <constant name="VIEWPORT_VRS_UPDATE_ALWAYS" value="2" enum="ViewportVRSUpdateMode">
+ The input texture for variable rate shading will be processed each frame.
+ </constant>
+ <constant name="VIEWPORT_VRS_UPDATE_MAX" value="3" enum="ViewportVRSUpdateMode">
+ Represents the size of the [enum ViewportVRSUpdateMode] enum.
+ </constant>
<constant name="SKY_MODE_AUTOMATIC" value="0" enum="SkyMode">
Automatically selects the appropriate process mode based on your sky shader. If your shader uses [code]TIME[/code] or [code]POSITION[/code], this will use [constant SKY_MODE_REALTIME]. If your shader uses any of the [code]LIGHT_*[/code] variables or any custom uniforms, this uses [constant SKY_MODE_INCREMENTAL]. Otherwise, this defaults to [constant SKY_MODE_QUALITY].
</constant>
diff --git a/doc/classes/ResourceImporterCSVTranslation.xml b/doc/classes/ResourceImporterCSVTranslation.xml
index 122728e75a..578a79fdca 100644
--- a/doc/classes/ResourceImporterCSVTranslation.xml
+++ b/doc/classes/ResourceImporterCSVTranslation.xml
@@ -6,7 +6,7 @@
<description>
Comma-separated values are a plain text table storage format. The format's simplicity makes it easy to edit in any text editor or spreadsheet software. This makes it a common choice for game localization.
[b]Example CSV file:[/b]
- [codeblock]
+ [codeblock lang=text]
keys,en,es,ja
GREET,"Hello, friend!","Hola, amigo!",こんにちは
ASK,How are you?,Cómo está?,元気ですか
diff --git a/doc/classes/ResourceImporterWAV.xml b/doc/classes/ResourceImporterWAV.xml
index 5336c98d0f..d3dafb03b6 100644
--- a/doc/classes/ResourceImporterWAV.xml
+++ b/doc/classes/ResourceImporterWAV.xml
@@ -14,6 +14,7 @@
The compression mode to use on import.
[b]Disabled:[/b] Imports audio data without any compression. This results in the highest possible quality.
[b]RAM (Ima-ADPCM):[/b] Performs fast lossy compression on import. Low CPU cost, but quality is noticeably decreased compared to Ogg Vorbis or even MP3.
+ [b]QOA ([url=https://qoaformat.org/]Quite OK Audio[/url]):[/b] Performs lossy compression on import. CPU cost is slightly higher than IMA-ADPCM, but quality is much higher.
</member>
<member name="edit/loop_begin" type="int" setter="" getter="" default="0">
The begin loop point to use when [member edit/loop_mode] is [b]Forward[/b], [b]Ping-Pong[/b] or [b]Backward[/b]. This is set in seconds after the beginning of the audio file.
diff --git a/doc/classes/ResourceLoader.xml b/doc/classes/ResourceLoader.xml
index 95fbee4a24..1961ca2b0e 100644
--- a/doc/classes/ResourceLoader.xml
+++ b/doc/classes/ResourceLoader.xml
@@ -9,7 +9,7 @@
[b]Note:[/b] You have to import the files into the engine first to load them using [method load]. If you want to load [Image]s at run-time, you may use [method Image.load]. If you want to import audio files, you can use the snippet described in [member AudioStreamMP3.data].
</description>
<tutorials>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<methods>
<method name="add_resource_format_loader">
@@ -76,9 +76,10 @@
The registered [ResourceFormatLoader]s are queried sequentially to find the first one which can handle the file's extension, and then attempt loading. If loading fails, the remaining ResourceFormatLoaders are also attempted.
An optional [param type_hint] can be used to further specify the [Resource] type that should be handled by the [ResourceFormatLoader]. Anything that inherits from [Resource] can be used as a type hint, for example [Image].
The [param cache_mode] property defines whether and how the cache should be used or updated when loading the resource. See [enum CacheMode] for details.
- Returns an empty resource if no [ResourceFormatLoader] could handle the file.
+ Returns an empty resource if no [ResourceFormatLoader] could handle the file, and prints an error if no file is found at the specified path.
GDScript has a simplified [method @GDScript.load] built-in method which can be used in most situations, leaving the use of [ResourceLoader] for more advanced scenarios.
[b]Note:[/b] If [member ProjectSettings.editor/export/convert_text_resources_to_binary] is [code]true[/code], [method @GDScript.load] will not be able to read converted files in an exported project. If you rely on run-time loading of files present within the PCK, set [member ProjectSettings.editor/export/convert_text_resources_to_binary] to [code]false[/code].
+ [b]Note:[/b] Relative paths will be prefixed with [code]"res://"[/code] before loading, to avoid unexpected results make sure your paths are absolute.
</description>
</method>
<method name="load_threaded_get">
diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml
index b9a6b06fe3..24d2d26beb 100644
--- a/doc/classes/RichTextLabel.xml
+++ b/doc/classes/RichTextLabel.xml
@@ -12,8 +12,8 @@
</description>
<tutorials>
<link title="BBCode in RichTextLabel">$DOCS_URL/tutorials/ui/bbcode_in_richtextlabel.html</link>
- <link title="GUI Rich Text/BBcode Demo">https://godotengine.org/asset-library/asset/132</link>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="Rich Text Label with BBCode Demo">https://godotengine.org/asset-library/asset/2774</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<methods>
<method name="add_image">
@@ -249,6 +249,13 @@
[/codeblock]
</description>
</method>
+ <method name="invalidate_paragraph">
+ <return type="bool" />
+ <param index="0" name="paragraph" type="int" />
+ <description>
+ Invalidates [param paragraph] and all subsequent paragraphs cache.
+ </description>
+ </method>
<method name="is_menu_visible" qualifiers="const">
<return type="bool" />
<description>
@@ -328,7 +335,7 @@
<method name="push_cell">
<return type="void" />
<description>
- Adds a [code skip-lint][cell][/code] tag to the tag stack. Must be inside a [code skip-lint][table][/code] tag. See [method push_table] for details.
+ Adds a [code skip-lint][cell][/code] tag to the tag stack. Must be inside a [code skip-lint][table][/code] tag. See [method push_table] for details. Use [method set_table_column_expand] to set column expansion ratio, [method set_cell_border_color] to set cell border, [method set_cell_row_background_color] to set cell background, [method set_cell_size_override] to override cell size, and [method set_cell_padding] to set padding.
</description>
</method>
<method name="push_color">
@@ -485,7 +492,7 @@
<param index="1" name="inline_align" type="int" enum="InlineAlignment" default="0" />
<param index="2" name="align_to_row" type="int" default="-1" />
<description>
- Adds a [code skip-lint][table=columns,inline_align][/code] tag to the tag stack.
+ Adds a [code skip-lint][table=columns,inline_align][/code] tag to the tag stack. Use [method set_table_column_expand] to set column expansion ratio. Use [method push_cell] to add cells.
</description>
</method>
<method name="push_underline">
@@ -497,9 +504,11 @@
<method name="remove_paragraph">
<return type="bool" />
<param index="0" name="paragraph" type="int" />
+ <param index="1" name="no_invalidate" type="bool" default="false" />
<description>
Removes a paragraph of content from the label. Returns [code]true[/code] if the paragraph exists.
The [param paragraph] argument is the index of the paragraph to remove, it can take values in the interval [code][0, get_paragraph_count() - 1][/code].
+ If [param no_invalidate] is set to [code]true[/code], cache for the subsequent paragraphs is not invalidated. Use it for faster updates if deleted paragraph is fully self-contained (have no unclosed tags), or this call is part of the complex edit operation and [method invalidate_paragraph] will be called at the end of operation.
</description>
</method>
<method name="scroll_to_line">
diff --git a/doc/classes/RigidBody2D.xml b/doc/classes/RigidBody2D.xml
index 269ead1298..5661d1a276 100644
--- a/doc/classes/RigidBody2D.xml
+++ b/doc/classes/RigidBody2D.xml
@@ -11,15 +11,15 @@
[b]Note:[/b] Changing the 2D transform or [member linear_velocity] of a [RigidBody2D] very often may lead to some unpredictable behaviors. If you need to directly affect the body, prefer [method _integrate_forces] as it allows you to directly access the physics state.
</description>
<tutorials>
- <link title="2D Physics Platformer Demo">https://godotengine.org/asset-library/asset/119</link>
- <link title="Instancing Demo">https://godotengine.org/asset-library/asset/148</link>
+ <link title="2D Physics Platformer Demo">https://godotengine.org/asset-library/asset/2725</link>
+ <link title="Instancing Demo">https://godotengine.org/asset-library/asset/2716</link>
</tutorials>
<methods>
<method name="_integrate_forces" qualifiers="virtual">
<return type="void" />
<param index="0" name="state" type="PhysicsDirectBodyState2D" />
<description>
- Allows you to read and safely modify the simulation state for the object. Use this instead of [method Node._physics_process] if you need to directly change the body's [code]position[/code] or other physics properties. By default, it works in addition to the usual physics behavior, but [member custom_integrator] allows you to disable the default behavior and write custom force integration for a body.
+ Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it is called before the standard force integration, but the [member custom_integrator] property allows you to disable the standard force integration and do fully custom force integration for a body.
</description>
</method>
<method name="add_constant_central_force">
@@ -159,7 +159,8 @@
Continuous collision detection tries to predict where a moving body will collide instead of moving it and correcting its movement after collision. Continuous collision detection is slower, but more precise and misses fewer collisions with small, fast-moving objects. Raycasting and shapecasting methods are available. See [enum CCDMode] for details.
</member>
<member name="custom_integrator" type="bool" setter="set_use_custom_integrator" getter="is_using_custom_integrator" default="false">
- If [code]true[/code], internal force integration is disabled for this body. Aside from collision response, the body will only move as determined by the [method _integrate_forces] function.
+ If [code]true[/code], the standard force integration (like gravity or damping) will be disabled for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] method, if that virtual method is overridden.
+ Setting this property will call the method [method PhysicsServer2D.body_set_omit_force_integration] internally.
</member>
<member name="freeze" type="bool" setter="set_freeze_enabled" getter="is_freeze_enabled" default="false">
If [code]true[/code], the body is frozen. Gravity and forces are not applied anymore.
diff --git a/doc/classes/RigidBody3D.xml b/doc/classes/RigidBody3D.xml
index c507a7c39a..dae904e2a3 100644
--- a/doc/classes/RigidBody3D.xml
+++ b/doc/classes/RigidBody3D.xml
@@ -12,15 +12,15 @@
</description>
<tutorials>
<link title="Physics introduction">$DOCS_URL/tutorials/physics/physics_introduction.html</link>
- <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/524</link>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
+ <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/2752</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
</tutorials>
<methods>
<method name="_integrate_forces" qualifiers="virtual">
<return type="void" />
<param index="0" name="state" type="PhysicsDirectBodyState3D" />
<description>
- Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it works in addition to the usual physics behavior, but the [member custom_integrator] property allows you to disable the default behavior and do fully custom force integration for a body.
+ Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it is called before the standard force integration, but the [member custom_integrator] property allows you to disable the standard force integration and do fully custom force integration for a body.
</description>
</method>
<method name="add_constant_central_force">
@@ -166,7 +166,8 @@
Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided. Continuous collision detection is more precise, and misses fewer impacts by small, fast-moving objects. Not using continuous collision detection is faster to compute, but can miss small, fast-moving objects.
</member>
<member name="custom_integrator" type="bool" setter="set_use_custom_integrator" getter="is_using_custom_integrator" default="false">
- If [code]true[/code], internal force integration will be disabled (like gravity or air friction) for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] function, if defined.
+ If [code]true[/code], the standard force integration (like gravity or damping) will be disabled for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] method, if that virtual method is overridden.
+ Setting this property will call the method [method PhysicsServer3D.body_set_omit_force_integration] internally.
</member>
<member name="freeze" type="bool" setter="set_freeze_enabled" getter="is_freeze_enabled" default="false">
If [code]true[/code], the body is frozen. Gravity and forces are not applied anymore.
diff --git a/doc/classes/ScriptEditor.xml b/doc/classes/ScriptEditor.xml
index 2c88ecd675..43ee4dda60 100644
--- a/doc/classes/ScriptEditor.xml
+++ b/doc/classes/ScriptEditor.xml
@@ -34,6 +34,35 @@
Returns an array with all [Script] objects which are currently open in editor.
</description>
</method>
+ <method name="goto_help">
+ <return type="void" />
+ <param index="0" name="topic" type="String" />
+ <description>
+ Opens help for the given topic. The [param topic] is an encoded string that controls which class, method, constant, signal, annotation, property, or theme item should be focused.
+ The supported [param topic] formats include [code]class_name:class[/code], [code]class_method:class:method[/code], [code]class_constant:class:constant[/code], [code]class_signal:class:signal[/code], [code]class_annotation:class:@annotation[/code], [code]class_property:class:property[/code], and [code]class_theme_item:class:item[/code], where [code]class[/code] is the class name, [code]method[/code] is the method name, [code]constant[/code] is the constant name, [code]signal[/code] is the signal name, [code]annotation[/code] is the annotation name, [code]property[/code] is the property name, and [code]item[/code] is the theme item.
+ [b]Examples:[/b]
+ [codeblock]
+ # Shows help for the Node class.
+ class_name:Node
+ # Shows help for the global min function.
+ # Global objects are accessible in the `@GlobalScope` namespace, shown here.
+ class_method:@GlobalScope:min
+ # Shows help for get_viewport in the Node class.
+ class_method:Node:get_viewport
+ # Shows help for the Input constant MOUSE_BUTTON_MIDDLE.
+ class_constant:Input:MOUSE_BUTTON_MIDDLE
+ # Shows help for the BaseButton signal pressed.
+ class_signal:BaseButton:pressed
+ # Shows help for the CanvasItem property visible.
+ class_property:CanvasItem:visible
+ # Shows help for the GDScript annotation export.
+ # Annotations should be prefixed with the `@` symbol in the descriptor, as shown here.
+ class_annotation:@GDScript:@export
+ # Shows help for the GraphNode theme item named panel_selected.
+ class_theme_item:GraphNode:panel_selected
+ [/codeblock]
+ </description>
+ </method>
<method name="goto_line">
<return type="void" />
<param index="0" name="line_number" type="int" />
diff --git a/doc/classes/ScriptEditorBase.xml b/doc/classes/ScriptEditorBase.xml
index dca4fe9276..403608355a 100644
--- a/doc/classes/ScriptEditorBase.xml
+++ b/doc/classes/ScriptEditorBase.xml
@@ -71,6 +71,12 @@
Emitted when the user contextual goto and the item is in the same script.
</description>
</signal>
+ <signal name="request_save_previous_state">
+ <param index="0" name="line" type="int" />
+ <description>
+ Emitted when the user changes current script or moves caret by 10 or more columns within the same script.
+ </description>
+ </signal>
<signal name="search_in_files_requested">
<param index="0" name="text" type="String" />
<description>
diff --git a/doc/classes/ShapeCast2D.xml b/doc/classes/ShapeCast2D.xml
index d71c9ce13a..576bd62cc3 100644
--- a/doc/classes/ShapeCast2D.xml
+++ b/doc/classes/ShapeCast2D.xml
@@ -48,6 +48,7 @@
<return type="float" />
<description>
The fraction from the [ShapeCast2D]'s origin to its [member target_position] (between 0 and 1) of how far the shape must move to trigger a collision.
+ In ideal conditions this would be the same as [method get_closest_collision_safe_fraction], however shape casting is calculated in discrete steps, so the precise point of collision can occur between two calculated positions.
</description>
</method>
<method name="get_collider" qualifiers="const">
diff --git a/doc/classes/ShapeCast3D.xml b/doc/classes/ShapeCast3D.xml
index ff057e8c70..2c6efe2ebe 100644
--- a/doc/classes/ShapeCast3D.xml
+++ b/doc/classes/ShapeCast3D.xml
@@ -48,6 +48,7 @@
<return type="float" />
<description>
The fraction from the [ShapeCast3D]'s origin to its [member target_position] (between 0 and 1) of how far the shape must move to trigger a collision.
+ In ideal conditions this would be the same as [method get_closest_collision_safe_fraction], however shape casting is calculated in discrete steps, so the precise point of collision can occur between two calculated positions.
</description>
</method>
<method name="get_collider" qualifiers="const">
diff --git a/doc/classes/Skeleton3D.xml b/doc/classes/Skeleton3D.xml
index 17c93af652..610550d8bd 100644
--- a/doc/classes/Skeleton3D.xml
+++ b/doc/classes/Skeleton3D.xml
@@ -9,8 +9,7 @@
Note that "global pose" below refers to the overall transform of the bone with respect to skeleton, so it is not the actual global/world transform of the bone.
</description>
<tutorials>
- <link title="3D Inverse Kinematics Demo">https://godotengine.org/asset-library/asset/523</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="add_bone">
@@ -42,7 +41,7 @@
<return type="int" />
<param index="0" name="name" type="String" />
<description>
- Returns the bone index that matches [param name] as its name.
+ Returns the bone index that matches [param name] as its name. Returns [code]-1[/code] if no bone with this name exists.
</description>
</method>
<method name="force_update_all_bone_transforms" deprecated="This method should only be called internally.">
@@ -253,7 +252,7 @@
<param index="1" name="pose" type="Transform3D" />
<description>
Sets the global pose transform, [param pose], for the bone at [param bone_idx].
- [b]Note:[/b] If other bone poses have been changed, this method executes an update process and will cause performance to deteriorate. If you know that multiple global poses will be applied, consider using [method set_bone_pose] with precalculation.
+ [b]Note:[/b] If other bone poses have been changed, this method executes a dirty poses recalculation and will cause performance to deteriorate. If you know that multiple global poses will be applied, consider using [method set_bone_pose] with precalculation.
</description>
</method>
<method name="set_bone_global_pose_override" deprecated="">
@@ -356,15 +355,10 @@
<description>
</description>
</signal>
- <signal name="bone_pose_changed">
- <param index="0" name="bone_idx" type="int" />
- <description>
- Emitted when the bone at [param bone_idx] changes its transform/pose. This can be used to update other nodes that rely on bone positions.
- </description>
- </signal>
<signal name="pose_updated">
<description>
- Emitted when the pose is updated, after [constant NOTIFICATION_UPDATE_SKELETON] is received.
+ Emitted when the pose is updated.
+ [b]Note:[/b] During the update process, this signal is not fired, so modification by [SkeletonModifier3D] is not detected.
</description>
</signal>
<signal name="show_rest_only_changed">
@@ -372,11 +366,16 @@
Emitted when the value of [member show_rest_only] changes.
</description>
</signal>
+ <signal name="skeleton_updated">
+ <description>
+ Emitted when the final pose has been calculated will be applied to the skin in the update process.
+ This means that all [SkeletonModifier3D] processing is complete. In order to detect the completion of the processing of each [SkeletonModifier3D], use [signal SkeletonModifier3D.modification_processed].
+ </description>
+ </signal>
</signals>
<constants>
<constant name="NOTIFICATION_UPDATE_SKELETON" value="50">
- Notification received when this skeleton's pose needs to be updated.
- This notification is received [i]before[/i] the related [signal pose_updated] signal.
+ Notification received when this skeleton's pose needs to be updated. In that case, this is called only once per frame in a deferred process.
</constant>
<constant name="MODIFIER_CALLBACK_MODE_PROCESS_PHYSICS" value="0" enum="ModifierCallbackModeProcess">
Set a flag to process modification during physics frames (see [constant Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS]).
diff --git a/doc/classes/SkeletonIK3D.xml b/doc/classes/SkeletonIK3D.xml
index 46b3d79795..4858a6ce22 100644
--- a/doc/classes/SkeletonIK3D.xml
+++ b/doc/classes/SkeletonIK3D.xml
@@ -26,7 +26,6 @@
[/codeblock]
</description>
<tutorials>
- <link title="3D Inverse Kinematics Demo">https://godotengine.org/asset-library/asset/523</link>
</tutorials>
<methods>
<method name="get_parent_skeleton" qualifiers="const">
@@ -56,6 +55,9 @@
</method>
</methods>
<members>
+ <member name="interpolation" type="float" setter="set_interpolation" getter="get_interpolation" deprecated="Use [member SkeletonModifier3D.influence] instead.">
+ Interpolation value for how much the IK results are applied to the current skeleton bone chain. A value of [code]1.0[/code] will overwrite all skeleton bone transforms completely while a value of [code]0.0[/code] will visually disable the SkeletonIK.
+ </member>
<member name="magnet" type="Vector3" setter="set_magnet_position" getter="get_magnet_position" default="Vector3(0, 0, 0)">
Secondary target position (first is [member target] property or [member target_node]) for the IK chain. Use magnet position (pole target) to control the bending of the IK chain. Only works if the bone chain has more than 2 bones. The middle chain bone position will be linearly interpolated with the magnet position.
</member>
diff --git a/doc/classes/SkeletonModifier3D.xml b/doc/classes/SkeletonModifier3D.xml
index fab33750ea..c0b1b6fd53 100644
--- a/doc/classes/SkeletonModifier3D.xml
+++ b/doc/classes/SkeletonModifier3D.xml
@@ -6,9 +6,19 @@
<description>
[SkeletonModifier3D] retrieves a target [Skeleton3D] by having a [Skeleton3D] parent.
If there is [AnimationMixer], modification always performs after playback process of the [AnimationMixer].
+ This node should be used to implement custom IK solvers, constraints, or skeleton physics
</description>
<tutorials>
</tutorials>
+ <methods>
+ <method name="_process_modification" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ Override this virtual method to implement a custom skeleton modifier. You should do things like get the [Skeleton3D]'s current pose and apply the pose here.
+ [method _process_modification] must not apply [member influence] to bone poses because the [Skeleton3D] automatically applies influence to all bone poses set by the modifier.
+ </description>
+ </method>
+ </methods>
<members>
<member name="active" type="bool" setter="set_active" getter="is_active" default="true">
If [code]true[/code], the [SkeletonModifier3D] will be processing.
diff --git a/doc/classes/SkeletonProfileHumanoid.xml b/doc/classes/SkeletonProfileHumanoid.xml
index 5539d1d980..9c9cc2d8c7 100644
--- a/doc/classes/SkeletonProfileHumanoid.xml
+++ b/doc/classes/SkeletonProfileHumanoid.xml
@@ -6,7 +6,7 @@
<description>
A [SkeletonProfile] as a preset that is optimized for the human form. This exists for standardization, so all parameters are read-only.
A humanoid skeleton profile contains 54 bones divided in 4 groups: [code]"Body"[/code], [code]"Face"[/code], [code]"LeftHand"[/code], and [code]"RightHand"[/code]. It is structured as follows:
- [codeblock]
+ [codeblock lang=text]
Root
└─ Hips
├─ LeftUpperLeg
diff --git a/doc/classes/SkinReference.xml b/doc/classes/SkinReference.xml
index 466dbe2500..cb0c44cefa 100644
--- a/doc/classes/SkinReference.xml
+++ b/doc/classes/SkinReference.xml
@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="SkinReference" inherits="RefCounted" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ A reference-counted holder object for a skeleton RID used in the [RenderingServer].
</brief_description>
<description>
+ An internal object containing a mapping from a [Skin] used within the context of a particular [MeshInstance3D] to refer to the skeleton's [RID] in the RenderingServer.
+ See also [method MeshInstance3D.get_skin_reference] and [method RenderingServer.instance_attach_skeleton].
+ Note that despite the similar naming, the skeleton RID used in the [RenderingServer] does not have a direct one-to-one correspondence to a [Skeleton3D] node.
+ In particular, a [Skeleton3D] node with no [MeshInstance3D] children may be unknown to the [RenderingServer].
+ On the other hand, a [Skeleton3D] with multiple [MeshInstance3D] nodes which each have different [member MeshInstance3D.skin] objects may have multiple SkinReference instances (and hence, multiple skeleton [RID]s).
</description>
<tutorials>
</tutorials>
@@ -10,11 +16,14 @@
<method name="get_skeleton" qualifiers="const">
<return type="RID" />
<description>
+ Returns the [RID] owned by this SkinReference, as returned by [method RenderingServer.skeleton_create].
</description>
</method>
<method name="get_skin" qualifiers="const">
<return type="Skin" />
<description>
+ Returns the [Skin] connected to this SkinReference. In the case of [MeshInstance3D] with no [member MeshInstance3D.skin] assigned, this will reference an internal default [Skin] owned by that [MeshInstance3D].
+ Note that a single [Skin] may have more than one [SkinReference] in the case that it is shared by meshes across multiple [Skeleton3D] nodes.
</description>
</method>
</methods>
diff --git a/doc/classes/SliderJoint3D.xml b/doc/classes/SliderJoint3D.xml
index 49b362041b..8930514492 100644
--- a/doc/classes/SliderJoint3D.xml
+++ b/doc/classes/SliderJoint3D.xml
@@ -13,6 +13,7 @@
<return type="float" />
<param index="0" name="param" type="int" enum="SliderJoint3D.Param" />
<description>
+ Returns the value of the given parameter (see [enum Param] constants).
</description>
</method>
<method name="set_param">
@@ -20,6 +21,7 @@
<param index="0" name="param" type="int" enum="SliderJoint3D.Param" />
<param index="1" name="value" type="float" />
<description>
+ Assigns [param value] to the given parameter (see [enum Param] constants).
</description>
</method>
</methods>
@@ -96,70 +98,70 @@
</members>
<constants>
<constant name="PARAM_LINEAR_LIMIT_UPPER" value="0" enum="Param">
- The maximum difference between the pivot points on their X axis before damping happens.
+ Constant for accessing [member linear_limit/upper_distance]. The maximum difference between the pivot points on their X axis before damping happens.
</constant>
<constant name="PARAM_LINEAR_LIMIT_LOWER" value="1" enum="Param">
- The minimum difference between the pivot points on their X axis before damping happens.
+ Constant for accessing [member linear_limit/lower_distance]. The minimum difference between the pivot points on their X axis before damping happens.
</constant>
<constant name="PARAM_LINEAR_LIMIT_SOFTNESS" value="2" enum="Param">
- A factor applied to the movement across the slider axis once the limits get surpassed. The lower, the slower the movement.
+ Constant for accessing [member linear_limit/softness]. A factor applied to the movement across the slider axis once the limits get surpassed. The lower, the slower the movement.
</constant>
<constant name="PARAM_LINEAR_LIMIT_RESTITUTION" value="3" enum="Param">
- The amount of restitution once the limits are surpassed. The lower, the more velocity-energy gets lost.
+ Constant for accessing [member linear_limit/restitution]. The amount of restitution once the limits are surpassed. The lower, the more velocity-energy gets lost.
</constant>
<constant name="PARAM_LINEAR_LIMIT_DAMPING" value="4" enum="Param">
- The amount of damping once the slider limits are surpassed.
+ Constant for accessing [member linear_limit/damping]. The amount of damping once the slider limits are surpassed.
</constant>
<constant name="PARAM_LINEAR_MOTION_SOFTNESS" value="5" enum="Param">
- A factor applied to the movement across the slider axis as long as the slider is in the limits. The lower, the slower the movement.
+ Constant for accessing [member linear_motion/softness]. A factor applied to the movement across the slider axis as long as the slider is in the limits. The lower, the slower the movement.
</constant>
<constant name="PARAM_LINEAR_MOTION_RESTITUTION" value="6" enum="Param">
- The amount of restitution inside the slider limits.
+ Constant for accessing [member linear_motion/restitution]. The amount of restitution inside the slider limits.
</constant>
<constant name="PARAM_LINEAR_MOTION_DAMPING" value="7" enum="Param">
- The amount of damping inside the slider limits.
+ Constant for accessing [member linear_motion/damping]. The amount of damping inside the slider limits.
</constant>
<constant name="PARAM_LINEAR_ORTHOGONAL_SOFTNESS" value="8" enum="Param">
- A factor applied to the movement across axes orthogonal to the slider.
+ Constant for accessing [member linear_ortho/softness]. A factor applied to the movement across axes orthogonal to the slider.
</constant>
<constant name="PARAM_LINEAR_ORTHOGONAL_RESTITUTION" value="9" enum="Param">
- The amount of restitution when movement is across axes orthogonal to the slider.
+ Constant for accessing [member linear_motion/restitution]. The amount of restitution when movement is across axes orthogonal to the slider.
</constant>
<constant name="PARAM_LINEAR_ORTHOGONAL_DAMPING" value="10" enum="Param">
- The amount of damping when movement is across axes orthogonal to the slider.
+ Constant for accessing [member linear_motion/damping]. The amount of damping when movement is across axes orthogonal to the slider.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_UPPER" value="11" enum="Param">
- The upper limit of rotation in the slider.
+ Constant for accessing [member angular_limit/upper_angle]. The upper limit of rotation in the slider.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_LOWER" value="12" enum="Param">
- The lower limit of rotation in the slider.
+ Constant for accessing [member angular_limit/lower_angle]. The lower limit of rotation in the slider.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_SOFTNESS" value="13" enum="Param">
- A factor applied to the all rotation once the limit is surpassed.
+ Constant for accessing [member angular_limit/softness]. A factor applied to the all rotation once the limit is surpassed.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_RESTITUTION" value="14" enum="Param">
- The amount of restitution of the rotation when the limit is surpassed.
+ Constant for accessing [member angular_limit/restitution]. The amount of restitution of the rotation when the limit is surpassed.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_DAMPING" value="15" enum="Param">
- The amount of damping of the rotation when the limit is surpassed.
+ Constant for accessing [member angular_limit/damping]. The amount of damping of the rotation when the limit is surpassed.
</constant>
<constant name="PARAM_ANGULAR_MOTION_SOFTNESS" value="16" enum="Param">
- A factor applied to the all rotation in the limits.
+ Constant for accessing [member angular_motion/softness]. A factor applied to the all rotation in the limits.
</constant>
<constant name="PARAM_ANGULAR_MOTION_RESTITUTION" value="17" enum="Param">
- The amount of restitution of the rotation in the limits.
+ Constant for accessing [member angular_motion/restitution]. The amount of restitution of the rotation in the limits.
</constant>
<constant name="PARAM_ANGULAR_MOTION_DAMPING" value="18" enum="Param">
- The amount of damping of the rotation in the limits.
+ Constant for accessing [member angular_motion/damping]. The amount of damping of the rotation in the limits.
</constant>
<constant name="PARAM_ANGULAR_ORTHOGONAL_SOFTNESS" value="19" enum="Param">
- A factor applied to the all rotation across axes orthogonal to the slider.
+ Constant for accessing [member angular_ortho/softness]. A factor applied to the all rotation across axes orthogonal to the slider.
</constant>
<constant name="PARAM_ANGULAR_ORTHOGONAL_RESTITUTION" value="20" enum="Param">
- The amount of restitution of the rotation across axes orthogonal to the slider.
+ Constant for accessing [member angular_ortho/restitution]. The amount of restitution of the rotation across axes orthogonal to the slider.
</constant>
<constant name="PARAM_ANGULAR_ORTHOGONAL_DAMPING" value="21" enum="Param">
- The amount of damping of the rotation across axes orthogonal to the slider.
+ Constant for accessing [member angular_ortho/damping]. The amount of damping of the rotation across axes orthogonal to the slider.
</constant>
<constant name="PARAM_MAX" value="22" enum="Param">
Represents the size of the [enum Param] enum.
diff --git a/doc/classes/SoftBody3D.xml b/doc/classes/SoftBody3D.xml
index a4d80a7c3e..195196b78c 100644
--- a/doc/classes/SoftBody3D.xml
+++ b/doc/classes/SoftBody3D.xml
@@ -5,6 +5,7 @@
</brief_description>
<description>
A deformable 3D physics mesh. Used to create elastic or deformable objects such as cloth, rubber, or other flexible materials.
+ Additionally, [SoftBody3D] is subject to wind forces defined in [Area3D] (see [member Area3D.wind_source_path], [member Area3D.wind_force_magnitude], and [member Area3D.wind_attenuation_factor]).
[b]Note:[/b] There are many known bugs in [SoftBody3D]. Therefore, it's not recommended to use them for things that can affect gameplay (such as trampolines).
</description>
<tutorials>
diff --git a/doc/classes/SphereShape3D.xml b/doc/classes/SphereShape3D.xml
index 313b05dff4..4b14c535dd 100644
--- a/doc/classes/SphereShape3D.xml
+++ b/doc/classes/SphereShape3D.xml
@@ -8,7 +8,7 @@
[b]Performance:[/b] [SphereShape3D] is fast to check collisions against. It is faster than [BoxShape3D], [CapsuleShape3D], and [CylinderShape3D].
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
</tutorials>
<members>
<member name="radius" type="float" setter="set_radius" getter="get_radius" default="0.5">
diff --git a/doc/classes/SpotLight3D.xml b/doc/classes/SpotLight3D.xml
index ba70edb933..8d2177d3fd 100644
--- a/doc/classes/SpotLight3D.xml
+++ b/doc/classes/SpotLight3D.xml
@@ -11,7 +11,7 @@
<tutorials>
<link title="3D lights and shadows">$DOCS_URL/tutorials/3d/lights_and_shadows.html</link>
<link title="Faking global illumination">$DOCS_URL/tutorials/3d/global_illumination/faking_global_illumination.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<members>
<member name="shadow_bias" type="float" setter="set_param" getter="get_param" overrides="Light3D" default="0.03" />
diff --git a/doc/classes/Sprite2D.xml b/doc/classes/Sprite2D.xml
index 8dcf286b3a..10ac4b0fcc 100644
--- a/doc/classes/Sprite2D.xml
+++ b/doc/classes/Sprite2D.xml
@@ -7,7 +7,7 @@
A node that displays a 2D texture. The texture displayed can be a region from a larger atlas texture, or a frame from a sprite sheet animation.
</description>
<tutorials>
- <link title="Instancing Demo">https://godotengine.org/asset-library/asset/148</link>
+ <link title="Instancing Demo">https://godotengine.org/asset-library/asset/2716</link>
</tutorials>
<methods>
<method name="get_rect" qualifiers="const">
diff --git a/doc/classes/StaticBody3D.xml b/doc/classes/StaticBody3D.xml
index 81eda8505b..a2a9a97bc1 100644
--- a/doc/classes/StaticBody3D.xml
+++ b/doc/classes/StaticBody3D.xml
@@ -9,9 +9,9 @@
[StaticBody3D] is useful for completely static objects like floors and walls, as well as moving surfaces like conveyor belts and circular revolving platforms (by using [member constant_linear_velocity] and [member constant_angular_velocity]).
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="constant_angular_velocity" type="Vector3" setter="set_constant_angular_velocity" getter="get_constant_angular_velocity" default="Vector3(0, 0, 0)">
diff --git a/doc/classes/StatusIndicator.xml b/doc/classes/StatusIndicator.xml
index e1fcc35ad7..688840b17f 100644
--- a/doc/classes/StatusIndicator.xml
+++ b/doc/classes/StatusIndicator.xml
@@ -8,10 +8,22 @@
</description>
<tutorials>
</tutorials>
+ <methods>
+ <method name="get_rect" qualifiers="const">
+ <return type="Rect2" />
+ <description>
+ Returns the status indicator rectangle in screen coordinates. If this status indicator is not visible, returns an empty [Rect2].
+ </description>
+ </method>
+ </methods>
<members>
- <member name="icon" type="Image" setter="set_icon" getter="get_icon">
+ <member name="icon" type="Texture2D" setter="set_icon" getter="get_icon">
Status indicator icon.
</member>
+ <member name="menu" type="NodePath" setter="set_menu" getter="get_menu" default="NodePath(&quot;&quot;)">
+ Status indicator native popup menu. If this is set, the [signal pressed] signal is not emitted.
+ [b]Note:[/b] Native popup is only supported if [NativeMenu] supports [constant NativeMenu.FEATURE_POPUP_MENU] feature.
+ </member>
<member name="tooltip" type="String" setter="set_tooltip" getter="get_tooltip" default="&quot;&quot;">
Status indicator tooltip.
</member>
diff --git a/doc/classes/String.xml b/doc/classes/String.xml
index 7592342602..450e483f69 100644
--- a/doc/classes/String.xml
+++ b/doc/classes/String.xml
@@ -126,7 +126,7 @@
[/codeblock]
</description>
</method>
- <method name="contains" qualifiers="const" keywords="includes, has">
+ <method name="contains" qualifiers="const">
<return type="bool" />
<param index="0" name="what" type="String" />
<description>
@@ -142,7 +142,15 @@
GD.Print("team".Contains("I")); // Prints false
[/csharp]
[/codeblocks]
- If you need to know where [param what] is within the string, use [method find].
+ If you need to know where [param what] is within the string, use [method find]. See also [method containsn].
+ </description>
+ </method>
+ <method name="containsn" qualifiers="const">
+ <return type="bool" />
+ <param index="0" name="what" type="String" />
+ <description>
+ Returns [code]true[/code] if the string contains [param what], [b]ignoring case[/b].
+ If you need to know where [param what] is within the string, use [method findn]. See also [method contains].
</description>
</method>
<method name="count" qualifiers="const">
@@ -188,7 +196,7 @@
<return type="int" />
<param index="0" name="to" type="String" />
<description>
- Like [method naturalcasecmp_to] but prioritises strings that begin with periods ([code].[/code]) and underscores ([code]_[/code]) before any other character. Useful when sorting folders or file names.
+ Like [method naturalcasecmp_to] but prioritizes strings that begin with periods ([code].[/code]) and underscores ([code]_[/code]) before any other character. Useful when sorting folders or file names.
To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method filenocasecmp_to], [method naturalcasecmp_to], and [method casecmp_to].
</description>
</method>
@@ -196,7 +204,7 @@
<return type="int" />
<param index="0" name="to" type="String" />
<description>
- Like [method naturalnocasecmp_to] but prioritises strings that begin with periods ([code].[/code]) and underscores ([code]_[/code]) before any other character. Useful when sorting folders or file names.
+ Like [method naturalnocasecmp_to] but prioritizes strings that begin with periods ([code].[/code]) and underscores ([code]_[/code]) before any other character. Useful when sorting folders or file names.
To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method filecasecmp_to], [method naturalnocasecmp_to], and [method nocasecmp_to].
</description>
</method>
@@ -255,6 +263,13 @@
print("User {id} is {name}.".format([["id", 42], ["name", "Godot"]]))
[/codeblock]
See also the [url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_format_string.html]GDScript format string[/url] tutorial.
+ [b]Note:[/b] The replacement of placeholders is not done all at once, instead each placeholder is replaced in the order they are passed, this means that if one of the replacement strings contains a key it will also be replaced. This can be very powerful, but can also cause unexpected results if you are not careful. If you do not need to perform replacement in the replacement strings, make sure your replacements do not contain placeholders to ensure reliable results.
+ [codeblock]
+ print("{0} {1}".format(["{1}", "x"])) # Prints "x x".
+ print("{0} {1}".format(["x", "{0}"])) # Prints "x {0}".
+ print("{foo} {bar}".format({"foo": "{bar}", "bar": "baz"})) # Prints "baz baz".
+ print("{foo} {bar}".format({"bar": "baz", "foo": "{bar}"})) # Prints "{bar} baz".
+ [/codeblock]
[b]Note:[/b] In C#, it's recommended to [url=https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated]interpolate strings with "$"[/url], instead.
</description>
</method>
@@ -740,7 +755,7 @@
<method name="reverse" qualifiers="const">
<return type="String" />
<description>
- Returns the copy of this string in reverse order.
+ Returns the copy of this string in reverse order. This operation works on unicode codepoints, rather than sequences of codepoints, and may break things like compound letters or emojis.
</description>
</method>
<method name="rfind" qualifiers="const">
diff --git a/doc/classes/StringName.xml b/doc/classes/StringName.xml
index e837b65199..76586b7968 100644
--- a/doc/classes/StringName.xml
+++ b/doc/classes/StringName.xml
@@ -126,7 +126,15 @@
GD.Print("team".Contains("I")); // Prints false
[/csharp]
[/codeblocks]
- If you need to know where [param what] is within the string, use [method find].
+ If you need to know where [param what] is within the string, use [method find]. See also [method containsn].
+ </description>
+ </method>
+ <method name="containsn" qualifiers="const">
+ <return type="bool" />
+ <param index="0" name="what" type="String" />
+ <description>
+ Returns [code]true[/code] if the string contains [param what], [b]ignoring case[/b].
+ If you need to know where [param what] is within the string, use [method findn]. See also [method contains].
</description>
</method>
<method name="count" qualifiers="const">
@@ -172,7 +180,7 @@
<return type="int" />
<param index="0" name="to" type="String" />
<description>
- Like [method naturalcasecmp_to] but prioritises strings that begin with periods ([code].[/code]) and underscores ([code]_[/code]) before any other character. Useful when sorting folders or file names.
+ Like [method naturalcasecmp_to] but prioritizes strings that begin with periods ([code].[/code]) and underscores ([code]_[/code]) before any other character. Useful when sorting folders or file names.
To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method filenocasecmp_to], [method naturalcasecmp_to], and [method casecmp_to].
</description>
</method>
@@ -180,7 +188,7 @@
<return type="int" />
<param index="0" name="to" type="String" />
<description>
- Like [method naturalnocasecmp_to] but prioritises strings that begin with periods ([code].[/code]) and underscores ([code]_[/code]) before any other character. Useful when sorting folders or file names.
+ Like [method naturalnocasecmp_to] but prioritizes strings that begin with periods ([code].[/code]) and underscores ([code]_[/code]) before any other character. Useful when sorting folders or file names.
To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method filecasecmp_to], [method naturalnocasecmp_to], and [method nocasecmp_to].
</description>
</method>
@@ -648,7 +656,7 @@
<method name="reverse" qualifiers="const">
<return type="String" />
<description>
- Returns the copy of this string in reverse order.
+ Returns the copy of this string in reverse order. This operation works on unicode codepoints, rather than sequences of codepoints, and may break things like compound letters or emojis.
</description>
</method>
<method name="rfind" qualifiers="const">
diff --git a/doc/classes/StyleBoxFlat.xml b/doc/classes/StyleBoxFlat.xml
index 2c3908a72c..181e1ff77a 100644
--- a/doc/classes/StyleBoxFlat.xml
+++ b/doc/classes/StyleBoxFlat.xml
@@ -7,13 +7,13 @@
By configuring various properties of this style box, you can achieve many common looks without the need of a texture. This includes optionally rounded borders, antialiasing, shadows, and skew.
Setting corner radius to high values is allowed. As soon as corners overlap, the stylebox will switch to a relative system.
[b]Example:[/b]
- [codeblock]
+ [codeblock lang=text]
height = 30
corner_radius_top_left = 50
corner_radius_bottom_left = 100
[/codeblock]
The relative system now would take the 1:2 ratio of the two left corners to calculate the actual corner width. Both corners added will [b]never[/b] be more than the height. Result:
- [codeblock]
+ [codeblock lang=text]
corner_radius_top_left: 10
corner_radius_bottom_left: 20
[/codeblock]
diff --git a/doc/classes/SubViewport.xml b/doc/classes/SubViewport.xml
index 1a7a4f6e96..605cf949c1 100644
--- a/doc/classes/SubViewport.xml
+++ b/doc/classes/SubViewport.xml
@@ -10,12 +10,12 @@
<tutorials>
<link title="Using Viewports">$DOCS_URL/tutorials/rendering/viewports.html</link>
<link title="Viewport and canvas transforms">$DOCS_URL/tutorials/2d/2d_transforms.html</link>
- <link title="GUI in 3D Demo">https://godotengine.org/asset-library/asset/127</link>
- <link title="3D in 2D Demo">https://godotengine.org/asset-library/asset/128</link>
- <link title="2D in 3D Demo">https://godotengine.org/asset-library/asset/129</link>
- <link title="Screen Capture Demo">https://godotengine.org/asset-library/asset/130</link>
- <link title="Dynamic Split Screen Demo">https://godotengine.org/asset-library/asset/541</link>
- <link title="3D Viewport Scaling Demo">https://godotengine.org/asset-library/asset/586</link>
+ <link title="GUI in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2807</link>
+ <link title="3D in 2D Viewport Demo">https://godotengine.org/asset-library/asset/2804</link>
+ <link title="2D in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2803</link>
+ <link title="Screen Capture Demo">https://godotengine.org/asset-library/asset/2808</link>
+ <link title="Dynamic Split Screen Demo">https://godotengine.org/asset-library/asset/2806</link>
+ <link title="3D Resolution Scaling Demo">https://godotengine.org/asset-library/asset/2805</link>
</tutorials>
<members>
<member name="render_target_clear_mode" type="int" setter="set_clear_mode" getter="get_clear_mode" enum="SubViewport.ClearMode" default="0">
diff --git a/doc/classes/SurfaceTool.xml b/doc/classes/SurfaceTool.xml
index 094275c349..a8bd068b1c 100644
--- a/doc/classes/SurfaceTool.xml
+++ b/doc/classes/SurfaceTool.xml
@@ -29,7 +29,7 @@
</description>
<tutorials>
<link title="Using the SurfaceTool">$DOCS_URL/tutorials/3d/procedural_geometry/surfacetool.html</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<methods>
<method name="add_index">
@@ -93,7 +93,7 @@
<method name="commit_to_arrays">
<return type="Array" />
<description>
- Commits the data to the same format used by [method ArrayMesh.add_surface_from_arrays]. This way you can further process the mesh data using the [ArrayMesh] API.
+ Commits the data to the same format used by [method ArrayMesh.add_surface_from_arrays], [method ImporterMesh.add_surface], and [method create_from_arrays]. This way you can further process the mesh data using the [ArrayMesh] or [ImporterMesh] APIs.
</description>
</method>
<method name="create_from">
@@ -104,6 +104,14 @@
Creates a vertex array from an existing [Mesh].
</description>
</method>
+ <method name="create_from_arrays">
+ <return type="void" />
+ <param index="0" name="arrays" type="Array" />
+ <param index="1" name="primitive_type" type="int" enum="Mesh.PrimitiveType" default="3" />
+ <description>
+ Creates this SurfaceTool from existing vertex arrays such as returned by [method commit_to_arrays], [method Mesh.surface_get_arrays], [method Mesh.surface_get_blend_shape_arrays], [method ImporterMesh.get_surface_arrays], and [method ImporterMesh.get_surface_blend_shape_arrays]. [param primitive_type] controls the type of mesh data, defaulting to [constant Mesh.PRIMITIVE_TRIANGLES].
+ </description>
+ </method>
<method name="create_from_blend_shape">
<return type="void" />
<param index="0" name="existing" type="Mesh" />
diff --git a/doc/classes/TabBar.xml b/doc/classes/TabBar.xml
index a2beef81eb..d080294c1a 100644
--- a/doc/classes/TabBar.xml
+++ b/doc/classes/TabBar.xml
@@ -111,6 +111,13 @@
Returns the title of the tab at index [param tab_idx].
</description>
</method>
+ <method name="get_tab_tooltip" qualifiers="const">
+ <return type="String" />
+ <param index="0" name="tab_idx" type="int" />
+ <description>
+ Returns the tooltip text of the tab at index [param tab_idx].
+ </description>
+ </method>
<method name="is_tab_disabled" qualifiers="const">
<return type="bool" />
<param index="0" name="tab_idx" type="int" />
@@ -224,6 +231,15 @@
Sets a [param title] for the tab at index [param tab_idx].
</description>
</method>
+ <method name="set_tab_tooltip">
+ <return type="void" />
+ <param index="0" name="tab_idx" type="int" />
+ <param index="1" name="tooltip" type="String" />
+ <description>
+ Sets a [param tooltip] for tab at index [param tab_idx].
+ [b]Note:[/b] By default, if the [param tooltip] is empty and the tab text is truncated (not all characters fit into the tab), the title will be displayed as a tooltip. To hide the tooltip, assign [code]" "[/code] as the [param tooltip] text.
+ </description>
+ </method>
</methods>
<members>
<member name="clip_tabs" type="bool" setter="set_clip_tabs" getter="get_clip_tabs" default="true">
diff --git a/doc/classes/TabContainer.xml b/doc/classes/TabContainer.xml
index b0e3f67791..090afa0220 100644
--- a/doc/classes/TabContainer.xml
+++ b/doc/classes/TabContainer.xml
@@ -64,6 +64,13 @@
Returns the [Texture2D] for the tab at index [param tab_idx] or [code]null[/code] if the tab has no [Texture2D].
</description>
</method>
+ <method name="get_tab_icon_max_width" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="tab_idx" type="int" />
+ <description>
+ Returns the maximum allowed width of the icon for the tab at index [param tab_idx].
+ </description>
+ </method>
<method name="get_tab_idx_at_point" qualifiers="const">
<return type="int" />
<param index="0" name="point" type="Vector2" />
@@ -92,6 +99,13 @@
Returns the title of the tab at index [param tab_idx]. Tab titles default to the name of the indexed child node, but this can be overridden with [method set_tab_title].
</description>
</method>
+ <method name="get_tab_tooltip" qualifiers="const">
+ <return type="String" />
+ <param index="0" name="tab_idx" type="int" />
+ <description>
+ Returns the tooltip text of the tab at index [param tab_idx].
+ </description>
+ </method>
<method name="is_tab_disabled" qualifiers="const">
<return type="bool" />
<param index="0" name="tab_idx" type="int" />
@@ -157,6 +171,14 @@
Sets an icon for the tab at index [param tab_idx].
</description>
</method>
+ <method name="set_tab_icon_max_width">
+ <return type="void" />
+ <param index="0" name="tab_idx" type="int" />
+ <param index="1" name="width" type="int" />
+ <description>
+ Sets the maximum allowed width of the icon for the tab at index [param tab_idx]. This limit is applied on top of the default size of the icon and on top of [theme_item icon_max_width]. The height is adjusted according to the icon's ratio.
+ </description>
+ </method>
<method name="set_tab_metadata">
<return type="void" />
<param index="0" name="tab_idx" type="int" />
@@ -173,6 +195,15 @@
Sets a custom title for the tab at index [param tab_idx] (tab titles default to the name of the indexed child node). Set it back to the child's name to make the tab default to it again.
</description>
</method>
+ <method name="set_tab_tooltip">
+ <return type="void" />
+ <param index="0" name="tab_idx" type="int" />
+ <param index="1" name="tooltip" type="String" />
+ <description>
+ Sets a custom tooltip text for tab at index [param tab_idx].
+ [b]Note:[/b] By default, if the [param tooltip] is empty and the tab text is truncated (not all characters fit into the tab), the title will be displayed as a tooltip. To hide the tooltip, assign [code]" "[/code] as the [param tooltip] text.
+ </description>
+ </method>
</methods>
<members>
<member name="all_tabs_in_front" type="bool" setter="set_all_tabs_in_front" getter="is_all_tabs_in_front" default="false">
diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml
index db0c1f17b0..75cad4d08b 100644
--- a/doc/classes/TextEdit.xml
+++ b/doc/classes/TextEdit.xml
@@ -5,7 +5,7 @@
</brief_description>
<description>
A multiline text editor. It also has limited facilities for editing code, such as syntax highlighting support. For more advanced facilities for editing code, see [CodeEdit].
- [b]Note:[/b] Most viewport, caret and edit methods contain a [code]caret_index[/code] argument for [member caret_multiple] support. The argument should be one of the following: [code]-1[/code] for all carets, [code]0[/code] for the main caret, or greater than [code]0[/code] for secondary carets.
+ [b]Note:[/b] Most viewport, caret, and edit methods contain a [code]caret_index[/code] argument for [member caret_multiple] support. The argument should be one of the following: [code]-1[/code] for all carets, [code]0[/code] for the main caret, or greater than [code]0[/code] for secondary carets in the order they were created.
[b]Note:[/b] When holding down [kbd]Alt[/kbd], the vertical scroll wheel will scroll 5 times as fast as it would normally do. This also works in the Godot script editor.
</description>
<tutorials>
@@ -58,7 +58,7 @@
<method name="add_caret">
<return type="int" />
<param index="0" name="line" type="int" />
- <param index="1" name="col" type="int" />
+ <param index="1" name="column" type="int" />
<description>
Adds a new caret at the given location. Returns the index of the new caret, or [code]-1[/code] if the location is invalid.
</description>
@@ -67,7 +67,7 @@
<return type="void" />
<param index="0" name="below" type="bool" />
<description>
- Adds an additional caret above or below every caret. If [param below] is true the new caret will be added below and above otherwise.
+ Adds an additional caret above or below every caret. If [param below] is [code]true[/code] the new caret will be added below and above otherwise.
</description>
</method>
<method name="add_gutter">
@@ -83,7 +83,7 @@
Adds a selection and a caret for the next occurrence of the current selection. If there is no active selection, selects word under caret.
</description>
</method>
- <method name="adjust_carets_after_edit">
+ <method name="adjust_carets_after_edit" deprecated="No longer necessary since methods now adjust carets themselves.">
<return type="void" />
<param index="0" name="caret" type="int" />
<param index="1" name="from_line" type="int" />
@@ -91,7 +91,7 @@
<param index="3" name="to_line" type="int" />
<param index="4" name="to_col" type="int" />
<description>
- Reposition the carets affected by the edit. This assumes edits are applied in edit order, see [method get_caret_index_edit_order].
+ This method does nothing.
</description>
</method>
<method name="adjust_viewport_to_caret">
@@ -120,6 +120,23 @@
Starts a multipart edit. All edits will be treated as one action until [method end_complex_operation] is called.
</description>
</method>
+ <method name="begin_multicaret_edit">
+ <return type="void" />
+ <description>
+ Starts an edit for multiple carets. The edit must be ended with [method end_multicaret_edit]. Multicaret edits can be used to edit text at multiple carets and delay merging the carets until the end, so the caret indexes aren't affected immediately. [method begin_multicaret_edit] and [method end_multicaret_edit] can be nested, and the merge will happen at the last [method end_multicaret_edit].
+ Example usage:
+ [codeblock]
+ begin_complex_operation()
+ begin_multicaret_edit()
+ for i in range(get_caret_count()):
+ if multicaret_edit_ignore_caret(i):
+ continue
+ # Logic here.
+ end_multicaret_edit()
+ end_complex_operation()
+ [/codeblock]
+ </description>
+ </method>
<method name="cancel_ime">
<return type="void" />
<description>
@@ -145,6 +162,20 @@
Clears the undo history.
</description>
</method>
+ <method name="collapse_carets">
+ <return type="void" />
+ <param index="0" name="from_line" type="int" />
+ <param index="1" name="from_column" type="int" />
+ <param index="2" name="to_line" type="int" />
+ <param index="3" name="to_column" type="int" />
+ <param index="4" name="inclusive" type="bool" default="false" />
+ <description>
+ Collapse all carets in the given range to the [param from_line] and [param from_column] position.
+ [param inclusive] applies to both ends.
+ If [method is_in_mulitcaret_edit] is [code]true[/code], carets that are collapsed will be [code]true[/code] for [method multicaret_edit_ignore_caret].
+ [method merge_overlapping_carets] will be called if any carets were collapsed.
+ </description>
+ </method>
<method name="copy">
<return type="void" />
<param index="0" name="caret_index" type="int" default="-1" />
@@ -185,6 +216,12 @@
Ends a multipart edit, started with [method begin_complex_operation]. If called outside a complex operation, the current operation is pushed onto the undo/redo stack.
</description>
</method>
+ <method name="end_multicaret_edit">
+ <return type="void" />
+ <description>
+ Ends an edit for multiple carets, that was started with [method begin_multicaret_edit]. If this was the last [method end_multicaret_edit] and [method merge_overlapping_carets] was called, carets will be merged.
+ </description>
+ </method>
<method name="get_caret_column" qualifiers="const">
<return type="int" />
<param index="0" name="caret_index" type="int" default="0" />
@@ -205,7 +242,7 @@
Returns the caret pixel draw position.
</description>
</method>
- <method name="get_caret_index_edit_order">
+ <method name="get_caret_index_edit_order" deprecated="Carets no longer need to be edited in any specific order. If the carets need to be sorted, use [method get_sorted_carets] instead.">
<return type="PackedInt32Array" />
<description>
Returns a list of caret indexes in their edit order, this done from bottom to top. Edit order refers to the way actions such as [method insert_text_at_caret] are applied.
@@ -363,6 +400,15 @@
[b]Note:[/b] The return value is influenced by [theme_item line_spacing] and [theme_item font_size]. And it will not be less than [code]1[/code].
</description>
</method>
+ <method name="get_line_ranges_from_carets" qualifiers="const">
+ <return type="Vector2i[]" />
+ <param index="0" name="only_selections" type="bool" default="false" />
+ <param index="1" name="merge_adjacent" type="bool" default="true" />
+ <description>
+ Returns an [Array] of line ranges where [code]x[/code] is the first line and [code]y[/code] is the last line. All lines within these ranges will have a caret on them or be part of a selection. Each line will only be part of one line range, even if it has multiple carets on it.
+ If a selection's end column ([method get_selection_to_column]) is at column [code]0[/code], that line will not be included. If a selection begins on the line after another selection ends and [param merge_adjacent] is [code]true[/code], or they begin and end on the same line, one line range will include both selections.
+ </description>
+ </method>
<method name="get_line_width" qualifiers="const">
<return type="int" />
<param index="0" name="line" type="int" />
@@ -514,7 +560,18 @@
Returns the text inside the selection of a caret, or all the carets if [param caret_index] is its default value [code]-1[/code].
</description>
</method>
- <method name="get_selection_column" qualifiers="const">
+ <method name="get_selection_at_line_column" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="line" type="int" />
+ <param index="1" name="column" type="int" />
+ <param index="2" name="include_edges" type="bool" default="true" />
+ <param index="3" name="only_selections" type="bool" default="true" />
+ <description>
+ Returns the caret index of the selection at the given [param line] and [param column], or [code]-1[/code] if there is none.
+ If [param include_edges] is [code]false[/code], the position must be inside the selection and not at either end. If [param only_selections] is [code]false[/code], carets without a selection will also be considered.
+ </description>
+ </method>
+ <method name="get_selection_column" qualifiers="const" deprecated="Use [method get_selection_origin_column] instead.">
<return type="int" />
<param index="0" name="caret_index" type="int" default="0" />
<description>
@@ -525,17 +582,17 @@
<return type="int" />
<param index="0" name="caret_index" type="int" default="0" />
<description>
- Returns the selection begin column.
+ Returns the selection begin column. Returns the caret column if there is no selection.
</description>
</method>
<method name="get_selection_from_line" qualifiers="const">
<return type="int" />
<param index="0" name="caret_index" type="int" default="0" />
<description>
- Returns the selection begin line.
+ Returns the selection begin line. Returns the caret line if there is no selection.
</description>
</method>
- <method name="get_selection_line" qualifiers="const">
+ <method name="get_selection_line" qualifiers="const" deprecated="Use [method get_selection_origin_line] instead.">
<return type="int" />
<param index="0" name="caret_index" type="int" default="0" />
<description>
@@ -548,18 +605,40 @@
Returns the current selection mode.
</description>
</method>
+ <method name="get_selection_origin_column" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="caret_index" type="int" default="0" />
+ <description>
+ Returns the origin column of the selection. This is the opposite end from the caret.
+ </description>
+ </method>
+ <method name="get_selection_origin_line" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="caret_index" type="int" default="0" />
+ <description>
+ Returns the origin line of the selection. This is the opposite end from the caret.
+ </description>
+ </method>
<method name="get_selection_to_column" qualifiers="const">
<return type="int" />
<param index="0" name="caret_index" type="int" default="0" />
<description>
- Returns the selection end column.
+ Returns the selection end column. Returns the caret column if there is no selection.
</description>
</method>
<method name="get_selection_to_line" qualifiers="const">
<return type="int" />
<param index="0" name="caret_index" type="int" default="0" />
<description>
- Returns the selection end line.
+ Returns the selection end line. Returns the caret line if there is no selection.
+ </description>
+ </method>
+ <method name="get_sorted_carets" qualifiers="const">
+ <return type="PackedInt32Array" />
+ <param index="0" name="include_ignored_carets" type="bool" default="false" />
+ <description>
+ Returns the carets sorted by selection beginning from lowest line and column to highest (from top to bottom of text).
+ If [param include_ignored_carets] is [code]false[/code], carets from [method multicaret_edit_ignore_caret] will be ignored.
</description>
</method>
<method name="get_tab_size" qualifiers="const">
@@ -653,6 +732,19 @@
Inserts a new line with [param text] at [param line].
</description>
</method>
+ <method name="insert_text">
+ <return type="void" />
+ <param index="0" name="text" type="String" />
+ <param index="1" name="line" type="int" />
+ <param index="2" name="column" type="int" />
+ <param index="3" name="before_selection_begin" type="bool" default="true" />
+ <param index="4" name="before_selection_end" type="bool" default="false" />
+ <description>
+ Inserts the [param text] at [param line] and [param column].
+ If [param before_selection_begin] is [code]true[/code], carets and selections that begin at [param line] and [param column] will moved to the end of the inserted text, along with all carets after it.
+ If [param before_selection_end] is [code]true[/code], selections that end at [param line] and [param column] will be extended to the end of the inserted text. These parameters can be used to insert text inside of or outside of selections.
+ </description>
+ </method>
<method name="insert_text_at_caret">
<return type="void" />
<param index="0" name="text" type="String" />
@@ -661,6 +753,13 @@
Insert the specified text at the caret position.
</description>
</method>
+ <method name="is_caret_after_selection_origin" qualifiers="const">
+ <return type="bool" />
+ <param index="0" name="caret_index" type="int" default="0" />
+ <description>
+ Returns [code]true[/code] if the caret of the selection is after the selection origin. This can be used to determine the direction of the selection.
+ </description>
+ </method>
<method name="is_caret_visible" qualifiers="const">
<return type="bool" />
<param index="0" name="caret_index" type="int" default="0" />
@@ -671,7 +770,7 @@
<method name="is_dragging_cursor" qualifiers="const">
<return type="bool" />
<description>
- Returns [code]true[/code] if the user is dragging their mouse for scrolling or selecting.
+ Returns [code]true[/code] if the user is dragging their mouse for scrolling, selecting, or text dragging.
</description>
</method>
<method name="is_gutter_clickable" qualifiers="const">
@@ -695,6 +794,12 @@
Returns whether the gutter is overwritable.
</description>
</method>
+ <method name="is_in_mulitcaret_edit" qualifiers="const">
+ <return type="bool" />
+ <description>
+ Returns [code]true[/code] if a [method begin_multicaret_edit] has been called and [method end_multicaret_edit] has not yet been called.
+ </description>
+ </method>
<method name="is_line_gutter_clickable" qualifiers="const">
<return type="bool" />
<param index="0" name="line" type="int" />
@@ -749,9 +854,18 @@
<return type="void" />
<description>
Merges any overlapping carets. Will favor the newest caret, or the caret with a selection.
+ If [method is_in_mulitcaret_edit] is [code]true[/code], the merge will be queued to happen at the end of the multicaret edit. See [method begin_multicaret_edit] and [method end_multicaret_edit].
[b]Note:[/b] This is not called when a caret changes position but after certain actions, so it is possible to get into a state where carets overlap.
</description>
</method>
+ <method name="multicaret_edit_ignore_caret" qualifiers="const">
+ <return type="bool" />
+ <param index="0" name="caret_index" type="int" />
+ <description>
+ Returns [code]true[/code] if the given [param caret_index] should be ignored as part of a multicaret edit. See [method begin_multicaret_edit] and [method end_multicaret_edit]. Carets that should be ignored are ones that were part of removed text and will likely be merged at the end of the edit, or carets that were added during the edit.
+ It is recommended to [code]continue[/code] within a loop iterating on multiple carets if a caret should be ignored.
+ </description>
+ </method>
<method name="paste">
<return type="void" />
<param index="0" name="caret_index" type="int" default="-1" />
@@ -787,6 +901,15 @@
Removes the gutter from this [TextEdit].
</description>
</method>
+ <method name="remove_line_at">
+ <return type="void" />
+ <param index="0" name="line" type="int" />
+ <param index="1" name="move_carets_down" type="bool" default="true" />
+ <description>
+ Removes the line of text at [param line]. Carets on this line will attempt to match their previous visual x position.
+ If [param move_carets_down] is [code]true[/code] carets will move to the next line down, otherwise carets will move up.
+ </description>
+ </method>
<method name="remove_secondary_carets">
<return type="void" />
<description>
@@ -801,7 +924,6 @@
<param index="3" name="to_column" type="int" />
<description>
Removes text between the given positions.
- [b]Note:[/b] This does not adjust the caret or selection, which as a result it can end up in an invalid position.
</description>
</method>
<method name="search" qualifiers="const">
@@ -809,7 +931,7 @@
<param index="0" name="text" type="String" />
<param index="1" name="flags" type="int" />
<param index="2" name="from_line" type="int" />
- <param index="3" name="from_colum" type="int" />
+ <param index="3" name="from_column" type="int" />
<description>
Perform a search inside the text. Search flags can be specified in the [enum SearchFlags] enum.
In the returned vector, [code]x[/code] is the column, [code]y[/code] is the line. If no results are found, both are equal to [code]-1[/code].
@@ -835,14 +957,15 @@
</method>
<method name="select">
<return type="void" />
- <param index="0" name="from_line" type="int" />
- <param index="1" name="from_column" type="int" />
- <param index="2" name="to_line" type="int" />
- <param index="3" name="to_column" type="int" />
+ <param index="0" name="origin_line" type="int" />
+ <param index="1" name="origin_column" type="int" />
+ <param index="2" name="caret_line" type="int" />
+ <param index="3" name="caret_column" type="int" />
<param index="4" name="caret_index" type="int" default="0" />
<description>
- Perform selection, from line/column to line/column.
+ Selects text from [param origin_line] and [param origin_column] to [param caret_line] and [param caret_column] for the given [param caret_index]. This moves the selection origin and the caret. If the positions are the same, the selection will be deselected.
If [member selecting_enabled] is [code]false[/code], no selection will occur.
+ [b]Note:[/b] If supporting multiple carets this will not check for any overlap. See [method merge_overlapping_carets].
</description>
</method>
<method name="select_all">
@@ -878,9 +1001,10 @@
<param index="3" name="wrap_index" type="int" default="0" />
<param index="4" name="caret_index" type="int" default="0" />
<description>
- Moves the caret to the specified [param line] index.
+ Moves the caret to the specified [param line] index. The caret column will be moved to the same visual position it was at the last time [method set_caret_column] was called, or clamped to the end of the line.
If [param adjust_viewport] is [code]true[/code], the viewport will center at the caret position after the move occurs.
If [param can_be_hidden] is [code]true[/code], the specified [param line] can be hidden.
+ If [param wrap_index] is [code]-1[/code], the caret column will be clamped to the [param line]'s length. If [param wrap_index] is greater than [code]-1[/code], the column will be moved to attempt to match the visual x position on the line's [param wrap_index] to the position from the last time [method set_caret_column] was called.
[b]Note:[/b] If supporting multiple carets this will not check for any overlap. See [method merge_overlapping_carets].
</description>
</method>
@@ -945,7 +1069,8 @@
<param index="0" name="line" type="int" />
<param index="1" name="new_text" type="String" />
<description>
- Sets the text for a specific line.
+ Sets the text for a specific [param line].
+ Carets on the line will attempt to keep their visual x position.
</description>
</method>
<method name="set_line_as_center_visible">
@@ -1049,13 +1174,30 @@
<method name="set_selection_mode">
<return type="void" />
<param index="0" name="mode" type="int" enum="TextEdit.SelectionMode" />
- <param index="1" name="line" type="int" default="-1" />
- <param index="2" name="column" type="int" default="-1" />
- <param index="3" name="caret_index" type="int" default="0" />
<description>
Sets the current selection mode.
</description>
</method>
+ <method name="set_selection_origin_column">
+ <return type="void" />
+ <param index="0" name="column" type="int" />
+ <param index="1" name="caret_index" type="int" default="0" />
+ <description>
+ Sets the selection origin column to the [param column] for the given [param caret_index]. If the selection origin is moved to the caret position, the selection will deselect.
+ </description>
+ </method>
+ <method name="set_selection_origin_line">
+ <return type="void" />
+ <param index="0" name="line" type="int" />
+ <param index="1" name="can_be_hidden" type="bool" default="true" />
+ <param index="2" name="wrap_index" type="int" default="-1" />
+ <param index="3" name="caret_index" type="int" default="0" />
+ <description>
+ Sets the selection origin line to the [param line] for the given [param caret_index]. If the selection origin is moved to the caret position, the selection will deselect.
+ If [param can_be_hidden] is [code]false[/code], The line will be set to the nearest unhidden line below or above.
+ If [param wrap_index] is [code]-1[/code], the selection origin column will be clamped to the [param line]'s length. If [param wrap_index] is greater than [code]-1[/code], the column will be moved to attempt to match the visual x position on the line's [param wrap_index] to the position from the last time [method set_selection_origin_column] or [method select] was called.
+ </description>
+ </method>
<method name="set_tab_size">
<return type="void" />
<param index="0" name="size" type="int" />
@@ -1089,7 +1231,7 @@
<param index="0" name="from_line" type="int" />
<param index="1" name="to_line" type="int" />
<description>
- Swaps the two lines.
+ Swaps the two lines. Carets will be swapped with the lines.
</description>
</method>
<method name="tag_saved_version">
@@ -1140,7 +1282,7 @@
If [code]true[/code], the selected text will be deselected when focus is lost.
</member>
<member name="drag_and_drop_selection_enabled" type="bool" setter="set_drag_and_drop_selection_enabled" getter="is_drag_and_drop_selection_enabled" default="true">
- If [code]true[/code], allow drag and drop of selected text.
+ If [code]true[/code], allow drag and drop of selected text. Text can still be dropped from other sources.
</member>
<member name="draw_control_chars" type="bool" setter="set_draw_control_chars" getter="get_draw_control_chars" default="false">
If [code]true[/code], control characters are displayed.
@@ -1172,7 +1314,7 @@
[b]Note:[/b] This method is only implemented on Linux.
</member>
<member name="minimap_draw" type="bool" setter="set_draw_minimap" getter="is_drawing_minimap" default="false">
- If [code]true[/code], a minimap is shown, providing an outline of your source code.
+ If [code]true[/code], a minimap is shown, providing an outline of your source code. The minimap uses a fixed-width text size.
</member>
<member name="minimap_width" type="int" setter="set_minimap_width" getter="get_minimap_width" default="80">
The width, in pixels, of the minimap.
@@ -1231,7 +1373,7 @@
<signals>
<signal name="caret_changed">
<description>
- Emitted when the caret changes position.
+ Emitted when any caret changes position.
</description>
</signal>
<signal name="gutter_added">
diff --git a/doc/classes/TextServer.xml b/doc/classes/TextServer.xml
index c0cd7f79e7..34137a18ef 100644
--- a/doc/classes/TextServer.xml
+++ b/doc/classes/TextServer.xml
@@ -5,6 +5,16 @@
</brief_description>
<description>
[TextServer] is the API backend for managing fonts and rendering text.
+ [b]Note:[/b] This is a low-level API, consider using [TextLine], [TextParagraph], and [Font] classes instead.
+ This is an abstract class, so to get the currently active [TextServer] instance, use the following code:
+ [codeblocks]
+ [gdscript]
+ var ts = TextServerManager.get_primary_interface()
+ [/gdscript]
+ [csharp]
+ var ts = TextServerManager.GetPrimaryInterface();
+ [/csharp]
+ [/codeblocks]
</description>
<tutorials>
</tutorials>
@@ -1103,6 +1113,13 @@
- May contain Unicode characters of class XID_Continue in the other positions.
</description>
</method>
+ <method name="is_valid_letter" qualifiers="const">
+ <return type="bool" />
+ <param index="0" name="unicode" type="int" />
+ <description>
+ Returns [code]true[/code] if the given code point is a valid letter, i.e. it belongs to the Unicode category "L".
+ </description>
+ </method>
<method name="load_support_data">
<return type="bool" />
<param index="0" name="filename" type="String" />
@@ -1505,6 +1522,7 @@
<return type="PackedInt32Array" />
<param index="0" name="shaped" type="RID" />
<param index="1" name="grapheme_flags" type="int" enum="TextServer.GraphemeFlag" is_bitfield="true" default="264" />
+ <param index="2" name="skip_grapheme_flags" type="int" enum="TextServer.GraphemeFlag" is_bitfield="true" default="4" />
<description>
Breaks text into words and returns array of character ranges. Use [param grapheme_flags] to set what characters are used for breaking (see [enum GraphemeFlag]).
</description>
diff --git a/doc/classes/TextServerExtension.xml b/doc/classes/TextServerExtension.xml
index 06a0daece6..c148cdad52 100644
--- a/doc/classes/TextServerExtension.xml
+++ b/doc/classes/TextServerExtension.xml
@@ -1217,6 +1217,12 @@
Returns [code]true[/code] if [param string] is a valid identifier.
</description>
</method>
+ <method name="_is_valid_letter" qualifiers="virtual const">
+ <return type="bool" />
+ <param index="0" name="unicode" type="int" />
+ <description>
+ </description>
+ </method>
<method name="_load_support_data" qualifiers="virtual">
<return type="bool" />
<param index="0" name="filename" type="String" />
@@ -1664,6 +1670,7 @@
<return type="PackedInt32Array" />
<param index="0" name="shaped" type="RID" />
<param index="1" name="grapheme_flags" type="int" enum="TextServer.GraphemeFlag" is_bitfield="true" />
+ <param index="2" name="skip_grapheme_flags" type="int" enum="TextServer.GraphemeFlag" is_bitfield="true" />
<description>
[b]Optional.[/b]
Breaks text into words and returns array of character ranges. Use [param grapheme_flags] to set what characters are used for breaking (see [enum TextServer.GraphemeFlag]).
diff --git a/doc/classes/TextureButton.xml b/doc/classes/TextureButton.xml
index 6c0d56af05..861981f979 100644
--- a/doc/classes/TextureButton.xml
+++ b/doc/classes/TextureButton.xml
@@ -9,7 +9,7 @@
See also [BaseButton] which contains common properties and methods associated with this node.
</description>
<tutorials>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="flip_h" type="bool" setter="set_flip_h" getter="is_flipped_h" default="false">
diff --git a/doc/classes/TextureRect.xml b/doc/classes/TextureRect.xml
index d18c4a1eee..ab268b6ea5 100644
--- a/doc/classes/TextureRect.xml
+++ b/doc/classes/TextureRect.xml
@@ -7,7 +7,7 @@
A control that displays a texture, for example an icon inside a GUI. The texture's placement can be controlled with the [member stretch_mode] property. It can scale, tile, or stay centered inside its bounding rectangle.
</description>
<tutorials>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="expand_mode" type="int" setter="set_expand_mode" getter="get_expand_mode" enum="TextureRect.ExpandMode" default="0" experimental="Using [constant EXPAND_FIT_WIDTH], [constant EXPAND_FIT_WIDTH_PROPORTIONAL], [constant EXPAND_FIT_HEIGHT], or [constant EXPAND_FIT_HEIGHT_PROPORTIONAL] may result in unstable behavior in some [Container] controls. This behavior may be re-evaluated and changed in the future.">
diff --git a/doc/classes/Thread.xml b/doc/classes/Thread.xml
index dbf63c0852..cf77b93d86 100644
--- a/doc/classes/Thread.xml
+++ b/doc/classes/Thread.xml
@@ -14,7 +14,7 @@
<tutorials>
<link title="Using multiple threads">$DOCS_URL/tutorials/performance/using_multiple_threads.html</link>
<link title="Thread-safe APIs">$DOCS_URL/tutorials/performance/thread_safe_apis.html</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<methods>
<method name="get_id" qualifiers="const">
diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml
index bc8a1d7bf1..687c7194cd 100644
--- a/doc/classes/TileMap.xml
+++ b/doc/classes/TileMap.xml
@@ -10,12 +10,12 @@
</description>
<tutorials>
<link title="Using Tilemaps">$DOCS_URL/tutorials/2d/using_tilemaps.html</link>
- <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/120</link>
- <link title="2D Isometric Demo">https://godotengine.org/asset-library/asset/112</link>
- <link title="2D Hexagonal Demo">https://godotengine.org/asset-library/asset/111</link>
- <link title="2D Navigation Astar Demo">https://godotengine.org/asset-library/asset/519</link>
- <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
- <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/113</link>
+ <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/2727</link>
+ <link title="2D Isometric Demo">https://godotengine.org/asset-library/asset/2718</link>
+ <link title="2D Hexagonal Demo">https://godotengine.org/asset-library/asset/2717</link>
+ <link title="2D Grid-based Navigation with AStarGrid2D Demo">https://godotengine.org/asset-library/asset/2723</link>
+ <link title="2D Role Playing Game (RPG) Demo">https://godotengine.org/asset-library/asset/2729</link>
+ <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2719</link>
</tutorials>
<methods>
<method name="_tile_data_runtime_update" qualifiers="virtual">
diff --git a/doc/classes/TileMapLayer.xml b/doc/classes/TileMapLayer.xml
index bc8e259599..1bff6d911b 100644
--- a/doc/classes/TileMapLayer.xml
+++ b/doc/classes/TileMapLayer.xml
@@ -97,7 +97,7 @@
<method name="get_navigation_map" qualifiers="const">
<return type="RID" />
<description>
- Returns the [RID] of the [NavigationServer2D] navigation used by this [TileMapLayer].
+ Returns the [RID] of the [NavigationServer2D] navigation used by this [TileMapLayer].
By default this returns the default [World2D] navigation map, unless a custom map was provided using [method set_navigation_map].
</description>
</method>
@@ -268,7 +268,7 @@
The quadrant size does not apply on a Y-sorted [TileMapLayer], as tiles are be grouped by Y position instead in that case.
[b]Note:[/b] As quadrants are created according to the map's coordinate system, the quadrant's "square shape" might not look like square in the [TileMapLayer]'s local coordinate system.
</member>
- <member name="tile_map_data" type="PackedByteArray" setter="set_tile_map_data_from_array" getter="get_tile_map_data_as_array" default="PackedByteArray(0, 0)">
+ <member name="tile_map_data" type="PackedByteArray" setter="set_tile_map_data_from_array" getter="get_tile_map_data_as_array" default="PackedByteArray()">
The raw tile map data as a byte array.
</member>
<member name="tile_set" type="TileSet" setter="set_tile_set" getter="get_tile_set">
diff --git a/doc/classes/TileSet.xml b/doc/classes/TileSet.xml
index 37f4cc5c0b..64cd4fb7b2 100644
--- a/doc/classes/TileSet.xml
+++ b/doc/classes/TileSet.xml
@@ -13,12 +13,12 @@
</description>
<tutorials>
<link title="Using Tilemaps">$DOCS_URL/tutorials/2d/using_tilemaps.html</link>
- <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/120</link>
- <link title="2D Isometric Demo">https://godotengine.org/asset-library/asset/112</link>
- <link title="2D Hexagonal Demo">https://godotengine.org/asset-library/asset/111</link>
- <link title="2D Navigation Astar Demo">https://godotengine.org/asset-library/asset/519</link>
- <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
- <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/113</link>
+ <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/2727</link>
+ <link title="2D Isometric Demo">https://godotengine.org/asset-library/asset/2718</link>
+ <link title="2D Hexagonal Demo">https://godotengine.org/asset-library/asset/2717</link>
+ <link title="2D Grid-based Navigation with AStarGrid2D Demo">https://godotengine.org/asset-library/asset/2723</link>
+ <link title="2D Role Playing Game (RPG) Demo">https://godotengine.org/asset-library/asset/2729</link>
+ <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2719</link>
</tutorials>
<methods>
<method name="add_custom_data_layer">
diff --git a/doc/classes/TileSetAtlasSource.xml b/doc/classes/TileSetAtlasSource.xml
index 6f212274f8..a34ca0ce91 100644
--- a/doc/classes/TileSetAtlasSource.xml
+++ b/doc/classes/TileSetAtlasSource.xml
@@ -295,6 +295,15 @@
# If tile is not already flipped, flip it.
$TileMap.set_cell(0, Vector2i(2, 2), source_id, atlas_coords, alternate_id | TileSetAtlasSource.TRANSFORM_FLIP_H)
[/codeblock]
+ [b]Note:[/b] These transformations can be combined to do the equivalent of 0, 90, 180, and 270 degree rotations, as shown below:
+ [codeblock]
+ enum TileTransform {
+ ROTATE_0 = 0,
+ ROTATE_90 = TileSetAtlasSource.TRANSFORM_TRANSPOSE | TileSetAtlasSource.TRANSFORM_FLIP_H,
+ ROTATE_180 = TileSetAtlasSource.TRANSFORM_FLIP_H | TileSetAtlasSource.TRANSFORM_FLIP_V,
+ ROTATE_270 = TileSetAtlasSource.TRANSFORM_TRANSPOSE | TileSetAtlasSource.TRANSFORM_FLIP_V,
+ }
+ [/codeblock]
</constant>
<constant name="TRANSFORM_FLIP_V" value="8192">
Represents cell's vertical flip flag. See [constant TRANSFORM_FLIP_H] for usage.
diff --git a/doc/classes/Time.xml b/doc/classes/Time.xml
index 2948d20fbb..bf002ec6e2 100644
--- a/doc/classes/Time.xml
+++ b/doc/classes/Time.xml
@@ -152,7 +152,7 @@
<method name="get_time_zone_from_system" qualifiers="const">
<return type="Dictionary" />
<description>
- Returns the current time zone as a dictionary of keys: [code]bias[/code] and [code]name[/code].
+ Returns the current time zone as a dictionary of keys: [code]bias[/code] and [code]name[/code].
- [code]bias[/code] is the offset from UTC in minutes, since not all time zones are multiples of an hour from UTC.
- [code]name[/code] is the localized name of the time zone, according to the OS locale settings of the current user.
</description>
diff --git a/doc/classes/Timer.xml b/doc/classes/Timer.xml
index 6eee569443..9de1e09273 100644
--- a/doc/classes/Timer.xml
+++ b/doc/classes/Timer.xml
@@ -15,7 +15,7 @@
[b]Note:[/b] Timers are affected by [member Engine.time_scale]. The higher the time scale, the sooner timers will end. How often a timer processes may depend on the framerate or [member Engine.physics_ticks_per_second].
</description>
<tutorials>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<methods>
<method name="is_stopped" qualifiers="const">
diff --git a/doc/classes/Transform2D.xml b/doc/classes/Transform2D.xml
index 4247ff81ee..345d0512ff 100644
--- a/doc/classes/Transform2D.xml
+++ b/doc/classes/Transform2D.xml
@@ -10,8 +10,8 @@
<tutorials>
<link title="Math documentation index">$DOCS_URL/tutorials/math/index.html</link>
<link title="Matrices and transforms">$DOCS_URL/tutorials/math/matrices_and_transforms.html</link>
- <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/584</link>
- <link title="2.5D Demo">https://godotengine.org/asset-library/asset/583</link>
+ <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/2787</link>
+ <link title="2.5D Game Demo">https://godotengine.org/asset-library/asset/2783</link>
</tutorials>
<constructors>
<constructor name="Transform2D">
diff --git a/doc/classes/Transform3D.xml b/doc/classes/Transform3D.xml
index 1827cdf8f0..2a0bbc46af 100644
--- a/doc/classes/Transform3D.xml
+++ b/doc/classes/Transform3D.xml
@@ -12,9 +12,9 @@
<link title="Math documentation index">$DOCS_URL/tutorials/math/index.html</link>
<link title="Matrices and transforms">$DOCS_URL/tutorials/math/matrices_and_transforms.html</link>
<link title="Using 3D transforms">$DOCS_URL/tutorials/3d/using_transforms.html</link>
- <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/584</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="2.5D Demo">https://godotengine.org/asset-library/asset/583</link>
+ <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/2787</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="2.5D Game Demo">https://godotengine.org/asset-library/asset/2783</link>
</tutorials>
<constructors>
<constructor name="Transform3D">
diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml
index d95492479c..b0cb25fafd 100644
--- a/doc/classes/Tree.xml
+++ b/doc/classes/Tree.xml
@@ -546,16 +546,16 @@
The maximum allowed width of the icon in item's cells. This limit is applied on top of the default size of the icon, but before the value set with [method TreeItem.set_icon_max_width]. The height is adjusted according to the icon's ratio.
</theme_item>
<theme_item name="inner_item_margin_bottom" data_type="constant" type="int" default="0">
- The inner bottom margin of an item.
+ The inner bottom margin of a cell.
</theme_item>
<theme_item name="inner_item_margin_left" data_type="constant" type="int" default="0">
- The inner left margin of an item.
+ The inner left margin of a cell.
</theme_item>
<theme_item name="inner_item_margin_right" data_type="constant" type="int" default="0">
- The inner right margin of an item.
+ The inner right margin of a cell.
</theme_item>
<theme_item name="inner_item_margin_top" data_type="constant" type="int" default="0">
- The inner top margin of an item.
+ The inner top margin of a cell.
</theme_item>
<theme_item name="item_margin" data_type="constant" type="int" default="16">
The horizontal margin at the start of an item. This is used when folding is enabled for the item.
@@ -655,13 +655,13 @@
[StyleBox] used for the cursor, when the [Tree] is not being focused.
</theme_item>
<theme_item name="custom_button" data_type="style" type="StyleBox">
- Default [StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell.
+ Default [StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when button is enabled with [method TreeItem.set_custom_as_button].
</theme_item>
<theme_item name="custom_button_hover" data_type="style" type="StyleBox">
- [StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's hovered.
+ [StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode button cell when it's hovered.
</theme_item>
<theme_item name="custom_button_pressed" data_type="style" type="StyleBox">
- [StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's pressed.
+ [StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode button cell when it's pressed.
</theme_item>
<theme_item name="focus" data_type="style" type="StyleBox">
The focused style for the [Tree], drawn on top of everything.
diff --git a/doc/classes/TreeItem.xml b/doc/classes/TreeItem.xml
index c679838ec5..78a703c213 100644
--- a/doc/classes/TreeItem.xml
+++ b/doc/classes/TreeItem.xml
@@ -318,12 +318,14 @@
<return type="int" enum="TextServer.StructuredTextParser" />
<param index="0" name="column" type="int" />
<description>
+ Returns the BiDi algorithm override set for this cell.
</description>
</method>
<method name="get_structured_text_bidi_override_options" qualifiers="const">
<return type="Array" />
<param index="0" name="column" type="int" />
<description>
+ Returns the additional BiDi options set for this cell.
</description>
</method>
<method name="get_suffix" qualifiers="const">
@@ -401,6 +403,7 @@
<return type="bool" />
<param index="0" name="column" type="int" />
<description>
+ Returns [code]true[/code] if the cell was made into a button with [method set_custom_as_button].
</description>
</method>
<method name="is_edit_multiline" qualifiers="const">
@@ -532,7 +535,7 @@
<param index="0" name="column" type="int" />
<param index="1" name="mode" type="int" enum="TreeItem.TreeCellMode" />
<description>
- Sets the given column's cell mode to [param mode]. See [enum TreeCellMode] constants.
+ Sets the given column's cell mode to [param mode]. This determines how the cell is displayed and edited. See [enum TreeCellMode] constants for details.
</description>
</method>
<method name="set_checked">
@@ -555,6 +558,7 @@
<param index="0" name="column" type="int" />
<param index="1" name="enable" type="bool" />
<description>
+ Makes a cell with [constant CELL_MODE_CUSTOM] display as a non-flat button with a [StyleBox].
</description>
</method>
<method name="set_custom_bg_color">
@@ -589,7 +593,7 @@
<param index="0" name="column" type="int" />
<param index="1" name="callback" type="Callable" />
<description>
- Sets the given column's custom draw callback. Use an empty [Callable] ([code skip-lint]Callable()[/code]) to clear the custom callback.
+ Sets the given column's custom draw callback. Use an empty [Callable] ([code skip-lint]Callable()[/code]) to clear the custom callback. The cell has to be in [constant CELL_MODE_CUSTOM] to use this feature.
The [param callback] should accept two arguments: the [TreeItem] that is drawn and its position and size as a [Rect2].
</description>
</method>
@@ -639,7 +643,7 @@
<param index="0" name="column" type="int" />
<param index="1" name="texture" type="Texture2D" />
<description>
- Sets the given column's icon [Texture2D].
+ Sets the given cell's icon [Texture2D]. The cell has to be in [constant CELL_MODE_ICON] mode.
</description>
</method>
<method name="set_icon_max_width">
@@ -724,6 +728,7 @@
<param index="0" name="column" type="int" />
<param index="1" name="parser" type="int" enum="TextServer.StructuredTextParser" />
<description>
+ Set BiDi algorithm override for the structured text. Has effect for cells that display text.
</description>
</method>
<method name="set_structured_text_bidi_override_options">
@@ -731,6 +736,7 @@
<param index="0" name="column" type="int" />
<param index="1" name="args" type="Array" />
<description>
+ Set additional options for BiDi override. Has effect for cells that display text.
</description>
</method>
<method name="set_suffix">
@@ -805,18 +811,21 @@
</members>
<constants>
<constant name="CELL_MODE_STRING" value="0" enum="TreeCellMode">
- Cell contains a string.
+ Cell shows a string label. When editable, the text can be edited using a [LineEdit], or a [TextEdit] popup if [method set_edit_multiline] is used.
</constant>
<constant name="CELL_MODE_CHECK" value="1" enum="TreeCellMode">
- Cell contains a checkbox.
+ Cell shows a checkbox, optionally with text. The checkbox can be pressed, released, or indeterminate (via [method set_indeterminate]). The checkbox can't be clicked unless the cell is editable.
</constant>
<constant name="CELL_MODE_RANGE" value="2" enum="TreeCellMode">
- Cell contains a range.
+ Cell shows a numeric range. When editable, it can be edited using a range slider. Use [method set_range] to set the value and [method set_range_config] to configure the range.
+ This cell can also be used in a text dropdown mode when you assign a text with [method set_text]. Separate options with a comma, e.g. [code]"Option1,Option2,Option3"[/code].
</constant>
<constant name="CELL_MODE_ICON" value="3" enum="TreeCellMode">
- Cell contains an icon.
+ Cell shows an icon. It can't be edited nor display text.
</constant>
<constant name="CELL_MODE_CUSTOM" value="4" enum="TreeCellMode">
+ Cell shows as a clickable button. It will display an arrow similar to [OptionButton], but doesn't feature a dropdown (for that you can use [constant CELL_MODE_RANGE]). Clicking the button emits the [signal Tree.item_edited] signal. The button is flat by default, you can use [method set_custom_as_button] to display it with a [StyleBox].
+ This mode also supports custom drawing using [method set_custom_draw_callback].
</constant>
</constants>
</class>
diff --git a/doc/classes/VBoxContainer.xml b/doc/classes/VBoxContainer.xml
index d3ea94c0eb..62484ecdc0 100644
--- a/doc/classes/VBoxContainer.xml
+++ b/doc/classes/VBoxContainer.xml
@@ -8,6 +8,6 @@
</description>
<tutorials>
<link title="Using Containers">$DOCS_URL/tutorials/ui/gui_containers.html</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
</class>
diff --git a/doc/classes/Variant.xml b/doc/classes/Variant.xml
index eb837a4643..b420933285 100644
--- a/doc/classes/Variant.xml
+++ b/doc/classes/Variant.xml
@@ -42,8 +42,8 @@
# Note that Objects are their own special category.
# To get the name of the underlying Object type, you need the `get_class()` method.
print("foo is a(n) %s" % foo.get_class()) # inject the class name into a formatted string.
- # Note also that there is not yet any way to get a script's `class_name` string easily.
- # To fetch that value, you can use ProjectSettings.get_global_class_list().
+ # Note that this does not get the script's `class_name` global identifier.
+ # If the `class_name` is needed, use `foo.get_script().get_global_name()` instead.
[/gdscript]
[csharp]
Variant foo = 2;
diff --git a/doc/classes/Vector2.xml b/doc/classes/Vector2.xml
index f33076a92f..5fadfd0d95 100644
--- a/doc/classes/Vector2.xml
+++ b/doc/classes/Vector2.xml
@@ -14,7 +14,7 @@
<link title="Vector math">$DOCS_URL/tutorials/math/vector_math.html</link>
<link title="Advanced vector math">$DOCS_URL/tutorials/math/vectors_advanced.html</link>
<link title="3Blue1Brown Essence of Linear Algebra">https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab</link>
- <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/584</link>
+ <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/2787</link>
<link title="All 2D Demos">https://github.com/godotengine/godot-demo-projects/tree/master/2d</link>
</tutorials>
<constructors>
@@ -110,7 +110,8 @@
<return type="Vector2" />
<param index="0" name="n" type="Vector2" />
<description>
- Returns a new vector "bounced off" from a plane defined by the given normal.
+ Returns the vector "bounced off" from a line defined by the given normal [param n] perpendicular to the line.
+ [b]Note:[/b] [method bounce] performs the operation that most engines and frameworks call [code skip-lint]reflect()[/code].
</description>
</method>
<method name="ceil" qualifiers="const">
@@ -127,12 +128,20 @@
Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.
</description>
</method>
+ <method name="clampf" qualifiers="const">
+ <return type="Vector2" />
+ <param index="0" name="min" type="float" />
+ <param index="1" name="max" type="float" />
+ <description>
+ Returns a new vector with all components clamped between [param min] and [param max], by running [method @GlobalScope.clamp] on each component.
+ </description>
+ </method>
<method name="cross" qualifiers="const">
<return type="float" />
<param index="0" name="with" type="Vector2" />
<description>
Returns the 2D analog of the cross product for this vector and [param with].
- This is the signed area of the parallelogram formed by the two vectors. If the second vector is clockwise from the first vector, then the cross product is the positive area. If counter-clockwise, the cross product is the negative area.
+ This is the signed area of the parallelogram formed by the two vectors. If the second vector is clockwise from the first vector, then the cross product is the positive area. If counter-clockwise, the cross product is the negative area. If the two vectors are parallel this returns zero, making it useful for testing if two vectors are parallel.
[b]Note:[/b] Cross product is not defined in 2D mathematically. This method embeds the 2D vectors in the XY plane of 3D space and uses their cross product's Z component as the analog.
</description>
</method>
@@ -264,18 +273,46 @@
Returns the vector with a maximum length by limiting its length to [param length].
</description>
</method>
+ <method name="max" qualifiers="const">
+ <return type="Vector2" />
+ <param index="0" name="with" type="Vector2" />
+ <description>
+ Returns the component-wise maximum of this and [param with], equivalent to [code]Vector2(maxf(x, with.x), maxf(y, with.y))[/code].
+ </description>
+ </method>
<method name="max_axis_index" qualifiers="const">
<return type="int" />
<description>
Returns the axis of the vector's highest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_X].
</description>
</method>
+ <method name="maxf" qualifiers="const">
+ <return type="Vector2" />
+ <param index="0" name="with" type="float" />
+ <description>
+ Returns the component-wise maximum of this and [param with], equivalent to [code]Vector2(maxf(x, with), maxf(y, with))[/code].
+ </description>
+ </method>
+ <method name="min" qualifiers="const">
+ <return type="Vector2" />
+ <param index="0" name="with" type="Vector2" />
+ <description>
+ Returns the component-wise minimum of this and [param with], equivalent to [code]Vector2(minf(x, with.x), minf(y, with.y))[/code].
+ </description>
+ </method>
<method name="min_axis_index" qualifiers="const">
<return type="int" />
<description>
Returns the axis of the vector's lowest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_Y].
</description>
</method>
+ <method name="minf" qualifiers="const">
+ <return type="Vector2" />
+ <param index="0" name="with" type="float" />
+ <description>
+ Returns the component-wise minimum of this and [param with], equivalent to [code]Vector2(minf(x, with), minf(y, with))[/code].
+ </description>
+ </method>
<method name="move_toward" qualifiers="const">
<return type="Vector2" />
<param index="0" name="to" type="Vector2" />
@@ -321,9 +358,10 @@
</method>
<method name="reflect" qualifiers="const">
<return type="Vector2" />
- <param index="0" name="n" type="Vector2" />
+ <param index="0" name="line" type="Vector2" />
<description>
- Returns the result of reflecting the vector from a line defined by the given direction vector [param n].
+ Returns the result of reflecting the vector from a line defined by the given direction vector [param line].
+ [b]Note:[/b] [method reflect] differs from what other engines and frameworks call [code skip-lint]reflect()[/code]. In other engines, [code skip-lint]reflect()[/code] takes a normal direction which is a direction perpendicular to the line. In Godot, you specify the direction of the line directly. See also [method bounce] which does what most engines call [code skip-lint]reflect()[/code].
</description>
</method>
<method name="rotated" qualifiers="const">
@@ -369,6 +407,13 @@
Returns a new vector with each component snapped to the nearest multiple of the corresponding component in [param step]. This can also be used to round the components to an arbitrary number of decimals.
</description>
</method>
+ <method name="snappedf" qualifiers="const">
+ <return type="Vector2" />
+ <param index="0" name="step" type="float" />
+ <description>
+ Returns a new vector with each component snapped to the nearest multiple of [param step]. This can also be used to round the components to an arbitrary number of decimals.
+ </description>
+ </method>
</methods>
<members>
<member name="x" type="float" setter="" getter="" default="0.0">
diff --git a/doc/classes/Vector2i.xml b/doc/classes/Vector2i.xml
index 18291e06a9..4afc62e038 100644
--- a/doc/classes/Vector2i.xml
+++ b/doc/classes/Vector2i.xml
@@ -64,6 +64,14 @@
Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.
</description>
</method>
+ <method name="clampi" qualifiers="const">
+ <return type="Vector2i" />
+ <param index="0" name="min" type="int" />
+ <param index="1" name="max" type="int" />
+ <description>
+ Returns a new vector with all components clamped between [param min] and [param max], by running [method @GlobalScope.clamp] on each component.
+ </description>
+ </method>
<method name="distance_squared_to" qualifiers="const">
<return type="int" />
<param index="0" name="to" type="Vector2i" />
@@ -92,18 +100,46 @@
This method runs faster than [method length], so prefer it if you need to compare vectors or need the squared distance for some formula.
</description>
</method>
+ <method name="max" qualifiers="const">
+ <return type="Vector2i" />
+ <param index="0" name="with" type="Vector2i" />
+ <description>
+ Returns the component-wise maximum of this and [param with], equivalent to [code]Vector2i(maxi(x, with.x), maxi(y, with.y))[/code].
+ </description>
+ </method>
<method name="max_axis_index" qualifiers="const">
<return type="int" />
<description>
Returns the axis of the vector's highest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_X].
</description>
</method>
+ <method name="maxi" qualifiers="const">
+ <return type="Vector2i" />
+ <param index="0" name="with" type="int" />
+ <description>
+ Returns the component-wise maximum of this and [param with], equivalent to [code]Vector2i(maxi(x, with), maxi(y, with))[/code].
+ </description>
+ </method>
+ <method name="min" qualifiers="const">
+ <return type="Vector2i" />
+ <param index="0" name="with" type="Vector2i" />
+ <description>
+ Returns the component-wise minimum of this and [param with], equivalent to [code]Vector2i(mini(x, with.x), mini(y, with.y))[/code].
+ </description>
+ </method>
<method name="min_axis_index" qualifiers="const">
<return type="int" />
<description>
Returns the axis of the vector's lowest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_Y].
</description>
</method>
+ <method name="mini" qualifiers="const">
+ <return type="Vector2i" />
+ <param index="0" name="with" type="int" />
+ <description>
+ Returns the component-wise minimum of this and [param with], equivalent to [code]Vector2i(mini(x, with), mini(y, with))[/code].
+ </description>
+ </method>
<method name="sign" qualifiers="const">
<return type="Vector2i" />
<description>
@@ -117,6 +153,13 @@
Returns a new vector with each component snapped to the closest multiple of the corresponding component in [param step].
</description>
</method>
+ <method name="snappedi" qualifiers="const">
+ <return type="Vector2i" />
+ <param index="0" name="step" type="int" />
+ <description>
+ Returns a new vector with each component snapped to the closest multiple of [param step].
+ </description>
+ </method>
</methods>
<members>
<member name="x" type="int" setter="" getter="" default="0">
diff --git a/doc/classes/Vector3.xml b/doc/classes/Vector3.xml
index 872534fd89..387359a97f 100644
--- a/doc/classes/Vector3.xml
+++ b/doc/classes/Vector3.xml
@@ -14,7 +14,7 @@
<link title="Vector math">$DOCS_URL/tutorials/math/vector_math.html</link>
<link title="Advanced vector math">$DOCS_URL/tutorials/math/vectors_advanced.html</link>
<link title="3Blue1Brown Essence of Linear Algebra">https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab</link>
- <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/584</link>
+ <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/2787</link>
<link title="All 3D Demos">https://github.com/godotengine/godot-demo-projects/tree/master/3d</link>
</tutorials>
<constructors>
@@ -86,7 +86,8 @@
<return type="Vector3" />
<param index="0" name="n" type="Vector3" />
<description>
- Returns the vector "bounced off" from a plane defined by the given normal.
+ Returns the vector "bounced off" from a plane defined by the given normal [param n].
+ [b]Note:[/b] [method bounce] performs the operation that most engines and frameworks call [code skip-lint]reflect()[/code].
</description>
</method>
<method name="ceil" qualifiers="const">
@@ -103,11 +104,20 @@
Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.
</description>
</method>
+ <method name="clampf" qualifiers="const">
+ <return type="Vector3" />
+ <param index="0" name="min" type="float" />
+ <param index="1" name="max" type="float" />
+ <description>
+ Returns a new vector with all components clamped between [param min] and [param max], by running [method @GlobalScope.clamp] on each component.
+ </description>
+ </method>
<method name="cross" qualifiers="const">
<return type="Vector3" />
<param index="0" name="with" type="Vector3" />
<description>
Returns the cross product of this vector and [param with].
+ This returns a vector perpendicular to both this and [param with], which would be the normal vector of the plane defined by the two vectors. As there are two such vectors, in opposite directions, this method returns the vector defined by a right-handed coordinate system. If the two vectors are parallel this returns an empty vector, making it useful for testing if two vectors are parallel.
</description>
</method>
<method name="cubic_interpolate" qualifiers="const">
@@ -232,18 +242,46 @@
Returns the vector with a maximum length by limiting its length to [param length].
</description>
</method>
+ <method name="max" qualifiers="const">
+ <return type="Vector3" />
+ <param index="0" name="with" type="Vector3" />
+ <description>
+ Returns the component-wise maximum of this and [param with], equivalent to [code]Vector3(maxf(x, with.x), maxf(y, with.y), maxf(z, with.z))[/code].
+ </description>
+ </method>
<method name="max_axis_index" qualifiers="const">
<return type="int" />
<description>
Returns the axis of the vector's highest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_X].
</description>
</method>
+ <method name="maxf" qualifiers="const">
+ <return type="Vector3" />
+ <param index="0" name="with" type="float" />
+ <description>
+ Returns the component-wise maximum of this and [param with], equivalent to [code]Vector3(maxf(x, with), maxf(y, with), maxf(z, with))[/code].
+ </description>
+ </method>
+ <method name="min" qualifiers="const">
+ <return type="Vector3" />
+ <param index="0" name="with" type="Vector3" />
+ <description>
+ Returns the component-wise minimum of this and [param with], equivalent to [code]Vector3(minf(x, with.x), minf(y, with.y), minf(z, with.z))[/code].
+ </description>
+ </method>
<method name="min_axis_index" qualifiers="const">
<return type="int" />
<description>
Returns the axis of the vector's lowest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_Z].
</description>
</method>
+ <method name="minf" qualifiers="const">
+ <return type="Vector3" />
+ <param index="0" name="with" type="float" />
+ <description>
+ Returns the component-wise minimum of this and [param with], equivalent to [code]Vector3(minf(x, with), minf(y, with), minf(z, with))[/code].
+ </description>
+ </method>
<method name="move_toward" qualifiers="const">
<return type="Vector3" />
<param index="0" name="to" type="Vector3" />
@@ -307,7 +345,8 @@
<return type="Vector3" />
<param index="0" name="n" type="Vector3" />
<description>
- Returns the result of reflecting the vector from a plane defined by the given normal [param n].
+ Returns the result of reflecting the vector through a plane defined by the given normal vector [param n].
+ [b]Note:[/b] [method reflect] differs from what other engines and frameworks call [code skip-lint]reflect()[/code]. In other engines, [code skip-lint]reflect()[/code] returns the result of the vector reflected by the given plane. The reflection thus passes through the given normal. While in Godot the reflection passes through the plane and can be thought of as bouncing off the normal. See also [method bounce] which does what most engines call [code skip-lint]reflect()[/code].
</description>
</method>
<method name="rotated" qualifiers="const">
@@ -362,6 +401,13 @@
Returns a new vector with each component snapped to the nearest multiple of the corresponding component in [param step]. This can also be used to round the components to an arbitrary number of decimals.
</description>
</method>
+ <method name="snappedf" qualifiers="const">
+ <return type="Vector3" />
+ <param index="0" name="step" type="float" />
+ <description>
+ Returns a new vector with each component snapped to the nearest multiple of [param step]. This can also be used to round the components to an arbitrary number of decimals.
+ </description>
+ </method>
</methods>
<members>
<member name="x" type="float" setter="" getter="" default="0.0">
diff --git a/doc/classes/Vector3i.xml b/doc/classes/Vector3i.xml
index ffebd3e1f3..df4624dbb1 100644
--- a/doc/classes/Vector3i.xml
+++ b/doc/classes/Vector3i.xml
@@ -59,6 +59,14 @@
Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.
</description>
</method>
+ <method name="clampi" qualifiers="const">
+ <return type="Vector3i" />
+ <param index="0" name="min" type="int" />
+ <param index="1" name="max" type="int" />
+ <description>
+ Returns a new vector with all components clamped between [param min] and [param max], by running [method @GlobalScope.clamp] on each component.
+ </description>
+ </method>
<method name="distance_squared_to" qualifiers="const">
<return type="int" />
<param index="0" name="to" type="Vector3i" />
@@ -87,18 +95,46 @@
This method runs faster than [method length], so prefer it if you need to compare vectors or need the squared distance for some formula.
</description>
</method>
+ <method name="max" qualifiers="const">
+ <return type="Vector3i" />
+ <param index="0" name="with" type="Vector3i" />
+ <description>
+ Returns the component-wise maximum of this and [param with], equivalent to [code]Vector3i(maxi(x, with.x), maxi(y, with.y), maxi(z, with.z))[/code].
+ </description>
+ </method>
<method name="max_axis_index" qualifiers="const">
<return type="int" />
<description>
Returns the axis of the vector's highest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_X].
</description>
</method>
+ <method name="maxi" qualifiers="const">
+ <return type="Vector3i" />
+ <param index="0" name="with" type="int" />
+ <description>
+ Returns the component-wise maximum of this and [param with], equivalent to [code]Vector3i(maxi(x, with), maxi(y, with), maxi(z, with))[/code].
+ </description>
+ </method>
+ <method name="min" qualifiers="const">
+ <return type="Vector3i" />
+ <param index="0" name="with" type="Vector3i" />
+ <description>
+ Returns the component-wise minimum of this and [param with], equivalent to [code]Vector3i(mini(x, with.x), mini(y, with.y), mini(z, with.z))[/code].
+ </description>
+ </method>
<method name="min_axis_index" qualifiers="const">
<return type="int" />
<description>
Returns the axis of the vector's lowest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_Z].
</description>
</method>
+ <method name="mini" qualifiers="const">
+ <return type="Vector3i" />
+ <param index="0" name="with" type="int" />
+ <description>
+ Returns the component-wise minimum of this and [param with], equivalent to [code]Vector3i(mini(x, with), mini(y, with), mini(z, with))[/code].
+ </description>
+ </method>
<method name="sign" qualifiers="const">
<return type="Vector3i" />
<description>
@@ -112,6 +148,13 @@
Returns a new vector with each component snapped to the closest multiple of the corresponding component in [param step].
</description>
</method>
+ <method name="snappedi" qualifiers="const">
+ <return type="Vector3i" />
+ <param index="0" name="step" type="int" />
+ <description>
+ Returns a new vector with each component snapped to the closest multiple of [param step].
+ </description>
+ </method>
</methods>
<members>
<member name="x" type="int" setter="" getter="" default="0">
diff --git a/doc/classes/Vector4.xml b/doc/classes/Vector4.xml
index b31cdb01c9..87af370462 100644
--- a/doc/classes/Vector4.xml
+++ b/doc/classes/Vector4.xml
@@ -64,6 +64,14 @@
Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.
</description>
</method>
+ <method name="clampf" qualifiers="const">
+ <return type="Vector4" />
+ <param index="0" name="min" type="float" />
+ <param index="1" name="max" type="float" />
+ <description>
+ Returns a new vector with all components clamped between [param min] and [param max], by running [method @GlobalScope.clamp] on each component.
+ </description>
+ </method>
<method name="cubic_interpolate" qualifiers="const">
<return type="Vector4" />
<param index="0" name="b" type="Vector4" />
@@ -176,18 +184,46 @@
Returns the result of the linear interpolation between this vector and [param to] by amount [param weight]. [param weight] is on the range of [code]0.0[/code] to [code]1.0[/code], representing the amount of interpolation.
</description>
</method>
+ <method name="max" qualifiers="const">
+ <return type="Vector4" />
+ <param index="0" name="with" type="Vector4" />
+ <description>
+ Returns the component-wise maximum of this and [param with], equivalent to [code]Vector4(maxf(x, with.x), maxf(y, with.y), maxf(z, with.z), maxf(w, with.w))[/code].
+ </description>
+ </method>
<method name="max_axis_index" qualifiers="const">
<return type="int" />
<description>
Returns the axis of the vector's highest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_X].
</description>
</method>
+ <method name="maxf" qualifiers="const">
+ <return type="Vector4" />
+ <param index="0" name="with" type="float" />
+ <description>
+ Returns the component-wise maximum of this and [param with], equivalent to [code]Vector4(maxf(x, with), maxf(y, with), maxf(z, with), maxf(w, with))[/code].
+ </description>
+ </method>
+ <method name="min" qualifiers="const">
+ <return type="Vector4" />
+ <param index="0" name="with" type="Vector4" />
+ <description>
+ Returns the component-wise minimum of this and [param with], equivalent to [code]Vector4(minf(x, with.x), minf(y, with.y), minf(z, with.z), minf(w, with.w))[/code].
+ </description>
+ </method>
<method name="min_axis_index" qualifiers="const">
<return type="int" />
<description>
Returns the axis of the vector's lowest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_W].
</description>
</method>
+ <method name="minf" qualifiers="const">
+ <return type="Vector4" />
+ <param index="0" name="with" type="float" />
+ <description>
+ Returns the component-wise minimum of this and [param with], equivalent to [code]Vector4(minf(x, with), minf(y, with), minf(z, with), minf(w, with))[/code].
+ </description>
+ </method>
<method name="normalized" qualifiers="const">
<return type="Vector4" />
<description>
@@ -228,6 +264,13 @@
Returns a new vector with each component snapped to the nearest multiple of the corresponding component in [param step]. This can also be used to round the components to an arbitrary number of decimals.
</description>
</method>
+ <method name="snappedf" qualifiers="const">
+ <return type="Vector4" />
+ <param index="0" name="step" type="float" />
+ <description>
+ Returns a new vector with each component snapped to the nearest multiple of [param step]. This can also be used to round the components to an arbitrary number of decimals.
+ </description>
+ </method>
</methods>
<members>
<member name="w" type="float" setter="" getter="" default="0.0">
diff --git a/doc/classes/Vector4i.xml b/doc/classes/Vector4i.xml
index f8a0026066..8f54b767e0 100644
--- a/doc/classes/Vector4i.xml
+++ b/doc/classes/Vector4i.xml
@@ -57,6 +57,14 @@
Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component.
</description>
</method>
+ <method name="clampi" qualifiers="const">
+ <return type="Vector4i" />
+ <param index="0" name="min" type="int" />
+ <param index="1" name="max" type="int" />
+ <description>
+ Returns a new vector with all components clamped between [param min] and [param max], by running [method @GlobalScope.clamp] on each component.
+ </description>
+ </method>
<method name="distance_squared_to" qualifiers="const">
<return type="int" />
<param index="0" name="to" type="Vector4i" />
@@ -85,18 +93,46 @@
This method runs faster than [method length], so prefer it if you need to compare vectors or need the squared distance for some formula.
</description>
</method>
+ <method name="max" qualifiers="const">
+ <return type="Vector4i" />
+ <param index="0" name="with" type="Vector4i" />
+ <description>
+ Returns the component-wise maximum of this and [param with], equivalent to [code]Vector4i(maxi(x, with.x), maxi(y, with.y), maxi(z, with.z), maxi(w, with.w))[/code].
+ </description>
+ </method>
<method name="max_axis_index" qualifiers="const">
<return type="int" />
<description>
Returns the axis of the vector's highest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_X].
</description>
</method>
+ <method name="maxi" qualifiers="const">
+ <return type="Vector4i" />
+ <param index="0" name="with" type="int" />
+ <description>
+ Returns the component-wise maximum of this and [param with], equivalent to [code]Vector4i(maxi(x, with), maxi(y, with), maxi(z, with), maxi(w, with))[/code].
+ </description>
+ </method>
+ <method name="min" qualifiers="const">
+ <return type="Vector4i" />
+ <param index="0" name="with" type="Vector4i" />
+ <description>
+ Returns the component-wise minimum of this and [param with], equivalent to [code]Vector4i(mini(x, with.x), mini(y, with.y), mini(z, with.z), mini(w, with.w))[/code].
+ </description>
+ </method>
<method name="min_axis_index" qualifiers="const">
<return type="int" />
<description>
Returns the axis of the vector's lowest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_W].
</description>
</method>
+ <method name="mini" qualifiers="const">
+ <return type="Vector4i" />
+ <param index="0" name="with" type="int" />
+ <description>
+ Returns the component-wise minimum of this and [param with], equivalent to [code]Vector4i(mini(x, with), mini(y, with), mini(z, with), mini(w, with))[/code].
+ </description>
+ </method>
<method name="sign" qualifiers="const">
<return type="Vector4i" />
<description>
@@ -110,6 +146,13 @@
Returns a new vector with each component snapped to the closest multiple of the corresponding component in [param step].
</description>
</method>
+ <method name="snappedi" qualifiers="const">
+ <return type="Vector4i" />
+ <param index="0" name="step" type="int" />
+ <description>
+ Returns a new vector with each component snapped to the closest multiple of [param step].
+ </description>
+ </method>
</methods>
<members>
<member name="w" type="int" setter="" getter="" default="0">
diff --git a/doc/classes/VehicleBody3D.xml b/doc/classes/VehicleBody3D.xml
index 359e84c3da..5b79067659 100644
--- a/doc/classes/VehicleBody3D.xml
+++ b/doc/classes/VehicleBody3D.xml
@@ -9,7 +9,7 @@
[b]Note:[/b] This class has known issues and isn't designed to provide realistic 3D vehicle physics. If you want advanced vehicle physics, you may have to write your own physics integration using [CharacterBody3D] or [RigidBody3D].
</description>
<tutorials>
- <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/524</link>
+ <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/2752</link>
</tutorials>
<members>
<member name="brake" type="float" setter="set_brake" getter="get_brake" default="0.0">
diff --git a/doc/classes/VehicleWheel3D.xml b/doc/classes/VehicleWheel3D.xml
index 77cb5ca9f8..92b2297bf4 100644
--- a/doc/classes/VehicleWheel3D.xml
+++ b/doc/classes/VehicleWheel3D.xml
@@ -8,7 +8,7 @@
[b]Note:[/b] This class has known issues and isn't designed to provide realistic 3D vehicle physics. If you want advanced vehicle physics, you may need to write your own physics integration using another [PhysicsBody3D] class.
</description>
<tutorials>
- <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/524</link>
+ <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/2752</link>
</tutorials>
<methods>
<method name="get_contact_body" qualifiers="const">
diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml
index dcc817427b..b288ee7ff6 100644
--- a/doc/classes/Viewport.xml
+++ b/doc/classes/Viewport.xml
@@ -13,12 +13,12 @@
<tutorials>
<link title="Using Viewports">$DOCS_URL/tutorials/rendering/viewports.html</link>
<link title="Viewport and canvas transforms">$DOCS_URL/tutorials/2d/2d_transforms.html</link>
- <link title="GUI in 3D Demo">https://godotengine.org/asset-library/asset/127</link>
- <link title="3D in 2D Demo">https://godotengine.org/asset-library/asset/128</link>
- <link title="2D in 3D Demo">https://godotengine.org/asset-library/asset/129</link>
- <link title="Screen Capture Demo">https://godotengine.org/asset-library/asset/130</link>
- <link title="Dynamic Split Screen Demo">https://godotengine.org/asset-library/asset/541</link>
- <link title="3D Viewport Scaling Demo">https://godotengine.org/asset-library/asset/586</link>
+ <link title="GUI in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2807</link>
+ <link title="3D in 2D Viewport Demo">https://godotengine.org/asset-library/asset/2804</link>
+ <link title="2D in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2803</link>
+ <link title="Screen Capture Demo">https://godotengine.org/asset-library/asset/2808</link>
+ <link title="Dynamic Split Screen Demo">https://godotengine.org/asset-library/asset/2806</link>
+ <link title="3D Resolution Scaling Demo">https://godotengine.org/asset-library/asset/2805</link>
</tutorials>
<methods>
<method name="find_world_2d" qualifiers="const">
@@ -347,12 +347,17 @@
Sets the screen-space antialiasing method used. Screen-space antialiasing works by selectively blurring edges in a post-process shader. It differs from MSAA which takes multiple coverage samples while rendering objects. Screen-space AA methods are typically faster than MSAA and will smooth out specular aliasing, but tend to make scenes appear blurry.
</member>
<member name="sdf_oversize" type="int" setter="set_sdf_oversize" getter="get_sdf_oversize" enum="Viewport.SDFOversize" default="1">
+ Controls how much of the original viewport's size should be covered by the 2D signed distance field. This SDF can be sampled in [CanvasItem] shaders and is also used for [GPUParticles2D] collision. Higher values allow portions of occluders located outside the viewport to still be taken into account in the generated signed distance field, at the cost of performance. If you notice particles falling through [LightOccluder2D]s as the occluders leave the viewport, increase this setting.
+ The percentage is added on each axis and on both sides. For example, with the default [constant SDF_OVERSIZE_120_PERCENT], the signed distance field will cover 20% of the viewport's size outside the viewport on each side (top, right, bottom, left).
</member>
<member name="sdf_scale" type="int" setter="set_sdf_scale" getter="get_sdf_scale" enum="Viewport.SDFScale" default="1">
+ The resolution scale to use for the 2D signed distance field. Higher values lead to a more precise and more stable signed distance field as the camera moves, at the cost of performance.
</member>
<member name="snap_2d_transforms_to_pixel" type="bool" setter="set_snap_2d_transforms_to_pixel" getter="is_snap_2d_transforms_to_pixel_enabled" default="false">
+ If [code]true[/code], [CanvasItem] nodes will internally snap to full pixels. Their position can still be sub-pixel, but the decimals will not have effect. This can lead to a crisper appearance at the cost of less smooth movement, especially when [Camera2D] smoothing is enabled.
</member>
<member name="snap_2d_vertices_to_pixel" type="bool" setter="set_snap_2d_vertices_to_pixel" getter="is_snap_2d_vertices_to_pixel_enabled" default="false">
+ If [code]true[/code], vertices of [CanvasItem] nodes will snap to full pixels. Only affects the final vertex positions, not the transforms. This can lead to a crisper appearance at the cost of less smooth movement, especially when [Camera2D] smoothing is enabled.
</member>
<member name="texture_mipmap_bias" type="float" setter="set_texture_mipmap_bias" getter="get_texture_mipmap_bias" default="0.0">
Affects the final texture sharpness by reading from a lower or higher mipmap (also called "texture LOD bias"). Negative values make mipmapped textures sharper but grainier when viewed at a distance, while positive values make mipmapped textures blurrier (even when up close).
@@ -389,7 +394,7 @@
<member name="vrs_texture" type="Texture2D" setter="set_vrs_texture" getter="get_vrs_texture">
Texture to use when [member vrs_mode] is set to [constant Viewport.VRS_TEXTURE].
The texture [i]must[/i] use a lossless compression format so that colors can be matched precisely. The following VRS densities are mapped to various colors, with brighter colors representing a lower level of shading precision:
- [codeblock]
+ [codeblock lang=text]
- 1×1 = rgb(0, 0, 0) - #000000
- 1×2 = rgb(0, 85, 0) - #005500
- 2×1 = rgb(85, 0, 0) - #550000
@@ -402,6 +407,9 @@
- 8×8 = rgb(255, 255, 0) - #ffff00 - Not supported on most hardware
[/codeblock]
</member>
+ <member name="vrs_update_mode" type="int" setter="set_vrs_update_mode" getter="get_vrs_update_mode" enum="Viewport.VRSUpdateMode" default="1">
+ Sets the update mode for Variable Rate Shading (VRS) for the viewport. VRS requires the input texture to be converted to the format usable by the VRS method supported by the hardware. The update mode defines how often this happens. If the GPU does not support VRS, or VRS is not enabled, this property is ignored.
+ </member>
<member name="world_2d" type="World2D" setter="set_world_2d" getter="get_world_2d">
The custom [World2D] which can be used as 2D environment source.
</member>
@@ -515,14 +523,16 @@
Objects are displayed without light information.
</constant>
<constant name="DEBUG_DRAW_LIGHTING" value="2" enum="DebugDraw">
+ Objects are displayed without textures and only with lighting information.
</constant>
<constant name="DEBUG_DRAW_OVERDRAW" value="3" enum="DebugDraw">
Objects are displayed semi-transparent with additive blending so you can see where they are drawing over top of one another. A higher overdraw means you are wasting performance on drawing pixels that are being hidden behind others.
</constant>
<constant name="DEBUG_DRAW_WIREFRAME" value="4" enum="DebugDraw">
- Objects are displayed in wireframe style.
+ Objects are displayed as wireframe models.
</constant>
<constant name="DEBUG_DRAW_NORMAL_BUFFER" value="5" enum="DebugDraw">
+ Objects are displayed without lighting information and their textures replaced by normal mapping.
</constant>
<constant name="DEBUG_DRAW_VOXEL_GI_ALBEDO" value="6" enum="DebugDraw">
Objects are displayed with only the albedo value from [VoxelGI]s.
@@ -540,6 +550,7 @@
Draws the shadow atlas that stores shadows from [DirectionalLight3D]s in the upper left quadrant of the [Viewport].
</constant>
<constant name="DEBUG_DRAW_SCENE_LUMINANCE" value="11" enum="DebugDraw">
+ Draws the scene luminance buffer (if available) in the upper left quadrant of the [Viewport].
</constant>
<constant name="DEBUG_DRAW_SSAO" value="12" enum="DebugDraw">
Draws the screen-space ambient occlusion texture instead of the scene so that you can clearly see how it is affecting objects. In order for this display mode to work, you must have [member Environment.ssao_enabled] set in your [WorldEnvironment].
@@ -554,24 +565,36 @@
Draws the decal atlas used by [Decal]s and light projector textures in the upper left quadrant of the [Viewport].
</constant>
<constant name="DEBUG_DRAW_SDFGI" value="16" enum="DebugDraw">
+ Draws the cascades used to render signed distance field global illumination (SDFGI).
+ Does nothing if the current environment's [member Environment.sdfgi_enabled] is [code]false[/code] or SDFGI is not supported on the platform.
</constant>
<constant name="DEBUG_DRAW_SDFGI_PROBES" value="17" enum="DebugDraw">
+ Draws the probes used for signed distance field global illumination (SDFGI).
+ Does nothing if the current environment's [member Environment.sdfgi_enabled] is [code]false[/code] or SDFGI is not supported on the platform.
</constant>
<constant name="DEBUG_DRAW_GI_BUFFER" value="18" enum="DebugDraw">
+ Draws the buffer used for global illumination (GI).
</constant>
<constant name="DEBUG_DRAW_DISABLE_LOD" value="19" enum="DebugDraw">
+ Draws all of the objects at their highest polycount, without low level of detail (LOD).
</constant>
<constant name="DEBUG_DRAW_CLUSTER_OMNI_LIGHTS" value="20" enum="DebugDraw">
+ Draws the cluster used by [OmniLight3D] nodes to optimize light rendering.
</constant>
<constant name="DEBUG_DRAW_CLUSTER_SPOT_LIGHTS" value="21" enum="DebugDraw">
+ Draws the cluster used by [SpotLight3D] nodes to optimize light rendering.
</constant>
<constant name="DEBUG_DRAW_CLUSTER_DECALS" value="22" enum="DebugDraw">
+ Draws the cluster used by [Decal] nodes to optimize decal rendering.
</constant>
<constant name="DEBUG_DRAW_CLUSTER_REFLECTION_PROBES" value="23" enum="DebugDraw">
+ Draws the cluster used by [ReflectionProbe] nodes to optimize decal rendering.
</constant>
<constant name="DEBUG_DRAW_OCCLUDERS" value="24" enum="DebugDraw">
+ Draws the buffer used for occlusion culling.
</constant>
<constant name="DEBUG_DRAW_MOTION_VECTORS" value="25" enum="DebugDraw">
+ Draws vector lines over the viewport to indicate the movement of pixels between frames.
</constant>
<constant name="DEBUG_DRAW_INTERNAL_BUFFER" value="26" enum="DebugDraw">
Draws the internal resolution buffer of the scene before post-processing is applied.
@@ -591,7 +614,7 @@
Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to [Camera2D] zoom or sprite scaling), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels.
</constant>
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_MAX" value="4" enum="DefaultCanvasItemTextureFilter">
- Max value for [enum DefaultCanvasItemTextureFilter] enum.
+ Represents the size of the [enum DefaultCanvasItemTextureFilter] enum.
</constant>
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_DISABLED" value="0" enum="DefaultCanvasItemTextureRepeat">
Disables textures repeating. Instead, when reading UVs outside the 0-1 range, the value will be clamped to the edge of the texture, resulting in a stretched out look at the borders of the texture.
@@ -603,37 +626,58 @@
Flip the texture when repeating so that the edge lines up instead of abruptly changing.
</constant>
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MAX" value="3" enum="DefaultCanvasItemTextureRepeat">
- Max value for [enum DefaultCanvasItemTextureRepeat] enum.
+ Represents the size of the [enum DefaultCanvasItemTextureRepeat] enum.
</constant>
<constant name="SDF_OVERSIZE_100_PERCENT" value="0" enum="SDFOversize">
+ The signed distance field only covers the viewport's own rectangle.
</constant>
<constant name="SDF_OVERSIZE_120_PERCENT" value="1" enum="SDFOversize">
+ The signed distance field is expanded to cover 20% of the viewport's size around the borders.
</constant>
<constant name="SDF_OVERSIZE_150_PERCENT" value="2" enum="SDFOversize">
+ The signed distance field is expanded to cover 50% of the viewport's size around the borders.
</constant>
<constant name="SDF_OVERSIZE_200_PERCENT" value="3" enum="SDFOversize">
+ The signed distance field is expanded to cover 100% (double) of the viewport's size around the borders.
</constant>
<constant name="SDF_OVERSIZE_MAX" value="4" enum="SDFOversize">
+ Represents the size of the [enum SDFOversize] enum.
</constant>
<constant name="SDF_SCALE_100_PERCENT" value="0" enum="SDFScale">
+ The signed distance field is rendered at full resolution.
</constant>
<constant name="SDF_SCALE_50_PERCENT" value="1" enum="SDFScale">
+ The signed distance field is rendered at half the resolution of this viewport.
</constant>
<constant name="SDF_SCALE_25_PERCENT" value="2" enum="SDFScale">
+ The signed distance field is rendered at a quarter the resolution of this viewport.
</constant>
<constant name="SDF_SCALE_MAX" value="3" enum="SDFScale">
+ Represents the size of the [enum SDFScale] enum.
</constant>
<constant name="VRS_DISABLED" value="0" enum="VRSMode">
- VRS is disabled.
+ Variable Rate Shading is disabled.
</constant>
<constant name="VRS_TEXTURE" value="1" enum="VRSMode">
- VRS uses a texture. Note, for stereoscopic use a texture atlas with a texture for each view.
+ Variable Rate Shading uses a texture. Note, for stereoscopic use a texture atlas with a texture for each view.
</constant>
<constant name="VRS_XR" value="2" enum="VRSMode">
- VRS texture is supplied by the primary [XRInterface].
+ Variable Rate Shading's texture is supplied by the primary [XRInterface].
</constant>
<constant name="VRS_MAX" value="3" enum="VRSMode">
Represents the size of the [enum VRSMode] enum.
</constant>
+ <constant name="VRS_UPDATE_DISABLED" value="0" enum="VRSUpdateMode">
+ The input texture for variable rate shading will not be processed.
+ </constant>
+ <constant name="VRS_UPDATE_ONCE" value="1" enum="VRSUpdateMode">
+ The input texture for variable rate shading will be processed once.
+ </constant>
+ <constant name="VRS_UPDATE_ALWAYS" value="2" enum="VRSUpdateMode">
+ The input texture for variable rate shading will be processed each frame.
+ </constant>
+ <constant name="VRS_UPDATE_MAX" value="3" enum="VRSUpdateMode">
+ Represents the size of the [enum VRSUpdateMode] enum.
+ </constant>
</constants>
</class>
diff --git a/doc/classes/ViewportTexture.xml b/doc/classes/ViewportTexture.xml
index e12933d64b..ba2352ab61 100644
--- a/doc/classes/ViewportTexture.xml
+++ b/doc/classes/ViewportTexture.xml
@@ -4,20 +4,21 @@
Provides the content of a [Viewport] as a dynamic texture.
</brief_description>
<description>
- Provides the content of a [Viewport] as a dynamic [Texture2D]. This can be used to mix controls, 2D game objects, and 3D game objects in the same scene.
- To create a [ViewportTexture] in code, use the [method Viewport.get_texture] method on the target viewport.
+ A [ViewportTexture] provides the content of a [Viewport] as a dynamic [Texture2D]. This can be used to combine the rendering of [Control], [Node2D] and [Node3D] nodes. For example, you can use this texture to display a 3D scene inside a [TextureRect], or a 2D overlay in a [Sprite3D].
+ To get a [ViewportTexture] in code, use the [method Viewport.get_texture] method on the target viewport.
[b]Note:[/b] A [ViewportTexture] is always local to its scene (see [member Resource.resource_local_to_scene]). If the scene root is not ready, it may return incorrect data (see [signal Node.ready]).
+ [b]Note:[/b] Instantiating scenes containing a high-resolution [ViewportTexture] may cause noticeable stutter.
</description>
<tutorials>
- <link title="GUI in 3D Demo">https://godotengine.org/asset-library/asset/127</link>
- <link title="3D in 2D Demo">https://godotengine.org/asset-library/asset/128</link>
- <link title="2D in 3D Demo">https://godotengine.org/asset-library/asset/129</link>
- <link title="3D Viewport Scaling Demo">https://godotengine.org/asset-library/asset/586</link>
+ <link title="GUI in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2807</link>
+ <link title="3D in 2D Viewport Demo">https://godotengine.org/asset-library/asset/2804</link>
+ <link title="2D in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2803</link>
+ <link title="3D Resolution Scaling Demo">https://godotengine.org/asset-library/asset/2805</link>
</tutorials>
<members>
<member name="viewport_path" type="NodePath" setter="set_viewport_path_in_scene" getter="get_viewport_path_in_scene" default="NodePath(&quot;&quot;)">
- The path to the [Viewport] node to display. This is relative to the scene root, not to the node that uses the texture.
- [b]Note:[/b] In the editor, this path is automatically updated when the target viewport or one of its ancestors is renamed or moved. At runtime, the path may not be able to automatically update due to the inability to determine the scene root.
+ The path to the [Viewport] node to display. This is relative to the local scene root (see [method Resource.get_local_scene]), [b]not[/b] to the nodes that use this texture.
+ [b]Note:[/b] In the editor, this path is automatically updated when the target viewport or one of its ancestors is renamed or moved. At runtime, this path may not automatically update if the scene root cannot be found.
</member>
</members>
</class>
diff --git a/doc/classes/VisibleOnScreenNotifier2D.xml b/doc/classes/VisibleOnScreenNotifier2D.xml
index 9d22bf6cff..cf4a0c0018 100644
--- a/doc/classes/VisibleOnScreenNotifier2D.xml
+++ b/doc/classes/VisibleOnScreenNotifier2D.xml
@@ -9,7 +9,7 @@
[b]Note:[/b] [VisibleOnScreenNotifier2D] uses the render culling code to determine whether it's visible on screen, so it won't function unless [member CanvasItem.visible] is set to [code]true[/code].
</description>
<tutorials>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<methods>
<method name="is_on_screen" qualifiers="const">
diff --git a/doc/classes/VisualShaderNodeComment.xml b/doc/classes/VisualShaderNodeComment.xml
new file mode 100644
index 0000000000..28496a715a
--- /dev/null
+++ b/doc/classes/VisualShaderNodeComment.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="VisualShaderNodeComment" inherits="VisualShaderNodeFrame" deprecated="This class has no function anymore and only exists for compatibility." xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ Only exists for compatibility. Use [VisualShaderNodeFrame] as a replacement.
+ </brief_description>
+ <description>
+ This node was replaced by [VisualShaderNodeFrame] and only exists to preserve compatibility. In the [VisualShader] editor it behaves exactly like [VisualShaderNodeFrame].
+ </description>
+ <tutorials>
+ </tutorials>
+ <members>
+ <member name="description" type="String" setter="set_description" getter="get_description" default="&quot;&quot;">
+ This property only exists to preserve data authored in earlier versions of Godot. It has currently no function.
+ </member>
+ </members>
+</class>
diff --git a/doc/classes/VisualShaderNodeFrame.xml b/doc/classes/VisualShaderNodeFrame.xml
index 3126a56abe..a86587f16a 100644
--- a/doc/classes/VisualShaderNodeFrame.xml
+++ b/doc/classes/VisualShaderNodeFrame.xml
@@ -4,7 +4,7 @@
A frame other visual shader nodes can be attached to for better organization.
</brief_description>
<description>
- A rectangular frame that can be used to group visual shader nodes together to improve organization.
+ A rectangular frame that can be used to group visual shader nodes together to improve organization.
Nodes attached to the frame will move with it when it is dragged and it can automatically resize to enclose all attached nodes.
Its title, description and color can be customized.
</description>
diff --git a/doc/classes/VisualShaderNodeReroute.xml b/doc/classes/VisualShaderNodeReroute.xml
new file mode 100644
index 0000000000..1baaa7bbb6
--- /dev/null
+++ b/doc/classes/VisualShaderNodeReroute.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="VisualShaderNodeReroute" inherits="VisualShaderNode" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ A node that allows rerouting a connection within the visual shader graph.
+ </brief_description>
+ <description>
+ Automatically adapts its port type to the type of the incoming connection and ensures valid connections.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="get_port_type" qualifiers="const">
+ <return type="int" enum="VisualShaderNode.PortType" />
+ <description>
+ Returns the port type of the reroute node.
+ </description>
+ </method>
+ </methods>
+</class>
diff --git a/doc/classes/VoxelGI.xml b/doc/classes/VoxelGI.xml
index 9e4026a750..93679cccf6 100644
--- a/doc/classes/VoxelGI.xml
+++ b/doc/classes/VoxelGI.xml
@@ -12,7 +12,7 @@
</description>
<tutorials>
<link title="Using Voxel global illumination">$DOCS_URL/tutorials/3d/global_illumination/using_voxel_gi.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="bake">
diff --git a/doc/classes/VoxelGIData.xml b/doc/classes/VoxelGIData.xml
index 088854e8f4..43bf04b1f5 100644
--- a/doc/classes/VoxelGIData.xml
+++ b/doc/classes/VoxelGIData.xml
@@ -8,7 +8,7 @@
[b]Note:[/b] To prevent text-based scene files ([code].tscn[/code]) from growing too much and becoming slow to load and save, always save [VoxelGIData] to an external binary resource file ([code].res[/code]) instead of embedding it within the scene. This can be done by clicking the dropdown arrow next to the [VoxelGIData] resource, choosing [b]Edit[/b], clicking the floppy disk icon at the top of the Inspector then choosing [b]Save As...[/b].
</description>
<tutorials>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="allocate">
diff --git a/doc/classes/WorkerThreadPool.xml b/doc/classes/WorkerThreadPool.xml
index fa1f08b149..2b1bc136cb 100644
--- a/doc/classes/WorkerThreadPool.xml
+++ b/doc/classes/WorkerThreadPool.xml
@@ -58,6 +58,7 @@
Adds [param action] as a group task to be executed by the worker threads. The [Callable] will be called a number of times based on [param elements], with the first thread calling it with the value [code]0[/code] as a parameter, and each consecutive execution incrementing this value by 1 until it reaches [code]element - 1[/code].
The number of threads the task is distributed to is defined by [param tasks_needed], where the default value [code]-1[/code] means it is distributed to all worker threads. [param high_priority] determines if the task has a high priority or a low priority (default). You can optionally provide a [param description] to help with debugging.
Returns a group task ID that can be used by other methods.
+ [b]Warning:[/b] Every task must be waited for completion using [method wait_for_task_completion] or [method wait_for_group_task_completion] at some point so that any allocated resources inside the task can be cleaned up.
</description>
</method>
<method name="add_task">
@@ -68,6 +69,7 @@
<description>
Adds [param action] as a task to be executed by a worker thread. [param high_priority] determines if the task has a high priority or a low priority (default). You can optionally provide a [param description] to help with debugging.
Returns a task ID that can be used by other methods.
+ [b]Warning:[/b] Every task must be waited for completion using [method wait_for_task_completion] or [method wait_for_group_task_completion] at some point so that any allocated resources inside the task can be cleaned up.
</description>
</method>
<method name="get_group_processed_element_count" qualifiers="const">
@@ -83,6 +85,7 @@
<param index="0" name="group_id" type="int" />
<description>
Returns [code]true[/code] if the group task with the given ID is completed.
+ [b]Note:[/b] You should only call this method between adding the group task and awaiting its completion.
</description>
</method>
<method name="is_task_completed" qualifiers="const">
@@ -90,6 +93,7 @@
<param index="0" name="task_id" type="int" />
<description>
Returns [code]true[/code] if the task with the given ID is completed.
+ [b]Note:[/b] You should only call this method between adding the task and awaiting its completion.
</description>
</method>
<method name="wait_for_group_task_completion">
diff --git a/doc/classes/WorldEnvironment.xml b/doc/classes/WorldEnvironment.xml
index c7ee160174..80dc46ae93 100644
--- a/doc/classes/WorldEnvironment.xml
+++ b/doc/classes/WorldEnvironment.xml
@@ -10,9 +10,8 @@
</description>
<tutorials>
<link title="Environment and post-processing">$DOCS_URL/tutorials/3d/environment_and_post_processing.html</link>
- <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/123</link>
- <link title="2D HDR Demo">https://godotengine.org/asset-library/asset/110</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/2742</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<members>
<member name="camera_attributes" type="CameraAttributes" setter="set_camera_attributes" getter="get_camera_attributes">
diff --git a/doc/classes/XRBodyModifier3D.xml b/doc/classes/XRBodyModifier3D.xml
index 49a226c106..d08b92a56c 100644
--- a/doc/classes/XRBodyModifier3D.xml
+++ b/doc/classes/XRBodyModifier3D.xml
@@ -4,15 +4,15 @@
A node for driving body meshes from [XRBodyTracker] data.
</brief_description>
<description>
- This node uses body tracking data from a [XRBodyTracker] to animate the skeleton of a body mesh.
- This node positions itself at the [constant XRBodyTracker.JOINT_ROOT] position and scales itself to [member XRServer.world_scale]. Adding the body model as a child of this node will result in the model being positioned and scaled correctly for XR experiences.
+ This node uses body tracking data from an [XRBodyTracker] to pose the skeleton of a body mesh.
+ Positioning of the body is performed by creating an [XRNode3D] ancestor of the body mesh driven by the same [XRBodyTracker].
The body tracking position-data is scaled by [member Skeleton3D.motion_scale] when applied to the skeleton, which can be used to adjust the tracked body to match the scale of the body model.
</description>
<tutorials>
<link title="XR documentation index">$DOCS_URL/tutorials/xr/index.html</link>
</tutorials>
<members>
- <member name="body_tracker" type="StringName" setter="set_body_tracker" getter="get_body_tracker" default="&amp;&quot;/user/body&quot;">
+ <member name="body_tracker" type="StringName" setter="set_body_tracker" getter="get_body_tracker" default="&amp;&quot;/user/body_tracker&quot;">
The name of the [XRBodyTracker] registered with [XRServer] to obtain the body tracking data from.
</member>
<member name="body_update" type="int" setter="set_body_update" getter="get_body_update" enum="XRBodyModifier3D.BodyUpdate" is_bitfield="true" default="7">
@@ -21,9 +21,6 @@
<member name="bone_update" type="int" setter="set_bone_update" getter="get_bone_update" enum="XRBodyModifier3D.BoneUpdate" default="0">
Specifies the type of updates to perform on the bones.
</member>
- <member name="show_when_tracked" type="bool" setter="set_show_when_tracked" getter="get_show_when_tracked" default="true">
- If true then the nodes visibility is determined by whether tracking data is available.
- </member>
</members>
<constants>
<constant name="BODY_UPDATE_UPPER_BODY" value="1" enum="BodyUpdate" is_bitfield="true">
diff --git a/doc/classes/XRBodyTracker.xml b/doc/classes/XRBodyTracker.xml
index 9c869b4f5f..06a4879953 100644
--- a/doc/classes/XRBodyTracker.xml
+++ b/doc/classes/XRBodyTracker.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="XRBodyTracker" inherits="RefCounted" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="XRBodyTracker" inherits="XRPositionalTracker" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A tracked body in XR.
</brief_description>
@@ -49,6 +49,7 @@
<member name="has_tracking_data" type="bool" setter="set_has_tracking_data" getter="get_has_tracking_data" default="false">
If [code]true[/code], the body tracking data is valid.
</member>
+ <member name="type" type="int" setter="set_tracker_type" getter="get_tracker_type" overrides="XRTracker" enum="XRServer.TrackerType" default="32" />
</members>
<constants>
<constant name="BODY_FLAG_UPPER_BODY_SUPPORTED" value="1" enum="BodyFlags" is_bitfield="true">
diff --git a/doc/classes/XRControllerTracker.xml b/doc/classes/XRControllerTracker.xml
new file mode 100644
index 0000000000..50727a7633
--- /dev/null
+++ b/doc/classes/XRControllerTracker.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="XRControllerTracker" inherits="XRPositionalTracker" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ A tracked controller.
+ </brief_description>
+ <description>
+ An instance of this object represents a controller that is tracked.
+ As controllers are turned on and the [XRInterface] detects them, instances of this object are automatically added to this list of active tracking objects accessible through the [XRServer].
+ The [XRController3D] consumes objects of this type and should be used in your project.
+ </description>
+ <tutorials>
+ <link title="XR documentation index">$DOCS_URL/tutorials/xr/index.html</link>
+ </tutorials>
+ <members>
+ <member name="type" type="int" setter="set_tracker_type" getter="get_tracker_type" overrides="XRTracker" enum="XRServer.TrackerType" default="2" />
+ </members>
+</class>
diff --git a/doc/classes/XRFaceModifier3D.xml b/doc/classes/XRFaceModifier3D.xml
index 8caa74cff7..9599051b1b 100644
--- a/doc/classes/XRFaceModifier3D.xml
+++ b/doc/classes/XRFaceModifier3D.xml
@@ -12,7 +12,7 @@
<link title="XR documentation index">$DOCS_URL/tutorials/xr/index.html</link>
</tutorials>
<members>
- <member name="face_tracker" type="StringName" setter="set_face_tracker" getter="get_face_tracker" default="&amp;&quot;/user/head&quot;">
+ <member name="face_tracker" type="StringName" setter="set_face_tracker" getter="get_face_tracker" default="&amp;&quot;/user/face_tracker&quot;">
The [XRFaceTracker] path.
</member>
<member name="target" type="NodePath" setter="set_target" getter="get_target" default="NodePath(&quot;&quot;)">
diff --git a/doc/classes/XRFaceTracker.xml b/doc/classes/XRFaceTracker.xml
index 96ed137324..23a9a9cb17 100644
--- a/doc/classes/XRFaceTracker.xml
+++ b/doc/classes/XRFaceTracker.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="XRFaceTracker" inherits="RefCounted" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="XRFaceTracker" inherits="XRTracker" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A tracked face.
</brief_description>
@@ -31,6 +31,7 @@
<member name="blend_shapes" type="PackedFloat32Array" setter="set_blend_shapes" getter="get_blend_shapes" default="PackedFloat32Array()">
The array of face blend shape weights with indices corresponding to the [enum BlendShapeEntry] enum.
</member>
+ <member name="type" type="int" setter="set_tracker_type" getter="get_tracker_type" overrides="XRTracker" enum="XRServer.TrackerType" default="64" />
</members>
<constants>
<constant name="FT_EYE_LOOK_OUT_RIGHT" value="0" enum="BlendShapeEntry">
diff --git a/doc/classes/XRHandModifier3D.xml b/doc/classes/XRHandModifier3D.xml
index 9ff27bb982..09ff321070 100644
--- a/doc/classes/XRHandModifier3D.xml
+++ b/doc/classes/XRHandModifier3D.xml
@@ -4,8 +4,8 @@
A node for driving hand meshes from [XRHandTracker] data.
</brief_description>
<description>
- This node uses hand tracking data from a [XRHandTracker] to animate the skeleton of a hand mesh.
- This node positions itself at the [constant XRHandTracker.HAND_JOINT_PALM] position and scales itself to [member XRServer.world_scale]. Adding the hand model as a child of this node will result in the model being positioned and scaled correctly for XR experiences.
+ This node uses hand tracking data from an [XRHandTracker] to pose the skeleton of a hand mesh.
+ Positioning of hands is performed by creating an [XRNode3D] ancestor of the hand mesh driven by the same [XRHandTracker].
The hand tracking position-data is scaled by [member Skeleton3D.motion_scale] when applied to the skeleton, which can be used to adjust the tracked hand to match the scale of the hand model.
</description>
<tutorials>
@@ -15,7 +15,7 @@
<member name="bone_update" type="int" setter="set_bone_update" getter="get_bone_update" enum="XRHandModifier3D.BoneUpdate" default="0">
Specifies the type of updates to perform on the bones.
</member>
- <member name="hand_tracker" type="StringName" setter="set_hand_tracker" getter="get_hand_tracker" default="&amp;&quot;/user/left&quot;">
+ <member name="hand_tracker" type="StringName" setter="set_hand_tracker" getter="get_hand_tracker" default="&amp;&quot;/user/hand_tracker/left&quot;">
The name of the [XRHandTracker] registered with [XRServer] to obtain the hand tracking data from.
</member>
</members>
diff --git a/doc/classes/XRHandTracker.xml b/doc/classes/XRHandTracker.xml
index 932fec083a..636af6625b 100644
--- a/doc/classes/XRHandTracker.xml
+++ b/doc/classes/XRHandTracker.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="XRHandTracker" inherits="RefCounted" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="XRHandTracker" inherits="XRPositionalTracker" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A tracked hand in XR.
</brief_description>
@@ -88,26 +88,16 @@
</method>
</methods>
<members>
- <member name="hand" type="int" setter="set_hand" getter="get_hand" enum="XRHandTracker.Hand" default="0">
- The type of hand.
- </member>
+ <member name="hand" type="int" setter="set_tracker_hand" getter="get_tracker_hand" overrides="XRPositionalTracker" enum="XRPositionalTracker.TrackerHand" default="1" />
<member name="hand_tracking_source" type="int" setter="set_hand_tracking_source" getter="get_hand_tracking_source" enum="XRHandTracker.HandTrackingSource" default="0">
The source of the hand tracking data.
</member>
<member name="has_tracking_data" type="bool" setter="set_has_tracking_data" getter="get_has_tracking_data" default="false">
If [code]true[/code], the hand tracking data is valid.
</member>
+ <member name="type" type="int" setter="set_tracker_type" getter="get_tracker_type" overrides="XRTracker" enum="XRServer.TrackerType" default="16" />
</members>
<constants>
- <constant name="HAND_LEFT" value="0" enum="Hand">
- A left hand.
- </constant>
- <constant name="HAND_RIGHT" value="1" enum="Hand">
- A right hand.
- </constant>
- <constant name="HAND_MAX" value="2" enum="Hand">
- Represents the size of the [enum Hand] enum.
- </constant>
<constant name="HAND_TRACKING_SOURCE_UNKNOWN" value="0" enum="HandTrackingSource">
The source of hand tracking data is unknown.
</constant>
diff --git a/doc/classes/XRNode3D.xml b/doc/classes/XRNode3D.xml
index 3da1873ed8..dfe5600fcc 100644
--- a/doc/classes/XRNode3D.xml
+++ b/doc/classes/XRNode3D.xml
@@ -46,6 +46,9 @@
The name of the pose we're bound to. Which poses a tracker supports is not known during design time.
Godot defines number of standard pose names such as [code]aim[/code] and [code]grip[/code] but other may be configured within a given [XRInterface].
</member>
+ <member name="show_when_tracked" type="bool" setter="set_show_when_tracked" getter="get_show_when_tracked" default="false">
+ Enables showing the node when tracking starts, and hiding the node when tracking is lost.
+ </member>
<member name="tracker" type="StringName" setter="set_tracker" getter="get_tracker" default="&amp;&quot;&quot;">
The name of the tracker we're bound to. Which trackers are available is not known during design time.
Godot defines a number of standard trackers such as [code]left_hand[/code] and [code]right_hand[/code] but others may be configured within a given [XRInterface].
diff --git a/doc/classes/XRPositionalTracker.xml b/doc/classes/XRPositionalTracker.xml
index bd2432af50..2b2eae0c5e 100644
--- a/doc/classes/XRPositionalTracker.xml
+++ b/doc/classes/XRPositionalTracker.xml
@@ -1,18 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="XRPositionalTracker" inherits="RefCounted" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="XRPositionalTracker" inherits="XRTracker" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A tracked object.
</brief_description>
<description>
An instance of this object represents a device that is tracked, such as a controller or anchor point. HMDs aren't represented here as they are handled internally.
As controllers are turned on and the [XRInterface] detects them, instances of this object are automatically added to this list of active tracking objects accessible through the [XRServer].
- The [XRController3D] and [XRAnchor3D] both consume objects of this type and should be used in your project. The positional trackers are just under-the-hood objects that make this all work. These are mostly exposed so that GDExtension-based interfaces can interact with them.
+ The [XRNode3D] and [XRAnchor3D] both consume objects of this type and should be used in your project. The positional trackers are just under-the-hood objects that make this all work. These are mostly exposed so that GDExtension-based interfaces can interact with them.
</description>
<tutorials>
<link title="XR documentation index">$DOCS_URL/tutorials/xr/index.html</link>
</tutorials>
<methods>
- <method name="get_input" qualifiers="const">
+ <method name="get_input" qualifiers="const" deprecated="Use through [XRControllerTracker].">
<return type="Variant" />
<param index="0" name="name" type="StringName" />
<description>
@@ -40,7 +40,7 @@
Marks this pose as invalid, we don't clear the last reported state but it allows users to decide if trackers need to be hidden if we lose tracking or just remain at their last known position.
</description>
</method>
- <method name="set_input">
+ <method name="set_input" deprecated="Use through [XRControllerTracker].">
<return type="void" />
<param index="0" name="name" type="StringName" />
<param index="1" name="value" type="Variant" />
@@ -61,23 +61,12 @@
</method>
</methods>
<members>
- <member name="description" type="String" setter="set_tracker_desc" getter="get_tracker_desc" default="&quot;&quot;">
- The description of this tracker.
- </member>
<member name="hand" type="int" setter="set_tracker_hand" getter="get_tracker_hand" enum="XRPositionalTracker.TrackerHand" default="0">
Defines which hand this tracker relates to.
</member>
- <member name="name" type="StringName" setter="set_tracker_name" getter="get_tracker_name" default="&amp;&quot;Unknown&quot;">
- The unique name of this tracker. The trackers that are available differ between various XR runtimes and can often be configured by the user. Godot maintains a number of reserved names that it expects the [XRInterface] to implement if applicable:
- - [code]left_hand[/code] identifies the controller held in the players left hand
- - [code]right_hand[/code] identifies the controller held in the players right hand
- </member>
<member name="profile" type="String" setter="set_tracker_profile" getter="get_tracker_profile" default="&quot;&quot;">
The profile associated with this tracker, interface dependent but will indicate the type of controller being tracked.
</member>
- <member name="type" type="int" setter="set_tracker_type" getter="get_tracker_type" enum="XRServer.TrackerType" default="128">
- The type of tracker.
- </member>
</members>
<signals>
<signal name="button_pressed">
@@ -135,5 +124,8 @@
<constant name="TRACKER_HAND_RIGHT" value="2" enum="TrackerHand">
This tracker is the right hand controller.
</constant>
+ <constant name="TRACKER_HAND_MAX" value="3" enum="TrackerHand">
+ Represents the size of the [enum TrackerHand] enum.
+ </constant>
</constants>
</class>
diff --git a/doc/classes/XRServer.xml b/doc/classes/XRServer.xml
index 671cc8f15c..49b13986ca 100644
--- a/doc/classes/XRServer.xml
+++ b/doc/classes/XRServer.xml
@@ -10,30 +10,6 @@
<link title="XR documentation index">$DOCS_URL/tutorials/xr/index.html</link>
</tutorials>
<methods>
- <method name="add_body_tracker">
- <return type="void" />
- <param index="0" name="tracker_name" type="StringName" />
- <param index="1" name="body_tracker" type="XRBodyTracker" />
- <description>
- Registers a new [XRBodyTracker] that tracks the joints of a body.
- </description>
- </method>
- <method name="add_face_tracker">
- <return type="void" />
- <param index="0" name="tracker_name" type="StringName" />
- <param index="1" name="face_tracker" type="XRFaceTracker" />
- <description>
- Registers a new [XRFaceTracker] that tracks the blend shapes of a face.
- </description>
- </method>
- <method name="add_hand_tracker">
- <return type="void" />
- <param index="0" name="tracker_name" type="StringName" />
- <param index="1" name="hand_tracker" type="XRHandTracker" />
- <description>
- Registers a new [XRHandTracker] that tracks the joints of a hand.
- </description>
- </method>
<method name="add_interface">
<return type="void" />
<param index="0" name="interface" type="XRInterface" />
@@ -43,9 +19,9 @@
</method>
<method name="add_tracker">
<return type="void" />
- <param index="0" name="tracker" type="XRPositionalTracker" />
+ <param index="0" name="tracker" type="XRTracker" />
<description>
- Registers a new [XRPositionalTracker] that tracks a spatial location in real space.
+ Registers a new [XRTracker] that tracks a physical object.
</description>
</method>
<method name="center_on_hmd">
@@ -61,8 +37,8 @@
You should call this method after a few seconds have passed. For example, when the user requests a realignment of the display holding a designated button on a controller for a short period of time, or when implementing a teleport mechanism.
</description>
</method>
- <method name="clear_reference_frame" qualifiers="const">
- <return type="Transform3D" />
+ <method name="clear_reference_frame">
+ <return type="void" />
<description>
Clears the reference frame that was set by previous calls to [method center_on_hmd].
</description>
@@ -74,45 +50,6 @@
Finds an interface by its [param name]. For example, if your project uses capabilities of an AR/VR platform, you can find the interface for that platform by name and initialize it.
</description>
</method>
- <method name="get_body_tracker" qualifiers="const">
- <return type="XRBodyTracker" />
- <param index="0" name="tracker_name" type="StringName" />
- <description>
- Returns the [XRBodyTracker] with the given tracker name.
- </description>
- </method>
- <method name="get_body_trackers" qualifiers="const">
- <return type="Dictionary" />
- <description>
- Returns a dictionary of the registered body trackers. Each element of the dictionary is a tracker name mapping to the [XRBodyTracker] instance.
- </description>
- </method>
- <method name="get_face_tracker" qualifiers="const">
- <return type="XRFaceTracker" />
- <param index="0" name="tracker_name" type="StringName" />
- <description>
- Returns the [XRFaceTracker] with the given tracker name.
- </description>
- </method>
- <method name="get_face_trackers" qualifiers="const">
- <return type="Dictionary" />
- <description>
- Returns a dictionary of the registered face trackers. Each element of the dictionary is a tracker name mapping to the [XRFaceTracker] instance.
- </description>
- </method>
- <method name="get_hand_tracker" qualifiers="const">
- <return type="XRHandTracker" />
- <param index="0" name="tracker_name" type="StringName" />
- <description>
- Returns the [XRHandTracker] with the given tracker name.
- </description>
- </method>
- <method name="get_hand_trackers" qualifiers="const">
- <return type="Dictionary" />
- <description>
- Returns a dictionary of the registered hand trackers. Each element of the dictionary is a tracker name mapping to the [XRHandTracker] instance.
- </description>
- </method>
<method name="get_hmd_transform">
<return type="Transform3D" />
<description>
@@ -145,7 +82,7 @@
</description>
</method>
<method name="get_tracker" qualifiers="const">
- <return type="XRPositionalTracker" />
+ <return type="XRTracker" />
<param index="0" name="tracker_name" type="StringName" />
<description>
Returns the positional tracker with the given [param tracker_name].
@@ -158,27 +95,6 @@
Returns a dictionary of trackers for [param tracker_types].
</description>
</method>
- <method name="remove_body_tracker">
- <return type="void" />
- <param index="0" name="tracker_name" type="StringName" />
- <description>
- Removes a registered [XRBodyTracker].
- </description>
- </method>
- <method name="remove_face_tracker">
- <return type="void" />
- <param index="0" name="tracker_name" type="StringName" />
- <description>
- Removes a registered [XRFaceTracker].
- </description>
- </method>
- <method name="remove_hand_tracker">
- <return type="void" />
- <param index="0" name="tracker_name" type="StringName" />
- <description>
- Removes a registered [XRHandTracker].
- </description>
- </method>
<method name="remove_interface">
<return type="void" />
<param index="0" name="interface" type="XRInterface" />
@@ -188,9 +104,9 @@
</method>
<method name="remove_tracker">
<return type="void" />
- <param index="0" name="tracker" type="XRPositionalTracker" />
+ <param index="0" name="tracker" type="XRTracker" />
<description>
- Removes this positional [param tracker].
+ Removes this [param tracker].
</description>
</method>
</methods>
@@ -207,66 +123,6 @@
</member>
</members>
<signals>
- <signal name="body_tracker_added">
- <param index="0" name="tracker_name" type="StringName" />
- <param index="1" name="body_tracker" type="XRBodyTracker" />
- <description>
- Emitted when a new body tracker is added.
- </description>
- </signal>
- <signal name="body_tracker_removed">
- <param index="0" name="tracker_name" type="StringName" />
- <description>
- Emitted when a body tracker is removed.
- </description>
- </signal>
- <signal name="body_tracker_updated">
- <param index="0" name="tracker_name" type="StringName" />
- <param index="1" name="body_tracker" type="XRBodyTracker" />
- <description>
- Emitted when an existing body tracker is updated.
- </description>
- </signal>
- <signal name="face_tracker_added">
- <param index="0" name="tracker_name" type="StringName" />
- <param index="1" name="face_tracker" type="XRFaceTracker" />
- <description>
- Emitted when a new face tracker is added.
- </description>
- </signal>
- <signal name="face_tracker_removed">
- <param index="0" name="tracker_name" type="StringName" />
- <description>
- Emitted when a face tracker is removed.
- </description>
- </signal>
- <signal name="face_tracker_updated">
- <param index="0" name="tracker_name" type="StringName" />
- <param index="1" name="face_tracker" type="XRFaceTracker" />
- <description>
- Emitted when an existing face tracker is updated.
- </description>
- </signal>
- <signal name="hand_tracker_added">
- <param index="0" name="tracker_name" type="StringName" />
- <param index="1" name="hand_tracker" type="XRHandTracker" />
- <description>
- Emitted when a new hand tracker is added.
- </description>
- </signal>
- <signal name="hand_tracker_removed">
- <param index="0" name="tracker_name" type="StringName" />
- <description>
- Emitted when a hand tracker is removed.
- </description>
- </signal>
- <signal name="hand_tracker_updated">
- <param index="0" name="tracker_name" type="StringName" />
- <param index="1" name="hand_tracker" type="XRHandTracker" />
- <description>
- Emitted when an existing hand tracker is updated.
- </description>
- </signal>
<signal name="interface_added">
<param index="0" name="interface_name" type="StringName" />
<description>
@@ -279,6 +135,11 @@
Emitted when an interface is removed.
</description>
</signal>
+ <signal name="reference_frame_changed">
+ <description>
+ Emitted when the reference frame transform changes.
+ </description>
+ </signal>
<signal name="tracker_added">
<param index="0" name="tracker_name" type="StringName" />
<param index="1" name="type" type="int" />
@@ -314,6 +175,15 @@
<constant name="TRACKER_ANCHOR" value="8" enum="TrackerType">
The tracker tracks the location and size of an AR anchor.
</constant>
+ <constant name="TRACKER_HAND" value="16" enum="TrackerType">
+ The tracker tracks the location and joints of a hand.
+ </constant>
+ <constant name="TRACKER_BODY" value="32" enum="TrackerType">
+ The tracker tracks the location and joints of a body.
+ </constant>
+ <constant name="TRACKER_FACE" value="64" enum="TrackerType">
+ The tracker tracks the expressions of a face.
+ </constant>
<constant name="TRACKER_ANY_KNOWN" value="127" enum="TrackerType">
Used internally to filter trackers of any known type.
</constant>
diff --git a/doc/classes/XRTracker.xml b/doc/classes/XRTracker.xml
new file mode 100644
index 0000000000..00a44bd03e
--- /dev/null
+++ b/doc/classes/XRTracker.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="XRTracker" inherits="RefCounted" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ A tracked object.
+ </brief_description>
+ <description>
+ This object is the base of all XR trackers.
+ </description>
+ <tutorials>
+ <link title="XR documentation index">$DOCS_URL/tutorials/xr/index.html</link>
+ </tutorials>
+ <members>
+ <member name="description" type="String" setter="set_tracker_desc" getter="get_tracker_desc" default="&quot;&quot;">
+ The description of this tracker.
+ </member>
+ <member name="name" type="StringName" setter="set_tracker_name" getter="get_tracker_name" default="&amp;&quot;Unknown&quot;">
+ The unique name of this tracker. The trackers that are available differ between various XR runtimes and can often be configured by the user. Godot maintains a number of reserved names that it expects the [XRInterface] to implement if applicable:
+ - [code]head[/code] identifies the [XRPositionalTracker] of the players head
+ - [code]left_hand[/code] identifies the [XRControllerTracker] in the players left hand
+ - [code]right_hand[/code] identifies the [XRControllerTracker] in the players right hand
+ - [code]/user/hand_tracker/left[/code] identifies the [XRHandTracker] for the players left hand
+ - [code]/user/hand_tracker/right[/code] identifies the [XRHandTracker] for the players right hand
+ - [code]/user/body_tracker[/code] identifies the [XRBodyTracker] for the players body
+ - [code]/user/face_tracker[/code] identifies the [XRFaceTracker] for the players face
+ </member>
+ <member name="type" type="int" setter="set_tracker_type" getter="get_tracker_type" enum="XRServer.TrackerType" default="128">
+ The type of tracker.
+ </member>
+ </members>
+</class>
diff --git a/doc/classes/XRVRS.xml b/doc/classes/XRVRS.xml
new file mode 100644
index 0000000000..b19b461fab
--- /dev/null
+++ b/doc/classes/XRVRS.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="XRVRS" inherits="Object" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ Helper class for XR interfaces that generates VRS images.
+ </brief_description>
+ <description>
+ This class is used by various XR interfaces to generate VRS textures that can be used to speed up rendering.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="make_vrs_texture">
+ <return type="RID" />
+ <param index="0" name="target_size" type="Vector2" />
+ <param index="1" name="eye_foci" type="PackedVector2Array" />
+ <description>
+ Generates the VRS texture based on a render [param target_size] adjusted by our VRS tile size. For each eyes focal point passed in [param eye_foci] a layer is created. Focal point should be in NDC.
+ The result will be cached, requesting a VRS texture with unchanged parameters and settings will return the cached RID.
+ </description>
+ </method>
+ </methods>
+ <members>
+ <member name="vrs_min_radius" type="float" setter="set_vrs_min_radius" getter="get_vrs_min_radius" default="20.0">
+ The minimum radius around the focal point where full quality is guaranteed if VRS is used as a percentage of screen size.
+ </member>
+ <member name="vrs_strength" type="float" setter="set_vrs_strength" getter="get_vrs_strength" default="1.0">
+ The strength used to calculate the VRS density map. The greater this value, the more noticeable VRS is.
+ </member>
+ </members>
+</class>
diff --git a/doc/tools/doc_status.py b/doc/tools/doc_status.py
index a23c11b585..57c03bfdee 100755
--- a/doc/tools/doc_status.py
+++ b/doc/tools/doc_status.py
@@ -1,11 +1,11 @@
#!/usr/bin/env python3
import fnmatch
-import os
-import sys
-import re
import math
+import os
import platform
+import re
+import sys
import xml.etree.ElementTree as ET
from typing import Dict, List, Set
@@ -286,7 +286,7 @@ class ClassStatus:
status.progresses[tag.tag].increment(is_deprecated or is_experimental or has_descr)
elif tag.tag in ["constants", "members", "theme_items"]:
for sub_tag in list(tag):
- if not sub_tag.text is None:
+ if sub_tag.text is not None:
is_deprecated = "deprecated" in sub_tag.attrib
is_experimental = "experimental" in sub_tag.attrib
has_descr = len(sub_tag.text.strip()) > 0
diff --git a/doc/tools/make_rst.py b/doc/tools/make_rst.py
index 0d2bc87f55..761a7f8f4a 100755
--- a/doc/tools/make_rst.py
+++ b/doc/tools/make_rst.py
@@ -4,17 +4,16 @@
import argparse
import os
-import platform
import re
import sys
import xml.etree.ElementTree as ET
from collections import OrderedDict
-from typing import List, Dict, TextIO, Tuple, Optional, Any, Union
+from typing import Any, Dict, List, Optional, TextIO, Tuple, Union
# Import hardcoded version information from version.py
root_directory = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../")
sys.path.append(root_directory) # Include the root directory
-import version
+import version # noqa: E402
# $DOCS_URL/path/to/page.html(#fragment-tag)
GODOT_DOCS_PATTERN = re.compile(r"^\$DOCS_URL/(.*)\.html(#.*)?$")
@@ -87,6 +86,7 @@ BASE_STRINGS = [
"This method may be changed or removed in future versions.",
"This operator may be changed or removed in future versions.",
"This theme property may be changed or removed in future versions.",
+ "[b]Note:[/b] The returned array is [i]copied[/i] and any changes to it will not update the original property value. See [%s] for more details.",
]
strings_l10n: Dict[str, str] = {}
@@ -142,9 +142,23 @@ CLASSES_WITH_CSHARP_DIFFERENCES: List[str] = [
"PackedStringArray",
"PackedVector2Array",
"PackedVector3Array",
+ "PackedVector4Array",
"Variant",
]
+PACKED_ARRAY_TYPES: List[str] = [
+ "PackedByteArray",
+ "PackedColorArray",
+ "PackedFloat32Array",
+ "Packedfloat64Array",
+ "PackedInt32Array",
+ "PackedInt64Array",
+ "PackedStringArray",
+ "PackedVector2Array",
+ "PackedVector3Array",
+ "PackedVector4Array",
+]
+
class State:
def __init__(self) -> None:
@@ -662,17 +676,6 @@ class ScriptLanguageParityCheck:
# Entry point for the RST generator.
def main() -> None:
- # Enable ANSI escape code support on Windows 10 and later (for colored console output).
- # <https://bugs.python.org/issue29059>
- if platform.system().lower() == "windows":
- from ctypes import windll, c_int, byref # type: ignore
-
- stdout_handle = windll.kernel32.GetStdHandle(c_int(-11))
- mode = c_int(0)
- windll.kernel32.GetConsoleMode(c_int(stdout_handle), byref(mode))
- mode = c_int(mode.value | 4)
- windll.kernel32.SetConsoleMode(c_int(stdout_handle), mode)
-
parser = argparse.ArgumentParser()
parser.add_argument("path", nargs="+", help="A path to an XML file or a directory containing XML files to parse.")
parser.add_argument("--filter", default="", help="The filepath pattern for XML files to filter.")
@@ -696,7 +699,25 @@ def main() -> None:
)
args = parser.parse_args()
- should_color = args.color or (hasattr(sys.stdout, "isatty") and sys.stdout.isatty())
+ should_color = bool(args.color or sys.stdout.isatty() or os.environ.get("CI"))
+
+ # Enable ANSI escape code support on Windows 10 and later (for colored console output).
+ # <https://github.com/python/cpython/issues/73245>
+ if should_color and sys.stdout.isatty() and sys.platform == "win32":
+ try:
+ from ctypes import WinError, byref, windll # type: ignore
+ from ctypes.wintypes import DWORD # type: ignore
+
+ stdout_handle = windll.kernel32.GetStdHandle(DWORD(-11))
+ mode = DWORD(0)
+ if not windll.kernel32.GetConsoleMode(stdout_handle, byref(mode)):
+ raise WinError()
+ mode = DWORD(mode.value | 4)
+ if not windll.kernel32.SetConsoleMode(stdout_handle, mode):
+ raise WinError()
+ except Exception:
+ should_color = False
+
STYLES["red"] = "\x1b[91m" if should_color else ""
STYLES["green"] = "\x1b[92m" if should_color else ""
STYLES["yellow"] = "\x1b[93m" if should_color else ""
@@ -1089,11 +1110,13 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Create signal signature and anchor point.
- f.write(f".. _class_{class_name}_signal_{signal.name}:\n\n")
+ signal_anchor = f"class_{class_name}_signal_{signal.name}"
+ f.write(f".. _{signal_anchor}:\n\n")
+ self_link = f":ref:`🔗<{signal_anchor}>`"
f.write(".. rst-class:: classref-signal\n\n")
_, signature = make_method_signature(class_def, signal, "", state)
- f.write(f"{signature}\n\n")
+ f.write(f"{signature} {self_link}\n\n")
# Add signal description, or a call to action if it's missing.
@@ -1126,13 +1149,15 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Create enumeration signature and anchor point.
- f.write(f".. _enum_{class_name}_{e.name}:\n\n")
+ enum_anchor = f"enum_{class_name}_{e.name}"
+ f.write(f".. _{enum_anchor}:\n\n")
+ self_link = f":ref:`🔗<{enum_anchor}>`"
f.write(".. rst-class:: classref-enumeration\n\n")
if e.is_bitfield:
- f.write(f"flags **{e.name}**:\n\n")
+ f.write(f"flags **{e.name}**: {self_link}\n\n")
else:
- f.write(f"enum **{e.name}**:\n\n")
+ f.write(f"enum **{e.name}**: {self_link}\n\n")
for value in e.values.values():
# Also create signature and anchor point for each enum constant.
@@ -1170,10 +1195,12 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
for constant in class_def.constants.values():
# Create constant signature and anchor point.
- f.write(f".. _class_{class_name}_constant_{constant.name}:\n\n")
+ constant_anchor = f"class_{class_name}_constant_{constant.name}"
+ f.write(f".. _{constant_anchor}:\n\n")
+ self_link = f":ref:`🔗<{constant_anchor}>`"
f.write(".. rst-class:: classref-constant\n\n")
- f.write(f"**{constant.name}** = ``{constant.value}``\n\n")
+ f.write(f"**{constant.name}** = ``{constant.value}`` {self_link}\n\n")
# Add constant description.
@@ -1206,13 +1233,16 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Create annotation signature and anchor point.
+ self_link = ""
if i == 0:
- f.write(f".. _class_{class_name}_annotation_{m.name}:\n\n")
+ annotation_anchor = f"class_{class_name}_annotation_{m.name}"
+ f.write(f".. _{annotation_anchor}:\n\n")
+ self_link = f" :ref:`🔗<{annotation_anchor}>`"
f.write(".. rst-class:: classref-annotation\n\n")
_, signature = make_method_signature(class_def, m, "", state)
- f.write(f"{signature}\n\n")
+ f.write(f"{signature}{self_link}\n\n")
# Add annotation description, or a call to action if it's missing.
@@ -1246,13 +1276,17 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Create property signature and anchor point.
- f.write(f".. _class_{class_name}_property_{property_def.name}:\n\n")
+ property_anchor = f"class_{class_name}_property_{property_def.name}"
+ f.write(f".. _{property_anchor}:\n\n")
+ self_link = f":ref:`🔗<{property_anchor}>`"
f.write(".. rst-class:: classref-property\n\n")
property_default = ""
if property_def.default_value is not None:
property_default = f" = {property_def.default_value}"
- f.write(f"{property_def.type_name.to_rst(state)} **{property_def.name}**{property_default}\n\n")
+ f.write(
+ f"{property_def.type_name.to_rst(state)} **{property_def.name}**{property_default} {self_link}\n\n"
+ )
# Create property setter and getter records.
@@ -1277,6 +1311,9 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
if property_def.text is not None and property_def.text.strip() != "":
f.write(f"{format_text_block(property_def.text.strip(), property_def, state)}\n\n")
+ if property_def.type_name.type_name in PACKED_ARRAY_TYPES:
+ tmp = f"[b]Note:[/b] The returned array is [i]copied[/i] and any changes to it will not update the original property value. See [{property_def.type_name.type_name}] for more details."
+ f.write(f"{format_text_block(tmp, property_def, state)}\n\n")
elif property_def.deprecated is None and property_def.experimental is None:
f.write(".. container:: contribute\n\n\t")
f.write(
@@ -1303,13 +1340,16 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Create constructor signature and anchor point.
+ self_link = ""
if i == 0:
- f.write(f".. _class_{class_name}_constructor_{m.name}:\n\n")
+ constructor_anchor = f"class_{class_name}_constructor_{m.name}"
+ f.write(f".. _{constructor_anchor}:\n\n")
+ self_link = f" :ref:`🔗<{constructor_anchor}>`"
f.write(".. rst-class:: classref-constructor\n\n")
ret_type, signature = make_method_signature(class_def, m, "", state)
- f.write(f"{ret_type} {signature}\n\n")
+ f.write(f"{ret_type} {signature}{self_link}\n\n")
# Add constructor description, or a call to action if it's missing.
@@ -1342,17 +1382,21 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Create method signature and anchor point.
+ self_link = ""
+
if i == 0:
method_qualifier = ""
if m.name.startswith("_"):
method_qualifier = "private_"
-
- f.write(f".. _class_{class_name}_{method_qualifier}method_{m.name}:\n\n")
+ method_anchor = f"class_{class_name}_{method_qualifier}method_{m.name}"
+ f.write(f".. _{method_anchor}:\n\n")
+ self_link = f" :ref:`🔗<{method_anchor}>`"
f.write(".. rst-class:: classref-method\n\n")
ret_type, signature = make_method_signature(class_def, m, "", state)
- f.write(f"{ret_type} {signature}\n\n")
+
+ f.write(f"{ret_type} {signature}{self_link}\n\n")
# Add method description, or a call to action if it's missing.
@@ -1385,16 +1429,16 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Create operator signature and anchor point.
- operator_anchor = f".. _class_{class_name}_operator_{sanitize_operator_name(m.name, state)}"
+ operator_anchor = f"class_{class_name}_operator_{sanitize_operator_name(m.name, state)}"
for parameter in m.parameters:
operator_anchor += f"_{parameter.type_name.type_name}"
- operator_anchor += f":\n\n"
- f.write(operator_anchor)
+ f.write(f".. _{operator_anchor}:\n\n")
+ self_link = f":ref:`🔗<{operator_anchor}>`"
f.write(".. rst-class:: classref-operator\n\n")
ret_type, signature = make_method_signature(class_def, m, "", state)
- f.write(f"{ret_type} {signature}\n\n")
+ f.write(f"{ret_type} {signature} {self_link}\n\n")
# Add operator description, or a call to action if it's missing.
@@ -1427,13 +1471,17 @@ def make_rst_class(class_def: ClassDef, state: State, dry_run: bool, output_dir:
# Create theme property signature and anchor point.
- f.write(f".. _class_{class_name}_theme_{theme_item_def.data_name}_{theme_item_def.name}:\n\n")
+ theme_item_anchor = f"class_{class_name}_theme_{theme_item_def.data_name}_{theme_item_def.name}"
+ f.write(f".. _{theme_item_anchor}:\n\n")
+ self_link = f":ref:`🔗<{theme_item_anchor}>`"
f.write(".. rst-class:: classref-themeproperty\n\n")
theme_item_default = ""
if theme_item_def.default_value is not None:
theme_item_default = f" = {theme_item_def.default_value}"
- f.write(f"{theme_item_def.type_name.to_rst(state)} **{theme_item_def.name}**{theme_item_default}\n\n")
+ f.write(
+ f"{theme_item_def.type_name.to_rst(state)} **{theme_item_def.name}**{theme_item_default} {self_link}\n\n"
+ )
# Add theme property description, or a call to action if it's missing.
@@ -1528,7 +1576,7 @@ def make_method_signature(
out += f":ref:`{op_name}<class_{class_def.name}_{ref_type}_{sanitize_operator_name(definition.name, state)}"
for parameter in definition.parameters:
out += f"_{parameter.type_name.type_name}"
- out += f">`"
+ out += ">`"
elif ref_type == "method":
ref_type_qualifier = ""
if definition.name.startswith("_"):
diff --git a/doc/translations/de.po b/doc/translations/de.po
index 1097488498..3bdbc9a0ed 100644
--- a/doc/translations/de.po
+++ b/doc/translations/de.po
@@ -81,12 +81,15 @@
# Emil Krebs <emil.krebs@typefox.io>, 2024.
# Flyon <fcbf97@gmail.com>, 2024.
# High Ruffy <m.d.ruffy.99@gmail.com>, 2024.
+# BlueberryGecko <blueberrygecko@proton.me>, 2024.
+# Least Significant Bite <leastsignificantbite@proton.me>, 2024.
+# da_kleckna <kleckner.kevin@gmail.com>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2024-03-04 14:32+0000\n"
-"Last-Translator: High Ruffy <m.d.ruffy.99@gmail.com>\n"
+"PO-Revision-Date: 2024-04-29 17:07+0000\n"
+"Last-Translator: Least Significant Bite <leastsignificantbite@proton.me>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/godot-"
"class-reference/de/>\n"
"Language: de\n"
@@ -94,7 +97,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 5.5-dev\n"
+"X-Generator: Weblate 5.5.2\n"
msgid "All classes"
msgstr "Alle Klassen"
@@ -224,6 +227,9 @@ msgid "This value is an integer composed as a bitmask of the following flags."
msgstr ""
"Dieser Wert ist ein Integer, zusammengesetzt als Bitmaske der folgenden Flags."
+msgid "No return value."
+msgstr "Kein Rückgabewert."
+
msgid ""
"There is currently no description for this class. Please help us by :ref:"
"`contributing one <doc_updating_the_class_reference>`!"
@@ -301,6 +307,12 @@ msgstr ""
"Es macht einen großen Unterschied, wenn man diese API mit C# verwendet. Mehr "
"Informationen unter :ref:`doc_c_sharp_differences`."
+msgid "Deprecated:"
+msgstr "Veraltet:"
+
+msgid "Experimental:"
+msgstr "Experimentell:"
+
msgid "This signal may be changed or removed in future versions."
msgstr ""
"Dieses Signal könnte in späteren Versionen geändert oder entfernt werden."
@@ -381,54 +393,6 @@ msgstr ""
"vermeiden, kann [method Color.is_equal_approx] verwendet werden."
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 ""
-"Stellt sicher, dass [param condition] [code]true[/code] ist. Wenn [param "
-"condition] [code]false[/code] ist wird ein Fehler erzeugt. Wenn das Projekt "
-"vom Editor aus gestartet wurde wird es außerdem pausiert. Zum Fortfahren muss "
-"es vom Editor aus fortgesetzt werden.\n"
-"Das optionale Argument [param message] wird, zusätzlich zu der allgemeinen "
-"Fehlermeldung angezeigt. Das kann verwendet werden um genauere Informationen "
-"zum Grund des Fehlers zu geben.\n"
-"[b]Warnung:[/b] Der Code innerhalb von [method assert] wird nur in Debug-"
-"Builds oder beim Ausführen des Spiels vom Editor ausgeführt. Deswegen sollte "
-"kein Code mit Nebeneffekten (z.B.: ändern von Variablen) innerhalb der "
-"Argumente von [method assert] genutzt werden. Sonst wird sich das Projekt in "
-"exportierten Versionen anders verhalten als im Editor.\n"
-"[codeblock]\n"
-"# Angenommen, wir wollen immer eine Geschwindigkeit zwischen 0 und 20.\n"
-"var geschwindigkeit = -10\n"
-"assert(geschwindigkeit < 20) # Wahr, das Programm wird fortgesetzt\n"
-"assert(geschwindigkeit >= 0) # Falsch, das Programm wird gestoppt\n"
-"assert(geschwindigkeit >= 0 and geschwindigkeit < 20) # Zwei Aussagen können "
-"in einer Prüfung zusammengefasst werden\n"
-"assert(geschwindigkeit < 20, \"Geschwindigkeit = %f, aber die "
-"Geschwindigkeitsbegrenzung beträgt 20\" % geschwindigkeit) # Zeigt eine "
-"Nachricht mit klärenden Details\n"
-"[/codeblock]"
-
-msgid ""
"Returns a single character (as a [String]) of the given Unicode code point "
"(which is compatible with ASCII code).\n"
"[codeblock]\n"
@@ -449,327 +413,59 @@ msgid "Use [method @GlobalScope.type_convert] instead."
msgstr "Benutze [method @GlobalScope.type_convert] stattdessen."
msgid ""
-"Converts a [param dictionary] (created with [method inst_to_dict]) back to an "
-"Object instance. Can be useful for deserializing."
-msgstr ""
-"Konvertiert ein [param dictionary] (das zuvor mit [method inst_to_dict] "
-"erstellt wurde) zurück in eine Instanz. Nützlich für die Deserialisierung."
-
-msgid ""
-"Returns an array of dictionaries representing the current call stack. See "
-"also [method print_stack].\n"
+"Converts [param what] to [param type] in the best way possible. The [param "
+"type] uses the [enum Variant.Type] values.\n"
"[codeblock]\n"
-"func _ready():\n"
-" foo()\n"
+"var a = [4, 2.5, 1.2]\n"
+"print(a is Array) # Prints true\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 ""
-"Gibt ein Array von Dictionaries zurück, das den aktuellen Aufruf-Stack "
-"darstellt. Siehe auch [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"
-"Ausgehend von [code]_ready()[/code] würde [code]bar()[/code] folgendes "
-"ausgeben:\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]Hinweis:[/b] Diese Funktion funktioniert nur, wenn die laufende Instanz "
-"mit einem Debugging-Server (d.h. einer Editor-Instanz) verbunden ist. Die "
-"[Methode get_stack] funktioniert nicht in Projekten, die im Release-Modus "
-"exportiert wurden, oder in Projekten, die im Debug-Modus exportiert wurden, "
-"wenn sie nicht mit einem Debugging-Server verbunden sind.\n"
-"[b]Hinweis:[/b] Der Aufruf dieser Funktion aus einem [Thread] wird nicht "
-"unterstützt. In diesem Fall wird ein leeres Array zurückgegeben."
-
-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 ""
-"Gibt die übergebene [param instance] in ein Dictionary konvertiert zurück. "
-"Kann für die Serialisierung nützlich sein.\n"
-"[b]Hinweis:[/b] kann nicht verwendet werden, um Objekte mit eingebetteten "
-"Skripten, oder Objekte, die in eingebetteten Skripten zugewiesen sind, zu "
-"serialisieren.\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"
-"Druckt aus:\n"
-"[codeblock]\n"
-"[@subpath, @path, foo]\n"
-"[, res://test.gd, bar]\n"
-"[/codeblock]"
-
-msgid ""
-"Returns [code]true[/code] if [param value] is an instance of [param type]. "
-"The [param type] value must be one of the following:\n"
-"- A constant from the [enum Variant.Type] enumeration, for example [constant "
-"TYPE_INT].\n"
-"- An [Object]-derived class which exists in [ClassDB], for example [Node].\n"
-"- A [Script] (you can use any class, including inner one).\n"
-"Unlike the right operand of the [code]is[/code] operator, [param type] can be "
-"a non-constant value. The [code]is[/code] operator supports more features "
-"(such as typed arrays) and is more performant. Use the operator instead of "
-"this method if you do not need dynamic type checking.\n"
-"Examples:\n"
-"[codeblock]\n"
-"print(is_instance_of(a, TYPE_INT))\n"
-"print(is_instance_of(a, Node))\n"
-"print(is_instance_of(a, MyClass))\n"
-"print(is_instance_of(a, MyClass.InnerClass))\n"
-"[/codeblock]\n"
-"[b]Note:[/b] If [param value] and/or [param type] are freed objects (see "
-"[method @GlobalScope.is_instance_valid]), or [param type] is not one of the "
-"above options, this method will raise a runtime error.\n"
-"See also [method @GlobalScope.typeof], [method type_exists], [method Array."
-"is_same_typed] (and other [Array] methods)."
-msgstr ""
-"Gibt [code]true[/code] zurück, wenn [param value] eine Instanz von [param "
-"type] ist. Der [param type]-Wert muss einer der folgenden sein:\n"
-"- Eine Konstante aus der Aufzählung [enum Variant.Type], zum Beispiel "
-"[Konstante TYPE_INT].\n"
-"- Eine von [Object] abgeleitete Klasse, die in [ClassDB] existiert, z. B. "
-"[Node].\n"
-"- Ein [Script] (Es kann eine beliebige Klasse verwendet werden, auch eine "
-"innere).\n"
-"Anders als der rechte Operand des [code]is[/code]-Operators kann [param type] "
-"ein nicht-konstanter Wert sein. Der [code]is[/code]-Operator unterstützt mehr "
-"Funktionen (wie typisierte Arrays) und ist performanter. Der Operator sollte "
-"anstelle dieser Methode verwendet werden, wenn keine dynamische "
-"Typüberprüfung benötigen benötigt wird.\n"
-"Beispiele:\n"
-"[codeblock]\n"
-"print(is_instance_of(a, TYPE_INT))\n"
-"print(is_instance_of(a, Node))\n"
-"print(is_instance_of(a, MyClass))\n"
-"print(is_instance_of(a, MyClass.InnerClass))\n"
-"[/codeblock]\n"
-"[b]Hinweis:[/b] Wenn [param value] und/oder [param type] freigegebene Objekte "
-"sind (siehe [method @GlobalScope.is_instance_valid]), oder [param type] keine "
-"der oben genannten Optionen ist, löst diese Methode einen Laufzeitfehler "
-"aus.\n"
-"Siehe auch [method @GlobalScope.typeof], [method type_exists], [method Array."
-"is_same_typed] (und andere [Array]-Methoden)."
-
-msgid ""
-"Returns a [Resource] from the filesystem located at [param path]. During run-"
-"time, the resource is loaded when the script is being parsed. This function "
-"effectively acts as a reference to that resource. Note that this function "
-"requires [param path] to be a constant [String]. If you want to load a "
-"resource from a dynamic/variable path, use [method load].\n"
-"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource "
-"in the Assets Panel and choosing \"Copy Path\", or by dragging the file from "
-"the FileSystem dock into the current script.\n"
-"[codeblock]\n"
-"# Create instance of a scene.\n"
-"var diamond = preload(\"res://diamond.tscn\").instantiate()\n"
+"var b = convert(a, TYPE_PACKED_BYTE_ARRAY)\n"
+"print(b) # Prints [4, 2, 1]\n"
+"print(b is Array) # Prints false\n"
"[/codeblock]"
msgstr ""
-"Liefert eine [Resource] aus dem Dateisystem, die sich unter dem Pfad [param "
-"path] befindet. Während der Laufzeit wird die Ressource geladen, wenn das "
-"Skript geparst wird. Diese Funktion fungiert quasi als Referenz auf diese "
-"Ressource. Zu beachten ist, dass diese Funktion einn konstanten [String] für "
-"[param path] erfordert. Wenn eine Ressource von einem dynamischen/variablen "
-"Pfad geladen werden soll, muss [method load] verwendet werden.\n"
-"[b]Hinweis:[/b] Ressourcenpfade können erhalten werden, indem mit der rechten "
-"Maustaste auf eine Ressource im Dateisystem-Dock geklickt und \"Pfad "
-"kopieren\" ausgewählt wird, oder indem die Datei aus dem Dateisystem-Dock in "
-"das aktuelle Skript gezogen wird.\n"
+"Konvertiert [param what] in [param type] auf die bestmögliche Weise. Der "
+"[param type] verwendet die [enum Variant.Type] Werte.\n"
"[codeblock]\n"
-"# Instanz einer Szene erstellen.\n"
-"var diamond = preload(\"res://diamond.tscn\").instantiate()\n"
+"var a = [4, 2.5, 1.2]\n"
+"print(a is Array) # Druckt true\n"
+"\n"
+"var b = convert(a, TYPE_PACKED_BYTE_ARRAY)\n"
+"print(b) # Druckt [4, 2, 1]\n"
+"print(b is Array) # Druckt false\n"
"[/codeblock]"
msgid ""
-"Like [method @GlobalScope.print], but includes the current stack frame when "
-"running with the debugger turned on.\n"
-"The output in the console may look like the following:\n"
-"[codeblock]\n"
-"Test print\n"
-"At: res://test.gd:15:_process()\n"
-"[/codeblock]\n"
-"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing so "
-"will instead print the thread ID."
+"Converts a [param dictionary] (created with [method inst_to_dict]) back to an "
+"Object instance. Can be useful for deserializing."
msgstr ""
-"Funktioniert wie [method @GlobalScope.print], schließt aber den aktuellen "
-"Stack-Frame mit ein, wenn der Debugger eingeschaltet ist.\n"
-"Die Ausgabe auf der Konsole kann wie folgt aussehen:\n"
-"[codeblock]\n"
-"Test print\n"
-"Bei: res://test.gd:15:_process()\n"
-"[/codeblock]\n"
-"[b]Hinweis:[/b] Der Aufruf dieser Funktion aus einem [Thread] wird nicht "
-"unterstützt. In diesem Fall wird stattdessen die Thread-ID ausgegeben."
+"Konvertiert ein [param dictionary] (das zuvor mit [method inst_to_dict] "
+"erstellt wurde) zurück in eine Instanz. Nützlich für die Deserialisierung."
msgid ""
-"Prints a stack trace at the current code location. See also [method "
-"get_stack].\n"
-"The output in the console may look like the following:\n"
-"[codeblock]\n"
-"Frame 0 - res://test.gd:16 in function '_process'\n"
-"[/codeblock]\n"
-"[b]Note:[/b] This function only works if the running instance is connected to "
-"a debugging server (i.e. an editor instance). [method print_stack] will not "
-"work in projects exported in release mode, or in projects exported in debug "
-"mode if not connected to a debugging server.\n"
-"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing so "
-"will instead print the thread ID."
-msgstr ""
-"Druckt einen Stack-Trace an der aktuellen Codestelle. Siehe auch [method "
-"get_stack].\n"
-"Die Ausgabe auf der Konsole kann wie folgt aussehen:\n"
-"[codeblock]\n"
-"Frame 0 - res://test.gd:16 in function '_process'\n"
-"[/codeblock]\n"
-"[b]Hinweis:[/b] Diese Funktion funktioniert nur, wenn die laufende Instanz "
-"mit einem Debugging-Server (z.B. einer Editor-Instanz) verbunden ist. [method "
-"print_stack] funktioniert nicht in Projekten, die als Release exportiert "
-"wurden, oder in Projekten, die als Debug exportiert wurden, wenn keine "
-"Verbindung zu einem Debugging-Server besteht.\n"
-"[b]Hinweis:[/b] Der Aufruf dieser Funktion aus einem [Thread] wird nicht "
-"unterstützt. In diesem Fall wird stattdessen die Thread-ID ausgegeben."
-
-msgid ""
-"Returns an array with the given range. [method range] can be called in three "
-"ways:\n"
-"[code]range(n: int)[/code]: Starts from 0, increases by steps of 1, and stops "
-"[i]before[/i] [code]n[/code]. The argument [code]n[/code] is [b]exclusive[/"
-"b].\n"
-"[code]range(b: int, n: int)[/code]: Starts from [code]b[/code], increases by "
-"steps of 1, and stops [i]before[/i] [code]n[/code]. The arguments [code]b[/"
-"code] and [code]n[/code] are [b]inclusive[/b] and [b]exclusive[/b], "
-"respectively.\n"
-"[code]range(b: int, n: int, s: int)[/code]: Starts from [code]b[/code], "
-"increases/decreases by steps of [code]s[/code], and stops [i]before[/i] "
-"[code]n[/code]. The arguments [code]b[/code] and [code]n[/code] are "
-"[b]inclusive[/b] and [b]exclusive[/b], respectively. The argument [code]s[/"
-"code] [b]can[/b] be negative, but not [code]0[/code]. If [code]s[/code] is "
-"[code]0[/code], an error message is printed.\n"
-"[method range] converts all arguments to [int] before processing.\n"
-"[b]Note:[/b] Returns an empty array if no value meets the value constraint (e."
-"g. [code]range(2, 5, -1)[/code] or [code]range(5, 5, 1)[/code]).\n"
-"Examples:\n"
+"Returns the length of the given Variant [param var]. The length can be the "
+"character count of a [String] or [StringName], the element count of any array "
+"type, or the size of a [Dictionary]. For every other Variant type, a run-time "
+"error is generated and execution is stopped.\n"
"[codeblock]\n"
-"print(range(4)) # Prints [0, 1, 2, 3]\n"
-"print(range(2, 5)) # Prints [2, 3, 4]\n"
-"print(range(0, 6, 2)) # Prints [0, 2, 4]\n"
-"print(range(4, 1, -1)) # Prints [4, 3, 2]\n"
-"[/codeblock]\n"
-"To iterate over an [Array] backwards, use:\n"
-"[codeblock]\n"
-"var array = [3, 6, 9]\n"
-"for i in range(array.size() - 1, -1, -1):\n"
-" print(array[i])\n"
-"[/codeblock]\n"
-"Output:\n"
-"[codeblock]\n"
-"9\n"
-"6\n"
-"3\n"
-"[/codeblock]\n"
-"To iterate over [float], convert them in the loop.\n"
-"[codeblock]\n"
-"for i in range (3, 0, -1):\n"
-" print(i / 10.0)\n"
-"[/codeblock]\n"
-"Output:\n"
-"[codeblock]\n"
-"0.3\n"
-"0.2\n"
-"0.1\n"
+"a = [1, 2, 3, 4]\n"
+"len(a) # Returns 4\n"
+"\n"
+"b = \"Hello!\"\n"
+"len(b) # Returns 6\n"
"[/codeblock]"
msgstr ""
-"Gibt ein Array mit dem angegebenen Bereich zurück. Die Methode [method range] "
-"kann auf drei Arten aufgerufen werden:\n"
-"[code]range(n: int)[/code]: Beginnt bei 0, erhöht sich in Schritten von 1 und "
-"endet [i]vor[/i] [code]n[/code]. Das Argument [code]n[/code] ist [b]exklusiv[/"
-"b].\n"
-"[code]range(b: int, n: int)[/code]: Beginnt bei [code]b[/code], erhöht sich "
-"in Schritten von 1 und endet [i]vor[/i] [code]n[/code]. Das Argument [code]b[/"
-"code] ist [b]inklusiv[/b] und [code]n[/code] ist [b]exklusiv[/b].\n"
-"[code]range(b: int, n: int, s: int)[/code]: Beginnt bei [code]b[/code], "
-"erhöht/verringert sich um Schritte von [code]s[/code] und endet [i]vor[/i] "
-"[code]n[/code]. Das Argument [code]b[/code] ist [b]inklusiv[/b] und [code]n[/"
-"code] ist [b]exklusiv[/b]. Das Argument [code]s[/code] [b]kann[/b] negativ "
-"sein, aber nicht [code]0[/code]. Wenn [code]s[/code] gleich [code]0[/code] "
-"ist, wird eine Fehlermeldung ausgegeben.\n"
-"Die Methode [method range] wandelt alle Argumente vor der Verarbeitung in "
-"[int] um.\n"
-"[b]Hinweis:[/b] Gibt ein leeres Array zurück, wenn kein Wert die "
-"Werteinschränkung erfüllt (z. B. [code]range(2, 5, -1)[/code] oder "
-"[code]range(5, 5, 1)[/code]).\n"
-"Beispiele:\n"
+"Gibt die Länge der angegebenen Variante [param var] zurück. Die Länge kann "
+"die Anzahl der Zeichen eines [String] oder [StringName], die Anzahl der "
+"Elemente eines beliebigen Array-Typs oder die Größe eines [Dictionary] sein. "
+"Für jeden anderen Variantentyp wird ein Laufzeitfehler erzeugt und die "
+"Ausführung abgebrochen.\n"
"[codeblock]\n"
-"print(range(4)) # Gibt [0, 1, 2, 3] aus\n"
-"print(range(2, 5)) # Gibt [2, 3, 4] aus\n"
-"print(range(0, 6, 2)) # Gibt [0, 2, 4] aus\n"
-"print(range(4, 1, -1)) # Gibt [4, 3, 2] aus\n"
-"[/codeblock]\n"
-"Um rückwärts über ein [Array] zu iterieren, benutze:\n"
-"[codeblock]\n"
-"var array = [3, 6, 9]\n"
-"for i in range(array.size() - 1, -1, -1):\n"
-" print(array[i - 1])\n"
-"[/codeblock]\n"
-"Ausgabe:\n"
-"[codeblock]\n"
-"9\n"
-"6\n"
-"3\n"
-"[/codeblock]\n"
-"Um über [float] Werte zu iterieren, können sie in der Schleife umgewandelt "
-"werden:\n"
-"[codeblock]\n"
-"for i in range (3, 0, -1):\n"
-" print(i / 10.0)\n"
-"[/codeblock]\n"
-"Ausgabe:\n"
-"[codeblock]\n"
-"0.3\n"
-"0.2\n"
-"0.1\n"
+"a = [1, 2, 3, 4]\n"
+"len(a) # Gibt 4 zurück\n"
+"\n"
+"b = \"Hallo!\"\n"
+"len(b) # Gibt 6 zurück\n"
"[/codeblock]"
msgid ""
@@ -958,352 +654,6 @@ msgstr ""
"[annotation @export_subgroup] verwendet werden."
msgid ""
-"Export a [Color] property without allowing its transparency ([member Color."
-"a]) to be edited.\n"
-"See also [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n"
-"[codeblock]\n"
-"@export_color_no_alpha var dye_color: Color\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [Color] Eigenschaft, ohne Veränderungen ihrer Transparenz "
-"([member Color.a]) zuzulassen.\n"
-"Siehe auch [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n"
-"[codeblock]\n"
-"@export_color_no_alpha var dye_color: Color\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as a path to a directory. The path will be limited "
-"to the project folder and its subfolders. See [annotation @export_global_dir] "
-"to allow picking from the entire filesystem.\n"
-"See also [constant PROPERTY_HINT_DIR].\n"
-"[codeblock]\n"
-"@export_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [String]-Eigenschaft als Pfad zu einem Ordner. Der Pfad wird "
-"auf den Projektordner und seine Unterordner beschränkt. Siehe [annotation "
-"@export_global_dir], um die Auswahl aus dem gesamten Dateisystem zu "
-"ermöglichen.\n"
-"Siehe auch [constant PROPERTY_HINT_DIR].\n"
-"[codeblock]\n"
-"@export_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-
-msgid ""
-"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_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"
-"If you want to set an initial value, you must specify it explicitly:\n"
-"[codeblock]\n"
-"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = "
-"\"Rebecca\"\n"
-"[/codeblock]\n"
-"If you want to use named GDScript enums, then use [annotation @export] "
-"instead:\n"
-"[codeblock]\n"
-"enum CharacterName {REBECCA, MARY, LEAH}\n"
-"@export var character_name: CharacterName\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [int]- oder [String]-Eigenschaft als nummerierte Liste von "
-"Optionen. Wenn die Eigenschaft vom Typ [int] ist, wird der Index des Wertes "
-"gespeichert. Die Indizes sind durch die Reihenfolge der gegeben Argumente "
-"gegeben. Mithilfe eines Doppelpunktes, kann ein spezieller Wert festgelegt "
-"werden. Ist die Eigenschaft vom Typ [String], wird der Wert direkt "
-"gespeichert.\n"
-"Siehe auch [constant PROPERTY_HINT_ENUM].\n"
-"[codeblock]\n"
-"@export_enum(\"Krieger\", \"Magier\", \"Dieb\") var character_class: int\n"
-"@export_enum(\"Langsam:30\", \"Durchschnittlich:60\", \"Sehr schnell:200\") "
-"var character_speed: int\n"
-"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String\n"
-"[/codeblock]\n"
-"Soll ein Anfangswert genutzt werden, muss dieser explizit festgelegt werden:\n"
-"[codeblock]\n"
-"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = "
-"\"Rebecca\"\n"
-"[/codeblock]\n"
-"Um benannte GDScript Enums zu nutzen, kann [annotation @export] genutzt "
-"werden:\n"
-"[codeblock]\n"
-"enum CharacterName {REBECCA, MARY, LEAH}\n"
-"@export var character_name: CharacterName\n"
-"[/codeblock]"
-
-msgid ""
-"Export a floating-point property with an easing editor widget. Additional "
-"hints can be provided to adjust the behavior of the widget. "
-"[code]\"attenuation\"[/code] flips the curve, which makes it more intuitive "
-"for editing attenuation properties. [code]\"positive_only\"[/code] limits "
-"values to only be greater than or equal to zero.\n"
-"See also [constant PROPERTY_HINT_EXP_EASING].\n"
-"[codeblock]\n"
-"@export_exp_easing var transition_speed\n"
-"@export_exp_easing(\"attenuation\") var fading_attenuation\n"
-"@export_exp_easing(\"positive_only\") var effect_power\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine Gleitkomma-Eigenschaft mit einem Easingeditor-Widget. "
-"Zusätzliche Hinweise können bereitgestellt werden, um das Verhalten des "
-"Widgets anzupassen. [code]\"attenuation\"[/code] spiegelt die Kurve, was die "
-"Bearbeitung von Easing-eigenschaften intuitiver macht. "
-"[code]\"positive_only\"[/code] begrenzt die Werte auf Werte, die größer oder "
-"gleich Null sind.\n"
-"Siehe auch [constant PROPERTY_HINT_EXP_EASING].\n"
-"[codeblock]\n"
-"@export_exp_easing var transition_speed\n"
-"@export_exp_easing(\"attenuation\") var fading_attenuation\n"
-"@export_exp_easing(\"positive_only\") var effect_power\n"
-"[/codeblock]"
-
-msgid ""
-"Export 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"
-"[codeblock]\n"
-"@export_file var sound_effect_path: String\n"
-"@export_file(\"*.txt\") var notes_path: String\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [String]-Eigenschaft als Pfad zu einer Datei. Der Pfad wird "
-"auf den Projektordner und seine Unterordner beschränkt. Siehe [annotation "
-"@export_global_file] um die Auswahl aus dem gesamten Dateisystem zu "
-"ermöglichen.\n"
-"Wenn [param filter] angegeben wird, werden nur passende Dateien zur Auswahl "
-"angeboten.\n"
-"Siehe auch [constant PROPERTY_HINT_FILE].\n"
-"[codeblock]\n"
-"@export_file var sound_effect_file: String\n"
-"@export_file(\"*.txt\") var notes_file: String\n"
-"[/codeblock]"
-
-msgid ""
-"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_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 ""
-"Exportiert eine [int]-Eigenschaft as Bit-Flag-Feld. Dies erlaubt mehrere "
-"\"ausgewählte\" (oder [code]true[/code]) Werte in einer Eigenschaft zu "
-"speichern und bequem vom Inspektor-Panel auszuwählen.\n"
-"Siehe auch [constant PROPERTY_HINT_FLAGS].\n"
-"[codeblock]\n"
-"@export_flags(\"Fire\", \"Water\", \"Earth\", \"Wind\") var spell_elements = "
-"0\n"
-"[/codeblock]\n"
-"Mithilfe eines Doppelpunktes können auch spezielle Werte festgelegt werden:\n"
-"[codeblock]\n"
-"@export_flags(\"Self:4\", \"Allies:8\", \"Foes:16\") var spell_targets = 0\n"
-"[/codeblock]\n"
-"Es ist außerdem möglich verschiedene Flags zu kombinieren:\n"
-"[codeblock]\n"
-"@export_flags(\"Self:4\", \"Allies:8\", \"Self and Allies:12\", \"Foes:16\")\n"
-"var spell_targets = 0\n"
-"[/codeblock]\n"
-"[b]Hinweis:[/b] Ein Flag-Wert muss zwischen [code]1[/code] und [code]2 ** 32 "
-"- 1[/code] liegen.\n"
-"[b]Hinweis:[/b] Im Gegensatz zu [annotation @export_enum], wird der letzte "
-"explizit festegelegte Wert nicht in betracht gezogen. Im folgenden Beispiel "
-"ist A 16, B 2 und C 4.\n"
-"[codeblock]\n"
-"@export_flags(\"A:16\", \"B\", \"C\") var x\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D navigation layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_navigation/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_2d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [int]-Eigenschaft als Bit-Flag-Feld für 2D Navigationsebenen. "
-"Das Element im Inspektor-Pannel wird die in [member ProjectSettings."
-"layer_names/2d_navigation/layer_1] für die Ebenen festgelegten Namen nutzen.\n"
-"Siehe auch [constant PROPERTY_HINT_LAYERS_2D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_2d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D physics layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_physics/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_2d_physics var physics_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [int]-Eigenschaft als Bit-Flag-Feld für 2D Physik-Ebenen. Das "
-"Element im Inspektor-Pannel wird die in [member ProjectSettings."
-"layer_names/2d_physics/layer_1] für die Ebenen festgelegten Namen nutzen.\n"
-"Siehe auch [constant PROPERTY_HINT_LAYERS_2D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_2d_physics var physics_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D render layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_render/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_2d_render var render_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [int]-Eigenschaft als Bit-Flag-Feld für 2D Render-Ebenen. Das "
-"Element im Inspektor-Pannel wird die in [member ProjectSettings."
-"layer_names/2d_render/layer_1] für die Ebenen festgelegten Namen nutzen.\n"
-"Siehe auch [constant PROPERTY_HINT_LAYERS_2D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_2d_render var render_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D navigation layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_navigation/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_3d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [int]-Eigenschaft als Bit-Flag-Feld für 3D Navigations-"
-"Ebenen. Das Element im Inspektor-Pannel wird die in [member ProjectSettings."
-"layer_names/3d_navigation/layer_1] für die Ebenen festgelegten Namen nutzen.\n"
-"Siehe auch [constant PROPERTY_HINT_LAYERS_3D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_3d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D physics layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_physics/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_3d_physics var physics_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [int]-Eigenschaft als Bit-Flag-Feld für 3D Physik-Ebenen. Das "
-"Element im Inspektor-Pannel wird die in [member ProjectSettings."
-"layer_names/3d_physics/layer_1] für die Ebenen festgelegten Namen nutzen.\n"
-"Siehe auch [constant PROPERTY_HINT_LAYERS_3D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_3d_physics var physics_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D render layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_render/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_3d_render var render_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [int]-Eigenschaft als Bit-Flag-Feld für 3D Render-Ebenen. Das "
-"Element im Inspektor-Pannel wird die in [member ProjectSettings."
-"layer_names/3d_render/layer_1] für die Ebenen festgelegten Namen nutzen.\n"
-"Siehe auch [constant PROPERTY_HINT_LAYERS_3D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_3d_render var render_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for navigation avoidance "
-"layers. The widget in the Inspector dock will use the layer names defined in "
-"[member ProjectSettings.layer_names/avoidance/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_AVOIDANCE].\n"
-"[codeblock]\n"
-"@export_flags_avoidance var avoidance_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine Ganzzahl-Eigenschaft als Bit-Flag-Feld für "
-"Navigationsvermeidungsebenen. Das Widget im Inspektor-Dock verwendet die in "
-"[member ProjectSettings.layer_names/avoidance/layer_1] definierten "
-"Layernamen.\n"
-"Siehe auch [constant PROPERTY_HINT_LAYERS_AVOIDANCE].\n"
-"[codeblock]\n"
-"@export_flags_avoidance var avoidance_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as an absolute 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_path: String\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [String]-Eigenschaft als absoluten Pfad zu einem Ordner. Der "
-"Pfad kann aus dem gesamten Dateisystem gewählt werden. Siehe [annotation "
-"@export_dir] um die Auswahl auf den Projekt-Ordner und seine Unterordner zu "
-"beschränken.\n"
-"Siehe auch [constant PROPERTY_HINT_GLOBAL_DIR].\n"
-"[codeblock]\n"
-"@export_global_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as an absolute 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_path: String\n"
-"@export_global_file(\"*.txt\") var notes_path: String\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [String]-Eigenschaft als absoluten Pfad zu einer Datei. Der "
-"Pfad kann aus dem gesammten Dateisystem gewählt werden. Siehe [annotation "
-"@export_file] um die Auswahl auf den Projekt-Ordner und seine Unterordner zu "
-"beschränken.\n"
-"Wenn [param filter] angegeben wird, werden nur passende Dateien zur Auswahl "
-"angeboten.\n"
-"Siehe auch [constant PROPERTY_HINT_GLOBAL_FILE].\n"
-"[codeblock]\n"
-"@export_global_file var sound_effect_path: String\n"
-"@export_global_file(\"*.txt\") var notes_path: 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 "
@@ -1359,54 +709,27 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Export a [String] property with a large [TextEdit] widget instead of a "
-"[LineEdit]. This adds support for multiline content and makes it easier to "
-"edit large amount of text stored in the property.\n"
-"See also [constant PROPERTY_HINT_MULTILINE_TEXT].\n"
+"Export a property with [constant PROPERTY_USAGE_STORAGE] flag. The property "
+"is not displayed in the editor, but it is serialized and stored in the scene "
+"or resource file. This can be useful for [annotation @tool] scripts. Also the "
+"property value is copied when [method Resource.duplicate] or [method Node."
+"duplicate] is called, unlike non-exported variables.\n"
"[codeblock]\n"
-"@export_multiline var character_biography\n"
+"var a # Not stored in the file, not displayed in the editor.\n"
+"@export_storage var b # Stored in the file, not displayed in the editor.\n"
+"@export var c: int # Stored in the file, displayed in the editor.\n"
"[/codeblock]"
msgstr ""
-"Exportiert eine [String]-Eigenschaft mit einem großen [TextEdit]-Widget "
-"anstelle eines [LineEdit]. Dadurch werden mehrzeilige Inhalte möglich und die "
-"Bearbeitung großer Textmengen, die in der Eigenschaft gespeichert sind, "
-"erleichtert.\n"
-"Siehe auch [constant PROPERTY_HINT_MULTILINE_TEXT].\n"
+"Exportiere eine Eigenschaft mit dem Flag [constant PROPERTY_USAGE_STORAGE]. "
+"Die Eigenschaft wird nicht im Editor angezeigt, aber sie wird serialisiert "
+"und in der Szene oder der Ressourcendatei gespeichert. Dies kann nützlich "
+"sein für Skripte mit [annotation @tool]. Außerdem wird der Wert der "
+"Eigenschaft kopiert, wenn [method Resource.duplicate] oder [method Node."
+"duplicate] aufgerufen wird, im Gegensatz zu nicht exportierten Variablen.\n"
"[codeblock]\n"
-"@export_multiline var character_biography\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [NodePath] property with a filter for allowed node types.\n"
-"See also [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n"
-"[codeblock]\n"
-"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n"
-"[/codeblock]\n"
-"[b]Note:[/b] The type must be a native class or a globally registered script "
-"(using the [code]class_name[/code] keyword) that inherits [Node]."
-msgstr ""
-"Exportiert eine [NodePath]-Eigenschaft mit einem Filter für zulässige "
-"Knotentypen.\n"
-"Siehe auch [Konstante PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n"
-"[codeblock]\n"
-"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n"
-"[/codeblock]\n"
-"[b]Hinweis:[/b] Der Typ muss eine native Klasse oder ein global registriertes "
-"Skript (mit dem Schlüsselwort [code]class_name[/code]) sein, das [Node] erbt."
-
-msgid ""
-"Export a [String] property with a placeholder text displayed in the editor "
-"widget when no value is present.\n"
-"See also [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n"
-"[codeblock]\n"
-"@export_placeholder(\"Name in lowercase\") var character_id: String\n"
-"[/codeblock]"
-msgstr ""
-"Exportiert eine [String]-Eigenschaft mit einem Platzhaltertext, der im Editor-"
-"Widget angezeigt wird, wenn kein Wert vorhanden ist.\n"
-"Siehe auch [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n"
-"[codeblock]\n"
-"@export_placeholder(\"Name in Kleinbuchstaben\") var character_id: String\n"
+"var a # Nicht in der Datei gespeichert, nicht im Editor angezeigt.\n"
+"@export_storage var b # In der Datei gespeichert, nicht im Editor angezeigt.\n"
+"@export var c: int # In der Datei gespeichert, im Editor angezeigt.\n"
"[/codeblock]"
msgid ""
@@ -1579,15 +902,6 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Make a script with static variables to not persist after all references are "
-"lost. If the script is loaded again the static variables will revert to their "
-"default values."
-msgstr ""
-"Macht ein Skript mit statischen Variablen nicht persistent, nachdem alle "
-"Verweise verloren gegangen sind. Wenn das Skript erneut geladen wird, werden "
-"die statischen Variablen auf ihre Standardwerte zurückgesetzt."
-
-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"
@@ -2159,44 +1473,6 @@ msgstr ""
"[/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 ""
-"Gibt einen \"gelockerten\" Wert von [param x] zurück, der auf einer mit "
-"[param curve] definierten Lockerungsfunktion basiert. Diese "
-"Lockerungsfunktion basiert auf einem Exponenten. Die [param curve] kann eine "
-"beliebige Fließkommazahl sein, wobei bestimmte Werte zu den folgenden "
-"Verhaltensweisen führen:\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"
-"Siehe auch [Methode smoothstep]. Wenn Sie komplexere Übergänge durchführen "
-"möchten, verwenden Sie [method Tween.interpolate_value]."
-
-msgid ""
"Returns a human-readable name for the given [enum Error] code.\n"
"[codeblock]\n"
"print(OK) # Prints 0\n"
@@ -2298,49 +1574,6 @@ msgstr ""
"zu erhalten."
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 ""
-"Gibt den Fließkommamodul von [param x] geteilt durch [param y] zurück, wobei "
-"positive und negative Werte gleichmäßig verteilt werden.\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]"
-
-msgid ""
"Returns the integer hash of the passed [param variable].\n"
"[codeblocks]\n"
"[gdscript]\n"
@@ -2514,63 +1747,6 @@ msgstr ""
"oder ungültig)."
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 ""
-"Gibt bei Werttypen [code]true[/code] zurück, wenn [param a] und [param b] "
-"denselben Wert haben. Gibt [code]true[/code] für Referenztypen zurück, wenn "
-"die Referenzen von [param a] und [param b] identisch sind.\n"
-"[codeblock]\n"
-"# Vector2 ist ein Wertetyp\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 ist ein Referenztyp\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"
-"Dies sind [Variant]-Werttypen: [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] und [Signal].\n"
-"Dies sind [Variant]-Referenztypen: [Object], [Dictionary], [Array], "
-"[PackedByteArray], [PackedInt32Array], [PackedInt64Array], "
-"[PackedFloat32Array], [PackedFloat64Array], [PackedStringArray], "
-"[PackedVector2Array], [PackedVector3Array] und [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 "
@@ -2754,19 +1930,6 @@ msgstr ""
"während negative Werte [code]-nan[/code] ergeben."
msgid ""
-"Returns the maximum of the given numeric values. This function can take any "
-"number of arguments.\n"
-"[codeblock]\n"
-"max(1, 7, 3, -6, 5) # Returns 7\n"
-"[/codeblock]"
-msgstr ""
-"Gibt den größten der angegebenen Werte zurück. Diese Funktion akzeptiert eine "
-"beliebige Anzahl an Argumenten.\n"
-"[codeblock]\n"
-"max(1, 7, 3, -6, 5) # Gibt 7 zurück\n"
-"[/codeblock]"
-
-msgid ""
"Returns the maximum of two [float] values.\n"
"[codeblock]\n"
"maxf(3.6, 24) # Returns 24.0\n"
@@ -2793,19 +1956,6 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Returns the minimum of the given numeric values. This function can take any "
-"number of arguments.\n"
-"[codeblock]\n"
-"min(1, 7, 3, -6, 5) # Returns -6\n"
-"[/codeblock]"
-msgstr ""
-"Gibt den kleinsten der angegebenen Werte zurück. Diese Funktion akzeptiert "
-"eine beliebige Anzahl an Argumenten.\n"
-"[codeblock]\n"
-"min(1, 7, 3, -6, 5) # Ergebnis: -6\n"
-"[/codeblock]"
-
-msgid ""
"Returns the minimum of two [float] values.\n"
"[codeblock]\n"
"minf(3.6, 24) # Returns 3.6\n"
@@ -2923,45 +2073,6 @@ msgstr ""
"[/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 ""
-"Gibt den ganzzahligen Modulus von [param x] geteilt durch [param y] zurück, "
-"der gleichermaßen in positive und negative Werte umschlägt.\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"
-"Produziert:\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 ""
"Returns the result of [param base] raised to the power of [param exp].\n"
"In GDScript, this is the equivalent of the [code]**[/code] operator.\n"
"[codeblock]\n"
@@ -3015,6 +2126,90 @@ msgstr ""
"ausgegeben wird."
msgid ""
+"Converts one or more arguments of any type to string in the best way possible "
+"and prints them to the console.\n"
+"The following BBCode tags are supported: [code]b[/code], [code]i[/code], "
+"[code]u[/code], [code]s[/code], [code]indent[/code], [code]code[/code], "
+"[code]url[/code], [code]center[/code], [code]right[/code], [code]color[/"
+"code], [code]bgcolor[/code], [code]fgcolor[/code].\n"
+"Color tags only support the following named colors: [code]black[/code], "
+"[code]red[/code], [code]green[/code], [code]yellow[/code], [code]blue[/code], "
+"[code]magenta[/code], [code]pink[/code], [code]purple[/code], [code]cyan[/"
+"code], [code]white[/code], [code]orange[/code], [code]gray[/code]. "
+"Hexadecimal color codes are not supported.\n"
+"URL tags only support URLs wrapped by a URL tag, not URLs with a different "
+"title.\n"
+"When printing to standard output, the supported subset of BBCode is converted "
+"to ANSI escape codes for the terminal emulator to display. Support for ANSI "
+"escape codes varies across terminal emulators, especially for italic and "
+"strikethrough. In standard output, [code]code[/code] is represented with "
+"faint text but without any font change. Unsupported tags are left as-is in "
+"standard output.\n"
+"[codeblocks]\n"
+"[gdscript skip-lint]\n"
+"print_rich(\"[color=green][b]Hello world![/b][/color]\") # Prints out \"Hello "
+"world!\" in green with a bold font\n"
+"[/gdscript]\n"
+"[csharp skip-lint]\n"
+"GD.PrintRich(\"[color=green][b]Hello world![/b][/color]\"); // Prints out "
+"\"Hello world!\" in green with a bold font\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] Consider using [method push_error] and [method push_warning] to "
+"print error and warning messages instead of [method print] or [method "
+"print_rich]. This distinguishes them from print messages used for debugging "
+"purposes, while also displaying a stack trace when an error or warning is "
+"printed.\n"
+"[b]Note:[/b] On Windows, only Windows 10 and later correctly displays ANSI "
+"escape codes in standard output.\n"
+"[b]Note:[/b] Output displayed in the editor supports clickable [code skip-"
+"lint][url=address]text[/url][/code] tags. The [code skip-lint][url][/code] "
+"tag's [code]address[/code] value is handled by [method OS.shell_open] when "
+"clicked."
+msgstr ""
+"Konvertiert ein oder mehrere Argumente beliebigen Typs bestmöglich in einen "
+"String und gibt diesen auf der Konsole aus.\n"
+"Die folgenden BBCode-Tags werden unterstützt: [code]b[/code], [code]i[/code], "
+"[code]u[/code], [code]s[/code], [code]indent[/code], [code]code[/code], "
+"[code]url[/code], [code]center[/code], [code]right[/code], [code]color[/"
+"code], [code]bgcolor[/code], [code]fgcolor[/code].\n"
+"Farb-Tags unterstützen nur die folgenden benannten Farben: [code]black[/"
+"code], [code]red[/code], [code]green[/code], [code]yellow[/code], [code]blue[/"
+"code], [code]magenta[/code], [code]pink[/code], [code]purple[/code], "
+"[code]cyan[/code], [code]white[/code], [code]orange[/code], [code]gray[/"
+"code]. Hexadezimale Farbcodes werden nicht unterstützt.\n"
+"URL-Tags unterstützen nur URLs, die von einem URL-Tag umschlossen sind, nicht "
+"aber URLs mit einem anderen Titel.\n"
+"Beim Drucken auf die Standardausgabe wird die unterstützte Untergruppe von "
+"BBCode in ANSI-Escape-Codes umgewandelt, damit der Terminalemulator sie "
+"anzeigen kann. Die Unterstützung für ANSI-Escape-Codes variiert von Terminal "
+"zu Terminal, insbesondere für kursiv und durchgestrichen. In der "
+"Standardausgabe wird [code]code[/code] mit blassem Text, aber ohne "
+"Schriftartänderung dargestellt. Nicht unterstützte Tags werden in der "
+"Standardausgabe unverändert belassen.\n"
+"[codeblocks]\n"
+"[gdscript skip-lint]\n"
+"print_rich(\"[color=green][b]Hello world![/b][/color]\") # Gibt \"Hallo Welt!"
+"\" in grüner und fetter Schrift aus.\n"
+"[/gdscript]\n"
+"[csharp skip-lint]\n"
+"GD.PrintRich(\"[color=green][b]Hello world![/b][/color]\"); // Gibt \"Hallo "
+"Welt!\" in grüner und fetter Schrift aus.\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Hinweis:[/b] Erwägen Sie die Verwendung von [method push_error] und "
+"[method push_warning] zum Ausgeben von Fehler- und Warnmeldungen anstelle von "
+"[method print] oder [method print_rich]. Dies unterscheidet sie von "
+"Meldungen, die zu Debugging-Zwecken verwendet werden, und zeigt gleichzeitig "
+"einen Stack-Trace an, wenn ein Fehler oder eine Warnung ausgegeben wird.\n"
+"[b]Hinweis:[/b] Unter Windows werden ANSI-Escape-Codes in der Standardausgabe "
+"nur unter Windows 10 und höher korrekt angezeigt.\n"
+"[b]Hinweis:[/b] Ausgaben im Editor unterstützen klickbare [code skip-lint]"
+"[url=adresse]text[/url][/code]-Tags. Die [code]adresse[/code] des [code skip-"
+"lint][url][/code]-Tags wird beim Klicken von [method OS.shell_open] "
+"verarbeitet."
+
+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."
@@ -3048,43 +2243,6 @@ msgstr ""
"[/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 ""
-"Gibt ein oder mehrere Argumente in Form von Zeichenketten in der "
-"bestmöglichen Form auf dem OS-Terminal aus. Im Gegensatz zu [method print] "
-"wird am Ende nicht automatisch ein Zeilenumbruch eingefügt.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"printraw(\"A\")\n"
-"printraw(\"B\")\n"
-"printraw(\"C\")\n"
-"# Gibt ABC auf dem Terminal aus\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"GD.PrintRaw(\"A\");\n"
-"GD.PrintRaw(\"B\");\n"
-"GD.PrintRaw(\"C\");\n"
-"// Gibt ABC auf dem Terminal aus\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Prints one or more arguments to the console with a space between each "
"argument.\n"
"[codeblocks]\n"
@@ -3233,6 +2391,71 @@ msgstr ""
"[/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 ""
+"Gibt einen zufälligen Fließkommawert zwischen [code]0.0[/code] und [code]1.0[/"
+"code] (einschließlich) zurück.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"randf() # gibt z. B. 0.375671 zurück\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Randf(); // gibt z. B. 0.375671 zurück\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 ""
+"Gibt einen zufälligen Fließkommawert zwischen [param from] und [param to] "
+"(einschließlich) zurück.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"randf_range(0, 20.5) # gibt z. B. 7.45315 zurück\n"
+"randf_range(-10, 10) # gibt z. B. -3.844535 zurück\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.RandRange(0.0, 20.5); // gibt z. B. 7.45315 zurück\n"
+"GD.RandRange(-10.0, 10.0); // gibt z. B. -3.844535 zurück\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns a [url=https://en.wikipedia.org/wiki/Normal_distribution]normally-"
+"distributed[/url], pseudo-random floating-point value from the specified "
+"[param mean] and a standard [param deviation]. This is also known as a "
+"Gaussian distribution.\n"
+"[b]Note:[/b] This method uses the [url=https://en.wikipedia.org/wiki/"
+"Box%E2%80%93Muller_transform]Box-Muller transform[/url] algorithm."
+msgstr ""
+"Gibt einen [url=https://en.wikipedia.org/wiki/Normal_distribution]normally-"
+"distributed[/url], pseudozufälligen Gleitkommawert zurück, basierend auf dem "
+"angegebenen [param mean] und einer Standardabweichung [param deviation]. Dies "
+"ist auch als Gaußverteilung bekannt.\n"
+"[b]Hinweis:[/b] Diese Methode verwendet den [url=https://de.wikipedia.org/"
+"wiki/Box-Muller-Algorithmus]Box-Muller-Transformations[/url]-Algorithmus."
+
+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"
@@ -3340,21 +2563,6 @@ msgstr ""
"sollten Sie stattdessen [Curve] oder [Gradient] verwenden."
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 ""
-"Weist eine eindeutige ID zu, die von der Implementierung verwendet werden "
-"kann, um eine RID zu erstellen. Dies wird hauptsächlich von nativen "
-"Erweiterungen zur Implementierung von Servern verwendet."
-
-msgid ""
-"Creates a RID from a [param base]. This is used mainly from native extensions "
-"to build servers."
-msgstr ""
-"Erzeugt ein RID aus einer [param base]. Dies wird hauptsächlich von nativen "
-"Erweiterungen verwendet, um Server zu erstellen."
-
-msgid ""
"Rotates [param from] toward [param to] by the [param delta] amount. Will not "
"go past [param to].\n"
"Similar to [method move_toward], but interpolates correctly when the angles "
@@ -3372,6 +2580,32 @@ msgstr ""
msgid ""
"Rounds [param x] to the nearest whole number, with halfway cases rounded away "
+"from 0. Supported types: [int], [float], [Vector2], [Vector2i], [Vector3], "
+"[Vector3i], [Vector4], [Vector4i].\n"
+"[codeblock]\n"
+"round(2.4) # Returns 2\n"
+"round(2.5) # Returns 3\n"
+"round(2.6) # Returns 3\n"
+"[/codeblock]\n"
+"See also [method floor], [method ceil], and [method snapped].\n"
+"[b]Note:[/b] For better type safety, use [method roundf], [method roundi], "
+"[method Vector2.round], [method Vector3.round], or [method Vector4.round]."
+msgstr ""
+"Rundet [param x] auf die nächste ganze Zahl, wobei ab 0.5 aufgerundet wird. "
+"Unterstützte Typen: [int], [float], [Vector2], [Vector2i], [Vector3], "
+"[Vector3i], [Vector4], [Vector4i].\n"
+"[codeblock]\n"
+"round(2.4) # Gibt 2 zurück\n"
+"round(2.5) # Gibt 3 zurück\n"
+"round(2.6) # Gibt 3 zurück\n"
+"[/codeblock]\n"
+"Siehe auch [method floor], [method ceil], und [method snapped].\n"
+"[b]Hinweis:[/b] Für bessere Typsicherheit können [method roundf], [method "
+"roundi], [method Vector2.round], [method Vector3.round], oder [method Vector4."
+"round] verwendet werden."
+
+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 ""
@@ -3582,6 +2816,62 @@ msgstr ""
"smoothstep() und 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 ""
+"Gibt das Vielfache von [param step] zurück, das dem Wert von [param x] am "
+"nächsten kommt. Dies kann auch verwendet werden, um eine Fließkommazahl auf "
+"eine beliebige Anzahl von Nachkommastellen zu runden.\n"
+"Der zurückgegebene Wert ist derselbe Typ von [Variant] wie [param step]. "
+"Unterstützte Typen: [int], [float], [Vector2], [Vector2i], [Vector3], "
+"[Vector3i], [Vector4], [Vector4i].\n"
+"[codeblock]\n"
+"snapped(100, 32) # Returns 96\n"
+"snapped(3.14159, 0.01) # Gibt 3.14 zurück\n"
+"\n"
+"snapped(Vector2(34, 70), Vector2(8, 8)) # Gibt (32, 72) zurück\n"
+"[/codeblock]\n"
+"Siehe auch [method ceil], [method floor], und [method round].\n"
+"[b]Hinweis:[/b] Für bessere Typsicherheit können [method snappedf], [method "
+"snappedi], [method Vector2.snapped], [method Vector2i.snapped], [method "
+"Vector3.snapped], [method Vector3i.snapped], [method Vector4.snapped] oder "
+"[method Vector4i.snapped] verwendet werden."
+
+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"
+"snappedf(32.0, 2.5) # Returns 32.5\n"
+"snappedf(3.14159, 0.01) # Returns 3.14\n"
+"[/codeblock]"
+msgstr ""
+"Gibt das Vielfache von [param step] zurück, das dem Wert von [param x] am "
+"nächsten kommt. Dies kann auch verwendet werden, um eine Fließkommazahl auf "
+"eine beliebige Anzahl von Dezimalstellen zu runden.\n"
+"Eine typsichere Version von [method snapped], die einen [float] zurückgibt.\n"
+"[codeblock]\n"
+"snappedf(32.0, 2.5) # Gibt 32.5 zurück\n"
+"snappedf(3.14159, 0.01) # Gibt 3.14 zurück\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"
@@ -3716,6 +3006,45 @@ msgstr ""
"[/codeblock]"
msgid ""
+"Converts the given [param variant] to the given [param type], using the [enum "
+"Variant.Type] values. This method is generous with how it handles types, it "
+"can automatically convert between array types, convert numeric [String]s to "
+"[int], and converting most things to [String].\n"
+"If the type conversion cannot be done, this method will return the default "
+"value for that type, for example converting [Rect2] to [Vector2] will always "
+"return [constant Vector2.ZERO]. This method will never show error messages as "
+"long as [param type] is a valid Variant type.\n"
+"The returned value is a [Variant], but the data inside and its type will be "
+"the same as the requested type.\n"
+"[codeblock]\n"
+"type_convert(\"Hi!\", TYPE_INT) # Returns 0\n"
+"type_convert(\"123\", TYPE_INT) # Returns 123\n"
+"type_convert(123.4, TYPE_INT) # Returns 123\n"
+"type_convert(5, TYPE_VECTOR2) # Returns (0, 0)\n"
+"type_convert(\"Hi!\", TYPE_NIL) # Returns null\n"
+"[/codeblock]"
+msgstr ""
+"Konvertiert die angegebene [param variant] in den angegebenen [param type] "
+"unter Verwendung der [enum Variant.Type]-Werte. Diese Methode ist großzügig "
+"bei der Behandlung von Typen, sie kann automatisch zwischen Array-Typen "
+"konvertieren, numerische [String]s in [int] konvertieren und die meisten "
+"Dinge in [String] konvertieren.\n"
+"Wenn die Typkonvertierung nicht durchgeführt werden kann, gibt diese Methode "
+"den Standardwert für diesen Typ zurück, z.B. wird bei der Konvertierung von "
+"[Rect2] nach [Vector2] immer [code]Vector2.ZERO[/code] zurückgegeben. Diese "
+"Methode zeigt keine Fehlermeldungen an, solange [param type] ein gültiger "
+"Variant-Typ ist.\n"
+"Der zurückgegebene Wert ist ein [Variant], aber die darin enthaltenen Daten "
+"und ihr Typ sind identisch mit dem angeforderten Typ.\n"
+"[codeblock]\n"
+"type_convert(\"Hi!\", TYPE_INT) # Gibt 0 zurück\n"
+"type_convert(\"123\", TYPE_INT) # Gibt 123 zurück\n"
+"type_convert(123.4, TYPE_INT) # Gibt 123 zurück\n"
+"type_convert(5, TYPE_VECTOR2) # Gibt (0, 0) zurück\n"
+"type_convert(\"Hi!\", TYPE_NIL) # Gibt null zurück\n"
+"[/codeblock]"
+
+msgid ""
"Returns a human-readable name of the given [param type], using the [enum "
"Variant.Type] values.\n"
"[codeblock]\n"
@@ -3762,50 +3091,33 @@ msgstr ""
"Siehe auch [method type_string]."
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]\n"
-"[b]Note:[/b] Converting [Signal] or [Callable] is not supported and will "
-"result in an empty value for these types, regardless of their data."
+"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].\n"
+"[b]Note:[/b] Encoding [Callable] is not supported and will result in an empty "
+"value, regardless of the data."
msgstr ""
-"Konvertiert eine [Variant] [param-Variable] in einen formatierten [String], "
-"der dann mit [method str_to_var] geparst werden kann.\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"
-"Druckt:\n"
-"[codeblock]\n"
-"{\n"
-" \"a\": 1,\n"
-" \"b\": 2\n"
-"}\n"
-"[/codeblock]\n"
-"[b]Hinweis:[/b] Die Konvertierung von [Signal] oder [Callable] wird nicht "
-"unterstützt und führt zu einem leeren Wert für diese Typen, unabhängig von "
-"ihren Daten."
+"Kodiert einen [Variant]-Wert in ein Byte-Array, ohne Objekte zu kodieren. Die "
+"Deserialisierung kann mit [method bytes_to_var] durchgeführt werden.\n"
+"[b]Hinweis:[/b] Wenn Sie eine Objektserialisierung benötigen, siehe [method "
+"var_to_bytes_with_objects].\n"
+"[b]HInweis:[/b] Eine Kodierung von [Callable] wird nicht unterstützt und gibt "
+"(unabhängig von den Daten), einen leeren Wert zurück."
+
+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].\n"
+"[b]Note:[/b] Encoding [Callable] is not supported and will result in an empty "
+"value, regardless of the data."
+msgstr ""
+"Kodiert einen [Variant]-Wert in ein Byte-Array. Die Kodierung von Objekten "
+"ist erlaubt (und kann möglicherweise ausführbaren Code enthalten). Die "
+"Deserialisierung kann mit [method bytes_to_var_with_objects] durchgeführt "
+"werden.\n"
+"[b]HInweis:[/b] Eine Kodierung von [Callable] wird nicht unterstützt und gibt "
+"(unabhängig von den Daten), einen leeren Wert zurück."
msgid ""
"Wraps the [Variant] [param value] between [param min] and [param max]. Can be "
@@ -5086,6 +4398,44 @@ msgstr ""
"5 Joysticks mit insgesamt 10 Achsen."
msgid ""
+"MIDI message sent when a note is released.\n"
+"[b]Note:[/b] Not all MIDI devices send this message; some may send [constant "
+"MIDI_MESSAGE_NOTE_ON] with [member InputEventMIDI.velocity] set to [code]0[/"
+"code]."
+msgstr ""
+"MIDI-Nachricht, gesendet, wenn eine Note losgelassen wird.\n"
+"[b]Hinweis:[/b] Nicht alle MIDI-Geräte senden dieses Ereignis; einige senden "
+"stattdessen [constant MIDI_MESSAGE_NOTE_ON] mit [member InputEventMIDI."
+"velocity] [code]0[/code]."
+
+msgid "MIDI message sent when a note is pressed."
+msgstr "MIDI Nachricht gesendet, wenn eine Note gespielt wird."
+
+msgid ""
+"MIDI message sent to select a sequence or song to play.\n"
+"[b]Note:[/b] Getting this message's data from [InputEventMIDI] is not "
+"implemented."
+msgstr ""
+"MIDI-Nachricht für Sequenz- oder Songauswahl.\n"
+"[b]Hinweis:[/b] Die Daten dieser Nachricht aus [InputEventMIDI] abzurufen, "
+"ist nicht implementiert."
+
+msgid ""
+"MIDI message sent to start the current sequence or song from the beginning."
+msgstr ""
+"MIDI Start-Mitteilung. Startet die Wiedergabe der aktuellen Sequenz neu."
+
+msgid ""
+"MIDI message sent to resume from the point the current sequence or song was "
+"paused."
+msgstr ""
+"MIDI Wiederaufnahme-Mitteilung. Die Wiedergabe der Sequenz wird an dem Punkt "
+"fortgesetzt, an dem die Wiedergabe pausiert wurde."
+
+msgid "MIDI message sent to pause the current sequence or song."
+msgstr "MIDI Pause-Mitteilung. Pausiert die Wiedergabe der aktuellen Sequenz."
+
+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 "
@@ -5708,6 +5058,9 @@ msgstr ""
"[b]Hinweis:[/b] Der abschließende Doppelpunkt ist erforderlich, um eingebaute "
"Typen korrekt zu erkennen."
+msgid "This hint is not used by the engine."
+msgstr "Dieser Hinweis wird von der Engine nicht benutzt."
+
msgid "Hints that an object is too big to be sent via the debugger."
msgstr ""
"Weist darauf hin, dass ein Objekt zu groß ist, um über den Debugger gesendet "
@@ -5721,6 +5074,37 @@ msgstr ""
"[NodePath]-Eigenschaften gültig sind."
msgid ""
+"Hints that a [String] property is a path to a file. Editing it will show a "
+"file dialog for picking the path for the file to be saved at. The dialog has "
+"access to the project's directory. The hint string can be a set of filters "
+"with wildcards like [code]\"*.png,*.jpg\"[/code]. See also [member FileDialog."
+"filters]."
+msgstr ""
+"Weist darauf hin, dass eine [String]-Eigenschaft ein Pfad zu einer Datei ist. "
+"Bei der Bearbeitung wird ein Dateidialog angezeigt, in dem der Pfad "
+"ausgewählt werden kann. Der Dialog hat Zugriff auf das Projektverzeichnis. "
+"Der Hinweis-String kann eine Reihe von Filtern mit Platzhaltern wie [code]\"*."
+"png,*.jpg\"[/code] sein. Siehe auch [member FileDialog.filters]."
+
+msgid ""
+"Hints that a [String] property is a path to a file. Editing it will show a "
+"file dialog for picking the path for the file to be saved at. The dialog has "
+"access to the entire filesystem. The hint string can be a set of filters with "
+"wildcards like [code]\"*.png,*.jpg\"[/code]. See also [member FileDialog."
+"filters]."
+msgstr ""
+"Weist darauf hin, dass eine [String]-Eigenschaft ein Pfad zu einer Datei ist. "
+"Bei der Bearbeitung wird ein Dateidialog angezeigt, in dem der Pfad "
+"ausgewählt werden kann. Der Hinweis-String kann eine Reihe von Filtern mit "
+"Platzhaltern wie [code]\"*.png,*.jpg\"[/code] sein. Siehe auch [member "
+"FileDialog.filters]."
+
+msgid "Hints that an [int] property is a pointer. Used by GDExtension."
+msgstr ""
+"Weist darauf hin, dass eine [int]-Eigenschaft ein Zeiger ist. Wird von "
+"GDExtension benutzt."
+
+msgid ""
"Hints that a property is an [Array] with the stored type specified in the "
"hint string."
msgstr ""
@@ -5744,6 +5128,16 @@ msgstr ""
"die Werte sind übersetzte Zeichenketten."
msgid ""
+"Hints that a property is an instance of a [Node]-derived type, optionally "
+"specified via the hint string (e.g. [code]\"Node2D\"[/code]). Editing it will "
+"show a dialog for picking a node from the scene."
+msgstr ""
+"Weist darauf hin, dass es sich bei einer Eigenschaft um eine Instanz eines "
+"von [Node] abgeleiteten Typs handelt, der optional über den Hinweis-String "
+"angegeben werden kann (z. B. [code]\"Node2D\"[/code]). Bei der Bearbeitung "
+"wird ein Dialog zum Auswählen eines Nodes aus der Szene angezeigt."
+
+msgid ""
"Hints that a quaternion property should disable the temporary euler editor."
msgstr ""
"Weist darauf hin, dass eine Quaternion-Eigenschaft den temporären Euler-"
@@ -5819,6 +5213,13 @@ msgstr ""
"Die Eigenschaft ist eine Skriptvariable, die serialisiert und in der "
"Szenendatei gespeichert werden soll."
+msgid ""
+"The property value of type [Object] will be stored even if its value is "
+"[code]null[/code]."
+msgstr ""
+"Der Wert der Eigenschaft vom Typ [Object] wird gespeichert, auch wenn der "
+"Wert [code]null[/code] ist."
+
msgid "If this property is modified, all inspector fields will be refreshed."
msgstr ""
"Wenn diese Eigenschaft geändert wird, werden alle Inspektor Felder "
@@ -6108,6 +5509,9 @@ msgstr "Unärer Plus-Operator ([code]+[/code])."
msgid "Remainder/modulo operator ([code]%[/code])."
msgstr "Rest/Modulo-Operator ([code]%[/code])."
+msgid "Power operator ([code]**[/code])."
+msgstr "Potenz-Operator ([code]**[/code])."
+
msgid "Left shift operator ([code]<<[/code])."
msgstr "Linksschiebe-Operator ([code]<<[/code])."
@@ -6179,15 +5583,28 @@ msgstr ""
"sind (gleich zu [constant Vector3.ZERO]). Ansonsten wird immer [code]true[/"
"code] ausgewertet."
+msgid "Math documentation index"
+msgstr "Mathematik-Dokumentation: Inhaltsverzeichnis"
+
msgid "Vector math"
msgstr "Vektor-Mathematik"
msgid "Advanced vector math"
msgstr "Fortgeschrittene Vektor-Mathematik"
+msgid ""
+"Constructs an [AABB] with its [member position] and [member size] set to "
+"[constant Vector3.ZERO]."
+msgstr ""
+"Konstruiert ein [AABB] mit [member position] und [member size] auf [constant "
+"Vector3.ZERO] gesetzt."
+
msgid "Constructs an [AABB] as a copy of the given [AABB]."
msgstr "Konstruiert einen [AABB] als Kopie des gegebenen [AABB]."
+msgid "Constructs an [AABB] by [param position] and [param size]."
+msgstr "Konstruiert ein [AABB] aus [param position] und [param size]."
+
msgid ""
"Returns an [AABB] equivalent to this bounding box, with its width, height, "
"and depth modified to be non-negative values.\n"
@@ -6278,6 +5695,68 @@ msgstr ""
"[/codeblocks]"
msgid ""
+"Returns a copy of this bounding box expanded to align the edges with the "
+"given [param to_point], if necessary.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var box = AABB(Vector3(0, 0, 0), Vector3(5, 2, 5))\n"
+"\n"
+"box = box.expand(Vector3(10, 0, 0))\n"
+"print(box.position) # Prints (0, 0, 0)\n"
+"print(box.size) # Prints (10, 2, 5)\n"
+"\n"
+"box = box.expand(Vector3(-5, 0, 5))\n"
+"print(box.position) # Prints (-5, 0, 0)\n"
+"print(box.size) # Prints (15, 2, 5)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var box = new Aabb(new Vector3(0, 0, 0), new Vector3(5, 2, 5));\n"
+"\n"
+"box = box.Expand(new Vector3(10, 0, 0));\n"
+"GD.Print(box.Position); // Prints (0, 0, 0)\n"
+"GD.Print(box.Size); // Prints (10, 2, 5)\n"
+"\n"
+"box = box.Expand(new Vector3(-5, 0, 5));\n"
+"GD.Print(box.Position); // Prints (-5, 0, 0)\n"
+"GD.Print(box.Size); // Prints (15, 2, 5)\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"Gibt eine Kopie dieses Rechtecks zurück, die so erweitert ist, dass die "
+"Kanten am angegebenen [param to_point]-Punkt ausgerichtet sind, falls "
+"erforderlich.\n"
+"[gdscript]\n"
+"var box = AABB(Vector3(0, 0, 0), Vector3(5, 2, 5))\n"
+"\n"
+"box = box.expand(Vector3(10, 0, 0))\n"
+"print(box.position) # gibt (0, 0, 0) aus\n"
+"print(box.size) # gibt (10, 2, 5) aus\n"
+"\n"
+"box = box.expand(Vector3(-5, 0, 5))\n"
+"print(box.position) # gibt (-5, 0, 0) aus\n"
+"print(box.size) # gibt (15, 2, 5) aus\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var box = new Aabb(new Vector3(0, 0, 0), new Vector3(5, 2, 5));\n"
+"\n"
+"box = box.Expand(new Vector3(10, 0, 0));\n"
+"GD.Print(box.Position); // gibt (0, 0, 0) aus\n"
+"GD.Print(box.Size); // gibt (10, 2, 5) aus\n"
+"\n"
+"box = box.Expand(new Vector3(-5, 0, 5));\n"
+"GD.Print(box.Position); // gibt (-5, 0, 0) aus\n"
+"GD.Print(box.Size); // gibt (15, 2, 5) aus\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the center point of the bounding box. This is the same as "
+"[code]position + (size / 2.0)[/code]."
+msgstr ""
+"Gibt den Mittelpunkt des Begrenzungsrechtecks zurück. Äquivalent zu "
+"[code]position + (size / 2.0)[/code]."
+
+msgid ""
"Returns the position of one of the 8 vertices that compose this bounding box. "
"With a [param idx] of [code]0[/code] this is the same as [member position], "
"and a [param idx] of [code]7[/code] is the same as [member end]."
@@ -6411,6 +5890,15 @@ msgstr ""
"Als Beispiel, siehe [method get_shortest_axis]."
msgid ""
+"Returns the vertex's position of this bounding box that's the farthest in the "
+"given direction. This point is commonly known as the support point in "
+"collision detection algorithms."
+msgstr ""
+"Gibt die Position des Vertices dieser Bounding Box zurück, der in der "
+"angegebenen Richtung am weitesten entfernt ist. Dieser Punkt ist in "
+"Algorithmen zur Kollisionserkennung allgemein als Stützpunkt bekannt."
+
+msgid ""
"Returns the bounding box's volume. This is equivalent to [code]size.x * size."
"y * size.z[/code]. See also [method has_volume]."
msgstr ""
@@ -6466,6 +5954,36 @@ msgstr ""
"[/codeblocks]"
msgid ""
+"Returns [code]true[/code] if the bounding box contains the given [param "
+"point]. By convention, points exactly on the right, top, and front sides are "
+"[b]not[/b] included.\n"
+"[b]Note:[/b] This method is not reliable for [AABB] with a [i]negative[/i] "
+"[member size]. Use [method abs] first to get a valid bounding box."
+msgstr ""
+"Gibt [code]true[/code] zurück, wenn das Begrenzungsrechteck den gegebenen "
+"Punkt [param point] enthält. Konventionsgemäß werden Punkte, die genau auf "
+"der rechten, oberen und vorderen Seite liegen, [b]nicht[/b] berücksichtigt.\n"
+"[b]Hinweis:[/b] Diese Methode ist nicht zuverlässig für [AABB] mit einer "
+"[i]negativen Größe[/i]. Verwenden Sie zuerst [method abs], um ein valides "
+"Begrenzungreckteck zu erzeugen."
+
+msgid ""
+"Returns [code]true[/code] if this bounding box has a surface or a length, "
+"that is, at least one component of [member size] is greater than [code]0[/"
+"code]. Otherwise, returns [code]false[/code]."
+msgstr ""
+"Gibt [code]true[/code] zurück, wenn diese Bounding Box eine Oberfläche oder "
+"Länge hat, also mindestens eine Komponente von [member size] größer als "
+"[code]0[/code] ist. Ansonsten wird [code]false[/code] zurückgegeben."
+
+msgid ""
+"Returns [code]true[/code] if this bounding box's width, height, and depth are "
+"all positive. See also [method get_volume]."
+msgstr ""
+"Gibt [code]true[/code] zurück, wenn Breite, Höhe und Tiefe dieser Bounding "
+"Box alle positiv sind. Siehe auch [method get_volume]."
+
+msgid ""
"Returns the intersection between this bounding box and [param with]. If the "
"boxes do not intersect, returns an empty [AABB]. If the boxes intersect at "
"the edge, returns a flat [AABB] with no volume (see [method has_surface] and "
@@ -6518,6 +6036,21 @@ msgstr ""
"überschneiden, nutzen Sie stattdessen [method intersects]."
msgid ""
+"Returns [code]true[/code] if this bounding box overlaps with the box [param "
+"with]. The edges of both boxes are [i]always[/i] excluded."
+msgstr ""
+"Gibt [code]true[/code] zurück, wenn sich diese Begrenzungsbox mit der Box "
+"[param with] überschneidet. Die Kanten beider Boxen sind [i]immer[/i] "
+"ausgeschlossen."
+
+msgid ""
+"Returns [code]true[/code] if this bounding box is on both sides of the given "
+"[param plane]."
+msgstr ""
+"Gibt [code]true[/code] zurück, wenn diese Bounding Box auf beiden Seiten der "
+"Ebene [param plane] liegt."
+
+msgid ""
"Returns the first point where this bounding box and the given ray intersect, "
"as a [Vector3]. If no intersection occurs, returns [code]null[/code].\n"
"The ray begin at [param from], faces [param dir] and extends towards infinity."
@@ -6540,6 +6073,15 @@ msgstr ""
"Das Segment beginnt bei [param from] und endet bei [param to]."
msgid ""
+"Returns [code]true[/code] if this bounding box and [param aabb] are "
+"approximately equal, by calling [method Vector2.is_equal_approx] on the "
+"[member position] and the [member size]."
+msgstr ""
+"Gibt [code]true[/code] zurück, wenn dieses Begrenzungsreckteck und [param "
+"aabb] annähernd gleich sind, indem [method Vector2.is_equal_approx] für "
+"[member position] und [member size] aufgerufen wird."
+
+msgid ""
"Returns an [AABB] that encloses both this bounding box and [param with] "
"around the edges. See also [method encloses]."
msgstr ""
@@ -6547,6 +6089,22 @@ msgstr ""
"with] an den Rändern umschließt. Siehe auch [method encloses]."
msgid ""
+"The ending point. This is usually the corner on the top-right and forward of "
+"the bounding box, and is equivalent to [code]position + size[/code]. Setting "
+"this point affects the [member size]."
+msgstr ""
+"Endende Ecke. Normalerweise in der vorderen, oberen rechten Ecke der Bounding "
+"Box. Wird berechnet als [code]position + size[/code]. Wenn Sie diesen Wert "
+"einstellen, wird die Größe ([member size]) geändert."
+
+msgid ""
+"The origin point. This is usually the corner on the bottom-left and back of "
+"the bounding box."
+msgstr ""
+"Der Ursprungspunkt. Dieser befindet sich normalerweise in der linken unteren "
+"Ecke und im hinteren Teil der Bounding Box."
+
+msgid ""
"The bounding box's width, height, and depth starting from [member position]. "
"Setting this value also affects the [member end] point.\n"
"[b]Note:[/b] It's recommended setting the width, height, and depth to non-"
@@ -6566,6 +6124,17 @@ msgstr ""
"verwenden Sie [method abs]."
msgid ""
+"Returns [code]true[/code] if the [member position] or [member size] of both "
+"bounding boxes 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 ""
+"Gibt [code]true[/code] zurück, wenn die [member position] oder [member size] "
+"der beiden Rechtecke nicht gleich sind.\n"
+"[b]Hinweis:[/b] Aufgrund von Fließkomma-Präzisionsfehlern sollten Sie "
+"stattdessen [method is_equal_approx] verwenden, das zuverlässiger ist."
+
+msgid ""
"Inversely transforms (multiplies) the [AABB] by the given [Transform3D] "
"transformation matrix, under the assumption that the transformation basis is "
"orthonormal (i.e. rotation/reflection is fine, scaling/skew is not).\n"
@@ -6586,6 +6155,20 @@ msgstr ""
"code] verwendet werden. Siehe [Methode Transform3D.affine_inverse]."
msgid ""
+"Returns [code]true[/code] if both [member position] and [member size] of the "
+"bounding boxes are exactly equal, respectively.\n"
+"[b]Note:[/b] Due to floating-point precision errors, consider using [method "
+"is_equal_approx] instead, which is more reliable."
+msgstr ""
+"Gibt [code]true[/code] zurück, wenn sowohl [member position] als auch [member "
+"size] der Rechtecke genau gleich sind.\n"
+"[b]Hinweis:[/b] Aufgrund von Fließkomma-Präzisionsfehlern sollten Sie "
+"stattdessen [method is_equal_approx] verwenden, das zuverlässiger ist."
+
+msgid "A base dialog used for user notification."
+msgstr "Basisdialog für Benutzerbenachrichtigung."
+
+msgid ""
"The default use of [AcceptDialog] is to allow it to only be accepted or "
"closed, with the same result. However, the [signal confirmed] and [signal "
"canceled] signals allow to make the two actions different, and the [method "
@@ -6657,10 +6240,30 @@ msgstr ""
"Registriert ein [LineEdit] im Dialog. Wenn die Eingabetaste gedrückt ist, "
"wird der Dialog übernommen."
+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 ""
+"Entfernt den [param button] aus dem Dialog. Gibt den [param button] NICHT "
+"frei. Der [param button] muss ein [Button] sein, der mit der [method "
+"add_button]- oder [method add_cancel_button]-Methode hinzugefügt wurde. Nach "
+"dem Entfernen wird das Drücken des [param button] nicht mehr das [signal "
+"custom_action]- oder [signal canceled]-Signal dieses Dialogs auslösen."
+
msgid "Sets autowrapping for the text in the dialog."
msgstr "Legt den automatischen Umbruch für den Text im Dialog fest."
msgid ""
+"If [code]true[/code], the dialog will be hidden when the escape key "
+"([constant KEY_ESCAPE]) is pressed."
+msgstr ""
+"Wenn [code]true[/code], wird der Dialog bei Drücken der Escape-Taste "
+"([constant KEY_ESCAPE]) ausgeblendet."
+
+msgid ""
"If [code]true[/code], the dialog is hidden when the OK button is pressed. You "
"can set it to [code]false[/code] if you want to do e.g. input validation when "
"receiving the [signal confirmed] signal, and handle hiding the dialog in your "
@@ -6694,6 +6297,13 @@ msgstr ""
"Der Text, der auf der Schaltfläche OK angezeigt wird (siehe [method "
"get_ok_button])."
+msgid ""
+"Emitted when the dialog is closed or the button created with [method "
+"add_cancel_button] is pressed."
+msgstr ""
+"Wird ausgegeben, wenn der Dialog geschlossen oder der Abbrechen-Button "
+"(erstellt mit [method add_cancel_button]) gedrückt wird."
+
msgid "Emitted when the dialog is accepted, i.e. the OK button is pressed."
msgstr ""
"Wird ausgegeben, wenn der Dialog akzeptiert wird, d. h. die Schaltfläche OK "
@@ -6901,6 +6511,18 @@ msgstr ""
"wurde."
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 ""
+"Startet den AES-Kontext im angegebenen [param mode]. Ein [param key] von "
+"entweder 16 oder 32 Byte muss immer angegeben werden, während ein [param iv] "
+"(Initialisierungsvektor) von genau 16 Byte nur benötigt wird, wenn [param "
+"mode] entweder [constant MODE_CBC_ENCRYPT] oder [constant MODE_CBC_DECRYPT] "
+"ist."
+
+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"
@@ -6937,6 +6559,26 @@ msgstr ""
"er manuell bewegt wird, wirkt er sich auf andere Körper in seinem Pfad aus."
msgid ""
+"An animatable 2D physics body. It can't be moved by external forces or "
+"contacts, but can be moved manually by other means such as code, "
+"[AnimationMixer]s (with [member AnimationMixer.callback_mode_process] set to "
+"[constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS]), and "
+"[RemoteTransform2D].\n"
+"When [AnimatableBody2D] is moved, its linear and angular velocity are "
+"estimated and used to affect other physics bodies in its path. This makes it "
+"useful for moving platforms, doors, and other moving objects."
+msgstr ""
+"Ein animierbarer 2D-Physikkörper. Er kann nicht durch externe Kräfte oder "
+"Kontakte bewegt werden, kann aber manuell durch andere Mittel wie Code, "
+"[AnimationMixer] (mit [member AnimationMixer.callback_mode_process] auf "
+"[constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS] gesetzt) "
+"und [RemoteTransform2D] bewegt werden.\n"
+"Wenn [AnimatableBody2D] bewegt wird, werden seine lineare und winklige "
+"Geschwindigkeit geschätzt und verwendet, um andere Physik-Körper in seinem "
+"Pfad zu beeinflussen. Dies macht es nützlich für die Bewegung von "
+"Plattformen, Türen und anderen beweglichen Objekten."
+
+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 "
@@ -6955,12 +6597,29 @@ msgstr ""
"Ein 3D-Physikkörper, der nicht durch externe Kräfte bewegt werden kann. Wenn "
"er manuell bewegt wird, wirkt er sich auf andere Körper in seinem Pfad aus."
+msgid ""
+"An animatable 3D physics body. It can't be moved by external forces or "
+"contacts, but can be moved manually by other means such as code, "
+"[AnimationMixer]s (with [member AnimationMixer.callback_mode_process] set to "
+"[constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS]), and "
+"[RemoteTransform3D].\n"
+"When [AnimatableBody3D] is moved, its linear and angular velocity are "
+"estimated and used to affect other physics bodies in its path. This makes it "
+"useful for moving platforms, doors, and other moving objects."
+msgstr ""
+"Ein animierbarer 3D-Physik-Körper. Er kann nicht durch externe Kräfte oder "
+"Kontakte bewegt werden, kann aber manuell durch andere Mittel wie Code, "
+"[AnimationMixer] (mit [member AnimationMixer.callback_mode_process] auf "
+"[constant AnimationMixer.ANIMATION_CALLBACK_MODE_PROCESS_PHYSICS] gesetzt) "
+"und [RemoteTransform3D] bewegt werden.\n"
+"Wenn [AnimatableBody3D] bewegt wird, werden seine lineare und winklige "
+"Geschwindigkeit geschätzt und verwendet, um andere Physik-Körper in seinem "
+"Pfad zu beeinflussen. Dies macht es nützlich für die Bewegung von "
+"Plattformen, Türen und anderen beweglichen Objekten."
+
msgid "3D Physics Tests Demo"
msgstr "3D-Physik Tests Demo"
-msgid "Third Person Shooter Demo"
-msgstr "Third Person Shooter Demo"
-
msgid "3D Voxel Demo"
msgstr "3D Voxel Demo"
@@ -6977,6 +6636,11 @@ msgstr ""
"move_and_collide] verwenden."
msgid ""
+"Sprite node that contains multiple textures as frames to play for animation."
+msgstr ""
+"Sprite-Node, der mehrere Texturen als Frames für die Animation verwenden kann."
+
+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 "
@@ -7013,6 +6677,27 @@ msgstr ""
"abgespielt wird."
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 ""
+"Gibt [code]true[/code] zurück, wenn eine Animation gerade abgespielt wird "
+"(auch, wenn [member speed_scale] und/oder [code]custom_speed[/code] [code]0[/"
+"code] sind)."
+
+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 ""
+"Pausiert die aktuell wiedergegebene Animation. Die [member frame] und [member "
+"frame_progress] werden beibehalten und der Aufruf von [method play] oder "
+"[method play_backwards] ohne Argumente setzt die Animation an der aktuellen "
+"Abspielposition fort.\n"
+"Siehe auch [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"
@@ -7081,6 +6766,18 @@ msgstr ""
"[code]0[/code] zurückgesetzt und die [code]custom_speed[/code] wird auf "
"[code]1.0[/code] zurückgesetzt. Siehe auch [Methode 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 ""
+"Die aktuelle Animation aus der Ressource [member sprite_frames]. Wenn sich "
+"dieser Wert ändert, werden der [member frame]-Zähler und [member "
+"frame_progress] zurückgesetzt."
+
+msgid "The key of the animation to play when the scene loads."
+msgstr "Der Key der Animation, die beim Laden der Szene abgespielt werden soll."
+
msgid "If [code]true[/code], texture is flipped horizontally."
msgstr "Wenn [code]true[/code], wird die Textur horizontal gespiegelt."
@@ -7132,6 +6829,29 @@ msgstr ""
"Ermöglicht es Ihnen, die Zustände der [SpriteFrames]-Ressource zu laden, zu "
"bearbeiten, zu löschen, eindeutig zu machen und zu speichern."
+msgid "Emitted when [member animation] changes."
+msgstr "Wird ausgegeben, wenn sich [member animation] ändert."
+
+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.\n"
+"[b]Note:[/b] This signal is not emitted if an animation is looping."
+msgstr ""
+"Wird ausgesendet, wenn die Animation das Ende erreicht, oder den Anfang, wenn "
+"sie rückwärts abgespielt wird. Wenn die Animation zu Ende ist, wird die "
+"Wiedergabe angehalten.\n"
+"[b]Hinweis:[/b] Dieses Signal wird nicht ausgesendet, wenn eine Animation in "
+"einer Schleife läuft."
+
+msgid "Emitted when the animation loops."
+msgstr "Wird ausgegeben, wenn sich die Animation wiederholt."
+
+msgid "Emitted when [member frame] changes."
+msgstr "Wird ausgegeben, wenn [member frame] sich ändert."
+
+msgid "Emitted when [member sprite_frames] changes."
+msgstr "Wird ausgegeben, wenn [member sprite_frames] sich ändert."
+
msgid ""
"2D sprite node in 3D world, that can use multiple 2D textures for animation."
msgstr ""
@@ -7160,6 +6880,48 @@ msgid "Proxy texture for simple frame-based animations."
msgstr "Proxy-Textur für einfache framebasierte Animationen."
msgid ""
+"[AnimatedTexture] is a resource format for frame-based animations, where "
+"multiple textures can be chained automatically with a predefined delay for "
+"each frame. Unlike [AnimationPlayer] or [AnimatedSprite2D], it isn't a "
+"[Node], but has the advantage of being usable anywhere a [Texture2D] resource "
+"can be used, e.g. in a [TileSet].\n"
+"The playback of the animation is controlled by the [member speed_scale] "
+"property, as well as each frame's duration (see [method set_frame_duration]). "
+"The animation loops, i.e. it will restart at frame 0 automatically after "
+"playing the last frame.\n"
+"[AnimatedTexture] currently requires all frame textures to have the same "
+"size, otherwise the bigger ones will be cropped to match the smallest one.\n"
+"[b]Note:[/b] AnimatedTexture doesn't support using [AtlasTexture]s. Each "
+"frame needs to be a separate [Texture2D].\n"
+"[b]Warning:[/b] The current implementation is not efficient for the modern "
+"renderers."
+msgstr ""
+"[AnimatedTexture] ist ein Ressourcenformat für Frame-basierte Animationen, "
+"bei denen mehrere Texturen automatisch mit einer vordefinierten Verzögerung "
+"für jeden Frame verkettet werden können. Im Gegensatz zu [AnimationPlayer] "
+"oder [AnimatedSprite2D] ist es kein [Node], hat aber den Vorteil, dass es "
+"überall verwendet werden kann, wo eine [Texture2D]-Ressource verwendet werden "
+"kann, z.B. in einem [TileSet].\n"
+"Die Wiedergabe der Animation wird durch die [member speed_scale]-Eigenschaft "
+"gesteuert, ebenso wie die Dauer der einzelnen Frames (siehe [method "
+"set_frame_duration]). Die Animation wird in einer Schleife abgespielt, d.h. "
+"sie beginnt automatisch wieder bei Frame 0, nachdem der letzte Frame "
+"abgespielt wurde.\n"
+"[AnimatedTexture] erfordert derzeit, dass alle Frame-Texturen die gleiche "
+"Größe haben, ansonsten werden die größeren Texturen auf die kleinste "
+"zugeschnitten.\n"
+"[b]Hinweis:[/b] AnimatedTexture unterstützt nicht die Verwendung von "
+"[AtlasTexture]s. Jedes Bild muss eine eigene [Texture2D] sein.\n"
+"[b]Warnung:[/b] Die aktuelle Implementierung ist für moderne Renderer nicht "
+"effizient."
+
+msgid "Returns the given [param frame]'s duration, in seconds."
+msgstr "Gibt die Dauer des angegebenen [param frame]s zurück."
+
+msgid "Returns the given frame's [Texture2D]."
+msgstr "Gibt die [Texture2D] des angegebenen Frames zurück."
+
+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."
@@ -7169,6 +6931,21 @@ msgstr ""
"bei der Wiedergabe übersprungen."
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 ""
+"Weist dem angegebenen Frame eine [Texture2D] zu. Frame-IDs beginnen bei 0, "
+"also hat das erste Frame die ID 0 und das letzte Frame der Animation die ID "
+"[member frames] - 1.\n"
+"Sie können eine beliebige Anzahl von Texturen bis zu [constant MAX_FRAMES] "
+"definieren, aber beachten Sie, dass nur die Frames von 0 bis [member frames] "
+"- 1 Teil der Animation sein werden."
+
+msgid ""
"Sets the currently visible frame of the texture. Setting this frame while "
"playing resets the current frame time, so the newly selected frame plays for "
"its whole configured frame duration."
@@ -7208,6 +6985,99 @@ msgstr ""
"wird an der Stelle fortgesetzt, an der sie angehalten wurde, wenn Sie diese "
"Eigenschaft auf [code]false[/code] ändern."
+msgid ""
+"The animation speed is multiplied by this value. If set to a negative value, "
+"the animation is played in reverse."
+msgstr ""
+"Die Animationsgeschwindigkeit wird mit diesem Wert multipliziert. Bei einem "
+"negativen Wert wird die Animation rückwärts abgespielt."
+
+msgid ""
+"The maximum number of frames supported by [AnimatedTexture]. If you need more "
+"frames in your animation, use [AnimationPlayer] or [AnimatedSprite2D]."
+msgstr ""
+"Die maximale Anzahl von Bildern, die von [AnimatedTexture] unterstützt wird. "
+"Wenn Sie mehr Bilder in Ihrer Animation benötigen, verwenden Sie "
+"[AnimationPlayer] oder [AnimatedSprite2D]."
+
+msgid "Holds data that can be used to animate anything in the engine."
+msgstr "Enthält Daten, mit denen alles in der Engine animiert werden kann."
+
+msgid ""
+"This resource holds data that can be used to animate anything 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 2.0 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, 2.0, 100)\n"
+"animation.length = 2.0\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// This creates an animation that makes the node \"Enemy\" move to the right "
+"by\n"
+"// 100 pixels in 2.0 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, 2.0f, 100);\n"
+"animation.Length = 2.0f;\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 ""
+"Diese Ressource enthält Daten, die verwendet werden können, um irgendetwas in "
+"der Engine zu animieren. Animationen sind in Tracks unterteilt und jeder "
+"Track muss mit einem Node verbunden sein. Der Zustand dieses Nodes kann im "
+"Laufe der Zeit geändert werden, indem zeitlich festgelegte Keys (Ereignisse) "
+"zum Track hinzugefügt werden.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Dieses Skript erstellt eine Animation, um den Node \"Enemy\"\n"
+"# mit 100 Pixeln pro 2.0 Sekunden nach rechts zu bewegen.\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, 2.0, 100)\n"
+"animation.length = 2.0\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Dieses Skript erstellt eine Animation, um den Node \"Enemy\"\n"
+"// mit 100 Pixeln pro 2.0 Sekunden nach rechts zu bewegen.\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, 2.0f, 100);\n"
+"animation.Length = 2.0f;\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"Animationen sind lediglich Datencontainer und müssen zu Nodes wie einem "
+"[AnimationPlayer] hinzugefügt werden, um abgespielt werden zu können. "
+"Animations-Tracks haben verschiedene Typen, jeder mit seinem eigenen Satz von "
+"speziellen Methoden. Prüfen Sie [enum TrackType], um die verfügbaren Typen zu "
+"sehen.\n"
+"[b]Hinweis:[/b] Für 3D-Position/Drehung/Skalierung wird aus Leistungsgründen "
+"die Verwendung der dedizierten [constant TYPE_POSITION_3D], [constant "
+"TYPE_ROTATION_3D] und [constant TYPE_SCALE_3D] Track-Typen anstelle von "
+"[constant TYPE_VALUE] empfohlen."
+
msgid "Animation documentation index"
msgstr "Index der Animationsdokumentation"
@@ -7215,6 +7085,69 @@ msgid "Adds a track to the Animation."
msgstr "Fügt der Animation eine Spur hinzu."
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 ""
+"Gibt den Animationsnamen an dem durch [param key_idx] identifizierten Key "
+"zurück. Die [param track_idx] muss der Index einer Animationsspur sein."
+
+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 ""
+"Fügt einen Schlüssel mit dem Wert [param animation] zur angegebenen [param "
+"time] (in Sekunden) ein. Die [param track_idx] muss der Index einer "
+"Animationsspur sein."
+
+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 ""
+"Setzt den durch [param key_idx] identifizierten Schlüssel auf den Wert [param "
+"animation]. Die [param track_idx] muss der Index einer Animationsspur sein."
+
+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 ""
+"Gibt den Endoffset des durch [param key_idx] identifizierten Schlüssels "
+"zurück. Die [param track_idx] muss der Index eines Audio-Tracks sein.\n"
+"End-Offset ist die Anzahl der Sekunden, die am Ende des Audio-Streams "
+"abgeschnitten werden."
+
+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 ""
+"Gibt den Startoffset des durch [param key_idx] identifizierten Schlüssels "
+"zurück. Die [param track_idx] muss der Index eines Audio-Tracks sein.\n"
+"Start-Offset ist die Anzahl der Sekunden, die am Anfang des Audio-Streams "
+"abgeschnitten werden."
+
+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 ""
+"Gibt den Audio-Stream des durch [param key_idx] identifizierten Schlüssels "
+"zurück. Der [param track_idx] muss der Index eines Audio-Tracks sein."
+
+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 ""
+"Fügt einen Audio-Track-Schlüssel bei der angegebenen [param time] in Sekunden "
+"ein. Der [param track_idx] muss der Index eines Audio-Tracks sein.\n"
+"[param stream] ist die [AudioStream]-Ressource, die abgespielt werden soll. "
+"[param start_offset] ist die Anzahl der Sekunden, die am Anfang des Audio-"
+"Streams abgeschnitten werden, während [param end_offset] am Ende steht."
+
+msgid ""
"Returns [code]true[/code] if the track at [param track_idx] will be blended "
"with other animations."
msgstr ""
@@ -7222,6 +7155,30 @@ msgstr ""
"anderen Animationen überblendet wird."
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 ""
+"Setzt den Endoffset des durch [param key_idx] identifizierten Schlüssels auf "
+"den Wert [param offset]. Der [param track_idx] muss der Index eines Audio-"
+"Tracks sein."
+
+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 ""
+"Setzt den Startoffset des durch [param key_idx] identifizierten Schlüssels "
+"auf den Wert [param offset]. Der [param track_idx] muss der Index eines Audio-"
+"Tracks sein."
+
+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 ""
+"Setzt den Stream des durch [param key_idx] identifizierten Schlüssels auf den "
+"Wert [param offset]. Der [param track_idx] muss der Index eines Audio-Tracks "
+"sein."
+
+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 ""
@@ -7229,6 +7186,47 @@ msgstr ""
"[code]true[/code], ändert sich die Lautstärke der Audiowiedergabe je nach "
"Überblendungswert."
+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 ""
+"Gibt das In-Handle des durch [param key_idx] identifizierten Schlüssels "
+"zurück. Der [param track_idx] muss der Index einer Bezier-Spur sein."
+
+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 ""
+"Gibt das Out-Handle des durch [param key_idx] identifizierten Schlüssels "
+"zurück. Die [param track_idx] muss der Index einer Bezier-Spur sein."
+
+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 ""
+"Gibt den Wert des durch [param key_idx] identifizierten Schlüssels zurück. "
+"Der [param track_idx] muss der Index einer Bezier-Spur sein."
+
+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 ""
+"Fügt einen Bezier-Track-Schlüssel zur angegebenen [param time] in Sekunden "
+"ein. Die [param track_idx] muss der Index einer Bezier-Spur sein.\n"
+"[param in_handle] ist die linksseitige Gewichtung des eingefügten "
+"Bezierkurven-Punkts, [param out_handle] die rechtsseitige, während [param "
+"value] der tatsächliche Wert an diesem Punkt ist."
+
+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 ""
+"Gibt den interpolierten Wert zur angegebenen [param time] (in Sekunden) "
+"zurück. Die [param track_idx] muss der Index einer Bezier-Spur sein."
+
msgid "Clear the animation (clear all tracks and reset all)."
msgstr ""
"Löschen Sie die Animation (löschen Sie alle Spuren und setzen Sie alle "
@@ -7295,6 +7293,17 @@ msgstr ""
"Schlüsselindex zurück."
msgid ""
+"Finds the key index by time in a given track. Optionally, only find it if the "
+"approx/exact time is given.\n"
+"If [param limit] is [code]true[/code], it does not return keys outside the "
+"animation range."
+msgstr ""
+"Findet den Key-Index nach Zeit in einem gegebenen Track. Findet ihn optional "
+"nur, wenn die ungefähre/genaue Zeit angegeben ist.\n"
+"Wenn [param limit] [code]true[/code] ist, werden keine Keys außerhalb des "
+"Animationsbereichs gefunden."
+
+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 ""
@@ -7591,17 +7600,6 @@ msgstr ""
"Bewegt die Animationen manuell um die angegebene Zeit (in Sekunden) weiter."
msgid ""
-"Returns the first [AnimationLibrary] with key [param name] or [code]null[/"
-"code] if not found.\n"
-"To get the [AnimationPlayer]'s global animation library, use "
-"[code]get_animation_library(\"\")[/code]."
-msgstr ""
-"Gibt die erste [AnimationLibrary] mit dem Schlüssel [param name] zurück oder "
-"[code]null[/code], falls nicht gefunden.\n"
-"Um die globale Animationsbibliothek des [AnimationPlayer] zu erhalten, "
-"verwende [code]get_animation_library(\"\")[/code]."
-
-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 "
@@ -7932,20 +7930,6 @@ msgstr ""
"unbeabsichtigten diskreten Änderung kommen, so dass dies nur für einige "
"einfache Anwendungsfälle sinnvoll ist."
-msgid ""
-"Returns [code]true[/code] if the [AnimationPlayer] stores an [Animation] with "
-"key [param name]."
-msgstr ""
-"Gibt [code]true[/code] zurück, wenn der [AnimationPlayer] eine [Animation] "
-"mit dem Schlüssel [param name] speichert."
-
-msgid ""
-"Returns [code]true[/code] if the [AnimationPlayer] stores an "
-"[AnimationLibrary] with key [param name]."
-msgstr ""
-"Gibt [code]true[/code] zurück, wenn der [AnimationPlayer] eine "
-"[AnimationLibrary] mit dem Schlüssel [param name] speichert."
-
msgid "Removes the [AnimationLibrary] associated with the key [param name]."
msgstr "Entfernt die [AnimationLibrary] mit der Taste [param name]."
@@ -8051,13 +8035,6 @@ msgstr ""
"manuell über [method clear_caches]."
msgid ""
-"Editor only. Notifies when the property have been updated to update dummy "
-"[AnimationPlayer] in animation player editor."
-msgstr ""
-"Nur Editor. Benachrichtigt, wenn die Eigenschaft aktualisiert wurde, um den "
-"Dummy [AnimationPlayer] im Animationsplayer-Editor zu aktualisieren."
-
-msgid ""
"Process animation during process frames (see [constant Node."
"NOTIFICATION_INTERNAL_PROCESS])."
msgstr ""
@@ -8088,28 +8065,6 @@ msgid "Using AnimationTree"
msgstr "Verwendung des AnimationTree"
msgid ""
-"When inheriting from [AnimationRootNode], implement this virtual method to "
-"run some code when this animation 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 ""
-"Wenn Sie von [AnimationRootNode] erben, implementieren Sie diese virtuelle "
-"Methode, um einen Code auszuführen, wenn dieser Animationsknoten (Node) "
-"verarbeitet wird. Der Parameter [param time] ist ein relatives Delta, es sei "
-"denn, [param seek] ist [code]true[/code], in diesem Fall ist es absolut.\n"
-"Rufen Sie hier die Funktionen [method blend_input], [method blend_node] oder "
-"[method blend_animation] auf. Sie können auch [method get_parameter] und "
-"[method set_parameter] verwenden, um den lokalen Speicher zu verändern.\n"
-"Diese Funktion sollte die verbleibende Zeit bis zur Beendigung der aktuellen "
-"Animation zurückgeben (wenn Sie unsicher sind, übergeben Sie den Wert aus der "
-"aufgerufenen Hauptmischung)."
-
-msgid ""
"Adds an input to the animation node. This is only useful for animation nodes "
"created for use in an [AnimationNodeBlendTree]. If the addition fails, "
"returns [code]false[/code]."
@@ -8660,25 +8615,6 @@ msgstr ""
"Legt fest, wie die Überblendung zwischen Animationen abgeschwächt wird. Wenn "
"leer, wird der Übergang linear sein."
-msgid ""
-"The fade-in duration. For example, setting this to [code]1.0[/code] for a 5 "
-"second length animation will produce a cross-fade that starts at 0 second and "
-"ends at 1 second during the animation."
-msgstr ""
-"Die Einblendungsdauer. Wenn Sie diesen Wert beispielsweise auf [code]1.0[/"
-"code] für eine 5 Sekunden lange Animation setzen, wird eine Überblendung "
-"erzeugt, die bei 0 Sekunden beginnt und bei 1 Sekunde während der Animation "
-"endet."
-
-msgid ""
-"The fade-out duration. For example, setting this to [code]1.0[/code] for a 5 "
-"second length animation will produce a cross-fade that starts at 4 second and "
-"ends at 5 second during the animation."
-msgstr ""
-"Die Dauer der Ausblendung. Wenn Sie diesen Wert beispielsweise auf [code]1.0[/"
-"code] für eine 5 Sekunden lange Animation setzen, beginnt die Überblendung "
-"bei 4 Sekunden und endet bei 5 Sekunden während der Animation."
-
msgid "The request to play the animation connected to \"shot\" port."
msgstr ""
"Die Anforderung, die Animation abzuspielen, ist mit dem Anschluss \"shot\" "
@@ -8999,9 +8935,6 @@ msgstr ""
msgid "The transition type."
msgstr "Der Übergangstyp."
-msgid "The time to cross-fade between this state and the next."
-msgstr "Die Überblendzeit zwischen diesem Zustand und dem nächsten."
-
msgid "Emitted when [member advance_condition] is changed."
msgstr "Ausgesendet wenn [member advance_condition] verändert wird."
@@ -9069,13 +9002,6 @@ msgid "AnimationTree"
msgstr "AnimationTree"
msgid ""
-"Base class for [AnimationNode]s with more than two input ports that must be "
-"synchronized."
-msgstr ""
-"Basisklasse für [AnimationNode]s mit mehr als zwei Eingangsports, die "
-"synchronisiert werden müssen."
-
-msgid ""
"An animation node used to combine, mix, or blend two or more animations "
"together while keeping them synchronized within an [AnimationTree]."
msgstr ""
@@ -9243,12 +9169,6 @@ msgstr ""
"Reset-Option in der Eingabe aktiviert ist, wird die Animation neu gestartet. "
"Wenn [code]false[/code], passiert beim Übergang in den Eigenzustand nichts."
-msgid ""
-"Cross-fading time (in seconds) between each animation connected to the inputs."
-msgstr ""
-"Überblendzeit (in Sekunden) zwischen jeder an den Eingängen angeschlossenen "
-"Animation."
-
msgid "A node used for animation playback."
msgstr ""
"Ein Knoten (Node), der für die Wiedergabe von Animationen verwendet wird."
@@ -9339,6 +9259,28 @@ msgstr ""
"Animation in der Schleife wird irgendwie gestoppt."
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"
+"If [param update_only] is [code]true[/code], the method / audio / animation "
+"playback tracks will not be processed.\n"
+"[b]Note:[/b] Seeking to the end of the animation doesn't emit [signal "
+"AnimationMixer.animation_finished]. If you want to skip animation and emit "
+"the signal, use [method AnimationMixer.advance]."
+msgstr ""
+"Spult die Animation bis zum [param seconds]-Zeitpunkt (in Sekunden) vor. Wenn "
+"[param update] [code]true[/code] ist, wird die Animation ebenfalls "
+"aktualisiert, andernfalls wird sie zur process-zeit aktualisiert. Ereignisse "
+"zwischen dem aktuellen Frame und [param seconds] werden übersprungen.\n"
+"Wenn [param update_only] [code]true[/code] ist, werden die Methoden-/Audio-/"
+"Animations-Wiedergabe-Tracks nicht verarbeitet.\n"
+"[b]Hinweis:[/b] Das Vorspulen zum Ende der Animation sendet kein [Signal "
+"AnimationMixer.animation_finished] aus. Wenn Sie die Animation überspringen "
+"und das Signal aussenden wollen, verwenden Sie [Methode AnimationMixer."
+"advance]."
+
+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"
@@ -9452,6 +9394,29 @@ msgstr ""
"Ein Bereich des 2D-Raums, der andere [CollisionObject2D]s erkennt, die ihn "
"betreten oder verlassen."
+msgid ""
+"[Area2D] is a region of 2D space defined by one or multiple "
+"[CollisionShape2D] or [CollisionPolygon2D] child nodes. It detects when other "
+"[CollisionObject2D]s enter or exit it, and it also keeps track of which "
+"collision objects haven't exited it yet (i.e. which one are overlapping it).\n"
+"This node can also locally alter or override physics parameters (gravity, "
+"damping) and route audio to custom audio buses.\n"
+"[b]Note:[/b] Areas and bodies created with [PhysicsServer2D] might not "
+"interact as expected with [Area2D]s, and might not emit signals or track "
+"objects correctly."
+msgstr ""
+"[Area2D] ist ein Bereich des 2D-Raums, der durch einen oder mehrere "
+"[CollisionShape2D]- oder [CollisionPolygon2D]-Child-Nodes definiert ist. Er "
+"erkennt, wenn andere [CollisionObject2D]s ihn betreten oder verlassen, und er "
+"behält auch im Auge, welche Kollisionsobjekte ihn noch nicht verlassen haben "
+"(d.h. welche ihn überlappen).\n"
+"Dieser Node kann auch lokal Physikparameter (Schwerkraft, Dämpfung) ändern "
+"oder außer Kraft setzen und Audio an benutzerdefinierte Audiobusse "
+"weiterleiten.\n"
+"[b]Hinweis:[/b] Areas und Körper, die mit [PhysicsServer2D] erstellt wurden, "
+"interagieren möglicherweise nicht wie erwartet mit [Area2D]s und senden "
+"möglicherweise keine Signale aus oder verfolgen Objekte nicht korrekt."
+
msgid "Using Area2D"
msgstr "Verwendung von Area2D"
@@ -9778,8 +9743,40 @@ msgstr ""
"Ein Bereich des 3D-Raums, der andere [CollisionObject3D]s erkennt, die ihn "
"betreten oder verlassen."
-msgid "GUI in 3D Demo"
-msgstr "Benutzeroberfläche in 3D-Demo"
+msgid ""
+"[Area3D] is a region of 3D space defined by one or multiple "
+"[CollisionShape3D] or [CollisionPolygon3D] child nodes. It detects when other "
+"[CollisionObject3D]s enter or exit it, and it also keeps track of which "
+"collision objects haven't exited it yet (i.e. which one are overlapping it).\n"
+"This node can also locally alter or override physics parameters (gravity, "
+"damping) and route audio to custom audio buses.\n"
+"[b]Note:[/b] Areas and bodies created with [PhysicsServer3D] might not "
+"interact as expected with [Area3D]s, and might not emit signals or track "
+"objects correctly.\n"
+"[b]Warning:[/b] Using a [ConcavePolygonShape3D] inside a [CollisionShape3D] "
+"child of this node (created e.g. by using the [b]Create Trimesh Collision "
+"Sibling[/b] option in the [b]Mesh[/b] menu that appears when selecting a "
+"[MeshInstance3D] node) may give unexpected results, since this collision "
+"shape is hollow. If this is not desired, it has to be split into multiple "
+"[ConvexPolygonShape3D]s or primitive shapes like [BoxShape3D], or in some "
+"cases it may be replaceable by a [CollisionPolygon3D]."
+msgstr ""
+"[Area3D] ist ein Bereich des 3D-Raums, der durch einen oder mehrere "
+"[CollisionShape3D]- oder [CollisionPolygon3D]-Node definiert ist. Er erkennt, "
+"wenn andere [CollisionObject3D]s ihn betreten oder verlassen, und er behält "
+"auch im Auge, welche Kollisionsobjekte ihn noch nicht verlassen haben (d.h. "
+"welche ihn überlappen).\n"
+"Dieser Node kann auch lokal Physikparameter (Schwerkraft, Dämpfung) ändern "
+"oder außer Kraft setzen und Audio an benutzerdefinierte Audiobusse "
+"weiterleiten.\n"
+"[b]Warnung:[/b] Die Verwendung eines [ConcavePolygonShape3D] innerhalb eines "
+"[CollisionShape3D]-Child dieses Nodes (erstellt z.B. mit der Option "
+"[b]Trimesh-Kollisionsnachbar erzeugen[/b] im [b]Mesh[/b]-Menü, das bei der "
+"Auswahl eines [MeshInstance3D]-Nodes erscheint) kann zu unerwarteten "
+"Ergebnissen führen, da diese Kollisionsform hohl ist. Wenn dies nicht "
+"erwünscht ist, muss sie in mehrere [ConvexPolygonShape3D]s oder primitive "
+"Formen wie [BoxShape3D] aufgeteilt werden, oder in einigen Fällen kann sie "
+"durch ein [CollisionPolygon3D] ersetzt werden."
msgid ""
"Returns [code]true[/code] if intersecting any [Area3D]s, otherwise returns "
@@ -9900,27 +9897,6 @@ msgstr ""
"[code]0.1[/code]."
msgid ""
-"The exponential rate at which wind force decreases with distance from its "
-"origin."
-msgstr ""
-"Die exponentielle Rate, mit der die Windstärke mit der Entfernung vom "
-"Ursprung abnimmt."
-
-msgid "The magnitude of area-specific wind force."
-msgstr "Das Ausmaß der flächenspezifischen Windstärke."
-
-msgid ""
-"The [Node3D] which is used to specify 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 ""
-"Der [Node3D], der verwendet wird, um die Richtung und den Ursprung einer "
-"gebietsspezifischen Windkraft anzugeben. Die Richtung ist entgegengesetzt zur "
-"z-Achse der lokalen Transformation des [Node3D], und der Ursprung ist der "
-"Ursprung der lokalen Transformation des [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 "
@@ -10052,95 +10028,6 @@ msgid "A built-in data structure that holds a sequence of elements."
msgstr "Eine integrierte Datenstruktur, die eine Folge von Elementen enthält."
msgid ""
-"An array data structure that can contain a sequence of elements of any type. "
-"Elements are accessed by a numerical index starting at 0. Negative indices "
-"are used to count from the back (-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] Arrays are always passed by reference. To get a copy of an array "
-"that can be modified independently of the original array, use [method "
-"duplicate].\n"
-"[b]Note:[/b] Erasing elements while iterating over arrays is [b]not[/b] "
-"supported and will result in unpredictable behavior."
-msgstr ""
-"Eine Array-Datenstruktur, die eine Folge von Elementen beliebigen Typs "
-"enthalten kann. Der Zugriff auf die Elemente erfolgt über einen numerischen "
-"Index, der bei 0 beginnt. Negative Indizes werden verwendet, um von hinten zu "
-"zählen (-1 ist das letzte Element, -2 ist das vorletzte usw.).\n"
-"[b]Beispiel:[/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 können mit dem Operator [code]+[/code] verkettet werden:\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-Verkettung ist mit C#-Arrays nicht möglich, wohl aber mit 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); // Gibt [One, 2, 3, Four] zurück\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Hinweis:[/b] Arrays werden immer per Referenz übergeben. Um eine Kopie "
-"eines Arrays zu erhalten, die unabhängig vom ursprünglichen Array geändert "
-"werden kann, verwenden Sie [method duplicate].\n"
-"[b]Hinweis:[/b] Das Löschen von Elementen beim Iterieren über Arrays wird "
-"[b]nicht[/b] unterstützt und führt zu unvorhersehbarem Verhalten."
-
-msgid ""
"Returns the same array as [param from]. If you need a copy of the array, use "
"[method duplicate]."
msgstr ""
@@ -10336,47 +10223,6 @@ msgstr ""
"vom Editor aus ausgeführt wird."
msgid ""
-"Finds the index of an existing value (or the insertion index that maintains "
-"sorting order, if the value is not yet present in the array) using binary "
-"search. Optionally, a [param before] specifier can be passed. If [code]false[/"
-"code], the returned index comes after all existing entries of the value in "
-"the array.\n"
-"[b]Note:[/b] Calling [method bsearch] on an unsorted array results in "
-"unexpected behavior."
-msgstr ""
-"Findet den Index eines vorhandenen Wertes (oder den Einfügeindex, der die "
-"Sortierreihenfolge beibehält, wenn der Wert noch nicht im Array vorhanden "
-"ist) mit Hilfe der binären Suche. Optional kann ein [param before]-"
-"Spezifizierer übergeben werden. Wenn [code]false[/code], kommt der "
-"zurückgegebene Index nach allen vorhandenen Einträgen des Wertes im Array.\n"
-"[b]Hinweis:[/b] Der Aufruf der [Methode bsearch] auf ein unsortiertes Array "
-"führt zu unerwartetem Verhalten."
-
-msgid ""
-"Finds the index of an existing value (or the insertion index that maintains "
-"sorting order, if the value is not yet present in the array) using binary "
-"search and a custom comparison method. Optionally, a [param before] specifier "
-"can be passed. If [code]false[/code], the returned index comes after all "
-"existing entries of the value in the array. The custom method receives two "
-"arguments (an element from the array and the value searched for) and must "
-"return [code]true[/code] if the first argument is less than the second, and "
-"return [code]false[/code] otherwise.\n"
-"[b]Note:[/b] Calling [method bsearch_custom] on an unsorted array results in "
-"unexpected behavior."
-msgstr ""
-"Findet den Index eines vorhandenen Wertes (oder den Einfügeindex, der die "
-"Sortierreihenfolge beibehält, wenn der Wert noch nicht im Array vorhanden "
-"ist) unter Verwendung der binären Suche und einer benutzerdefinierten "
-"Vergleichsmethode. Optional kann ein [param before]-Spezifizierer übergeben "
-"werden. Wenn [code]false[/code], kommt der zurückgegebene Index nach allen "
-"vorhandenen Einträgen des Wertes im Array. Die benutzerdefinierte Methode "
-"erhält zwei Argumente (ein Element aus dem Array und den gesuchten Wert) und "
-"muss [code]true[/code] zurückgeben, wenn das erste Argument kleiner als das "
-"zweite ist, und ansonsten [code]false[/code].\n"
-"[b]Hinweis:[/b] Der Aufruf der [Methode bsearch_custom] auf ein unsortiertes "
-"Array führt zu unerwartetem Verhalten."
-
-msgid ""
"Clears the array. This is equivalent to using [method resize] with a size of "
"[code]0[/code]."
msgstr ""
@@ -10523,18 +10369,6 @@ msgstr ""
"vom Editor aus ausgeführt wird."
msgid ""
-"Returns the [enum Variant.Type] constant for a typed array. If the [Array] is "
-"not typed, returns [constant TYPE_NIL]."
-msgstr ""
-"Gibt die Konstante [enum Variant.Type] für ein typisiertes Array zurück. Wenn "
-"das [Array] nicht typisiert ist, wird [Konstante TYPE_NIL] zurückgegeben."
-
-msgid "Returns a class name of a typed [Array] of type [constant TYPE_OBJECT]."
-msgstr ""
-"Gibt einen Klassennamen eines typisierten [Array] vom Typ [Konstante "
-"TYPE_OBJECT] zurück."
-
-msgid ""
"Returns [code]true[/code] if the array contains the given value.\n"
"[codeblocks]\n"
"[gdscript]\n"
@@ -10858,6 +10692,25 @@ msgstr ""
"zu entfernen, ohne den Wert zurückzugeben, verwenden Sie [code]arr.resize(arr."
"size() - 1)[/code]."
+msgid ""
+"Resizes the array to contain a different number of elements. If the array "
+"size is smaller, elements are cleared, if bigger, new elements are "
+"[code]null[/code]. Returns [constant OK] on success, or one of the other "
+"[enum Error] values if the operation failed.\n"
+"Calling [method resize] once and assigning the new values is faster than "
+"adding new elements one by one.\n"
+"[b]Note:[/b] This method acts in-place and doesn't return a modified array."
+msgstr ""
+"Ändert die Größe des Arrays, damit es eine andere Anzahl von Elementen "
+"enthält. Ist die Größe des Arrays kleiner, werden die Elemente gelöscht, ist "
+"sie größer, sind die neuen Elemente [code]null[/code]. Gibt bei Erfolg "
+"[constant OK] zurück, oder einen der anderen [enum Error]-Werte, wenn der "
+"Vorgang fehlgeschlagen ist.\n"
+"Einmalig [method resize] aufzurufen und die neuen Werte zuzuweisen ist "
+"schneller, als jedes Element einzeln hinzuzufügen.\n"
+"[b]Hinweis:[/b] Diese Methode arbeitet an Ort und Stelle und gibt kein "
+"verändertes Array zurück."
+
msgid "Reverses the order of the elements in the array."
msgstr "Kehrt die Reihenfolge der Elemente des Arrays um."
@@ -11270,86 +11123,6 @@ msgstr ""
"add_surface_from_arrays] hinzugefügt wird. Muss aufgerufen werden, bevor die "
"Oberfläche hinzugefügt wird."
-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 ""
-"Erzeugt eine neue Oberfläche. Die [Methode Mesh.get_surface_count] wird zur "
-"[code]surf_idx[/code] für diese neue Oberfläche.\n"
-"Oberflächen werden erstellt, um mit einem [param primitive] gerendert zu "
-"werden, der einer der in [enum Mesh.PrimitiveType] definierten Werte sein "
-"kann.\n"
-"Das Argument [param arrays] ist ein Array von Arrays. Jedes der [constant "
-"Mesh.ARRAY_MAX]-Elemente enthält ein Array mit einigen der Mesh-Daten für "
-"diese Oberfläche, wie sie durch das entsprechende Mitglied von [enum Mesh."
-"ArrayType] beschrieben werden, oder [code]null[/code], wenn es nicht von der "
-"Oberfläche verwendet wird. Zum Beispiel ist [code]arrays[0][/code] das Array "
-"der Scheitelpunkte. Das erste Scheitelpunkt-Sub-Array ist immer erforderlich; "
-"die anderen sind optional. Durch Hinzufügen eines Index-Arrays wird die "
-"Oberfläche in den \"Index-Modus\" versetzt, in dem die Scheitelpunkt- und "
-"anderen Arrays die Datenquellen sind und das Index-Array die Reihenfolge der "
-"Scheitelpunkte bestimmt. Alle Unterarrays müssen die gleiche Länge wie das "
-"Scheitelpunkt-Array haben (oder ein exaktes Vielfaches der Länge des "
-"Scheitelpunkt-Arrays sein, wenn mehrere Elemente eines Unterarrays einem "
-"einzelnen Scheitelpunkt entsprechen) oder leer sein, mit Ausnahme der "
-"[Konstante Mesh.ARRAY_INDEX], falls sie verwendet wird.\n"
-"Das Argument [param blend_shapes] ist ein Array mit Scheitelpunktdaten für "
-"jede Mischform. Jedes Element ist ein Array mit der gleichen Struktur wie "
-"[param arrays], aber die [Konstante Mesh.ARRAY_VERTEX], [Konstante Mesh."
-"ARRAY_NORMAL] und [Konstante Mesh.ARRAY_TANGENT] werden nur gesetzt, wenn sie "
-"in [param arrays] gesetzt sind und alle anderen Einträge [code]null[/code] "
-"sind.\n"
-"Das Argument [param lods] ist ein Wörterbuch mit [float]-Schlüsseln und "
-"[PackedInt32Array]-Werten. Jeder Eintrag im Dictionary repräsentiert eine LOD-"
-"Stufe der Oberfläche, wobei der Wert das [constant Mesh.ARRAY_INDEX]-Array "
-"ist, das für die LOD-Stufe verwendet werden soll, und der Schlüssel ungefähr "
-"proportional zur Entfernung ist, bei der die LOD-Statistiken verwendet "
-"werden. D.h., wenn man den Schlüssel einer LOD-Stufe erhöht, erhöht sich auch "
-"der Abstand, den die Objekte von der Kamera haben müssen, bevor die LOD-Stufe "
-"verwendet wird.\n"
-"Das Argument [param flags] ist das bitweise oder von, wie erforderlich: Ein "
-"Wert von [enum Mesh.ArrayCustomFormat] linksverschoben um "
-"[code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code] für jeden verwendeten "
-"benutzerdefinierten Kanal, [Konstante Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE], "
-"[Konstante Mesh.ARRAY_FLAG_USE_8_BONE_WEIGHTS], oder [Konstante Mesh."
-"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY].\n"
-"[b]Hinweis:[/b] Es wird empfohlen, bei der Verwendung von Indizes nur Punkte, "
-"Linien oder Dreiecke zu verwenden."
-
msgid "Removes all blend shapes from this [ArrayMesh]."
msgstr "Entfernt alle Mischformen aus diesem [ArrayMesh]."
@@ -11720,79 +11493,6 @@ msgstr ""
"nächsten liegt."
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 ""
-"Gibt ein Array mit den IDs der Punkte zurück, die den von AStar2D gefundenen "
-"Pfad zwischen den angegebenen Punkten bilden. Das Array ist vom Startpunkt "
-"bis zum Endpunkt des Pfades geordnet.\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) # Standardgewicht ist 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) # Gibt [1, 2, 3] zurück\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); // Standardgewicht ist 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); // Gibt [1, 2, 3] zurück\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"Wenn du die Gewichtung des 2. Punktes auf 3 änderst, wird das Ergebnis "
-"stattdessen [code][1, 4, 3][/code] sein, weil es jetzt, obwohl die Strecke "
-"länger ist, \"einfacher\" ist, durch Punkt 4 zu kommen als durch Punkt 2."
-
-msgid ""
"Returns an array with the IDs of the points that form the connection with the "
"given point.\n"
"[codeblocks]\n"
@@ -11870,6 +11570,121 @@ msgstr ""
"Nützlich für die Erstellung eines temporären Hindernisses."
msgid ""
+"A* (A star) is a computer algorithm used in pathfinding and graph traversal, "
+"the process of plotting short paths among vertices (points), passing through "
+"a given set of edges (segments). It enjoys widespread use due to its "
+"performance and accuracy. Godot's A* implementation uses points in 3D space "
+"and Euclidean distances by default.\n"
+"You must add points manually with [method add_point] and create segments "
+"manually with [method connect_points]. Once done, you can test if there is a "
+"path between two points with the [method are_points_connected] function, get "
+"a path containing indices by [method get_id_path], or one containing actual "
+"coordinates with [method get_point_path].\n"
+"It is also possible to use non-Euclidean distances. To do so, create a class "
+"that extends [AStar3D] and override methods [method _compute_cost] and "
+"[method _estimate_cost]. Both take two indices and return a length, as is "
+"shown in the following example.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"class MyAStar:\n"
+" extends AStar3D\n"
+"\n"
+" func _compute_cost(u, v):\n"
+" return abs(u - v)\n"
+"\n"
+" func _estimate_cost(u, v):\n"
+" return min(0, abs(u - v) - 1)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public partial class MyAStar : AStar3D\n"
+"{\n"
+" public override float _ComputeCost(long fromId, long toId)\n"
+" {\n"
+" return Mathf.Abs((int)(fromId - toId));\n"
+" }\n"
+"\n"
+" public override float _EstimateCost(long fromId, long toId)\n"
+" {\n"
+" return Mathf.Min(0, Mathf.Abs((int)(fromId - toId)) - 1);\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[method _estimate_cost] should return a lower bound of the distance, i.e. "
+"[code]_estimate_cost(u, v) <= _compute_cost(u, v)[/code]. This serves as a "
+"hint to the algorithm because the custom [method _compute_cost] might be "
+"computation-heavy. If this is not the case, make [method _estimate_cost] "
+"return the same value as [method _compute_cost] to provide the algorithm with "
+"the most accurate information.\n"
+"If the default [method _estimate_cost] and [method _compute_cost] methods are "
+"used, or if the supplied [method _estimate_cost] method returns a lower bound "
+"of the cost, then the paths returned by A* will be the lowest-cost paths. "
+"Here, the cost of a path equals the sum of the [method _compute_cost] results "
+"of all segments in the path multiplied by the [code]weight_scale[/code]s of "
+"the endpoints of the respective segments. If the default methods are used and "
+"the [code]weight_scale[/code]s of all points are set to [code]1.0[/code], "
+"then this equals the sum of Euclidean distances of all segments in the path."
+msgstr ""
+"A* (A-Star) ist ein Computeralgorithmus, der bei der Pfadfindung und der "
+"Durchquerung von Graphen verwendet wird, d. h. bei der Erstellung kurzer "
+"Pfade zwischen Vertices (Punkten), die durch eine bestimmte Menge von Kanten "
+"(Segmenten) verlaufen. Aufgrund seiner Leistungsfähigkeit und Genauigkeit ist "
+"er weit verbreitet. Die A*-Implementierung von Godot verwendet standardmäßig "
+"Punkte im 3D-Raum und euklidische Abstände.\n"
+"Sie müssen Punkte manuell mit [method add_point] hinzufügen und Segmente "
+"manuell mit [method connect_points] erstellen. Danach können Sie mit der "
+"Funktion [method are_points_connected] prüfen, ob es einen Pfad zwischen zwei "
+"Punkten gibt, mit [method get_id_path] einen Pfad mit Indizes oder mit "
+"[method get_point_path] einen Pfad mit tatsächlichen Koordinaten erhalten.\n"
+"Es ist auch möglich, nicht-euklidische Distanzen zu verwenden. Erstellen Sie "
+"dazu eine Klasse, die [code]AStar3D[/code] erweitert ([code]extends AStar3D[/"
+"code]) und überschreiben Sie die Methoden [method _compute_cost] und [method "
+"_estimate_cost]. Beide nehmen zwei Indizes und geben eine Länge zurück, wie "
+"im folgenden Beispiel gezeigt wird.\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] sollte eine Untergrenze des Abstands zurückgeben, d."
+"h. [code]_estimate_cost(u, v) <= _compute_cost(u, v)[/code]. Dies dient als "
+"Hinweis für den Algorithmus, da die eigenen [code]_compute_cost[/code] "
+"möglicherweise sehr rechenintensiv sind. Wenn dies nicht der Fall ist, sollte "
+"[method _estimate_cost] denselben Wert wie [method _compute_cost] "
+"zurückgeben, um dem Algorithmus die genauesten Informationen zu liefern.\n"
+"Wenn die Standardmethoden [method _estimate_cost] und [method _compute_cost] "
+"verwendet werden oder wenn die mitgelieferte Methode [method _estimate_cost] "
+"eine untere Grenze der Kosten zurückgibt, dann sind die von A* "
+"zurückgegebenen Pfade die Pfade mit den niedrigsten Kosten. Dabei sind die "
+"Kosten eines Pfades gleich der Summe der [method _compute_cost]-Ergebnisse "
+"aller Segmente des Pfades multipliziert mit den [code]weight_scale[/code]s "
+"der Endpunkte der jeweiligen Segmente. Wenn die Standardmethoden verwendet "
+"werden und die [code]weight_scale[/code]s aller Punkte auf [code]1.0[/code] "
+"gesetzt werden, dann entspricht dies der Summe der euklidischen Abstände "
+"aller Segmente im Pfad."
+
+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"
@@ -11975,77 +11790,6 @@ msgstr ""
"nächsten liegt."
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 ""
-"Gibt ein Array mit den IDs der Punkte zurück, die den von AStar3D gefundenen "
-"Pfad zwischen den angegebenen Punkten bilden. Das Array ist vom Startpunkt "
-"bis zum Endpunkt des Pfades geordnet.\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) # Standardgewicht ist 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) # Gibt [1, 2, 3] zurück\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); // Standardgewicht ist 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); // Gibt [1, 2, 3] zurück\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"Wenn du die Gewichtung des 2. Punktes auf 3 änderst, wird das Ergebnis "
-"stattdessen [code][1, 4, 3][/code] sein, weil es jetzt, obwohl die Strecke "
-"länger ist, \"einfacher\" ist, durch Punkt 4 zu kommen als durch Punkt 2."
-
-msgid ""
"Returns an array with the IDs of the points that form the connection with the "
"given point.\n"
"[codeblocks]\n"
@@ -12199,15 +11943,6 @@ msgstr ""
"Funktion nicht erforderlich."
msgid ""
-"Returns an array with the IDs of the points that form the path found by "
-"AStar2D between the given points. The array is ordered from the starting "
-"point to the ending point of the path."
-msgstr ""
-"Gibt ein Array mit den IDs der Punkte zurück, die den von AStar2D gefundenen "
-"Pfad zwischen den angegebenen Punkten bilden. Das Array ist vom Startpunkt "
-"bis zum Endpunkt des Pfades geordnet."
-
-msgid ""
"Indicates that the grid parameters were changed and [method update] needs to "
"be called."
msgstr ""
@@ -12215,6 +11950,24 @@ msgstr ""
"aufgerufen werden muss."
msgid ""
+"Returns [code]true[/code] if the [param x] and [param y] is a valid grid "
+"coordinate (id), i.e. if it is inside [member region]. Equivalent to "
+"[code]region.has_point(Vector2i(x, y))[/code]."
+msgstr ""
+"Gibt [code]true[/code] zurück wenn [param x] und [param y] eine valide "
+"Gitterkoordinate (-ID) bilden, d. h. wenn sie innerhalb von [member region] "
+"sind. Äquivalent zu [code]region.has_point(Vector2i(x, y))[/code]."
+
+msgid ""
+"Returns [code]true[/code] if the [param id] vector is a valid grid "
+"coordinate, i.e. if it is inside [member region]. Equivalent to [code]region."
+"has_point(id)[/code]."
+msgstr ""
+"Gibt [code]true[/code] zurück, wenn der Vektor [param id] eine valide "
+"Gitterkoordinate ist, d. h. innerhalb von [member region]. Äquivalent zu "
+"[code]region.has_point(id)[/code]."
+
+msgid ""
"Returns [code]true[/code] if a point is disabled for pathfinding. By default, "
"all points are enabled."
msgstr ""
@@ -12324,6 +12077,15 @@ msgstr ""
"Pfad gefunden wird."
msgid ""
+"The size of the grid (number of cells of size [member cell_size] on each "
+"axis). If changed, [method update] needs to be called before finding the next "
+"path."
+msgstr ""
+"Die Größe des Gitters (Anzahl der Zellen der Größe [member cell_size] auf "
+"jeder Achse). Wenn sie geändert wird, muss [method update] aufgerufen werden, "
+"bevor der nächste Pfad gefunden wird."
+
+msgid ""
"The [url=https://en.wikipedia.org/wiki/Euclidean_distance]Euclidean "
"heuristic[/url] to be used for the pathfinding using the following formula:\n"
"[codeblock]\n"
@@ -12478,9 +12240,6 @@ msgstr ""
msgid "Audio buses"
msgstr "Audio-Busse"
-msgid "Audio Mic Record Demo"
-msgstr "Audio-Mikrofonaufnahme-Demo"
-
msgid "Increases or decreases the volume being routed through the audio bus."
msgstr "Erhöht oder verringert die über den Audiobus geleitete Lautstärke."
@@ -12523,6 +12282,25 @@ msgstr ""
"zum Lesen im internen Ringpuffer vorhanden sind."
msgid ""
+"Gets the next [param frames] audio samples from the internal ring buffer.\n"
+"Returns a [PackedVector2Array] containing exactly [param frames] audio "
+"samples if available, or an empty [PackedVector2Array] if insufficient data "
+"was available.\n"
+"The samples are signed floating-point PCM between [code]-1[/code] and "
+"[code]1[/code]. You will have to scale them if you want to use them as 8 or "
+"16-bit integer samples. ([code]v = 0x7fff * samples[0].x[/code])"
+msgstr ""
+"Ruft die nächsten [param frames] Audio-Samples aus dem internen Ringpuffer "
+"ab.\n"
+"Gibt ein [PackedVector2Array] zurück, das genau [param frames] Audio-Samples "
+"enthält, falls verfügbar, oder ein leeres [PackedVector2Array], falls nicht "
+"genügend Daten verfügbar waren.\n"
+"Die Samples sind vorzeichenbehaftete Fließkomma PCMs zwischen [code]-1[/code] "
+"und [code]1[/code]. Sie müssen skaliert werden, wenn sie als 8- oder 16-Bit-"
+"Integer-Proben verwendet werden sollen. ([code]v = 0x7fff * samples[0].x[/"
+"code])"
+
+msgid ""
"Returns the number of audio frames discarded from the audio bus due to full "
"buffer."
msgstr ""
@@ -13137,6 +12915,32 @@ msgid "Audio effect used for recording the sound from an audio bus."
msgstr ""
"Audioeffekt, der für die Aufnahme des Tons von einem Audiobus verwendet wird."
+msgid ""
+"Allows the user to record the sound from an audio bus into an "
+"[AudioStreamWAV]. When used on the \"Master\" audio bus, this includes all "
+"audio output by Godot.\n"
+"Unlike [AudioEffectCapture], this effect encodes the recording with the given "
+"format (8-bit, 16-bit, or compressed) instead of giving access to the raw "
+"audio samples.\n"
+"Can be used (with an [AudioStreamMicrophone]) to record from a microphone.\n"
+"[b]Note:[/b] [member ProjectSettings.audio/driver/enable_input] must be "
+"[code]true[/code] for audio input to work. See also that setting's "
+"description for caveats related to permissions and operating system privacy "
+"settings."
+msgstr ""
+"Ermöglicht dem Benutzer, Ton aus einem Audio-Bus in einen [AudioStreamWAV] "
+"aufzunehmen. Bei Verwendung mit dem \"Master\" Audio-Bus enthält dies jede "
+"Audio-Ausgabe von Godot.\n"
+"Im Gegensatz zu [AudioEffectCapture] kodiert dieser Effekt die Aufnahme mit "
+"dem angegebenen Format (8-Bit, 16-Bit, oder komprimiert), anstatt Zugriff auf "
+"die rohen Audiosamples zu geben.\n"
+"Kann (mit einem [AudioStreamMicrophone]) zur Aufnahme von einem Mikrofon "
+"verwendet werden.\n"
+"[b]Hinweis:[/b] [member ProjectSettings.audio/driver/enable_input] muss "
+"[code]true[/code] sein, damit die Audioeingabe funktioniert. Siehe auch die "
+"Beschreibung dieser Einstellung für Hinweise zu den Berechtigungen und den "
+"Datenschutzeinstellungen des Betriebssystems."
+
msgid "Recording with microphone"
msgstr "Aufnahme mit Mikrofon"
@@ -13234,12 +13038,6 @@ msgstr ""
"Echtzeit-Audiovisualisierungen verwendet werden.\n"
"Siehe auch [AudioStreamGenerator] für die prozedurale Erzeugung von Klängen."
-msgid "Audio Spectrum Demo"
-msgstr "Audio-Spektrum-Demo"
-
-msgid "Godot 3.2 will get new audio features"
-msgstr "Godot 3.2 wird neue Audiofunktionen erhalten"
-
msgid ""
"The length of the buffer to keep (in seconds). Higher values keep data around "
"for longer, but require more memory."
@@ -13577,6 +13375,16 @@ msgstr "Audio-Generator-Demo"
msgid "Returns the length of the audio stream in seconds."
msgstr "Liefert die Länge des Audio Streams in Sekunden zurück."
+msgid ""
+"Returns [code]true[/code] if this audio stream only supports one channel "
+"([i]monophony[/i]), or [code]false[/code] if the audio stream supports two or "
+"more channels ([i]polyphony[/i])."
+msgstr ""
+"Gibt [code]true[/code] zurück, wenn dieser Audiostream nur einen einzigen "
+"Kanal unterstützt ([i]monophone Wiedergabe[/i]), oder [code]false[/code], "
+"wenn der Audiostream zwei oder mehr Kanäle unterstützt ([i]polyphone/"
+"mehrstimmige Wiedergabe[/i])."
+
msgid "An audio stream with utilities for procedural sound generation."
msgstr "Ein Audiostrom mit Hilfsprogrammen für die prozedurale Klangerzeugung."
@@ -13769,6 +13577,9 @@ msgstr ""
"Diese Klasse ist für die Verwendung mit [AudioStreamGenerator] gedacht, um "
"die erzeugten Audiodaten in Echtzeit wiederzugeben."
+msgid "Godot 3.2 will get new audio features"
+msgstr "Godot 3.2 wird neue Audiofunktionen erhalten"
+
msgid ""
"Returns [code]true[/code] if a buffer of the size [param amount] can be "
"pushed to the audio sample data buffer without overflowing it, [code]false[/"
@@ -13840,6 +13651,9 @@ msgstr ""
"Beschreibung dieser Einstellung für Hinweise zu den Berechtigungen und den "
"Datenschutzeinstellungen des Betriebssystems."
+msgid "Audio Mic Record Demo"
+msgstr "Audio-Mikrofonaufnahme-Demo"
+
msgid "MP3 audio stream driver."
msgstr "MP3 Audio Stream Treiber."
@@ -14044,109 +13858,6 @@ msgstr ""
"Wird von der [Methode play_stream] zurückgegeben, wenn sie keinen Stream für "
"die Wiedergabe zuweisen konnte."
-msgid "Plays back audio non-positionally."
-msgstr "Gibt Audiosignale nicht positioniert wieder."
-
-msgid ""
-"Plays an audio stream non-positionally.\n"
-"To play audio positionally, use [AudioStreamPlayer2D] or "
-"[AudioStreamPlayer3D] instead of [AudioStreamPlayer]."
-msgstr ""
-"Spielt einen Audiostrom nichtpositioniert ab.\n"
-"Um Audio positioniert abzuspielen, verwenden Sie [AudioStreamPlayer2D] oder "
-"[AudioStreamPlayer3D] anstelle von [AudioStreamPlayer]."
-
-msgid "Returns the position in the [AudioStream] in seconds."
-msgstr "Gibt die Position im [AudioStream] in Sekunden zurück."
-
-msgid ""
-"Returns the [AudioStreamPlayback] object associated with this "
-"[AudioStreamPlayer]."
-msgstr ""
-"Gibt das [AudioStreamPlayback]-Objekt zurück, das mit diesem "
-"[AudioStreamPlayer] verbunden ist."
-
-msgid ""
-"Returns whether the [AudioStreamPlayer] can return the [AudioStreamPlayback] "
-"object or not."
-msgstr ""
-"Gibt zurück, ob der [AudioStreamPlayer] das [AudioStreamPlayback]-Objekt "
-"zurückgeben kann oder nicht."
-
-msgid "Plays the audio from the given [param from_position], in seconds."
-msgstr "Spielt den Ton ab der angegebenen [param from_position], in Sekunden."
-
-msgid "Sets the position from which audio will be played, in seconds."
-msgstr "Legt die Position in Sekunden fest, ab der die Tonausgabe startet."
-
-msgid "Stops the audio."
-msgstr "Beendet die Tonausgabe."
-
-msgid "If [code]true[/code], audio plays when added to scene tree."
-msgstr ""
-"Wenn [code]true[/code], wird der Ton abgespielt, wenn er zum Szenenbaum "
-"hinzugefügt wird."
-
-msgid ""
-"Bus on which this audio is playing.\n"
-"[b]Note:[/b] When setting this property, keep in mind that no validation is "
-"performed to see if the given name matches an existing bus. This is because "
-"audio bus layouts might be loaded after this property is set. If this given "
-"name can't be resolved at runtime, it will fall back to [code]\"Master\"[/"
-"code]."
-msgstr ""
-"Der Audio-Bus, auf dem dieses Audio abgespielt wird.\n"
-"[b]Hinweis:[/b] Beachten Sie beim Setzen dieser Eigenschaft, dass keine "
-"Überprüfung erfolgt, ob der angegebene Name mit einem vorhandenen Bus "
-"übereinstimmt. Der Grund dafür ist, dass Audio-Bus-Layouts geladen werden "
-"können, nachdem diese Eigenschaft gesetzt wurde. Wenn der angegebene Name zur "
-"Laufzeit nicht aufgelöst werden kann, wird er auf [code]\"Master\"[/code] "
-"zurückgesetzt."
-
-msgid ""
-"The maximum number of sounds this node can play at the same time. Playing "
-"additional sounds after this value is reached will cut off the oldest sounds."
-msgstr ""
-"Die maximale Anzahl von Klängen, die dieser Knoten (Node) gleichzeitig "
-"abspielen kann. Wenn nach Erreichen dieses Wertes weitere Klänge abgespielt "
-"werden, werden die ältesten Klänge abgeschnitten."
-
-msgid ""
-"If the audio configuration has more than two speakers, this sets the target "
-"channels. See [enum MixTarget] constants."
-msgstr ""
-"Wenn die Audiokonfiguration mehr als zwei Lautsprecher hat, werden hier die "
-"Zielkanäle festgelegt. Siehe [enum MixTarget] Konstanten."
-
-msgid ""
-"The pitch and the tempo of the audio, as a multiplier of the audio sample's "
-"sample rate."
-msgstr ""
-"Die Tonhöhe und das Tempo des Audiomaterials als Multiplikator der Abtastrate "
-"des Audiosamples."
-
-msgid "If [code]true[/code], audio is playing."
-msgstr "Falls [code]wahr[/code] wir Audio gerade abgespielt."
-
-msgid "The [AudioStream] object to be played."
-msgstr "Das [AudioStream]-Objekt, das abgespielt werden soll."
-
-msgid ""
-"If [code]true[/code], the playback is paused. You can resume it by setting "
-"[member stream_paused] to [code]false[/code]."
-msgstr ""
-"Wenn [code]true[/code], wird die Wiedergabe angehalten. Sie können sie "
-"fortsetzen, indem Sie [member stream_paused] auf [code]false[/code] setzen."
-
-msgid "Volume of sound, in dB."
-msgstr "Lautstärke der Tonausgabe in dB."
-
-msgid "Emitted when the audio stops playing."
-msgstr "Wird ausgegeben, wenn der Ton aufhört zu spielen."
-
-msgid "The audio will be played only on the first channel."
-msgstr "Der Ton wird nur auf dem ersten Kanal wiedergegeben."
-
msgid "The audio will be played on all surround channels."
msgstr "Der Ton wird auf allen Surround-Kanälen wiedergegeben."
@@ -14193,12 +13904,25 @@ msgstr ""
"[AudioStreamPlayer2D] verbunden ist."
msgid ""
+"Returns whether the [AudioStreamPlayer] can return the [AudioStreamPlayback] "
+"object or not."
+msgstr ""
+"Gibt zurück, ob der [AudioStreamPlayer] das [AudioStreamPlayback]-Objekt "
+"zurückgeben kann oder nicht."
+
+msgid ""
"Queues the audio to play on the next physics frame, from the given position "
"[param from_position], in seconds."
msgstr ""
"Stellt das Audio in eine Warteschlange, um es im nächsten Physik-Frame ab der "
"angegebenen Position [param from_position] in Sekunden abzuspielen."
+msgid "Sets the position from which audio will be played, in seconds."
+msgstr "Legt die Position in Sekunden fest, ab der die Tonausgabe startet."
+
+msgid "Stops the audio."
+msgstr "Beendet die Tonausgabe."
+
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 "
@@ -14217,10 +13941,39 @@ msgid "The volume is attenuated over distance with this as an exponent."
msgstr ""
"Die Lautstärke wird über die Entfernung mit diesem Exponenten abgeschwächt."
+msgid "If [code]true[/code], audio plays when added to scene tree."
+msgstr ""
+"Wenn [code]true[/code], wird der Ton abgespielt, wenn er zum Szenenbaum "
+"hinzugefügt wird."
+
+msgid ""
+"Bus on which this audio is playing.\n"
+"[b]Note:[/b] When setting this property, keep in mind that no validation is "
+"performed to see if the given name matches an existing bus. This is because "
+"audio bus layouts might be loaded after this property is set. If this given "
+"name can't be resolved at runtime, it will fall back to [code]\"Master\"[/"
+"code]."
+msgstr ""
+"Der Audio-Bus, auf dem dieses Audio abgespielt wird.\n"
+"[b]Hinweis:[/b] Beachten Sie beim Setzen dieser Eigenschaft, dass keine "
+"Überprüfung erfolgt, ob der angegebene Name mit einem vorhandenen Bus "
+"übereinstimmt. Der Grund dafür ist, dass Audio-Bus-Layouts geladen werden "
+"können, nachdem diese Eigenschaft gesetzt wurde. Wenn der angegebene Name zur "
+"Laufzeit nicht aufgelöst werden kann, wird er auf [code]\"Master\"[/code] "
+"zurückgesetzt."
+
msgid "Maximum distance from which audio is still hearable."
msgstr "Maximale Entfernung, aus ignore-duplicate:der der Ton noch hörbar ist."
msgid ""
+"The maximum number of sounds this node can play at the same time. Playing "
+"additional sounds after this value is reached will cut off the oldest sounds."
+msgstr ""
+"Die maximale Anzahl von Klängen, die dieser Knoten (Node) gleichzeitig "
+"abspielen kann. Wenn nach Erreichen dieses Wertes weitere Klänge abgespielt "
+"werden, werden die ältesten Klänge abgeschnitten."
+
+msgid ""
"Scales the panning strength for this node by multiplying the base [member "
"ProjectSettings.audio/general/2d_panning_strength] with this factor. Higher "
"values will pan audio from left to right more dramatically than lower values."
@@ -14230,9 +13983,29 @@ msgstr ""
"Bei höheren Werten wird das Audio stärker von links nach rechts geschwenkt "
"als bei niedrigeren Werten."
+msgid ""
+"The pitch and the tempo of the audio, as a multiplier of the audio sample's "
+"sample rate."
+msgstr ""
+"Die Tonhöhe und das Tempo des Audiomaterials als Multiplikator der Abtastrate "
+"des Audiosamples."
+
+msgid "The [AudioStream] object to be played."
+msgstr "Das [AudioStream]-Objekt, das abgespielt werden soll."
+
+msgid ""
+"If [code]true[/code], the playback is paused. You can resume it by setting "
+"[member stream_paused] to [code]false[/code]."
+msgstr ""
+"Wenn [code]true[/code], wird die Wiedergabe angehalten. Sie können sie "
+"fortsetzen, indem Sie [member stream_paused] auf [code]false[/code] setzen."
+
msgid "Base volume before attenuation."
msgstr "Grundlautstärke vor Dämpfung."
+msgid "Emitted when the audio stops playing."
+msgstr "Wird ausgegeben, wenn der Ton aufhört zu spielen."
+
msgid "Plays positional sound in 3D space."
msgstr "Spielt Positionsgeräusche im 3D-Raum ab."
@@ -14566,17 +14339,6 @@ msgstr ""
"Audioerzeugung."
msgid ""
-"Saves the AudioStreamWAV as a WAV file to [param path]. Samples with IMA "
-"ADPCM format can't be saved.\n"
-"[b]Note:[/b] A [code].wav[/code] extension is automatically appended to "
-"[param path] if it is missing."
-msgstr ""
-"Speichert den AudioStreamWAV als WAV-Datei in [param Pfad]. Samples im IMA "
-"ADPCM-Format können nicht gespeichert werden.\n"
-"[b]Hinweis:[/b] Die Erweiterung [code].wav[/code] wird automatisch an [param "
-"path] angehängt, wenn sie fehlt."
-
-msgid ""
"Contains the audio data in bytes.\n"
"[b]Note:[/b] This property expects signed PCM8 data. To convert unsigned PCM8 "
"to signed PCM8, subtract 128 from each byte."
@@ -15187,6 +14949,32 @@ msgstr ""
"Hinzugefügt zu [member backlight]."
msgid ""
+"Controls how the object faces the camera. See [enum BillboardMode].\n"
+"[b]Note:[/b] When billboarding is enabled and the material also casts "
+"shadows, billboards will face [b]the[/b] camera in the scene when rendering "
+"shadows. In scenes with multiple cameras, the intended shadow cannot be "
+"determined and this will result in undefined behavior. See [url=https://"
+"github.com/godotengine/godot/pull/72638]GitHub Pull Request #72638[/url] for "
+"details.\n"
+"[b]Note:[/b] Billboard mode is not suitable for VR because the left-right "
+"vector of the camera is not horizontal when the screen is attached to your "
+"head instead of on the table. See [url=https://github.com/godotengine/godot/"
+"issues/41567]GitHub issue #41567[/url] for details."
+msgstr ""
+"Kontrolliert, wie das Objekt der Kamera zugewandt ist. Siehe [enum "
+"BillboardMode].\n"
+"[b]Hinweis:[/b] Wenn Billboarding aktiviert ist und das Material auch "
+"Schatten wirft, zeigen Billboards beim Rendern von Schatten auf [b]die[/b] "
+"Kamera in der Szene. In Szenen mit mehreren Kameras kann der beabsichtigte "
+"Schatten nicht bestimmt werden, was zu einem undefinierten Verhalten führt. "
+"Siehe [url=https://github.com/godotengine/godot/pull/72638]GitHub Pull-"
+"Request #72638[/url] für Details.\n"
+"[b]Hinweis:[/b] Billboard-Modus ist nicht für VR geeignet, da der links-"
+"rechts Vektor der Kamera nicht horizontal ist, wenn der Bildschirm statt auf "
+"dem Tisch an Ihrem Kopf angebracht ist. Siehe [url=https://github.com/"
+"godotengine/godot/issues/41567]GitHub Issue #41567[/url] für Details."
+
+msgid ""
"The material's blend mode.\n"
"[b]Note:[/b] Values other than [code]Mix[/code] force the object into the "
"transparent pipeline. See [enum BlendMode]."
@@ -15733,7 +15521,7 @@ msgid ""
"Texture that controls the strength of the refraction per-pixel. Multiplied by "
"[member refraction_scale]."
msgstr ""
-"Textur, die die Stärke der Brechung pro Pixel steuert. Multipliziert mit "
+"Textur, um die Stärke der Brechung pro Pixel zu steuern. Multipliziert mit "
"[member refraction_scale]."
msgid "Sets the strength of the rim lighting effect."
@@ -15816,26 +15604,6 @@ msgstr "Nicht spezifizierte Position."
msgid "Custom drawing in 2D"
msgstr "benutzerdefiniertes Zeichnen in 2D"
-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-Index. Steuert die Reihenfolge, in der die Knoten gerendert werden. Ein "
-"Knoten (Node) mit einem höheren Z-Index wird vor den anderen angezeigt. Muss "
-"zwischen [Konstante RenderingServer.CANVAS_ITEM_Z_MIN] und [Konstante "
-"RenderingServer.CANVAS_ITEM_Z_MAX] (einschließlich) liegen.\n"
-"[b]Hinweis:[/b] Das Ändern des Z-Index eines [Steuerelements] wirkt sich nur "
-"auf die Zeichenreihenfolge aus, nicht auf die Reihenfolge, in der "
-"Eingabeereignisse behandelt werden. Dies kann nützlich sein, um bestimmte UI-"
-"Animationen zu implementieren, z. B. ein Menü, bei dem die Elemente, über die "
-"man den Mauszeiger bewegt, skaliert werden und andere überlappen sollten."
-
msgid "Emitted when becoming hidden."
msgstr "Gesendet wenn es versteckt wird."
@@ -16898,28 +16666,6 @@ msgstr ""
"[b]Hinweis:[/b] Diese Methode ist nur unter macOS implementiert."
msgid ""
-"Returns the index of the item with the specified [param tag]. Index is "
-"automatically assigned to each item by the engine. Index can not be set "
-"manually.\n"
-"[b]Note:[/b] This method is implemented only on macOS."
-msgstr ""
-"Gibt den Index des Elements mit dem angegebenen [param tag] zurück. Der Index "
-"wird jedem Element automatisch von der Engine zugewiesen. Der Index kann "
-"nicht manuell festgelegt werden.\n"
-"[b]Hinweis:[/b] Diese Methode ist nur unter macOS implementiert."
-
-msgid ""
-"Returns the index of the item with the specified [param text]. Index is "
-"automatically assigned to each item by the engine. Index can not be set "
-"manually.\n"
-"[b]Note:[/b] This method is implemented only on macOS."
-msgstr ""
-"Gibt den Index des Elements mit dem angegebenen [param text] zurück. Der "
-"Index wird jedem Element automatisch von der Engine zugewiesen. Der Index "
-"kann nicht manuell festgelegt werden.\n"
-"[b]Hinweis:[/b] Diese Methode ist nur unter macOS implementiert."
-
-msgid ""
"Returns the callback of the item accelerator at index [param idx].\n"
"[b]Note:[/b] This method is implemented only on macOS."
msgstr ""
@@ -17221,12 +16967,6 @@ msgstr ""
"Wenn [code]true[/code], werden [code]x86_64[/code] Binärdateien in das "
"exportierte Projekt aufgenommen."
-msgid "Export format for Gradle build."
-msgstr "Exportformat für Gradle-Build."
-
-msgid "Application category for the Play Store."
-msgstr "Anwendungskategorie für den Play Store."
-
msgid "Name of the application."
msgstr "Name der Anwendung."
@@ -17284,6 +17024,9 @@ msgstr ""
"macOS SDK-Name, der zum Erstellen der ausführbaren Anwendungsdatei verwendet "
"wird."
+msgid "Exporting for Windows"
+msgstr "Exportieren für Windows"
+
msgid "Exporter for the Web."
msgstr "Exporter für das Web."
@@ -17296,9 +17039,6 @@ msgstr "Index der Webdokumentation"
msgid "Exporter for Windows."
msgstr "Exporter für Windows."
-msgid "Exporting for Windows"
-msgstr "Exportieren für Windows"
-
msgid ""
"Returns [code]true[/code] if the class specified by [param class_name] is "
"disabled. When disabled, the class won't appear in the Create New Node dialog."
@@ -18077,6 +17817,23 @@ msgid "Constructs an empty [PackedByteArray]."
msgstr "Konstruiert ein leeres [PackedByteArray]."
msgid ""
+"Finds the index of an existing value (or the insertion index that maintains "
+"sorting order, if the value is not yet present in the array) using binary "
+"search. Optionally, a [param before] specifier can be passed. If [code]false[/"
+"code], the returned index comes after all existing entries of the value in "
+"the array.\n"
+"[b]Note:[/b] Calling [method bsearch] on an unsorted array results in "
+"unexpected behavior."
+msgstr ""
+"Findet den Index eines vorhandenen Wertes (oder den Einfügeindex, der die "
+"Sortierreihenfolge beibehält, wenn der Wert noch nicht im Array vorhanden "
+"ist) mit Hilfe der binären Suche. Optional kann ein [param before]-"
+"Spezifizierer übergeben werden. Wenn [code]false[/code], kommt der "
+"zurückgegebene Index nach allen vorhandenen Einträgen des Wertes im Array.\n"
+"[b]Hinweis:[/b] Der Aufruf der [Methode bsearch] auf ein unsortiertes Array "
+"führt zu unerwartetem Verhalten."
+
+msgid ""
"Inserts a new element at a given position in the array. The position must be "
"valid, or at the end of the array ([code]idx == size()[/code])."
msgstr ""
@@ -18337,42 +18094,6 @@ msgid "The attachment's data format."
msgstr "Das Datenformat des Anhangs."
msgid ""
-"Returns a copy of this rectangle expanded to align the edges with the given "
-"[param to] point, if necessary.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var rect = Rect2(0, 0, 5, 2)\n"
-"\n"
-"rect = rect.expand(Vector2(10, 0)) # rect is Rect2(0, 0, 10, 2)\n"
-"rect = rect.expand(Vector2(-5, 5)) # rect is Rect2(-5, 0, 10, 5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var rect = new Rect2(0, 0, 5, 2);\n"
-"\n"
-"rect = rect.Expand(new Vector2(10, 0)); // rect is Rect2(0, 0, 10, 2)\n"
-"rect = rect.Expand(new Vector2(-5, 5)); // rect is Rect2(-5, 0, 10, 5)\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"Gibt eine Kopie dieses Rechtecks zurück, die so erweitert ist, dass die "
-"Kanten am angegebenen [param to]-Punkt ausgerichtet sind, falls "
-"erforderlich.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var rect = Rect2(0, 0, 5, 2)\n"
-"\n"
-"rect = rect.expand(Vector2(10, 0)) # rect ist Rect2(0, 0, 10, 2)\n"
-"rect = rect.expand(Vector2(-5, 5)) # rect ist Rect2(-5, 0, 10, 5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var rect = new Rect2(0, 0, 5, 2);\n"
-"\n"
-"rect = rect.Expand(new Vector2(10, 0)); // rect ist Rect2(0, 0, 10, 2)\n"
-"rect = rect.Expand(new Vector2(-5, 5)); // rect ist Rect2(-5, 0, 10, 5)\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Returns [code]true[/code] if the [member position] or [member size] of both "
"rectangles are not equal.\n"
"[b]Note:[/b] Due to floating-point precision errors, consider using [method "
@@ -18395,42 +18116,6 @@ msgstr ""
"stattdessen [method is_equal_approx] verwenden, das zuverlässiger ist."
msgid ""
-"Returns a copy of this rectangle expanded to align the edges with the given "
-"[param to] point, if necessary.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var rect = Rect2i(0, 0, 5, 2)\n"
-"\n"
-"rect = rect.expand(Vector2i(10, 0)) # rect is Rect2i(0, 0, 10, 2)\n"
-"rect = rect.expand(Vector2i(-5, 5)) # rect is Rect2i(-5, 0, 10, 5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var rect = new Rect2I(0, 0, 5, 2);\n"
-"\n"
-"rect = rect.Expand(new Vector2I(10, 0)); // rect is Rect2I(0, 0, 10, 2)\n"
-"rect = rect.Expand(new Vector2I(-5, 5)); // rect is Rect2I(-5, 0, 10, 5)\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"Gibt eine Kopie dieses Rechtecks zurück, die so erweitert ist, dass die "
-"Kanten am angegebenen [param to]-Punkt ausgerichtet sind, falls "
-"erforderlich.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var rect = Rect2i(0, 0, 5, 2)\n"
-"\n"
-"rect = rect.expand(Vector2i(10, 0)) # rect ist Rect2i(0, 0, 10, 2)\n"
-"rect = rect.expand(Vector2i(-5, 5)) # rect ist Rect2i(-5, 0, 10, 5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var rect = new Rect2I(0, 0, 5, 2);\n"
-"\n"
-"rect = rect.Expand(new Vector2I(10, 0)); // rect ist Rect2I(0, 0, 10, 2)\n"
-"rect = rect.Expand(new Vector2I(-5, 5)); // rect ist Rect2I(-5, 0, 10, 5)\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Returns the center point of the rectangle. This is the same as [code]position "
"+ (size / 2)[/code].\n"
"[b]Note:[/b] If the [member size] is odd, the result will be rounded towards "
@@ -18984,10 +18669,6 @@ msgstr ""
"code] ausgewertet, wenn er gleich [code]Vector3(0, 0, 0)[/code] ist. "
"Andernfalls wird ein Vector3 immer als [code]true[/code] ausgewertet."
-msgid ""
-"Returns the vector \"bounced off\" from a plane defined by the given normal."
-msgstr "Gibt den Vektor reflektiert an der Ebene des Normalenvektors zurück."
-
msgid "Up unit vector."
msgstr "Hoch-Einheitsvektor."
@@ -20052,31 +19733,6 @@ msgid "A tracked object."
msgstr "Ein getracktes Objekt."
msgid ""
-"An instance of this object represents a device that is tracked, such as a "
-"controller or anchor point. HMDs aren't represented here as they are handled "
-"internally.\n"
-"As controllers are turned on and the [XRInterface] detects them, instances of "
-"this object are automatically added to this list of active tracking objects "
-"accessible through the [XRServer].\n"
-"The [XRController3D] and [XRAnchor3D] both consume objects of this type and "
-"should be used in your project. The positional trackers are just under-the-"
-"hood objects that make this all work. These are mostly exposed so that "
-"GDExtension-based interfaces can interact with them."
-msgstr ""
-"Eine Instanz dieses Objekts stellt ein Gerät dar, das verfolgt wird, z. B. "
-"einen Controller oder Ankerpunkt. HMDs werden hier nicht dargestellt, da sie "
-"intern gehandhabt werden.\n"
-"Wenn Steuergeräte eingeschaltet werden und das [XRInterface] sie erkennt, "
-"werden Instanzen dieses Objekts automatisch zu dieser Liste aktiver "
-"Verfolgungsobjekte hinzugefügt, auf die über den [XRServer] zugegriffen "
-"werden kann.\n"
-"Der [XRController3D] und der [XRAnchor3D] verbrauchen beide Objekte dieses "
-"Typs und sollten in Ihrem Projekt verwendet werden. Die Positionsverfolger "
-"sind nur Objekte, die unter der Haube liegen und dafür sorgen, dass das alles "
-"funktioniert. Sie sind meist offengelegt, damit GDExtension-basierte "
-"Schnittstellen mit ihnen interagieren können."
-
-msgid ""
"Returns an input for this tracker. It can return a boolean, float or "
"[Vector2] value depending on whether the input is a button, trigger or "
"thumbstick/thumbpad."
@@ -20117,41 +19773,16 @@ msgstr ""
"Diese Methode wird von einer [XRInterface]-Implementierung aufgerufen und "
"sollte nicht direkt verwendet werden."
-msgid "The description of this tracker."
-msgstr "Die Beschreibung dieses Trackers."
-
msgid "Defines which hand this tracker relates to."
msgstr "Definiert auf welche Hand sich dieser Tracker bezieht."
msgid ""
-"The unique name of this tracker. The trackers that are available differ "
-"between various XR runtimes and can often be configured by the user. Godot "
-"maintains a number of reserved names that it expects the [XRInterface] to "
-"implement if applicable:\n"
-"- [code]left_hand[/code] identifies the controller held in the players left "
-"hand\n"
-"- [code]right_hand[/code] identifies the controller held in the players right "
-"hand"
-msgstr ""
-"Der einzigartige Name dieses Trackers. Die verfügbaren Tracker unterscheiden "
-"sich zwischen verschiedenen XR Runtimes und können oft vom Nutzer "
-"konfiguriert werden. Godot pflegt eine Reihe reservierter Namen, von denen es "
-"erwartet, dass das [XRInterface] sie implementiert.\n"
-"- [code]left_hand[/code] identifiziert den Controller, der in der linken Hand "
-"des Spielers gehalten wird\n"
-"- [code]right_hand[/code] identifiziert den Controller, der in der rechten "
-"Hand des Spielers gehalten wird"
-
-msgid ""
"The profile associated with this tracker, interface dependent but will "
"indicate the type of controller being tracked."
msgstr ""
"Das Profil das mit diesem Tracker verbunden ist. Abhängig vom Interface, aber "
"deutet auf den Typ des getrackten Controllers hin."
-msgid "The type of tracker."
-msgstr "Der Typ des Trackers."
-
msgid ""
"Emitted when a button on this tracker is pressed. Note that many XR runtimes "
"allow other inputs to be mapped to buttons."
@@ -20212,13 +19843,6 @@ msgid "Registers an [XRInterface] object."
msgstr "Registriert ein [XRInterface]-Objekt."
msgid ""
-"Registers a new [XRPositionalTracker] that tracks a spatial location in real "
-"space."
-msgstr ""
-"Registriert einen neuen [XRPositionalTracker], der eine räumliche Position im "
-"realen Raum verfolgt."
-
-msgid ""
"This is an important function to understand correctly. AR and VR platforms "
"all handle positioning slightly differently.\n"
"For platforms that do not offer spatial tracking, our origin point (0, 0, 0) "
@@ -20315,9 +19939,6 @@ msgstr "Gibt ein Wörterbuch mit Trackern für [param tracker_types] zurück."
msgid "Removes this [param interface]."
msgstr "Entfernt dieses [param interface]."
-msgid "Removes this positional [param tracker]."
-msgstr "Entfernt diesen Positions-[param tracker]."
-
msgid "The primary [XRInterface] currently bound to the [XRServer]."
msgstr "Das primäre [XRInterface], das derzeit an den [XRServer] gebunden ist."
@@ -20417,6 +20038,12 @@ msgstr ""
"Die Ausrichtung des HMD wird nicht zurückgesetzt, nur die Position des "
"Spielers wird zentriert."
+msgid "The description of this tracker."
+msgstr "Die Beschreibung dieses Trackers."
+
+msgid "The type of tracker."
+msgstr "Der Typ des Trackers."
+
msgid "Allows the creation of zip files."
msgstr "Ermöglicht die Erzeugung von zip Dateien."
diff --git a/doc/translations/es.po b/doc/translations/es.po
index c202cd893c..0872b8087d 100644
--- a/doc/translations/es.po
+++ b/doc/translations/es.po
@@ -28,7 +28,7 @@
# Manuel Cantón Guillén <manuelcanton8@gmail.com>, 2021.
# Rémi Verschelde <akien@godotengine.org>, 2021.
# Rémi Verschelde <remi@godotengine.org>, 2021.
-# Alfonso V <alfonsov96@gmail.com>, 2022.
+# Alfonso V <alfonsov96@gmail.com>, 2022, 2024.
# Alejandro Pérez <alejandro.pr.rz@gmail.com>, 2022.
# Cristhian Pineda Castro <kurgancpc@hotmail.com>, 2022.
# Francesco Santoro <fgsantoror20@gmail.com>, 2022.
@@ -76,12 +76,15 @@
# Franco Ezequiel Ibañez <francoibanez.dev@gmail.com>, 2024.
# Zeerats <scbmediasolutions@gmail.com>, 2024.
# Agustín Da Silva <aatin0089@gmail.com>, 2024.
+# Daniel Miranda <danmiranda@gmail.com>, 2024.
+# Cristofer Binimelis <cristoferbinimelis@gmail.com>, 2024.
+# Yarelio <yarielalfaro.go02@gmail.com>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2024-02-28 10:05+0000\n"
-"Last-Translator: Agustín Da Silva <aatin0089@gmail.com>\n"
+"PO-Revision-Date: 2024-04-30 14:46+0000\n"
+"Last-Translator: Yarelio <yarielalfaro.go02@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/es/>\n"
"Language: es\n"
@@ -89,7 +92,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 5.5-dev\n"
+"X-Generator: Weblate 5.5.3-dev\n"
msgid "All classes"
msgstr "Todas las clases"
@@ -222,6 +225,9 @@ msgstr ""
"Este valor es un entero compuesto como una máscara de bits de los siguientes "
"indicadores."
+msgid "No return value."
+msgstr "Sin valor de retorno."
+
msgid ""
"There is currently no description for this class. Please help us by :ref:"
"`contributing one <doc_updating_the_class_reference>`!"
@@ -299,6 +305,35 @@ msgstr ""
"Hay diferencias notables cuando usa esta API con C#. Vea :ref:"
"`doc_c_sharp_differences` para más información."
+msgid "Deprecated:"
+msgstr "Obsoleto:"
+
+msgid "Experimental:"
+msgstr "Experimental:"
+
+msgid "This signal may be changed or removed in future versions."
+msgstr "Esta señal podría ser modificada o eliminada en versiones futuras."
+
+msgid "This constant may be changed or removed in future versions."
+msgstr "Esta constante podría ser modificada o eliminada en versiones futuras."
+
+msgid "This property may be changed or removed in future versions."
+msgstr "Esta propiedad podría ser modificada o eliminada en versiones futuras."
+
+msgid "This constructor may be changed or removed in future versions."
+msgstr ""
+"Este constructor podría ser modificado o eliminado en versiones futuras."
+
+msgid "This method may be changed or removed in future versions."
+msgstr "Este método podría ser modificado o eliminado en versiones futuras."
+
+msgid "This operator may be changed or removed in future versions."
+msgstr "Este operador podría ser modificado o eliminado en versiones futuras."
+
+msgid "This theme property may be changed or removed in future versions."
+msgstr ""
+"Esta propiedad de tema podría ser modificada o eliminada en versiones futuras."
+
msgid "Built-in GDScript constants, functions, and annotations."
msgstr "Constantes, funciones y anotaciones de GDScript integradas."
@@ -307,12 +342,12 @@ msgid ""
"any script.\n"
"For the list of the global functions and constants see [@GlobalScope]."
msgstr ""
-"Una lista de funciones de utilidad y anotaciones específicas de GDScript "
+"Una lista de funciones de utilidad y anotaciones específicas de GDScript, "
"accesibles desde cualquier script.\n"
"Para la lista de funciones globales y constantes ver [@GlobalScope]."
msgid "GDScript exports"
-msgstr "Exportaciones de Scripts GD"
+msgstr "Exportaciones de GDScript"
msgid ""
"Returns a [Color] constructed from red ([param r8]), green ([param g8]), blue "
@@ -334,70 +369,20 @@ msgstr ""
"Devuelve un [Color] construido a partir de rojo ([param r8]), verde ([param "
"g8]), azul ([param b8]) y opcionalmente alfa ([param a8]), cada uno dividido "
"entre [code]255.0[/code] para obtener su valor final. Usar [method Color8] en "
-"vez del constructor estándar [Color] es útil cuando necesita hacer coincidir "
-"exactamente los valores de color en una [Image].\n"
+"vez del constructor estándar [Color] es útil cuando se necesita hacer "
+"coincidir exactamente los valores de color en una [Image].\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 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]\n"
-"[b]Nota:[/b] Debido a la baja precisión de [method Color8] comparado con el "
-"constructor estándar [Color], un color creado con [method Color8], "
-"generalmente, no será igual al mismo color creado con el constructor estándar "
-"[Color]. Utilice [method Color.is_equal_approx] para hacer comparaciones y "
+"[b]Nota:[/b] Debido a la baja precisión de [method Color8] comparada con la "
+"del constructor estándar [Color], un color creado con [method Color8] "
+"generalmente no será igual al mismo color creado con el constructor [Color] "
+"estándar. Utilice [method Color.is_equal_approx] para hacer comparaciones y "
"evitar problemas con errores de precisión de coma flotante."
msgid ""
-"Asserts that the [param condition] is [code]true[/code]. If the [param "
-"condition] is [code]false[/code], an error is generated. When running from "
-"the editor, the running project will also be paused until you resume it. This "
-"can be used as a stronger form of [method @GlobalScope.push_error] for "
-"reporting errors to project developers or add-on users.\n"
-"An optional [param message] can be shown in addition to the generic "
-"\"Assertion failed\" message. You can use this to provide additional details "
-"about why the assertion failed.\n"
-"[b]Warning:[/b] For performance reasons, the code inside [method assert] is "
-"only executed in debug builds or when running the project from the editor. "
-"Don't include code that has side effects in an [method assert] call. "
-"Otherwise, the project will behave differently when exported in release "
-"mode.\n"
-"[codeblock]\n"
-"# Imagine we always want speed to be between 0 and 20.\n"
-"var speed = -10\n"
-"assert(speed < 20) # True, the program will continue.\n"
-"assert(speed >= 0) # False, the program will stop.\n"
-"assert(speed >= 0 and speed < 20) # You can also combine the two conditional "
-"statements in one check.\n"
-"assert(speed < 20, \"the speed limit is 20\") # Show a message.\n"
-"[/codeblock]"
-msgstr ""
-"Afirma que la [condición param] es [code]true[/code]. Si la [condición param] "
-"es [code]false[/code], se genera un error. Cuando se ejecuta desde el editor, "
-"el proyecto en ejecución también se pausará hasta que lo reanude. Esto se "
-"puede utilizar como una forma más fuerte de [method @GlobalScope.push_error] "
-"para informar de errores a los desarrolladores del proyecto o a los usuarios "
-"del complemento.\n"
-"Se puede mostrar un [param message] opcional además del mensaje genérico "
-"\"Assertion failed\". Puede utilizarlo para proporcionar detalles adicionales "
-"sobre por qué falló la aserción.\n"
-"[b]Advertencia:[/b] Por razones de rendimiento, el código dentro de [method "
-"assert] sólo se ejecuta en construcciones de depuración o cuando se ejecuta "
-"el proyecto desde el editor. No incluya código que tenga efectos secundarios "
-"en una llamada a [method assert]. De lo contrario, el proyecto se comportará "
-"de forma diferente cuando se exporte en modo release.\n"
-"[codeblock]\n"
-"# Imagina que siempre queremos que la velocidad esté entre 0 y 20.\n"
-"var speed = -10\n"
-"assert(speed < 20) # Verdadero, el programa continuará.\n"
-"assert(speed >= 0) # Falso, el programa se detendrá.\n"
-"assert(speed >= 0 and speed < 20) # También puedes combinar las dos "
-"sentencias condicionales en una sola comprobación.\n"
-"assert(speed < 20, \"el límite de velocidad es 20\") # Muestra un mensaje.\n"
-"[/codeblock]"
-
-msgid ""
"Returns a single character (as a [String]) of the given Unicode code point "
"(which is compatible with ASCII code).\n"
"[codeblock]\n"
@@ -414,321 +399,65 @@ msgstr ""
"a = char(8364) # a es \"€\"\n"
"[/codeblock]"
-msgid ""
-"Converts a [param dictionary] (created with [method inst_to_dict]) back to an "
-"Object instance. Can be useful for deserializing."
-msgstr ""
-"Convierte un [param dictionary] (creado con [method inst_to_dict]) en una "
-"instancia de objeto. Puede ser útil para deserializar datos."
+msgid "Use [method @GlobalScope.type_convert] instead."
+msgstr "Utiliza el [método @GlobalScope.type_convert] en su lugar."
msgid ""
-"Returns an array of dictionaries representing the current call stack. See "
-"also [method print_stack].\n"
+"Converts [param what] to [param type] in the best way possible. The [param "
+"type] uses the [enum Variant.Type] values.\n"
"[codeblock]\n"
-"func _ready():\n"
-" foo()\n"
-"\n"
-"func foo():\n"
-" bar()\n"
+"var a = [4, 2.5, 1.2]\n"
+"print(a is Array) # Prints true\n"
"\n"
-"func bar():\n"
-" print(get_stack())\n"
-"[/codeblock]\n"
-"Starting from [code]_ready()[/code], [code]bar()[/code] would print:\n"
-"[codeblock]\n"
-"[{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, "
-"source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]\n"
-"[/codeblock]\n"
-"[b]Note:[/b] This function only works if the running instance is connected to "
-"a debugging server (i.e. an editor instance). [method get_stack] will not "
-"work in projects exported in release mode, or in projects exported in debug "
-"mode if not connected to a debugging server.\n"
-"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing so "
-"will return an empty array."
-msgstr ""
-"Devuelve un array de diccionarios que representan la pila de llamadas actual. "
-"Véase también [method print_stack].\n"
-"[codeblock]\n"
-"func _ready():\n"
-" foo()\n"
-"\n"
-"func foo():\n"
-" bar()\n"
-"\n"
-"func bar():\n"
-" print(get_stack())\n"
-"[/codeblock]\n"
-"Empezando desde [code]_ready()[/code],[code]bar()[/code] esto imprimirá:\n"
-"[codeblock]\n"
-"[{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, "
-"source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]\n"
-"[/codeblock]\n"
-"[b]Nota:[/b] Esta función sólo funciona si la instancia en ejecución está "
-"conectada a un servidor de depuración (i.e. una instancia de editor). [method "
-"get_stack] no funcionará en proyectos exportados en modo release, o en "
-"proyectos exportados en modo depuración si no se está conectado a un servidor "
-"de depuración.\n"
-"[b]Nota:[/b] La llamada a esta función desde un [Thread] no está soportada. "
-"Si lo hace, devolverá un array vacío."
-
-msgid ""
-"Returns 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 ""
-"Devuelve la [instancia param] pasada, convertida en un Diccionario. Puede ser "
-"útil para serializar.\n"
-"[b]Nota:[/b] No se puede utilizar para serializar objetos con scripts "
-"integrados adjuntos o objetos asignados dentro de scripts integrados.\n"
-"[codeblock]\n"
-"var foo = \"bar\"\n"
-"func _ready():\n"
-" var d = inst2dict(self)\n"
-" print(d.keys())\n"
-" print(d.values())\n"
-"[/codeblock]\n"
-"Imprime:\n"
-"[codeblock]\n"
-"[@subpath, @path, foo]\n"
-"[, res://test.gd, bar]\n"
-"[/codeblock]"
-
-msgid ""
-"Returns [code]true[/code] if [param value] is an instance of [param type]. "
-"The [param type] value must be one of the following:\n"
-"- A constant from the [enum Variant.Type] enumeration, for example [constant "
-"TYPE_INT].\n"
-"- An [Object]-derived class which exists in [ClassDB], for example [Node].\n"
-"- A [Script] (you can use any class, including inner one).\n"
-"Unlike the right operand of the [code]is[/code] operator, [param type] can be "
-"a non-constant value. The [code]is[/code] operator supports more features "
-"(such as typed arrays) and is more performant. Use the operator instead of "
-"this method if you do not need dynamic type checking.\n"
-"Examples:\n"
-"[codeblock]\n"
-"print(is_instance_of(a, TYPE_INT))\n"
-"print(is_instance_of(a, Node))\n"
-"print(is_instance_of(a, MyClass))\n"
-"print(is_instance_of(a, MyClass.InnerClass))\n"
-"[/codeblock]\n"
-"[b]Note:[/b] If [param value] and/or [param type] are freed objects (see "
-"[method @GlobalScope.is_instance_valid]), or [param type] is not one of the "
-"above options, this method will raise a runtime error.\n"
-"See also [method @GlobalScope.typeof], [method type_exists], [method Array."
-"is_same_typed] (and other [Array] methods)."
-msgstr ""
-"Devuelve [code]true[/code] si [el valor del parámetro] es una instancia del "
-"[tipo de parámetro]. El valor del [tipo de parámetro] debe de ser uno de los "
-"siguientes:\n"
-"- Una constante de la enumeración [enum Variant.Type], por ejemplo [constant "
-"TYPE_INT].\n"
-"- Una clase derivada de [Object] la cual existe en [ClassDB], por ejemplo "
-"[Node].\n"
-"- Un [Script] (puedes utilizar cualquier clase, incluyendo una interna).\n"
-"A diferencia del operando derecho del operador [code]is[/code], [param type] "
-"puede ser un valor no constante. El operador [code]is[/code] soporta más "
-"características (como los arrays tipados) y es más eficaz. Utiliza el "
-"operador en vez de este método si no necesitas chequeo de tipificación "
-"dinámico (dynamic type checking).\n"
-"Ejemplos:\n"
-"[codeblock]\n"
-"print(is_instance_of(a, TYPE_INT))\n"
-"print(is_instance_of(a, Node))\n"
-"print(is_instance_of(a, MyClass))\n"
-"print(is_instance_of(a, MyClass.InnerClass))\n"
-"[/codeblock]\n"
-"[b]Nota:[/b] Si [param value] y/o [param type] son objetos liberados (ver "
-"[method @GlobalScope.is_instance_valid]), o [param type] no es una de las "
-"opciones de arriba, este método lanzará un error de ejecución (runtime "
-"error).\n"
-"Ver también [method @GlobalScope.typeof], [method type_exists], [method Array."
-"is_same_typed] (y otros métodos [Array])."
-
-msgid ""
-"Returns a [Resource] from the filesystem located at [param path]. During run-"
-"time, the resource is loaded when the script is being parsed. This function "
-"effectively acts as a reference to that resource. Note that this function "
-"requires [param path] to be a constant [String]. If you want to load a "
-"resource from a dynamic/variable path, use [method load].\n"
-"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource "
-"in the Assets Panel and choosing \"Copy Path\", or by dragging the file from "
-"the FileSystem dock into the current script.\n"
-"[codeblock]\n"
-"# Create instance of a scene.\n"
-"var diamond = preload(\"res://diamond.tscn\").instantiate()\n"
+"var b = convert(a, TYPE_PACKED_BYTE_ARRAY)\n"
+"print(b) # Prints [4, 2, 1]\n"
+"print(b is Array) # Prints false\n"
"[/codeblock]"
msgstr ""
-"Devuelve un [Recurso] del sistema de archivos ubicado en [parámetro ruta]. El "
-"recurso se carga durante el análisis sintáctico del script, es decir, se "
-"carga con el script y [method preload] actúa efectivamente como una "
-"referencia a ese recurso. Tenga en cuenta que el método requiere una ruta "
-"constante. Si desea cargar un recurso de una ruta dinámica/variable, utilice "
-"[method load].\n"
-"[b]Nota:[/b] Las rutas de los recursos se pueden obtener haciendo clic con el "
-"botón derecho del ratón en un recurso del Panel de activos y eligiendo "
-"\"Copiar ruta\" o arrastrando el archivo desde el muelle del Sistema de "
-"archivos al script.\n"
+"[i]obsoleto.[/i] Usar [method @GlobalScope.type_convert] en su lugar.\n"
+"Convierte [param what] a [param type] de la mejor forma posible. El [param "
+"type] usa los valores de[enum Variant.Type].\n"
"[codeblock]\n"
-"# Instancia una escena.\n"
-"var diamante = preload(\"res://diamante.tscn\").instance()\n"
+"var a = [4, 2.5, 1.2]\n"
+"print(a is Array) # Imprime true\n"
+"\n"
+"var b = convert(a, TYPE_PACKED_BYTE_ARRAY)\n"
+"print(b)• • • • • • • • # Prints [4, 2, 1]\n"
+"print(b is Array) # Imprime false\n"
"[/codeblock]"
msgid ""
-"Like [method @GlobalScope.print], but includes the current stack frame when "
-"running with the debugger turned on.\n"
-"The output in the console may look like the following:\n"
-"[codeblock]\n"
-"Test print\n"
-"At: res://test.gd:15:_process()\n"
-"[/codeblock]\n"
-"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing so "
-"will instead print the thread ID."
+"Converts a [param dictionary] (created with [method inst_to_dict]) back to an "
+"Object instance. Can be useful for deserializing."
msgstr ""
-"Imprime una registro de la pila en la ubicación del código, solo funciona "
-"cuando se ejecuta con el depurador activado.\n"
-"La salida en la consola se vería algo así:\n"
-"[codeblock]\n"
-"Frame 0 - res://test.gd:16 in function '_process'\n"
-"[/codeblock]"
+"Convierte un [param dictionary] (creado con [method inst_to_dict]) en una "
+"instancia de objeto. Puede ser útil para deserializar datos."
msgid ""
-"Prints a stack trace at the current code location. See also [method "
-"get_stack].\n"
-"The output in the console may look like the following:\n"
-"[codeblock]\n"
-"Frame 0 - res://test.gd:16 in function '_process'\n"
-"[/codeblock]\n"
-"[b]Note:[/b] This function only works if the running instance is connected to "
-"a debugging server (i.e. an editor instance). [method print_stack] will not "
-"work in projects exported in release mode, or in projects exported in debug "
-"mode if not connected to a debugging server.\n"
-"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing so "
-"will instead print the thread ID."
-msgstr ""
-"Imprime un seguimiento de la pila en la ubicación de código actual. Véase "
-"también [method get_stack].\n"
-"La salida en la consola puede verse similar a la siguiente:\n"
-"[codeblock[\n"
-"Frame 0 - res://test.gd:16 in function '_process'\n"
-"[/codeblock]\n"
-"[b]Nota:[/b] Esta función solo actua correctamente si la instancia ejecutada "
-"está conectada a un servidor de depuración (p.e. una instancia de editor). "
-"[method print_stack] no funcionará en proyectos exportados en modo release, o "
-"en proyectos exportados en modo depurar si no está conectado a un server de "
-"depuración.\n"
-"[b]Nota:[/b] Llamar a esta función desde un hilo no está soportado. Hacerlo "
-"en este caso imprimirá el ID del hilo."
-
-msgid ""
-"Returns an array with the given range. [method range] can be called in three "
-"ways:\n"
-"[code]range(n: int)[/code]: Starts from 0, increases by steps of 1, and stops "
-"[i]before[/i] [code]n[/code]. The argument [code]n[/code] is [b]exclusive[/"
-"b].\n"
-"[code]range(b: int, n: int)[/code]: Starts from [code]b[/code], increases by "
-"steps of 1, and stops [i]before[/i] [code]n[/code]. The arguments [code]b[/"
-"code] and [code]n[/code] are [b]inclusive[/b] and [b]exclusive[/b], "
-"respectively.\n"
-"[code]range(b: int, n: int, s: int)[/code]: Starts from [code]b[/code], "
-"increases/decreases by steps of [code]s[/code], and stops [i]before[/i] "
-"[code]n[/code]. The arguments [code]b[/code] and [code]n[/code] are "
-"[b]inclusive[/b] and [b]exclusive[/b], respectively. The argument [code]s[/"
-"code] [b]can[/b] be negative, but not [code]0[/code]. If [code]s[/code] is "
-"[code]0[/code], an error message is printed.\n"
-"[method range] converts all arguments to [int] before processing.\n"
-"[b]Note:[/b] Returns an empty array if no value meets the value constraint (e."
-"g. [code]range(2, 5, -1)[/code] or [code]range(5, 5, 1)[/code]).\n"
-"Examples:\n"
-"[codeblock]\n"
-"print(range(4)) # Prints [0, 1, 2, 3]\n"
-"print(range(2, 5)) # Prints [2, 3, 4]\n"
-"print(range(0, 6, 2)) # Prints [0, 2, 4]\n"
-"print(range(4, 1, -1)) # Prints [4, 3, 2]\n"
-"[/codeblock]\n"
-"To iterate over an [Array] backwards, use:\n"
-"[codeblock]\n"
-"var array = [3, 6, 9]\n"
-"for i in range(array.size() - 1, -1, -1):\n"
-" print(array[i])\n"
-"[/codeblock]\n"
-"Output:\n"
-"[codeblock]\n"
-"9\n"
-"6\n"
-"3\n"
-"[/codeblock]\n"
-"To iterate over [float], convert them in the loop.\n"
-"[codeblock]\n"
-"for i in range (3, 0, -1):\n"
-" print(i / 10.0)\n"
-"[/codeblock]\n"
-"Output:\n"
+"Returns the length of the given Variant [param var]. The length can be the "
+"character count of a [String] or [StringName], the element count of any array "
+"type, or the size of a [Dictionary]. For every other Variant type, a run-time "
+"error is generated and execution is stopped.\n"
"[codeblock]\n"
-"0.3\n"
-"0.2\n"
-"0.1\n"
+"a = [1, 2, 3, 4]\n"
+"len(a) # Returns 4\n"
+"\n"
+"b = \"Hello!\"\n"
+"len(b) # Returns 6\n"
"[/codeblock]"
msgstr ""
-"Devuelve un array con el rango dado. [method range] puede ser invocado de "
-"tres maneras:\n"
-"[code]range(n: int)[/code]: Comienza desde 0, incrementa en intervalos de 1, "
-"y para [i]antes de[/i] [code]n[/code]. El argumento [code]n[/code] es "
-"[b]exclusivo[/b].\n"
-"[code]range(b: int, n: int)[/code]: Comienza desde [code]b[/code], incrementa "
-"en intervalos de 1, y para [i]antes de[/i] [code]n[/code]. Los argumentos "
-"[code]b[/code] y [code]n[/code] son [b]inclusivo[/b] y [b]exclusivo[/b], "
-"respectivamente.\n"
-"[code]range(b: int, n: int, s: int)[/code]: Comiensa desde [code]b[/code], "
-"incrementa o decrementa en pasos de [code]s[/code], y para [i]antes de[/i] "
-"[code]n[/code]. Los argumentos [code]b[/code] y [code]n[/code] son "
-"[b]inclusivo[/b] y [b]exclusivo[/b], respectivamente. El argumento [code]s[/"
-"code] [b]puede[/b] ser negativo, pero no [code]0[/code]. Si [code]s[/code] es "
-"[code]0[/code], se mostrará un mensaje de error.\n"
-"[method range] convierte todos los argumentos a [int] antes de procesarse.\n"
-"[b]Note:[/b] Devuelve un array vacío si ningún valor cumple la restricción de "
-"valor (v.g. [code]range(2, 5, -1)[/code] o [code]range(5, 5, 1)[/code]).\n"
-"Ejemplos:\n"
-"[codeblock]\n"
-"print(range(4)) # Imprime [0, 1, 2, 3]\n"
-"print(range(2, 5)) # Imprime [2, 3, 4]\n"
-"print(range(0, 6, 2)) # Imprime [0, 2, 4]\n"
-"print(range(4, 1, -1)) # Imprime [4, 3, 2]\n"
-"[/codeblock]\n"
-"Para iterar un [Array] hacia atrás, utilice:\n"
+"Devuelve la longitud de la variable [code]var[/code]. La longitud es el "
+"número de caracteres de la cadena, el número de elementos de la matriz, el "
+"tamaño del diccionario, etc. Para cualquier otro tipo de Variante, un error "
+"de tiempo-de-ejecución es generado y la ejecución el detenida.\n"
+"[b]Nota:[/b] Genera un error fatal si la variable no puede proporcionar una "
+"longitud.\n"
"[codeblock]\n"
-"var array = [3, 6, 9]\n"
-"for i in range(array.size(), 0, -1):\n"
-" print(array[i - 1])\n"
-"[/codeblock]\n"
-"Salida:\n"
-"[codeblock]\n"
-"9\n"
-"6\n"
-"3\n"
-"[/codeblock]\n"
-"Para iterar sobre [float], conviertelos en el bucle.\n"
-"[codeblock]\n"
-"for i in range (3, 0, -1):\n"
-" print(i / 10.0)\n"
-"[/codeblock]\n"
-"Salida:\n"
-"[codeblock]\n"
-"0.3\n"
-"0.2\n"
-"0.1\n"
+"a = [1, 2, 3, 4]\n"
+"len(a) # Devuelve 4\n"
+"\n"
+"b = \"Hola!\"\n"
+"len(b) # Devuelve 6\n"
"[/codeblock]"
msgid ""
@@ -909,402 +638,82 @@ msgstr ""
"[annotation @export_group] y [annotation @export_subgroup]."
msgid ""
-"Export a [Color] property without allowing its transparency ([member Color."
-"a]) to be edited.\n"
-"See also [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n"
-"[codeblock]\n"
-"@export_color_no_alpha var dye_color: Color\n"
-"[/codeblock]"
-msgstr ""
-"Exportar una propiedad [Color] sin permitir que su transparencia ([member "
-"Color.a]) sea editada.\n"
-"Ver también [constante PROPERTY_HINT_COLOR_NO_ALPHA].\n"
-"[codeblock]\n"
-"@export_color_no_alpha var dye_color: Color\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as a path to a directory. The path will be limited "
-"to the project folder and its subfolders. See [annotation @export_global_dir] "
-"to allow picking from the entire filesystem.\n"
-"See also [constant PROPERTY_HINT_DIR].\n"
-"[codeblock]\n"
-"@export_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-msgstr ""
-"Exportar una propiedad [String] como ruta a un directorio. La ruta estará "
-"limitada a la carpeta del proyecto y sus subcarpetas. Vease [annotation "
-"@export_global_dir] para\n"
-"permitir seleccionar un directorio del sistema de archivos completo.\n"
-"Ver también [constant PROPERTY_HINT_DIR].\n"
-"[codeblock]\n"
-"@export_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-
-msgid ""
-"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_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"
-"If you want to set an initial value, you must specify it explicitly:\n"
-"[codeblock]\n"
-"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = "
-"\"Rebecca\"\n"
-"[/codeblock]\n"
-"If you want to use named GDScript enums, then use [annotation @export] "
-"instead:\n"
-"[codeblock]\n"
-"enum CharacterName {REBECCA, MARY, LEAH}\n"
-"@export var character_name: CharacterName\n"
-"[/codeblock]"
-msgstr ""
-"Exporta una propiedad [int] o [String] como una lista enumerada de opciones. "
-"Si la propiedad es un [int], entonces el indice del valor es guardado, en el "
-"mismo orden de los valores propocionados. Se pueden agregar valores "
-"explicitos con un dos puntos (:). Si la propiedad es un [String], entonces el "
-"valor es guardado.\n"
-"Mirar tambien [constant PROPERTY_HINT_ENUM].\n"
-"[codeblock]\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"
-"Si queres asignar un valor inicial, lo debes especificar de forma explicita:\n"
-"[codeblock]\n"
-"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = "
-"\"Rebecca\"\n"
-"[/codeblock]\n"
-"Si queres usar los enums de GDSCript con nombre, entonces en cambio usa "
-"[annotation @export]:\n"
-"[codeblock]\n"
-"enum CharacterName {REBECCA, MARY, LEAH}\n"
-"@export var character_name: CharacterName\n"
-"[/codeblock]"
-
-msgid ""
-"Export a floating-point property with an easing editor widget. Additional "
-"hints can be provided to adjust the behavior of the widget. "
-"[code]\"attenuation\"[/code] flips the curve, which makes it more intuitive "
-"for editing attenuation properties. [code]\"positive_only\"[/code] limits "
-"values to only be greater than or equal to zero.\n"
-"See also [constant PROPERTY_HINT_EXP_EASING].\n"
-"[codeblock]\n"
-"@export_exp_easing var transition_speed\n"
-"@export_exp_easing(\"attenuation\") var fading_attenuation\n"
-"@export_exp_easing(\"positive_only\") var effect_power\n"
-"[/codeblock]"
-msgstr ""
-"Exporta una propiedad de punto flotante con un widget de editor suavizado. "
-"Pistas adicionales pueden ser dadas para ajustar el comportamiento del "
-"widget. [code]\"attenuation\"[/code] invierte la curva, lo cual lo hace mas "
-"intuitivo para editar las propiedades de atenuacion. [code]\"positive_only\"[/"
-"code] limita los valores para ser iguales o mayores a cero.\n"
-"Mirar ademas [constant PROPERTY_HINT_EXP_EASING].\n"
-"[codeblock]\n"
-"@export_exp_easing var transition_speed\n"
-"@export_exp_easing(\"attenuation\") var fading_attenuation\n"
-"@export_exp_easing(\"positive_only\") var effect_power\n"
-"[/codeblock]"
-
-msgid ""
-"Export 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"
-"[codeblock]\n"
-"@export_file var sound_effect_path: String\n"
-"@export_file(\"*.txt\") var notes_path: String\n"
-"[/codeblock]"
-msgstr ""
-"Exporta una propiedad [String] como una ruta hacia un archivo. La ruta va a "
-"ser limitada a la carpeta del proyecto y sus subcarpetas. Ver [annotation "
-"@export_global_file] para permitir elegir del sistema de archivos entero.\n"
-"Si [param filter] es dado, solo archivos que coincidan estarán disponibles "
-"para ser elegidos.\n"
-"Mirar tambien [constant PROPERTY_HINT_FILE].\n"
-"[codeblock]\n"
-"@export_file var sound_effect_path: String\n"
-"@export_file(\"*.txt\") var notes_path: String\n"
-"[/codeblock]"
-
-msgid ""
-"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_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 ""
-"Exporta la propiedad de un entero como un pequeño campo de indicador. Esto "
-"permite guardar varios valores \"checked\" (revisados) o [code]true[/code] "
-"con una propiedad, y seleccionarlos cómodamente desde el Panel inspector.\n"
-"Véase también [constant PROPERTY_HINT_FLAGS].\n"
-"[codeblock]\n"
-"@export_flags(\"Fire\", \"Water\", \"Earth\", \"Wind\") var spell_elements = "
-"0\n"
-"[/codeblock]\n"
-"Puedes añadir valores explícitos utilizando dos puntos:\n"
-"[codeblock]\n"
-"@export_flags(\"Self:4\", \"Allies:8\", \"Foes:16\") var spell_targets = 0\n"
-"[/codeblock]\n"
-"Pueden incluso combinarse varios indicadores:\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] El valor de un indicador debe ser al menos [code]1[/code] y "
-"máximo [code]2 ** 32 - 1[/code].\n"
-"[b]Note:[/b] A diferencia de [annotation @export_enum], el valor explícito "
-"anterior no está tomado en cuenta. En el siguiente ejemplo, A es 16, B es 2, "
-"C es 4.\n"
-"[codeblock]\n"
-"@export_flags(\"A:16\", \"B\", \"C\") var x\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D navigation layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_navigation/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_2d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporta una pripiedad entera como un flag binario para las capas de "
-"navegación 2D. El widget en el Inspector dock va a usar los nombres de capas "
-"definidos en [member ProjectSettings.layer_names/2d_navigation/layer_1].\n"
-"Mirar tambien [constant PROPERTY_HINT_LAYERS_2D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_2d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D physics layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_physics/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_2d_physics var physics_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporta una propiedad de entero como un campo bit flag para capas físicas 2D. "
-"El widget del inspector usará el nombre de la capa definido en [member "
-"ProjectSettings.layer_names/2d_physics/layer_1].\n"
-"Vea también [constant PROPERTY_HINT_LAYERS_2D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_2d_physics var physics_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D render layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_render/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_2d_render var render_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporta un Integer como un campo bit flag para las capas de render 2D. El "
-"widget del inspector usará el nombre de la capa definido en [member "
-"ProjectSettings.layer_names/2d_render/layer_1].\n"
-"Vea también [constant PROPERTY_HINT_LAYERS_2D_RENDER].\n"
+"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, then every following property will be 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_flags_2d_render var render_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D navigation layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_navigation/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_3d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporta una propiedad de tipo Integer como big flag para las capas de "
-"navegación 3D. La ventana del inspector usará los nombres de las capas "
-"definidas en:\n"
-"ProjectSettings.layer_names/3d_navigation/layer_1].\n"
-"Vea también:\n"
-"PROPERTY_HINT_LAYERS_3D_NAVIGATION].\n"
+"@export_group(\"Racer Properties\")\n"
+"@export var nickname = \"Nick\"\n"
+"@export var age = 26\n"
"\n"
-"[codeblock]\n"
-"@export_flags_3d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D physics layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_physics/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_3d_physics var physics_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporta una propiedad Integer como un bit flag para capas de físicas 3D. El "
-"widget del inspector usará el nombre definido en[member ProjectSettings."
-"layer_names/3d_physics/layer_1].\n"
-"Vea también [constant PROPERTY_HINT_LAYERS_3D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_3d_physics var physics_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D render layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_render/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_3d_render var render_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporta una propiedad de un numero entero como un campo de bits para capas de "
-"render 3D. El widget en el panel de inspección utilizará el nombre de la capa "
-"definido en [member ProjectSettings.layer_names/3d_render/layer_1].\n"
-"Vea también [constant PROPERTY_HINT_LAYERS_3D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_3d_render var render_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for navigation avoidance "
-"layers. The widget in the Inspector dock will use the layer names defined in "
-"[member ProjectSettings.layer_names/avoidance/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_AVOIDANCE].\n"
-"[codeblock]\n"
-"@export_flags_avoidance var avoidance_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporta una propiedad de tipo Integer como campo de bit flag para las capas "
-"de prevención de navegación.\n"
+"@export_group(\"Car Properties\", \"car_\")\n"
+"@export var car_label = \"Speedy\"\n"
+"@export var car_number = 3\n"
"\n"
-"El widget en el inspector usará los nombres definidos en [member "
-"ProjectSettings.layer_names/avoidance/layer_1].\n"
-"Consulte también [constant PROPERTY_HINT_LAYERS_AVOIDANCE].\n"
-"[codeblock]\n"
-"@export_flags_avoidance var avoidance_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as an absolute 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_path: String\n"
+"@export_group(\"\", \"\")\n"
+"@export var ungrouped_number = 3\n"
"[/codeblock]"
msgstr ""
-"Exporta un [String] como ruta absoluta a un directorio. La ruta puede ser "
-"tomada desde el Sistema de Archivos. Vea\n"
-"[annotation @export_dir] para limitarlo a las carpetas del Proyecto y sus "
-"subcarpetas.\n"
-"Consulte también [constant PROPERTY_HINT_GLOBAL_DIR].\n"
-"[codeblock]\n"
-"@export_global_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as an absolute 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"
+"Define un nuevo grupo para las siguientes propiedades exportadas. Esto ayuda "
+"a organizar las propiedades en el panel Inspector. Los grupos pueden ser "
+"agregados con un [prefijo de parameteo] opcional, que podría hacer un grupo "
+"para solo considerar las propiedades que tenga este prefijo. El agrupamiento "
+"se romperá con la primera propiedad que no tenga un prefijo. El prefijo "
+"también sera removido del nombre de la propiedad en el panel Inspector.\n"
+"Si no se proporciona un [param prefix], entonces cada propiedad siguiente "
+"sera agregada al grupo. El grupo se disuelve para cuando el grupo o categoría "
+"siguiente es definida. Tambien puedes forzar la disolución de un grupo usando "
+"esta anotación con cadenas vacías como parámetros, [code]@export_group(\"\", "
+"\"\")[/code].\n"
+"Los grupos no pueden ser anidados, usa[annotation @export_subgroup] para "
+"añadir subgrupos dentro de grupos.\n"
+"Véase Tambien [constant PROPERTY_USAGE_GROUP].\n"
"[codeblock]\n"
-"@export_global_file var sound_effect_path: String\n"
-"@export_global_file(\"*.txt\") var notes_path: String\n"
-"[/codeblock]"
-msgstr ""
-"Exporta una propiedad de tipo[String] como ruta absoluta a un archivo. La "
-"ruta puede ser escogida del FileSystem.\n"
+"@export_group(\"Racer Properties\")\n"
+"@export var nickname = \"Nick\"\n"
+"@export var age = 26\n"
"\n"
-"Vea [annotation @export_file] para limitarlo a las carpetas y subcarpetas del "
-"proyecto.\n"
-"Si [param filter] es establecido, sólo los archivos marcados estarán "
-"disponibles para seleccionar.\n"
+"@export_group(\"Car Properties\", \"car_\")\n"
+"@export var car_label = \"Speedy\"\n"
+"@export var car_number = 3\n"
"\n"
-"Vea también[constant PROPERTY_HINT_GLOBAL_FILE].\n"
-"[codeblock]\n"
-"@export_global_file var sound_effect_path: String\n"
-"@export_global_file(\"*.txt\") var notes_path: String\n"
+"@export_group(\"\", \"\")\n"
+"@export var ungrouped_number = 3\n"
"[/codeblock]"
msgid ""
-"Export a [String] property with a large [TextEdit] widget instead of a "
-"[LineEdit]. This adds support for multiline content and makes it easier to "
-"edit large amount of text stored in the property.\n"
-"See also [constant PROPERTY_HINT_MULTILINE_TEXT].\n"
-"[codeblock]\n"
-"@export_multiline var character_biography\n"
-"[/codeblock]"
-msgstr ""
-"Exportar una propiedad [String] con un widget [TextEdit] grande en vez de un "
-"[LineEdit]. Esto añade soporte para contenido de múltiples líneas y facilita "
-"editar una gran cantidad de texto almacenado en la propiedad.\n"
-"Ver también [constant PROPERTY_HINT_MULTILINE_TEXT].\n"
-"[codeblock]\n"
-"@export_multiline var character_biography\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [NodePath] property with a filter for allowed node types.\n"
-"See also [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n"
-"[codeblock]\n"
-"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n"
-"[/codeblock]\n"
-"[b]Note:[/b] The type must be a native class or a globally registered script "
-"(using the [code]class_name[/code] keyword) that inherits [Node]."
-msgstr ""
-"Exportar una propiedad [NodePath] con un filtro para los tipos de nodo "
-"permitidos.\n"
-"Ver también [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n"
-"[codeblock]\n"
-"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n"
-"[/codeblock]\n"
-"[b]Note:[/b] The type must be a native class or a globally registered script "
-"(using the [code]class_name[/code] keyword) that inherits [Node]."
-
-msgid ""
-"Export a [String] property with a placeholder text displayed in the editor "
-"widget when no value is present.\n"
-"See also [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n"
+"Export a property with [constant PROPERTY_USAGE_STORAGE] flag. The property "
+"is not displayed in the editor, but it is serialized and stored in the scene "
+"or resource file. This can be useful for [annotation @tool] scripts. Also the "
+"property value is copied when [method Resource.duplicate] or [method Node."
+"duplicate] is called, unlike non-exported variables.\n"
"[codeblock]\n"
-"@export_placeholder(\"Name in lowercase\") var character_id: String\n"
+"var a # Not stored in the file, not displayed in the editor.\n"
+"@export_storage var b # Stored in the file, not displayed in the editor.\n"
+"@export var c: int # Stored in the file, displayed in the editor.\n"
"[/codeblock]"
msgstr ""
-"Exporta una propiedad [String] con un texto genérico mostrado en el widget "
-"del editor cuando no hay valores presentes.\n"
-"Vea también [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n"
+"Exporta una propiedad con el indicador [constant PROPERTY_USAGE_STORAGE]. La "
+"propiedad no se muestra en el editor, pero es serializada y almacenada en la "
+"escena o el archivo de recurso. Esto puede ser útil para los scripts "
+"[annotation @tool]. Además, el valor de la propiedad es copiado cuando "
+"[method Resource.duplicate] o [method Node.duplicate] es llamado, a "
+"diferencia de las variables no-exportadas.\n"
"[codeblock]\n"
-"@export_placeholder(\"Nombre en minúscula\") var character_id: String\n"
+"var a # No almacenado en el archivo, no se muestra en el editor.\n"
+"@export_storage var b # Almacenado en el archivo, no se muestra en el "
+"editor.\n"
+"@export var c: int # Almacenado en el archivo, se muestra en el editor.\n"
"[/codeblock]"
msgid ""
@@ -1390,15 +799,6 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Make a script with static variables to not persist after all references are "
-"lost. If the script is loaded again the static variables will revert to their "
-"default values."
-msgstr ""
-"Crea un script con variables estáticas para no persistir después de perder "
-"todas las referencias. Si el script es cargado nuevamente las variables "
-"estática revierten su valor a sus respectivos valores predeterminados."
-
-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"
@@ -1496,6 +896,40 @@ msgstr ""
"[param from] es menor que [param to], o [code]PI[/code] si no lo es."
msgid ""
+"Returns the hyperbolic arc (also called inverse) tangent of [param x], "
+"returning a value in radians. Use it to get the angle from an angle's tangent "
+"in hyperbolic space if [param x] is between -1 and 1 (non-inclusive).\n"
+"In mathematics, the inverse hyperbolic tangent is only defined for -1 < "
+"[param x] < 1 in the real set, so values equal or lower to -1 for [param x] "
+"return negative [constant @GDScript.INF] and values equal or higher than 1 "
+"return positive [constant @GDScript.INF] in order to prevent [method atanh] "
+"from returning [constant @GDScript.NAN].\n"
+"[codeblock]\n"
+"var a = atanh(0.9) # Returns 1.47221948958322\n"
+"tanh(a) # Returns 0.9\n"
+"\n"
+"var b = atanh(-2) # Returns -inf\n"
+"tanh(b) # Returns -1\n"
+"[/codeblock]"
+msgstr ""
+"Devuelve la tangente del arco hiperbólico (tambien llamado inverso) de [param "
+"x], devolviendo un valor en radianes. Úsalo para obtener el ángulo desde la "
+"tangente en un ángulo en espacio hiperbólico si [param x] está entre -1 y 1 "
+"(no inclusivo).\n"
+"En matemáticas, la inversa de la tangente hiperbólica es solo definida por -1 "
+"< [param x] <1 en el conjunto real, por lo que valores iguales o menores a -1 "
+"para [param x] develven [constant @GDScript.INF] negativos y valores iguales "
+"o mayores a 1 devuelven [constant @GDScript.INF] positivo para prevenir que "
+"[method atanh] devuelva [constant @GDScript.NAN].\n"
+"[codeblock]\n"
+"var a = atanh(0.9) # Devuelve 1.47221948958322\n"
+"tanh(a) # Devuelve 0.9\n"
+"\n"
+"var b = atanh(-2) # Devuelve -inf\n"
+"tanh(b) # Devuelve -1\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] "
@@ -1505,6 +939,72 @@ msgstr ""
"[url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]curva de Bézier [/url] "
"definida dados los puntos [param control_1], [param control_2], y [param end]."
+msgid ""
+"Clamps the [param value], returning a [Variant] not less than [param min] and "
+"not more than [param max]. Any values that can be compared with the less than "
+"and greater than operators will work.\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"
+"[/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], [method Vector4i.clamp], or "
+"[method Color.clamp] (not currently supported by this method).\n"
+"[b]Note:[/b] When using this on vectors it will [i]not[/i] perform component-"
+"wise clamping, and will pick [param min] if [code]value < min[/code] or "
+"[param max] if [code]value > max[/code]. To perform component-wise clamping "
+"use the methods listed above."
+msgstr ""
+"Restringe el [param value], devolviendo una [Variant] no menor que [param "
+"min] y no mayor que [param max]. Cualquier valor que pueda ser comparado con "
+"los operadores \"menor que\" y \"mayor que\" funcionará.\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"
+"[/codeblock]\n"
+"[b]Nota:[/b] Para mejor seguridad de tipo, utilice [method clampf], [method "
+"clampi], [method Vector2.clamp], [method Vector3.clamp], [method Vector3i."
+"clamp], [method Vector4.clamp], [method Vector4i.clamp], o [method Color."
+"clamp] (Actualmente no compatible con este método).\n"
+"[b]Nota:[/b] Cuando utilice esto en vectores [i]no[/i] realizará restricción "
+"de componentes, y elegirá [param min] si [code]value < min[/code] or [param "
+"max] si [code]value > max[/code]. Para realizar restrición de componentes "
+"utilice los metodos listados arriba."
+
+msgid ""
+"Cubic interpolates between two values by the factor defined in [param weight] "
+"with [param pre] and [param post] values."
+msgstr ""
+"Realiza una interpolación cúbica entre dos valores en base al factor definido "
+"en [param weight] con los valores de [param pre] y [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 ""
+"Realiza una interpolación cúbica entre dos valores de rotación con la ruta "
+"más corta por el factor definido en [param weight] con los valores de [param "
+"pre] y [param post]. Ver también [method lerp_angle]."
+
+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 ""
+"Realiza una interpolación cúbica entre dos valores según el factor definido "
+"en [param weight] con los valores de [param pre] y [param post].\n"
+"Puede realizar una interpolación más suave que [method cubic_interpolate] por "
+"valores de tiempo."
+
msgid "Converts from decibels to linear energy (audio)."
msgstr "Convierte de decibelios a energía lineal (audio)."
@@ -1526,6 +1026,63 @@ msgstr ""
"print(error_string(ERR_OUT_OF_MEMORY)) # Prints Out of memory\n"
"[/codeblock]"
+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 a [float]."
+msgstr ""
+"Redondea a [params x] hacia abajo (hacia el negativo infinito), devolviendo "
+"el numero entero de mayor tamaño que no sea superior a [param x].\n"
+"Una version con tipado seguro de [method floor], que devuelve un [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 ""
+"Redondea a [params x] hacia abajo (hacia el negativo infinito), devolviendo "
+"el numero entero de mayor tamaño que no sea superior a [param x].\n"
+"Una version con tipado seguro de [method floor], que devuelve un [int].\n"
+"[b]Nota:[/b] Esta función [i]no[/i] es la misma que [code]int(x)[/code], la "
+"cual redondea hacia 0."
+
+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 ""
+"Envuelve a [param value] entre [code]0[/code] y [param length]. Si el límite "
+"es alcanzado, el siguiente valor que la función devuelva es reducido hacia "
+"[code]0[/code] o incrementado hacia [param length] (como una ola triangular). "
+"Si [param length] es menor que cero, se convierte en positivo.\n"
+"[codeblock]\n"
+"pingpong(-3.0, 3.0) # Devuelve 3.0\n"
+"pingpong(-2.0, 3.0) # Devuelve 2.0\n"
+"pingpong(-1.0, 3.0) # Devuelve 1.0\n"
+"pingpong(0.0, 3.0) # Devuelve 0.0\n"
+"pingpong(1.0, 3.0) # Devuelve 1.0\n"
+"pingpong(2.0, 3.0) # Devuelve 2.0\n"
+"pingpong(3.0, 3.0) # Devuelve 3.0\n"
+"pingpong(4.0, 3.0) # Devuelve 2.0\n"
+"pingpong(5.0, 3.0) # Devuelve 1.0\n"
+"pingpong(6.0, 3.0) # Devuelve 0.0\n"
+"[/codeblock]"
+
msgid "The [AudioServer] singleton."
msgstr "El singleton [AudioServer]."
@@ -2938,9 +2495,6 @@ msgstr "Para la animacion en ejecucion."
msgid "The transition type."
msgstr "El tipo de transicion."
-msgid "The time to cross-fade between this state and the next."
-msgstr "El tiempo de paso de este estado al siguiente."
-
msgid "Emitted when [member advance_condition] is changed."
msgstr "Emitido cuando [member advance_condition] es cambiada."
@@ -2968,12 +2522,6 @@ msgstr ""
msgid "AnimationTree"
msgstr "Árbol de Animación"
-msgid ""
-"Cross-fading time (in seconds) between each animation connected to the inputs."
-msgstr ""
-"Desvanecimiento en tiempo(en segundos) entre cada animacione conectada a las "
-"salidas."
-
msgid "Clears all queued, unplayed animations."
msgstr "Limpia todas las colas, animaciones no reproducidas."
@@ -4004,17 +3552,23 @@ msgstr ""
msgid "Meta class for playing back audio."
msgstr "Meta clase para reproducir el audio."
-msgid "Plays back audio non-positionally."
-msgstr "Reproduce el audio sin posición."
+msgid "The audio will be played on all surround channels."
+msgstr "El audio se reproducirá en todos los canales de sonido envolvente."
-msgid "Returns the position in the [AudioStream] in seconds."
-msgstr "Devuelve la posición en el [AudioStream] en segundos."
+msgid ""
+"The audio will be played on the second channel, which is usually the center."
+msgstr ""
+"El audio se reproducirá en el segundo canal, que suele ser el del centro."
+
+msgid "Returns the position in the [AudioStream]."
+msgstr "Devuelve la posición en el [AudioStream]."
msgid ""
"Returns the [AudioStreamPlayback] object associated with this "
-"[AudioStreamPlayer]."
+"[AudioStreamPlayer2D]."
msgstr ""
-"Devuelve el objeto [AudioStreamPlayback] asociado a este [AudioStreamPlayer]."
+"Devuelve el objeto [AudioStreamPlayback] asociado a este "
+"[AudioStreamPlayer2D]."
msgid "Sets the position from which audio will be played, in seconds."
msgstr ""
@@ -4028,12 +3582,8 @@ msgstr ""
"Si [code]true[/code], el audio se reproduce cuando se añade al árbol de la "
"escena."
-msgid ""
-"If the audio configuration has more than two speakers, this sets the target "
-"channels. See [enum MixTarget] constants."
-msgstr ""
-"Si la configuración de audio tiene más de dos altavoces, esto establece los "
-"canales de destino. Ver las constantes de [enum MixTarget]."
+msgid "Maximum distance from which audio is still hearable."
+msgstr "Distancia máxima desde la que se puede oír el audio."
msgid ""
"The pitch and the tempo of the audio, as a multiplier of the audio sample's "
@@ -4042,42 +3592,12 @@ msgstr ""
"El tono y el tempo del audio, como multiplicador de la tasa de muestreo de la "
"muestra de audio."
-msgid "If [code]true[/code], audio is playing."
-msgstr "Si [code]true[/code], el audio se está reproduciendo."
-
msgid "The [AudioStream] object to be played."
msgstr "El objeto [AudioStream] que se va a reproducir."
-msgid "Volume of sound, in dB."
-msgstr "Volumen del sonido, en dB."
-
msgid "Emitted when the audio stops playing."
msgstr "Emitido cuando el audio deja de reproducirse."
-msgid "The audio will be played only on the first channel."
-msgstr "El audio se reproducirá sólo en el primer canal."
-
-msgid "The audio will be played on all surround channels."
-msgstr "El audio se reproducirá en todos los canales de sonido envolvente."
-
-msgid ""
-"The audio will be played on the second channel, which is usually the center."
-msgstr ""
-"El audio se reproducirá en el segundo canal, que suele ser el del centro."
-
-msgid "Returns the position in the [AudioStream]."
-msgstr "Devuelve la posición en el [AudioStream]."
-
-msgid ""
-"Returns the [AudioStreamPlayback] object associated with this "
-"[AudioStreamPlayer2D]."
-msgstr ""
-"Devuelve el objeto [AudioStreamPlayback] asociado a este "
-"[AudioStreamPlayer2D]."
-
-msgid "Maximum distance from which audio is still hearable."
-msgstr "Distancia máxima desde la que se puede oír el audio."
-
msgid ""
"Returns the [AudioStreamPlayback] object associated with this "
"[AudioStreamPlayer3D]."
@@ -6227,18 +5747,6 @@ msgstr ""
"focus_mode]."
msgid ""
-"The minimum size of the node's bounding rectangle. If you set it to a value "
-"greater than (0, 0), the node's bounding rectangle will always have at least "
-"this size, even if its content is smaller. If it's set to (0, 0), the node "
-"sizes automatically to fit its content, be it a texture or child nodes."
-msgstr ""
-"El tamaño mínimo del rectángulo delimitador del nodo. Si lo fijas en un valor "
-"mayor que (0, 0), el rectángulo delimitador del nodo siempre tendrá al menos "
-"este tamaño, aunque su contenido sea menor. Si se establece en (0, 0), el "
-"nodo se dimensiona automáticamente para ajustarse a su contenido, ya sea una "
-"textura o un nodo hijo."
-
-msgid ""
"Controls the direction on the horizontal axis in which the control should "
"grow if its horizontal minimum size is changed to be greater than its current "
"size, as the control always has to be at least the minimum size."
@@ -7769,21 +7277,6 @@ msgstr ""
"[method Node.queue_free]."
msgid ""
-"Adds the control to a specific dock slot (see [enum DockSlot] for options).\n"
-"If the dock is repositioned and as long as the plugin is active, the editor "
-"will save the dock position on further sessions.\n"
-"When your plugin is deactivated, make sure to remove your custom control with "
-"[method remove_control_from_docks] and free it with [method Node.queue_free]."
-msgstr ""
-"Añade el control a una ranura específica del dock (ver [enum DockSlot] para "
-"las opciones).\n"
-"Si se reposiciona el dock y mientras el plugin esté activo, el editor "
-"guardará la posición del dock en sesiones posteriores.\n"
-"Cuando tu plugin esté desactivado, asegúrate de eliminar tu control "
-"personalizado con [method remove_control_from_docks] y libéralo con [method "
-"Node.queue_free]."
-
-msgid ""
"Gets the undo/redo object. Most actions in the editor can be undoable, so use "
"this object to make sure this happens when it's worth it."
msgstr ""
@@ -8252,13 +7745,6 @@ msgid "Returns the size of the file in bytes."
msgstr "Devuelve el tamaño del archivo en bytes."
msgid ""
-"Returns the next line of the file as a [String].\n"
-"Text is interpreted as being UTF-8 encoded."
-msgstr ""
-"Devuelve la siguiente línea del archivo como una [String].\n"
-"El texto se interpreta como codificado en UTF-8."
-
-msgid ""
"Returns an MD5 String representing the file at the given path or an empty "
"[String] on failure."
msgstr ""
@@ -8285,13 +7771,6 @@ msgstr "Devuelve la posición del cursor del archivo."
msgid "Returns the next bits from the file as a floating-point number."
msgstr "Devuelve los siguientes bits del archivo como un número real."
-msgid ""
-"Returns a SHA-256 [String] representing the file at the given path or an "
-"empty [String] on failure."
-msgstr ""
-"Devuelve un SHA-256 [String] que representa el archivo en la ruta dada o un "
-"[String] vacío al fallar."
-
msgid "Returns [code]true[/code] if the file is currently opened."
msgstr "Devuelve [code]true[/code] si el archivo está actualmente abierto."
@@ -8999,9 +8478,6 @@ msgstr ""
"operaciones de bajo nivel y sólo está disponible en builds de Godot en mono.\n"
" Ver también [CSharpScript]."
-msgid "Restarts all the existing particles."
-msgstr "Reinicia todas las partículas existentes."
-
msgid ""
"Returns the axis-aligned bounding box that contains all the particles that "
"are active in the current frame."
@@ -9009,9 +8485,6 @@ msgstr ""
"Devuelve el cuadro delimitador alineado con el eje que contiene todas las "
"partículas que están activas en el cuadro actual."
-msgid "Restarts the particle emission, clearing existing particles."
-msgstr "Reinicia la emisión de partículas, limpiando las partículas existentes."
-
msgid "[Mesh] that is drawn for the first draw pass."
msgstr "[Mesh] que se dibuja para el primer pase de dibujado."
@@ -9106,12 +8579,12 @@ msgstr "El icono del botón de reinicio del zoom."
msgid "The background drawn under the grid."
msgstr "El fondo dibujado bajo la cuadrícula."
-msgid "The text displayed in the GraphNode's title bar."
-msgstr "El texto que se muestra en la barra de título del GraphNode."
-
msgid "The color modulation applied to the resizer icon."
msgstr "La modulación de color aplicada al icono de redimensionamiento."
+msgid "The text displayed in the GraphNode's title bar."
+msgstr "El texto que se muestra en la barra de título del GraphNode."
+
msgid "Horizontal offset for the ports."
msgstr "Desplazamiento horizontal de los puertos."
@@ -10750,17 +10223,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 ""
-"The event's device ID.\n"
-"[b]Note:[/b] This device ID will always be [code]-1[/code] for emulated mouse "
-"input from a touchscreen. This can be used to distinguish emulated mouse "
-"input from physical mouse input."
-msgstr ""
-"El ID del dispositivo del evento.\n"
-"[b]Nota:[/b] Este ID de dispositivo siempre será [code]-1[/code] para la "
-"entrada emulada del ratón desde una pantalla táctil. Puede utilizarse para "
-"distinguir la entrada de ratón emulada de la entrada de ratón física."
-
msgid "The action's name. Actions are accessed via this [String]."
msgstr ""
"El nombre de la acción. Se accede a las acciones a través de esta [String]."
@@ -10865,9 +10327,6 @@ msgid "The drag event index in the case of a multi-drag event."
msgstr ""
"El índice de eventos de arrastre en el caso de un evento de arrastre múltiple."
-msgid "The drag position."
-msgstr "La posición de arrastre."
-
msgid ""
"The touch index in the case of a multi-touch event. One index = one finger."
msgstr ""
@@ -12191,14 +11650,6 @@ msgid "Node that instances a [MultiMesh]."
msgstr "Nodo que instancia un [MultiMesh]."
msgid ""
-"Returns the sender's peer ID for the RPC currently being executed.\n"
-"[b]Note:[/b] If not inside an RPC this method will return 0."
-msgstr ""
-"Devuelve la identificación del remitente para la RPC que se está ejecutando "
-"actualmente.\n"
-"[b]Nota:[/b] Si no está dentro de una RPC este método devolverá 0."
-
-msgid ""
"Returns the current state of the connection. See [enum ConnectionStatus]."
msgstr "Devuelve el estado actual de la conexión. Ver [enum ConnectionStatus]."
@@ -12628,16 +12079,6 @@ msgstr ""
msgid "The culling mode to use."
msgstr "El modo de selección a utilizar."
-msgid ""
-"A [Vector2] array with the index for polygon's vertices positions.\n"
-"[b]Note:[/b] The returned value is a copy of the underlying array, rather "
-"than a reference."
-msgstr ""
-"Un array [Vector2] con el índice para las posiciones de los vértices del "
-"polígono.\n"
-"[b]Nota:[/b] El valor devuelto es una copia de la array subyacente, más que "
-"una referencia."
-
msgid "Culling is disabled. See [member cull_mode]."
msgstr "La extracción está desactivada. Ver [member cull_mode]."
@@ -12758,13 +12199,6 @@ msgstr "Una abstracción de una escena serializada."
msgid "Returns [code]true[/code] if the scene file has nodes."
msgstr "Devuelve [code]true[/code] si el archivo de la escena tiene nodos."
-msgid ""
-"Pack will ignore any sub-nodes not owned by given node. See [member Node."
-"owner]."
-msgstr ""
-"Pack ignorará cualquier subnodo que no pertenezca a un nodo determinado. Ver "
-"[member Node.owner]."
-
msgid "Appends a string element at end of the array."
msgstr "Añade un elemento de string al final de la array."
@@ -13135,30 +12569,6 @@ msgstr "Expone los datos relacionados con el rendimiento."
msgid "Represents the size of the [enum Monitor] enum."
msgstr "Representa el tamaño del enum [enum Monitor]."
-msgid ""
-"Called during physics processing, allowing you to read and safely modify the "
-"simulation state for the object. By default, it works in addition to the "
-"usual physics behavior, but the [member custom_integrator] property allows "
-"you to disable the default behavior and do fully custom force integration for "
-"a body."
-msgstr ""
-"Llamado durante el procesamiento de la física, que permite leer y modificar "
-"con seguridad el estado de simulación del objeto. Por defecto, funciona "
-"además del comportamiento físico habitual, pero la propiedad [member "
-"custom_integrator] te permite deshabilitar el comportamiento por defecto y "
-"hacer una integración de fuerza totalmente personalizada para un cuerpo."
-
-msgid ""
-"If [code]true[/code], internal force integration will be disabled (like "
-"gravity or air friction) for this body. Other than collision response, the "
-"body will only move as determined by the [method _integrate_forces] function, "
-"if defined."
-msgstr ""
-"Si [code]true[/code], la integración de la fuerza interna se desactivará "
-"(como la gravedad o la fricción del aire) para este cuerpo. Aparte de la "
-"respuesta a la colisión, el cuerpo sólo se moverá según lo determinado por la "
-"función [method _integrate_forces], si está definida."
-
msgid "The body's mass."
msgstr "La masa del cuerpo."
@@ -13224,9 +12634,6 @@ msgstr "Devuelve el índice de forma local de la colisión."
msgid "Returns the current state of the space, useful for queries."
msgstr "Devuelve el estado actual del espacio, útil para las consultas."
-msgid "Calls the built-in force integration code."
-msgstr "Llama al código de integración de fuerzas incorporado."
-
msgid "The inverse of the inertia of the body."
msgstr "El inverso de la inercia del cuerpo."
@@ -13598,13 +13005,6 @@ 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])."
-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.\n"
"Continuous collision detection tries to predict where a moving body will "
"collide, instead of moving it and correcting its movement if it collided."
@@ -13652,13 +13052,6 @@ msgstr ""
"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."
msgstr ""
@@ -13695,31 +13088,6 @@ msgstr ""
"Establece un parámetro cone_twist_joint (ver las constantes [enum "
"ConeTwistJointParam])."
-msgid ""
-"Gets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants)."
-msgstr ""
-"Obtiene una flag generic_6_DOF_joint (véase las constantes [enum "
-"G6DOFJointAxisFlag])."
-
-msgid ""
-"Gets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] "
-"constants)."
-msgstr ""
-"Obtiene un parámetro generic_6_DOF_joint (véase las constantes [enum "
-"G6DOFJointAxisParam])."
-
-msgid ""
-"Sets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants)."
-msgstr ""
-"Establece una flag generic (véase las constantes [enum G6DOFJointAxisFlag])."
-
-msgid ""
-"Sets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] "
-"constants)."
-msgstr ""
-"Establece un parámetro generic_6_DOF_joint (véase las constantes [enum "
-"G6DOFJointAxisParam])."
-
msgid "Gets a hinge_joint flag (see [enum HingeJointFlag] constants)."
msgstr ""
"Obtiene una flag de hinge_joint (ver constantes de [enum HingeJointFlag])."
@@ -14440,18 +13808,6 @@ msgstr ""
"Administrador de Proyectos cuando se pasa el cursor por encima del proyecto."
msgid ""
-"If [code]true[/code], enables low-processor usage mode. This setting only "
-"works on desktop platforms. The screen is not redrawn if nothing changes "
-"visually. This is meant for writing applications and editors, but is pretty "
-"useless (and can hurt performance) in most games."
-msgstr ""
-"Si [code]true[/code], habilita el modo de uso del procesador bajo. Esta "
-"configuración sólo funciona en plataformas de escritorio. La pantalla no se "
-"redibuja si nada cambia visualmente. Esto está pensado para escribir "
-"aplicaciones y editores, pero es bastante inútil (y puede perjudicar el "
-"rendimiento) en la mayoría de los juegos."
-
-msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
@@ -14609,13 +13965,6 @@ msgstr ""
"sólo afecta a los dispositivos iOS sin un botón de inicio físico."
msgid ""
-"When creating node names automatically, set the type of casing in this "
-"project. This is mostly an editor setting."
-msgstr ""
-"Al crear los nombres de los nodos de forma automática, establezca el tipo de "
-"carcasa en este proyecto. Esto es mayormente un ajuste de editor."
-
-msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
@@ -14934,15 +14283,6 @@ msgstr ""
"devuelve [code]false[/code])."
msgid ""
-"Returns the shape ID of the first object that the ray intersects, or [code]0[/"
-"code] if no object is intersecting the ray (i.e. [method is_colliding] "
-"returns [code]false[/code])."
-msgstr ""
-"Devuelve el ID de la forma del primer objeto que el rayo intersecta, o "
-"[code]0[/code] si no hay ningún objeto que intersecte el rayo (es decir, "
-"[method is_colliding] devuelve [code]false[/code])."
-
-msgid ""
"Returns whether any object is intersecting with the ray's vector (considering "
"the vector length)."
msgstr ""
@@ -16159,21 +15499,6 @@ msgid "The normal background for the [RichTextLabel]."
msgstr "El fondo normal para el [RichTextLabel]."
msgid ""
-"Allows you to read and safely modify the simulation state for the object. Use "
-"this instead of [method Node._physics_process] if you need to directly change "
-"the body's [code]position[/code] or other physics properties. By default, it "
-"works in addition to the usual physics behavior, but [member "
-"custom_integrator] allows you to disable the default behavior and write "
-"custom force integration for a body."
-msgstr ""
-"Permite leer y modificar con seguridad el estado de simulación del objeto. "
-"Utilízalo en lugar del [method Node._physics_process] si necesitas cambiar "
-"directamente la [code]position[/code] del cuerpo o otras propiedades físicas. "
-"Por defecto, funciona además del comportamiento físico habitual, pero [member "
-"custom_integrator] te permite desactivar el comportamiento por defecto y "
-"escribir la integración de fuerza personalizada para un cuerpo."
-
-msgid ""
"Sets the body's velocity on the given axis. The velocity in the given vector "
"axis will be set as the given vector length. This is useful for jumping "
"behavior."
@@ -16199,15 +15524,6 @@ msgstr ""
"CCDMode] para más detalles."
msgid ""
-"If [code]true[/code], internal force integration is disabled for this body. "
-"Aside from collision response, the body will only move as determined by the "
-"[method _integrate_forces] function."
-msgstr ""
-"Si es [code]true[/code], la integración para fuerzas internas está "
-"desabilitada para este cuerpo. Aparte de reaccionar a colisiones, el cuerpo "
-"sólo se moverá por la función [method _integrate_forces]."
-
-msgid ""
"Multiplies the gravity applied to the body. The body's gravity is calculated "
"from the [b]Default Gravity[/b] value in [b]Project > Project Settings > "
"Physics > 2d[/b] and/or any additional gravity vector applied by [Area2D]s."
@@ -16506,15 +15822,6 @@ msgstr "Devuelve el [RID] de una instancia de Skeleton2D."
msgid "Clear all the bones in this skeleton."
msgstr "Limpia todos los huesos de este esqueleto."
-msgid ""
-"Returns the overall transform of the specified bone, with respect to the "
-"skeleton. Being relative to the skeleton frame, this is not the actual "
-"\"global\" transform of the bone."
-msgstr ""
-"Devuelve la transformación general del hueso especificado, con respecto al "
-"esqueleto. Siendo relativa al marco del esqueleto, esta no es la "
-"transformación \"global\" real del hueso."
-
msgid "Radiance texture size is 32×32 pixels."
msgstr "El tamaño de la textura de la radiación es de 32×32 píxeles."
@@ -17245,15 +16552,6 @@ msgstr ""
"Despeja toda la información pasada a la herramienta de la superficie hasta "
"ahora."
-msgid ""
-"Commits the data to the same format used by [method ArrayMesh."
-"add_surface_from_arrays]. This way you can further process the mesh data "
-"using the [ArrayMesh] API."
-msgstr ""
-"Confirma los datos al mismo formato utilizado por el [method ArrayMesh."
-"add_surface_from_arrays]. De esta manera se puede seguir procesando los datos "
-"de la malla usando la API [ArrayMesh]."
-
msgid "Creates a vertex array from an existing [Mesh]."
msgstr "Crea un array de vértices a partir de una [Mesh] existente."
@@ -17461,12 +16759,6 @@ msgstr "Deselecciona la selección actual."
msgid "Returns the text of a specific line."
msgstr "Devuelve el texto de una línea específica."
-msgid "Returns the selection begin line."
-msgstr "Devuelve la línea de inicio de la selección."
-
-msgid "Returns the selection end line."
-msgstr "Devuelve la línea final de selección."
-
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr "Devuelve [code]true[/code] si una acción de \"redo\" está disponible."
@@ -17477,14 +16769,6 @@ msgid "Perform redo operation."
msgstr "Realiza la operación de rehacer."
msgid ""
-"Perform selection, from line/column to line/column.\n"
-"If [member selecting_enabled] is [code]false[/code], no selection will occur."
-msgstr ""
-"Realiza la selección, de línea/columna a línea/columna.\n"
-"Si [member selecting_enabled] es [code]false[/code], no se producirá ninguna "
-"selección."
-
-msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
@@ -17492,9 +16776,6 @@ msgstr ""
"Si [member selecting_enabled] es [code]false[/code], no se producirá ninguna "
"selección."
-msgid "Sets the text for a specific line."
-msgstr "Establece el texto para una línea específica."
-
msgid "Perform undo operation."
msgstr "Realiza la operación de deshacer."
@@ -18554,11 +17835,6 @@ msgstr ""
"Hace que las operaciones de \"hacer\"/\"deshacer\" se mantengan en acciones "
"separadas."
-msgid "Makes subsequent actions with the same name be merged into one."
-msgstr ""
-"Hace que las acciones subsiguientes con el mismo nombre se fusionen en una "
-"sola."
-
msgid "Adds the given [UPNPDevice] to the list of discovered devices."
msgstr "Añade el [UPNPDevice] dado a la lista de dispositivos descubiertos."
@@ -18895,11 +18171,6 @@ msgstr ""
"apunta a +Y."
msgid ""
-"Returns the vector \"bounced off\" from a plane defined by the given normal."
-msgstr ""
-"Devuelve el vector \"rebotado\" de un plano definido por la normalidad dada."
-
-msgid ""
"The vector's Z component. Also accessible by using the index position [code]"
"[2][/code]."
msgstr ""
@@ -19220,9 +18491,6 @@ msgstr "Representa el tamaño del enum [enum RenderInfo]."
msgid "Objects are displayed normally."
msgstr "Los objetos se muestran normalmente."
-msgid "Objects are displayed in wireframe style."
-msgstr "Los objetos se muestran en el estilo wireframe."
-
msgid "Parent of all visual 3D nodes."
msgstr "Padre de todos los nodos visuales 3D."
diff --git a/doc/translations/fr.po b/doc/translations/fr.po
index cdcafd34b2..e1cc7f7a6d 100644
--- a/doc/translations/fr.po
+++ b/doc/translations/fr.po
@@ -96,13 +96,17 @@
# Pandores <pandores.dr@gmail.com>, 2024.
# Didier Morandi <didier.morandi@gmail.com>, 2024.
# Joshua Adamec <joshua.adamec@gmail.com>, 2024.
+# laumane <laumane.laumana@protonmail.com>, 2024.
+# normigon <yoann-grosse@proton.me>, 2024.
+# Miokoba <jonathan.boussard@gmail.com>, 2024.
+# Xltec <axelcrp.pro@gmail.com>, 2024.
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: 2024-02-24 22:50+0000\n"
-"Last-Translator: Joshua Adamec <joshua.adamec@gmail.com>\n"
+"PO-Revision-Date: 2024-05-01 22:07+0000\n"
+"Last-Translator: Xltec <axelcrp.pro@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/godot-"
"class-reference/fr/>\n"
"Language: fr\n"
@@ -110,7 +114,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 5.5-dev\n"
+"X-Generator: Weblate 5.5.3-dev\n"
msgid "All classes"
msgstr "Toutes les classes"
@@ -242,6 +246,9 @@ msgstr ""
"Cette valeur est un nombre entier composé d'un masque de bits des options "
"suivantes."
+msgid "No return value."
+msgstr "Aucune valeur de retour."
+
msgid ""
"There is currently no description for this class. Please help us by :ref:"
"`contributing one <doc_updating_the_class_reference>`!"
@@ -401,56 +408,6 @@ msgstr ""
"flottante."
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 ""
-"Vérifie que la [param condition] est vraie ([code]true[/code]). Si la [param "
-"condition] est fausse ([code]false[/code]), une erreur est générée. Si le "
-"programme est lancé via l'éditeur, son exécution sera aussi interrompue "
-"jusqu'à ce que vous le redémarriez. Cela peut être utilisé comme une "
-"alternative plus radicale à [method @GlobalScope.push_error] pour signaler "
-"des erreurs aux développeurs de projets ou utilisateurs de plugins.\n"
-"Un [param message] facultatif peut être affiché en plus du message générique "
-"\"Assertion failed\". Vous pouvez l'utiliser pour fournir des détails "
-"supplémentaires sur la raison de l'échec de l'assertion.\n"
-"[b]Attention :[/b] Par souci de performance, le code inclus dans [method "
-"assert] n'est exécuté que dans les builds de débogage, ou quand vous lancez "
-"votre projet depuis l'éditeur. N'incluez pas de code qui modifie l'état du "
-"script dans un appel à [method assert]. Sinon, votre projet aura un "
-"fonctionnement différent une fois exporté pour la production (release "
-"build).\n"
-"[codeblock]\n"
-"# Imaginez que nous voulons une vitesse toujours comprise entre 0 et 20.\n"
-"var speed = -10\n"
-"assert(speed < 20) # Vrai, le programme continue.\n"
-"assert(speed >= 0) # Faux, le programme s'interrompt.\n"
-"assert(speed >= 0 and speed < 20) # Vous pouvez aussi combiner les deux "
-"conditions en une seule vérification.\n"
-"assert(speed < 20, \"speed = %f, mais la limite de vitesse est 20\" % speed) "
-"# Affiche un message avec de plus amples détails.\n"
-"[/codeblock]"
-
-msgid ""
"Returns a single character (as a [String]) of the given Unicode code point "
"(which is compatible with ASCII code).\n"
"[codeblock]\n"
@@ -502,142 +459,6 @@ msgstr ""
"sérialisation."
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 ""
-"Returns [code]true[/code] if [param value] is an instance of [param type]. "
-"The [param type] value must be one of the following:\n"
-"- A constant from the [enum Variant.Type] enumeration, for example [constant "
-"TYPE_INT].\n"
-"- An [Object]-derived class which exists in [ClassDB], for example [Node].\n"
-"- A [Script] (you can use any class, including inner one).\n"
-"Unlike the right operand of the [code]is[/code] operator, [param type] can be "
-"a non-constant value. The [code]is[/code] operator supports more features "
-"(such as typed arrays) and is more performant. Use the operator instead of "
-"this method if you do not need dynamic type checking.\n"
-"Examples:\n"
-"[codeblock]\n"
-"print(is_instance_of(a, TYPE_INT))\n"
-"print(is_instance_of(a, Node))\n"
-"print(is_instance_of(a, MyClass))\n"
-"print(is_instance_of(a, MyClass.InnerClass))\n"
-"[/codeblock]\n"
-"[b]Note:[/b] If [param value] and/or [param type] are freed objects (see "
-"[method @GlobalScope.is_instance_valid]), or [param type] is not one of the "
-"above options, this method will raise a runtime error.\n"
-"See also [method @GlobalScope.typeof], [method type_exists], [method Array."
-"is_same_typed] (and other [Array] methods)."
-msgstr ""
-"Renvoie [code]true[/code] si [param value] est une instance de [param type]. "
-"La valeur de [param type] doit être l'une des suivantes :\n"
-"- Une constante de l'énumération [enum Variant.Type], par exemple [constant "
-"TYPE_INT].\n"
-"- Une classe dérivée de [Object] qui existe dans [ClassDB], par exemple "
-"[Node].\n"
-"- Un [Script] (vous pouvez utiliser n'importe quelle classe, y compris une "
-"classe interne).\n"
-"Contrairement à l'opérande droit de l'opérateur [code]is[/code], [param type] "
-"peut être une valeur non constante. L'opérateur [code]is[/code] prend en "
-"charge davantage de fonctionnalités (telles que les tableaux typés) et est "
-"plus performant. Utilisez l'opérateur au lieu de cette méthode si vous n'avez "
-"pas besoin d'une vérification dynamique des types.\n"
-"Exemples :\n"
-"[codeblock]\n"
-"print(is_instance_of(a, TYPE_INT))\n"
-"print(is_instance_of(a, Node))\n"
-"print(is_instance_of(a, MyClass))\n"
-"print(is_instance_of(a, MyClass.InnerClass))\n"
-"[/codeblock]\n"
-"[b]Note :[/b] Si [param value] et/ou [param type] sont des objets libérés "
-"(voir [method @GlobalScope.is_instance_valid]), ou si [param type] n'est pas "
-"l'une des options ci-dessus, cette méthode lèvera une erreur d'exécution.\n"
-"Voir aussi [method @GlobalScope.typeof], [method type_exists], [method Array."
-"is_same_typed] (et autres méthodes [Array])."
-
-msgid ""
"Returns the length of the given Variant [param var]. The length can be the "
"character count of a [String] or [StringName], the element count of any array "
"type, or the size of a [Dictionary]. For every other Variant type, a run-time "
@@ -663,252 +484,6 @@ msgstr ""
"[/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]. This method is equivalent of "
-"using [method ResourceLoader.load] with [constant ResourceLoader."
-"CACHE_MODE_REUSE].\n"
-"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource "
-"in the FileSystem dock and choosing \"Copy Path\", or by dragging the file "
-"from the FileSystem dock into the current script.\n"
-"[codeblock]\n"
-"# Load a scene called \"main\" located in the root of the project directory "
-"and cache it in a variable.\n"
-"var main = load(\"res://main.tscn\") # main will contain a PackedScene "
-"resource.\n"
-"[/codeblock]\n"
-"[b]Important:[/b] The path must be absolute. A relative path will always "
-"return [code]null[/code].\n"
-"This function is a simplified version of [method ResourceLoader.load], which "
-"can be used for more advanced scenarios.\n"
-"[b]Note:[/b] Files have to be imported into the engine first to load them "
-"using this function. If you want to load [Image]s at run-time, you may use "
-"[method Image.load]. If you want to import audio files, you can use the "
-"snippet described in [member AudioStreamMP3.data].\n"
-"[b]Note:[/b] If [member ProjectSettings.editor/export/"
-"convert_text_resources_to_binary] is [code]true[/code], [method @GDScript."
-"load] will not be able to read converted files in an exported project. If you "
-"rely on run-time loading of files present within the PCK, set [member "
-"ProjectSettings.editor/export/convert_text_resources_to_binary] to "
-"[code]false[/code]."
-msgstr ""
-"Retourne une [Resource] depuis le système de fichiers localisé au chemin "
-"absolu [param path]. Sauf si cela est déjà référencé autre part (comme dans "
-"un autre script ou dans la scène), la ressource est chargée depuis le disque "
-"sur un appel de fonction, qui peut causer un petit délai, en particulier "
-"pendant le chargement de larges scènes. Pour éviter des délais inutiles "
-"lorsque vous chargez quelque chose plusieurs fois, vous pouvez stocker la "
-"ressource dans une variable ou utiliser [method preload]. Cette méthode est "
-"équivalent à utiliser [method ResourceLoader.load] avec [constant "
-"ResourceLoader.CACHE_MODE_REUSE].\n"
-"[b]Note :[/b] Les chemins des ressources peuvent être obtenus en faisant un "
-"clic droit sur une ressource dans la barre d'outils du système de fichiers et "
-"en choisissant \"Copier le chemin\", ou en déplaçant le fichier du système de "
-"fichiers vers le script actuel.\n"
-"[codeblock]\n"
-"# Charge une scène appelée \"main\" située dans la racine du répertoire du "
-"projet et la stocke dans une variable.\n"
-"var main = load(\"res://main.tscn\") # main contiendra une ressource "
-"PackedScene.\n"
-"[/codeblock]\n"
-"[b]Important :[/b] Le chemin doit être absolu. Un chemin relatif retournera "
-"toujours [code]null[/code].\n"
-"Cette fonction est une version simplifiée de [method ResourceLoader.load], "
-"qui peut être utilisée pour des scénarios plus avancés.\n"
-"[b]Note :[/b] Les fichiers doivent être importés dans le moteur de jeu en "
-"premier pour qu'ils soient chargés en utilisant cette fonction. Si vous "
-"voulez importer des [Image]s au run-time, vous pouvez utiliser [method Image."
-"load]. Si vous voulez importer des fichiers audios, vous pouvez utiliser "
-"l'extrait décrit dans [member AudioStreamMP3.data].\n"
-"[b]Note :[/b] Si [member ProjectSettings.editor/export/"
-"convert_text_resources_to_binary] est [code]true[/code], [method @GDScript."
-"load] ne pourra pas lire les fichiers convertis dans un projet exporté. Si "
-"vous comptez sur le chargement au moment de l'exécution des fichiers présents "
-"dans le PCK, définissez [member ProjectSettings.editor/export/"
-"convert_text_resources_to_binary] sur [code]false[/code]."
-
-msgid ""
-"Returns a [Resource] from the filesystem located at [param path]. During run-"
-"time, the resource is loaded when the script is being parsed. This function "
-"effectively acts as a reference to that resource. Note that this function "
-"requires [param path] to be a constant [String]. If you want to load a "
-"resource from a dynamic/variable path, use [method load].\n"
-"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource "
-"in the Assets Panel and choosing \"Copy Path\", or by dragging the file from "
-"the FileSystem dock into the current script.\n"
-"[codeblock]\n"
-"# Create instance of a scene.\n"
-"var diamond = preload(\"res://diamond.tscn\").instantiate()\n"
-"[/codeblock]"
-msgstr ""
-"Retourne la [Resource] localisée à [param path] dans le système de fichiers. "
-"Pendant le run-time, la ressource est chargée lors de la lecture initiale du "
-"script. Cette fonction agit efficacement comme une référence à cette "
-"ressource. Notez que cette méthode nécessite que [param path] soit un "
-"[String] constant. Si vous voulez charger une ressource depuis un chemin "
-"variable/dynamique, utilisez [method load].\n"
-"[b]Note :[/b] Les chemins des ressources peuvent être obtenus en cliquant "
-"avec le bouton droit sur la ressource dans la fenêtre des Assets puis en "
-"choisissant \"Copier le chemin\", ou en faisant glisser le fichier depuis la "
-"fenêtre \"Système de fichiers\" vers le script courant.\n"
-"[codeblock]\n"
-"# Instancie une scène.\n"
-"var diamant = preload(\"res://diamant.tscn\").instantiate()\n"
-"[/codeblock]"
-
-msgid ""
-"Like [method @GlobalScope.print], but includes the current stack frame when "
-"running with the debugger turned on.\n"
-"The output in the console may look like the following:\n"
-"[codeblock]\n"
-"Test print\n"
-"At: res://test.gd:15:_process()\n"
-"[/codeblock]\n"
-"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing so "
-"will instead print the thread ID."
-msgstr ""
-"Comme [method @GlobalScope.print], mais inclus l'image de la pile actuelle "
-"quand le débogueur est activé.\n"
-"La sortie dans la console ressemblerait à ceci :\n"
-"[codeblock]\n"
-"Test print\n"
-"At: res://test.gd:15:_process()\n"
-"[/codeblock]\n"
-"[b]Note : [/b] Appeler cette fonction depuis un [Thread] n'est pas supporté. "
-"Le faire imprimerait alors l'ID du thread."
-
-msgid ""
-"Prints a stack trace at the current code location. See also [method "
-"get_stack].\n"
-"The output in the console may look like the following:\n"
-"[codeblock]\n"
-"Frame 0 - res://test.gd:16 in function '_process'\n"
-"[/codeblock]\n"
-"[b]Note:[/b] This function only works if the running instance is connected to "
-"a debugging server (i.e. an editor instance). [method print_stack] will not "
-"work in projects exported in release mode, or in projects exported in debug "
-"mode if not connected to a debugging server.\n"
-"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing so "
-"will instead print the thread ID."
-msgstr ""
-"Affiche une trace d'appels à l'endroit actuel du code. Voir également [method "
-"get_stack].\n"
-"Le résultat dans le terminal pourrait ressembler à ci-dessous :\n"
-"[codeblock]\n"
-"Frame 0 - res://test.gd:16 in function '_process'\n"
-"[/codeblock]\n"
-"[b]Note :[/b] Cette fonction fonctionne uniquement si l'instance en cours "
-"d’exécution est connectée à un serveur de débogage (par ex. une instance "
-"d'éditeur). [method print_stack] ne fonctionnera pas dans les projets "
-"exportés en mode publication, ou dans des projets exportés en mode débogage "
-"s'il n'est pas connecté à un serveur de débogage.\n"
-"[b]Note :[/b] Appeler cette fonction depuis un [Thread] n'est pas supporté. "
-"Le faire ainsi écrira à la place l'ID du fil d'exécution."
-
-msgid ""
-"Returns an array with the given range. [method range] can be called in three "
-"ways:\n"
-"[code]range(n: int)[/code]: Starts from 0, increases by steps of 1, and stops "
-"[i]before[/i] [code]n[/code]. The argument [code]n[/code] is [b]exclusive[/"
-"b].\n"
-"[code]range(b: int, n: int)[/code]: Starts from [code]b[/code], increases by "
-"steps of 1, and stops [i]before[/i] [code]n[/code]. The arguments [code]b[/"
-"code] and [code]n[/code] are [b]inclusive[/b] and [b]exclusive[/b], "
-"respectively.\n"
-"[code]range(b: int, n: int, s: int)[/code]: Starts from [code]b[/code], "
-"increases/decreases by steps of [code]s[/code], and stops [i]before[/i] "
-"[code]n[/code]. The arguments [code]b[/code] and [code]n[/code] are "
-"[b]inclusive[/b] and [b]exclusive[/b], respectively. The argument [code]s[/"
-"code] [b]can[/b] be negative, but not [code]0[/code]. If [code]s[/code] is "
-"[code]0[/code], an error message is printed.\n"
-"[method range] converts all arguments to [int] before processing.\n"
-"[b]Note:[/b] Returns an empty array if no value meets the value constraint (e."
-"g. [code]range(2, 5, -1)[/code] or [code]range(5, 5, 1)[/code]).\n"
-"Examples:\n"
-"[codeblock]\n"
-"print(range(4)) # Prints [0, 1, 2, 3]\n"
-"print(range(2, 5)) # Prints [2, 3, 4]\n"
-"print(range(0, 6, 2)) # Prints [0, 2, 4]\n"
-"print(range(4, 1, -1)) # Prints [4, 3, 2]\n"
-"[/codeblock]\n"
-"To iterate over an [Array] backwards, use:\n"
-"[codeblock]\n"
-"var array = [3, 6, 9]\n"
-"for i in range(array.size() - 1, -1, -1):\n"
-" print(array[i])\n"
-"[/codeblock]\n"
-"Output:\n"
-"[codeblock]\n"
-"9\n"
-"6\n"
-"3\n"
-"[/codeblock]\n"
-"To iterate over [float], convert them in the loop.\n"
-"[codeblock]\n"
-"for i in range (3, 0, -1):\n"
-" print(i / 10.0)\n"
-"[/codeblock]\n"
-"Output:\n"
-"[codeblock]\n"
-"0.3\n"
-"0.2\n"
-"0.1\n"
-"[/codeblock]"
-msgstr ""
-"Retourne un tableau avec l'intervalle donnée. [method range] peut être appelé "
-"de trois façons :\n"
-"[code]range(n: int)[/code] : Commence à 0, augmente par étape de 1, et "
-"s'arrête [i]avant[/i] [code]n[/code]. L'argument [code]n[/code] est "
-"[b]exclusif[/b].\n"
-"[code]range(b: int, n: int)[/code] : Commence à [code]b[/code], augmente par "
-"étape de 1, et s'arrête [i]avant[/i] [code]n[/code]. L'argument [code]b[/"
-"code] est [b]inclusif[/b], et [code]n[/code] est [b]exclusif[/b], "
-"respectivement.\n"
-"[code]range(b: int, n: int, s: int)[/code] : Commence à [code]b[/code], "
-"augmente/diminue par étape de [code]s[/code], et s'arrête [i]avant[/i] "
-"[code]n[/code]. Les arguments [code]b[/code] et [code]n[/code] sont "
-"[b]inclusifs[/b], et [code]n[/code] est [b]exclusif[/b]. L'argument [code]s[/"
-"code] [b]peut[/b] être négatif, mais pas [code]0[/code]. Si [code]s[/code] "
-"est [code]0[/code], un message d'erreur est affiché.\n"
-"[method range] convertit tous les arguments en [int] avant le traitement.\n"
-"[b]Note :[/b] Retourne un tableau vide si aucune valeur ne respecte les "
-"contraintes (par ex. [code]range(2, 5, -1)[/code] ou [code]range(5, 5, 1)[/"
-"code]).\n"
-"Exemples :\n"
-"[codeblock]\n"
-"print(range(4)) # Affiche [0, 1, 2, 3]\n"
-"print(range(2, 5)) # Affiche [2, 3, 4]\n"
-"print(range(0, 6, 2)) # Affiche [0, 2, 4]\n"
-"print(range(4, 1, -1)) # Affiche [4, 3, 2]\n"
-"[/codeblock]\n"
-"Pour parcourir un [Array] à l'envers, utilisez :\n"
-"[codeblock]\n"
-"var array = [3, 6, 9]\n"
-"for i in range(array.size() - 1, -1, -1):\n"
-" print(array[i])\n"
-"[/codeblock]\n"
-"En sortie :\n"
-"[codeblock]\n"
-"9\n"
-"6\n"
-"3\n"
-"[/codeblock]\n"
-"Pour itérer sur un [float], convertissez les dans la boucle.\n"
-"[codeblock]\n"
-"for i in range (3, 0, -1):\n"
-" print(i / 10.0)\n"
-"[/codeblock]\n"
-"En sortie :\n"
-"[codeblock]\n"
-"0.3\n"
-"0.2\n"
-"0.1\n"
-"[/codeblock]"
-
-msgid ""
"Returns [code]true[/code] if the given [Object]-derived class exists in "
"[ClassDB]. Note that [Variant] data types are not registered in [ClassDB].\n"
"[codeblock]\n"
@@ -1012,362 +587,12 @@ msgstr ""
"@export var hp = 30\n"
"@export var speed = 1.25\n"
"[/codeblock]\n"
-"[b]Note:[/b] Les catégories dans la liste de l'Inspector Dock divisent "
+"[b]Note :[/b] Les catégories dans la liste de l'Inspector Dock divisent "
"généralement les propriétés provenant de différentes classes (Node, Node2D, "
"Sprite, etc.). Pour plus de clarté, il est recommandé d'utiliser plutôt "
"[annotation @export_group] et [annotation @export_subgroup]."
msgid ""
-"Export a [Color] property without allowing its transparency ([member Color."
-"a]) to be edited.\n"
-"See also [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n"
-"[codeblock]\n"
-"@export_color_no_alpha var dye_color: Color\n"
-"[/codeblock]"
-msgstr ""
-"Exporter une propriété [Color] sans permettre l'édition de sa transparence "
-"([membre Color.a]).\n"
-"Voir aussi [constante PROPERTY_HINT_COLOR_NO_ALPHA].\n"
-"[codeblock]\n"
-"@export_color_no_alpha var dye_color: Color\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as a path to a directory. The path will be limited "
-"to the project folder and its subfolders. See [annotation @export_global_dir] "
-"to allow picking from the entire filesystem.\n"
-"See also [constant PROPERTY_HINT_DIR].\n"
-"[codeblock]\n"
-"@export_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété [String] en tant que chemin d'accès à un répertoire. Le "
-"chemin sera limité au dossier du projet et à ses sous-dossiers. Voir "
-"[annotation @export_global_dir] pour permettre de choisir dans l'ensemble du "
-"système de fichiers.\n"
-"Voir aussi [constante PROPERTY_HINT_DIR].\n"
-"[codeblock]\n"
-"@export_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-
-msgid ""
-"Export 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_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"
-"If you want to set an initial value, you must specify it explicitly:\n"
-"[codeblock]\n"
-"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = "
-"\"Rebecca\"\n"
-"[/codeblock]\n"
-"If you want to use named GDScript enums, then use [annotation @export] "
-"instead:\n"
-"[codeblock]\n"
-"enum CharacterName {REBECCA, MARY, LEAH}\n"
-"@export var character_name: CharacterName\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété [int] ou [String] sous la forme d'une liste énumérative "
-"d'options. Si la propriété est un [int], l'index de la valeur est stocké, "
-"dans l'ordre dans lequel les valeurs sont fournies. Vous pouvez ajouter des "
-"valeurs explicites à l'aide de deux points. Si la propriété est un [String], "
-"la valeur est stockée.\n"
-"Voir aussi [constante PROPERTY_HINT_ENUM].\n"
-"[codeblock]\n"
-"@export_enum(\"Guerrier\", \"Magicien\", \"Voleur\") var character_class : "
-"int\n"
-"@export_enum(\"Lent :30\", \"Moyen :60\", \"Très rapide :200\") var "
-"character_speed : int\n"
-"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name : String\n"
-"[/codeblock]\n"
-"Si vous souhaitez définir une valeur initiale, vous devez la spécifier "
-"explicitement :\n"
-"[codeblock]\n"
-"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name : String = "
-"\"Rebecca\"\n"
-"[/codeblock]\n"
-"Si vous souhaitez utiliser des enums GDScript nommés, utilisez plutôt "
-"[annotation @export] :\n"
-"[codeblock]\n"
-"enum CharacterName {REBECCA, MARY, LEAH}\n"
-"@export var character_name : CharacterName\n"
-"[/codeblock]"
-
-msgid ""
-"Export a floating-point property with an easing editor widget. Additional "
-"hints can be provided to adjust the behavior of the widget. "
-"[code]\"attenuation\"[/code] flips the curve, which makes it more intuitive "
-"for editing attenuation properties. [code]\"positive_only\"[/code] limits "
-"values to only be greater than or equal to zero.\n"
-"See also [constant PROPERTY_HINT_EXP_EASING].\n"
-"[codeblock]\n"
-"@export_exp_easing var transition_speed\n"
-"@export_exp_easing(\"attenuation\") var fading_attenuation\n"
-"@export_exp_easing(\"positive_only\") var effect_power\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété nombre à virgule avec un widget d'éditeur de courbe. "
-"Des aides additionnelles peuvent être ajoutées pour ajuster le comportement "
-"de ce widget. [code]\"attenuation\"[/code] retourne la courbe, ce qui la rend "
-"plus intuitive pour éditer des propriétés d'atténuation. "
-"[code]\"positive_only\"[/code] oblige les valeurs à être supérieures ou "
-"égales à zéro.\n"
-"Voir aussi [constant PROPERTY_HINT_EXP_EASING].\n"
-"[codeblock]\n"
-"@export_exp_easing var transition_speed\n"
-"@export_exp_easing(\"attenuation\") var fading_attenuation\n"
-"@export_exp_easing(\"positive_only\") var effect_power\n"
-"[/codeblock]"
-
-msgid ""
-"Export 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"
-"[codeblock]\n"
-"@export_file var sound_effect_path: String\n"
-"@export_file(\"*.txt\") var notes_path: String\n"
-"[/codeblock]"
-msgstr ""
-"Exporter une propriété [String] en tant que chemin vers un fichier. Le chemin "
-"sera limité au dossier de projet et ses sous-dossiers. Voir [annotation "
-"@export_global_file] pour autoriser la sélection depuis l'ensemble du système "
-"de fichiers.\n"
-"Si [param filter] est fourni, seuls les fichiers correspondants seront "
-"disponible à la sélection.\n"
-"Voir également [constant PROPERTY_HINT_FILE].\n"
-"[codeblock]\n"
-"@export_file var sound_effect_path: String\n"
-"@export_file(\"*.txt\") var notes_path: String\n"
-"[/codeblock]"
-
-msgid ""
-"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_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 ""
-"Exporte une propriété entière en tant que champ de bit flag. Cela permet de "
-"stocker plusieurs valeurs \"vérifiée\" ou [code]true[/code] avec une "
-"propriété, et de les sélectionner aisément depuis la barre d'outils de "
-"l'Inspecteur.\n"
-"Voir également [constant PROPERTY_HINT_FLAGS].\n"
-"[codeblock]\n"
-"@export_flags(\"Feu\", \"Eau\", \"Terre\", \"Vent\") var éléments_sort = 0\n"
-"[/codeblock]\n"
-"Vous pouvez ajouter des valeurs explicites en utilisant les deux-points :\n"
-"[codeblock]\n"
-"@export_flags(\"Soi:4\", \"Alliés:8\", \"Ennemis:16\") var cibles_sort = 0\n"
-"[/codeblock]\n"
-"Vous pouvez aussi combiner plusieurs options :\n"
-"[codeblock]\n"
-"@export_flags(\"Soi:4\", \"Alliés:8\", \"Alliés et soi:12\", \"Ennemis:16\")\n"
-"var cibles_sort = 0\n"
-"[/codeblock]\n"
-"[b]Note :[/b] Une valeur de drapeau doit être au minimum [code]1[/code] et au "
-"maximum [code]2 ** 32 - 1[/code].\n"
-"[b]Note :[/b] Contrairement à [annotation @export_enum], la valeur explicite "
-"précédente n'est pas prise en compte. Dans l'exemple suivant, A est 16, B est "
-"2, C est 4.\n"
-"[codeblock]\n"
-"@export_flags(\"A:16\", \"B\", \"C\") var x\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D navigation layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_navigation/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_2d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété entière en tant qu'une option, un champ bit pour les "
-"calques de navigation 2D. Le widget dans la barre d'outils de l'Inspecteur "
-"utilisera les noms des calques définis dans [member ProjectSettings."
-"layer_names/2d_navigation/layer_1].\n"
-"Voir également [constant PROPERTY_HINT_LAYERS_2D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_2d_navigation var navigation_layers : int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D physics layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_physics/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_2d_physics var physics_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporter une propriété entière sous forme de champ d'indicateur de bits pour "
-"les couches physiques 2D. Le widget dans la barre d'outils de l'Inspecteur "
-"utilisera les noms des calques définis dans [member ProjectSettings."
-"layer_names/2d_physics/layer_1].\n"
-"Voir également [constant PROPERTY_HINT_LAYERS_2D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_2d_physics var physics_layers : int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D render layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_render/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_2d_render var render_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété entière en tant qu'un champ drapeau bit pour le calques "
-"de rendu 2D. Le widget dans la barre d'outils de l'Inspecteur utilisera les "
-"noms des calques définis dans [member ProjectSettings.layer_names/2d_render/"
-"layer_1].\n"
-"Voir également [constant PROPERTY_HINT_LAYERS_2D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_2d_render var render_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D navigation layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_navigation/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_3d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété [int] en tant que champ de bits pour des couches de "
-"navigation 3D. Le widget dans le dock Inspecteur utilisera les noms de couche "
-"définis dans [member ProjectSettings.layer_names/3d_navigation/layer_1].\n"
-"Voir aussi [constant PROPERTY_HINT_LAYDERS_3D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_3d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D physics layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_physics/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_3d_physics var physics_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété [int] en tant que champ de bits pour couches physiques "
-"3D. Le widget dans le dock Inspecteur utilisera les noms de couches définis "
-"dans [member ProjectSettings.layer_names/3d_physics/layer_1].\n"
-"Voir aussi [constant PROPERTY_HINT_LAYERS_3D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_3d_physics var physics_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D render layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_render/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_3d_render var render_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété [int] en tant que champ de bits pour des couches de "
-"rendu 3D. Le widget dans le dock Inspecteur utilisera les noms de couches "
-"définis dans [member ProjectSettings.layer_names/3d_render/layer_1].\n"
-"Voir aussi [constant PROPERTY_HINT_LAYERS_3D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_3d_render var render_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for navigation avoidance "
-"layers. The widget in the Inspector dock will use the layer names defined in "
-"[member ProjectSettings.layer_names/avoidance/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_AVOIDANCE].\n"
-"[codeblock]\n"
-"@export_flags_avoidance var avoidance_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété entière en tant qu'une option, un champ bit pour les "
-"calques de navigation 2D. Le widget dans la barre d'outils de l'Inspecteur "
-"utilisera les noms des calques définis dans [member ProjectSettings."
-"layer_names/2d_navigation/layer_1].\n"
-"Voir également [constant PROPERTY_HINT_LAYERS_2D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_2d_navigation var navigation_layers : int\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as an absolute 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_path: String\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété [String] en tant que chemin absolu vers un dossier. Le "
-"chemin peut être sélectionné depuis l'entièreté du système de fichiers. Voir "
-"[annotation @export_dir] pour le limiter au dossier du projet et ses sous-"
-"dossiers.\n"
-"Voir aussi [constant PROPERTY_HINT_GLOBAL_DIR].\n"
-"[codeblock]\n"
-"@export_global_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as an absolute 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_path: String\n"
-"@export_global_file(\"*.txt\") var notes_path: String\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété [String] en tant que chemin absolu à un fichier. Le "
-"chemin peut être sélectionné depuis l'entièreté du système de fichiers. Voir "
-"[annotation @export_file] afin de le limiter au dossier du projet et ses sous-"
-"dossiers.\n"
-"Si [param filter] est fourni, seul les fichiers correspondant seront "
-"disponibles à la sélection.\n"
-"Voir aussi [constant PROPERTY_HINT_GLOBAL_FILE].\n"
-"[codeblock]\n"
-"@export_global_file var sound_effect_path: String\n"
-"@export_global_file(\"*.txt\") var notes_path: 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 "
@@ -1423,57 +648,6 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Export a [String] property with a large [TextEdit] widget instead of a "
-"[LineEdit]. This adds support for multiline content and makes it easier to "
-"edit large amount of text stored in the property.\n"
-"See also [constant PROPERTY_HINT_MULTILINE_TEXT].\n"
-"[codeblock]\n"
-"@export_multiline var character_biography\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété [String] avec un widget [TextEdit] large à la place "
-"d'un [LineEdit]. Cela ajoute du support pour un contenu multi-ligne et rend "
-"plus facile l'édition de beaucoup de texte stocké dans la propriété.\n"
-"Voir également [constant PROPERTY_HINT_MULTILINE_TEXT].\n"
-"[codeblock]\n"
-"@export_multiline var character_biography\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [NodePath] property with a filter for allowed node types.\n"
-"See also [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n"
-"[codeblock]\n"
-"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n"
-"[/codeblock]\n"
-"[b]Note:[/b] The type must be a native class or a globally registered script "
-"(using the [code]class_name[/code] keyword) that inherits [Node]."
-msgstr ""
-"Exporte une propriété [NodePath] avec un filtre pour les types de nœud "
-"autorisés.\n"
-"Voir également [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n"
-"[codeblock]\n"
-"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n"
-"[/codeblock]\n"
-"[b]Note:[/b] Le type doit être une classe native ou un script enregistré "
-"globalement (utilisant le mot-clé [code]class_name[/code] ) qui hérite de "
-"[Node]."
-
-msgid ""
-"Export a [String] property with a placeholder text displayed in the editor "
-"widget when no value is present.\n"
-"See also [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n"
-"[codeblock]\n"
-"@export_placeholder(\"Name in lowercase\") var character_id: String\n"
-"[/codeblock]"
-msgstr ""
-"Exporte une propriété [String] avec un emplacement réservé de texte affiché "
-"dans le widget d'éditeur widget quand aucune valeur n'est présente.\n"
-"Voir également [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n"
-"[codeblock]\n"
-"@export_placeholder(\"Nom en minuscule\") var id_personnage: String\n"
-"[/codeblock]"
-
-msgid ""
"Add a custom icon to the current script. The icon specified at [param "
"icon_path] is displayed in the Scene dock for every node of that class, as "
"well as in various editor dialogs.\n"
@@ -1498,20 +672,11 @@ msgstr ""
"[b]Note:[/b] Comme les annotations décrivent leur sujet, l'[annotation "
"@icon] annotation doit être placée avant la définition de la classes et de "
"son héritage.\n"
-"[b]Note:[/b] Contrairement aux autres annotations, le paramètre de "
-"l' [annotation @icon] annotation doit être un string litéral (expressions "
+"[b]Note:[/b] Contrairement aux autres annotations, le paramètre de l' "
+"[annotation @icon] annotation doit être un string litéral (expressions "
"constantes ne sont pas supportées)."
msgid ""
-"Make a script with static variables to not persist after all references are "
-"lost. If the script is loaded again the static variables will revert to their "
-"default values."
-msgstr ""
-"Créez un script avec des variables statiques pour ne pas persister après la "
-"perte de toutes les références. Si le script est rechargé, les variables "
-"statiques reviendront à leurs valeurs par défaut."
-
-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"
@@ -1695,6 +860,21 @@ msgstr ""
"var b = clampi(speed, -1, 1) # b vaut -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 ""
+"Retourne le cosinus de l'angle [code]s[/code] en radians.\n"
+"[codeblock]\n"
+"a = cos(TAU) # a vaut 1.0\n"
+"a = cos(PI) # a vaut -1.0\n"
+"a = cos(deg_to_rad(90)) # a vaut 0.0\n"
+"[/codeblock]"
+
msgid "Converts from decibels to linear energy (audio)."
msgstr "Convertit les décibels en énergie linéaire (audio)."
@@ -2802,9 +1982,6 @@ msgstr "Valeur maximale pour le mode énumeration."
msgid "3D Physics Tests Demo"
msgstr "Démo de tests physiques en 3D"
-msgid "Third Person Shooter Demo"
-msgstr "Démo de tir à la troisième personne"
-
msgid "3D Voxel Demo"
msgstr "Démo voxel 3D"
@@ -3296,9 +2473,6 @@ msgstr "Arrête l’animation en cours de lecture."
msgid "The transition type."
msgstr "Le type de transition."
-msgid "The time to cross-fade between this state and the next."
-msgstr "La durée du fondu entre cet état et le suivant."
-
msgid "Emitted when [member advance_condition] is changed."
msgstr "Émis quand [member advance_condition] est changé."
@@ -3392,6 +2566,12 @@ msgid "The name of the area's audio bus."
msgstr "Le nom du bus audio de l'aire."
msgid ""
+"If [code]true[/code], the area's audio bus overrides the default audio bus."
+msgstr ""
+"Si [code]true[/code], le bus audio de la zone remplace le bus audio par "
+"défaut."
+
+msgid ""
"The rate at which objects stop moving in this area. Represents the linear "
"velocity lost per second.\n"
"See [member ProjectSettings.physics/2d/default_linear_damp] for more details "
@@ -3417,9 +2597,6 @@ msgstr ""
msgid "This area does not affect gravity/damping."
msgstr "Cette aire n'influe pas sur la gravité/amortissement."
-msgid "GUI in 3D Demo"
-msgstr "Démo d'interface graphique en 3D"
-
msgid ""
"The rate at which objects stop spinning in this area. Represents the angular "
"velocity lost per second.\n"
@@ -3738,20 +2915,6 @@ msgid "Returns the number of points currently in the points pool."
msgstr "Retourne le nombre de points actuellement dans le pool de points."
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 ""
-"Retourne un tableau avec les points qui sont dans le chemin trouvé par "
-"AStar2D entre les points données. Le tableau est dans l'ordre du point de "
-"départ jusqu'au point d'arrivée.\n"
-"[b]Note :[/b] Cette méthode n'est pas thread-safe. Si appelé depuis un "
-"[Thread], elle retournera un [PackedVector2Array] vide et affichera un "
-"message d'erreur."
-
-msgid ""
"Returns whether a point is disabled or not for pathfinding. By default, all "
"points are enabled."
msgstr ""
@@ -3762,38 +2925,12 @@ msgid ""
"Removes the point associated with the given [param id] from the points pool."
msgstr "Retire le point associé à l'[param id] donné du pool des points."
-msgid ""
-"Returns an array with the points that are in the path found by AStar3D "
-"between the given points. The array is ordered from the starting point to the "
-"ending point of the path.\n"
-"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it "
-"will return an empty [PackedVector3Array] and will print an error message."
-msgstr ""
-"Retourne un tableau avec les points qui sont dans le chemin trouvé par "
-"AStar3D entre les points données. Le tableau est dans l'ordre du point de "
-"départ jusqu'au point final du chemin.\n"
-"[b]Note :[/b] Cette méthode n'est pas thread-safe. Si appelé depuis un "
-"[Thread], elle retournera un [PackedVector3Array] vide et affichera un "
-"message d'erreur."
-
-msgid ""
-"Returns an array with the IDs of the points that form the path found by "
-"AStar2D between the given points. The array is ordered from the starting "
-"point to the ending point of the path."
-msgstr ""
-"Retourne un tableau avec les identifiants des points qui forment le chemin "
-"trouvé par AStar2D entre les points donnés. Le tableau est dans l'ordre du "
-"point de départ jusqu'au point final du chemin."
-
msgid "Stores information about the audio buses."
msgstr "Stocke de l'information sur les bus audio."
msgid "Audio buses"
msgstr "Bus audio"
-msgid "Audio Mic Record Demo"
-msgstr "Démo d'enregistrement du microphone"
-
msgid "Increases or decreases the volume being routed through the audio bus."
msgstr "Augmente ou diminue le volume passé au bus audio."
@@ -4232,12 +3369,6 @@ msgstr ""
"Si [code]true[/code], le son sera enregistré. Notez que le redémarrage de "
"l'enregistrement supprimera l'échantillon précédemment enregistré."
-msgid "Audio Spectrum Demo"
-msgstr "Démo de spectre audio"
-
-msgid "Godot 3.2 will get new audio features"
-msgstr "Godot 3.2 aura ces nouvelles fonctionnalités audio"
-
msgid "Use the average value as magnitude."
msgstr "Utiliser la valeur moyenne comme magnitude."
@@ -4384,9 +3515,15 @@ msgstr ""
"Cette classe est destinée à être utilisée avec un [AudioStreamGenerator] pour "
"lire l'audio généré en temps réel."
+msgid "Godot 3.2 will get new audio features"
+msgstr "Godot 3.2 aura ces nouvelles fonctionnalités audio"
+
msgid "Clears the audio sample data buffer."
msgstr "Efface la mémoire tampon des échantillons audio."
+msgid "Audio Mic Record Demo"
+msgstr "Démo d'enregistrement du microphone"
+
msgid "MP3 audio stream driver."
msgstr "Le pilote de flux audio MP3."
@@ -4403,57 +3540,6 @@ msgstr "Le temps en secondes où le flux commence après avoir bouclé."
msgid "Meta class for playing back audio."
msgstr "Classe méta pour la lecture audio."
-msgid "Plays back audio non-positionally."
-msgstr "Lit l'audio de manière non positionnée."
-
-msgid ""
-"Plays an audio stream non-positionally.\n"
-"To play audio positionally, use [AudioStreamPlayer2D] or "
-"[AudioStreamPlayer3D] instead of [AudioStreamPlayer]."
-msgstr ""
-"Joue un flux audio indépendamment de la position.\n"
-"Pour jouer audio en fonction de la position, utilisez [AudioStreamPlayer2D] "
-"ou [AudioStreamPlayer3D] au lieu de [AudioStreamPlayer]."
-
-msgid "Returns the position in the [AudioStream] in seconds."
-msgstr "Retourne la position dans le [AudioStream] en secondes."
-
-msgid ""
-"Returns the [AudioStreamPlayback] object associated with this "
-"[AudioStreamPlayer]."
-msgstr ""
-"Retourne l'objet [AudioStreamPlayback] associé à ce [AudioStreamPlayer]."
-
-msgid "Stops the audio."
-msgstr "Arrête l'audio."
-
-msgid "If [code]true[/code], audio plays when added to scene tree."
-msgstr ""
-"Si [code]true[/code], il commence à jouer dès qu'il est ajouté à l'arbre des "
-"scènes."
-
-msgid "If [code]true[/code], audio is playing."
-msgstr "Si [code]true[/code], l'audio est en cours de lecture."
-
-msgid "The [AudioStream] object to be played."
-msgstr "L'objet [AudioStream] à jouer."
-
-msgid ""
-"If [code]true[/code], the playback is paused. You can resume it by setting "
-"[member stream_paused] to [code]false[/code]."
-msgstr ""
-"Si [code]true[/code], la lecture est en pause. Vous pouvez la reprendre en "
-"définissant [member stream_paused] à [code]false[/code]."
-
-msgid "Volume of sound, in dB."
-msgstr "Le volume du son, en décibels (dB)."
-
-msgid "Emitted when the audio stops playing."
-msgstr "Émis quand l'audio a fini de jouer."
-
-msgid "The audio will be played only on the first channel."
-msgstr "L'audio ne sera joué que sur le premier canal."
-
msgid "The audio will be played on all surround channels."
msgstr "L'audio sera joué sur tous les canaux surround."
@@ -4474,6 +3560,9 @@ msgid ""
msgstr ""
"Retourne l'objet [AudioStreamPlayback] associé avec cet [AudioStreamPlayer2D]."
+msgid "Stops the audio."
+msgstr "Arrête l'audio."
+
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 "
@@ -4488,9 +3577,27 @@ msgstr ""
"zone \"eau\" de sorte que les sons joués dans l'eau sont redirigés par un bus "
"audio pour les faire sonner comme ils étaient joués sous l'eau."
+msgid "If [code]true[/code], audio plays when added to scene tree."
+msgstr ""
+"Si [code]true[/code], il commence à jouer dès qu'il est ajouté à l'arbre des "
+"scènes."
+
msgid "Maximum distance from which audio is still hearable."
msgstr "Distance maximale à laquelle cette piste audio peut être entendue."
+msgid "The [AudioStream] object to be played."
+msgstr "L'objet [AudioStream] à jouer."
+
+msgid ""
+"If [code]true[/code], the playback is paused. You can resume it by setting "
+"[member stream_paused] to [code]false[/code]."
+msgstr ""
+"Si [code]true[/code], la lecture est en pause. Vous pouvez la reprendre en "
+"définissant [member stream_paused] à [code]false[/code]."
+
+msgid "Emitted when the audio stops playing."
+msgstr "Émis quand l'audio a fini de jouer."
+
msgid "Plays positional sound in 3D space."
msgstr "Joue un son localisé dans un espace 3D."
@@ -5110,9 +4217,6 @@ msgstr "Utiliser les transformations 3D"
msgid "Matrix Transform Demo"
msgstr "Démo de transformation matricielle"
-msgid "2.5D Demo"
-msgstr "Démo 2,5D"
-
msgid "Boolean matrix."
msgstr "Matrice booléenne."
@@ -5171,9 +4275,6 @@ msgstr ""
msgid "3D Kinematic Character Demo"
msgstr "Démo de personnage cinématique en 3D"
-msgid "OS Test Demo"
-msgstr "Démo de test des fonctions OS (système d'exploitation)"
-
msgid ""
"When this property is enabled, text that is too large to fit the button is "
"clipped, when disabled the Button will always be wide enough to hold the text."
@@ -5256,9 +4357,6 @@ msgstr "Nœud de caméra pour les scènes en 2D."
msgid "2D Isometric Demo"
msgstr "Démo 2D isométrique"
-msgid "2D HDR Demo"
-msgstr "Démo de plage dynamique étendue (HDR) en 2D"
-
msgid "Aligns the camera to the tracked node."
msgstr "Aligne la caméra sur le nœud suivi."
@@ -5508,21 +4606,6 @@ msgid "Server keeping track of different cameras accessible in Godot."
msgstr ""
"Le serveur garde la liste des différentes caméras accessibles dans Godot."
-msgid ""
-"The [CameraServer] keeps track of different cameras accessible in Godot. "
-"These are external cameras such as webcams or the cameras on your phone.\n"
-"It is notably used to provide AR modules with a video feed from the camera.\n"
-"[b]Note:[/b] This class is currently only implemented on macOS and iOS. On "
-"other platforms, no [CameraFeed]s will be available."
-msgstr ""
-"Le [CameraServer] garde en mémoire de différentes caméras accessibles dans "
-"Godot. Ce sont des caméras externes telles que des webcams ou les caméras sur "
-"votre téléphone.\n"
-"Ce serveur est notamment utilisé pour fournir des flux vidéo venant de la "
-"caméra aux modules AR.\n"
-"[b]Note :[/b] Cette classe n'est actuellement implémentée que sur macOS et "
-"iOS. Sur les autres plates-formes, aucun [CameraFeed] ne sera disponible."
-
msgid "Returns an array of [CameraFeed]s."
msgstr "Retourne un tableau de [CameraFeed]s."
@@ -6110,9 +5193,6 @@ msgstr "Une forme de collision désactivée n’a aucun effet dans le monde."
msgid "2D GD Paint Demo"
msgstr "Démo 2D « GD Paint »"
-msgid "Tween Demo"
-msgstr "Démo des Tween"
-
msgid "GUI Drag And Drop Demo"
msgstr "Démo de glisser-déplacer dans une interface graphique"
@@ -6827,18 +5907,6 @@ msgstr ""
"Mieux utilisé avec [constant Node.NOTIFICATION_DRAG_END]."
msgid ""
-"The minimum size of the node's bounding rectangle. If you set it to a value "
-"greater than (0, 0), the node's bounding rectangle will always have at least "
-"this size, even if its content is smaller. If it's set to (0, 0), the node "
-"sizes automatically to fit its content, be it a texture or child nodes."
-msgstr ""
-"La taille minimale du rectangle englobant. Si vous le fixez à une valeur "
-"supérieure à (0, 0), le rectangle englobant du nœud aura toujours au moins "
-"cette taille, même si son contenu est plus petit. Si cette taille est à (0, "
-"0), le nœud sera redimensionné automatiquement pour s'adapter à son contenu, "
-"qu'il s'agisse d'une texture ou d'un nœud enfant."
-
-msgid ""
"Controls the direction on the horizontal axis in which the control should "
"grow if its horizontal minimum size is changed to be greater than its current "
"size, as the control always has to be at least the minimum size."
@@ -6995,31 +6063,6 @@ msgid "Sent when the node loses focus."
msgstr "Envoyé lorsque le nœud perd le focus."
msgid ""
-"Sent when the node needs to refresh its theme items. This happens in one of "
-"the following cases:\n"
-"- The [member theme] property is changed on this node or any of its "
-"ancestors.\n"
-"- The [member theme_type_variation] property is changed on this node.\n"
-"- One of the node's theme property overrides is changed.\n"
-"- The node enters the scene tree.\n"
-"[b]Note:[/b] As an optimization, this notification won't be sent from changes "
-"that occur while this node is outside of the scene tree. Instead, all of the "
-"theme item updates can be applied at once when the node enters the scene tree."
-msgstr ""
-"Envoyé si le nœud a besoin de rafraîchir ses éléments de thème. Cela se passe "
-"dans l'un des cas suivants :\n"
-"- La propriété [member theme] est changée sur ce nœud ou sur un de ses "
-"ancêtres.\n"
-"- La propriété [member theme_type_variation] est changée sur ce nœud.\n"
-"- Une des surcharges d'une propriété de thème est changée pour ce nœud.\n"
-"- Le nœud entre la hiérarchie de la scène.\n"
-"[b]Note :[/b] Pour plus d'optimisation, cette notification ne sera pas "
-"envoyée pour les changements qui se passent pendant que ce nœud est en dehors "
-"de la hiérarchie de la scène. À la place, toues les mises à jour d'éléments "
-"de thème peuvent être appliqués dès que le nœud entre dans la hiérarchie de "
-"la scène."
-
-msgid ""
"Show the system's arrow mouse cursor when the user hovers the node. Use with "
"[member mouse_default_cursor_shape]."
msgstr ""
@@ -8203,15 +7246,15 @@ msgstr "Exportation de macOS"
msgid "Application distribution target."
msgstr "Cible de distribution d'application."
+msgid "Exporting for Windows"
+msgstr "Exportation pour Windows"
+
msgid "Exporting for the Web"
msgstr "Exportation pour le Web"
msgid "Exporter for Windows."
msgstr "Exportateur pour Windows."
-msgid "Exporting for Windows"
-msgstr "Exportation pour Windows"
-
msgid "A script that is executed when exporting the project."
msgstr "Un script qui est exécuté à l'export du projet."
@@ -8897,21 +7940,6 @@ msgstr ""
"avec [method Node.queue_free]."
msgid ""
-"Adds the control to a specific dock slot (see [enum DockSlot] for options).\n"
-"If the dock is repositioned and as long as the plugin is active, the editor "
-"will save the dock position on further sessions.\n"
-"When your plugin is deactivated, make sure to remove your custom control with "
-"[method remove_control_from_docks] and free it with [method Node.queue_free]."
-msgstr ""
-"Ajoute le contrôle à un emplacement spécifique du dock (voir [enum DockSlot] "
-"pour les options).\n"
-"Si le dock est repositionné et aussi longtemps que le greffon est actif, "
-"l'éditeur enregistrera la position du dock pour d'autres sessions.\n"
-"Lorsque votre greffon est désactivé, assurez-vous de supprimer votre contrôle "
-"personnalisé avec [method remove_control_from_container] et de le libérer "
-"avec [method Node.queue_free]."
-
-msgid ""
"Registers a new [EditorExportPlugin]. Export plugins are used to perform "
"tasks when the project is being exported.\n"
"See [method add_inspector_plugin] for an example of how to register a plugin."
@@ -9519,13 +8547,6 @@ msgid "Returns the size of the file in bytes."
msgstr "Retourne la taille du fichier en octets."
msgid ""
-"Returns the next line of the file as a [String].\n"
-"Text is interpreted as being UTF-8 encoded."
-msgstr ""
-"Retourne la ligne suivant du fichier en [String].\n"
-"Le texte est interprété comme étant codé en UTF-8."
-
-msgid ""
"Returns an MD5 String representing the file at the given path or an empty "
"[String] on failure."
msgstr ""
@@ -9548,13 +8569,6 @@ msgstr "Retourne le chemin absolu en [String] pour l'actuel fichier ouvert."
msgid "Returns the file cursor's position."
msgstr "Retourne la position du curseur du fichier."
-msgid ""
-"Returns a SHA-256 [String] representing the file at the given path or an "
-"empty [String] on failure."
-msgstr ""
-"Retourne le SHA-256 du fichier au chemin spécifié ou une [String] vide en cas "
-"d'échec."
-
msgid "Returns [code]true[/code] if the file is currently opened."
msgstr "Retourne [code]true[/code] si le fichier est actuellement ouvert."
@@ -9587,13 +8601,6 @@ msgstr ""
"du fichier."
msgid ""
-"Opens the file for write operations. The file is created if it does not "
-"exist, and truncated if it does."
-msgstr ""
-"Ouvre le fichier en écriture. Crée le fichier s'il n’existe pas, et le "
-"tronque s’il existe déjà."
-
-msgid ""
"Opens the file for read and write operations. Does not truncate the file. The "
"cursor is positioned at the beginning of the file."
msgstr ""
@@ -9601,14 +8608,6 @@ msgstr ""
"le fichier. Le curseur est placé au début du fichier."
msgid ""
-"Opens the file for read and write operations. The file is created if it does "
-"not exist, and truncated if it does. The cursor is positioned at the "
-"beginning of the file."
-msgstr ""
-"Ouvre le fichier en lecture et écriture. Le fichier est créé s'il n'existe "
-"pas, et est vidé sinon. Le curseur est positionné au début du fichier."
-
-msgid ""
"Uses the [url=https://en.wikipedia.org/wiki/DEFLATE]DEFLATE[/url] compression "
"method."
msgstr ""
@@ -10012,15 +9011,9 @@ msgstr ""
"Démo 2D « Dodge The Creeps » (utilise GPUParticles2D pour les traces derrière "
"le joueur)"
-msgid "Restarts all the existing particles."
-msgstr "Redémarre toutes les particules existantes."
-
msgid "Controlling thousands of fish with Particles"
msgstr "Contrôler des milliers de poissons en utilisant les Particles"
-msgid "Restarts the particle emission, clearing existing particles."
-msgstr "Relance l'émission de particules, effaçant les particules existantes."
-
msgid "[Mesh] that is drawn for the first draw pass."
msgstr "Le [Mesh] qui est affiché lors de la première passe."
@@ -10218,15 +9211,15 @@ msgstr "L'icône pour le bouton du rétablissement du zoom."
msgid "The background drawn under the grid."
msgstr "L’arrière-plan dessiné sous la grille."
+msgid "The color modulation applied to the resizer icon."
+msgstr "La couleur de modulation appliquée à l'icône de redimensionnement."
+
msgid "The text displayed in the GraphNode's title bar."
msgstr "Le texte affiché dans la barre de titre du GraphNode."
msgid "Emitted when any GraphNode's slot is updated."
msgstr "Émis lorsqu’un emplacement du GraphNode est mis à jour."
-msgid "The color modulation applied to the resizer icon."
-msgstr "La couleur de modulation appliquée à l'icône de redimensionnement."
-
msgid "Horizontal offset for the ports."
msgstr "Le décalage horizontal pour les ports."
@@ -11193,9 +10186,6 @@ msgstr ""
"L'index de l'événement de glissage dans le cas d'un événement de plusieurs "
"glissages."
-msgid "The drag position."
-msgstr "La position du glissement."
-
msgid ""
"The touch index in the case of a multi-touch event. One index = one finger."
msgstr ""
@@ -12445,14 +11435,6 @@ msgid "Node that instances a [MultiMesh]."
msgstr "Le nœud que instancie un [MultiMesh]."
msgid ""
-"Returns the sender's peer ID for the RPC currently being executed.\n"
-"[b]Note:[/b] If not inside an RPC this method will return 0."
-msgstr ""
-"Retourne l'identification par les pairs de l'expéditeur pour le RPC en cours "
-"d'exécution.\n"
-"[b]Note :[/b] Si n'est à l'intérieur d'un RPC, cette méthode retournera 0."
-
-msgid ""
"Returns the current state of the connection. See [enum ConnectionStatus]."
msgstr "Retourne l'état actuel de la connexion. Voir [enum ConnexionStatus]."
@@ -12571,9 +11553,6 @@ msgstr ""
msgid "Using NavigationMeshes"
msgstr "Utiliser les NavigationMesh"
-msgid "3D Navmesh Demo"
-msgstr "Démo de NavigationMesh (« navmesh ») en 3D"
-
msgid ""
"Adds a polygon using the indices of the vertices you get when calling [method "
"get_vertices]."
@@ -12755,9 +11734,6 @@ msgid "Helper class for creating and clearing navigation meshes."
msgstr ""
"Classe d'aide pour la création et la suppression des maillages de navigation."
-msgid "2D Navigation Demo"
-msgstr "Démo de navigation 2D"
-
msgid ""
"Clears the array of the outlines, but it doesn't clear the vertices and the "
"polygons that were created by them."
@@ -13277,9 +12253,6 @@ msgstr ""
msgid "Emitted when node visibility changes."
msgstr "Émis lorsque la visibilité du nœud change."
-msgid "2D Role Playing Game Demo"
-msgstr "Démo 2D de jeu de role-play"
-
msgid ""
"If [code]true[/code], the resulting texture contains a normal map created "
"from the original noise interpreted as a bump map."
@@ -13332,15 +12305,6 @@ msgstr ""
msgid "The culling mode to use."
msgstr "Le mode de culling à utiliser."
-msgid ""
-"A [Vector2] array with the index for polygon's vertices positions.\n"
-"[b]Note:[/b] The returned value is a copy of the underlying array, rather "
-"than a reference."
-msgstr ""
-"Un tableau de [Vector2] avec l'indice pour les positions des sommets.\n"
-"[b]Note :[/b] La valeur retournée est une copie du tableau sous-jacent, et "
-"non pas une référence."
-
msgid "Culling is disabled. See [member cull_mode]."
msgstr "Le culling est désactivé. Voir [member cull_mode]."
@@ -13526,9 +12490,6 @@ msgstr "Ajoute une chaine de caractère à la fin du tableau."
msgid "Changes the [String] at the given index."
msgstr "Change la [String] à la position donnée."
-msgid "2D Navigation Astar Demo"
-msgstr "Démo de navigation Astar en 2D"
-
msgid "Constructs an empty [PackedVector2Array]."
msgstr "Construit un [PackedVector2Array] vide."
@@ -13667,12 +12628,6 @@ msgstr ""
"[b]Note :[/b] [method set_broadcast_enabled] doit être activé avant d'envoyer "
"des paquets à une adresse de diffusion (par exemple [code]255.255.255[/code])."
-msgid "2D Finite State Machine Demo"
-msgstr "Démo 2D de machine à états finis"
-
-msgid "3D Inverse Kinematics Demo"
-msgstr "Démo de cinématique inverse en 3D"
-
msgid "The style of [PanelContainer]'s background."
msgstr "Le style de l'arrière-plan de [PanelContainer]."
@@ -13993,13 +12948,6 @@ 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 whether a body uses a callback function to calculate its own physics "
-"(see [method body_set_force_integration_callback])."
-msgstr ""
-"Définit quand un corps utilise sa propre fonction pour calculer sa physique "
-"(voir [method body_set_force_integration_callback])."
-
-msgid ""
"Substitutes a given body shape by another. The old shape is selected by its "
"index, the new one by its [RID]."
msgstr ""
@@ -14160,15 +13108,6 @@ msgstr "Définit le poids pour l'os spécifié."
msgid "The offset applied to each vertex."
msgstr "Le décalage appliqué à chaque sommet."
-msgid ""
-"The polygon's list of vertices. The final point will be connected to the "
-"first.\n"
-"[b]Note:[/b] This returns a copy of the [PackedVector2Array] rather than a "
-"reference."
-msgstr ""
-"La liste des sommets du polygone. Le dernier point sera relié au premier.\n"
-"[b]Note :[/b] Retourne une copie du [PackedVector2Array] et non une référence."
-
msgid "The texture's rotation in radians."
msgstr "La rotation de la texture en radians."
@@ -14480,13 +13419,6 @@ msgstr ""
"curseur de la souris."
msgid ""
-"When creating node names automatically, set the type of casing in this "
-"project. This is mostly an editor setting."
-msgstr ""
-"Lorsque vous créez des noms de nœuds automatiquement, définissez le type de "
-"casse dans ce projet. C'est surtout un réglage de l'éditeur."
-
-msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr ""
@@ -15177,9 +14109,6 @@ msgstr ""
"Définit le délai en secondes avant que le [PropertyTweener] commence son "
"interpolation. Par défaut, il n'y a pas de délai."
-msgid "2D in 3D Demo"
-msgstr "Démo pour la 2D en 3D"
-
msgid "Stops the [Range] from sharing its member variables with any other."
msgstr "Arrête le [Range] de partager ses variables membres avec les autres."
@@ -15225,15 +14154,6 @@ msgstr ""
"retourne [code]false[/code])."
msgid ""
-"Returns the shape ID of the first object that the ray intersects, or [code]0[/"
-"code] if no object is intersecting the ray (i.e. [method is_colliding] "
-"returns [code]false[/code])."
-msgstr ""
-"Retourne l'identifiant de forme du premier objet que le rayon intersecte, ou "
-"[code]0[/code] si aucun objet n'intersecte le rayon (c'est-à-dire [method "
-"is_colliding] renvoie [code]false[/code])."
-
-msgid ""
"Returns whether any object is intersecting with the ray's vector (considering "
"the vector length)."
msgstr ""
@@ -16859,18 +15779,12 @@ msgstr ""
"moins que la taille de la texture ne corresponde parfaitement à la taille de "
"la boîte de style."
-msgid "3D in 2D Demo"
-msgstr "Démo pour la 3D dans la 2D"
-
msgid "Screen Capture Demo"
msgstr "Démo de capture d'écran"
msgid "Dynamic Split Screen Demo"
msgstr "Démo de l'écran partagé dynamique"
-msgid "3D Viewport Scaling Demo"
-msgstr "Démo de mise à l'échelle d'un fenêtre d'affichage 3D"
-
msgid "Always clear the render target before drawing."
msgstr "Toujours effacer la cible de rendu avant d'y dessiner."
@@ -17258,12 +16172,6 @@ msgstr "Désélectionne la sélection actuelle."
msgid "Returns the text of a specific line."
msgstr "Retourne le texte pour la ligne renseignée."
-msgid "Returns the selection begin line."
-msgstr "Retourne la ligne de début de sélection."
-
-msgid "Returns the selection end line."
-msgstr "Retourne la ligne de fin de sélection."
-
msgid "Returns [code]true[/code] if a \"redo\" action is available."
msgstr "Retourne [code]true[/code] si une action « refaire » est disponible."
@@ -17274,14 +16182,6 @@ msgid "Perform redo operation."
msgstr "Effectue une opération refaire."
msgid ""
-"Perform selection, from line/column to line/column.\n"
-"If [member selecting_enabled] is [code]false[/code], no selection will occur."
-msgstr ""
-"Effectue une sélection, de la ligne/colonne à la ligne/colonne.\n"
-"Si [member selection_enabled] est [code]false[/code], aucune sélection ne "
-"sera effectuée."
-
-msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
@@ -17289,9 +16189,6 @@ msgstr ""
"Si [member selecting_enabled] est [code]false[/code], aucun sélection ne se "
"fera."
-msgid "Sets the text for a specific line."
-msgstr "Définit le texte pour la ligne spécifiée."
-
msgid "Perform undo operation."
msgstr "Effectuer une opération d'annulation."
@@ -18185,9 +17082,6 @@ msgstr ""
"Fait que les opérations \"annuler\"/\"refaire\" utilisent des actions "
"séparées."
-msgid "Makes subsequent actions with the same name be merged into one."
-msgstr "Fusionne les actions suivantes avec le même nom dans une seule."
-
msgid "Adds the given [UPNPDevice] to the list of discovered devices."
msgstr "Ajouter le [UPNPDevice] spécifié à la liste des appareils découverts."
@@ -18537,12 +17431,6 @@ msgid "Returns the unsigned minimum angle to the given vector, in radians."
msgstr "Retourne l'angle non signé minimum avec le vecteur donné, en radians."
msgid ""
-"Returns the vector \"bounced off\" from a plane defined by the given normal."
-msgstr ""
-"Retourne le vecteur ayant \"rebondit\" sur un plan définit par la normale "
-"donnée."
-
-msgid ""
"The vector's Z component. Also accessible by using the index position [code]"
"[2][/code]."
msgstr ""
@@ -18820,9 +17708,6 @@ msgstr "Représente la taille de l'énumération [enum RenderInfo]."
msgid "Objects are displayed normally."
msgstr "Les objets sont affichés normalement."
-msgid "Objects are displayed in wireframe style."
-msgstr "Les objets sont affichés en fil de fer."
-
msgid "Corresponds to [constant Node.PROCESS_MODE_WHEN_PAUSED]."
msgstr "Correspond à [constant Node.PROCESS_MODE_WHEN_PAUSED]."
diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po
index b2a1bffecd..79c8677154 100644
--- a/doc/translations/zh_CN.po
+++ b/doc/translations/zh_CN.po
@@ -76,7 +76,7 @@
# long li <2361520824@qq.com>, 2023.
# yisui <hechugetqiufrost@outlook.com>, 2023.
# penghao123456 <phao0724@163.com>, 2023.
-# Zae Chao <zaevi@live.com>, 2023.
+# Zae Chao <zaevi@live.com>, 2023, 2024.
# SamBillon <sambillon1234+hosted.weblate@gmail.com>, 2023.
# ZhuQiLi <552084128@qq.com>, 2023.
# HIM049 <HIM_049@163.com>, 2023.
@@ -84,12 +84,13 @@
# dinshin0129 <396321810@qq.com>, 2023.
# CrimsonNinja <panruzun@gmail.com>, 2024.
# 邵孟欧 <ukmgob@gmail.com>, 2024.
+# Zhen Liang <131206041lz@gmail.com>, 2024.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2024-03-04 14:32+0000\n"
-"Last-Translator: 邵孟欧 <ukmgob@gmail.com>\n"
+"PO-Revision-Date: 2024-04-26 13:04+0000\n"
+"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot-class-reference/zh_Hans/>\n"
"Language: zh_CN\n"
@@ -97,7 +98,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Weblate 5.5-dev\n"
+"X-Generator: Weblate 5.5.1\n"
msgid "All classes"
msgstr "所有类"
@@ -218,6 +219,9 @@ msgstr "本方法描述的是使用本类型作为左操作数的有效操作符
msgid "This value is an integer composed as a bitmask of the following flags."
msgstr "这个值是由下列标志构成的位掩码整数。"
+msgid "No return value."
+msgstr "无返回值。"
+
msgid ""
"There is currently no description for this class. Please help us by :ref:"
"`contributing one <doc_updating_the_class_reference>`!"
@@ -366,48 +370,6 @@ msgstr ""
"等。请使用 [method Color.is_equal_approx] 进行比较,避免浮点数精度误差。"
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 and speed < 20) # 你还可以在单次检查中合并两个条件语句\n"
-"assert(speed < 20, \"限速为 20\") # 显示消息。\n"
-"[/codeblock]"
-
-msgid ""
"Returns a single character (as a [String]) of the given Unicode code point "
"(which is compatible with ASCII code).\n"
"[codeblock]\n"
@@ -457,130 +419,6 @@ msgstr ""
"Object 实例。在反序列化时可能很有用。"
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 ""
-"返回一个表示当前调用堆栈的字典数组。另请参阅 [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"
-"从 [code]_ready()[/code] 开始,[code]bar()[/code] 将打印:\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]注意:[/b]只有在运行的实例连接到调试服务器(即编辑器实例)后,该函数才有"
-"效。[method get_stack] 不适用于以发布模式导出的项目;或者在未连接到调试服务器"
-"的情况下,以调试模式导出的项目。\n"
-"[b]注意:[/b]不支持从 [Thread] 调用此函数。这样做将返回一个空数组。"
-
-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 ""
-"返回传入的 [param instance] 转换为的字典。可用于序列化。\n"
-"[b]注意:[/b]不能用于序列化附加了内置脚本的对象,或在内置脚本中分配的对象。\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"
-"输出:\n"
-"[codeblock]\n"
-"[@subpath, @path, foo]\n"
-"[, res://test.gd, bar]\n"
-"[/codeblock]"
-
-msgid ""
-"Returns [code]true[/code] if [param value] is an instance of [param type]. "
-"The [param type] value must be one of the following:\n"
-"- A constant from the [enum Variant.Type] enumeration, for example [constant "
-"TYPE_INT].\n"
-"- An [Object]-derived class which exists in [ClassDB], for example [Node].\n"
-"- A [Script] (you can use any class, including inner one).\n"
-"Unlike the right operand of the [code]is[/code] operator, [param type] can be "
-"a non-constant value. The [code]is[/code] operator supports more features "
-"(such as typed arrays) and is more performant. Use the operator instead of "
-"this method if you do not need dynamic type checking.\n"
-"Examples:\n"
-"[codeblock]\n"
-"print(is_instance_of(a, TYPE_INT))\n"
-"print(is_instance_of(a, Node))\n"
-"print(is_instance_of(a, MyClass))\n"
-"print(is_instance_of(a, MyClass.InnerClass))\n"
-"[/codeblock]\n"
-"[b]Note:[/b] If [param value] and/or [param type] are freed objects (see "
-"[method @GlobalScope.is_instance_valid]), or [param type] is not one of the "
-"above options, this method will raise a runtime error.\n"
-"See also [method @GlobalScope.typeof], [method type_exists], [method Array."
-"is_same_typed] (and other [Array] methods)."
-msgstr ""
-"如果 [param value] 为 [param type] 类型的实例,则返回 [code]true[/code]。"
-"[param type] 的值必须为下列值之一:\n"
-"- [enum Variant.Type] 枚举常量,例如 [constant TYPE_INT]。\n"
-"- [ClassDB] 中存在的派生自 [Object] 的类,例如 [Node]。\n"
-"- [Script](可以用任何类,包括内部类)。\n"
-"[param type] 可以不是常量,这一点与 [code]is[/code] 的右操作数不同。[code]is[/"
-"code] 运算符支持的功能更多(例如类型化数组),性能也更高。如果你不需要动态类型"
-"检查,请使用该运算符,不要使用此方法。\n"
-"示例:\n"
-"[codeblock]\n"
-"print(is_instance_of(a, TYPE_INT))\n"
-"print(is_instance_of(a, Node))\n"
-"print(is_instance_of(a, MyClass))\n"
-"print(is_instance_of(a, MyClass.InnerClass))\n"
-"[/codeblock]\n"
-"[b]注意:[/b]如果 [param value] 和/或 [param type] 为已释放的对象(见 [method "
-"@GlobalScope.is_instance_valid]),或者 [param type] 不是以上选项之一,则此方"
-"法会报运行时错误。\n"
-"另见 [method @GlobalScope.typeof]、[method type_exists]、[method Array."
-"is_same_typed](以及其他 [Array] 方法)。"
-
-msgid ""
"Returns the length of the given Variant [param var]. The length can be the "
"character count of a [String] or [StringName], the element count of any array "
"type, or the size of a [Dictionary]. For every other Variant type, a run-time "
@@ -594,7 +432,7 @@ msgid ""
"[/codeblock]"
msgstr ""
"返回给定 Variant [param var] 的长度。长度可以是 [String] 或 [StringName] 的字"
-"符数、任意数组类型的元素数、或 [Dictionary] 的大小等。对于所有其他 Variant 类"
+"符数、任意数组类型的元素数或 [Dictionary] 的大小等。对于所有其他 Variant 类"
"型,都会生成运行时错误并停止执行。\n"
"[codeblock]\n"
"a = [1, 2, 3, 4]\n"
@@ -605,226 +443,6 @@ msgstr ""
"[/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]. This method is equivalent of "
-"using [method ResourceLoader.load] with [constant ResourceLoader."
-"CACHE_MODE_REUSE].\n"
-"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource "
-"in the FileSystem dock and choosing \"Copy Path\", or by dragging the file "
-"from the FileSystem dock into the current script.\n"
-"[codeblock]\n"
-"# Load a scene called \"main\" located in the root of the project directory "
-"and cache it in a variable.\n"
-"var main = load(\"res://main.tscn\") # main will contain a PackedScene "
-"resource.\n"
-"[/codeblock]\n"
-"[b]Important:[/b] The path must be absolute. A relative path will always "
-"return [code]null[/code].\n"
-"This function is a simplified version of [method ResourceLoader.load], which "
-"can be used for more advanced scenarios.\n"
-"[b]Note:[/b] Files have to be imported into the engine first to load them "
-"using this function. If you want to load [Image]s at run-time, you may use "
-"[method Image.load]. If you want to import audio files, you can use the "
-"snippet described in [member AudioStreamMP3.data].\n"
-"[b]Note:[/b] If [member ProjectSettings.editor/export/"
-"convert_text_resources_to_binary] is [code]true[/code], [method @GDScript."
-"load] will not be able to read converted files in an exported project. If you "
-"rely on run-time loading of files present within the PCK, set [member "
-"ProjectSettings.editor/export/convert_text_resources_to_binary] to "
-"[code]false[/code]."
-msgstr ""
-"返回一个位于文件系统绝对路径 [param path] 的 [Resource]。除非该资源已在其他地"
-"方引用(例如在另一个脚本或场景中),否则资源是在函数调用时从磁盘加载的——这可能"
-"会导致轻微的延迟,尤其是在加载大型场景时。为避免在多次加载某些内容时出现不必要"
-"的延迟,可以将资源存储在变量中或使用预加载 [method preload]。该方法相当于使用 "
-"[constant ResourceLoader.CACHE_MODE_REUSE] 调用 [method ResourceLoader."
-"load]。\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] 中描述的代码片段。\n"
-"[b]注意:[/b]如果 [member ProjectSettings.editor/export/"
-"convert_text_resources_to_binary] 为 [code]true[/code],则 [method @GDScript."
-"load] 无法在导出后的项目中读取已转换的文件。如果你需要在运行时加载存在于 PCK "
-"中的文件,请将 [member ProjectSettings.editor/export/"
-"convert_text_resources_to_binary] 设置为 [code]false[/code]。"
-
-msgid ""
-"Returns a [Resource] from the filesystem located at [param path]. During run-"
-"time, the resource is loaded when the script is being parsed. This function "
-"effectively acts as a reference to that resource. Note that this function "
-"requires [param path] to be a constant [String]. If you want to load a "
-"resource from a dynamic/variable path, use [method load].\n"
-"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource "
-"in the Assets Panel and choosing \"Copy Path\", or by dragging the file from "
-"the FileSystem dock into the current script.\n"
-"[codeblock]\n"
-"# Create instance of a scene.\n"
-"var diamond = preload(\"res://diamond.tscn\").instantiate()\n"
-"[/codeblock]"
-msgstr ""
-"返回一个位于文件系统绝对路径[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"
-"The output in the console may look like the following:\n"
-"[codeblock]\n"
-"Test print\n"
-"At: res://test.gd:15:_process()\n"
-"[/codeblock]\n"
-"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing so "
-"will instead print the thread ID."
-msgstr ""
-"与 [method @GlobalScope.print] 类似,但在打开调试器运行时还会包含当前栈帧。\n"
-"控制台中的输出应该是类似这样的:\n"
-"[codeblock]\n"
-"Test print\n"
-"At: res://test.gd:15:_process()\n"
-"[/codeblock]\n"
-"[b]注意:[/b]不支持从 [Thread] 中调用此方法。调用时会输出线程 ID。"
-
-msgid ""
-"Prints a stack trace at the current code location. See also [method "
-"get_stack].\n"
-"The output in the console may look like the following:\n"
-"[codeblock]\n"
-"Frame 0 - res://test.gd:16 in function '_process'\n"
-"[/codeblock]\n"
-"[b]Note:[/b] This function only works if the running instance is connected to "
-"a debugging server (i.e. an editor instance). [method print_stack] will not "
-"work in projects exported in release mode, or in projects exported in debug "
-"mode if not connected to a debugging server.\n"
-"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing so "
-"will instead print the thread ID."
-msgstr ""
-"输出当前代码位置的栈追踪。另请参阅 [method get_stack]。\n"
-"控制台中的输出是类似这样的:\n"
-"[codeblock]\n"
-"Frame 0 - res://test.gd:16 in function '_process'\n"
-"[/codeblock]\n"
-"[b]注意:[/b]只有在运行的实例连接到调试服务器(即编辑器实例)后,该函数才有"
-"效。[method print_stack] 不适用于以发布模式导出的项目;或者在未连接到调试服务"
-"器的情况下,以调试模式导出的项目。\n"
-"[b]注意:[/b]不支持从 [Thread] 调用此函数。这样做将改为打印线程 ID。"
-
-msgid ""
-"Returns an array with the given range. [method range] can be called in three "
-"ways:\n"
-"[code]range(n: int)[/code]: Starts from 0, increases by steps of 1, and stops "
-"[i]before[/i] [code]n[/code]. The argument [code]n[/code] is [b]exclusive[/"
-"b].\n"
-"[code]range(b: int, n: int)[/code]: Starts from [code]b[/code], increases by "
-"steps of 1, and stops [i]before[/i] [code]n[/code]. The arguments [code]b[/"
-"code] and [code]n[/code] are [b]inclusive[/b] and [b]exclusive[/b], "
-"respectively.\n"
-"[code]range(b: int, n: int, s: int)[/code]: Starts from [code]b[/code], "
-"increases/decreases by steps of [code]s[/code], and stops [i]before[/i] "
-"[code]n[/code]. The arguments [code]b[/code] and [code]n[/code] are "
-"[b]inclusive[/b] and [b]exclusive[/b], respectively. The argument [code]s[/"
-"code] [b]can[/b] be negative, but not [code]0[/code]. If [code]s[/code] is "
-"[code]0[/code], an error message is printed.\n"
-"[method range] converts all arguments to [int] before processing.\n"
-"[b]Note:[/b] Returns an empty array if no value meets the value constraint (e."
-"g. [code]range(2, 5, -1)[/code] or [code]range(5, 5, 1)[/code]).\n"
-"Examples:\n"
-"[codeblock]\n"
-"print(range(4)) # Prints [0, 1, 2, 3]\n"
-"print(range(2, 5)) # Prints [2, 3, 4]\n"
-"print(range(0, 6, 2)) # Prints [0, 2, 4]\n"
-"print(range(4, 1, -1)) # Prints [4, 3, 2]\n"
-"[/codeblock]\n"
-"To iterate over an [Array] backwards, use:\n"
-"[codeblock]\n"
-"var array = [3, 6, 9]\n"
-"for i in range(array.size() - 1, -1, -1):\n"
-" print(array[i])\n"
-"[/codeblock]\n"
-"Output:\n"
-"[codeblock]\n"
-"9\n"
-"6\n"
-"3\n"
-"[/codeblock]\n"
-"To iterate over [float], convert them in the loop.\n"
-"[codeblock]\n"
-"for i in range (3, 0, -1):\n"
-" print(i / 10.0)\n"
-"[/codeblock]\n"
-"Output:\n"
-"[codeblock]\n"
-"0.3\n"
-"0.2\n"
-"0.1\n"
-"[/codeblock]"
-msgstr ""
-"返回具有给定范围的数组。[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"
-"[method range] 会先将所有参数转换为 [int] 再进行处理。\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"
-"print(range(2, 5)) # 输出 [2, 3, 4]\n"
-"print(range(0, 6, 2)) # 输出 [0, 2, 4]\n"
-"print(range(4, 1, -1)) # 输出 [4, 3, 2]\n"
-"[/codeblock]\n"
-"要反向遍历 [Array],请使用:\n"
-"[codeblock]\n"
-"var array = [3, 6, 9]\n"
-"for i in range(array.size() - 1, -1, -1):\n"
-" print(array[i])\n"
-"[/codeblock]\n"
-"输出:\n"
-"[codeblock]\n"
-"9\n"
-"6\n"
-"3\n"
-"[/codeblock]\n"
-"要遍历 [float],请在循环中进行转换。\n"
-"[codeblock]\n"
-"for i in range (3, 0, -1):\n"
-" print(i / 10.0)\n"
-"[/codeblock]\n"
-"输出:\n"
-"[codeblock]\n"
-"0.3\n"
-"0.2\n"
-"0.1\n"
-"[/codeblock]"
-
-msgid ""
"Returns [code]true[/code] if the given [Object]-derived class exists in "
"[ClassDB]. Note that [Variant] data types are not registered in [ClassDB].\n"
"[codeblock]\n"
@@ -993,323 +611,6 @@ msgstr ""
"[annotation @export_subgroup]。"
msgid ""
-"Export a [Color] property without allowing its transparency ([member Color."
-"a]) to be edited.\n"
-"See also [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n"
-"[codeblock]\n"
-"@export_color_no_alpha var dye_color: Color\n"
-"[/codeblock]"
-msgstr ""
-"导出一个 [Color] 属性,不允许编辑其透明度 ([member Color.a])。\n"
-"另请参阅 [constant PROPERTY_HINT_COLOR_NO_ALPHA] 。\n"
-"[codeblock]\n"
-"@export_color_no_alpha var dye_color: Color\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as a path to a directory. The path will be limited "
-"to the project folder and its subfolders. See [annotation @export_global_dir] "
-"to allow picking from the entire filesystem.\n"
-"See also [constant PROPERTY_HINT_DIR].\n"
-"[codeblock]\n"
-"@export_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-msgstr ""
-"将 [String] 属性作为目录路径导出。该路径仅限于项目文件夹及其子文件夹。要允许在"
-"整个文件系统中进行选择,见 [annotation @export_global_dir]。\n"
-"另见 [constant PROPERTY_HINT_DIR]。\n"
-"[codeblock]\n"
-"@export_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-
-msgid ""
-"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_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"
-"If you want to set an initial value, you must specify it explicitly:\n"
-"[codeblock]\n"
-"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = "
-"\"Rebecca\"\n"
-"[/codeblock]\n"
-"If you want to use named GDScript enums, then use [annotation @export] "
-"instead:\n"
-"[codeblock]\n"
-"enum CharacterName {REBECCA, MARY, LEAH}\n"
-"@export var character_name: CharacterName\n"
-"[/codeblock]"
-msgstr ""
-"将 [int] 或 [String] 导出为枚举选项列表。如果属性为 [int],则保存的是值的索"
-"引,与值的顺序一致。你可以通过冒号添加显式值。如果属性为 [String],则保存的是"
-"值。\n"
-"另见 [constant PROPERTY_HINT_ENUM]。\n"
-"[codeblock]\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_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = "
-"\"Rebecca\"\n"
-"[/codeblock]\n"
-"如果想要使用 GDScript 枚举,请改用 [annotation @export]:\n"
-"[codeblock]\n"
-"enum CharacterName {REBECCA, MARY, LEAH}\n"
-"@export var character_name: CharacterName\n"
-"[/codeblock]"
-
-msgid ""
-"Export a floating-point property with an easing editor widget. Additional "
-"hints can be provided to adjust the behavior of the widget. "
-"[code]\"attenuation\"[/code] flips the curve, which makes it more intuitive "
-"for editing attenuation properties. [code]\"positive_only\"[/code] limits "
-"values to only be greater than or equal to zero.\n"
-"See also [constant PROPERTY_HINT_EXP_EASING].\n"
-"[codeblock]\n"
-"@export_exp_easing var transition_speed\n"
-"@export_exp_easing(\"attenuation\") var fading_attenuation\n"
-"@export_exp_easing(\"positive_only\") var effect_power\n"
-"[/codeblock]"
-msgstr ""
-"使用缓动编辑器小部件导出浮点属性。可以提供额外的提示来调整小部件的行为。"
-"[code]\"attenuation\"[/code] 翻转曲线,使编辑衰减属性更加直观。"
-"[code]\"positive_only\"[/code] 将值限制为仅大于或等于零。\n"
-"另请参见 [constant PROPERTY_HINT_EXP_EASING]。\n"
-"[codeblock]\n"
-"@export_exp_easing var transition_speed\n"
-"@export_exp_easing(\"attenuation\") var fading_attenuation\n"
-"@export_exp_easing(\"positive_only\") var effect_power\n"
-"[/codeblock]"
-
-msgid ""
-"Export 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"
-"[codeblock]\n"
-"@export_file var sound_effect_path: String\n"
-"@export_file(\"*.txt\") var notes_path: String\n"
-"[/codeblock]"
-msgstr ""
-"将 [String] 属性导出为文件路径。该路径仅限于项目文件夹及其子文件夹。若要允许从"
-"整个文件系统中进行选择,请参阅 [annotation @export_global_file]。\n"
-"如果提供了 [param filter],则只有匹配的文件可供选择。\n"
-"另请参见 [constant PROPERTY_HINT_FILE]。\n"
-"[codeblock]\n"
-"@export_file var sound_effect_file: String\n"
-"@export_file(\"*.txt\") var notes_file: String\n"
-"[/codeblock]"
-
-msgid ""
-"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_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 ""
-"将整数属性导出为位标志字段。能够在单个属性中保存若干“勾选”或者说 [code]true[/"
-"code] 值,可以很方便地在检查器面板中进行选择。\n"
-"另见 [constant PROPERTY_HINT_FLAGS]。\n"
-"[codeblock]\n"
-"@export_flags(\"Fire\", \"Water\", \"Earth\", \"Wind\") var spell_elements = "
-"0\n"
-"[/codeblock]\n"
-"你可以通过冒号来添加显式值:\n"
-"[codeblock]\n"
-"@export_flags(\"Self:4\", \"Allies:8\", \"Foes:16\") var spell_targets = 0\n"
-"[/codeblock]\n"
-"你还可以对标志进行组合:\n"
-"[codeblock]\n"
-"@export_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 ""
-"Export an integer property as a bit flag field for 2D navigation layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_navigation/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_2d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"将整数属性导出为 2D 导航层的位标志字段。检查器停靠面板中的小部件,将使用在 "
-"[member ProjectSettings.layer_names/2d_navigation/layer_1] 中定义的层名称。\n"
-"另请参见 [constant PROPERTY_HINT_LAYERS_2D_NAVIGATION]。\n"
-"[codeblock]\n"
-"@export_flags_2d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D physics layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_physics/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_2d_physics var physics_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"将整数属性导出为 2D 物理层的位标志字段。检查器停靠面板中的小工具,将使用在 "
-"[member ProjectSettings.layer_names/2d_physics/layer_1] 中定义的层名称。\n"
-"另请参见 [constant PROPERTY_HINT_LAYERS_2D_PHYSICS]。\n"
-"[codeblock]\n"
-"@export_flags_2d_physics var physics_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D render layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_render/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_2d_render var render_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"将整数属性导出为 2D 渲染层的位标志字段。检查器停靠面板中的小工具将使用在 "
-"[member ProjectSettings.layer_names/2d_render/layer_1] 中定义的层名称。\n"
-"另请参见 [constant PROPERTY_HINT_LAYERS_2D_RENDER]。\n"
-"[codeblock]\n"
-"@export_flags_2d_render var render_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D navigation layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_navigation/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_3d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"将整数属性导出为 3D 导航层的位标志字段。检查器停靠面板中的小工具将使用在 "
-"[member ProjectSettings.layer_names/3d_navigation/layer_1] 中定义的层名称。\n"
-"另请参见 [constant PROPERTY_HINT_LAYERS_3D_NAVIGATION]。\n"
-"[codeblock]\n"
-"@export_flags_3d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D physics layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_physics/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_3d_physics var physics_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"将整数属性导出为 3D 物理层的位标志字段。检查器停靠面板中的小工具将使用在 "
-"[member ProjectSettings.layer_names/3d_physics/layer_1] 中定义的层名称。\n"
-"另请参见 [constant PROPERTY_HINT_LAYERS_3D_PHYSICS]。\n"
-"[codeblock]\n"
-"@export_flags_3d_physics var physics_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D render layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_render/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_3d_render var render_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"将整数属性导出为 3D 渲染层的位标志字段。检查器停靠面板中的小工具将使用在 "
-"[member ProjectSettings.layer_names/3d_render/layer_1] 中定义的层名称。\n"
-"另请参见 [constant PROPERTY_HINT_LAYERS_3D_RENDER]。\n"
-"[codeblock]\n"
-"@export_flags_3d_render var render_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for navigation avoidance "
-"layers. The widget in the Inspector dock will use the layer names defined in "
-"[member ProjectSettings.layer_names/avoidance/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_AVOIDANCE].\n"
-"[codeblock]\n"
-"@export_flags_avoidance var avoidance_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"将整数属性导出为导航避障层的位标志字段。检查器停靠面板中的小工具,将使用在 "
-"[member ProjectSettings.layer_names/avoidance/layer_1] 中定义的层名称。\n"
-"另请参见 [constant PROPERTY_HINT_LAYERS_AVOIDANCE]。\n"
-"[codeblock]\n"
-"@export_flags_avoidance var avoidance_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as an absolute 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_path: String\n"
-"[/codeblock]"
-msgstr ""
-"将 [String] 属性导出为目录路径。该路径可以从整个文件系统中选择。请参阅 "
-"[annotation @export_dir] 以将其限制为项目文件夹及其子文件夹。\n"
-"另请参见 [constant PROPERTY_HINT_GLOBAL_DIR]。\n"
-"[codeblock]\n"
-"@export_global_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as an absolute 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_path: String\n"
-"@export_global_file(\"*.txt\") var notes_path: 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_path: String\n"
-"@export_global_file(\"*.txt\") var notes_path: 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 "
@@ -1358,110 +659,25 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Export a [String] property with a large [TextEdit] widget instead of a "
-"[LineEdit]. This adds support for multiline content and makes it easier to "
-"edit large amount of text stored in the property.\n"
-"See also [constant PROPERTY_HINT_MULTILINE_TEXT].\n"
+"Export a property with [constant PROPERTY_USAGE_STORAGE] flag. The property "
+"is not displayed in the editor, but it is serialized and stored in the scene "
+"or resource file. This can be useful for [annotation @tool] scripts. Also the "
+"property value is copied when [method Resource.duplicate] or [method Node."
+"duplicate] is called, unlike non-exported variables.\n"
"[codeblock]\n"
-"@export_multiline var character_biography\n"
+"var a # Not stored in the file, not displayed in the editor.\n"
+"@export_storage var b # Stored in the file, not displayed in the editor.\n"
+"@export var c: int # Stored in the file, displayed in the editor.\n"
"[/codeblock]"
msgstr ""
-"用一个大的 [TextEdit] 部件而不是 [LineEdit] 导出一个 [String] 属性。这增加了对"
-"多行内容的支持,使其更容易编辑存储在属性中的大量文本。\n"
-"参见 [constant PROPERTY_HINT_MULTILINE_TEXT]。\n"
+"使用 [constant PROPERTY_USAGE_STORAGE] 标志导出属性。该属性不会在编辑器中显"
+"示,但是会序列化并存储到场景或资源文件中。常用于 [annotation @tool] 脚本。调"
+"用 [method Resource.duplicate] 和 [method Node.duplicate] 时也会复制该属性的"
+"值,其他非导出变量则不会。\n"
"[codeblock]\n"
-"@export_multiline var character_biography\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [NodePath] property with a filter for allowed node types.\n"
-"See also [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n"
-"[codeblock]\n"
-"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n"
-"[/codeblock]\n"
-"[b]Note:[/b] The type must be a native class or a globally registered script "
-"(using the [code]class_name[/code] keyword) that inherits [Node]."
-msgstr ""
-"导出具有过滤器,并允许节点类型为 [NodePath] 的属性。\n"
-"参见 [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES]。\n"
-"[codeblock]\n"
-"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n"
-"[/codeblock]\n"
-"[b]注意:[/b] 类型必须是本地类或全局注册的脚本(使用[code][class_name][/code]关"
-"键字)且继承自 [Node] 。"
-
-msgid ""
-"Export a [String] property with a placeholder text displayed in the editor "
-"widget when no value is present.\n"
-"See also [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n"
-"[codeblock]\n"
-"@export_placeholder(\"Name in lowercase\") var character_id: String\n"
-"[/codeblock]"
-msgstr ""
-"导出一个带有一个占位符文本的 [String] 属性,当没有值时,编辑器小部件中会显示该"
-"占位符文本。\n"
-"另请参见 [constant PROPERTY_HINT_PLACEHOLDER_TEXT]。\n"
-"[codeblock]\n"
-"@export_placeholder(\"Name in lowercase\") var character_id: String\n"
-"[/codeblock]"
-
-msgid ""
-"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 "
-"[member EditorSettings.interface/inspector/default_float_step] 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_as_degrees\"[/code] you can specify that the actual value is "
-"in radians, but should be displayed in degrees in the Inspector dock (the "
-"range values are also in degrees). [code]\"degrees\"[/code] allows to add a "
-"degree sign as a unit suffix (the value is unchanged). 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_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_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(-180, 180, 0.001, \"radians_as_degrees\") 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 ""
-"将 [int] 或 [float] 属性导出为范围值。范围必须由 [param min] 和 [param max] 定"
-"义,还有一个可选的 [param step] 和各种额外的提示。对于整数属性,[param step] "
-"的默认值是 [code]1[/code] 。对于浮点数,这个值取决于你的 [member "
-"EditorSettings.interface/inspector/default_float_step] 设置。\n"
-"如果提供了提示 [code]\"or_greater\"[/code] 和 [code]\"or_less\"[/code] ,那么"
-"编辑器部件将不会在范围边界处对数值进行限制。[code]\"exp\"[/code] 提示将使范围"
-"内的编辑值以指数形式变化。[code]\"hide_slider\"[/code] 提示将隐藏编辑器部件中"
-"的滑块。\n"
-"提示还允许指示编辑的值的单位。使用 [code]\"radians_as_degrees\"[/code] ,你可"
-"以指定实际值以弧度为单位,但在检查器中会以角度为单位显示(范围值也使用度数)。"
-"[code]\"degrees\"[/code] 允许添加一个角度符号作为单位后缀。最后,可以使用 "
-"[code]\"suffix:单位\"[/code] 提供一个自定义后缀,其中“单位”可以是任何字符"
-"串。\n"
-"另见 [constant PROPERTY_HINT_RANGE]。\n"
-"[codeblock]\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_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_as_degrees\") 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"
+"var a # 不保存进文件,不在编辑器中显示。\n"
+"@export_storage var b # 保存进文件,不在编辑器中显示。\n"
+"@export var c: int # 保存进文件,在编辑器中显示。\n"
"[/codeblock]"
msgid ""
@@ -1616,14 +832,6 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Make a script with static variables to not persist after all references are "
-"lost. If the script is loaded again the static variables will revert to their "
-"default values."
-msgstr ""
-"使具有静态变量的脚本在所有引用丢失之后不会持久化。当该脚本再次加载时,这些静态"
-"变量将恢复为默认值。"
-
-msgid ""
"Mark the current script as a tool script, allowing it to be loaded and "
"executed by the editor. See [url=$DOCS_URL/tutorials/plugins/"
"running_code_in_the_editor.html]Running code in the editor[/url].\n"
@@ -2150,41 +1358,6 @@ msgstr ""
"[/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"
@@ -2276,48 +1449,6 @@ msgstr ""
"对于整数取余运算,请使用 [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"
@@ -2477,63 +1608,6 @@ msgid ""
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 是值类型\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 是引用类型\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"
-"[Variant] 值类型有:[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"
-"[Variant] 引用类型有:[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 "
@@ -2698,18 +1772,6 @@ msgstr ""
"nan[/code]。"
msgid ""
-"Returns the maximum of the given numeric values. This function can take any "
-"number of arguments.\n"
-"[codeblock]\n"
-"max(1, 7, 3, -6, 5) # Returns 7\n"
-"[/codeblock]"
-msgstr ""
-"返回给定值的最大值。这个函数可以接受任意数量的参数。\n"
-"[codeblock]\n"
-"max(1, 7, 3, -6, 5) # 返回 7\n"
-"[/codeblock]"
-
-msgid ""
"Returns the maximum of two [float] values.\n"
"[codeblock]\n"
"maxf(3.6, 24) # Returns 24.0\n"
@@ -2736,18 +1798,6 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Returns the minimum of the given numeric values. This function can take any "
-"number of arguments.\n"
-"[codeblock]\n"
-"min(1, 7, 3, -6, 5) # Returns -6\n"
-"[/codeblock]"
-msgstr ""
-"返回给定数值中的最小值。这个函数可以接受任意数量的参数。\n"
-"[codeblock]\n"
-"min(1, 7, 3, -6, 5) # 返回 -6\n"
-"[/codeblock]"
-
-msgid ""
"Returns the minimum of two [float] values.\n"
"[codeblock]\n"
"minf(3.6, 24) # Returns 3.6\n"
@@ -2859,44 +1909,6 @@ msgstr ""
"[/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 ""
"Returns the result of [param base] raised to the power of [param exp].\n"
"In GDScript, this is the equivalent of the [code]**[/code] operator.\n"
"[codeblock]\n"
@@ -3054,42 +2066,6 @@ msgstr ""
"[/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"
@@ -3230,6 +2206,68 @@ msgstr ""
"[/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 [url=https://en.wikipedia.org/wiki/Normal_distribution]normally-"
+"distributed[/url], pseudo-random floating-point value from the specified "
+"[param mean] and a standard [param deviation]. This is also known as a "
+"Gaussian distribution.\n"
+"[b]Note:[/b] This method uses the [url=https://en.wikipedia.org/wiki/"
+"Box%E2%80%93Muller_transform]Box-Muller transform[/url] algorithm."
+msgstr ""
+"返回一个[url=https://en.wikipedia.org/wiki/Normal_distribution]正态分布[/url]"
+"的伪随机数,该正态分布具有指定 [param mean] 和标准 [param deviation]。这也被称"
+"为高斯分布。\n"
+"[b]注意:[/b]该方法使用 [url=https://en.wikipedia.org/wiki/"
+"Box%E2%80%93Muller_transform]Box-Muller 变换[/url]算法。"
+
+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"
@@ -3326,18 +2364,6 @@ msgstr ""
"对于需要多个范围的复杂用例,请考虑改用 [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 ""
"Rotates [param from] toward [param to] by the [param delta] amount. Will not "
"go past [param to].\n"
"Similar to [method move_toward], but interpolates correctly when the angles "
@@ -3581,6 +2607,59 @@ msgstr ""
"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"
+"snappedf(32.0, 2.5) # Returns 32.5\n"
+"snappedf(3.14159, 0.01) # Returns 3.14\n"
+"[/codeblock]"
+msgstr ""
+"返回最接近 [param x] 的 [param step] 的倍数。也可用于将浮点数四舍五入为任意的"
+"小数位数。\n"
+"[method snapped] 的类型安全版本,返回一个 [float]。\n"
+"[codeblock]\n"
+"snappedf(32.0, 2.5) # 返回 32.5\n"
+"snappedf(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"
@@ -3811,51 +2890,6 @@ msgstr ""
"[b]注意:[/b]编码 [Callable] 不受支持,无论数据如何,都会导致空值。"
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]\n"
-"[b]Note:[/b] Converting [Signal] or [Callable] is not supported and will "
-"result in an empty value for these types, regardless of their data."
-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]\n"
-"[b]注意:[/b]不支持转换 [Signal] 和 [Callable],这些类型无论有什么数据,转换后"
-"都是空值。"
-
-msgid ""
"Returns a [WeakRef] instance holding a weak reference to [param obj]. Returns "
"an empty [WeakRef] instance if [param obj] is [code]null[/code]. Prints an "
"error and returns [code]null[/code] if [param obj] is neither [Object]-"
@@ -6493,9 +5527,9 @@ msgid ""
"Vector3.AXIS_Z]).\n"
"For an example, see [method get_longest_axis]."
msgstr ""
-"返回该边界框的 [member size] 的最长轴的索引(请参阅 [constant Vector3."
-"AXIS_X]、[constant Vector3.AXIS_Y]、和 [constant Vector3.AXIS_Z])。\n"
-"有关示例,请参阅 [method get_longest_axis]。"
+"返回该边界框的 [member size] 的最长轴的索引(见 [constant Vector3.AXIS_X]、"
+"[constant Vector3.AXIS_Y] 和 [constant Vector3.AXIS_Z])。\n"
+"示例见 [method get_longest_axis]。"
msgid ""
"Returns the longest dimension of this bounding box's [member size].\n"
@@ -6527,7 +5561,7 @@ msgid ""
"See also [method get_shortest_axis_index] and [method get_shortest_axis_size]."
msgstr ""
"返回该边界框的 [member size] 的最短归一化轴,作为 [Vector3]([constant "
-"Vector3.RIGHT]、[constant Vector3.UP]、或 [constant Vector3.BACK])。\n"
+"Vector3.RIGHT]、[constant Vector3.UP] 或 [constant Vector3.BACK])。\n"
"[codeblocks]\n"
"[gdscript]\n"
"var box = AABB(Vector3(0, 0, 0), Vector3(2, 4, 8))\n"
@@ -6552,9 +5586,9 @@ msgid ""
"Vector3.AXIS_Z]).\n"
"For an example, see [method get_shortest_axis]."
msgstr ""
-"返回该边界框的 [member size] 的最短轴的索引(请参阅 [constant Vector3."
-"AXIS_X]、[constant Vector3.AXIS_Y]、和 [constant Vector3.AXIS_Z])。\n"
-"有关示例,请参阅 [method get_shortest_axis]。"
+"返回该边界框的 [member size] 的最短轴的索引(见 [constant Vector3.AXIS_X]、"
+"[constant Vector3.AXIS_Y] 和 [constant Vector3.AXIS_Z])。\n"
+"示例见 [method get_shortest_axis]。"
msgid ""
"Returns the shortest dimension of this bounding box's [member size].\n"
@@ -7220,9 +6254,6 @@ msgstr ""
msgid "3D Physics Tests Demo"
msgstr "3D 物理测试演示"
-msgid "Third Person Shooter Demo"
-msgstr "第三人称射击演示"
-
msgid "3D Voxel Demo"
msgstr "3D 体素演示"
@@ -7630,8 +6661,8 @@ msgstr ""
"animation.length = 2.0\n"
"[/gdscript]\n"
"[csharp]\n"
-"# 创建动画,让“Enemy”节点在 2.0 秒内\n"
-"# 向右移动 100 像素。\n"
+"// 创建动画,让“Enemy”节点在 2.0 秒内\n"
+"// 向右移动 100 像素。\n"
"var animation = new Animation();\n"
"int trackIndex = animation.AddTrack(Animation.TrackType.Value);\n"
"animation.TrackSetPath(trackIndex, \"Enemy:position:x\");\n"
@@ -8139,16 +7170,6 @@ msgstr "在关键帧之间更新并保持值。"
msgid "Update at the keyframes."
msgstr "在关键帧更新。"
-msgid ""
-"Same as [constant UPDATE_CONTINUOUS] but works as a flag to capture the value "
-"of the current object and perform interpolation in some methods. See also "
-"[method AnimationMixer.capture] and [method AnimationPlayer."
-"play_with_capture]."
-msgstr ""
-"与 [constant UPDATE_CONTINUOUS] 相同,但是会捕获当前对象的取值并在部分方法中进"
-"行插值。另见 [method AnimationMixer.capture] 和 [method AnimationPlayer."
-"play_with_capture]。"
-
msgid "At both ends of the animation, the animation will stop playing."
msgstr "在动画的两端,动画将停止播放。"
@@ -8308,17 +7329,6 @@ msgstr ""
"返回包含 [param animation] 的 [AnimationLibrary] 的键;如果找不到,则返回一个"
"空的 [StringName]。"
-msgid ""
-"Returns the first [AnimationLibrary] with key [param name] or [code]null[/"
-"code] if not found.\n"
-"To get the [AnimationPlayer]'s global animation library, use "
-"[code]get_animation_library(\"\")[/code]."
-msgstr ""
-"返回第一个键为 [param name] 的 [AnimationLibrary],如果没有找到则返回 "
-"[code]null[/code]。\n"
-"要获得 [AnimationPlayer] 的全局动画库,请使用 "
-"[code]get_animation_library(\"\")[/code]。"
-
msgid "Returns the list of stored library keys."
msgstr "返回存储库的键名列表。"
@@ -8637,20 +7647,6 @@ 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 "Removes the [AnimationLibrary] associated with the key [param name]."
msgstr "移除与键 [param name] 关联的 [AnimationLibrary]。"
@@ -8771,8 +7767,8 @@ msgstr ""
"或 [code]\"character/mesh:transform/local\"[/code]。\n"
"如果轨道的类型是 [constant Animation.TYPE_POSITION_3D]、[constant Animation."
"TYPE_ROTATION_3D]、或者 [constant Animation.TYPE_SCALE_3D],那么将取消视觉上的"
-"变换,其动画看起来将是留在原地。参阅 [method get_root_motion_position]、"
-"[method get_root_motion_rotation]、[method get_root_motion_scale]、和 "
+"变换,其动画看起来将是留在原地。另见 [method get_root_motion_position]、"
+"[method get_root_motion_rotation]、[method get_root_motion_scale]、"
"[RootMotionView]。"
msgid "The node which node path references will travel from."
@@ -8802,13 +7798,6 @@ msgstr ""
"除。"
msgid ""
-"Editor only. Notifies when the property have been updated to update dummy "
-"[AnimationPlayer] in animation player editor."
-msgstr ""
-"仅用于编辑器。当属性已完成更新进而更新动画播放编辑器中的虚拟 "
-"[AnimationPlayer] 时发出通知。"
-
-msgid ""
"Process animation during physics frames (see [constant Node."
"NOTIFICATION_INTERNAL_PHYSICS_PROCESS]). This is especially useful when "
"animating physics bodies."
@@ -8839,6 +7828,24 @@ msgid "Make method calls immediately when reached in the animation."
msgstr "在动画中达到时立即进行方法调用。"
msgid ""
+"An [constant Animation.UPDATE_DISCRETE] track value takes precedence when "
+"blending [constant Animation.UPDATE_CONTINUOUS] or [constant Animation."
+"UPDATE_CAPTURE] track values and [constant Animation.UPDATE_DISCRETE] track "
+"values. This is the default behavior for [AnimationPlayer].\n"
+"[b]Note:[/b] If a value track has non-numeric type key values, it is "
+"internally converted to use [constant "
+"ANIMATION_CALLBACK_MODE_DISCRETE_DOMINANT] with [constant Animation."
+"UPDATE_DISCRETE]."
+msgstr ""
+"将 [constant Animation.UPDATE_CONTINUOUS] 或 [constant Animation."
+"UPDATE_CAPTURE] 轨道值与 [constant Animation.UPDATE_DISCRETE] 轨道值混合时,"
+"[constant Animation.UPDATE_DISCRETE] 轨道值优先。这是 [AnimationPlayer] 的默认"
+"行为。\n"
+"[b]注意:[/b]如果值轨道具有非数字类型键值,则会在内部转换为使用 [constant "
+"ANIMATION_CALLBACK_MODE_DISCRETE_DOMINANT] 和 [constant Animation."
+"UPDATE_DISCRETE]。"
+
+msgid ""
"An [constant Animation.UPDATE_CONTINUOUS] or [constant Animation."
"UPDATE_CAPTURE] track value takes precedence when blending the [constant "
"Animation.UPDATE_CONTINUOUS] or [constant Animation.UPDATE_CAPTURE] track "
@@ -8861,18 +7868,6 @@ msgstr ""
msgid "Base class for [AnimationTree] nodes. Not related to scene nodes."
msgstr "[AnimationTree] 节点的基类。与场景节点无关。"
-msgid ""
-"Base resource for [AnimationTree] nodes. In general, it's not used directly, "
-"but you can create custom ones with custom blending formulas.\n"
-"Inherit this when creating animation nodes mainly for use in "
-"[AnimationNodeBlendTree], otherwise [AnimationRootNode] should be used "
-"instead."
-msgstr ""
-"[AnimationTree] 节点的基础资源。通常不会直接使用,但你可以使用自定义混合公式创"
-"建自定义节点。\n"
-"创建动画节点时继承这个类主要是用在 [AnimationNodeBlendTree] 中,否则应改用 "
-"[AnimationRootNode]。"
-
msgid "Using AnimationTree"
msgstr "使用 AnimationTree"
@@ -8891,6 +7886,14 @@ msgstr ""
msgid ""
"When inheriting from [AnimationRootNode], implement this virtual method to "
+"return all child animation nodes in order as a [code]name: node[/code] "
+"dictionary."
+msgstr ""
+"继承 [AnimationRootNode] 时,实现这个虚方法可以用 [code]名称:节点[/code] 字典"
+"的形式按顺序返回所有子动画节点。"
+
+msgid ""
+"When inheriting from [AnimationRootNode], implement this virtual method to "
"return the default value of a [param parameter]. Parameters are custom local "
"memory used for your animation nodes, given a resource can be reused in "
"multiple trees."
@@ -8926,25 +7929,6 @@ msgstr ""
"只读。参数是动画节点的自定义本地存储,资源可以在多个树中重用。"
msgid ""
-"When inheriting from [AnimationRootNode], implement this virtual method to "
-"run some code when this animation 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 animation node. This is only useful for animation nodes "
"created for use in an [AnimationNodeBlendTree]. If the addition fails, "
"returns [code]false[/code]."
@@ -8976,6 +7960,15 @@ msgstr ""
"是绝对的。可以选择传入过滤模式(选项请参阅 [enum FilterAction])。"
msgid ""
+"Blend another animation node (in case this animation node contains child "
+"animation nodes). This function is only useful if you inherit from "
+"[AnimationRootNode] instead, otherwise editors will not display your "
+"animation node for addition."
+msgstr ""
+"混合另一个动画节点(在这个动画节点包含子动画节点的情况下)。这个函数只有在你继"
+"承 [AnimationRootNode] 时才有用,否则编辑器在添加节点时不会显示你的动画节点。"
+
+msgid ""
"Returns the input index which corresponds to [param name]. If not found, "
"returns [code]-1[/code]."
msgstr ""
@@ -9611,22 +8604,6 @@ msgid ""
"transition will be linear."
msgstr "确定如何缓动动画之间的淡入淡出。如果为空,过渡将是线性的。"
-msgid ""
-"The fade-in duration. For example, setting this to [code]1.0[/code] for a 5 "
-"second length animation will produce a cross-fade that starts at 0 second and "
-"ends at 1 second during the animation."
-msgstr ""
-"淡入持续时间。例如,将此属性设置为 [code]1.0[/code],对于 5 秒长的动画,将在动"
-"画期间产生从 0 秒开始到 1 秒结束的交叉淡入淡出。"
-
-msgid ""
-"The fade-out duration. For example, setting this to [code]1.0[/code] for a 5 "
-"second length animation will produce a cross-fade that starts at 4 second and "
-"ends at 5 second during the animation."
-msgstr ""
-"淡出持续时间。例如,将此属性设置为 [code]1.0[/code],对于 5 秒长的动画,将产生"
-"从 4 秒开始到 5 秒结束的交叉淡入淡出。"
-
msgid "The blend type."
msgstr "混合类型。"
@@ -10002,9 +8979,6 @@ msgid ""
"Ease curve for better control over cross-fade between this state and the next."
msgstr "缓动曲线可以更好地控制此状态和下一个状态之间的交叉淡入淡出。"
-msgid "The time to cross-fade between this state and the next."
-msgstr "这个状态和下一个状态之间的交叉渐变时间。"
-
msgid "Emitted when [member advance_condition] is changed."
msgstr "变更 [member advance_condition] 时发出。"
@@ -10070,20 +9044,22 @@ msgid "AnimationTree"
msgstr "AnimationTree"
msgid ""
-"Base class for [AnimationNode]s with more than two input ports that must be "
-"synchronized."
-msgstr "带有两个以上输入端口的 [AnimationNode] 基类,必须对这两个端口进行同步。"
-
-msgid ""
"An animation node used to combine, mix, or blend two or more animations "
"together while keeping them synchronized within an [AnimationTree]."
msgstr ""
-"一种动画节点,用于将两个或多个动画组合、混合、或混合在一起,同时使它们在 "
+"一种动画节点,用于将两个或多个动画组合、混合或混合在一起,同时使它们在 "
"[AnimationTree] 中保持同步。"
msgid "A time-scaling animation node used in [AnimationTree]."
msgstr "对时间进行缩放的动画节点,在 [AnimationTree] 中使用。"
+msgid ""
+"Allows to scale the speed of the animation (or reverse it) in any child "
+"[AnimationNode]s. Setting it to [code]0.0[/code] will pause the animation."
+msgstr ""
+"允许缩放任何子节点中动画的速度(或反转)。将其设置为 [code]0.0[/code] 将暂停动"
+"画。"
+
msgid "A time-seeking animation node used in [AnimationTree]."
msgstr "对时间进行检索的动画节点,在 [AnimationTree] 中使用。"
@@ -10256,10 +9232,6 @@ msgstr ""
msgid "The number of enabled input ports for this animation node."
msgstr "这个动画节点启用的输入端口的数量。"
-msgid ""
-"Cross-fading time (in seconds) between each animation connected to the inputs."
-msgstr "连接到输入的每个动画之间的交叉渐变时间(秒)。"
-
msgid "A node used for animation playback."
msgstr "用于播放动画的节点。"
@@ -10369,33 +9341,6 @@ msgstr ""
"[/code]。"
msgid ""
-"See [method AnimationMixer.capture]. It is almost the same as the following:\n"
-"[codeblock]\n"
-"capture(name, duration, trans_type, ease_type)\n"
-"play(name, custom_blend, custom_speed, from_end)\n"
-"[/codeblock]\n"
-"If name is blank, it specifies [member assigned_animation].\n"
-"If [param duration] is a negative value, the duration is set to the interval "
-"between the current position and the first key, when [param from_end] is "
-"[code]true[/code], uses the interval between the current position and the "
-"last key instead.\n"
-"[b]Note:[/b] The [param duration] takes [member speed_scale] into account, "
-"but [param custom_speed] does not, because the capture cache is interpolated "
-"with the blend result and the result may contain multiple animations."
-msgstr ""
-"见 [method AnimationMixer.capture]。几乎与下列代码等价:\n"
-"[codeblock]\n"
-"capture(name, duration, trans_type, ease_type)\n"
-"play(name, custom_blend, custom_speed, from_end)\n"
-"[/codeblock]\n"
-"如果名称为空,则指定的是 [member assigned_animation]。\n"
-"如果 [param duration] 为负数,则时长为当前位置和第一个关键帧的间隔,[param "
-"from_end] 为 [code]true[/code] 时使用的是当前位置和最后一个关键帧的间隔。\n"
-"[b]注意:[/b][param duration] 会考虑 [member speed_scale],但是 [param "
-"custom_speed] 不会考虑,因为捕获缓存是和混合结果进行插值的,而插值结果可能包含"
-"多个动画。"
-
-msgid ""
"Queues an animation for playback once the current one is done.\n"
"[b]Note:[/b] If a looped animation is currently playing, the queued animation "
"will never play unless the looped animation is stopped somehow."
@@ -10638,7 +9583,7 @@ msgstr ""
"返回相交的 [Area2D] 的列表。重叠区域的 [member CollisionObject2D."
"collision_layer] 必须是这个区域 [member CollisionObject2D.collision_mask] 的一"
"部分,这样才能被检测到。\n"
-"出于性能的考虑(所有碰撞都是一起处理的),这个列表会在物理步骤中进行一次修改,"
+"出于性能的考虑(所有碰撞都是一起处理的),这个列表会在物理迭代时进行一次修改,"
"而不是在物体被移动后立即修改。可考虑改用信号。"
msgid ""
@@ -10944,33 +9889,32 @@ msgstr ""
"另请参阅 [signal body_shape_entered]。"
msgid "This area does not affect gravity/damping."
-msgstr "这个区域不影响重力/阻尼。"
+msgstr "该区域不影响重力/阻尼。"
msgid ""
"This area adds its gravity/damping values to whatever has been calculated so "
"far (in [member priority] order)."
msgstr ""
-"该区域将其重力/阻尼值加到迄今为止计算出的任何值上(按 [member priority] 排"
-"序)。"
+"该区域将其重力/阻尼值加到目前已经计算出的结果上(按 [member priority] 顺序)。"
msgid ""
"This area adds its gravity/damping values to whatever has been calculated so "
"far (in [member priority] order), ignoring any lower priority areas."
msgstr ""
-"该区域将其重力/阻尼值添加到到目前为止已计算的任何内容(按 [member priority] 顺"
-"序),而忽略任何较低优先级的区域。"
+"该区域将其重力/阻尼值加到目前已经计算出的结果上(按 [member priority] 顺序),"
+"将忽略任何较低优先级的区域。"
msgid ""
"This area replaces any gravity/damping, even the defaults, ignoring any lower "
"priority areas."
-msgstr "该区域将替换所有重力/阻尼,甚至是默认值,而忽略任何较低优先级的区域。"
+msgstr "该区域将替换所有重力/阻尼,甚至是默认值,将忽略任何较低优先级的区域。"
msgid ""
"This area replaces any gravity/damping calculated so far (in [member "
"priority] order), but keeps calculating the rest of the areas."
msgstr ""
-"这个区域取代了到目前为止计算出的任何重力/阻尼(按 [member priority] 顺序),但"
-"继续计算其余的区域。"
+"该区域将替换目前已经计算出的任何重力/阻尼(按 [member priority] 顺序),但仍将"
+"继续计算其余区域。"
msgid ""
"A region of 3D space that detects other [CollisionObject3D]s entering or "
@@ -11009,9 +9953,6 @@ msgstr ""
"[ConvexPolygonShape3D] 或 [BoxShape3D] 等基础网格,有些情况下也可以用 "
"[CollisionPolygon3D] 代替。"
-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 "
@@ -11023,8 +9964,8 @@ msgstr ""
"返回相交的 [Area3D] 的列表。重叠区域的 [member CollisionObject3D."
"collision_layer] 必须是该区域的 [member CollisionObject3D.collision_mask] 的一"
"部分才能被检测到。\n"
-"出于性能原因(同时处理所有碰撞),此列表在物理步骤期间修改一次,而不是在实体被"
-"移动后立即修改。可考虑改用信号。"
+"出于性能的考虑(所有碰撞都是一起处理的),这个列表会在物理迭代时进行一次修改,"
+"而不是在实体被移动后立即修改。可考虑改用信号。"
msgid ""
"Returns a list of intersecting [PhysicsBody3D]s and [GridMap]s. The "
@@ -11176,23 +10117,6 @@ msgstr ""
"[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 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 "
@@ -11311,97 +10235,9 @@ msgstr ""
msgid "A built-in data structure that holds a sequence of elements."
msgstr "一种内置数据结构,包含一系列元素。"
-msgid ""
-"An array data structure that can contain a sequence of elements of any type. "
-"Elements are accessed by a numerical index starting at 0. Negative indices "
-"are used to count from the back (-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] Arrays are always passed by reference. To get a copy of an array "
-"that can be modified independently of the original array, use [method "
-"duplicate].\n"
-"[b]Note:[/b] Erasing elements while iterating over arrays is [b]not[/b] "
-"supported and will result in unpredictable behavior."
-msgstr ""
-"通用数组,可以包含任意类型的多个元素,可以通过从 0 开始的数字索引进行访问。负"
-"数索引可以用来从后面数起,就像在 Python 中一样(-1 是最后一个元素、-2 是倒数第"
-"二,以此类推)。\n"
-"[b]示例:[/b]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var array = [\"One\", 2, 3, \"Four\"]\n"
-"print(array[0]) # One。\n"
-"print(array[2]) # 3。\n"
-"print(array[-1]) # Four。\n"
-"array[2] = \"Three\"\n"
-"print(array[-2]) # Three。\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var array = new Godot.Collections.Array{\"One\", 2, 3, \"Four\"};\n"
-"GD.Print(array[0]); // One。\n"
-"GD.Print(array[2]); // 3。\n"
-"GD.Print(array[array.Count - 1]); // Four。\n"
-"array[2] = \"Three\";\n"
-"GD.Print(array[array.Count - 2]); // Three。\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"可以使用 [code]+[/code] 运算符连接数组:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var array1 = [\"One\", 2]\n"
-"var array2 = [3, \"Four\"]\n"
-"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// C# 数组无法进行数组串联,但 Godot.Collections.Array 可以。\n"
-"var array1 = new Godot.Collections.Array{\"One\", 2};\n"
-"var array2 = new Godot.Collections.Array{3, \"Four\"};\n"
-"GD.Print(array1 + array2); // Prints [One, 2, 3, Four]\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]数组总是通过引用来传递。要获得一个可以独立于原始数组而被修改的数"
-"组的副本,请使用 [method duplicate]。\n"
-"[b]注意:[/b][b]不[/b]支持在遍历数组时擦除元素,这将导致不可预知的行为。"
-
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]."
@@ -11590,40 +10426,6 @@ msgstr ""
"的,当从编辑器运行时,按索引访问将暂停项目的执行。"
msgid ""
-"Finds the index of an existing value (or the insertion index that maintains "
-"sorting order, if the value is not yet present in the array) using binary "
-"search. Optionally, a [param before] specifier can be passed. If [code]false[/"
-"code], the returned index comes after all existing entries of the value in "
-"the array.\n"
-"[b]Note:[/b] Calling [method bsearch] on an unsorted array results in "
-"unexpected behavior."
-msgstr ""
-"使用二进法查找已有值的索引(如果该值尚未存在于数组中,则为保持排序顺序的插入索"
-"引)。传递 [param before] 说明符是可选的。如果该参数为 [code]false[/code],则"
-"返回的索引位于数组中该值的所有已有的条目之后。\n"
-"[b]注意:[/b]在未排序的数组上调用 [method bsearch] 会产生预料之外的行为。"
-
-msgid ""
-"Finds the index of an existing value (or the insertion index that maintains "
-"sorting order, if the value is not yet present in the array) using binary "
-"search and a custom comparison method. Optionally, a [param before] specifier "
-"can be passed. If [code]false[/code], the returned index comes after all "
-"existing entries of the value in the array. The custom method receives two "
-"arguments (an element from the array and the value searched for) and must "
-"return [code]true[/code] if the first argument is less than the second, and "
-"return [code]false[/code] otherwise.\n"
-"[b]Note:[/b] Calling [method bsearch_custom] on an unsorted array results in "
-"unexpected behavior."
-msgstr ""
-"使用二分法和自定义比较方法查找已有值的索引(如果该值尚未存在于数组中,则为保持"
-"排序顺序的插入索引)。传递 [param before] 说明符是可选的。如果该参数为 "
-"[code]false[/code],则返回的索引位于数组中该值的所有已有条目之后。自定义方法接"
-"收两个参数(数组中的一个元素和搜索到的值),如果第一个参数小于第二个参数,则必"
-"须返回 [code]true[/code],否则返回 [code]false[/code] .\n"
-"[b]注意:[/b]在未排序的数组上调用 [method bsearch_custom] 会产生预料之外的行"
-"为。"
-
-msgid ""
"Clears the array. This is equivalent to using [method resize] with a size of "
"[code]0[/code]."
msgstr "清空数组。相当于调用 [method resize] 时指定大小为 [code]0[/code]。"
@@ -11751,19 +10553,6 @@ msgstr ""
"从编辑器运行时按索引访问将暂停项目执行。"
msgid ""
-"Returns the [enum Variant.Type] constant for a typed array. If the [Array] is "
-"not typed, returns [constant TYPE_NIL]."
-msgstr ""
-"返回类型化数组的 [enum Variant.Type] 常量。如果该 [Array] 不是类型化的,则返"
-"回 [constant TYPE_NIL]。"
-
-msgid "Returns a class name of a typed [Array] of type [constant TYPE_OBJECT]."
-msgstr "返回类型为 [constant TYPE_OBJECT] 的 类型化 [Array] 的类名。"
-
-msgid "Returns the script associated with a typed array tied to a class name."
-msgstr "返回与此类型化数组绑定的类名关联的脚本。"
-
-msgid ""
"Returns [code]true[/code] if the array contains the given value.\n"
"[codeblocks]\n"
"[gdscript]\n"
@@ -11842,9 +10631,9 @@ msgid ""
"identical hash values due to hash collisions."
msgstr ""
"返回代表该数组及其内容的 32 位整数哈希值。\n"
-"[b]注意:[/b]内容相同的 [Array] 会得到一致的哈希值。然而,反之不然。返回一致的"
-"哈希值[i]并不[/i]意味着数组相等,因为不同的数组可能因为哈希碰撞而得到一致的哈"
-"希值。"
+"[b]注意:[/b]内容相同的 [Array] 会得到一致的哈希值。反之则不然。返回一致的哈希"
+"值[i]并不[/i]意味着数组相等,因为不同的数组可能因为哈希碰撞而得到一致的哈希"
+"值。"
msgid ""
"Inserts a new element at a given position in the array. The position must be "
@@ -12510,71 +11299,6 @@ msgstr ""
"为混合形状添加名称,该形状将用 [method add_surface_from_arrays] 添加。必须在添"
"加面之前调用。"
-msgid ""
-"Creates a new surface. [method Mesh.get_surface_count] will become the "
-"[code]surf_idx[/code] for this new surface.\n"
-"Surfaces are created to be rendered using a [param primitive], which may be "
-"any of the values defined in [enum Mesh.PrimitiveType].\n"
-"The [param arrays] argument is an array of arrays. Each of the [constant Mesh."
-"ARRAY_MAX] elements contains an array with some of the mesh data for this "
-"surface as described by the corresponding member of [enum Mesh.ArrayType] or "
-"[code]null[/code] if it is not used by the surface. For example, "
-"[code]arrays[0][/code] is the array of vertices. That first vertex sub-array "
-"is always required; the others are optional. Adding an index array puts this "
-"surface into \"index mode\" where the vertex and other arrays become the "
-"sources of data and the index array defines the vertex order. All sub-arrays "
-"must have the same length as the vertex array (or be an exact multiple of the "
-"vertex array's length, when multiple elements of a sub-array correspond to a "
-"single vertex) or be empty, except for [constant Mesh.ARRAY_INDEX] if it is "
-"used.\n"
-"The [param blend_shapes] argument is an array of vertex data for each blend "
-"shape. Each element is an array of the same structure as [param arrays], but "
-"[constant Mesh.ARRAY_VERTEX], [constant Mesh.ARRAY_NORMAL], and [constant "
-"Mesh.ARRAY_TANGENT] are set if and only if they are set in [param arrays] and "
-"all other entries are [code]null[/code].\n"
-"The [param lods] argument is a dictionary with [float] keys and "
-"[PackedInt32Array] values. Each entry in the dictionary represents a LOD "
-"level of the surface, where the value is the [constant Mesh.ARRAY_INDEX] "
-"array to use for the LOD level and the key is roughly proportional to the "
-"distance at which the LOD stats being used. I.e., increasing the key of a LOD "
-"also increases the distance that the objects has to be from the camera before "
-"the LOD is used.\n"
-"The [param flags] argument is the bitwise or of, as required: One value of "
-"[enum Mesh.ArrayCustomFormat] left shifted by "
-"[code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code] for each custom channel in use, "
-"[constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE], [constant Mesh."
-"ARRAY_FLAG_USE_8_BONE_WEIGHTS], or [constant Mesh."
-"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY].\n"
-"[b]Note:[/b] When using indices, it is recommended to only use points, lines, "
-"or triangles."
-msgstr ""
-"创建一个新的表面。[method Mesh.get_surface_count] 将成为这个新表面的 "
-"[code]surf_idx[/code]。\n"
-"创建表面以使用 [param primitive] 进行渲染,它可以是 [enum Mesh.PrimitiveType] "
-"中定义的任何值。\n"
-"[param arrays] 参数是数组的数组。每个 [constant Mesh.ARRAY_MAX] 元素都包含一个"
-"数组,其中包含此表面的一些网格数据,如 [enum Mesh.ArrayType] 的相应成员所描述"
-"的一样;如果它未被使用,则为 [code]null[/code]。例如,[code]arrays[0][/code] "
-"是顶点数组。始终需要第一个顶点子数组;其他的是可选的。添加索引数组会将此表面置"
-"于“索引模式”,其中顶点和其他数组成为数据源,索引数组定义顶点顺序。所有子数组的"
-"长度必须与顶点数组的长度相同(或者是顶点数组长度的精确倍数,当子数组的多个元素"
-"对应于单个顶点时);或者为空,如果使用了 [constant Mesh.ARRAY_INDEX ] 则除"
-"外。\n"
-"[param blend_shapes] 参数是每个混合形状的顶点数据数组。 每个元素都是与 [param "
-"arrays] 具有相同结构的数组,但是 [constant Mesh.ARRAY_VERTEX]、[constant Mesh."
-"ARRAY_NORMAL] 和 [constant Mesh.ARRAY_TANGENT] 这些条目,当且仅当在 [param "
-"arrays] 被设置且所有其他条目都是 [code]null[/code] 时,会被设置。\n"
-"[param lods] 参数是一个带有 [float] 键和 [PackedInt32Array] 值的字典。字典中的"
-"每个条目代表了表面的一个 LOD 级别,其中值是用于 LOD 级别的 [constant Mesh."
-"ARRAY_INDEX] 数组,键大致与使用 LOD 统计信息的距离成正比。即,增加 LOD 的关键"
-"点也会增加在使用 LOD 之前对象必须与相机的距离。\n"
-"[param flags] 参数是根据需要按位或的:[enum Mesh.ArrayCustomFormat] 的一个值左"
-"移 [code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code],用于每个正在使用的自定义通道,"
-"[constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE]、[constant Mesh."
-"ARRAY_FLAG_USE_8_BONE_WEIGHTS]、或 [constant Mesh."
-"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY]。\n"
-"[b]注意:[/b]使用索引时,建议只使用点、线或三角形。"
-
msgid "Removes all blend shapes from this [ArrayMesh]."
msgstr "移除此 [ArrayMesh] 的所有混合形状。"
@@ -12950,77 +11674,6 @@ msgstr ""
"点最近的位置。"
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 the capacity of the structure backing the points, useful in "
"conjunction with [method reserve_space]."
msgstr ""
@@ -13090,18 +11743,6 @@ 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] 相关联的点的位置。"
@@ -13403,75 +12044,6 @@ msgstr ""
"定点最近的位置。"
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 an array with the IDs of the points that form the connection with the "
"given point.\n"
"[codeblocks]\n"
@@ -13528,18 +12100,6 @@ msgstr ""
"[/codeblocks]"
msgid ""
-"Returns an array with the points that are in the path found by AStar3D "
-"between the given points. The array is ordered from the starting point to the "
-"ending point of the path.\n"
-"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it "
-"will return an empty [PackedVector3Array] and will print an error message."
-msgstr ""
-"返回一个数组,其中包含 AStar3D 在给定点之间找到的路径中的点。数组从路径的起点"
-"到终点进行排序。\n"
-"[b]注意:[/b]这种方法不是线程安全的。如果从 [Thread] 调用,它将返回一个空的 "
-"[PackedVector3Array],并打印一条错误消息。"
-
-msgid ""
"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."
@@ -13653,26 +12213,6 @@ msgstr ""
"[b]注意:[/b]调用该函数后不需要调用 [method update]。"
msgid ""
-"Returns an array with the IDs of the points that form the path found by "
-"AStar2D between the given points. The array is ordered from the starting "
-"point to the ending point of the path."
-msgstr ""
-"返回一个数组,其中包含形成 AStar2D 在给定点之间找到的路径的点的 ID。该数组从路"
-"径的起点到终点排序。"
-
-msgid ""
-"Returns an array with the points that are in the path found by [AStarGrid2D] "
-"between the given points. The array is ordered from the starting point to the "
-"ending point of the path.\n"
-"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it "
-"will return an empty [PackedVector3Array] and will print an error message."
-msgstr ""
-"返回一个数组,其中包含 [AStarGrid2D] 在给定点之间找到的路径上的点。数组从路径"
-"的起点到终点排序。\n"
-"[b]注意:[/b]该方法不是线程安全的。如果从 [Thread] 中调用它,它将返回一个空的 "
-"[PackedVector3Array] 并打印一条错误消息。"
-
-msgid ""
"Indicates that the grid parameters were changed and [method update] needs to "
"be called."
msgstr "表示网格参数发生改变,需要调用 [method update]。"
@@ -14014,8 +12554,41 @@ msgstr ""
msgid "Audio buses"
msgstr "音频总线"
-msgid "Audio Mic Record Demo"
-msgstr "音频麦克风录音演示"
+msgid ""
+"Override this method to customize the [AudioEffectInstance] created when this "
+"effect is applied on a bus in the editor's Audio panel, or through [method "
+"AudioServer.add_bus_effect].\n"
+"[codeblock]\n"
+"extends AudioEffect\n"
+"\n"
+"@export var strength = 4.0\n"
+"\n"
+"func _instantiate():\n"
+" var effect = CustomAudioEffectInstance.new()\n"
+" effect.base = self\n"
+"\n"
+" return effect\n"
+"[/codeblock]\n"
+"[b]Note:[/b] It is recommended to keep a reference to the original "
+"[AudioEffect] in the new instance. Depending on the implementation this "
+"allows the effect instance to listen for changes at run-time and be modified "
+"accordingly."
+msgstr ""
+"覆盖该方法以自定义新创建的 [AudioEffectInstance],它是在编辑器的音频面板中将该"
+"效果应用于总线时,或通过 [method AudioServer.add_bus_effect] 时创建的。\n"
+"[codeblock]\n"
+"extends AudioEffect\n"
+"\n"
+"@export var strength = 4.0\n"
+"\n"
+"func _instantiate():\n"
+" var effect = CustomAudioEffectInstance.new()\n"
+" effect.base = self\n"
+"\n"
+" return effect\n"
+"[/codeblock]\n"
+"[b]注意:[/b]建议在新实例中保留对原始 [AudioEffect] 的引用。根据实现,这允许效"
+"果实例在运行时监听更改并进行相应的修改。"
msgid "Adds an amplifying audio effect to an audio bus."
msgstr "向音频总线添加一个放大的音频效果。"
@@ -14542,6 +13115,42 @@ msgstr "向音频总线添加一个高架滤波器。"
msgid "Reduces all frequencies above the [member AudioEffectFilter.cutoff_hz]."
msgstr "降低所有高于 [member AudioEffectFilter.cutoff_hz] 的频率。"
+msgid "Manipulates the audio it receives for a given effect."
+msgstr "操纵它接收到的音频以获得给定的效果。"
+
+msgid ""
+"An audio effect instance manipulates the audio it receives for a given "
+"effect. This instance is automatically created by an [AudioEffect] when it is "
+"added to a bus, and should usually not be created directly. If necessary, it "
+"can be fetched at run-time with [method AudioServer.get_bus_effect_instance]."
+msgstr ""
+"音频效果实例操纵它接收到的音频以获得给定的效果。该实例在添加到总线时由 "
+"[AudioEffect] 自动创建,通常不应直接创建。如果需要,可以在运行时使用 [method "
+"AudioServer.get_bus_effect_instance] 获取它。"
+
+msgid ""
+"Called by the [AudioServer] to process this effect. When [method "
+"_process_silence] is not overridden or it returns [code]false[/code], this "
+"method is called only when the bus is active.\n"
+"[b]Note:[/b] It is not useful to override this method in GDScript or C#. Only "
+"GDExtension can take advantage of it."
+msgstr ""
+"由 [AudioServer] 调用来处理该效果。当 [method _process_silence] 未被覆盖或返"
+"回 [code]false[/code] 时,该方法仅在总线处于活动状态时调用。\n"
+"[b]注意:[/b]在 GDScript 或 C# 中覆盖该方法没有用。只有 GDExtension 可以利用"
+"它。"
+
+msgid ""
+"Override this method to customize the processing behavior of this effect "
+"instance.\n"
+"Should return [code]true[/code] to force the [AudioServer] to always call "
+"[method _process], even if the bus has been muted or cannot otherwise be "
+"heard."
+msgstr ""
+"覆盖该方法以自定义该效果实例的处理行为。\n"
+"应返回 [code]true[/code] 以强制 [AudioServer] 始终调用 [method _process],即使"
+"总线已静音或无法听到。"
+
msgid "Adds a soft-clip limiter audio effect to an Audio bus."
msgstr "为音频总线添加一个软剪辑限制器音频效果。"
@@ -14829,12 +13438,6 @@ msgstr ""
"这种音频效果不影响声音输出,但可以用于实时音频可视化。\n"
"使用程序生成声音请参阅 [AudioStreamGenerator]。"
-msgid "Audio Spectrum Demo"
-msgstr "音频频谱演示"
-
-msgid "Godot 3.2 will get new audio features"
-msgstr "Godot 3.2 将获得新的音频功能"
-
msgid ""
"The length of the buffer to keep (in seconds). Higher values keep data around "
"for longer, but require more memory."
@@ -15099,6 +13702,16 @@ msgid ""
"Sets the volume of the bus at index [param bus_idx] to [param volume_db]."
msgstr "将索引为 [param bus_idx] 的总线的音量设为 [param volume_db]。"
+msgid ""
+"If set to [code]true[/code], all instances of [AudioStreamPlayback] will call "
+"[method AudioStreamPlayback._tag_used_streams] every mix step.\n"
+"[b]Note:[/b] This is enabled by default in the editor, as it is used by "
+"editor plugins for the audio stream previews."
+msgstr ""
+"如果设置为 [code]true[/code],[AudioStreamPlayback] 的所有实例将在每个混音步骤"
+"调用 [method AudioStreamPlayback._tag_used_streams]。\n"
+"[b]注意:[/b]这在编辑器中默认启用,因为编辑器插件将其用于音频流预览。"
+
msgid "Swaps the position of two effects in bus [param bus_idx]."
msgstr "在索引为 [param bus_idx] 的总线中交换两个效果的位置。"
@@ -15193,6 +13806,26 @@ msgid "Audio Generator Demo"
msgstr "音频生成器演示"
msgid ""
+"Overridable method. Should return the total number of beats of this audio "
+"stream. Used by the engine to determine the position of every beat.\n"
+"Ideally, the returned value should be based off the stream's sample rate "
+"([member AudioStreamWAV.mix_rate], for example)."
+msgstr ""
+"可覆盖的方法。应返回该音频流的总节拍数。由引擎用来确定每个节拍的位置。\n"
+"理想情况下,返回值应基于流的采样率(例如,[member AudioStreamWAV.mix_rate])。"
+
+msgid ""
+"Overridable method. Should return the tempo of this audio stream, in beats "
+"per minute (BPM). Used by the engine to determine the position of every "
+"beat.\n"
+"Ideally, the returned value should be based off the stream's sample rate "
+"([member AudioStreamWAV.mix_rate], for example)."
+msgstr ""
+"可覆盖的方法。应返回该音频流的节奏,以每分钟节拍数(BPM)为单位。由引擎用来确"
+"定每个节拍的位置。\n"
+"理想情况下,返回值应基于流的采样率(例如,[member AudioStreamWAV.mix_rate])。"
+
+msgid ""
"Override this method to customize the returned value of [method get_length]. "
"Should return the length of this audio stream, in seconds."
msgstr ""
@@ -15200,10 +13833,36 @@ msgstr ""
"单位为秒。"
msgid ""
+"Return the controllable parameters of this stream. This array contains "
+"dictionaries with a property info description format (see [method Object."
+"get_property_list]). Additionally, the default value for this parameter must "
+"be added tho each dictionary in \"default_value\" field."
+msgstr ""
+"返回该流的可控制参数。该数组包含具有属性信息描述格式的字典(请参阅 [method "
+"Object.get_property_list])。此外,必须将该参数的默认值添加到 “default_value” "
+"字段中的每个字典中。"
+
+msgid ""
"Override this method to customize the name assigned to this audio stream. "
"Unused by the engine."
msgstr "覆盖该方法,以自定义分配给该音频流的名称。未被引擎使用。"
+msgid ""
+"Override this method to customize the returned value of [method "
+"instantiate_playback]. Should returned a new [AudioStreamPlayback] created "
+"when the stream is played (such as by an [AudioStreamPlayer]).."
+msgstr ""
+"覆盖该方法可以自定义 [method instantiate_playback] 的返回值。应该返回一个在播"
+"放流(例如通过 [AudioStreamPlayer])时创建的新的 [AudioStreamPlayback]。"
+
+msgid ""
+"Override this method to customize the returned value of [method "
+"is_monophonic]. Should return [code]true[/code] if this audio stream only "
+"supports one channel."
+msgstr ""
+"覆盖该方法以自定义 [method is_monophonic] 的返回值。如果该音频流仅支持一个通"
+"道,则应返回 [code]true[/code]。"
+
msgid "Returns the length of the audio stream in seconds."
msgstr "返回音频流的长度,单位为秒。"
@@ -15410,6 +14069,9 @@ msgid ""
"generated audio in real-time."
msgstr "此类旨在与 [AudioStreamGenerator] 一起使用以实时播放生成的音频。"
+msgid "Godot 3.2 will get new audio features"
+msgstr "Godot 3.2 将获得新的音频功能"
+
msgid ""
"Returns [code]true[/code] if a buffer of the size [param amount] can be "
"pushed to the audio sample data buffer without overflowing it, [code]false[/"
@@ -15472,6 +14134,9 @@ msgstr ""
"[code]true[/code] 音频输入才能正常工作。另请参阅该设置的说明,了解与权限和操作"
"系统隐私设置相关的注意事项。"
+msgid "Audio Mic Record Demo"
+msgstr "音频麦克风录音演示"
+
msgid "MP3 audio stream driver."
msgstr "MP3 音频流驱动程序。"
@@ -15587,6 +14252,13 @@ msgstr ""
"[AudioStreamOggVorbis]。"
msgid ""
+"Overridable method. Should return how many times this audio stream has "
+"looped. Most built-in playbacks always return [code]0[/code]."
+msgstr ""
+"可覆盖的方法。应该返回该音频流已经循环了多少次。大多数内置播放始终返回 "
+"[code]0[/code]。"
+
+msgid ""
"Return the current value of a playback parameter by name (see [method "
"AudioStream._get_parameter_list])."
msgstr ""
@@ -15599,6 +14271,38 @@ msgid ""
msgstr "可覆盖的方法。应返回音频流的当前进度,单位为秒。"
msgid ""
+"Overridable method. Should return [code]true[/code] if this playback is "
+"active and playing its audio stream."
+msgstr ""
+"可覆盖的方法。如果该播放处于活动状态并正在播放其音频流,则应返回 [code]true[/"
+"code]。"
+
+msgid ""
+"Override this method to customize how the audio stream is mixed. This method "
+"is called even if the playback is not active.\n"
+"[b]Note:[/b] It is not useful to override this method in GDScript or C#. Only "
+"GDExtension can take advantage of it."
+msgstr ""
+"覆盖该方法以自定义音频流的混合方式。即使播放未激活,也会调用该方法。\n"
+"[b]注意:[/b]在 GDScript 或 C# 中覆盖该方法没有用。只有 GDExtension 可以利用"
+"它。"
+
+msgid ""
+"Override this method to customize what happens when seeking this audio stream "
+"at the given [param position], such as by calling [method AudioStreamPlayer."
+"seek]."
+msgstr ""
+"覆盖该方法以自定义在给定的 [param position] 处查找该音频流时发生的情况,例如通"
+"过调用 [method AudioStreamPlayer.seek]。"
+
+msgid ""
+"Set the current value of a playback parameter by name (see [method "
+"AudioStream._get_parameter_list])."
+msgstr ""
+"按名称设置播放参数的当前值(请参阅 [method AudioStream."
+"_get_parameter_list])。"
+
+msgid ""
"Override this method to customize what happens when the playback starts at "
"the given position, such as by calling [method AudioStreamPlayer.play]."
msgstr ""
@@ -15612,6 +14316,17 @@ msgstr ""
"覆盖该方法以自定义播放停止时发生的情况,例如通过调用 [method "
"AudioStreamPlayer.stop] 覆盖。"
+msgid ""
+"Overridable method. Called whenever the audio stream is mixed if the playback "
+"is active and [method AudioServer.set_enable_tagging_used_audio_streams] has "
+"been set to [code]true[/code]. Editor plugins may use this method to \"tag\" "
+"the current position along the audio stream and display it in a preview."
+msgstr ""
+"可覆盖的方法。如果播放处于活动状态并且 [method AudioServer."
+"set_enable_tagging_used_audio_streams] 已被设置为 [code]true[/code],则每当混"
+"合音频流时调用。编辑器插件可以使用该方法以“标记”音频流中的当前位置并将其显示在"
+"预览中。"
+
msgid "Playback instance for [AudioStreamPolyphonic]."
msgstr "[AudioStreamPolyphonic] 的播放实例。"
@@ -15681,95 +14396,6 @@ msgid ""
"playback."
msgstr "无法为播放分配一个流时由 [method play_stream] 返回。"
-msgid "Plays back audio non-positionally."
-msgstr "播放音频,不考虑所处位置。"
-
-msgid ""
-"Plays an audio stream non-positionally.\n"
-"To play audio positionally, use [AudioStreamPlayer2D] or "
-"[AudioStreamPlayer3D] instead of [AudioStreamPlayer]."
-msgstr ""
-"以非位置方式支持播放音频流。\n"
-"要在位置上播放音频,请使用 [AudioStreamPlayer2D] 或 [AudioStreamPlayer3D] 而不"
-"是 [AudioStreamPlayer]。"
-
-msgid "Returns the position in the [AudioStream] in seconds."
-msgstr "返回 [AudioStream] 中的位置,单位为秒。"
-
-msgid ""
-"Returns the [AudioStreamPlayback] object associated with this "
-"[AudioStreamPlayer]."
-msgstr "返回与此 [AudioStreamPlayer] 关联的 [AudioStreamPlayback] 对象。"
-
-msgid ""
-"Returns whether the [AudioStreamPlayer] can return the [AudioStreamPlayback] "
-"object or not."
-msgstr "返回该 [AudioStreamPlayer] 是否能够返回 [AudioStreamPlayback] 对象。"
-
-msgid "Plays the audio from the given [param from_position], in seconds."
-msgstr "从给定的位置 [param from_position] 播放音频,以秒为单位。"
-
-msgid "Sets the position from which audio will be played, in seconds."
-msgstr "设置音频的播放位置,以秒为单位。"
-
-msgid "Stops the audio."
-msgstr "停止音频。"
-
-msgid "If [code]true[/code], audio plays when added to scene tree."
-msgstr "如果为 [code]true[/code],在添加到场景树时将播放音频。"
-
-msgid ""
-"Bus on which this audio is playing.\n"
-"[b]Note:[/b] When setting this property, keep in mind that no validation is "
-"performed to see if the given name matches an existing bus. This is because "
-"audio bus layouts might be loaded after this property is set. If this given "
-"name can't be resolved at runtime, it will fall back to [code]\"Master\"[/"
-"code]."
-msgstr ""
-"这个音频在哪个总线上播放。\n"
-"[b]注意:[/b]设置这个属性时,请记住它并不会对给定的名称是否与现有总线匹配进行"
-"校验。这是因为音频总线布局可以在设置这个属性后再加载。如果这个给定的名称在运行"
-"时无法解析,就会回退到 [code]\"Master\"[/code]。"
-
-msgid ""
-"The maximum number of sounds this node can play at the same time. Playing "
-"additional sounds after this value is reached will cut off the oldest sounds."
-msgstr ""
-"该节点可以同时播放的最大声音数。达到此值后,播放额外的声音将切断最旧的声音。"
-
-msgid ""
-"If the audio configuration has more than two speakers, this sets the target "
-"channels. See [enum MixTarget] constants."
-msgstr ""
-"如果音频配置有两个以上的扬声器,则设置目标通道。见 [enum MixTarget] 常量。"
-
-msgid ""
-"The pitch and the tempo of the audio, as a multiplier of the audio sample's "
-"sample rate."
-msgstr "音频的音高和节奏,作为音频样本的采样率的倍数。"
-
-msgid "If [code]true[/code], audio is playing."
-msgstr "如果为 [code]true[/code],则播放音频。"
-
-msgid "The [AudioStream] object to be played."
-msgstr "要播放的 [AudioStream] 对象。"
-
-msgid ""
-"If [code]true[/code], the playback is paused. You can resume it by setting "
-"[member stream_paused] to [code]false[/code]."
-msgstr ""
-"如果为 [code]true[/code],则播放会暂停。你可以通过将 [member stream_paused] 设"
-"置为 [code]false[/code]来恢复它。"
-
-msgid "Volume of sound, in dB."
-msgstr "音量,单位为 dB。"
-
-msgid "Emitted when the audio stops playing."
-msgstr "当音频停止播放时发出。"
-
-msgid "The audio will be played only on the first channel."
-msgstr "音频将只在第一个声道中播放。"
-
msgid "The audio will be played on all surround channels."
msgstr "音频将在所有环绕声声道中播放。"
@@ -15809,12 +14435,23 @@ msgid ""
msgstr "返回与该 [AudioStreamPlayer2D] 相关联的 [AudioStreamPlayback] 对象。"
msgid ""
+"Returns whether the [AudioStreamPlayer] can return the [AudioStreamPlayback] "
+"object or not."
+msgstr "返回该 [AudioStreamPlayer] 是否能够返回 [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 "Sets the position from which audio will be played, in seconds."
+msgstr "设置音频的播放位置,以秒为单位。"
+
+msgid "Stops the audio."
+msgstr "停止音频。"
+
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 "
@@ -15829,10 +14466,32 @@ msgstr ""
msgid "The volume is attenuated over distance with this as an exponent."
msgstr "以该属性为指数,将音量随着距离的增加而衰减。"
+msgid "If [code]true[/code], audio plays when added to scene tree."
+msgstr "如果为 [code]true[/code],在添加到场景树时将播放音频。"
+
+msgid ""
+"Bus on which this audio is playing.\n"
+"[b]Note:[/b] When setting this property, keep in mind that no validation is "
+"performed to see if the given name matches an existing bus. This is because "
+"audio bus layouts might be loaded after this property is set. If this given "
+"name can't be resolved at runtime, it will fall back to [code]\"Master\"[/"
+"code]."
+msgstr ""
+"这个音频在哪个总线上播放。\n"
+"[b]注意:[/b]设置这个属性时,请记住它并不会对给定的名称是否与现有总线匹配进行"
+"校验。这是因为音频总线布局可以在设置这个属性后再加载。如果这个给定的名称在运行"
+"时无法解析,就会回退到 [code]\"Master\"[/code]。"
+
msgid "Maximum distance from which audio is still hearable."
msgstr "音频仍可听到的最大距离。"
msgid ""
+"The maximum number of sounds this node can play at the same time. Playing "
+"additional sounds after this value is reached will cut off the oldest sounds."
+msgstr ""
+"该节点可以同时播放的最大声音数。达到此值后,播放额外的声音将切断最旧的声音。"
+
+msgid ""
"Scales the panning strength for this node by multiplying the base [member "
"ProjectSettings.audio/general/2d_panning_strength] with this factor. Higher "
"values will pan audio from left to right more dramatically than lower values."
@@ -15842,15 +14501,33 @@ msgstr ""
"音频。"
msgid ""
+"The pitch and the tempo of the audio, as a multiplier of the audio sample's "
+"sample rate."
+msgstr "音频的音高和节奏,作为音频样本的采样率的倍数。"
+
+msgid ""
"If [code]true[/code], audio is playing or is queued to be played (see [method "
"play])."
msgstr ""
"如果为 [code]true[/code],则音频正在播放,或者已加入播放队列(见 [method "
"play])。"
+msgid "The [AudioStream] object to be played."
+msgstr "要播放的 [AudioStream] 对象。"
+
+msgid ""
+"If [code]true[/code], the playback is paused. You can resume it by setting "
+"[member stream_paused] to [code]false[/code]."
+msgstr ""
+"如果为 [code]true[/code],则播放会暂停。你可以通过将 [member stream_paused] 设"
+"置为 [code]false[/code]来恢复它。"
+
msgid "Base volume before attenuation."
msgstr "衰减前的基础音量。"
+msgid "Emitted when the audio stops playing."
+msgstr "当音频停止播放时发出。"
+
msgid "Plays positional sound in 3D space."
msgstr "在 3D 空间中播放与位置相关的声音。"
@@ -15869,8 +14546,8 @@ msgid ""
"[member volume_db] to a very low value like [code]-100[/code] (which isn't "
"audible to human hearing)."
msgstr ""
-"根据音频收听者的相对位置播放具有位置音效的音频。位置效应包括距离衰减、方向性、"
-"和多普勒效应。为了更逼真,低通滤波器会自动应用于远处的声音。这可以通过将 "
+"根据音频收听者的相对位置播放具有位置音效的音频。位置效应包括距离衰减、方向性和"
+"多普勒效应。为了更逼真,低通滤波器会自动应用于远处的声音。这可以通过将 "
"[member attenuation_filter_cutoff_hz] 设置为 [code]20500[/code] 来禁用。\n"
"默认情况下,音频是从相机的位置听到的,这可以通过在场景中添加一个 "
"[AudioListener3D] 节点,并通过对其调用 [method AudioListener3D.make_current] "
@@ -16154,17 +14831,6 @@ msgstr ""
"了解程序化音频生成。"
msgid ""
-"Saves the AudioStreamWAV as a WAV file to [param path]. Samples with IMA "
-"ADPCM format can't be saved.\n"
-"[b]Note:[/b] A [code].wav[/code] extension is automatically appended to "
-"[param path] if it is missing."
-msgstr ""
-"将 AudioStreamWAV 作为 WAV 文件保存到 [param path]。无法保存 IMA ADPCM 格式的"
-"样本。\n"
-"[b]注意:[/b]如果缺少 [code].wav[/code] 扩展名,则会自动将其追加到 [param "
-"path]。"
-
-msgid ""
"Contains the audio data in bytes.\n"
"[b]Note:[/b] This property expects signed PCM8 data. To convert unsigned PCM8 "
"to signed PCM8, subtract 128 from each byte."
@@ -16921,8 +15587,8 @@ msgid ""
"lighting."
msgstr ""
"如果为 [code]true[/code],则实体会发光。发光会使物体看起来更亮。如果使用 "
-"[VoxelGI]、SDFGI、或 [LightmapGI],并且该对象用于烘焙光照,则该对象还可以将光"
-"投射到其他对象上。"
+"[VoxelGI]、SDFGI 或 [LightmapGI],并且该对象用于烘焙光照,则该对象还可以将光投"
+"射到其他对象上。"
msgid "Multiplier for emitted light. See [member emission_enabled]."
msgstr "发出的光的乘数。请参阅 [member emission_enabled]。"
@@ -17231,8 +15897,8 @@ msgid ""
"in the blue channel. The alpha channel is ignored."
msgstr ""
"要使用的遮挡/粗糙度/金属纹理。这是对 [ORMMaterial3D] 中 [member ao_texture]、"
-"[member roughness_texture]、和 [member metallic_texture] 的更有效替代。环境遮"
-"挡被存储在红色通道中。粗糙度贴图被存储在绿色通道中。金属度贴图被存储在蓝色通道"
+"[member roughness_texture] 和 [member metallic_texture] 的更有效替代。环境遮挡"
+"被存储在红色通道中。粗糙度贴图被存储在绿色通道中。金属度贴图被存储在蓝色通道"
"中。Alpha 通道将被忽略。"
msgid ""
@@ -18160,6 +16826,62 @@ msgstr ""
msgid "A 3×3 matrix for representing 3D rotation and scale."
msgstr "用于表示 3D 旋转和缩放的 3×3 矩阵。"
+msgid ""
+"The [Basis] built-in [Variant] type is a 3×3 [url=https://en.wikipedia.org/"
+"wiki/Matrix_(mathematics)]matrix[/url] used to represent 3D rotation, scale, "
+"and shear. It is frequently used within a [Transform3D].\n"
+"A [Basis] is composed by 3 axis vectors, each representing a column of the "
+"matrix: [member x], [member y], and [member z]. The length of each axis "
+"([method Vector3.length]) influences the basis's scale, while the direction "
+"of all axes influence the rotation. Usually, these axes are perpendicular to "
+"one another. However, when you rotate any axis individually, the basis "
+"becomes sheared. Applying a sheared basis to a 3D model will make the model "
+"appear distorted.\n"
+"A [Basis] is [b]orthogonal[/b] if its axes are perpendicular to each other. A "
+"basis is [b]normalized[/b] if the length of every axis is [code]1[/code]. A "
+"basis is [b]uniform[/b] if all axes share the same length (see [method "
+"get_scale]). A basis is [b]orthonormal[/b] if it is both orthogonal and "
+"normalized, which allows it to only represent rotations. A basis is "
+"[b]conformal[/b] if it is both orthogonal and uniform, which ensures it is "
+"not distorted.\n"
+"For a general introduction, see the [url=$DOCS_URL/tutorials/math/"
+"matrices_and_transforms.html]Matrices and transforms[/url] tutorial.\n"
+"[b]Note:[/b] Godot uses a [url=https://en.wikipedia.org/wiki/Right-"
+"hand_rule]right-handed coordinate system[/url], which is a common standard. "
+"For directions, the convention for built-in types like [Camera3D] is for -Z "
+"to point forward (+X is right, +Y is up, and +Z is back). Other objects may "
+"use different direction conventions. For more information, see the "
+"[url=$DOCS_URL/tutorials/assets_pipeline/importing_scenes.html#d-asset-"
+"direction-conventions]Importing 3D Scenes[/url] tutorial.\n"
+"[b]Note:[/b] The basis matrices are exposed as [url=https://www.mindcontrol."
+"org/~hplus/graphics/matrix-layout.html]column-major[/url] order, which is the "
+"same as OpenGL. However, they are stored internally in row-major order, which "
+"is the same as DirectX."
+msgstr ""
+"[Basis] 内置 [Variant] 类型是一种 3×3 [url=https://en.wikipedia.org/wiki/"
+"Matrix_(mathematics)]矩阵[/url],用于表示 3D 旋转、缩放和剪切。常用于 "
+"[Transform3D]。\n"
+"[Basis] 由 3 个轴向量组成,每个轴向量代表矩阵的一列:[member x]、[member y] "
+"和 [member z]。每个轴的长度([method Vector3.length])都会影响该基的缩放,而所"
+"有轴的方向将影响旋转。通常,这些轴彼此垂直。但是,当你单独旋转任意轴时,该基会"
+"被剪切。对 3D 模型应用剪切基将使模型显得扭曲。\n"
+"如果 [Basis] 的轴彼此垂直,则它是[b]正交的[/b]。如果每个轴的长度为 [code]1[/"
+"code],则该基是[b]归一化的[/b]。如果所有轴共享相同的长度,则该基是[b]均匀的[/"
+"b](请参阅 [method get_scale])。如果一个基既是正交的又是归一化的,则它是[b]正"
+"交归一的[/b],这使得它只能表示旋转。如果一个基既正交又均匀,那么它就是[b]共形"
+"的[/b],这确保了它不被扭曲。\n"
+"通用介绍见教程[url=$DOCS_URL/tutorials/math/matrices_and_transforms.html]《矩"
+"阵与变换》[/url]。\n"
+"[b]注意:[/b]Godot 使用[url=https://zh.wikipedia.org/zh-cn/"
+"%E5%8F%B3%E6%89%8B%E5%AE%9A%E5%89%87]右手坐标系[/url],这是一种普遍标准。方向"
+"方面,[Camera3D] 等内置类型的约定是 -Z 指向前方(+X 为右、+Y 为上、+Z 为后)。"
+"其他对象可能使用不同的方向约定。更多信息见教程[url=$DOCS_URL/tutorials/"
+"assets_pipeline/importing_scenes.html#d-asset-direction-conventions]《导入 3D "
+"场景》[/url]。\n"
+"[b]注意:[/b]基矩阵按[url=https://www.mindcontrol.org/~hplus/graphics/matrix-"
+"layout.html]列为主[/url]的顺序公开,这与 OpenGL 一致。但是内部使用行为主的顺序"
+"存储,这与 DirectX 一致。"
+
msgid "Matrices and transforms"
msgstr "矩阵与变换"
@@ -18169,9 +16891,6 @@ msgstr "使用 3D 变换"
msgid "Matrix Transform Demo"
msgstr "矩阵变换演示"
-msgid "2.5D Demo"
-msgstr "2.5D 演示"
-
msgid "Constructs a [Basis] identical to the [constant IDENTITY]."
msgstr "构造一个与 [constant IDENTITY] 相同的 [Basis]。"
@@ -18186,7 +16905,7 @@ msgid ""
"IDENTITY] basis. With more than one angle consider using [method from_euler], "
"instead."
msgstr ""
-"构造仅表示旋转的 [Basis],给定的 [parma angle] 以弧度为单位,表示围绕 [param "
+"构造仅表示旋转的 [Basis],给定的 [param angle] 以弧度为单位,表示围绕 [param "
"axis] 轴的旋转量。这个轴必须是归一化的向量。\n"
"[b]注意:[/b]与对 [constant IDENTITY] 基使用 [method rotated] 一致。多角度旋转"
"请改用 [method from_euler]。"
@@ -18365,6 +17084,68 @@ msgstr ""
"考虑使用返回欧拉角的 [method get_euler] 方法。"
msgid ""
+"Returns the length of each axis of this basis, as a [Vector3]. If the basis "
+"is not sheared, this is the scaling factor. It is not affected by rotation.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_basis = Basis(\n"
+" Vector3(2, 0, 0),\n"
+" Vector3(0, 4, 0),\n"
+" Vector3(0, 0, 8)\n"
+")\n"
+"# Rotating the Basis in any way preserves its scale.\n"
+"my_basis = my_basis.rotated(Vector3.UP, TAU / 2)\n"
+"my_basis = my_basis.rotated(Vector3.RIGHT, TAU / 4)\n"
+"\n"
+"print(my_basis.get_scale()) # Prints (2, 4, 8).\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myBasis = new Basis(\n"
+" Vector3(2.0f, 0.0f, 0.0f),\n"
+" Vector3(0.0f, 4.0f, 0.0f),\n"
+" Vector3(0.0f, 0.0f, 8.0f)\n"
+");\n"
+"// Rotating the Basis in any way preserves its scale.\n"
+"myBasis = myBasis.Rotated(Vector3.Up, Mathf.Tau / 2.0f);\n"
+"myBasis = myBasis.Rotated(Vector3.Right, Mathf.Tau / 4.0f);\n"
+"\n"
+"GD.Print(myBasis.Scale); // Prints (2, 4, 8).\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] If the value returned by [method determinant] is negative, the "
+"scale is also negative."
+msgstr ""
+"返回该基的每个轴的长度,作为一个 [Vector3]。如果该基没有被剪切,这就是缩放系"
+"数。它不受旋转的影响。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_basis = Basis(\n"
+" Vector3(2, 0, 0),\n"
+" Vector3(0, 4, 0),\n"
+" Vector3(0, 0, 8)\n"
+")\n"
+"# 以任何方式旋转基都会保持其缩放。\n"
+"my_basis = my_basis.rotated(Vector3.UP, TAU / 2)\n"
+"my_basis = my_basis.rotated(Vector3.RIGHT, TAU / 4)\n"
+"\n"
+"print(my_basis.get_scale()) # 输出 (2, 4, 8)。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myBasis = new Basis(\n"
+" Vector3(2.0f, 0.0f, 0.0f),\n"
+" Vector3(0.0f, 4.0f, 0.0f),\n"
+" Vector3(0.0f, 0.0f, 8.0f)\n"
+");\n"
+"// 以任何方式旋转基都会保持其缩放。\n"
+"myBasis = myBasis.Rotated(Vector3.Up, Mathf.Tau / 2.0f);\n"
+"myBasis = myBasis.Rotated(Vector3.Right, Mathf.Tau / 4.0f);\n"
+"\n"
+"GD.Print(myBasis.Scale); // 输出 (2, 4, 8)。\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注意:[/b]如果 [method determinant] 返回的值为负数,则缩放也为负数。"
+
+msgid ""
"Returns the [url=https://en.wikipedia.org/wiki/Invertible_matrix]inverse of "
"this basis's matrix[/url]."
msgstr ""
@@ -18372,6 +17153,15 @@ msgstr ""
"url]。"
msgid ""
+"Returns [code]true[/code] if this basis is conformal. A conformal basis is "
+"both [i]orthogonal[/i] (the axes are perpendicular to each other) and "
+"[i]uniform[/i] (the axes share the same length). This method can be "
+"especially useful during physics calculations."
+msgstr ""
+"如果该基是共形的,则返回 [code]true[/code]。共形的基既是[i]正交的[/i](轴彼此"
+"垂直)又是[i]均匀的[/i](轴共享相同长度)。该方法在物理计算过程中特别有用。"
+
+msgid ""
"Returns [code]true[/code] if this basis and [param b] are approximately "
"equal, by calling [method @GlobalScope.is_equal_approx] on all vector "
"components."
@@ -18387,6 +17177,403 @@ msgstr ""
"[method @GlobalScope.is_finite]。"
msgid ""
+"Creates a new [Basis] with a rotation such that the forward axis (-Z) points "
+"towards the [param target] position.\n"
+"By default, the -Z axis (camera forward) is treated as forward (implies +X is "
+"right). If [param use_model_front] is [code]true[/code], the +Z axis (asset "
+"front) is treated as forward (implies +X is left) and points toward 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 returned basis is "
+"orthonormalized (see [method orthonormalized]). The [param target] and [param "
+"up] vectors cannot be [constant Vector3.ZERO], and cannot be parallel to each "
+"other."
+msgstr ""
+"创建一个带有旋转的新 [Basis],使向前轴(-Z)指向 [param target] 的位置。\n"
+"默认情况下,-Z 轴(相机向前)被视为向前(意味着 +X 位于右侧)。如果 [param "
+"use_model_front] 为 [code]true[/code],则 +Z 轴(资产正面)被视为向前(意味着 "
+"+X 位于左侧)并指向 [param target] 的位置。\n"
+"向上轴(+Y)尽可能靠近 [param up] 向量,同时保持垂直于向前轴。返回的基是正交归"
+"一化的(参见 [method orthonormalized])。[param target] 和 [param up] 向量不能"
+"是 [constant Vector3.ZERO],并且不能彼此平行。"
+
+msgid ""
+"Returns the orthonormalized version of this basis. An orthonormal basis is "
+"both [i]orthogonal[/i] (the axes are perpendicular to each other) and "
+"[i]normalized[/i] (the axes have a length of [code]1[/code]), which also "
+"means it can only represent rotation.\n"
+"It is often useful to call this method to avoid rounding errors on a rotating "
+"basis:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# Rotate this Node3D every frame.\n"
+"func _process(delta):\n"
+" basis = basis.rotated(Vector3.UP, TAU * delta)\n"
+" basis = basis.rotated(Vector3.RIGHT, TAU * delta)\n"
+"\n"
+" basis = basis.orthonormalized()\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// Rotate this Node3D every frame.\n"
+"public override void _Process(double delta)\n"
+"{\n"
+" Basis = Basis.Rotated(Vector3.Up, Mathf.Tau * (float)delta)\n"
+" .Rotated(Vector3.Right, Mathf.Tau * (float)delta)\n"
+" .Orthonormalized();\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回该基的正交归一化版本。正交归一化基既是[i]正交的[/i](轴彼此垂直)又是[i]归"
+"一化的[/i](轴长度为 [code]1[/code]),这也意味着它只能代表旋转。\n"
+"调用该方法通常很有用,以避免旋转基上的舍入错误:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 每帧旋转该 Node3D。\n"
+"func _process(delta):\n"
+" basis = basis.rotated(Vector3.UP, TAU * delta)\n"
+" basis = basis.rotated(Vector3.RIGHT, TAU * delta)\n"
+"\n"
+" basis = basis.orthonormalized()\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 每帧旋转该 Node3D。\n"
+"public override void _Process(double delta)\n"
+"{\n"
+" Basis = Basis.Rotated(Vector3.Up, Mathf.Tau * (float)delta)\n"
+" .Rotated(Vector3.Right, Mathf.Tau * (float)delta)\n"
+" .Orthonormalized();\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns this basis rotated around the given [param axis] by [param angle] (in "
+"radians). The [param axis] must be a normalized vector (see [method Vector3."
+"normalized]).\n"
+"Positive values rotate this basis clockwise around the axis, while negative "
+"values rotate it counterclockwise.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_basis = Basis.IDENTITY\n"
+"var angle = TAU / 2\n"
+"\n"
+"my_basis = my_basis.rotated(Vector3.UP, angle) # Rotate around the up axis "
+"(yaw).\n"
+"my_basis = my_basis.rotated(Vector3.RIGHT, angle) # Rotate around the right "
+"axis (pitch).\n"
+"my_basis = my_basis.rotated(Vector3.BACK, angle) # Rotate around the back "
+"axis (roll).\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myBasis = Basis.Identity;\n"
+"var angle = Mathf.Tau / 2.0f;\n"
+"\n"
+"myBasis = myBasis.Rotated(Vector3.Up, angle); // Rotate around the up axis "
+"(yaw).\n"
+"myBasis = myBasis.Rotated(Vector3.Right, angle); // Rotate around the right "
+"axis (pitch).\n"
+"myBasis = myBasis.Rotated(Vector3.Back, angle); // Rotate around the back "
+"axis (roll).\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回围绕给定 [param axis] 旋转 [param angle](单位为弧度)的基。[param axis] "
+"必须是归一化的向量(请参阅 [method Vector3.normalized])。\n"
+"正值绕该轴顺时针旋转该基,而负值则逆时针旋转该基。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_basis = Basis.IDENTITY\n"
+"var angle = TAU / 2\n"
+"\n"
+"my_basis = my_basis.rotated(Vector3.UP, angle) # 绕向上轴旋转(偏航)。\n"
+"my_basis = my_basis.rotated(Vector3.RIGHT, angle) # 绕向右轴旋转(俯仰)。\n"
+"my_basis = my_basis.rotated(Vector3.BACK, angle) # 绕向后轴旋转(滚动)。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myBasis = Basis.Identity;\n"
+"var angle = Mathf.Tau / 2.0f;\n"
+"\n"
+"myBasis = myBasis.Rotated(Vector3.Up, angle); // 绕向上轴旋转(偏航)。\n"
+"myBasis = myBasis.Rotated(Vector3.Right, angle); // 绕向右轴旋转(俯仰)。\n"
+"myBasis = myBasis.Rotated(Vector3.Back, angle); // 绕向后轴旋转(滚动)。\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns this basis with each axis's components scaled by the given [param "
+"scale]'s components.\n"
+"The basis matrix's rows are multiplied by [param scale]'s components. This "
+"operation is a global scale (relative to the parent).\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_basis = Basis(\n"
+" Vector3(1, 1, 1),\n"
+" Vector3(2, 2, 2),\n"
+" Vector3(3, 3, 3)\n"
+")\n"
+"my_basis = my_basis.scaled(Vector3(0, 2, -2))\n"
+"\n"
+"print(my_basis.x) # Prints (0, 2, -2).\n"
+"print(my_basis.y) # Prints (0, 4, -4).\n"
+"print(my_basis.z) # Prints (0, 6, -6).\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myBasis = new Basis(\n"
+" new Vector3(1.0f, 1.0f, 1.0f),\n"
+" new Vector3(2.0f, 2.0f, 2.0f),\n"
+" new Vector3(3.0f, 3.0f, 3.0f)\n"
+");\n"
+"myBasis = myBasis.Scaled(new Vector3(0.0f, 2.0f, -2.0f));\n"
+"\n"
+"GD.Print(myBasis.X); // Prints (0, 2, -2).\n"
+"GD.Print(myBasis.Y); // Prints (0, 4, -4).\n"
+"GD.Print(myBasis.Z); // Prints (0, 6, -6).\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回该基,其中每个轴的分量都按给定的 [param scale] 的分量缩放。\n"
+"该基矩阵的行乘以 [param scale] 的分量。该操作是全局缩放(相对于父级)。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_basis = Basis(\n"
+" Vector3(1, 1, 1),\n"
+" Vector3(2, 2, 2),\n"
+" Vector3(3, 3, 3)\n"
+")\n"
+"my_basis = my_basis.scaled(Vector3(0, 2, -2))\n"
+"\n"
+"print(my_basis.x) # 输出 (0, 2, -2).\n"
+"print(my_basis.y) # 输出 (0, 4, -4).\n"
+"print(my_basis.z) # 输出 (0, 6, -6).\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myBasis = new Basis(\n"
+" new Vector3(1.0f, 1.0f, 1.0f),\n"
+" new Vector3(2.0f, 2.0f, 2.0f),\n"
+" new Vector3(3.0f, 3.0f, 3.0f)\n"
+");\n"
+"myBasis = myBasis.Scaled(new Vector3(0.0f, 2.0f, -2.0f));\n"
+"\n"
+"GD.Print(myBasis.X); // 输出 (0, 2, -2).\n"
+"GD.Print(myBasis.Y); // 输出 (0, 4, -4).\n"
+"GD.Print(myBasis.Z); // 输出 (0, 6, -6).\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Performs a spherical-linear interpolation with the [param to] basis, given a "
+"[param weight]. Both this basis and [param to] should represent a rotation.\n"
+"[b]Example:[/b] Smoothly rotate a [Node3D] to the target basis over time, "
+"with a [Tween].\n"
+"[codeblock]\n"
+"var start_basis = Basis.IDENTITY\n"
+"var target_basis = Basis.IDENTITY.rotated(Vector3.UP, TAU / 2)\n"
+"\n"
+"func _ready():\n"
+" create_tween().tween_method(interpolate, 0.0, 1.0, 5.0).set_trans(Tween."
+"TRANS_EXPO)\n"
+"\n"
+"func interpolate(weight):\n"
+" basis = start_basis.slerp(target_basis, weight)\n"
+"[/codeblock]"
+msgstr ""
+"使用 [param to] 基在给定 [param weight] 的情况下执行球面线性插值。该基和 "
+"[param to] 两者都应该代表一个旋转。\n"
+"[b]示例:[/b]使用 [Tween] 随时间平滑地将 [Node3D] 旋转到目标基。\n"
+"[codeblock]\n"
+"var start_basis = Basis.IDENTITY\n"
+"var target_basis = Basis.IDENTITY.rotated(Vector3.UP, TAU / 2)\n"
+"\n"
+"func _ready():\n"
+" create_tween().tween_method(interpolate, 0.0, 1.0, 5.0).set_trans(Tween."
+"TRANS_EXPO)\n"
+"\n"
+"func interpolate(weight):\n"
+" basis = start_basis.slerp(target_basis, weight)\n"
+"[/codeblock]"
+
+msgid ""
+"Returns the transposed dot product between [param with] and the [member x] "
+"axis (see [method transposed]).\n"
+"This is equivalent to [code]basis.x.dot(vector)[/code]."
+msgstr ""
+"返回 [param with] 和 [member x] 轴之间的转置点积(请参阅 [method "
+"transposed])。\n"
+"这相当于 [code]basis.x.dot(vector)[/code]。"
+
+msgid ""
+"Returns the transposed dot product between [param with] and the [member y] "
+"axis (see [method transposed]).\n"
+"This is equivalent to [code]basis.y.dot(vector)[/code]."
+msgstr ""
+"返回 [param with] 和 [member y] 轴之间的转置点积(请参阅 [method "
+"transposed])。\n"
+"这相当于 [code]basis.y.dot(vector)[/code]。"
+
+msgid ""
+"Returns the transposed dot product between [param with] and the [member z] "
+"axis (see [method transposed]).\n"
+"This is equivalent to [code]basis.z.dot(vector)[/code]."
+msgstr ""
+"返回 [param with] 和 [member z] 轴之间的转置点积(请参阅 [method "
+"transposed])。\n"
+"这相当于 [code]basis.z.dot(vector)[/code]。"
+
+msgid ""
+"Returns the transposed version of this basis. This turns the basis matrix's "
+"columns into rows, and its rows into columns.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_basis = Basis(\n"
+" Vector3(1, 2, 3),\n"
+" Vector3(4, 5, 6),\n"
+" Vector3(7, 8, 9)\n"
+")\n"
+"my_basis = my_basis.transposed()\n"
+"\n"
+"print(my_basis.x) # Prints (1, 4, 7).\n"
+"print(my_basis.y) # Prints (2, 5, 8).\n"
+"print(my_basis.z) # Prints (3, 6, 9).\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myBasis = new Basis(\n"
+" new Vector3(1.0f, 2.0f, 3.0f),\n"
+" new Vector3(4.0f, 5.0f, 6.0f),\n"
+" new Vector3(7.0f, 8.0f, 9.0f)\n"
+");\n"
+"myBasis = myBasis.Transposed();\n"
+"\n"
+"GD.Print(myBasis.X); // Prints (1, 4, 7).\n"
+"GD.Print(myBasis.Y); // Prints (2, 5, 8).\n"
+"GD.Print(myBasis.Z); // Prints (3, 6, 9).\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回该基的转置版本。这会将基矩阵的列转换为行,并将其行转换为列。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_basis = Basis(\n"
+" Vector3(1, 2, 3),\n"
+" Vector3(4, 5, 6),\n"
+" Vector3(7, 8, 9)\n"
+")\n"
+"my_basis = my_basis.transposed()\n"
+"\n"
+"print(my_basis.x) # 输出 (1, 4, 7).\n"
+"print(my_basis.y) # 输出 (2, 5, 8).\n"
+"print(my_basis.z) # 输出 (3, 6, 9).\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myBasis = new Basis(\n"
+" new Vector3(1.0f, 2.0f, 3.0f),\n"
+" new Vector3(4.0f, 5.0f, 6.0f),\n"
+" new Vector3(7.0f, 8.0f, 9.0f)\n"
+");\n"
+"myBasis = myBasis.Transposed();\n"
+"\n"
+"GD.Print(myBasis.X); // 输出 (1, 4, 7).\n"
+"GD.Print(myBasis.Y); // 输出 (2, 5, 8).\n"
+"GD.Print(myBasis.Z); // 输出 (3, 6, 9).\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"The basis's X axis, and the column [code]0[/code] of the matrix.\n"
+"On the identity basis, this vector points right ([constant Vector3.RIGHT])."
+msgstr ""
+"该基的 X 轴和矩阵的 [code]0[/code] 列。\n"
+"在单位基上,该向量指向右侧([constant Vector3.RIGHT])。"
+
+msgid ""
+"The basis's Y axis, and the column [code]1[/code] of the matrix.\n"
+"On the identity basis, this vector points up ([constant Vector3.UP])."
+msgstr ""
+"该基的 Y 轴和矩阵的第 [code]1[/code] 列。\n"
+"在单位基上,该向量指向上方([constant Vector3.UP])。"
+
+msgid ""
+"The basis's Z axis, and the column [code]2[/code] of the matrix.\n"
+"On the identity basis, this vector points back ([constant Vector3.BACK])."
+msgstr ""
+"该基的 Z 轴和矩阵的第 [code]2[/code] 列。\n"
+"在单位基上,该向量指向后面([constant Vector3.BACK])。"
+
+msgid ""
+"The identity basis. This is a basis with no rotation, no shear, and its scale "
+"being [code]1[/code]. This means that:\n"
+"- The [member x] points right ([constant Vector3.RIGHT]);\n"
+"- The [member y] points up ([constant Vector3.UP]);\n"
+"- The [member z] points back ([constant Vector3.BACK]).\n"
+"[codeblock]\n"
+"var basis := Basis.IDENTITY\n"
+"print(\"| X | Y | Z\")\n"
+"print(\"| %s | %s | %s\" % [basis.x.x, basis.y.x, basis.z.x])\n"
+"print(\"| %s | %s | %s\" % [basis.x.y, basis.y.y, basis.z.y])\n"
+"print(\"| %s | %s | %s\" % [basis.x.z, basis.y.z, basis.z.z])\n"
+"# Prints:\n"
+"# | X | Y | Z\n"
+"# | 1 | 0 | 0\n"
+"# | 0 | 1 | 0\n"
+"# | 0 | 0 | 1\n"
+"[/codeblock]\n"
+"This is identical to creating [constructor Basis] without any parameters. "
+"This constant can be used to make your code clearer, and for consistency with "
+"C#."
+msgstr ""
+"单位基。这是一个没有旋转、没有剪切的基,其缩放为 [code]1[/code]。这意味着:\n"
+"- [member x] 指向右侧([constant Vector3.RIGHT]);\n"
+"- [member y] 指向上方([constant Vector3.UP]);\n"
+"- [member z] 指向后面([constant Vector3.BACK])。\n"
+"[codeblock]\n"
+"var basis := Basis.IDENTITY\n"
+"print(\"| X | Y | Z\")\n"
+"print(\"| %s | %s | %s\" % [basis.x.x, basis.y.x, basis.z.x])\n"
+"print(\"| %s | %s | %s\" % [basis.x.y, basis.y.y, basis.z.y])\n"
+"print(\"| %s | %s | %s\" % [basis.x.z, basis.y.z, basis.z.z])\n"
+"# 输出:\n"
+"# | X | Y | Z\n"
+"# | 1 | 0 | 0\n"
+"# | 0 | 1 | 0\n"
+"# | 0 | 0 | 1\n"
+"[/codeblock]\n"
+"这与创建没有任何参数的 [constructor Basis] 相同。该常量可用于使你的代码更清"
+"晰,并与 C# 保持一致。"
+
+msgid ""
+"When any basis is multiplied by [constant FLIP_X], it negates all components "
+"of the [member x] axis (the X column).\n"
+"When [constant FLIP_X] is multiplied by any basis, it negates the [member "
+"Vector3.x] component of all axes (the X row)."
+msgstr ""
+"当任意基被 [constant FLIP_X] 相乘时,它会取负 [member x] 轴(X 列)的所有分"
+"量。\n"
+"当 [constant FLIP_X] 被任意基相乘时,它会取负所有轴(X 行)的 [member Vector3."
+"x] 分量。"
+
+msgid ""
+"When any basis is multiplied by [constant FLIP_Y], it negates all components "
+"of the [member y] axis (the Y column).\n"
+"When [constant FLIP_Y] is multiplied by any basis, it negates the [member "
+"Vector3.y] component of all axes (the Y row)."
+msgstr ""
+"当任意基被 [constant FLIP_Y] 相乘时,它会取负 [member y] 轴(Y 列)的所有分"
+"量。\n"
+"当 [constant FLIP_Y] 被任意基相乘时,它会取负所有轴(Y 行)的 [member Vector3."
+"y] 分量。"
+
+msgid ""
+"When any basis is multiplied by [constant FLIP_Z], it negates all components "
+"of the [member z] axis (the Z column).\n"
+"When [constant FLIP_Z] is multiplied by any basis, it negates the [member "
+"Vector3.z] component of all axes (the Z row)."
+msgstr ""
+"当任意基被 [constant FLIP_Z] 相乘时,它会取负 [member z] 轴(Z 列)的所有分"
+"量。\n"
+"当 [constant FLIP_Z] 被任意基相乘时,它会取负所有轴(Z 行)的 [member Vector3."
+"z] 分量。"
+
+msgid ""
"Returns [code]true[/code] if the components of both [Basis] matrices are not "
"equal.\n"
"[b]Note:[/b] Due to floating-point precision errors, consider using [method "
@@ -18397,6 +17584,41 @@ msgstr ""
"靠。"
msgid ""
+"Transforms (multiplies) the [param right] basis by this basis.\n"
+"This is the operation performed between parent and child [Node3D]s."
+msgstr ""
+"由该基转换(乘以) [param right] 基。\n"
+"这是父级和子级 [Node3D] 之间执行的操作。"
+
+msgid ""
+"Transforms (multiplies) the [param right] vector by this basis, returning a "
+"[Vector3].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_basis = Basis(Vector3(1, 1, 1), Vector3(1, 1, 1), Vector3(0, 2, 5))\n"
+"print(my_basis * Vector3(1, 2, 3)) # Prints (7, 3, 16)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myBasis = new Basis(new Vector3(1, 1, 1), new Vector3(1, 1, 1), new "
+"Vector3(0, 2, 5));\n"
+"GD.Print(my_basis * new Vector3(1, 2, 3)); // Prints (7, 3, 16)\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"由该基变换(乘以)[param right] 向量,返回一个 [Vector3]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var my_basis = Basis(Vector3(1, 1, 1), Vector3(1, 1, 1), Vector3(0, 2, 5))\n"
+"print(my_basis * Vector3(1, 2, 3)) # 输出 (7, 3, 16)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var myBasis = new Basis(new Vector3(1, 1, 1), new Vector3(1, 1, 1), new "
+"Vector3(0, 2, 5));\n"
+"GD.Print(my_basis * new Vector3(1, 2, 3)); // 输出 (7, 3, 16)\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Multiplies all components of the [Basis] by the given [float]. This affects "
"the basis's scale uniformly, resizing all 3 axes by the [param right] value."
msgstr ""
@@ -18404,6 +17626,27 @@ msgstr ""
"[param right] 值调整所有 3 个轴的大小。"
msgid ""
+"Multiplies all components of the [Basis] by the given [int]. This affects the "
+"basis's scale uniformly, resizing all 3 axes by the [param right] value."
+msgstr ""
+"将该 [Basis] 的所有分量乘以给定的 [int]。这会均匀地影响该基的缩放,并通过 "
+"[param right] 值调整所有 3 个轴的大小。"
+
+msgid ""
+"Divides all components of the [Basis] by the given [float]. This affects the "
+"basis's scale uniformly, resizing all 3 axes by the [param right] value."
+msgstr ""
+"将 [Basis] 的所有分量除以给定的 [float]。这会均匀地影响该基的缩放,并通过 "
+"[param right] 值调整所有 3 个轴的大小。"
+
+msgid ""
+"Divides all components of the [Basis] by the given [int]. This affects the "
+"basis's scale uniformly, resizing all 3 axes by the [param right] value."
+msgstr ""
+"将 [Basis] 的所有分量除以给定的 [int]。这会均匀地影响该基的缩放,并通过 "
+"[param right] 值调整所有 3 个轴的大小。"
+
+msgid ""
"Returns [code]true[/code] if the components of both [Basis] matrices are "
"exactly equal.\n"
"[b]Note:[/b] Due to floating-point precision errors, consider using [method "
@@ -18413,6 +17656,20 @@ msgstr ""
"[b]注意:[/b]由于浮点精度误差,请考虑改用 [method is_equal_approx],这样更可"
"靠。"
+msgid ""
+"Accesses each axis (column) of this basis by their index. Index [code]0[/"
+"code] is the same as [member x], index [code]1[/code] is the same as [member "
+"y], and index [code]2[/code] is the same as [member z].\n"
+"[b]Note:[/b] In C++, this operator accesses the rows of the basis matrix, "
+"[i]not[/i] the columns. For the same behavior as scripting languages, use the "
+"[code]set_column[/code] and [code]get_column[/code] methods."
+msgstr ""
+"通过索引访问该基的每个轴(列)。索引 [code]0[/code] 与 [member x] 相同,索引 "
+"[code]1[/code] 与 [member y] 相同,索引 [code]2[/code] 与 [member z] 相同。\n"
+"[b]注意:[/b]在 C++ 中,该运算符访问基础矩阵的行,而[i]不[/i]是列。对于与脚本"
+"语言相同的行为,请使用 [code]set_column[/code] 和 [code]get_column[/code] 方"
+"法。"
+
msgid "Boolean matrix."
msgstr "布尔矩阵。"
@@ -18620,16 +17877,6 @@ msgstr ""
"点用作 [Skeleton3D]。"
msgid ""
-"A function that is called automatically when the [Skeleton3D] the "
-"BoneAttachment3D node is using has a bone that has changed its pose. This "
-"function is where the BoneAttachment3D node updates its position so it is "
-"correctly bound when it is [i]not[/i] set to override the bone pose."
-msgstr ""
-"当该 BoneAttachment3D 节点正在使用的 [Skeleton3D] 中有骨骼已改变其姿势时,自动"
-"调用的函数。该函数是 BoneAttachment3D 节点更新其位置的地方,以便在[i]未[/i]设"
-"置为覆盖骨骼姿势时正确绑定。"
-
-msgid ""
"Sets the [NodePath] to the external skeleton that the BoneAttachment3D node "
"should use. See [method set_use_external_skeleton] to enable the external "
"[Skeleton3D] node."
@@ -18654,16 +17901,6 @@ msgid "The name of the attached bone."
msgstr "所附着骨骼的名称。"
msgid ""
-"Whether the BoneAttachment3D node will override the bone pose of the bone it "
-"is attached to. When set to [code]true[/code], the BoneAttachment3D node can "
-"change the pose of the bone. When set to [code]false[/code], the "
-"BoneAttachment3D will always be set to the bone's transform."
-msgstr ""
-"BoneAttachment3D 节点是否将覆盖它所附着到的骨骼的骨骼姿势。当设置为 "
-"[code]true[/code] 时,BoneAttachment3D 节点可以改变骨骼的姿势。当设置为 "
-"[code]false[/code] 时,BoneAttachment3D 将始终被设置为骨骼的变换。"
-
-msgid ""
"Describes a mapping of bone names for retargeting [Skeleton3D] into common "
"names defined by a [SkeletonProfile]."
msgstr ""
@@ -19088,15 +18325,19 @@ msgstr ""
"[b]注意:[/b]按钮不处理触摸输入,因此不支持多点触控,因为模拟鼠标在给定时间只"
"能按下一个按钮。请用 [TouchScreenButton] 制作触发游戏移动或动作的按钮。"
-msgid "OS Test Demo"
-msgstr "操作系统测试演示"
-
msgid ""
"Text alignment policy for the button's text, use one of the [enum "
"HorizontalAlignment] constants."
msgstr "按钮文本的文本对齐策略,使用 [enum HorizontalAlignment] 常量之一。"
msgid ""
+"If set to something other than [constant TextServer.AUTOWRAP_OFF], the text "
+"gets wrapped inside the node's bounding rectangle."
+msgstr ""
+"如果设置为 [constant TextServer.AUTOWRAP_OFF] 以外的值,则文本将在节点的边界矩"
+"形内换行。"
+
+msgid ""
"When this property is enabled, text that is too large to fit the button is "
"clipped, when disabled the Button will always be wide enough to hold the text."
msgstr ""
@@ -19347,6 +18588,145 @@ msgstr "当该组中的某个按钮被按下时发出。"
msgid "A built-in type representing a method 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 custom callable used for "
+"different purposes (see [method is_custom]). 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]\n"
+"In GDScript, you can access methods and global functions as [Callable]s:\n"
+"[codeblock]\n"
+"tween.tween_callback(node.queue_free) # Object methods.\n"
+"tween.tween_callback(array.clear) # Methods of built-in types.\n"
+"tween.tween_callback(print.bind(\"Test\")) # Global functions.\n"
+"[/codeblock]\n"
+"[b]Note:[/b] [Dictionary] does not support the above due to ambiguity with "
+"keys.\n"
+"[codeblock]\n"
+"var dictionary = {\"hello\": \"world\"}\n"
+"\n"
+"# This will not work, `clear` is treated as a key.\n"
+"tween.tween_callback(dictionary.clear)\n"
+"\n"
+"# This will work.\n"
+"tween.tween_callback(Callable.create(dictionary, \"clear\"))\n"
+"[/codeblock]"
+msgstr ""
+"可调用体 [Callable] 是表示函数的内置 [Variant] 类型。它可以是 [Object] 实例中"
+"的方法,也可以是用于不同目的的自定义可调用函数(请参阅 [method is_custom])。"
+"与所有 [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) # Prints \"(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]\n"
+"在 GDScript 中,可以将方法和全局函数作为 [Callable] 进行访问:\n"
+"[codeblock]\n"
+"tween.tween_callback(node.queue_free) # Object 的方法。\n"
+"tween.tween_callback(array.clear) # 内置类型的方法。\n"
+"tween.tween_callback(print.bind(\"Test\")) # 全局函数。\n"
+"[/codeblock]\n"
+"[b]注意:[/b]由于键不明确,[Dictionary] 不支持上述内容。\n"
+"[codeblock]\n"
+"var dictionary = {\"hello\": \"world\"}\n"
+"\n"
+"# 这行不通,“clear” 被视为一个键。\n"
+"tween.tween_callback(dictionary.clear)\n"
+"\n"
+"# 这会有效。\n"
+"tween.tween_callback(Callable.create(dictionary, \"clear\"))\n"
+"[/codeblock]"
+
msgid "Constructs an empty [Callable], with no object nor method bound."
msgstr "构造空的 [Callable],没有绑定对象和方法。"
@@ -19354,6 +18734,16 @@ 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].\n"
+"[b]Note:[/b] For methods of built-in [Variant] types, use [method create] "
+"instead."
+msgstr ""
+"创建新的 [Callable],使用指定对象 [param object] 中名为 [param method] 的方"
+"法。\n"
+"[b]注意:[/b]对于内置 [Variant] 类型的方法,请改用 [method create]。"
+
+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]. See also [method unbind].\n"
@@ -19385,6 +18775,52 @@ msgstr ""
"调用该 [Callable] 所代表的方法。可以传递参数,必须与该方法的签名相匹配。"
msgid ""
+"Calls the method represented by this [Callable] in deferred mode, i.e. at the "
+"end of the current frame. Arguments can be passed and should match the "
+"method's signature.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _ready():\n"
+" grab_focus.call_deferred()\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Ready()\n"
+"{\n"
+" Callable.From(GrabFocus).CallDeferred();\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] Deferred calls are processed at idle time. Idle time happens "
+"mainly at the end of process and physics frames. In it, deferred calls will "
+"be run until there are none left, which means you can defer calls from other "
+"deferred calls and they'll still be run in the current idle time cycle. This "
+"means you should not call a method deferred from itself (or from a method "
+"called by it), as this causes infinite recursion the same way as if you had "
+"called the method directly.\n"
+"See also [method Object.call_deferred]."
+msgstr ""
+"使用延迟模式调用该 [Callable] 所代表的方法,即在当前帧的末尾调用。可以传递参"
+"数,必须与该方法的签名相匹配。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _ready():\n"
+" grab_focus.call_deferred()\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Ready()\n"
+"{\n"
+" Callable.From(GrabFocus).CallDeferred();\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注意:[/b]延迟调用会在空闲时间处理。空闲时间主要发生在进程和物理帧的末尾。"
+"延迟调用将在其中一直运行,直到没有调用剩余为止,这意味着你可以从其他延迟调用中"
+"使用延迟调用,并且它们仍将在当前空闲时间周期中运行。这同样意味着你不应从延迟调"
+"用的方法(或从其调用的方法)中延迟调用其自身,因为这会导致无限递归,就像你直接"
+"调用该方法一样。\n"
+"另见 [method Object.call_deferred]。"
+
+msgid ""
"Calls the method represented by this [Callable]. Unlike [method call], this "
"method expects all arguments to be contained inside the [param arguments] "
"[Array]."
@@ -19393,6 +18829,22 @@ msgstr ""
"放在 [param arguments] [Array] 之中。"
msgid ""
+"Creates a new [Callable] for the method named [param method] in the specified "
+"[param variant]. To represent a method of a built-in [Variant] type, a custom "
+"callable is used (see [method is_custom]). If [param variant] is [Object], "
+"then a standard callable will be created instead.\n"
+"[b]Note:[/b] This method is always necessary for the [Dictionary] type, as "
+"property syntax is used to access its entries. You may also use this method "
+"when [param variant]'s type is not known in advance (for polymorphism)."
+msgstr ""
+"为指定的 [param variant] 中名为 [param method] 的方法创建一个新的 [Callable]。"
+"为了表示内置 [Variant] 类型的方法,使用自定义可调用函数(请参阅 [method "
+"is_custom])。如果 [param variant] 是 [Object],则将改为创建一个标准的可调用对"
+"象。\n"
+"[b]注意:[/b]该方法对于 [Dictionary] 类型始终是必需的,因为属性语法被用于访问"
+"其条目。当事先未知 [param variant] 的类型时(对于多态),你也可以使用该方法。"
+
+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)."
@@ -19438,6 +18890,22 @@ msgstr ""
"的哈希值。引擎在 [method hash] 中使用 32 位哈希算法。"
msgid ""
+"Returns [code]true[/code] if this [Callable] is a custom callable. Custom "
+"callables are used:\n"
+"- for binding/unbinding arguments (see [method bind] and [method unbind]);\n"
+"- for representing methods of built-in [Variant] types (see [method "
+"create]);\n"
+"- for representing global, lambda, and RPC functions in GDScript;\n"
+"- for other purposes in the core, GDExtension, and C#."
+msgstr ""
+"如果该 [Callable] 是自定义可调用对象,则返回 [code]true[/code]。使用自定义可调"
+"用对象:\n"
+"- 用于绑定/解除绑定参数(参见 [method bind] 和 [method unbind]);\n"
+"- 用于表示内置 [Variant] 类型的方法(参见 [method create]);\n"
+"- 用于在 GDScript 中表示全局、lambda 和 RPC 函数;\n"
+"- 用于核心、GDExtension 和 C# 中的其他目的。"
+
+msgid ""
"Returns [code]true[/code] if this [Callable] has no target to call the method "
"on."
msgstr "如果该 [Callable] 没有调用方法的目标,则返回 [code]true[/code]。"
@@ -19591,9 +19059,6 @@ msgstr ""
msgid "2D Isometric Demo"
msgstr "2D 等轴演示"
-msgid "2D HDR Demo"
-msgstr "2D HDR 演示"
-
msgid "Aligns the camera to the tracked node."
msgstr "将相机与跟踪的节点对齐。"
@@ -20695,19 +20160,6 @@ msgstr "相机安装在了设备后部。"
msgid "Server keeping track of different cameras accessible in Godot."
msgstr "跟踪 Godot 中可访问的不同摄像头的服务器。"
-msgid ""
-"The [CameraServer] keeps track of different cameras accessible in Godot. "
-"These are external cameras such as webcams or the cameras on your phone.\n"
-"It is notably used to provide AR modules with a video feed from the camera.\n"
-"[b]Note:[/b] This class is currently only implemented on macOS and iOS. On "
-"other platforms, no [CameraFeed]s will be available."
-msgstr ""
-"[CameraServer] 记录了 Godot 中可访问的不同相机。此处的相机指外部相机,例如网络"
-"摄像头或手机上的摄像头。\n"
-"主要用于为 AR 模块提供来自相机的视频源。\n"
-"[b]注意:[/b]这个类目前只在 macOS 和 iOS 上实现。在其他平台上没有可用的 "
-"[CameraFeed]。"
-
msgid "Adds the camera [param feed] to the camera server."
msgstr "将相机源 [param feed] 添加到相机服务器中。"
@@ -20874,43 +20326,6 @@ msgstr ""
msgid "Abstract base class for everything in 2D space."
msgstr "2D 空间中所有对象的抽象基类。"
-msgid ""
-"Abstract base class for everything in 2D space. Canvas items are laid out in "
-"a tree; children inherit and extend their parent's transform. [CanvasItem] is "
-"extended by [Control] for GUI-related nodes, and by [Node2D] for 2D game "
-"objects.\n"
-"Any [CanvasItem] can draw. For this, [method queue_redraw] is called by the "
-"engine, then [constant NOTIFICATION_DRAW] will be received on idle time to "
-"request a redraw. Because of this, canvas items don't need to be redrawn on "
-"every frame, improving the performance significantly. Several functions for "
-"drawing on the [CanvasItem] are provided (see [code]draw_*[/code] functions). "
-"However, they can only be used inside [method _draw], its corresponding "
-"[method Object._notification] or methods connected to the [signal draw] "
-"signal.\n"
-"Canvas items are drawn in tree order on their canvas layer. By default, "
-"children are on top of their parents, so a root [CanvasItem] will be drawn "
-"behind everything. This behavior can be changed on a per-item basis.\n"
-"A [CanvasItem] can be hidden, which will also hide its children. By adjusting "
-"various other properties of a [CanvasItem], you can also modulate its color "
-"(via [member modulate] or [member self_modulate]), change its Z-index, blend "
-"mode, and more."
-msgstr ""
-"2D 空间中所有对象的抽象基类。画布项目以树状排列;子节点继承并扩展其父节点的变"
-"换。[CanvasItem] 由 [Control] 扩展为 GUI 相关的节点,由 [Node2D] 扩展为 2D 游"
-"戏对象。\n"
-"任何 [CanvasItem] 都可以进行绘图。绘图时,引擎会调用 [method queue_redraw],然"
-"后 [constant NOTIFICATION_DRAW] 就会在空闲时被接收到以请求重绘。因此,画布项目"
-"不需要每一帧都重绘,这显著提升了性能。这个类还提供了几个用于在 [CanvasItem] 上"
-"绘图的函数(见 [code]draw_*[/code] 函数)。不过这些函数都只能在 [method "
-"_draw] 及其对应的 [method Object._notification] 或连接到 [signal draw] 的方法"
-"内使用。\n"
-"画布项目在其画布层上是按树状顺序绘制的。默认情况下,子项目位于其父项目的上方,"
-"因此根 [CanvasItem] 将被画在所有项目的后面。这种行为可以针对每个画布项目进行更"
-"改。\n"
-"[CanvasItem] 可以隐藏,隐藏时也会隐藏其子项目。通过调整 [CanvasItem] 的各种其"
-"它属性,你还可以调制它的颜色(通过 [member modulate] 或 [member "
-"self_modulate])、更改 Z 索引、混合模式等。"
-
msgid "Viewport and canvas transforms"
msgstr "Viewport 和画布变换"
@@ -20970,13 +20385,6 @@ 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 colored polygon of any number of points, convex or concave. Unlike "
"[method draw_polygon], a single color must be specified for the whole polygon."
msgstr ""
@@ -21482,6 +20890,15 @@ msgid ""
msgstr "[param event] 的输入发出的变换将在局部空间而不是全局空间中应用。"
msgid ""
+"Moves this node to display on top of its siblings.\n"
+"Internally, the node is moved to the bottom of parent's child list. The "
+"method has no effect on nodes without a parent."
+msgstr ""
+"移动该节点以显示在其同级节点之上。\n"
+"在内部,该节点被移动到父节点的子节点列表的底部。该方法对没有父节点的节点没有影"
+"响。"
+
+msgid ""
"Queues the [CanvasItem] to redraw. During idle time, if [CanvasItem] is "
"visible, [constant NOTIFICATION_DRAW] is sent and [method _draw] is called. "
"This only occurs [b]once[/b] per frame, even if this method has been called "
@@ -21522,6 +20939,10 @@ msgstr ""
"种 [code]popup*()[/code] 函数的其中之一。"
msgid ""
+"Allows the current node to clip child nodes, essentially acting as a mask."
+msgstr "允许当前节点裁剪子节点,本质上是充当遮罩。"
+
+msgid ""
"The rendering layers in which this [CanvasItem] responds to [Light2D] nodes."
msgstr "该 [CanvasItem] 的渲染层,用于响应 [Light2D] 节点。"
@@ -21603,22 +21024,6 @@ msgstr ""
"[code]popup*()[/code] 函数之一。"
msgid ""
-"If [code]true[/code], this [CanvasItem] and its [CanvasItem] child nodes are "
-"sorted according to the Y position. Nodes with a lower Y position are drawn "
-"before those with a higher Y position. If [code]false[/code], Y-sorting is "
-"disabled.\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],则该 [CanvasItem] 及其 [CanvasItem] 子节点按照 Y 位"
-"置排序。Y 位置较低的节点先于 Y 位置较高的节点绘制。如果为 [code]false[/code],"
-"则禁用 Y 排序。\n"
-"可以将 Y 排序的节点进行嵌套。子级 Y 排序的节点,会与父级在同一空间中进行 Y 排"
-"序。此功能可以让你在不更改场景树的情况下,更好地组织场景,或者将场景分为多个场"
-"景。"
-
-msgid ""
"If [code]true[/code], the node's Z index is relative to its parent's Z index. "
"If this node's Z index is 2 and its parent's effective Z index is 3, then "
"this node's effective Z index will be 2 + 3 = 5."
@@ -21628,23 +21033,6 @@ msgstr ""
"将是 2 + 3 = 5。"
msgid ""
-"Z index. Controls the order in which the nodes render. A node with a higher Z "
-"index will display in front of others. Must be between [constant "
-"RenderingServer.CANVAS_ITEM_Z_MIN] and [constant RenderingServer."
-"CANVAS_ITEM_Z_MAX] (inclusive).\n"
-"[b]Note:[/b] Changing the Z index of a [Control] only affects the drawing "
-"order, not the order in which input events are handled. This can be useful to "
-"implement certain UI animations, e.g. a menu where hovered items are scaled "
-"and should overlap others."
-msgstr ""
-"Z 索引。控制节点的渲染顺序。具有较高 Z 索引的节点将显示在其他节点的前面。必须"
-"在 [constant RenderingServer.CANVAS_ITEM_Z_MIN] 和 [constant RenderingServer."
-"CANVAS_ITEM_Z_MAX]之间(包含)。\n"
-"[b]注意:[/b]改变 [Control] 的 Z 索引只影响绘图顺序,不影响处理输入事件的顺"
-"序。可用于实现某些 UI 动画,例如对处于悬停状态的菜单项进行缩放,此时会与其他内"
-"容重叠。"
-
-msgid ""
"Emitted when the [CanvasItem] must redraw, [i]after[/i] the related [constant "
"NOTIFICATION_DRAW] notification, and [i]before[/i] [method _draw] is called.\n"
"[b]Note:[/b] Deferred connections do not allow drawing through the "
@@ -21786,6 +21174,11 @@ msgstr "纹理不会重复。"
msgid "Texture will repeat normally."
msgstr "纹理将正常重复。"
+msgid ""
+"Texture will repeat in a 2×2 tiled mode, where elements at even positions are "
+"mirrored."
+msgstr "纹理将以 2×2 平铺模式重复,其中偶数位置的元素会被镜像。"
+
msgid "Represents the size of the [enum TextureRepeat] enum."
msgstr "代表 [enum TextureRepeat] 枚举的大小。"
@@ -22236,14 +21629,6 @@ msgstr ""
"且 [method is_on_floor] 返回值为 [code]true[/code] 时才有效。"
msgid ""
-"Returns the surface normal of the floor at the last collision point. Only "
-"valid after calling [method move_and_slide] and when [method is_on_floor] "
-"returns [code]true[/code]."
-msgstr ""
-"返回最近一次碰撞点的地面法线。只有在调用了 [method move_and_slide] 并且 "
-"[method is_on_floor] 返回值为 [code]true[/code] 时才有效。"
-
-msgid ""
"Returns the last motion applied to the [CharacterBody2D] during the last call "
"to [method move_and_slide]. The movement can be split into multiple motions "
"when sliding occurs, and this method return the last one, which is useful to "
@@ -22330,14 +21715,6 @@ msgstr ""
"返回最近一次调用 [method move_and_slide] 时,该物体发生碰撞并改变方向的次数。"
msgid ""
-"Returns the surface normal of the wall at the last collision point. Only "
-"valid after calling [method move_and_slide] and when [method is_on_wall] "
-"returns [code]true[/code]."
-msgstr ""
-"返回最近一次碰撞点的墙面法线。只有在调用了 [method move_and_slide] 并且 "
-"[method is_on_wall] 返回值为 [code]true[/code] 时才有效。"
-
-msgid ""
"Returns [code]true[/code] if the body collided with the ceiling on the last "
"call of [method move_and_slide]. Otherwise, returns [code]false[/code]. The "
"[member up_direction] and [member floor_max_angle] are used to determine "
@@ -23160,13 +22537,6 @@ msgstr ""
"正确显示源代码。"
msgid ""
-"Override this method to define how the selected entry should be inserted. If "
-"[param replace] is true, any existing text should be replaced."
-msgstr ""
-"覆盖此方法以定义所选条目应如何插入。如果 [param replace] 为真,任何现有的文本"
-"都应该被替换。"
-
-msgid ""
"Override this method to define what items in [param candidates] should be "
"displayed.\n"
"Both [param candidates] and the return is a [Array] of [Dictionary], see "
@@ -23177,13 +22547,6 @@ msgstr ""
"[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."
@@ -23206,6 +22569,30 @@ msgstr ""
"[b]注意:[/b]这个列表将替换所有当前候选。"
msgid ""
+"Adds a comment delimiter from [param start_key] to [param end_key]. Both keys "
+"should be symbols, and [param start_key] must not be shared with other "
+"delimiters.\n"
+"If [param line_only] is [code]true[/code] or [param end_key] is an empty "
+"[String], the region does not carry over to the next line."
+msgstr ""
+"添加从 [param start_key] 到 [param end_key] 的注释分隔符。两个键都应该是符号,"
+"并且 [param start_key] 不得与其他分隔符共享。\n"
+"如果 [param line_only] 为 [code]true[/code] 或 [param end_key] 为空 [String],"
+"则该区块不会延续到下一行。"
+
+msgid ""
+"Defines a string delimiter from [param start_key] to [param end_key]. Both "
+"keys should be symbols, and [param start_key] must not be shared with other "
+"delimiters.\n"
+"If [param line_only] is [code]true[/code] or [param end_key] is an empty "
+"[String], the region does not carry over to the next line."
+msgstr ""
+"定义从 [param start_key] 到 [param end_key] 的字符串分隔符。两个键都应该是符"
+"号,并且 [param start_key] 不得与其他分隔符共享。\n"
+"如果 [param line_only] 为 [code]true[/code] 或 [param end_key] 为空 [String],"
+"则该区块不会延续到下一行。"
+
+msgid ""
"Returns if the given line is foldable, that is, it has indented lines right "
"below it or a comment / string block."
msgstr ""
@@ -23230,13 +22617,6 @@ msgid "Removes all string delimiters."
msgstr "移除所有字符串分隔符。"
msgid ""
-"Inserts the selected entry into the text. If [param replace] is true, any "
-"existing text is replaced rather than merged."
-msgstr ""
-"将选定的条目插入到文本中。如果 [param replace] 为真,任何现有的文本都会被替"
-"换,而不是被合并。"
-
-msgid ""
"Converts the indents of lines between [param from_line] and [param to_line] "
"to tabs or spaces as set by [member indent_use_spaces].\n"
"Values of [code]-1[/code] convert the entire text."
@@ -23423,16 +22803,6 @@ 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 "设置当前选定的补全选项。"
@@ -23623,6 +22993,17 @@ msgstr ""
"类,确切的值表示它们的距离(就内部类而言)。"
msgid ""
+"The option is from the containing class or a parent class, relative to the "
+"location of the code completion query. Perform a bitwise OR with the class "
+"depth (e.g. [code]0[/code] for the local class, [code]1[/code] for the "
+"parent, [code]2[/code] for the grandparent, etc.) to store the depth of an "
+"option in the class or a parent class."
+msgstr ""
+"该选项来自于所在的类或父类,相对于代码补全查询的位置。请使用类的深度进行按位 "
+"OR(或)运算(例如 [code]0[/code] 表示当前类,[code]1[/code] 表示父类,"
+"[code]2[/code] 表示父类的父类等),从而在当前类或父类中存储选项的深度。"
+
+msgid ""
"The option is from user code which is not local and not in a derived class (e."
"g. Autoload Singletons)."
msgstr "该选项来自用户代码,不是局部,也不是派生类(例如自动加载单例)。"
@@ -23737,8 +23118,20 @@ msgid ""
"of strings, comments, numbers, and other text patterns inside a [TextEdit] "
"control."
msgstr ""
-"通过调整该资源的各种属性,可以更改 [TextEdit] 控件内的字符串、注释、数字、和其"
-"他文本图案的颜色。"
+"通过调整该资源的各种属性,可以更改 [TextEdit] 控件内的字符串、注释、数字和其他"
+"文本图案的颜色。"
+
+msgid ""
+"Adds a color region (such as for comments or strings) from [param start_key] "
+"to [param end_key]. Both keys should be symbols, and [param start_key] must "
+"not be shared with other delimiters.\n"
+"If [param line_only] is [code]true[/code] or [param end_key] is an empty "
+"[String], the region does not carry over to the next line."
+msgstr ""
+"添加从 [param start_key] 到 [param end_key] 的颜色区块(例如注释或字符串)。两"
+"个键都应该是符号,并且 [param start_key] 不得与其他分隔符共享。\n"
+"如果 [param line_only] 为 [code]true[/code] 或 [param end_key] 为空 [String],"
+"则该区块不会延续到下一行。"
msgid ""
"Sets the color for a keyword.\n"
@@ -24188,21 +23581,6 @@ 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 ""
"Called when the mouse pointer enters any of this object's shapes. Requires "
"[member input_ray_pickable] to be [code]true[/code] and at least one [member "
"collision_layer] bit to be set. Note that moving between different shapes "
@@ -24276,16 +23654,6 @@ msgstr ""
"输入事件。"
msgid ""
-"Emitted when the object receives an unhandled [InputEvent]. [param position] "
-"is the location in world space of the mouse pointer on the surface of the "
-"shape with index [param shape_idx] and [param normal] is the normal vector of "
-"the surface at that point."
-msgstr ""
-"当对象收到未处理的 [InputEvent] 时发出。[param position] 是鼠标指针在索引为 "
-"[param shape_idx] 的形状表面上的世界空间位置,[param normal] 是表面在该点的法"
-"向量。"
-
-msgid ""
"Emitted when the mouse pointer enters any of this object's shapes. Requires "
"[member input_ray_pickable] to be [code]true[/code] and at least one [member "
"collision_layer] bit to be set.\n"
@@ -24345,21 +23713,6 @@ msgstr ""
msgid "A node that provides a polygon shape to a [CollisionObject2D] parent."
msgstr "向 [CollisionObject2D] 父级提供多边形形状的节点。"
-msgid ""
-"A node that provides a thickened polygon shape (a prism) to a "
-"[CollisionObject2D] parent and allows to edit it. The polygon can be concave "
-"or convex. This can give a detection shape to an [Area2D] or turn "
-"[PhysicsBody2D] into a solid object.\n"
-"[b]Warning:[/b] A non-uniformly scaled [CollisionShape2D] will likely not "
-"behave as expected. Make sure to keep its scale the same on all axes and "
-"adjust its shape resource instead."
-msgstr ""
-"一个节点,为 [CollisionObject2D] 父级提供加厚多边形形状(角柱体)并允许对其进"
-"行编辑。该多边形可以是凹的或凸的。这可以为 [Area2D] 提供检测形状,也能够将 "
-"[PhysicsBody2D] 转变为实体对象。\n"
-"[b]警告:[/b]非均匀缩放的 [CollisionShape2D] 可能不会按预期运行。可改为确保在"
-"所有轴上保持其缩放相同,并调整其形状资源。"
-
msgid "Collision build mode. Use one of the [enum BuildMode] constants."
msgstr "碰撞构建模式。使用 [enum BuildMode] 常量之一。"
@@ -24386,18 +23739,6 @@ msgstr ""
"边形的对撞机来说效果更好。"
msgid ""
-"The polygon's list of vertices. Each point will be connected to the next, and "
-"the final point will be connected to the first.\n"
-"[b]Note:[/b] The returned vertices are in the local coordinate space of the "
-"given [CollisionPolygon2D].\n"
-"[b]Warning:[/b] The returned value is a clone of the [PackedVector2Array], "
-"not a reference."
-msgstr ""
-"该多边形的顶点列表。每个点都与下一个点相连,最后一个点与第一个点相连。\n"
-"[b]注意:[/b]返回的顶点位于给定的 [CollisionPolygon2D] 的局部坐标空间中。\n"
-"[b]警告:[/b]返回值是 [PackedVector2Array] 的副本,不是引用。"
-
-msgid ""
"Collisions will include the polygon and its contained area. In this mode the "
"node has the same effect as several [ConvexPolygonShape2D] nodes, one for "
"each convex shape in the convex decomposition of the polygon (but without the "
@@ -24451,18 +23792,6 @@ msgid ""
"for more details."
msgstr "生成的 [Shape3D] 的碰撞边距。详情见 [member Shape3D.margin]。"
-msgid ""
-"Array of vertices which define the 2D polygon in the local XY plane.\n"
-"[b]Note:[/b] The returned value is a copy of the original. Methods which "
-"mutate the size or properties of the return value will not impact the "
-"original polygon. To change properties of the polygon, assign it to a "
-"temporary variable and make changes before reassigning the class property."
-msgstr ""
-"顶点数组,定义局部 XY 平面上的 2D 多边形。\n"
-"[b]注意:[/b]返回值为原始值的副本。修改返回值大小或属性的方法不会影响原始的多"
-"边形。要修改该多边形的属性,请先将其赋值给临时变量,修改完成后再重新赋值给该类"
-"属性。"
-
msgid "A node that provides a [Shape2D] to a [CollisionObject2D] parent."
msgstr "向 [CollisionObject2D] 父级提供 [Shape2D] 的节点。"
@@ -24540,6 +23869,9 @@ msgstr "将碰撞形状的形状设置为其所有凸面 [MeshInstance3D] 兄弟
msgid "Use [signal Resource.changed] instead."
msgstr "请改用 [signal Resource.changed]。"
+msgid "This method does nothing."
+msgstr "这个方法什么也不做。"
+
msgid "A disabled collision shape has no effect in the world."
msgstr "禁用的碰撞形状对世界没有任何影响。"
@@ -24585,9 +23917,6 @@ msgstr ""
msgid "2D GD Paint Demo"
msgstr "2D GD 画图演示"
-msgid "Tween Demo"
-msgstr "Tween 演示"
-
msgid "GUI Drag And Drop Demo"
msgstr "GUI 拖放演示"
@@ -24807,12 +24136,6 @@ msgstr ""
"[/codeblocks]"
msgid ""
-"Decodes a [Color] from a RGBE9995 format integer. See [constant Image."
-"FORMAT_RGBE9995]."
-msgstr ""
-"从 RGBE9995 格式的整数解码 [Color]。见 [constant Image.FORMAT_RGBE9995]。"
-
-msgid ""
"Creates a [Color] from the given string, which can be either an HTML color "
"code or a named color (case-insensitive). Returns [param default] if the "
"color cannot be inferred from the string."
@@ -26148,14 +25471,42 @@ msgid "The fill color of the rectangle."
msgstr "该矩形的填充颜色。"
msgid ""
+"More customisation of the rendering pipeline will be added in the future."
+msgstr "未来将添加更多渲染管道的定制。"
+
+msgid "Stores attributes used to customize how a Viewport is rendered."
+msgstr "存储用于自定义视口渲染方式的属性。"
+
+msgid ""
+"The compositor resource stores attributes used to customize how a [Viewport] "
+"is rendered."
+msgstr "合成器资源存储用于自定义 [Viewport] 渲染方式的属性。"
+
+msgid ""
"The custom [CompositorEffect]s that are applied during rendering of viewports "
"using this compositor."
msgstr "使用该合成器的视口在进行渲染时应用的自定义 [CompositorEffect]。"
+msgid ""
+"The implementation may change as more of the rendering internals are exposed "
+"over time."
+msgstr "随着时间的推移,更多的渲染内部结构会被暴露,实现可能会发生变化。"
+
msgid "This resource allows for creating a custom rendering effect."
msgstr "用于创建自定义渲染效果的资源。"
msgid ""
+"This resource defines a custom rendering effect that can be applied to "
+"[Viewport]s through the viewports' [Environment]. You can implement a "
+"callback that is called during rendering at a given stage of the rendering "
+"pipeline and allows you to insert additional passes. Note that this callback "
+"happens on the rendering thread."
+msgstr ""
+"这种资源定义的是自定义渲染效果,可以通过视口的 [Environment] 应用到 "
+"[Viewport] 上。可以实现在渲染管道的给定阶段进行渲染期间调用的回调,并允许插入"
+"其他阶段。请注意,该回调是在渲染线程上执行的。"
+
+msgid ""
"Implement this function with your custom rendering code. [param "
"effect_callback_type] should always match the effect callback type you've "
"specified in [member effect_callback_type]. [param render_data] provides "
@@ -26269,6 +25620,35 @@ msgstr ""
"如果为 [code]true[/code],则会触发镜面反射数据渲染至独立缓冲,在应用效果后进行"
"混合,仅适用于 Forward+ 渲染器。"
+msgid ""
+"The callback is called before our opaque rendering pass, but after depth "
+"prepass (if applicable)."
+msgstr "该回调在我们的不透明渲染阶段之前、在深度前置阶段之后(如果适用)调用。"
+
+msgid ""
+"The callback is called after our opaque rendering pass, but before our sky is "
+"rendered."
+msgstr "该回调在我们的不透明渲染阶段之后、天空渲染之前调用。"
+
+msgid ""
+"The callback is called after our sky is rendered, but before our back buffers "
+"are created (and if enabled, before subsurface scattering and/or screen space "
+"reflections)."
+msgstr ""
+"在渲染天空之后、创建后台缓冲区之前(如果启用,则在次表面散射和/或屏幕空间反射"
+"之前)调用回调。"
+
+msgid ""
+"The callback is called before our transparent rendering pass, but after our "
+"sky is rendered and we've created our back buffers."
+msgstr "在我们的透明渲染阶段之前、渲染天空并且创建了后台缓冲区之后,调用回调。"
+
+msgid ""
+"The callback is called after our transparent rendering pass, but before any "
+"build in post effects and output to our render target."
+msgstr ""
+"该回调在我们的透明渲染阶段之后、任何构建后期效果和输出到渲染目标之前调用。"
+
msgid "Represents the size of the [enum EffectCallbackType] enum."
msgstr "代表 [enum EffectCallbackType] 枚举的大小。"
@@ -26674,204 +26054,6 @@ msgstr "代表 [enum Param] 枚举的大小。"
msgid "Helper class to handle INI-style files."
msgstr "用于处理 INI 样式文件的辅助类。"
-msgid ""
-"This helper class can be used to store [Variant] values on the filesystem "
-"using INI-style formatting. The stored values are identified by a section and "
-"a key:\n"
-"[codeblock]\n"
-"[section]\n"
-"some_key=42\n"
-"string_example=\"Hello World3D!\"\n"
-"a_vector=Vector3(1, 0, 2)\n"
-"[/codeblock]\n"
-"The stored data can be saved to or parsed from a file, though ConfigFile "
-"objects can also be used directly without accessing the filesystem.\n"
-"The following example shows how to create a simple [ConfigFile] and save it "
-"on disc:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# Create new ConfigFile object.\n"
-"var config = ConfigFile.new()\n"
-"\n"
-"# Store some values.\n"
-"config.set_value(\"Player1\", \"player_name\", \"Steve\")\n"
-"config.set_value(\"Player1\", \"best_score\", 10)\n"
-"config.set_value(\"Player2\", \"player_name\", \"V3geta\")\n"
-"config.set_value(\"Player2\", \"best_score\", 9001)\n"
-"\n"
-"# Save it to a file (overwrite if already exists).\n"
-"config.save(\"user://scores.cfg\")\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// Create new ConfigFile object.\n"
-"var config = new ConfigFile();\n"
-"\n"
-"// Store some values.\n"
-"config.SetValue(\"Player1\", \"player_name\", \"Steve\");\n"
-"config.SetValue(\"Player1\", \"best_score\", 10);\n"
-"config.SetValue(\"Player2\", \"player_name\", \"V3geta\");\n"
-"config.SetValue(\"Player2\", \"best_score\", 9001);\n"
-"\n"
-"// Save it to a file (overwrite if already exists).\n"
-"config.Save(\"user://scores.cfg\");\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"This example shows how the above file could be loaded:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var score_data = {}\n"
-"var config = ConfigFile.new()\n"
-"\n"
-"# Load data from a file.\n"
-"var err = config.load(\"user://scores.cfg\")\n"
-"\n"
-"# If the file didn't load, ignore it.\n"
-"if err != OK:\n"
-" return\n"
-"\n"
-"# Iterate over all sections.\n"
-"for player in config.get_sections():\n"
-" # Fetch the data for each section.\n"
-" var player_name = config.get_value(player, \"player_name\")\n"
-" var player_score = config.get_value(player, \"best_score\")\n"
-" score_data[player_name] = player_score\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var score_data = new Godot.Collections.Dictionary();\n"
-"var config = new ConfigFile();\n"
-"\n"
-"// Load data from a file.\n"
-"Error err = config.Load(\"user://scores.cfg\");\n"
-"\n"
-"// If the file didn't load, ignore it.\n"
-"if (err != Error.Ok)\n"
-"{\n"
-" return;\n"
-"}\n"
-"\n"
-"// Iterate over all sections.\n"
-"foreach (String player in config.GetSections())\n"
-"{\n"
-" // Fetch the data for each section.\n"
-" var player_name = (String)config.GetValue(player, \"player_name\");\n"
-" var player_score = (int)config.GetValue(player, \"best_score\");\n"
-" score_data[player_name] = player_score;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"Any operation that mutates the ConfigFile such as [method set_value], [method "
-"clear], or [method erase_section], only changes what is loaded in memory. If "
-"you want to write the change to a file, you have to save the changes with "
-"[method save], [method save_encrypted], or [method save_encrypted_pass].\n"
-"Keep in mind that section and property names can't contain spaces. Anything "
-"after a space will be ignored on save and on load.\n"
-"ConfigFiles can also contain manually written comment lines starting with a "
-"semicolon ([code];[/code]). Those lines will be ignored when parsing the "
-"file. Note that comments will be lost when saving the ConfigFile. This can "
-"still be useful for dedicated server configuration files, which are typically "
-"never overwritten without explicit user action.\n"
-"[b]Note:[/b] The file extension given to a ConfigFile does not have any "
-"impact on its formatting or behavior. By convention, the [code].cfg[/code] "
-"extension is used here, but any other extension such as [code].ini[/code] is "
-"also valid. Since neither [code].cfg[/code] nor [code].ini[/code] are "
-"standardized, Godot's ConfigFile formatting may differ from files written by "
-"other programs."
-msgstr ""
-"该辅助类可用于使用 INI 样式格式在文件系统上存储 [Variant] 值。存储的值由一个小"
-"节和一个键标识:\n"
-"[codeblock]\n"
-"[section]\n"
-"some_key=42\n"
-"string_example=\"Hello World3D!\"\n"
-"a_vector=Vector3(1, 0, 2)\n"
-"[/codeblock]\n"
-"存储的数据可以被保存到文件中或从文件中解析出来,尽管 ConfigFile 对象也可以直接"
-"使用而无需访问文件系统。\n"
-"以下示例显示了如何创建一个简单的 [ConfigFile] 并将其保存在磁盘上:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# 创建新的 ConfigFile 对象。\n"
-"var config = ConfigFile.new()\n"
-"\n"
-"# 存储一些值。\n"
-"config.set_value(\"Player1\", \"player_name\", \"Steve\")\n"
-"config.set_value(\"Player1\", \"best_score\", 10)\n"
-"config.set_value(\"Player2\", \"player_name\", \"V3geta\")\n"
-"config.set_value(\"Player2\", \"best_score\", 9001)\n"
-"\n"
-"# 将其保存到文件中(如果已存在则覆盖)。\n"
-"config.save(\"user://scores.cfg\")\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// 创建新的 ConfigFile 对象。\n"
-"var config = new ConfigFile();\n"
-"\n"
-"// 存储一些值。\n"
-"config.SetValue(\"Player1\", \"player_name\", \"Steve\");\n"
-"config.SetValue(\"Player1\", \"best_score\", 10);\n"
-"config.SetValue(\"Player2\", \"player_name\", \"V3geta\");\n"
-"config.SetValue(\"Player2\", \"best_score\", 9001);\n"
-"\n"
-"// 将其保存到文件中(如果已存在则覆盖)。\n"
-"config.Save(\"user://scores.cfg\");\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"该示例展示了如何加载上面的文件:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var score_data = {}\n"
-"var config = ConfigFile.new()\n"
-"\n"
-"# 从文件加载数据。\n"
-"var err = config.load(\"user://scores.cfg\")\n"
-"\n"
-"# 如果文件没有加载,忽略它。\n"
-"if err != OK:\n"
-" return\n"
-"\n"
-"# 迭代所有小节。\n"
-"for player in config.get_sections():\n"
-" # 获取每个小节的数据。\n"
-" var player_name = config.get_value(player, \"player_name\")\n"
-" var player_score = config.get_value(player, \"best_score\")\n"
-" score_data[player_name] = player_score\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var score_data = new Godot.Collections.Dictionary();\n"
-"var config = new ConfigFile();\n"
-"\n"
-"// 从文件加载数据。\n"
-"Error err = config.Load(\"user://scores.cfg\");\n"
-"\n"
-"// 如果文件没有加载,忽略它。\n"
-"if (err != Error.Ok)\n"
-"{\n"
-" return;\n"
-"}\n"
-"\n"
-"// 迭代所有小节。\n"
-"foreach (String player in config.GetSections())\n"
-"{\n"
-" // 获取每个小节的数据。\n"
-" var player_name = (String)config.GetValue(player, \"player_name\");\n"
-" var player_score = (int)config.GetValue(player, \"best_score\");\n"
-" score_data[player_name] = player_score;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"任何改变 ConfigFile 的操作,例如 [method set_value]、[method clear]、或 "
-"[method erase_section],只会改变加载到内存中的内容。如果要将更改写入文件,则必"
-"须使用 [method save]、[method save_encrypted]、或 [method "
-"save_encrypted_pass] 保存更改。\n"
-"请记住,小节和属性名称不能包含空格。保存和加载时将忽略空格后的任何内容。\n"
-"ConfigFiles 还可以包含以分号([code];[/code])开头的手动编写的注释行。解析文件"
-"时将忽略这些行。请注意,保存 ConfigFile 时注释将丢失。注释对于专用服务器配置文"
-"件仍然很有用,如果没有明确的用户操作,这些文件通常永远不会被覆盖。\n"
-"[b]注意:[/b]为 ConfigFile 指定的文件扩展名对其格式或行为没有任何影响。按照惯"
-"例,此处使用 [code].cfg[/code] 扩展名,但 [code].ini[/code] 等任何其他扩展名也"
-"有效。由于 [code].cfg[/code] 和 [code].ini[/code] 都不是标准化的格式,Godot "
-"的 ConfigFile 格式可能与其他程序编写的文件不同。"
-
msgid "Removes the entire contents of the config."
msgstr "移除配置的全部内容。"
@@ -27266,7 +26448,7 @@ msgid ""
"[/csharp]\n"
"[/codeblocks]"
msgstr ""
-"Godot 调用这个方法把 [param data] 传给你,这是从某个控件的 [method "
+"Godot 调用该方法把 [param data] 传给你,这是从某个控件的 [method "
"_get_drag_data] 获得的结果。Godot 首先会调用 [method _can_drop_data] 来检查是"
"否允许把 [param data] 拖放到 [param at_position],这里的 [param at_position] "
"使用的是这个控件的局部坐标系。\n"
@@ -27322,12 +26504,12 @@ msgid ""
"[/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"
+"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"
@@ -27810,7 +26992,7 @@ msgid ""
"anchor_top]."
msgstr ""
"返回指定 [enum Side] 的锚点。用于 [member anchor_bottom]、[member "
-"anchor_left]、[member anchor_right]、和 [member anchor_top] 的取值方法。"
+"anchor_left]、[member anchor_right] 和 [member anchor_top] 的取值方法。"
msgid ""
"Returns [member offset_left] and [member offset_top]. See also [member "
@@ -27841,7 +27023,7 @@ msgid ""
"a neighbor is not assigned, use [method find_valid_focus_neighbor]."
msgstr ""
"返回指定 [enum Side] 的焦点邻居。用于 [member focus_neighbor_bottom]、[member "
-"focus_neighbor_left]、[member focus_neighbor_right]、和 [member "
+"focus_neighbor_left]、[member focus_neighbor_right] 和 [member "
"focus_neighbor_top] 的取值方法。\n"
"[b]注意:[/b]要查找特定 [enum Side] 上的下一个 [Control],即使未指定邻居,也请"
"使用 [method find_valid_focus_neighbor]。"
@@ -28315,7 +27497,7 @@ msgid ""
"was [code]false[/code], the left anchor would get value 0.5."
msgstr ""
"将指定 [enum Side] 的锚点设置为 [param anchor]。用于 [member anchor_bottom]、"
-"[member anchor_left]、[member anchor_right]、和 [member anchor_top] 的设值函"
+"[member anchor_left]、[member anchor_right] 和 [member anchor_top] 的设值函"
"数。\n"
"如果 [param keep_offset] 为 [code]true[/code],则偏移量不会在该操作后更新。\n"
"如果 [param push_opposite_anchor] 为 [code]true[/code],并且相对的锚点与该锚点"
@@ -28462,7 +27644,7 @@ msgid ""
"offset_right] and [member offset_top]."
msgstr ""
"将指定 [enum Side] 的偏移设置为 [param offset]。用于 [member offset_bottom]、"
-"[member offset_left]、[member offset_right]、和 [member offset_top] 的设值方"
+"[member offset_left]、[member offset_right] 和 [member offset_top] 的设值方"
"法。"
msgid ""
@@ -28554,6 +27736,9 @@ msgstr ""
"将节点的顶部边缘锚定到父控件的原点、中心或末端。会改变该节点发生移动或改变大小"
"时顶部偏移量的更新方式。方便起见,你可以使用 [enum Anchor] 常量。"
+msgid "Use [member Node.auto_translate_mode] instead."
+msgstr "改用 [member Node.auto_translate_mode]。"
+
msgid ""
"Toggles if any text should automatically change to its translated version "
"depending on the current locale."
@@ -28570,16 +27755,6 @@ msgstr ""
"接收输入。"
msgid ""
-"The minimum size of the node's bounding rectangle. If you set it to a value "
-"greater than (0, 0), the node's bounding rectangle will always have at least "
-"this size, even if its content is smaller. If it's set to (0, 0), the node "
-"sizes automatically to fit its content, be it a texture or child nodes."
-msgstr ""
-"节点的边界矩形的最小尺寸。如果你将它设置为大于 (0,0) 的值,节点的边界矩形将始"
-"终至少有这个大小,即使它的内容更小。如果设置为 (0,0),节点的大小会自动适应其"
-"内容,无论是纹理还是子节点。"
-
-msgid ""
"The focus access mode for the control (None, Click or All). Only one Control "
"can be focused at the same time, and it will receive keyboard, gamepad, and "
"mouse signals."
@@ -29073,8 +28248,8 @@ msgid ""
"the keyboard, or using the D-pad buttons on a gamepad. Use with [member "
"focus_mode]."
msgstr ""
-"该节点可以通过鼠标单击、使用键盘上的箭头和 Tab 键、或使用游戏手柄上的方向键来"
-"获取焦点。用于 [member focus_mode]。"
+"该节点可以通过鼠标单击、使用键盘上的箭头和 Tab 键或使用游戏手柄上的方向键来获"
+"取焦点。用于 [member focus_mode]。"
msgid "Sent when the node changes size. Use [member size] to get the new size."
msgstr "当节点改变大小时发送。请使用 [member size] 获取新大小。"
@@ -29109,6 +28284,9 @@ msgstr ""
"[b]注意:[/b][member CanvasItem.z_index] 不影响哪个 Control 会收到该通知。\n"
"另见 [constant NOTIFICATION_MOUSE_EXIT_SELF]。"
+msgid "The reason this notification is sent may change in the future."
+msgstr "发送该通知的原因将来可能会发生变化。"
+
msgid ""
"Sent when the mouse cursor enters the control's visible area, that is not "
"occluded behind other Controls or Windows, provided its [member mouse_filter] "
@@ -29142,26 +28320,6 @@ msgid "Sent when the node loses focus."
msgstr "当节点失去焦点时发送。"
msgid ""
-"Sent when the node needs to refresh its theme items. This happens in one of "
-"the following cases:\n"
-"- The [member theme] property is changed on this node or any of its "
-"ancestors.\n"
-"- The [member theme_type_variation] property is changed on this node.\n"
-"- One of the node's theme property overrides is changed.\n"
-"- The node enters the scene tree.\n"
-"[b]Note:[/b] As an optimization, this notification won't be sent from changes "
-"that occur while this node is outside of the scene tree. Instead, all of the "
-"theme item updates can be applied at once when the node enters the scene tree."
-msgstr ""
-"当节点需要刷新其主题项目时发送。这发生在以下情况之一:\n"
-"- 在该节点或其任何祖先节点上的 [member theme] 属性被更改。\n"
-"- 该节点上的 [member theme_type_variation] 属性被更改。\n"
-"- 该节点的一个主题属性覆盖被更改。\n"
-"- 该节点进入场景树。\n"
-"[b]注意:[/b]作为一种优化,当该节点在场景树之外时,发生的更改不会发送该通知。"
-"相反,所有的主题项更新可以在该节点进入场景树时一次性应用。"
-
-msgid ""
"Sent when this node is inside a [ScrollContainer] which has begun being "
"scrolled when dragging the scrollable area [i]with a touch event[/i]. This "
"notification is [i]not[/i] sent when scrolling by dragging the scrollbar, "
@@ -29173,8 +28331,9 @@ msgstr ""
"当该节点位于 [ScrollContainer] 内部时发送,该容器在通过[i]触摸事件[/i]拖动该可"
"滚动区域时已开始滚动。通过拖动滚动条滚动、使用鼠标滚轮滚动、或使用键盘/游戏手"
"柄事件滚动时,[i]不[/i]会发送该通知。\n"
-"[b]注意:[/b]该信号仅在在 Android 或 iOS 上、或当启用 [member ProjectSettings."
-"input_devices/pointing/emulate_touch_from_mouse] 时的桌面/Web 平台上发出。"
+"[b]注意:[/b]该信号仅会在 Android、iOS、桌面、Web 平台上发出,在桌面/Web 平台"
+"上需要启用 [member ProjectSettings.input_devices/pointing/"
+"emulate_touch_from_mouse]。"
msgid ""
"Sent when this node is inside a [ScrollContainer] which has stopped being "
@@ -29188,8 +28347,9 @@ msgstr ""
"当该节点位于 [ScrollContainer] 内部时发送,该容器在通过[i]触摸事件[/i]拖动该可"
"滚动区域时已停止滚动。通过拖动滚动条滚动、使用鼠标滚轮滚动、或使用键盘/游戏手"
"柄事件滚动时,[i]不[/i]会发送该通知。\n"
-"[b]注意:[/b]该信号仅在在 Android 或 iOS 上、或当启用 [member ProjectSettings."
-"input_devices/pointing/emulate_touch_from_mouse] 时的桌面/Web 平台上发出。"
+"[b]注意:[/b]该信号仅会在 Android、iOS、桌面、Web 平台上发出,在桌面/Web 平台"
+"上需要启用 [member ProjectSettings.input_devices/pointing/"
+"emulate_touch_from_mouse]。"
msgid "Sent when control layout direction is changed."
msgstr "当控件的布局方向改变时发送。"
@@ -30744,58 +29904,6 @@ msgstr ""
"[CryptoKey]。"
msgid ""
-"Generates a self-signed [X509Certificate] from the given [CryptoKey] and "
-"[param issuer_name]. The certificate validity will be defined by [param "
-"not_before] and [param not_after] (first valid date and last valid date). The "
-"[param issuer_name] must contain at least \"CN=\" (common name, i.e. the "
-"domain name), \"O=\" (organization, i.e. your company name), \"C=\" (country, "
-"i.e. 2 lettered ISO-3166 code of the country the organization is based in).\n"
-"A small example to generate an RSA key and a X509 self-signed certificate.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var crypto = Crypto.new()\n"
-"# Generate 4096 bits RSA key.\n"
-"var key = crypto.generate_rsa(4096)\n"
-"# Generate self-signed certificate using the given key.\n"
-"var cert = crypto.generate_self_signed_certificate(key, \"CN=example.com,O=A "
-"Game Company,C=IT\")\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var crypto = new Crypto();\n"
-"// Generate 4096 bits RSA key.\n"
-"CryptoKey key = crypto.GenerateRsa(4096);\n"
-"// Generate self-signed certificate using the given key.\n"
-"X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "
-"\"CN=mydomain.com,O=My Game Company,C=IT\");\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"根据给定的 [CryptoKey] 和 [param issuer_name] 生成自签名的 [X509Certificate]。"
-"证书有效性将由 [param not_before] 和 [param not_after](第一个有效日期和最后一"
-"个有效日期)定义。[param issuer_name] 必须至少包含“CN=”(通用名称,即域"
-"名)、“O=”(组织,即你的公司名称)、“C=”(国家,即 2 个字母的该组织所在的国家/"
-"地区的 ISO-3166 代码)。\n"
-"生成 RSA 密钥和 X509 自签名证书的小示例。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var crypto = Crypto.new()\n"
-"# 生成 4096 比特 RSA 密钥。\n"
-"var key = crypto.generate_rsa(4096)\n"
-"# 使用给定的密钥生成自签名证书。\n"
-"var cert = crypto.generate_self_signed_certificate(key, \"CN=example.com,O=A "
-"Game Company,C=IT\")\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var crypto = new Crypto();\n"
-"// 生成 4096 比特 RSA 密钥。\n"
-"CryptoKey key = crypto.GenerateRsa(4096);\n"
-"// 使用给定的密钥生成自签名证书。\n"
-"X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "
-"\"CN=mydomain.com,O=My Game Company,C=IT\");\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Generates an [url=https://en.wikipedia.org/wiki/HMAC]HMAC[/url] digest of "
"[param msg] using [param key]. The [param hash_type] parameter is the hashing "
"algorithm that is used for the inner and outer hashes.\n"
@@ -31463,6 +30571,35 @@ msgid "An array of [Cubemap]s, stored together and with a single reference."
msgstr "[Cubemap] 数组,存储在一起并使用单个引用。"
msgid ""
+"[CubemapArray]s are made of an array of [Cubemap]s. Like [Cubemap]s, they are "
+"made of multiple textures, the amount of which must be divisible by 6 (one "
+"for each face of the cube).\n"
+"The primary benefit of [CubemapArray]s is that they can be accessed in shader "
+"code using a single texture reference. In other words, you can pass multiple "
+"[Cubemap]s into a shader using a single [CubemapArray]. [Cubemap]s are "
+"allocated in adjacent cache regions on the GPU, which makes [CubemapArray]s "
+"the most efficient way to store multiple [Cubemap]s.\n"
+"[b]Note:[/b] Godot uses [CubemapArray]s internally for many effects, "
+"including the [Sky] if you set [member ProjectSettings.rendering/reflections/"
+"sky_reflections/texture_array_reflections] to [code]true[/code]. To create "
+"such a texture file yourself, reimport your image files using the import "
+"presets of the File System dock.\n"
+"[b]Note:[/b] [CubemapArray] is not supported in the OpenGL 3 rendering "
+"backend."
+msgstr ""
+"[CubemapArray] 由一组 [Cubemap] 组成。它们像 [Cubemap] 一样是由多个纹理组成"
+"的,其纹理的数量必须能被 6 整除(立方体的每个面都有一个)。\n"
+"[CubemapArray] 的主要好处是可以使用单个纹理引用在着色器代码中访问它们。换句话"
+"说,可以使用单个 [CubemapArray] 将多个 [Cubemap] 传入着色器。[Cubemap] 被分配"
+"在 GPU 上相邻的缓存区块中。这使得 [CubemapArray] 成为存储多个 [Cubemap] 的最有"
+"效方式。\n"
+"[b]注意:[/b]如果将 [member ProjectSettings.rendering/reflections/"
+"sky_reflections/texture_array_reflections] 设置为 [code]true[/code],Godot 在"
+"内部会将 [CubemapArray] 用于多种效果,包括 [Sky]。要想自己创建这样的纹理文件,"
+"请使用文件系统停靠面板的导入预设重新导入你的图像文件。\n"
+"[b]注意:[/b][CubemapArray] 在 OpenGL 3 渲染后端中不受支持。"
+
+msgid ""
"Creates a placeholder version of this resource ([PlaceholderCubemapArray])."
msgstr "创建该资源的占位符版本([PlaceholderCubemapArray])。"
@@ -31693,8 +30830,8 @@ msgid ""
msgstr ""
"返回顶点 [param idx] 和顶点 [code]idx + 1[/code] 之间的位置,其中 [param t] 控"
"制该点是否为第一个顶点([code]t = 0.0[/code])、最后一个顶点([code]t = 1.0[/"
-"code])、或介于两者之间。超出范围([code]0.0 >= t <=1[/code])的 [param t] 的"
-"值会给出奇怪但可预测的结果。\n"
+"code])或介于两者之间。超出范围([code]0.0 >= t <=1[/code])的 [param t] 的值"
+"会给出奇怪但可预测的结果。\n"
"如果 [param idx] 越界,它将被截断到第一个或最后一个顶点,而 [param t] 将被忽"
"略。如果曲线没有点,则该函数将向控制台发送一个错误,并返回 [code](0, 0)[/"
"code]。"
@@ -31902,8 +31039,8 @@ msgid ""
msgstr ""
"返回顶点 [param idx] 和顶点 [code]idx + 1[/code] 之间的位置,其中 [param t] 控"
"制该点是否为第一个顶点([code]t = 0.0[/code])、最后一个顶点([code]t = 1.0[/"
-"code])、或介于两者之间。超出范围([code]0.0 >= t <=1[/code])的 [param t] 的"
-"值会给出奇怪但可预测的结果。\n"
+"code])或介于两者之间。超出范围([code]0.0 >= t <=1[/code])的 [param t] 的值"
+"会给出奇怪但可预测的结果。\n"
"如果 [param idx] 越界,它将被截断到第一个或最后一个顶点,而 [param t] 将被忽"
"略。如果曲线没有点,则该函数将向控制台发送一个错误,并返回 [code](0, 0, 0)[/"
"code]。"
@@ -32901,6 +32038,14 @@ msgstr ""
"[param default],如果省略了该参数则返回 [code]null[/code]。"
msgid ""
+"Gets a value and ensures the key is set. If the [param key] exists in the "
+"dictionary, this behaves like [method get]. Otherwise, the [param default] "
+"value is inserted into the dictionary and returned."
+msgstr ""
+"获取一个值并确保设置了键。如果 [param key] 存在于字典中,则其行为类似于 "
+"[method get]。否则,[param default] 值将被插入到字典中并返回。"
+
+msgid ""
"Returns [code]true[/code] if the dictionary contains an entry with the given "
"[param key].\n"
"[codeblocks]\n"
@@ -33758,8 +32903,8 @@ msgid ""
"Set whether this [DirectionalLight3D] is visible in the sky, in the scene, or "
"both in the sky and in the scene. See [enum SkyMode] for options."
msgstr ""
-"设置该 [DirectionalLight3D] 是否在天空、场景、或天空和场景中可见。有关选项,请"
-"参阅 [enum SkyMode]。"
+"设置该 [DirectionalLight3D] 是仅在天空中可见,仅在场景中可见,还是在天空和场景"
+"中均可见。选项见 [enum SkyMode]。"
msgid ""
"Renders the entire scene's shadow map from an orthogonal point of view. This "
@@ -33821,7 +32966,7 @@ msgstr ""
"统可能支持多个显示服务器,所以与 [OS] 是分开的。\n"
"[b]无头模式:[/b]如果使用 [code]--headless[/code] [url=$DOCS_URL/tutorials/"
"editor/command_line_tutorial.html]命令行参数[/url]启动引擎,就会禁用所有渲染和"
-"窗口管理功能。此时 [DisplayServer] 的大多数函数都会返回虚拟值。"
+"窗口管理功能。此时 [DisplayServer] 的大多数函数都会返回虚设值。"
msgid "Returns the user's clipboard as a string if possible."
msgstr "如果可能,将用户的剪贴板作为字符串返回。"
@@ -33873,10 +33018,31 @@ msgstr ""
"点击鼠标中键粘贴剪贴板数据。\n"
"[b]注意:[/b]这个方法只在 Linux(X11/Wayland)上实现。"
+msgid ""
+"Creates a new application status indicator with the specified icon, tooltip, "
+"and activation callback."
+msgstr "使用指定的图标、工具提示和激活回调,创建新的应用程序状态指示器。"
+
msgid "Returns the default mouse cursor shape set by [method cursor_set_shape]."
msgstr "返回默认鼠标光标形状,由 [method cursor_set_shape] 设置。"
msgid ""
+"Sets a custom mouse cursor image for the given [param shape]. This means the "
+"user's operating system and mouse cursor theme will no longer influence the "
+"mouse cursor's appearance.\n"
+"[param cursor] can be either a [Texture2D] or an [Image], and it should not "
+"be larger than 256×256 to display correctly. Optionally, [param hotspot] can "
+"be set to offset the image's position relative to the click point. By "
+"default, [param hotspot] is set to the top-left corner of the image. See also "
+"[method cursor_set_shape]."
+msgstr ""
+"为给定的形状 [param shape] 设置自定义鼠标指针图像。这意味着用户的操作系统和鼠"
+"标光标主题不再影响鼠标光标的外观。\n"
+"[param cursor] 可以是 [Texture2D] 或 [Image],并且它不应大于 256×256 才能正确"
+"显示。还可以选择设置 [param hotspot] 以偏移图像相对于点击点的位置。默认情况"
+"下,[param hotspot] 被设置为图像的左上角。另见 [method cursor_set_shape]。"
+
+msgid ""
"Sets the default mouse cursor shape. The cursor's appearance will vary "
"depending on the user's operating system and mouse cursor theme. See also "
"[method cursor_get_shape] and [method cursor_set_custom_image]."
@@ -33888,26 +33054,6 @@ msgid "Removes the application status indicator."
msgstr "移除应用程序状态指示器。"
msgid ""
-"Shows a text input dialog which uses the operating system's native look-and-"
-"feel. [param callback] will be called with a [String] argument equal to the "
-"text field's contents when the dialog is closed for any reason.\n"
-"[b]Note:[/b] This method is implemented only on macOS."
-msgstr ""
-"显示文本输入对话框,这个对话框的外观和行为与操作系统原生对话框一致。无论该对话"
-"框因为什么原因而关闭,都会使用文本字段的内容作为 [String] 参数来调用 [param "
-"callback]。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。"
-
-msgid ""
-"Shows a text dialog which uses the operating system's native look-and-feel. "
-"[param callback] will be called when the dialog is closed for any reason.\n"
-"[b]Note:[/b] This method is implemented only on macOS."
-msgstr ""
-"显示文本对话框,这个对话框的外观和行为与操作系统原生对话框一致。无论该对话框因"
-"为什么原因而关闭,都会使用调用 [param callback]。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。"
-
-msgid ""
"Allows the [param process_id] PID to steal focus from this window. In other "
"words, this disables the operating system's focus stealing protection for the "
"specified PID.\n"
@@ -33918,74 +33064,6 @@ msgstr ""
"[b]注意:[/b]该方法仅在 Windows 上实现。"
msgid ""
-"Displays OS native dialog for selecting files or directories in the file "
-"system.\n"
-"Callbacks have the following arguments: [code]status: bool, selected_paths: "
-"PackedStringArray, selected_filter_index: int[/code].\n"
-"[b]Note:[/b] This method is implemented if the display server has the "
-"[constant FEATURE_NATIVE_DIALOG] feature. Supported platforms include Linux "
-"(X11/Wayland), Windows, and macOS.\n"
-"[b]Note:[/b] [param current_directory] might be ignored.\n"
-"[b]Note:[/b] On Linux, [param show_hidden] is ignored.\n"
-"[b]Note:[/b] On macOS, native file dialogs have no title.\n"
-"[b]Note:[/b] On macOS, sandboxed apps will save security-scoped bookmarks to "
-"retain access to the opened folders across multiple sessions. Use [method OS."
-"get_granted_permissions] to get a list of saved bookmarks."
-msgstr ""
-"显示操作系统原生对话框,用于选择文件系统中的文件或目录。\n"
-"回调具有以下参数:[code]status: bool, selected_paths: PackedStringArray, "
-"selected_filter_index: int[/code]。\n"
-"[b]注意:[/b]如果显示服务器具有 [constant FEATURE_NATIVE_DIALOG] 功能,则该方"
-"法已被实现。支持的平台包括 Linux(X11/Wayland)、Windows 和 macOS。\n"
-"[b]注意:[/b][param current_directory] 可能会被忽略。\n"
-"[b]注意:[/b]在 Linux 上,[param show_hidden] 被忽略。\n"
-"[b]注意:[/b]在 macOS 上,原生文件对话框没有标题。\n"
-"[b]注意:[/b]在 macOS 上,沙盒应用程序将保存安全范围的书签,以保留对多个会话中"
-"打开的文件夹的访问权限。使用 [method OS.get_granted_permissions] 获取已保存书"
-"签的列表。"
-
-msgid ""
-"Displays OS native dialog for selecting files or directories in the file "
-"system with additional user selectable options.\n"
-"[param options] is array of [Dictionary]s with the following keys:\n"
-"- [code]\"name\"[/code] - option's name [String].\n"
-"- [code]\"values\"[/code] - [PackedStringArray] of values. If empty, boolean "
-"option (check box) is used.\n"
-"- [code]\"default\"[/code] - default selected option index ([int]) or default "
-"boolean value ([bool]).\n"
-"Callbacks have the following arguments: [code]status: bool, selected_paths: "
-"PackedStringArray, selected_filter_index: int, selected_option: Dictionary[/"
-"code].\n"
-"[b]Note:[/b] This method is implemented if the display server has the "
-"[constant FEATURE_NATIVE_DIALOG] feature. Supported platforms include Linux "
-"(X11/Wayland), Windows, and macOS.\n"
-"[b]Note:[/b] [param current_directory] might be ignored.\n"
-"[b]Note:[/b] On Linux (X11), [param show_hidden] is ignored.\n"
-"[b]Note:[/b] On macOS, native file dialogs have no title.\n"
-"[b]Note:[/b] On macOS, sandboxed apps will save security-scoped bookmarks to "
-"retain access to the opened folders across multiple sessions. Use [method OS."
-"get_granted_permissions] to get a list of saved bookmarks."
-msgstr ""
-"显示操作系统原生对话框,用于使用其他用户可选选项,选择文件系统中的文件或目"
-"录。\n"
-"[param options] 是具有以下键的 [Dictionary] 数组:\n"
-"- [code]\"name\"[/code] - 选项的名称 [String]。\n"
-"- [code]\"values\"[/code] - 值的 [PackedStringArray]。如果为空,则使用布尔选项"
-"(复选框)。\n"
-"- [code]\"default\"[/code] - 默认选择的选项索引([int])或默认布尔值"
-"([bool])。\n"
-"回调具有以下参数:[code]status: bool, selected_paths: PackedStringArray, "
-"selected_filter_index: int, selected_option: Dictionary[/code]。\n"
-"[b]注意:[/b]如果显示服务器具有 [constant FEATURE_NATIVE_DIALOG] 功能,则该方"
-"法已被实现。支持的平台包括 Linux(X11/Wayland)、Windows 和 macOS。\n"
-"[b]注意:[/b][param current_directory] 可能会被忽略。\n"
-"[b]注意:[/b]在 Linux (X11)上,[param show_hidden] 被忽略。\n"
-"[b]注意:[/b]在 macOS 上,原生文件对话框没有标题。\n"
-"[b]注意:[/b]在 macOS 上,沙盒应用程序将保存安全范围的书签,以保留对多个会话中"
-"打开的文件夹的访问权限。使用 [method OS.get_granted_permissions] 获取已保存书"
-"签的列表。"
-
-msgid ""
"Forces window manager processing while ignoring all [InputEvent]s. See also "
"[method process_events].\n"
"[b]Note:[/b] This method is implemented on Windows and macOS."
@@ -34081,33 +33159,6 @@ msgstr ""
"响。"
msgid ""
-"Returns the ID of the window at the specified screen [param position] (in "
-"pixels). On multi-monitor setups, the screen position is relative to the "
-"virtual desktop area. On multi-monitor setups with different screen "
-"resolutions or orientations, the origin may be located outside any display "
-"like this:\n"
-"[codeblock]\n"
-"* (0, 0) +-------+\n"
-" | |\n"
-"+-------------+ | |\n"
-"| | | |\n"
-"| | | |\n"
-"+-------------+ +-------+\n"
-"[/codeblock]"
-msgstr ""
-"返回位于指定屏幕位置 [param position] 的窗口 ID(单位为像素)。使用多个监视器"
-"时,屏幕位置是相对于虚拟桌面区域的位置。如果多监视器中使用了不同的屏幕分辨率或"
-"朝向,原点有可能位于所有显示器之外,类似于:\n"
-"[codeblock]\n"
-"* (0, 0) +-------+\n"
-" | |\n"
-"+-------------+ | |\n"
-"| | | |\n"
-"| | | |\n"
-"+-------------+ +-------+\n"
-"[/codeblock]"
-
-msgid ""
"Returns the list of Godot window IDs belonging to this process.\n"
"[b]Note:[/b] Native dialogs are not included in this list."
msgstr ""
@@ -34115,411 +33166,6 @@ msgstr ""
"[b]注意:[/b]这个列表中不含原生对话框。"
msgid ""
-"Adds a new checkable item with text [param label] to the global menu with ID "
-"[param menu_root].\n"
-"Returns index of the inserted item, it's not guaranteed to be the same as "
-"[param index] value.\n"
-"An [param accelerator] can optionally be defined, which is a keyboard "
-"shortcut that can be pressed to trigger the menu button even if it's not "
-"currently open. The [param accelerator] is generally a combination of [enum "
-"KeyModifierMask]s and [enum Key]s using bitwise OR such as "
-"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n"
-"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to "
-"accept exactly one Variant parameter, the parameter passed to the Callables "
-"will be the value passed to [param tag].\n"
-"[b]Note:[/b] This method is implemented only on macOS.\n"
-"[b]Supported system menu IDs:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - Main menu (macOS).\n"
-"\"_dock\" - Dock popup menu (macOS).\n"
-"\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n"
-"\"_window\" - Window menu (macOS, custom items added after \"Bring All to "
-"Front\").\n"
-"\"_help\" - Help menu (macOS).\n"
-"[/codeblock]"
-msgstr ""
-"向 ID 为 [param menu_root] 的全局菜单添加新的可勾选菜单项,显示的文本为 "
-"[param label]。\n"
-"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n"
-"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会进"
-"行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] 用按"
-"位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + A[/"
-"kbd])。\n"
-"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 "
-"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。\n"
-"[b]支持的系统菜单 ID:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - 主菜单(macOS)。\n"
-"\"_dock\" - 程序坞弹出菜单(macOS)。\n"
-"\"_apple\" - Apple 菜单(macOS,在“服务”之前添加的自定义项目)。\n"
-"\"_window\" - 窗口菜单(macOS,“将所有内容置于前面”之后添加的自定义项目)。\n"
-"\"_help\" - 帮助菜单 (macOS)。\n"
-"[/codeblock]"
-
-msgid ""
-"Adds a new checkable item with text [param label] and icon [param icon] to "
-"the global menu with ID [param menu_root].\n"
-"Returns index of the inserted item, it's not guaranteed to be the same as "
-"[param index] value.\n"
-"An [param accelerator] can optionally be defined, which is a keyboard "
-"shortcut that can be pressed to trigger the menu button even if it's not "
-"currently open. The [param accelerator] is generally a combination of [enum "
-"KeyModifierMask]s and [enum Key]s using bitwise OR such as "
-"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n"
-"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to "
-"accept exactly one Variant parameter, the parameter passed to the Callables "
-"will be the value passed to [param tag].\n"
-"[b]Note:[/b] This method is implemented only on macOS.\n"
-"[b]Supported system menu IDs:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - Main menu (macOS).\n"
-"\"_dock\" - Dock popup menu (macOS).\n"
-"\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n"
-"\"_window\" - Window menu (macOS, custom items added after \"Bring All to "
-"Front\").\n"
-"\"_help\" - Help menu (macOS).\n"
-"[/codeblock]"
-msgstr ""
-"向 ID 为 [param menu_root] 的全局菜单添加新的可勾选菜单项,显示的文本为 "
-"[param label],图标为 [param icon]。\n"
-"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n"
-"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会进"
-"行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] 用按"
-"位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + A[/"
-"kbd])。\n"
-"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 "
-"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。\n"
-"[b]支持的系统菜单 ID:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - 主菜单(macOS)。\n"
-"\"_dock\" - 程序坞弹出菜单(macOS)。\n"
-"\"_apple\" - Apple 菜单(macOS,在“服务”之前添加的自定义项目)。\n"
-"\"_window\" - 窗口菜单(macOS,“将所有内容置于前面”之后添加的自定义项目)。\n"
-"\"_help\" - 帮助菜单 (macOS)。\n"
-"[/codeblock]"
-
-msgid ""
-"Adds a new item with text [param label] and icon [param icon] to the global "
-"menu with ID [param menu_root].\n"
-"Returns index of the inserted item, it's not guaranteed to be the same as "
-"[param index] value.\n"
-"An [param accelerator] can optionally be defined, which is a keyboard "
-"shortcut that can be pressed to trigger the menu button even if it's not "
-"currently open. The [param accelerator] is generally a combination of [enum "
-"KeyModifierMask]s and [enum Key]s using bitwise OR such as "
-"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n"
-"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to "
-"accept exactly one Variant parameter, the parameter passed to the Callables "
-"will be the value passed to [param tag].\n"
-"[b]Note:[/b] This method is implemented only on macOS.\n"
-"[b]Supported system menu IDs:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - Main menu (macOS).\n"
-"\"_dock\" - Dock popup menu (macOS).\n"
-"\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n"
-"\"_window\" - Window menu (macOS, custom items added after \"Bring All to "
-"Front\").\n"
-"\"_help\" - Help menu (macOS).\n"
-"[/codeblock]"
-msgstr ""
-"向 ID 为 [param menu_root] 的全局菜单添加新的菜单项,显示的文本为 [param "
-"label],图标为 [param icon]。\n"
-"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n"
-"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会进"
-"行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] 用按"
-"位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + A[/"
-"kbd])。\n"
-"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 "
-"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。\n"
-"[b]支持的系统菜单 ID:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - 主菜单(macOS)。\n"
-"\"_dock\" - 程序坞弹出菜单(macOS)。\n"
-"\"_apple\" - Apple 菜单(macOS,在“服务”之前添加的自定义项目)。\n"
-"\"_window\" - 窗口菜单(macOS,“将所有内容置于前面”之后添加的自定义项目)。\n"
-"\"_help\" - 帮助菜单 (macOS)。\n"
-"[/codeblock]"
-
-msgid ""
-"Adds a new radio-checkable item with text [param label] and icon [param icon] "
-"to the global menu with ID [param menu_root].\n"
-"Returns index of the inserted item, it's not guaranteed to be the same as "
-"[param index] value.\n"
-"An [param accelerator] can optionally be defined, which is a keyboard "
-"shortcut that can be pressed to trigger the menu button even if it's not "
-"currently open. The [param accelerator] is generally a combination of [enum "
-"KeyModifierMask]s and [enum Key]s using bitwise OR such as "
-"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n"
-"[b]Note:[/b] Radio-checkable items just display a checkmark, but don't have "
-"any built-in checking behavior and must be checked/unchecked manually. See "
-"[method global_menu_set_item_checked] for more info on how to control it.\n"
-"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to "
-"accept exactly one Variant parameter, the parameter passed to the Callables "
-"will be the value passed to [param tag].\n"
-"[b]Note:[/b] This method is implemented only on macOS.\n"
-"[b]Supported system menu IDs:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - Main menu (macOS).\n"
-"\"_dock\" - Dock popup menu (macOS).\n"
-"\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n"
-"\"_window\" - Window menu (macOS, custom items added after \"Bring All to "
-"Front\").\n"
-"\"_help\" - Help menu (macOS).\n"
-"[/codeblock]"
-msgstr ""
-"向 ID 为 [param menu_root] 的全局菜单添加新的单选菜单项,显示的文本为 [param "
-"label],图标为 [param icon]。\n"
-"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n"
-"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会进"
-"行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] 用按"
-"位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + A[/"
-"kbd])。\n"
-"[b]注意:[/b]单选菜单项只负责显示选中标记,并没有任何内置检查行为,必须手动进"
-"行选中、取消选中的操作。关于如何进行控制的更多信息见 [method "
-"global_menu_set_item_checked]。\n"
-"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 "
-"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。\n"
-"[b]支持的系统菜单 ID:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - 主菜单(macOS)。\n"
-"\"_dock\" - 程序坞弹出菜单(macOS)。\n"
-"\"_apple\" - Apple 菜单(macOS,在“服务”之前添加的自定义项目)。\n"
-"\"_window\" - 窗口菜单(macOS,“将所有内容置于前面”之后添加的自定义项目)。\n"
-"\"_help\" - 帮助菜单 (macOS)。\n"
-"[/codeblock]"
-
-msgid ""
-"Adds a new item with text [param label] to the global menu with ID [param "
-"menu_root].\n"
-"Returns index of the inserted item, it's not guaranteed to be the same as "
-"[param index] value.\n"
-"An [param accelerator] can optionally be defined, which is a keyboard "
-"shortcut that can be pressed to trigger the menu button even if it's not "
-"currently open. The [param accelerator] is generally a combination of [enum "
-"KeyModifierMask]s and [enum Key]s using bitwise OR such as "
-"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n"
-"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to "
-"accept exactly one Variant parameter, the parameter passed to the Callables "
-"will be the value passed to [param tag].\n"
-"[b]Note:[/b] This method is implemented only on macOS.\n"
-"[b]Supported system menu IDs:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - Main menu (macOS).\n"
-"\"_dock\" - Dock popup menu (macOS).\n"
-"\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n"
-"\"_window\" - Window menu (macOS, custom items added after \"Bring All to "
-"Front\").\n"
-"\"_help\" - Help menu (macOS).\n"
-"[/codeblock]"
-msgstr ""
-"向 ID 为 [param menu_root] 的全局菜单添加新的菜单项,显示的文本为 [param "
-"label]。\n"
-"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n"
-"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会进"
-"行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] 用按"
-"位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + A[/"
-"kbd])。\n"
-"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 "
-"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。\n"
-"[b]支持的系统菜单 ID:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - 主菜单(macOS)。\n"
-"\"_dock\" - 程序坞弹出菜单(macOS)。\n"
-"\"_apple\" - Apple 菜单(macOS,在“服务”之前添加的自定义项目)。\n"
-"\"_window\" - 窗口菜单(macOS,“将所有内容置于前面”之后添加的自定义项目)。\n"
-"\"_help\" - 帮助菜单 (macOS)。\n"
-"[/codeblock]"
-
-msgid ""
-"Adds a new item with text [param label] to the global menu with ID [param "
-"menu_root].\n"
-"Contrarily to normal binary items, multistate items can have more than two "
-"states, as defined by [param max_states]. Each press or activate of the item "
-"will increase the state by one. The default value is defined by [param "
-"default_state].\n"
-"Returns index of the inserted item, it's not guaranteed to be the same as "
-"[param index] value.\n"
-"An [param accelerator] can optionally be defined, which is a keyboard "
-"shortcut that can be pressed to trigger the menu button even if it's not "
-"currently open. The [param accelerator] is generally a combination of [enum "
-"KeyModifierMask]s and [enum Key]s using bitwise OR such as "
-"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n"
-"[b]Note:[/b] By default, there's no indication of the current item state, it "
-"should be changed manually.\n"
-"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to "
-"accept exactly one Variant parameter, the parameter passed to the Callables "
-"will be the value passed to [param tag].\n"
-"[b]Note:[/b] This method is implemented only on macOS.\n"
-"[b]Supported system menu IDs:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - Main menu (macOS).\n"
-"\"_dock\" - Dock popup menu (macOS).\n"
-"\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n"
-"\"_window\" - Window menu (macOS, custom items added after \"Bring All to "
-"Front\").\n"
-"\"_help\" - Help menu (macOS).\n"
-"[/codeblock]"
-msgstr ""
-"向 ID 为 [param menu_root] 的全局菜单添加新的菜单项,显示的文本为 [param "
-"label]。\n"
-"与常规的二态菜单项不同,多状态菜单项的状态可以多于两个,由 [param max_states] "
-"定义。每点击或激活该菜单项一次,状态就会加一。默认值由 [param default_state] "
-"定义。\n"
-"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n"
-"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会进"
-"行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] 用按"
-"位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + A[/"
-"kbd])。\n"
-"[b]注意:[/b]默认情况下不会展示当前菜单项的状态,应该手动更改。\n"
-"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 "
-"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。\n"
-"[b]支持的系统菜单 ID:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - 主菜单(macOS)。\n"
-"\"_dock\" - 程序坞弹出菜单(macOS)。\n"
-"\"_apple\" - Apple 菜单(macOS,在“服务”之前添加的自定义项目)。\n"
-"\"_window\" - 窗口菜单(macOS,“将所有内容置于前面”之后添加的自定义项目)。\n"
-"\"_help\" - 帮助菜单 (macOS)。\n"
-"[/codeblock]"
-
-msgid ""
-"Adds a new radio-checkable item with text [param label] to the global menu "
-"with ID [param menu_root].\n"
-"Returns index of the inserted item, it's not guaranteed to be the same as "
-"[param index] value.\n"
-"An [param accelerator] can optionally be defined, which is a keyboard "
-"shortcut that can be pressed to trigger the menu button even if it's not "
-"currently open. The [param accelerator] is generally a combination of [enum "
-"KeyModifierMask]s and [enum Key]s using bitwise OR such as "
-"[code]KEY_MASK_CTRL | KEY_A[/code] ([kbd]Ctrl + A[/kbd]).\n"
-"[b]Note:[/b] Radio-checkable items just display a checkmark, but don't have "
-"any built-in checking behavior and must be checked/unchecked manually. See "
-"[method global_menu_set_item_checked] for more info on how to control it.\n"
-"[b]Note:[/b] The [param callback] and [param key_callback] Callables need to "
-"accept exactly one Variant parameter, the parameter passed to the Callables "
-"will be the value passed to [param tag].\n"
-"[b]Note:[/b] This method is implemented only on macOS.\n"
-"[b]Supported system menu IDs:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - Main menu (macOS).\n"
-"\"_dock\" - Dock popup menu (macOS).\n"
-"\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n"
-"\"_window\" - Window menu (macOS, custom items added after \"Bring All to "
-"Front\").\n"
-"\"_help\" - Help menu (macOS).\n"
-"[/codeblock]"
-msgstr ""
-"向 ID 为 [param menu_root] 的全局菜单添加新的单选菜单项,显示的文本为 [param "
-"label]。\n"
-"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n"
-"还可以定义键盘快捷键 [param accelerator],按下后即便该菜单按钮尚未打开,也会进"
-"行触发。[param accelerator] 通常是将 [enum KeyModifierMask] 和 [enum Key] 用按"
-"位或操作进行的组合,例如 [code]KEY_MASK_CTRL | KEY_A[/code]([kbd]Ctrl + A[/"
-"kbd])。\n"
-"[b]注意:[/b]单选菜单项只负责显示选中标记,并没有任何内置检查行为,必须手动进"
-"行选中、取消选中的操作。关于如何进行控制的更多信息见 [method "
-"global_menu_set_item_checked]。\n"
-"[b]注意:[/b][param callback] 和 [param key_callback] Callable 均只接受一个 "
-"Variant 参数,传入 Callable 的参数是传给 [param tag] 的参数。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。\n"
-"[b]支持的系统菜单 ID:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - 主菜单(macOS)。\n"
-"\"_dock\" - 程序坞弹出菜单(macOS)。\n"
-"\"_apple\" - Apple 菜单(macOS,在“服务”之前添加的自定义项目)。\n"
-"\"_window\" - 窗口菜单(macOS,“将所有内容置于前面”之后添加的自定义项目)。\n"
-"\"_help\" - 帮助菜单 (macOS)。\n"
-"[/codeblock]"
-
-msgid ""
-"Adds a separator between items to the global menu with ID [param menu_root]. "
-"Separators also occupy an index.\n"
-"Returns index of the inserted item, it's not guaranteed to be the same as "
-"[param index] value.\n"
-"[b]Note:[/b] This method is implemented only on macOS.\n"
-"[b]Supported system menu IDs:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - Main menu (macOS).\n"
-"\"_dock\" - Dock popup menu (macOS).\n"
-"\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n"
-"\"_window\" - Window menu (macOS, custom items added after \"Bring All to "
-"Front\").\n"
-"\"_help\" - Help menu (macOS).\n"
-"[/codeblock]"
-msgstr ""
-"向 ID 为 [param menu_root] 的全局菜单添加分隔符。分隔符也拥有索引。\n"
-"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。\n"
-"[b]支持的系统菜单 ID:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - 主菜单(macOS)。\n"
-"\"_dock\" - 程序坞弹出菜单(macOS)。\n"
-"\"_apple\" - Apple 菜单(macOS,在“服务”之前添加的自定义项目)。\n"
-"\"_window\" - 窗口菜单(macOS,“将所有内容置于前面”之后添加的自定义项目)。\n"
-"\"_help\" - 帮助菜单 (macOS)。\n"
-"[/codeblock]"
-
-msgid ""
-"Adds an item that will act as a submenu of the global menu [param menu_root]. "
-"The [param submenu] argument is the ID of the global menu root that will be "
-"shown when the item is clicked.\n"
-"Returns index of the inserted item, it's not guaranteed to be the same as "
-"[param index] value.\n"
-"[b]Note:[/b] This method is implemented only on macOS.\n"
-"[b]Supported system menu IDs:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - Main menu (macOS).\n"
-"\"_dock\" - Dock popup menu (macOS).\n"
-"\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n"
-"\"_window\" - Window menu (macOS, custom items added after \"Bring All to "
-"Front\").\n"
-"\"_help\" - Help menu (macOS).\n"
-"[/codeblock]"
-msgstr ""
-"向 ID 为 [param menu_root] 的全局菜单添加作为子菜单的菜单项。[param submenu] "
-"参数为全局菜单根菜单项的 ID,会在点击该菜单项时显示\n"
-"返回插入菜单项的索引,不保证与 [param index] 的值相同。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。\n"
-"[b]支持的系统菜单 ID:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - 主菜单(macOS)。\n"
-"\"_dock\" - 程序坞弹出菜单(macOS)。\n"
-"\"_apple\" - Apple 菜单(macOS,在“服务”之前添加的自定义项目)。\n"
-"\"_window\" - 窗口菜单(macOS,“将所有内容置于前面”之后添加的自定义项目)。\n"
-"\"_help\" - 帮助菜单 (macOS)。\n"
-"[/codeblock]"
-
-msgid ""
-"Removes all items from the global menu with ID [param menu_root].\n"
-"[b]Note:[/b] This method is implemented only on macOS.\n"
-"[b]Supported system menu IDs:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - Main menu (macOS).\n"
-"\"_dock\" - Dock popup menu (macOS).\n"
-"\"_apple\" - Apple menu (macOS, custom items added before \"Services\").\n"
-"\"_window\" - Window menu (macOS, custom items added after \"Bring All to "
-"Front\").\n"
-"\"_help\" - Help menu (macOS).\n"
-"[/codeblock]"
-msgstr ""
-"移除 ID 为 [param menu_root] 的全局菜单中的所有菜单项。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。\n"
-"[b]支持的系统菜单 ID:[/b]\n"
-"[codeblock]\n"
-"\"_main\" - 主菜单(macOS)。\n"
-"\"_dock\" - 程序坞弹出菜单(macOS)。\n"
-"\"_apple\" - Apple 菜单(macOS,在“服务”之前添加的自定义项目)。\n"
-"\"_window\" - 窗口菜单(macOS,“将所有内容置于前面”之后添加的自定义项目)。\n"
-"\"_help\" - 帮助菜单 (macOS)。\n"
-"[/codeblock]"
-
-msgid ""
"Returns the accelerator of the item at index [param idx]. Accelerators are "
"special combinations of keys that activate the item, no matter which control "
"is focused.\n"
@@ -34558,26 +33204,6 @@ msgstr ""
"[b]注意:[/b]该方法仅在 macOS 上实现。"
msgid ""
-"Returns the index of the item with the specified [param tag]. Index is "
-"automatically assigned to each item by the engine. Index can not be set "
-"manually.\n"
-"[b]Note:[/b] This method is implemented only on macOS."
-msgstr ""
-"返回标签为指定的 [param tag] 的菜单项的索引。引擎会自动为每个菜单项赋予索引。"
-"索引无法手动设置。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。"
-
-msgid ""
-"Returns the index of the item with the specified [param text]. Index is "
-"automatically assigned to each item by the engine. Index can not be set "
-"manually.\n"
-"[b]Note:[/b] This method is implemented only on macOS."
-msgstr ""
-"返回文本为指定的 [param text] 的菜单项的索引。引擎会自动为每个菜单项赋予索引。"
-"索引无法手动设置。\n"
-"[b]注意:[/b]该方法仅在 macOS 上实现。"
-
-msgid ""
"Returns the callback of the item accelerator at index [param idx].\n"
"[b]Note:[/b] This method is implemented only on macOS."
msgstr ""
@@ -34874,6 +33500,24 @@ msgstr ""
"code],否则返回 [code]false[/code]。"
msgid ""
+"Sets native help system search callbacks.\n"
+"[param search_callback] has the following arguments: [code]String "
+"search_string, int result_limit[/code] and return a [Dictionary] with \"key, "
+"display name\" pairs for the search results. Called when the user enters "
+"search terms in the [code]Help[/code] menu.\n"
+"[param action_callback] has the following arguments: [code]String key[/code]. "
+"Called when the user selects a search result in the [code]Help[/code] menu.\n"
+"[b]Note:[/b] This method is implemented only on macOS."
+msgstr ""
+"设置原生帮助系统搜索回调。\n"
+"[param search_callback] 的参数是 [code]String search_string, int "
+"result_limit[/code],返回的是包含一对对“key、显示名称”的 [Dictionary]。用户在"
+"[code]帮助[/code]菜单中输入搜索内容的时候就会调用这个回调。\n"
+"[param action_callback] 的参数是 [code]String key[/code]。用户在[code]帮助[/"
+"code]菜单中选择某个搜索结果时就会调用这个回调。\n"
+"[b]注意:[/b]该方法仅在 macOS 上实现。"
+
+msgid ""
"Returns the text selection in the [url=https://en.wikipedia.org/wiki/"
"Input_method]Input Method Editor[/url] composition string, with the "
"[Vector2i]'s [code]x[/code] component being the caret position and [code]y[/"
@@ -35009,40 +33653,6 @@ msgstr ""
"Input.use_accumulated_input]。"
msgid ""
-"Returns the dots per inch density of the specified screen. If [param screen] "
-"is [constant SCREEN_OF_MAIN_WINDOW] (the default value), a screen with the "
-"main window will be used.\n"
-"[b]Note:[/b] On macOS, returned value is inaccurate if fractional display "
-"scaling mode is used.\n"
-"[b]Note:[/b] On Android devices, the actual screen densities are grouped into "
-"six generalized densities:\n"
-"[codeblock]\n"
-" ldpi - 120 dpi\n"
-" mdpi - 160 dpi\n"
-" hdpi - 240 dpi\n"
-" xhdpi - 320 dpi\n"
-" xxhdpi - 480 dpi\n"
-"xxxhdpi - 640 dpi\n"
-"[/codeblock]\n"
-"[b]Note:[/b] This method is implemented on Android, Linux (X11/Wayland), "
-"macOS and Windows. Returns [code]72[/code] on unsupported platforms."
-msgstr ""
-"返回指定屏幕的每英寸点数密度。如果 [param screen] 为 [constant "
-"SCREEN_OF_MAIN_WINDOW](默认值),则将使用带有主窗口的屏幕。\n"
-"[b]注意:[/b]在 macOS 上,如果使用小数显示缩放模式,则返回值不准确。\n"
-"[b]注意:[/b]在 Android 设备上,实际屏幕密度分为六种通用密度:\n"
-"[codeblock]\n"
-" ldpi - 120 dpi\n"
-" mdpi - 160 dpi\n"
-" hdpi - 240 dpi\n"
-" xhdpi - 320 dpi\n"
-" xxhdpi - 480 dpi\n"
-"xxxhdpi - 640 dpi\n"
-"[/codeblock]\n"
-"[b]注意:[/b]该方法在 Android、Linux(X11/Wayland)、macOS 和 Windows 上实现。"
-"在不受支持的平台上返回 [code]72[/code]。"
-
-msgid ""
"Returns screenshot of the [param screen].\n"
"[b]Note:[/b] This method is implemented on Linux (X11), macOS, and Windows.\n"
"[b]Note:[/b] On macOS, this method requires \"Screen Recording\" permission, "
@@ -35085,37 +33695,6 @@ msgstr ""
"纸颜色。"
msgid ""
-"Returns the screen's top-left corner position in pixels. On multi-monitor "
-"setups, the screen position is relative to the virtual desktop area. On multi-"
-"monitor setups with different screen resolutions or orientations, the origin "
-"may be located outside any display like this:\n"
-"[codeblock]\n"
-"* (0, 0) +-------+\n"
-" | |\n"
-"+-------------+ | |\n"
-"| | | |\n"
-"| | | |\n"
-"+-------------+ +-------+\n"
-"[/codeblock]\n"
-"See also [method screen_get_size].\n"
-"[b]Note:[/b] On Linux (Wayland) this method always returns [code](0, 0)[/"
-"code]."
-msgstr ""
-"返回屏幕左上角的位置,单位为像素。使用多个监视器时,屏幕位置是相对于虚拟桌面区"
-"域的位置。如果多监视器中使用了不同的屏幕分辨率或朝向,原点有可能位于所有显示器"
-"之外,类似于:\n"
-"[codeblock]\n"
-"* (0, 0) +-------+\n"
-" | |\n"
-"+-------------+ | |\n"
-"| | | |\n"
-"| | | |\n"
-"+-------------+ +-------+\n"
-"[/codeblock]\n"
-"另见 [method screen_get_size]。\n"
-"[b]注意:[/b]在 Linux(Wayland)上,该方法始终返回 [code](0, 0)[/code]。"
-
-msgid ""
"Returns the current refresh rate of the specified screen. If [param screen] "
"is [constant SCREEN_OF_MAIN_WINDOW] (the default value), a screen with the "
"main window will be used.\n"
@@ -35193,31 +33772,6 @@ msgstr ""
"orientation] 未设置为 [constant SCREEN_SENSOR],则该方法无效。"
msgid ""
-"Sets the window icon (usually displayed in the top-left corner) with an "
-"[Image]. To use icons in the operating system's native format, use [method "
-"set_native_icon] instead."
-msgstr ""
-"使用 [Image] 设置窗口图标(通常显示在左上角)。要使用操作系统的原生格式设置图"
-"标,请改用 [method set_native_icon]。"
-
-msgid ""
-"Sets the window icon (usually displayed in the top-left corner) in the "
-"operating system's [i]native[/i] format. The file at [param filename] must be "
-"in [code].ico[/code] format on Windows or [code].icns[/code] on macOS. By "
-"using specially crafted [code].ico[/code] or [code].icns[/code] icons, "
-"[method set_native_icon] allows specifying different icons depending on the "
-"size the icon is displayed at. This size is determined by the operating "
-"system and user preferences (including the display scale factor). To use "
-"icons in other formats, use [method set_icon] instead."
-msgstr ""
-"使用操作系统的[i]原生[/i]格式设置窗口图标(通常显示在左上角)。位于 [param "
-"filename] 的文件在 Windows 上必须为 [code].ico[/code] 格式,在 macOS 上必须为 "
-"[code].icns[/code] 格式。使用特制的 [code].ico[/code] 或 [code].icns[/code] 图"
-"标,就能够让 [method set_native_icon] 指定以不同尺寸显示图标时显示不同的图标。"
-"大小由操作系统和用户首选项决定(包括显示器缩放系数)。要使用其他格式的图标,请"
-"改用 [method set_icon]。"
-
-msgid ""
"Sets the [param callable] that should be called when system theme settings "
"are changed. Callback method should have zero arguments.\n"
"[b]Note:[/b] This method is implemented on Android, iOS, macOS, Windows, and "
@@ -35227,15 +33781,6 @@ msgstr ""
"[b]注意:[/b]该方法在 Android、iOS、macOS、Windows 和 Linux(X11/Wayland)上实"
"现。"
-msgid "Sets the application status indicator activation callback."
-msgstr "设置应用程序状态指示器激活回调。"
-
-msgid "Sets the application status indicator icon."
-msgstr "设置应用程序状态指示器图标。"
-
-msgid "Sets the application status indicator tooltip."
-msgstr "设置应用程序状态指示器工具提示。"
-
msgid ""
"Returns current active tablet driver name.\n"
"[b]Note:[/b] This method is implemented only on Windows."
@@ -35258,6 +33803,21 @@ msgstr ""
"[b]注意:[/b]该方法仅在 Windows 上实现。"
msgid ""
+"Set active tablet driver name.\n"
+"Supported drivers:\n"
+"- [code]winink[/code]: Windows Ink API, default (Windows 8.1+ required).\n"
+"- [code]wintab[/code]: Wacom Wintab API (compatible device driver required).\n"
+"- [code]dummy[/code]: Dummy driver, tablet input is disabled.\n"
+"[b]Note:[/b] This method is implemented only on Windows."
+msgstr ""
+"设置活动数位板驱动程序名称。\n"
+"支持的驱动程序:\n"
+"- [code]winink[/code]:Windows Ink API,默认(需要 Windows 8.1+)。\n"
+"- [code]wintab[/code]:Wacom Wintab API(需要兼容的设备驱动程序)。\n"
+"- [code]dummy[/code]:虚设驱动程序,数位板输入被禁用。\n"
+"[b]注意:[/b]该方法仅在 Windows 上实现。"
+
+msgid ""
"Returns an [Array] of voice information dictionaries.\n"
"Each [Dictionary] contains two [String] entries:\n"
"- [code]name[/code] is voice name.\n"
@@ -35731,39 +34291,6 @@ msgstr ""
"这可能会引入错误。"
msgid ""
-"Sets the maximum size of the window specified by [param window_id] in pixels. "
-"Normally, the user will not be able to drag the window to make it smaller "
-"than the specified size. See also [method window_get_max_size].\n"
-"[b]Note:[/b] It's recommended to change this value using [member Window."
-"max_size] instead.\n"
-"[b]Note:[/b] Using third-party tools, it is possible for users to disable "
-"window geometry restrictions and therefore bypass this limit."
-msgstr ""
-"设置由 [param window_id] 指定的窗口的最大大小(单位为像素)。通常,用户将无法"
-"拖动窗口使其小于指定大小。另见 [method window_get_max_size]。\n"
-"[b]注意:[/b]建议改用 [member Window.max_size] 更改此值。\n"
-"[b]注意:[/b]使用第三方工具,用户可以禁用窗口几何限制,从而绕过此限制。"
-
-msgid ""
-"Sets the minimum size for the given window to [param min_size] (in pixels). "
-"Normally, the user will not be able to drag the window to make it larger than "
-"the specified size. See also [method window_get_min_size].\n"
-"[b]Note:[/b] It's recommended to change this value using [member Window."
-"min_size] instead.\n"
-"[b]Note:[/b] By default, the main window has a minimum size of "
-"[code]Vector2i(64, 64)[/code]. This prevents issues that can arise when the "
-"window is resized to a near-zero size.\n"
-"[b]Note:[/b] Using third-party tools, it is possible for users to disable "
-"window geometry restrictions and therefore bypass this limit."
-msgstr ""
-"将给定窗口的最小大小设置为 [param min_size](单位为像素)。通常,用户将无法拖"
-"动窗口使其大于指定大小。另见 [method window_get_min_size]。\n"
-"[b]注意:[/b]建议改用 [member Window.min_size] 来更改此值。\n"
-"[b]注意:[/b]默认情况下,主窗口的最小大小为 [code]Vector2i(64, 64)[/code]。这"
-"可以防止将窗口调整为接近零的大小时可能出现的问题。\n"
-"[b]注意:[/b]使用第三方工具,用户可以禁用窗口几何限制,从而绕过此限制。"
-
-msgid ""
"Sets window mode for the given window to [param mode]. See [enum WindowMode] "
"for possible values and how each mode behaves.\n"
"[b]Note:[/b] Setting the window to full screen forcibly sets the borderless "
@@ -35847,39 +34374,6 @@ msgstr ""
"自动关闭该弹出框。"
msgid ""
-"Sets the position of the given window to [param position]. On multi-monitor "
-"setups, the screen position is relative to the virtual desktop area. On multi-"
-"monitor setups with different screen resolutions or orientations, the origin "
-"may be located outside any display like this:\n"
-"[codeblock]\n"
-"* (0, 0) +-------+\n"
-" | |\n"
-"+-------------+ | |\n"
-"| | | |\n"
-"| | | |\n"
-"+-------------+ +-------+\n"
-"[/codeblock]\n"
-"See also [method window_get_position] and [method window_set_size].\n"
-"[b]Note:[/b] It's recommended to change this value using [member Window."
-"position] instead.\n"
-"[b]Note:[/b] On Linux (Wayland): this method is a no-op."
-msgstr ""
-"将给定窗口的位置设置为 [param position]。使用多个监视器时,屏幕位置是相对于虚"
-"拟桌面区域的位置。如果多监视器中使用了不同的屏幕分辨率或朝向,原点有可能位于所"
-"有显示器之外,类似于:\n"
-"[codeblock]\n"
-"* (0, 0) +-------+\n"
-" | |\n"
-"+-------------+ | |\n"
-"| | | |\n"
-"| | | |\n"
-"+-------------+ +-------+\n"
-"[/codeblock]\n"
-"另见 [method window_get_position] 和 [method window_set_size]。\n"
-"[b]注意:[/b]建议改用 [member Window.position] 更改此值。\n"
-"[b]注意:[/b]在 Linux(Wayland)上:该方法是没有操作。"
-
-msgid ""
"Sets the [param callback] that will be called when the window specified by "
"[param window_id] is moved or resized.\n"
"[b]Warning:[/b] Advanced users only! Adding such a callback to a [Window] "
@@ -36031,13 +34525,6 @@ msgstr ""
"Wayland)、Web[/b]"
msgid ""
-"Display server supports spawning dialogs using the operating system's native "
-"look-and-feel. [b]Windows, macOS, Linux (X11/Wayland)[/b]"
-msgstr ""
-"显示服务器支持使用操作系统的本地界面外观来生成对话框。[b]Windows、macOS、Linux"
-"(X11/Wayland)[/b]"
-
-msgid ""
"Display server supports [url=https://en.wikipedia.org/wiki/Input_method]Input "
"Method Editor[/url], which is commonly used for inputting Chinese/Japanese/"
"Korean text. This is handled by the operating system, rather than by Godot. "
@@ -36148,6 +34635,15 @@ msgid "Confines the mouse cursor to the game window, and make it hidden."
msgstr "将鼠标光标限制在游戏窗口内,并使其隐藏。"
msgid ""
+"Represents the screen containing the mouse pointer.\n"
+"[b]Note:[/b] On Linux (Wayland), this constant always represents the screen "
+"at index [code]0[/code]."
+msgstr ""
+"表示包含鼠标指针的屏幕。\n"
+"[b]注意:[/b]在 Linux(Wayland)上,该常量始终代表索引 [code]0[/code] 处的屏"
+"幕。"
+
+msgid ""
"Represents the screen containing the window with the keyboard focus.\n"
"[b]Note:[/b] On Linux (Wayland), this constant always represents the screen "
"at index [code]0[/code]."
@@ -36157,6 +34653,15 @@ msgstr ""
"幕。"
msgid ""
+"Represents the primary screen.\n"
+"[b]Note:[/b] On Linux (Wayland), this constant always represents the screen "
+"at index [code]0[/code]."
+msgstr ""
+"代表主屏幕。\n"
+"[b]注意:[/b]在 Linux(Wayland)上,该常量始终代表索引 [code]0[/code] 处的屏"
+"幕。"
+
+msgid ""
"Represents the screen where the main window is located. This is usually the "
"default value in functions that allow specifying one of several screens.\n"
"[b]Note:[/b] On Linux (Wayland), this constant always represents the screen "
@@ -36179,6 +34684,9 @@ msgstr ""
"指向一个不存在窗口的 ID。如果没有窗口与请求的结果相匹配,某些 [DisplayServer] "
"方法将返回这个 ID。"
+msgid "The ID that refers to a nonexistent application status indicator."
+msgstr "引用不存在的应用程序状态指示器的 ID。"
+
msgid "Default landscape orientation."
msgstr "默认横屏朝向。"
@@ -36485,7 +34993,7 @@ msgstr ""
"[b]注意:[/b]如果 [member ProjectSettings.display/window/"
"per_pixel_transparency/allowed] 被设置为 [code]false[/code],则该标志无效。\n"
"[b]注意:[/b]透明度支持在 Linux(X11/Wayland)、macOS 和 Windows 上实现,但可"
-"用性可能因 GPU 驱动、显示管理器、和合成器功能而异。"
+"用性可能因 GPU 驱动、显示管理器和合成器功能而异。"
msgid ""
"The window can't be focused. No-focus window will ignore all input, except "
@@ -36686,315 +35194,6 @@ msgid "Helper class to implement a DTLS server."
msgstr "实现 DTLS 服务器的辅助类。"
msgid ""
-"This class is used to store the state of a DTLS server. Upon [method setup] "
-"it converts connected [PacketPeerUDP] to [PacketPeerDTLS] accepting them via "
-"[method take_connection] as DTLS clients. Under the hood, this class is used "
-"to store the DTLS state and cookies of the server. The reason of why the "
-"state and cookies are needed is outside of the scope of this documentation.\n"
-"Below a small example of how to use it:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# server_node.gd\n"
-"extends Node\n"
-"\n"
-"var dtls := DTLSServer.new()\n"
-"var server := UDPServer.new()\n"
-"var peers = []\n"
-"\n"
-"func _ready():\n"
-" server.listen(4242)\n"
-" var key = load(\"key.key\") # Your private key.\n"
-" var cert = load(\"cert.crt\") # Your X509 certificate.\n"
-" dtls.setup(key, cert)\n"
-"\n"
-"func _process(delta):\n"
-" while server.is_connection_available():\n"
-" var peer: PacketPeerUDP = server.take_connection()\n"
-" var dtls_peer: PacketPeerDTLS = dtls.take_connection(peer)\n"
-" if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:\n"
-" continue # It is normal that 50% of the connections fails due to "
-"cookie exchange.\n"
-" print(\"Peer connected!\")\n"
-" peers.append(dtls_peer)\n"
-"\n"
-" for p in peers:\n"
-" p.poll() # Must poll to update the state.\n"
-" if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
-" while p.get_available_packet_count() > 0:\n"
-" print(\"Received message from client: %s\" % p.get_packet()."
-"get_string_from_utf8())\n"
-" p.put_packet(\"Hello DTLS client\".to_utf8_buffer())\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// ServerNode.cs\n"
-"using Godot;\n"
-"\n"
-"public partial class ServerNode : Node\n"
-"{\n"
-" private DtlsServer _dtls = new DtlsServer();\n"
-" private UdpServer _server = new UdpServer();\n"
-" private Godot.Collections.Array<PacketPeerDTLS> _peers = new Godot."
-"Collections.Array<PacketPeerDTLS>();\n"
-"\n"
-" public override void _Ready()\n"
-" {\n"
-" _server.Listen(4242);\n"
-" var key = GD.Load<CryptoKey>(\"key.key\"); // Your private key.\n"
-" var cert = GD.Load<X509Certificate>(\"cert.crt\"); // Your X509 "
-"certificate.\n"
-" _dtls.Setup(key, cert);\n"
-" }\n"
-"\n"
-" public override void _Process(double delta)\n"
-" {\n"
-" while (Server.IsConnectionAvailable())\n"
-" {\n"
-" PacketPeerUDP peer = _server.TakeConnection();\n"
-" PacketPeerDTLS dtlsPeer = _dtls.TakeConnection(peer);\n"
-" if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking)\n"
-" {\n"
-" continue; // It is normal that 50% of the connections fails "
-"due to cookie exchange.\n"
-" }\n"
-" GD.Print(\"Peer connected!\");\n"
-" _peers.Add(dtlsPeer);\n"
-" }\n"
-"\n"
-" foreach (var p in _peers)\n"
-" {\n"
-" p.Poll(); // Must poll to update the state.\n"
-" if (p.GetStatus() == PacketPeerDtls.Status.Connected)\n"
-" {\n"
-" while (p.GetAvailablePacketCount() > 0)\n"
-" {\n"
-" GD.Print($\"Received Message From Client: {p.GetPacket()."
-"GetStringFromUtf8()}\");\n"
-" p.PutPacket(\"Hello DTLS Client\".ToUtf8Buffer());\n"
-" }\n"
-" }\n"
-" }\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# client_node.gd\n"
-"extends Node\n"
-"\n"
-"var dtls := PacketPeerDTLS.new()\n"
-"var udp := PacketPeerUDP.new()\n"
-"var connected = false\n"
-"\n"
-"func _ready():\n"
-" udp.connect_to_host(\"127.0.0.1\", 4242)\n"
-" dtls.connect_to_peer(udp, false) # Use true in production for certificate "
-"validation!\n"
-"\n"
-"func _process(delta):\n"
-" dtls.poll()\n"
-" if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
-" if !connected:\n"
-" # Try to contact server\n"
-" dtls.put_packet(\"The answer is... 42!\".to_utf8_buffer())\n"
-" while dtls.get_available_packet_count() > 0:\n"
-" print(\"Connected: %s\" % dtls.get_packet()."
-"get_string_from_utf8())\n"
-" connected = true\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// ClientNode.cs\n"
-"using Godot;\n"
-"using System.Text;\n"
-"\n"
-"public partial class ClientNode : Node\n"
-"{\n"
-" private PacketPeerDtls _dtls = new PacketPeerDtls();\n"
-" private PacketPeerUdp _udp = new PacketPeerUdp();\n"
-" private bool _connected = false;\n"
-"\n"
-" public override void _Ready()\n"
-" {\n"
-" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n"
-" _dtls.ConnectToPeer(_udp, validateCerts: false); // Use true in "
-"production for certificate validation!\n"
-" }\n"
-"\n"
-" public override void _Process(double delta)\n"
-" {\n"
-" _dtls.Poll();\n"
-" if (_dtls.GetStatus() == PacketPeerDtls.Status.Connected)\n"
-" {\n"
-" if (!_connected)\n"
-" {\n"
-" // Try to contact server\n"
-" _dtls.PutPacket(\"The Answer Is..42!\".ToUtf8Buffer());\n"
-" }\n"
-" while (_dtls.GetAvailablePacketCount() > 0)\n"
-" {\n"
-" GD.Print($\"Connected: {_dtls.GetPacket()."
-"GetStringFromUtf8()}\");\n"
-" _connected = true;\n"
-" }\n"
-" }\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"该类用于存储 DTLS 服务器的状态。在 [method setup] 之后,它将连接的 "
-"[PacketPeerUDP] 转换为 [PacketPeerDTLS],通过 [method take_connection] 接受它"
-"们作为 DTLS 客户端。在底层,这个类用于存储服务器的 DTLS 状态和 cookie。为什么"
-"需要状态和 cookie 的原因不在本文档的范围内。\n"
-"下面是一个如何使用它的小例子:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# server_node.gd\n"
-"extends Node\n"
-"\n"
-"var dtls := DTLSServer.new()\n"
-"var server := UDPServer.new()\n"
-"var peers = []\n"
-"\n"
-"func _ready():\n"
-" server.listen(4242)\n"
-" var key = load(\"key.key\") # 你的私钥。\n"
-" var cert = load(\"cert.crt\") # 你的 X509 证书。\n"
-" dtls.setup(key, cert)\n"
-"\n"
-"func _process(delta):\n"
-" while server.is_connection_available():\n"
-" var peer: PacketPeerUDP = server.take_connection()\n"
-" var dtls_peer: PacketPeerDTLS = dtls.take_connection(peer)\n"
-" if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:\n"
-" continue # 由于 cookie 交换,50% 的连接会失败,这是正常现象。\n"
-" print(\"对等体已连接!\")\n"
-" peers.append(dtls_peer)\n"
-"\n"
-" for p in peers:\n"
-" p.poll() # 必须轮询以更新状态。\n"
-" if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
-" while p.get_available_packet_count() > 0:\n"
-" print(\"从客户端收到消息:%s\" % p.get_packet()."
-"get_string_from_utf8())\n"
-" p.put_packet(\"你好 DTLS 客户端\".to_utf8_buffer())\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// ServerNode.cs\n"
-"using Godot;\n"
-"\n"
-"public partial class ServerNode : Node\n"
-"{\n"
-" private DtlsServer _dtls = new DtlsServer();\n"
-" private UdpServer _server = new UdpServer();\n"
-" private Godot.Collections.Array<PacketPeerDTLS> _peers = new Godot."
-"Collections.Array<PacketPeerDTLS>();\n"
-"\n"
-" public override void _Ready()\n"
-" {\n"
-" _server.Listen(4242);\n"
-" var key = GD.Load<CryptoKey>(\"key.key\"); // 你的私钥。\n"
-" var cert = GD.Load<X509Certificate>(\"cert.crt\"); // 你的 X509 证"
-"书。\n"
-" _dtls.Setup(key, cert);\n"
-" }\n"
-"\n"
-" public override void _Process(double delta)\n"
-" {\n"
-" while (Server.IsConnectionAvailable())\n"
-" {\n"
-" PacketPeerUDP peer = _server.TakeConnection();\n"
-" PacketPeerDTLS dtlsPeer = _dtls.TakeConnection(peer);\n"
-" if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking)\n"
-" {\n"
-" continue; // 由于 cookie 交换,50% 的连接会失败,这是正常现"
-"象。\n"
-" }\n"
-" GD.Print(\"对等体已连接!\");\n"
-" _peers.Add(dtlsPeer);\n"
-" }\n"
-"\n"
-" foreach (var p in _peers)\n"
-" {\n"
-" p.Poll(); // 必须轮询以更新状态。\n"
-" if (p.GetStatus() == PacketPeerDtls.Status.Connected)\n"
-" {\n"
-" while (p.GetAvailablePacketCount() > 0)\n"
-" {\n"
-" GD.Print($\"从客户端收到消息:{p.GetPacket()."
-"GetStringFromUtf8()}\");\n"
-" p.PutPacket(\"你好 DTLS 客户端\".ToUtf8Buffer());\n"
-" }\n"
-" }\n"
-" }\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# client_node.gd\n"
-"extends Node\n"
-"\n"
-"var dtls := PacketPeerDTLS.new()\n"
-"var udp := PacketPeerUDP.new()\n"
-"var connected = false\n"
-"\n"
-"func _ready():\n"
-" udp.connect_to_host(\"127.0.0.1\", 4242)\n"
-" dtls.connect_to_peer(udp, false) # 生产环境中请使用 true 进行证书校验!\n"
-"\n"
-"func _process(delta):\n"
-" dtls.poll()\n"
-" if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
-" if !connected:\n"
-" # 尝试联系服务器\n"
-" dtls.put_packet(\"回应是… 42!\".to_utf8_buffer())\n"
-" while dtls.get_available_packet_count() > 0:\n"
-" print(\"已连接:%s\" % dtls.get_packet().get_string_from_utf8())\n"
-" connected = true\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// ClientNode.cs\n"
-"using Godot;\n"
-"using System.Text;\n"
-"\n"
-"public partial class ClientNode : Node\n"
-"{\n"
-" private PacketPeerDtls _dtls = new PacketPeerDtls();\n"
-" private PacketPeerUdp _udp = new PacketPeerUdp();\n"
-" private bool _connected = false;\n"
-"\n"
-" public override void _Ready()\n"
-" {\n"
-" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n"
-" _dtls.ConnectToPeer(_udp, validateCerts: false); // 生产环境中请使用 "
-"true 进行证书校验!\n"
-" }\n"
-"\n"
-" public override void _Process(double delta)\n"
-" {\n"
-" _dtls.Poll();\n"
-" if (_dtls.GetStatus() == PacketPeerDtls.Status.Connected)\n"
-" {\n"
-" if (!_connected)\n"
-" {\n"
-" // 尝试联系服务器\n"
-" _dtls.PutPacket(\"回应是… 42!\".ToUtf8Buffer());\n"
-" }\n"
-" while (_dtls.GetAvailablePacketCount() > 0)\n"
-" {\n"
-" GD.Print($\"已连接:{_dtls.GetPacket()."
-"GetStringFromUtf8()}\");\n"
-" _connected = true;\n"
-" }\n"
-" }\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Setup the DTLS server to use the given [param server_options]. See [method "
"TLSOptions.server]."
msgstr ""
@@ -37319,6 +35518,9 @@ msgstr ""
"信息,请参阅 [method EditorExportPlugin._begin_customize_scenes] 和 [method "
"EditorExportPlugin._begin_customize_resources]。"
+msgid "Console support in Godot"
+msgstr "Godot 中的控制台支持"
+
msgid ""
"Returns the name of the export operating system handled by this "
"[EditorExportPlatform] class, as a friendly string. Possible return values "
@@ -37327,7 +35529,7 @@ msgid ""
msgstr ""
"以友好字符串的形式,返回由该 [EditorExportPlatform] 类处理的导出操作系统的名"
"称。可能的返回值为 [code]Windows[/code]、[code]Linux[/code]、[code]macOS[/"
-"code]、[code]Android[/code]、[code]iOS[/code]、和 [code]Web[/code]。"
+"code]、[code]Android[/code]、[code]iOS[/code] 和 [code]Web[/code]。"
msgid "Exporter for Android."
msgstr "适用于 Android 的导出器。"
@@ -37350,22 +35552,6 @@ msgstr ""
"adding-licensing#impl-Obfuscator]Obfuscator[/url] 的随机字节数组。"
msgid ""
-"If [code]true[/code], project resources are stored in the separate APK "
-"expansion file, instead APK.\n"
-"[b]Note:[/b] APK expansion should be enabled to use PCK encryption."
-msgstr ""
-"如果为 [code]true[/code],则项目资源被存储在单独的 APK 扩展文件中,而不是 "
-"APK。\n"
-"[b]注意:[/b]APK 扩展应被启用才能使用 PCK 加密。"
-
-msgid ""
-"Base64 encoded RSA public key for your publisher account, available from the "
-"profile page on the \"Play Console\"."
-msgstr ""
-"你的发布者帐户的 Base64 编码的 RSA 公钥,可从“Play 管理中心”的个人资料页面获"
-"取。"
-
-msgid ""
"If [code]true[/code], [code]arm64[/code] binaries are included into exported "
"project."
msgstr ""
@@ -37390,11 +35576,6 @@ msgstr ""
"如果为 [code]true[/code],[code]x86_64[/code] 二进制文件将包含在导出的项目中。"
msgid ""
-"A list of additional command line arguments, exported project will receive "
-"when started."
-msgstr "附加命令行参数的列表,导出的项目将在启动时收到该列表。"
-
-msgid ""
"Path to an APK file to use as a custom export template for debug exports. If "
"left empty, default template is used.\n"
"[b]Note:[/b] This is only used if [member EditorExportPlatformAndroid."
@@ -37421,14 +35602,21 @@ msgstr ""
"保存 Gradle 构建中使用的导出模板源的 ZIP 文件的路径。如果留空,则使用默认模"
"板。"
-msgid "Export format for Gradle build."
-msgstr "Gradle 构建的导出格式。"
-
-msgid "Minimal Android SDK version for Gradle build."
-msgstr "Gradle 构建的最低 Android SDK 版本。"
+msgid ""
+"If [code]true[/code], native libraries are compressed when performing a "
+"Gradle build.\n"
+"[b]Note:[/b] Although your binary may be smaller, your application may load "
+"slower because the native libraries are not loaded directly from the binary "
+"at runtime."
+msgstr ""
+"如果为 [code]true[/code],则在执行 Gradle 构建时会压缩原生库。\n"
+"[b]注意:[/b]虽然你的二进制文件可能较小,但你的应用程序仍可能加载速度较慢,因"
+"为原生库在运行时不是直接从二进制文件加载的。"
-msgid "Target Android SDK version for Gradle build."
-msgstr "Gradle 构建的目标 Android SDK 版本。"
+msgid ""
+"Path to the Gradle build directory. If left empty, then [code]res://android[/"
+"code] will be used."
+msgstr "Gradle 构建目录的路径。如果留空,则将使用 [code]res://android[/code]。"
msgid "If [code]true[/code], Gradle build is used instead of pre-built APK."
msgstr "如果为 [code]true[/code],则使用 Gradle 构建而不是预构建的 APK。"
@@ -37438,7 +35626,7 @@ msgid ""
"runtime checking, validation, and logging)."
msgstr ""
"如果为 [code]true[/code],则将创建 OpenGL ES 调试上下文(额外的运行时检查、验"
-"证、和日志记录)。"
+"证和日志记录)。"
msgid ""
"Path of the debug keystore file.\n"
@@ -37499,12 +35687,6 @@ msgstr ""
"发布密钥库文件的用户名。\n"
"可以使用环境变量 [code]GODOT_ANDROID_KEYSTORE_RELEASE_USER[/code] 覆盖。"
-msgid "Background layer of the application adaptive icon file."
-msgstr "应用程序自适应图标文件的背景图层。"
-
-msgid "Foreground layer of the application adaptive icon file."
-msgstr "应用程序自适应图标文件的前景图层。"
-
msgid ""
"Application icon file. If left empty, it will fallback to [member "
"ProjectSettings.application/config/icon]."
@@ -37512,26 +35694,10 @@ msgstr ""
"应用程序图标文件。如果留空,它将回退到 [member ProjectSettings.application/"
"config/icon]。"
-msgid "Application category for the Play Store."
-msgstr "Play 商店的应用程序类别。"
-
-msgid ""
-"If [code]true[/code], task initiated by main activity will be excluded from "
-"the list of recently used applications."
-msgstr ""
-"如果为 [code]true[/code],则主 Activity 启动的任务将从最近使用的应用程序列表中"
-"排除。"
-
msgid "Name of the application."
msgstr "应用程序的名称。"
msgid ""
-"If [code]true[/code], when the user uninstalls an app, a prompt to keep the "
-"app's data will be shown."
-msgstr ""
-"如果为 [code]true[/code],当用户卸载应用程序时,将显示保留应用程序数据的提示。"
-
-msgid ""
"If [code]true[/code], the user will be able to set this app as the system "
"launcher in Android preferences."
msgstr ""
@@ -37552,6 +35718,42 @@ msgid "If [code]true[/code], package signing is enabled."
msgstr "如果为 [code]true[/code],则包签名被启用。"
msgid ""
+"Unique application identifier in a reverse-DNS format. The reverse DNS format "
+"should preferably match a domain name you control, but this is not strictly "
+"required. For instance, if you own [code]example.com[/code], your package "
+"unique name should preferably be of the form [code]com.example.mygame[/code]. "
+"This identifier can only contain lowercase alphanumeric characters ([code]a-"
+"z[/code], and [code]0-9[/code]), underscores ([code]_[/code]), and periods "
+"([code].[/code]). Each component of the reverse DNS format must start with a "
+"letter: for instance, [code]com.example.8game[/code] is not valid.\n"
+"If [code]$genname[/code] is present in the value, it will be replaced by the "
+"project name converted to lowercase. If there are invalid characters in the "
+"project name, they will be stripped. If all characters in the project name "
+"are stripped, [code]$genname[/code] is replaced by [code]noname[/code].\n"
+"[b]Note:[/b] Changing the package name will cause the package to be "
+"considered as a new package, with its own installation and data paths. The "
+"new package won't be usable to update existing installations.\n"
+"[b]Note:[/b] When publishing to Google Play, the package name must be "
+"[i]globally[/i] unique. This means no other apps published on Google Play "
+"must be using the same package name as yours. Otherwise, you'll be prevented "
+"from publishing your app on Google Play."
+msgstr ""
+"唯一应用程序标识符,使用反向 DNS 格式。这个反向 DNS 格式的标识符应该最好和你控"
+"制的域名相匹配,但也并不是硬性要求。例如你拥有 [code]example.com[/code] 的话,"
+"包的唯一名称就最好应该是 [code]com.example.mygame[/code] 这种格式。这个标识符"
+"只能包含小写字母([code]a-z[/code])、数字([code]0-9[/code])、下划线"
+"([code]_[/code])、英文句号([code].[/code])。反向 DNS 格式中的每个部分都必"
+"须以字母开头:比如 [code]com.example.8game[/code] 就是无效的。\n"
+"如果标识符中包含 [code]$genname[/code],那么这个字符串就会被替换为小写的项目名"
+"称。项目名称包含的无效的字符都会被剥除。如果项目名称里的字符都会被剥除,那么 "
+"[code]$genname[/code] 就会被替换为 [code]noname[/code]。\n"
+"[b]注意:[/b]包名发生变化会导致系统认为这是一个新的包,拥有独立的安装路径和数"
+"据路径。无法用新的包更新已安装的应用。\n"
+"[b]注意:[/b]发布到 Google Play 时,包名必须是[i]全局[/i]唯一的。你的包名不能"
+"和 Google Play 上已发布的其他 APP 相同。否则你的应用无法在 Google Play 上发"
+"布。"
+
+msgid ""
"Allows read/write access to the \"properties\" table in the checkin database. "
"See [url=https://developer.android.com/reference/android/Manifest."
"permission#ACCESS_CHECKIN_PROPERTIES]ACCESS_CHECKIN_PROPERTIES[/url]."
@@ -38167,6 +36369,19 @@ msgstr ""
msgid "Deprecated in API level 15."
msgstr "API 级别 15 中废弃。"
+msgid "Deprecated in API level 29."
+msgstr "在 API 级别 29 中已弃用。"
+
+msgid ""
+"Allows an application to see the number being dialed during an outgoing call "
+"with the option to redirect the call to a different number or abort the call "
+"altogether. See [url=https://developer.android.com/reference/android/Manifest."
+"permission#PROCESS_OUTGOING_CALLS]PROCESS_OUTGOING_CALLS[/url]."
+msgstr ""
+"允许应用程序查看拨出呼叫期间拨打的号码,并可以选择将呼叫重定向到其他号码或完全"
+"中止呼叫。见 [url=https://developer.android.com/reference/android/Manifest."
+"permission#PROCESS_OUTGOING_CALLS]PROCESS_OUTGOING_CALLS[/url]。"
+
msgid ""
"Allows an application to read the user's calendar data. See [url=https://"
"developer.android.com/reference/android/Manifest."
@@ -38191,6 +36406,18 @@ msgstr ""
"允许应用程序读取用户的联系人数据。见 [url=https://developer.android.com/"
"reference/android/Manifest.permission#READ_CONTACTS]READ_CONTACTS[/url]。"
+msgid "Deprecated in API level 33."
+msgstr "在 API 级别 33 中已弃用。"
+
+msgid ""
+"Allows an application to read from external storage. See [url=https://"
+"developer.android.com/reference/android/Manifest."
+"permission#READ_EXTERNAL_STORAGE]READ_EXTERNAL_STORAGE[/url]."
+msgstr ""
+"允许应用程序从外部存储中读取数据。见 [url=https://developer.android.com/"
+"reference/android/Manifest."
+"permission#READ_EXTERNAL_STORAGE]READ_EXTERNAL_STORAGE[/url]。"
+
msgid ""
"Allows an application to take screen shots and more generally get access to "
"the frame buffer data."
@@ -38755,6 +36982,25 @@ msgstr ""
"能[/url]。"
msgid ""
+"Requires the graphics performance and features of the A12 Bionic and later "
+"chips (devices supporting all Vulkan renderer features).\n"
+"Enabling this option limits supported devices to: iPhone XS, iPhone XR, iPad "
+"Mini (5th gen.), iPad Air (3rd gen.), iPad (8th gen) and newer."
+msgstr ""
+"需要 A12 Bionic 及更高版本芯片(支持所有 Vulkan 渲染器功能的设备)的图形性能和"
+"功能。\n"
+"启用该选项会将支持的设备限制为:iPhone XS、iPhone XR、iPad Mini(第 5 代)、"
+"iPad Air(第 3 代)、iPad(第 8 代)及更新版本。"
+
+msgid ""
+"Requires the graphics performance and features of the A17 Pro and later "
+"chips.\n"
+"Enabling this option limits supported devices to: iPhone 15 Pro and newer."
+msgstr ""
+"需要 A17 Pro 及更高版本芯片的图形性能和功能。\n"
+"启用该选项将支持的设备限制为:iPhone 15 Pro 及更新版本。"
+
+msgid ""
"If [code]true[/code], push notifications are enabled. See [url=https://"
"developer.apple.com/support/required-device-capabilities/]Required Device "
"Capabilities[/url]."
@@ -39611,9 +37857,24 @@ msgstr "构建应用程序可执行文件所使用的 Xcode 版本。"
msgid "Base class for the desktop platform exporter (Windows and Linux/BSD)."
msgstr "桌面平台导出器的基类(Windows 与 Linux/BSD)。"
+msgid "Exporting for Windows"
+msgstr "为 Windows 导出"
+
msgid "Exporter for the Web."
msgstr "Web 导出器。"
+msgid ""
+"The Web exporter customizes how a web build is handled. In the editor's "
+"\"Export\" window, it is created when adding a new \"Web\" preset.\n"
+"[b]Note:[/b] Godot on Web is rendered inside a [code]<canvas>[/code] tag. "
+"Normally, the canvas cannot be positioned or resized manually, but otherwise "
+"acts as the main [Window] of the application."
+msgstr ""
+"Web 导出器能够自定义 web 构建的处理方式。在编辑器的“导出”窗口中,添加“Web”预设"
+"时会创建这个导出器。\n"
+"[b]注意:[/b]Web 上的 Godot 是在一个 [code]<canvas>[/code] 标签中渲染的。这个"
+"画布是作为程序的主 [Window] 使用的,但是一般没有办法手动调整位置和大小。"
+
msgid "Exporting for the Web"
msgstr "为 Web 导出"
@@ -39631,6 +37892,36 @@ msgid ""
msgstr "用于发布版本的自定义导出模板的文件路径。如果留空,则默认模板将被使用。"
msgid ""
+"Determines how the canvas should be resized by Godot.\n"
+"- [b]None:[/b] The canvas is not automatically resized.\n"
+"- [b]Project:[/b] The size of the canvas is dependent on the "
+"[ProjectSettings].\n"
+"- [b]Adaptive:[/b] The canvas is automatically resized to fit as much of the "
+"web page as possible."
+msgstr ""
+"决定 Godot 应如何调整画布的大小。\n"
+"- [b]None:[/b]画布不会自动调整大小。\n"
+"- [b]Project:[/b]画布的大小由 [ProjectSettings] 决定。\n"
+"- [b]Adaptive:[/b]画布自动调整到尽可能覆盖 Web 页面的大小。"
+
+msgid ""
+"The custom HTML page that wraps the exported web build. If left empty, the "
+"default HTML shell is used.\n"
+"For more information, see the [url=$DOCS_URL/tutorials/platform/web/"
+"customizing_html5_shell.html]Customizing HTML5 Shell[/url] tutorial."
+msgstr ""
+"包裹导出后 Web 构建的自定义 HTML 页面。留空时使用默认的 HTML 壳。\n"
+"详情见教程[url=$DOCS_URL/tutorials/platform/web/customizing_html5_shell.html]"
+"《自定义 HTML5 壳》[/url]。"
+
+msgid ""
+"If [code]true[/code], embeds support for a virtual keyboard into the web "
+"page, which is shown when necessary on touchscreen devices."
+msgstr ""
+"如果为 [code]true[/code],则将对虚拟键盘的支持嵌入到网页中,在触摸屏设备上会在"
+"必要时显示。"
+
+msgid ""
"If [code]true[/code], the project icon will be used as the favicon for this "
"application's web page."
msgstr "如果为 [code]true[/code],则项目图标将用作该应用程序网页的图标。"
@@ -39642,9 +37933,101 @@ msgstr ""
"如果为 [code]true[/code],则浏览器窗口已经获得焦点,且一旦加载应用程序时,画布"
"就会获得焦点。"
+msgid ""
+"Additional HTML tags to include inside the [code]<head>[/code], such as "
+"[code]<meta>[/code] tags.\n"
+"[b]Note:[/b] You do not need to add a [code]<title>[/code] tag, as it is "
+"automatically included based on the project's name."
+msgstr ""
+"要在 [code]<head>[/code] 中额外添加的 HTML 标签,例如 [code]<meta>[/code] 标"
+"签。\n"
+"[b]注意:[/b][code]<title>[/code] 标签无须自行添加,会根据项目名称自动添加。"
+
msgid "The background color used behind the web application."
msgstr "Web 应用程序后面使用的背景颜色。"
+msgid ""
+"The [url=https://developer.mozilla.org/en-US/docs/Web/Manifest/"
+"display/]display mode[/url] to use for this progressive web application. "
+"Different browsers and platforms may not behave the same.\n"
+"- [b]Fullscreen:[/b] Displays the app in fullscreen and hides all of the "
+"browser's UI elements.\n"
+"- [b]Standalone:[/b] Displays the app in a separate window and hides all of "
+"the browser's UI elements.\n"
+"- [b]Minimal UI:[/b] Displays the app in a separate window and only shows the "
+"browser's UI elements for navigation.\n"
+"- [b]Browser:[/b] Displays the app as a normal web page."
+msgstr ""
+"用于该渐进式 Web 应用程序的 [url=https://developer.mozilla.org/en-US/docs/Web/"
+"Manifest/display/]显示模式[/url]。不同的浏览器和平台的行为可能不同。\n"
+"- [b]全屏:[/b]全屏显示应用程序并隐藏所有浏览器的 UI 元素。\n"
+"- [b]独立:[/b]在单独的窗口中显示应用程序并隐藏所有浏览器的 UI 元素。\n"
+"- [b]最小 UI:[/b]在单独的窗口中显示应用程序,并且仅显示浏览器的 UI 元素以进行"
+"导航。\n"
+"- [b]浏览器:[/b]将应用程序显示为普通网页。"
+
+msgid ""
+"If [code]true[/code], turns this web build into a [url=https://en.wikipedia."
+"org/wiki/Progressive_web_app]progressive web application[/url] (PWA)."
+msgstr ""
+"如果为 [code]true[/code],则会将该 Web 构建设置为 [url=https://zh.wikipedia."
+"org/zh-cn/"
+"%E6%B8%90%E8%BF%9B%E5%BC%8F%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F]"
+"渐进式网络应用程序[/url](PWA)。"
+
+msgid ""
+"When enabled, the progressive web app will make sure that each request has "
+"cross-origin isolation headers (COEP/COOP).\n"
+"This can simplify the setup to serve the exported game."
+msgstr ""
+"启用后,渐进式 Web 应用程序将确保每个请求都具有跨源隔离标头(COEP/COOP)。\n"
+"这可以简化设置以服务导出的游戏。"
+
+msgid ""
+"File path to the smallest icon for this web application. If not defined, "
+"defaults to the project icon.\n"
+"[b]Note:[/b] If the icon is not 144x144, it will be automatically resized for "
+"the final build."
+msgstr ""
+"该 Web 应用程序的最小图标的文件路径。如果未定义,则默认为项目图标。\n"
+"[b]注意:[/b]如果图标不是 144x144,则它将自动调整大小以适应最终构建。"
+
+msgid ""
+"File path to the small icon for this web application. If not defined, "
+"defaults to the project icon.\n"
+"[b]Note:[/b] If the icon is not 180x180, it will be automatically resized for "
+"the final build."
+msgstr ""
+"该 Web 应用程序的小图标的文件路径。如果未定义,则默认为项目图标。\n"
+"[b]注意:[/b]如果图标不是 180x180,则它将自动调整大小以适应最终构建。"
+
+msgid ""
+"File path to the smallest icon for this web application. If not defined, "
+"defaults to the project icon.\n"
+"[b]Note:[/b] If the icon is not 512x512, it will be automatically resized for "
+"the final build."
+msgstr ""
+"该 Web 应用程序的最小图标的文件路径。如果未定义,则默认为项目图标。\n"
+"[b]注意:[/b]如果图标不是 512x512,则它将自动调整大小以适应最终构建。"
+
+msgid ""
+"The page to display, should the server hosting the page not be available. "
+"This page is saved in the client's machine."
+msgstr ""
+"如果托管该页面的服务器不可用,则显示该页面。该页面保存在客户端的机器中。"
+
+msgid ""
+"The orientation to use when the web application is run through a mobile "
+"device.\n"
+"- [b]Any:[/b] No orientation is forced.\n"
+"- [b]Landscape:[/b] Forces a horizontal layout (wider than it is taller).\n"
+"- [b]Portrait:[/b] Forces a vertical layout (taller than it is wider)."
+msgstr ""
+"通过移动设备运行 Web 应用程序时要使用的方向。\n"
+"- [b]任意:[/b]不强制方向。\n"
+"- [b]横向:[/b]强制水平布局(宽度大于高度)。\n"
+"- [b]纵向:[/b]强制垂直布局(高度大于宽度)。"
+
msgid "If [code]true[/code] enables [GDExtension] support for this web build."
msgstr "如果为 [code]true[/code],则启用对该 Web 构建的 [GDExtension] 支持。"
@@ -39661,9 +38044,6 @@ msgstr "如果为 [code]true[/code],则允许通过 ETC2 算法针对移动设
msgid "Exporter for Windows."
msgstr "Windows 导出器。"
-msgid "Exporting for Windows"
-msgstr "为 Windows 导出"
-
msgid ""
"Company that produced the application. Required. See [url=https://learn."
"microsoft.com/en-us/windows/win32/menurc/stringfileinfo-block]StringFileInfo[/"
@@ -39691,6 +38071,13 @@ msgstr ""
"windows/win32/menurc/stringfileinfo-block]StringFileInfo[/url]。"
msgid ""
+"If [code]true[/code], and [member application/export_d3d12] is set, the "
+"Agility SDK DLLs will be stored in arch-specific subdirectories."
+msgstr ""
+"如果为 [code]true[/code] 并且设置了 [member application/export_d3d12],则 "
+"Agility SDK DLL 将被存储在特定于架构的子目录中。"
+
+msgid ""
"If set to [code]1[/code], Direct3D 12 runtime (DXIL, Agility SDK, PIX) "
"libraries are exported with the exported application. If set to [code]0[/"
"code], Direct3D 12 libraries are exported only if [member ProjectSettings."
@@ -40099,6 +38486,49 @@ msgstr ""
"该选项发生变化时,预设会发出 [signal Object.property_list_changed]。"
msgid ""
+"Return a [Dictionary] of override values for export options, that will be "
+"used instead of user-provided values. Overridden options will be hidden from "
+"the user interface.\n"
+"[codeblock]\n"
+"class MyExportPlugin extends EditorExportPlugin:\n"
+" func _get_name() -> String:\n"
+" return \"MyExportPlugin\"\n"
+"\n"
+" func _supports_platform(platform) -> bool:\n"
+" if platform is EditorExportPlatformPC:\n"
+" # Run on all desktop platforms including Windows, MacOS and "
+"Linux.\n"
+" return true\n"
+" return false\n"
+"\n"
+" func _get_export_options_overrides(platform) -> Dictionary:\n"
+" # Override \"Embed PCK\" to always be enabled.\n"
+" return {\n"
+" \"binary_format/embed_pck\": true,\n"
+" }\n"
+"[/codeblock]"
+msgstr ""
+"返回导出选项的覆盖值的 [Dictionary],将使用该值代替用户提供的值。覆盖的选项将"
+"从用户界面中隐藏。\n"
+"[codeblock]\n"
+"class MyExportPlugin extends EditorExportPlugin:\n"
+" func _get_name() -> String:\n"
+" return \"MyExportPlugin\"\n"
+"\n"
+" func _supports_platform(platform) -> bool:\n"
+" if platform is EditorExportPlatformPC:\n"
+" # 可在所有桌面平台上运行,包括 Windows、MacOS 和 Linux。\n"
+" return true\n"
+" return false\n"
+"\n"
+" func _get_export_options_overrides(platform) -> Dictionary:\n"
+" # 覆盖“嵌入 PCK”以始终启用。\n"
+" return {\n"
+" \"binary_format/embed_pck\": true,\n"
+" }\n"
+"[/codeblock]"
+
+msgid ""
"Return the name identifier of this plugin (for future identification by the "
"exporter). The plugins are sorted by name before exporting.\n"
"Implementing this method is required."
@@ -40423,6 +38853,29 @@ msgstr ""
"藏它或其任何子项,请使用它们的 [member CanvasItem.visible] 属性。"
msgid ""
+"Returns the default value index of the [OptionButton] or [CheckBox] with "
+"index [param option]."
+msgstr ""
+"返回索引为 [param option] 的 [OptionButton] 或 [CheckBox] 的默认值索引。"
+
+msgid ""
+"Returns the name of the [OptionButton] or [CheckBox] with index [param "
+"option]."
+msgstr "返回索引为 [param option] 的 [OptionButton] 或 [CheckBox] 的名称。"
+
+msgid ""
+"Returns an array of values of the [OptionButton] with index [param option]."
+msgstr "返回索引为 [param option] 的 [OptionButton] 值的数组。"
+
+msgid ""
+"Returns a [Dictionary] with the selected values of the additional "
+"[OptionButton]s and/or [CheckBox]es. [Dictionary] keys are names and values "
+"are selected value indices."
+msgstr ""
+"返回一个 [Dictionary],其中包含附加 [OptionButton] 和/或 [CheckBox] 的选定值。"
+"[Dictionary] 的键是名称,而值是选定的值索引。"
+
+msgid ""
"Returns the [VBoxContainer] used to display the file system.\n"
"[b]Warning:[/b] This is a required internal node, removing and freeing it may "
"cause a crash. If you wish to hide it or any of its children, use their "
@@ -40439,6 +38892,19 @@ msgstr ""
"通知 [EditorFileDialog] 它的数据视图不再准确。在下次视图更新时更新视图内容。"
msgid ""
+"Sets the default value index of the [OptionButton] or [CheckBox] with index "
+"[param option]."
+msgstr ""
+"设置索引为 [param option] 的 [OptionButton] 或 [CheckBox] 的默认值索引。"
+
+msgid ""
+"Sets the name of the [OptionButton] or [CheckBox] with index [param option]."
+msgstr "设置索引为 [param option] 的 [OptionButton] 或 [CheckBox] 的名称。"
+
+msgid "Sets the option values of the [OptionButton] with index [param option]."
+msgstr "设置索引为 [param option] 的 [OptionButton] 的选项值。"
+
+msgid ""
"The location from which the user may select a file, including [code]res://[/"
"code], [code]user://[/code], and the local file system."
msgstr ""
@@ -40483,6 +38949,9 @@ msgstr ""
"[code]\"*.png, *.jpg, *.jpeg ; 支持的图片\"[/code] 时,将同时显示 PNG 和 JPEG "
"文件。"
+msgid "The number of additional [OptionButton]s and [CheckBox]es in the dialog."
+msgstr "对话框中附加的 [OptionButton] 和 [CheckBox] 的数量。"
+
msgid ""
"If [code]true[/code], hidden files and directories will be visible in the "
"[EditorFileDialog]. This property is synchronized with [member EditorSettings."
@@ -42387,65 +40856,6 @@ msgid "File paths in Godot projects"
msgstr "Godot 项目中的文件路径"
msgid ""
-"Returns the absolute path to the user's cache folder. This folder should be "
-"used for temporary data that can be removed safely whenever the editor is "
-"closed (such as generated resource thumbnails).\n"
-"[b]Default paths per platform:[/b]\n"
-"[codeblock]\n"
-"- Windows: %LOCALAPPDATA%\\Godot\\\n"
-"- macOS: ~/Library/Caches/Godot/\n"
-"- Linux: ~/.cache/godot/\n"
-"[/codeblock]"
-msgstr ""
-"返回用户缓存文件夹的绝对路径。该文件夹应该用于临时数据,关闭编辑器时应该能够安"
-"全地移除这些数据(例如生成的资源预览图)。\n"
-"[b]各平台的默认路径:[/b]\n"
-"[codeblock]\n"
-"- Windows: %LOCALAPPDATA%\\Godot\\\n"
-"- macOS: ~/Library/Caches/Godot/\n"
-"- Linux: ~/.cache/godot/\n"
-"[/codeblock]"
-
-msgid ""
-"Returns the absolute path to the user's configuration folder. This folder "
-"should be used for [i]persistent[/i] user configuration files.\n"
-"[b]Default paths per platform:[/b]\n"
-"[codeblock]\n"
-"- Windows: %APPDATA%\\Godot\\ (same as `get_data_dir()`)\n"
-"- macOS: ~/Library/Application Support/Godot/ (same as `get_data_dir()`)\n"
-"- Linux: ~/.config/godot/\n"
-"[/codeblock]"
-msgstr ""
-"返回用户配置文件夹的绝对路径。该文件夹应该用于[i]持久化[/i]的用户配置文件。\n"
-"[b]各平台的默认路径:[/b]\n"
-"[codeblock]\n"
-"- Windows: %APPDATA%\\Godot\\ (同 `get_data_dir()`)\n"
-"- macOS: ~/Library/Application Support/Godot/ (同 `get_data_dir()`)\n"
-"- Linux: ~/.config/godot/\n"
-"[/codeblock]"
-
-msgid ""
-"Returns the absolute path to the user's data folder. This folder should be "
-"used for [i]persistent[/i] user data files such as installed export "
-"templates.\n"
-"[b]Default paths per platform:[/b]\n"
-"[codeblock]\n"
-"- Windows: %APPDATA%\\Godot\\ (same as "
-"`get_config_dir()`)\n"
-"- macOS: ~/Library/Application Support/Godot/ (same as `get_config_dir()`)\n"
-"- Linux: ~/.local/share/godot/\n"
-"[/codeblock]"
-msgstr ""
-"返回用户数据文件夹的绝对路径。该文件夹应该用于[i]持久化[/i]的用户数据文件,例"
-"如已安装的导出模板。\n"
-"[b]各平台的默认路径:[/b]\n"
-"[codeblock]\n"
-"- Windows:%APPDATA%\\Godot\\ (同 `get_config_dir()` )\n"
-"- macOS:~/Library/Application Support/Godot/ (同 `get_config_dir()` )\n"
-"- Linux:~/.local/share/godot/\n"
-"[/codeblock]"
-
-msgid ""
"Returns the project-specific editor settings path. Projects all have a unique "
"subdirectory inside the settings path where project-specific editor settings "
"are saved."
@@ -42921,6 +41331,61 @@ msgstr ""
"code])的断点的列表,例如:[code]res://path_to_script.gd:25[/code]。"
msgid ""
+"Override this method in your plugin to return a [Texture2D] in order to give "
+"it an icon.\n"
+"For main screen plugins, this appears at the top of the screen, to the right "
+"of the \"2D\", \"3D\", \"Script\", and \"AssetLib\" buttons.\n"
+"Ideally, the plugin icon should be white with a transparent background and "
+"16×16 pixels in size.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _get_plugin_icon():\n"
+" # You can use a custom icon:\n"
+" return preload(\"res://addons/my_plugin/my_plugin_icon.svg\")\n"
+" # Or use a built-in icon:\n"
+" return EditorInterface.get_editor_theme().get_icon(\"Node\", "
+"\"EditorIcons\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override Texture2D _GetPluginIcon()\n"
+"{\n"
+" // You can use a custom icon:\n"
+" return ResourceLoader.Load<Texture2D>(\"res://addons/my_plugin/"
+"my_plugin_icon.svg\");\n"
+" // Or use a built-in icon:\n"
+" return EditorInterface.Singleton.GetEditorTheme().GetIcon(\"Node\", "
+"\"EditorIcons\");\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"在插件中覆盖该方法,以返回一个 [Texture2D] 以便为插件提供一个图标。\n"
+"对于主界面插件,它出现在屏幕顶部,“2D”、“3D”、“脚本”和 “AssetLib” 按钮的右"
+"侧。\n"
+"理想情况下,插件图标应为透明背景的白色,大小为 16×16 像素。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _get_plugin_icon():\n"
+" # 你可以使用一个自定义的图标:\n"
+" return preload(\"res://addons/my_plugin/my_plugin_icon.svg\")\n"
+" # 或者使用一个内置的图标:\n"
+" return EditorInterface.get_editor_theme().get_icon(\"Node\", "
+"\"EditorIcons\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override Texture2D _GetPluginIcon()\n"
+"{\n"
+" // 你可以使用一个自定义的图标:\n"
+" return ResourceLoader.Load<Texture2D>(\"res://addons/my_plugin/"
+"my_plugin_icon.svg\");\n"
+" // 或者使用一个内置的图标:\n"
+" return EditorInterface.Singleton.GetEditorTheme().GetIcon(\"Node\", "
+"\"EditorIcons\");\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Override this method in your plugin to provide the name of the plugin when "
"displayed in the Godot editor.\n"
"For main screen plugins, this appears at the top of the screen, to the right "
@@ -43035,7 +41500,7 @@ msgid ""
"[/codeblock]"
msgstr ""
"覆盖该方法,以提供该插件的 GUI 布局、或想要存储的任何其他数据。这用于在调用 "
-"[method queue_save_layout]、或更改编辑器布局(例如更改停靠面板的位置)时,保存"
+"[method queue_save_layout] 或更改编辑器布局(例如更改停靠面板的位置)时,保存"
"项目的编辑器布局。数据被存储在编辑器元数据目录中的 [code]editor_layout.cfg[/"
"code] 文件中。\n"
"使用 [method _set_window_layout] 恢复保存的布局。\n"
@@ -43205,19 +41670,6 @@ msgstr ""
"件,并使用 [method Node.queue_free] 将其释放。"
msgid ""
-"Adds the control to a specific dock slot (see [enum DockSlot] for options).\n"
-"If the dock is repositioned and as long as the plugin is active, the editor "
-"will save the dock position on further sessions.\n"
-"When your plugin is deactivated, make sure to remove your custom control with "
-"[method remove_control_from_docks] and free it with [method Node.queue_free]."
-msgstr ""
-"将控件添加到特定的停靠面板(有关选项,请参阅 [enum DockSlot])。\n"
-"如果重新放置了停靠面板,并且只要该插件处于活动状态,编辑器就会在以后的会话中保"
-"存停靠面板的位置。\n"
-"停用插件后,请确保使用 [method remove_control_from_docks] 移除自定义控件,并使"
-"用 [method Node.queue_free] 将其释放。"
-
-msgid ""
"Adds a custom type, which will appear in the list of nodes or resources. An "
"icon can be optionally passed.\n"
"When a given node or resource is selected, the base type will be instantiated "
@@ -43390,9 +41842,9 @@ msgstr ""
"当在检查器中修改属性时,将一个回调函数挂钩到撤消/重做动作创建中。例如,这允许"
"保存在修改给定属性时可能丢失的其他属性。\n"
"该回调函数应该有 4 个参数:[Object] [code]undo_redo[/code]、[Object] "
-"[code]modified_object[/code]、[String] [code]property[/code]、和 [Variant] "
+"[code]modified_object[/code]、[String] [code]property[/code] 和 [Variant] "
"[code]new_value[/code]。它们分别是检查器使用的 [UndoRedo] 对象、当前修改的对"
-"象、修改的属性的名称、和该属性即将采用的新值。"
+"象、修改的属性的名称和该属性即将采用的新值。"
msgid ""
"[EditorInterface] is a global singleton and can be accessed directly by its "
@@ -44221,6 +42673,35 @@ msgstr ""
msgid "Importer for the [code].fbx[/code] scene file format."
msgstr "[code].fbx[/code] 场景文件格式的导入器。"
+msgid ""
+"Imports Autodesk FBX 3D scenes by way of converting them to glTF 2.0 using "
+"the FBX2glTF command line tool.\n"
+"The location of the FBX2glTF binary is set via the [member EditorSettings."
+"filesystem/import/fbx2gltf/fbx2gltf_path] editor setting.\n"
+"This importer is only used if [member ProjectSettings.filesystem/import/"
+"fbx2gltf/enabled] is set to [code]true[/code]."
+msgstr ""
+"通过使用 FBX2glTF 命令行工具将 Autodesk FBX 3D 场景转换为 glTF 2.0 来导入它"
+"们。\n"
+"FBX2glTF 可执行文件的位置通过 [member EditorSettings.filesystem/import/"
+"fbx2gltf/fbx2gltf_path] 编辑器设置进行设置。\n"
+"仅当 [member ProjectSettings.filesystem/import/fbx2gltf/enabled] 设置为 "
+"[code]true[/code] 时,才使用该导入器。"
+
+msgid "Import FBX files using the ufbx library."
+msgstr "使用 ufbx 库导入 FBX 文件。"
+
+msgid ""
+"EditorSceneFormatImporterUFBX is designed to load FBX files and supports both "
+"binary and ASCII FBX files from version 3000 onward. This class supports "
+"various 3D object types like meshes, skins, blend shapes, materials, and "
+"rigging information. The class aims for feature parity with the official FBX "
+"SDK and supports FBX 7.4 specifications."
+msgstr ""
+"EditorSceneFormatImporterUFBX 旨在加载 FBX 文件,并支持从版本 3000 开始的二进"
+"制和 ASCII FBX 文件。该类支持各种 3D 对象类型,例如网格、皮肤、混合形状、材质"
+"和绑定信息。该类旨在与官方 FBX SDK 功能相同,并支持 FBX 7.4 规范。"
+
msgid "Post-processes scenes after import."
msgstr "导入后对场景进行后处理。"
@@ -44548,6 +43029,17 @@ msgstr ""
msgid "Clear the selection."
msgstr "清除选中项。"
+msgid "Returns the list of selected nodes."
+msgstr "返回所选节点的列表。"
+
+msgid ""
+"Returns the list of selected nodes, optimized for transform operations (i.e. "
+"moving them, rotating, etc.). This list can be used to avoid situations where "
+"a node is selected and is also a child/grandchild."
+msgstr ""
+"返回选定节点的列表,针对变换操作(即移动它们、旋转等)进行了优化。该列表可用于"
+"避免被选择的节点同时也是子节点/孙节点的情况。"
+
msgid "Removes a node from the selection."
msgstr "从选择中删除一个节点。"
@@ -44803,6 +43295,14 @@ msgstr ""
"如果为 [code]false[/code],则在从编辑器运行项目时保持[b]本地[/b]场景树。"
msgid ""
+"If [code]true[/code], enables collection of profiling data from non-GDScript "
+"Godot functions, such as engine class methods. Enabling this slows execution "
+"while profiling further."
+msgstr ""
+"如果为 [code]true[/code],则启用从非 GDScript Godot 函数(例如引擎类方法)收集"
+"分析数据。启用该功能会减慢执行速度,同时进一步进行分析。"
+
+msgid ""
"The size of the profiler's frame history. The default value (3600) allows "
"seeing up to 60 seconds of profiling if the project renders at a constant 60 "
"FPS. Higher values allow viewing longer periods of profiling in the graphs, "
@@ -45196,7 +43696,7 @@ msgstr ""
"如果为 [code]true[/code],启用 3 键鼠标模拟模式。这在使用触控板的笔记本电脑上"
"很有用。\n"
"启用 3 键鼠标模拟模式后,即使未按住任何鼠标按钮,也始终可以在 3D 编辑器视口中"
-"使用平移、缩放、和视轨修饰键。\n"
+"使用平移、缩放和视轨修饰键。\n"
"[b]注意:[/b]无论 [member editors/3d/navigation/orbit_modifier] 中配置的视轨修"
"饰键如何,[kbd]Alt[/kbd] 在该模式下始终可用于视轨,以提高绘图板的可用性。"
@@ -45220,8 +43720,8 @@ msgid ""
"If [code]true[/code], invert the vertical mouse axis when panning, orbiting, "
"or using freelook mode in the 3D editor."
msgstr ""
-"如果为 [code]true[/code],则在 3D 编辑器中平移、视轨、或使用自由观看模式时,反"
-"转鼠标垂直轴。"
+"如果为 [code]true[/code],则在 3D 编辑器中平移、视轨或使用自由观看模式时,反转"
+"鼠标垂直轴。"
msgid ""
"The navigation scheme to use in the 3D editor. Changing this setting will "
@@ -45465,8 +43965,8 @@ msgid ""
"animation_editors_panning_scheme]."
msgstr ""
"控制鼠标滚轮滚动在子编辑器中是缩放还是平移。受影响的子编辑器列表有:动画混合树"
-"编辑器、[Polygon2D] 编辑器、图块集编辑器、纹理区域编辑器、和可视着色器编辑器。"
-"另请参阅 [member editors/panning/2d_editor_panning_scheme] 和 [member editors/"
+"编辑器、[Polygon2D] 编辑器、图块集编辑器、纹理区域编辑器和可视着色器编辑器。另"
+"请参阅 [member editors/panning/2d_editor_panning_scheme] 和 [member editors/"
"panning/animation_editors_panning_scheme]。"
msgid ""
@@ -45478,6 +43978,14 @@ msgstr ""
"传送到对侧。这样在大型区域中平移就不必先退出平移然后调整鼠标光标。"
msgid ""
+"The delay in seconds until more complex and performance costly polygon "
+"editors commit their outlines, e.g. the 2D navigation polygon editor rebakes "
+"the navigation mesh polygons. A negative value stops the auto bake."
+msgstr ""
+"延迟数秒,直到更复杂且性能成本更高的多边形编辑器提交其轮廓,例如 2D 导航多边形"
+"编辑器重新烘焙导航网格多边形。负值会停止自动烘焙。"
+
+msgid ""
"The radius in which points can be selected in the [Polygon2D] and "
"[CollisionPolygon2D] editors (in pixels). Higher values make it easier to "
"select points quickly, but can make it more difficult to select the expected "
@@ -45519,6 +44027,84 @@ msgstr ""
"code] 时有效。"
msgid ""
+"The color of a graph node's header when it belongs to the \"Color\" category."
+msgstr "当图形节点属于“颜色”类别时其标题的颜色。"
+
+msgid ""
+"The color of a graph node's header when it belongs to the \"Conditional\" "
+"category."
+msgstr "当图形节点属于“条件”类别时其标题的颜色。"
+
+msgid ""
+"The color of a graph node's header when it belongs to the \"Input\" category."
+msgstr "当图形节点属于“输入”类别时其标题的颜色。"
+
+msgid ""
+"The color of a graph node's header when it belongs to the \"Output\" category."
+msgstr "当图形节点属于“输出”类别时其标题的颜色。"
+
+msgid ""
+"The color of a graph node's header when it belongs to the \"Particle\" "
+"category."
+msgstr "当图形节点属于“粒子”类别时其标题的颜色。"
+
+msgid ""
+"The color of a graph node's header when it belongs to the \"Scalar\" category."
+msgstr "当图形节点属于“标量”类别时其标题的颜色。"
+
+msgid ""
+"The color of a graph node's header when it belongs to the \"Special\" "
+"category."
+msgstr "当图形节点属于“特殊”类别时其标题的颜色。"
+
+msgid ""
+"The color of a graph node's header when it belongs to the \"Textures\" "
+"category."
+msgstr "当图形节点属于“纹理”类别时其标题的颜色。"
+
+msgid ""
+"The color of a graph node's header when it belongs to the \"Transform\" "
+"category."
+msgstr "当图形节点属于“变换”类别时其标题的颜色。"
+
+msgid ""
+"The color of a graph node's header when it belongs to the \"Utility\" "
+"category."
+msgstr "当图形节点属于“实用程序”类别时其标题的颜色。"
+
+msgid ""
+"The color of a graph node's header when it belongs to the \"Vector\" category."
+msgstr "当图形节点属于“向量”类别时其标题的颜色。"
+
+msgid "The color theme to use in the visual shader editor."
+msgstr "在可视化着色器编辑器中使用的颜色主题。"
+
+msgid "The color of a port/connection of boolean type."
+msgstr "布尔类型的端口/连接的颜色。"
+
+msgid "The color of a port/connection of sampler type."
+msgstr "采样器类型的端口/连接的颜色。"
+
+msgid ""
+"The color of a port/connection of scalar type (float, int, unsigned int)."
+msgstr "标量类型(float、int、unsigned int)的端口/连接的颜色。"
+
+msgid "The color of a port/connection of transform type."
+msgstr "变换类型的端口/连接的颜色。"
+
+msgid "The color of a port/connection of Vector2 type."
+msgstr "Vector2 类型的端口/连接的颜色。"
+
+msgid "The color of a port/connection of Vector3 type."
+msgstr "Vector3 类型的端口/连接的颜色。"
+
+msgid "The color of a port/connection of Vector4 type."
+msgstr "Vector4 类型的端口/连接的颜色。"
+
+msgid "The pattern used for the background grid."
+msgstr "用于背景栅格的图案。"
+
+msgid ""
"The curvature to use for connection lines in the visual shader editor. Higher "
"values will make connection lines appear more curved, with values above "
"[code]0.5[/code] resulting in more \"angular\" turns in the middle of "
@@ -45592,6 +44178,60 @@ msgstr ""
"定,则该文件会使用系统默认的程序打开。"
msgid ""
+"The terminal emulator program to use when using [b]Open in Terminal[/b] "
+"context menu action in the FileSystem dock. You can enter an absolute path to "
+"a program binary, or a path to a program that is present in the [code]PATH[/"
+"code] environment variable.\n"
+"If left empty, Godot will use the default terminal emulator for the system:\n"
+"- [b]Windows:[/b] PowerShell\n"
+"- [b]macOS:[/b] Terminal.app\n"
+"- [b]Linux:[/b] The first terminal found on the system in this order: gnome-"
+"terminal, konsole, xfce4-terminal, lxterminal, kitty, alacritty, urxvt, "
+"xterm.\n"
+"To use Command Prompt (cmd) instead of PowerShell on Windows, enter "
+"[code]cmd[/code] in this field and the correct flags will automatically be "
+"used.\n"
+"On macOS, make sure to point to the actual program binary located within the "
+"[code]Programs/MacOS[/code] folder of the .app bundle, rather than the .app "
+"bundle directory.\n"
+"If specifying a custom terminal emulator, you may need to override [member "
+"filesystem/external_programs/terminal_emulator_flags] so it opens in the "
+"correct folder."
+msgstr ""
+"执行文件系统面板的[b]在终端中打开[/b]上下文菜单动作时使用的终端模拟器程序。可"
+"以输入可执行文件的绝对路径,也可以输入存在于 [code]PATH[/code] 环境变量中的程"
+"序路径。\n"
+"留空时 Godot 会使用系统的默认终端模拟器:\n"
+"- [b]Windows:[/b]PowerShell\n"
+"- [b]macOS:[/b]Terminal.app\n"
+"- [b]Linux:[/b]按以下顺序找到的第一个终端:gnome-terminal、konsole、xfce4-"
+"terminal、lxterminal、kitty、alacritty、urxvt、xterm。\n"
+"如果想要在 Windows 上使用“命令提示符”(cmd)代替 PowerShell,请在这个字段中输"
+"入 [code]cmd[/code],这样就会自动使用正确的标志。\n"
+"在 macOS 上,请确保指向的是位于 .app 捆绑包的 [code]Programs/MacOS[/code] 文件"
+"夹中的实际可执行文件,不要指向 .app 捆绑包目录。\n"
+"指定自定义终端模拟器时,你可能还会需要覆盖 [member filesystem/"
+"external_programs/terminal_emulator_flags],从而让它在正确的文件夹中打开。"
+
+msgid ""
+"The command-line arguments to pass to the terminal emulator that is run when "
+"using [b]Open in Terminal[/b] context menu action in the FileSystem dock. See "
+"also [member filesystem/external_programs/terminal_emulator].\n"
+"If left empty, the default flags are [code]{directory}[/code], which is "
+"replaced by the absolute path to the directory that is being opened in the "
+"terminal.\n"
+"[b]Note:[/b] If the terminal emulator is set to PowerShell, cmd, or Konsole, "
+"Godot will automatically prepend arguments to this list, as these terminals "
+"require nonstandard arguments to open in the correct folder."
+msgstr ""
+"执行文件系统面板的[b]在终端中打开[/b]上下文菜单动作时传递给终端模拟器的命令行"
+"参数。另见 [member filesystem/external_programs/terminal_emulator]。\n"
+"留空时默认的标志是 [code]{directory}[/code],会替换为要在终端中打开的目录的绝"
+"对路径。\n"
+"[b]注意:[/b]终端模拟器为 PowerShell、cmd、Konsole 时,Godot 会自动在这个列表"
+"前加入一些额外的参数,因为这些终端需要非标准的参数才能够在正确的文件夹中打开。"
+
+msgid ""
"The program that opens vector image files when clicking \"Open in External "
"Program\" option in Filesystem Dock. If not specified, the file will be "
"opened in the system's default program."
@@ -45657,6 +44297,17 @@ msgstr ""
"Blender 进程的最大空闲运行时间(单位为秒)。\n"
"能够在给定的秒数内,防止 Godot 每次导入都创建一个新的进程。"
+msgid ""
+"The path to the FBX2glTF executable used for converting Autodesk FBX 3D scene "
+"files [code].fbx[/code] to glTF 2.0 format during import.\n"
+"To enable this feature for your specific project, use [member ProjectSettings."
+"filesystem/import/fbx2gltf/enabled]."
+msgstr ""
+"包含 FBX2glTF 可执行文件的目录,导入时会使用 FBX2glTF 将 Autodesk FBX 3D 场景"
+"文件 [code].fbx[/code] 转换为 glTF 2.0 格式。\n"
+"要为指定项目启用这个功能,请使用 [member ProjectSettings.filesystem/import/"
+"fbx2gltf/enabled]。"
+
msgid "If [code]true[/code], uses lossless compression for binary resources."
msgstr "如果为 [code]true[/code],则对二进制资源使用无损压缩。"
@@ -45880,6 +44531,19 @@ msgstr ""
"[/b]是最高质量的选项)。"
msgid ""
+"If [code]true[/code], setting names in the editor are localized when "
+"possible.\n"
+"[b]Note:[/b] This setting affects most [EditorInspector]s in the editor UI, "
+"primarily Project Settings and Editor Settings. To control names displayed in "
+"the Inspector dock, use [member interface/inspector/"
+"default_property_name_style] instead."
+msgstr ""
+"如果为 [code]true[/code],则编辑器中的设置名称将尽可能本地化。\n"
+"[b]注意:[/b]该设置会影响编辑器 UI 中的大多数 [EditorInspector],主要是项目设"
+"置和编辑器设置。要控制检查器面板中显示的名称,请改用 [member interface/"
+"inspector/default_property_name_style]。"
+
+msgid ""
"The amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU/GPU usage, "
"which can improve battery life on laptops. However, higher values will result "
@@ -45937,6 +44601,16 @@ msgstr ""
"存每个场景。"
msgid ""
+"If [code]true[/code], scenes and scripts are saved when the editor loses "
+"focus. Depending on the work flow, this behavior can be less intrusive than "
+"[member text_editor/behavior/files/autosave_interval_secs] or remembering to "
+"save manually."
+msgstr ""
+"如果为 [code]true[/code],则会在编辑器丢失焦点时保存场景和脚本。根据具体工作流"
+"程的不同,这种行为可能会比 [member text_editor/behavior/files/"
+"autosave_interval_secs] 和自己记得手动保存要方便。"
+
+msgid ""
"If [code]true[/code], the editor's Script tab will have a separate "
"distraction mode setting from the 2D/3D/AssetLib tabs. If [code]false[/code], "
"the distraction-free mode toggle is shared between all tabs."
@@ -45960,6 +44634,33 @@ msgstr ""
"[code]dev_build=no[/code])编译的编辑器中启用该功能。"
msgid ""
+"If enabled, displays an icon in the top-right corner of the editor that spins "
+"when the editor redraws a frame. This can be used to diagnose situations "
+"where the engine is constantly redrawing, which should be avoided as this "
+"increases CPU and GPU utilization for no good reason. To further troubleshoot "
+"these situations, start the editor with the [code]--debug-canvas-item-redraw[/"
+"code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line "
+"argument[/url].\n"
+"Consider enabling this if you are developing editor plugins to ensure they "
+"only make the editor redraw when required.\n"
+"The default [b]Auto[/b] value will only enable this if the editor was "
+"compiled with the [code]dev_build=yes[/code] SCons option (the default is "
+"[code]dev_build=no[/code]).\n"
+"[b]Note:[/b] If [member interface/editor/update_continuously] is [code]true[/"
+"code], the spinner icon displays in red."
+msgstr ""
+"如果启用,则会在编辑器右上角显示一个图标,会在编辑器发生帧重绘时旋转。可以用来"
+"诊断引擎不断重绘的问题,防止无意义地增加对 CPU 和 GPU 的占用。要进一步排查这种"
+"情况,请在启动编辑器时使用 [code]--debug-canvas-item-redraw[/code] "
+"[url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]命令行参数[/"
+"url]。\n"
+"如果你在开发编辑器插件,请考虑启用这个设置,确保只在必要时触发编辑器的重绘。\n"
+"默认为 [b]Auto[/b] 只会在编辑器是使用 [code]dev_build=yes[/code] Scons 选项时"
+"启用这个图标(默认为 [code]dev_build=no[/code])。\n"
+"[b]注意:[/b]如果 [member interface/editor/update_continuously] 为 "
+"[code]true[/code],则旋转图会以红色显示。"
+
+msgid ""
"If [code]true[/code], embed modal windows such as docks inside the main "
"editor window. When single-window mode is enabled, tooltips will also be "
"embedded inside the main editor window, which means they can't be displayed "
@@ -45999,6 +44700,20 @@ msgstr ""
"[code]true[/code],则忽略该设置,因为启用该设置会禁用低处理器模式。"
msgid ""
+"If [code]true[/code], redraws the editor every frame even if nothing has "
+"changed on screen. When this setting is enabled, the update spinner displays "
+"in red (see [member interface/editor/show_update_spinner]).\n"
+"[b]Warning:[/b] This greatly increases CPU and GPU utilization, leading to "
+"increased power usage. This should only be enabled for troubleshooting "
+"purposes."
+msgstr ""
+"如果为 [code]true[/code],则即使屏幕上没有任何更改,也会在每一帧中重新绘制编辑"
+"器。启用该设置后,更新微调器显示为红色(请参阅 [member interface/editor/"
+"show_update_spinner])。\n"
+"[b]警告:[/b]这会大大增加 CPU 和 GPU 的利用率,从而导致功耗增加。仅应出于故障"
+"排除目的启用该功能。"
+
+msgid ""
"If [code]true[/code], editor main menu is using embedded [MenuBar] instead of "
"system global menu.\n"
"Specific to the macOS platform."
@@ -46023,6 +44738,14 @@ msgstr ""
"式,不支持 Compatibility。"
msgid ""
+"If [code]true[/code], automatically expands property groups in the Inspector "
+"dock when opening a scene that hasn't been opened previously. If [code]false[/"
+"code], all groups remain collapsed by default."
+msgstr ""
+"如果为 [code]true[/code],则会在打开之前没有打开过的场景时,自动展开“检查器”面"
+"板中的属性分组。如果为 [code]false[/code],则默认折叠所有分组。"
+
+msgid ""
"The default color picker mode to use when opening [ColorPicker]s in the "
"editor. This mode can be temporarily adjusted on the color picker itself."
msgstr ""
@@ -46037,6 +44760,33 @@ msgstr ""
"整。"
msgid ""
+"The floating-point precision to use for properties that don't define an "
+"explicit precision step. Lower values allow entering more precise values."
+msgstr ""
+"浮点数精度,适用于没有显式定义精度步长的属性。取值越小,输入值所能达到的精度就"
+"越高。"
+
+msgid ""
+"The default property name style to display in the Inspector dock. This style "
+"can be temporarily adjusted in the Inspector dock's menu.\n"
+"- [b]Raw:[/b] Displays properties in [code]snake_case[/code].\n"
+"- [b]Capitalized:[/b] Displays properties capitalized.\n"
+"- [b]Localized:[/b] Displays the localized string for the current editor "
+"language if a translation is available for the given property. If no "
+"translation is available, falls back to [b]Capitalized[/b].\n"
+"[b]Note:[/b] To display translated setting names in Project Settings and "
+"Editor Settings, use [member interface/editor/localize_settings] instead."
+msgstr ""
+"在检查器面板中显示的默认属性名称风格。可以在检查器面板的菜单中临时调整该风"
+"格。\n"
+"- [b]Raw:[/b]以 [code]snake_case[/code] 风格显示属性。\n"
+"- [b]Capitalized:[/b]首字母大写显示属性。\n"
+"- [b]Localized:[/b]如果给定属性有可用的翻译,则根据当前编辑器语言显示本地化字"
+"符串。如果没有可用的翻译,则回退至 [b]Capitalized[/b]。\n"
+"[b]注意:[/b]要在“项目设置”和“编辑器设置”中显示翻译后的设置名称,请改用 "
+"[member interface/editor/localize_settings]。"
+
+msgid ""
"If [code]true[/code], forces all property groups to be expanded in the "
"Inspector dock and prevents collapsing them."
msgstr ""
@@ -46148,6 +44898,17 @@ msgid "The maximum width of each scene tab at the top editor (in pixels)."
msgstr "顶部编辑器中每个场景选项卡的最大宽度(以像素为单位)。"
msgid ""
+"If [code]true[/code], when a project is loaded, restores scenes that were "
+"opened on the last editor session.\n"
+"[b]Note:[/b] With many opened scenes, the editor may take longer to become "
+"usable. If starting the editor quickly is necessary, consider setting this to "
+"[code]false[/code]."
+msgstr ""
+"如果为 [code]true[/code],则在加载项目时会恢复上一次编辑器会话中打开的场景。\n"
+"[b]注意:[/b]如果打开的场景很多,编辑器可能会花费较长的时间才能启动完成。如果"
+"必须快速启动编辑器,请考虑将其设置为 [code]false[/code]。"
+
+msgid ""
"If [code]true[/code], show a button next to each scene tab that opens the "
"scene's \"dominant\" script when clicked. The \"dominant\" script is the one "
"that is at the highest level in the scene's hierarchy."
@@ -46229,22 +44990,9 @@ msgstr ""
"[b]Black (OLED)[/b]主题预设时该项会自动启用,因为该主题预设使用全黑背景。"
msgid ""
-"The icon and font color scheme to use in the editor.\n"
-"- [b]Auto[/b] determines the color scheme to use automatically based on "
-"[member interface/theme/base_color].\n"
-"- [b]Dark[/b] makes fonts and icons dark (suitable for light themes). Icon "
-"colors are automatically converted by the editor following the set of rules "
-"defined in [url=https://github.com/godotengine/godot/blob/master/editor/"
-"editor_themes.cpp]this file[/url].\n"
-"- [b]Light[/b] makes fonts and icons light (suitable for dark themes)."
-msgstr ""
-"在编辑器中使用的图标和字体的配色方案。\n"
-"- [b]Auto[/b] 根据 [member interface/theme/base_color] 自动确定要使用的配色方"
-"案。\n"
-"- [b]Dark[/b] 使字体和图标变暗(适合浅色主题)。图标颜色由编辑器按照"
-"[url=https://github.com/godotengine/godot/blob/master/editor/editor_themes."
-"cpp]该文件[/url]中定义的一组规则自动转换。\n"
-"- [b]Light[/b] 使字体和图标变亮(适合深色主题)。"
+"If [code]true[/code], the editor theme preset will attempt to automatically "
+"match the system theme."
+msgstr "如果为 [code]true[/code],则编辑器主题预设将尝试自动匹配系统主题。"
msgid ""
"The saturation to use for editor icons. Higher values result in more vibrant "
@@ -46269,6 +45017,20 @@ msgstr ""
"度。"
msgid ""
+"The editor theme spacing preset to use. See also [member interface/theme/"
+"base_spacing] and [member interface/theme/additional_spacing]."
+msgstr ""
+"预设要使用的编辑器主题间距。另见 [member interface/theme/base_spacing] 和 "
+"[member interface/theme/additional_spacing]。"
+
+msgid ""
+"If [code]true[/code], set accent color based on system settings.\n"
+"[b]Note:[/b] This setting is only effective on Windows and MacOS."
+msgstr ""
+"如果为 [code]true[/code],则根据系统设置设置强调色。\n"
+"[b]注意:[/b]该设置仅在 Windows 和 MacOS 上有效。"
+
+msgid ""
"If [code]true[/code], long press on touchscreen is treated as right click.\n"
"[b]Note:[/b] Defaults to [code]true[/code] on touchscreen devices."
msgstr ""
@@ -46356,8 +45118,8 @@ msgid ""
"project. Accepted strings are \"forward_plus\", \"mobile\" or "
"\"gl_compatibility\"."
msgstr ""
-"创建新项目时默认勾选的渲染器类型。可接受的字符串是“forward_plus”、“mobile”、"
-"或“gl_compatibility”。"
+"创建新项目时默认勾选的渲染器类型。可接受的字符串"
+"是“forward_plus”“mobile”或“gl_compatibility”。"
msgid ""
"The sorting order to use in the project manager. When changing the sorting "
@@ -47669,9 +46431,9 @@ msgid ""
msgstr ""
"返回 [Dictionary] 项的数组(参见 [method create_diff_file]、[method "
"create_diff_hunk]、[method create_diff_line]、[method "
-"add_line_diffs_into_diff_hunk]、和 [method add_diff_hunks_into_diff_file]),"
-"每项都包含一个差异的信息。如果 [param identifier] 是文件路径,则返回文件差异;"
-"如果它是提交标识符,则返回提交差异。"
+"add_line_diffs_into_diff_hunk] 和 [method add_diff_hunks_into_diff_file]),每"
+"项都包含一个差异的信息。如果 [param identifier] 是文件路径,则返回文件差异;如"
+"果它是提交标识符,则返回提交差异。"
msgid ""
"Returns an [Array] of [Dictionary] items (see [method create_diff_hunk]), "
@@ -47917,8 +46679,8 @@ msgstr ""
"用压缩,可能需要测试哪一种最适合你的用例。\n"
"[b]注意:[/b]大多数游戏的网络设计,都涉及频繁发送许多小数据包(每个小于 4 "
"KB)。如果有疑问,建议保留默认压缩算法,因为它最适合这些小数据包。\n"
-"[b]注意:[/b]压缩模式必须在服务端及其所有客户端上设置为相同的值。如果客户端上"
-"设置的压缩模式与服务端上设置的不同,则客户端将无法连接。"
+"[b]注意:[/b]压缩模式必须在服务器及其所有客户端上设置为相同的值。如果客户端上"
+"设置的压缩模式与服务器上设置的不同,则客户端将无法连接。"
msgid ""
"Initiates a connection to a foreign [param address] using the specified "
@@ -48003,7 +46765,7 @@ msgid ""
"[b]Note:[/b] This method is only relevant after calling [method "
"dtls_server_setup]."
msgstr ""
-"将 DTLS 服务端配置为自动断开新连接。\n"
+"将 DTLS 服务器配置为自动断开新连接。\n"
"[b]注意:[/b]这个方法只有在调用了 [method dtls_server_setup] 后才有用。"
msgid ""
@@ -48020,7 +46782,7 @@ msgstr ""
"个元素。[enum EventType]、生成事件的 [ENetPacketPeer]、事件关联的数据(如果"
"有)、事件关联的通道(如果有)。如果生成的事件是 [constant EVENT_RECEIVE],则"
"接收到的数据包,将被队列到关联的 [ENetPacketPeer]。\n"
-"定期调用该函数来处理连接、断开连接、和接收新数据包。"
+"定期调用该函数来处理连接、断开连接和接收新数据包。"
msgid ""
"Sends a [param packet] toward a destination from the address and port "
@@ -48581,17 +47343,525 @@ msgid "Provides access to engine properties."
msgstr "提供对引擎属性的访问。"
msgid ""
+"The [Engine] singleton allows you to query and modify the project's run-time "
+"parameters, such as frames per second, time scale, and others. It also stores "
+"information about the current build of Godot, such as the current version."
+msgstr ""
+"[Engine] 单例使你可以查询和修改项目的运行时参数,例如每秒帧数,时间缩放等。它"
+"还存储有关 Godot 当前构建的信息,例如当前版本。"
+
+msgid ""
+"Returns the engine author information as a [Dictionary], where each entry is "
+"an [Array] of strings with the names of notable contributors to the Godot "
+"Engine: [code]lead_developers[/code], [code]founders[/code], "
+"[code]project_managers[/code], and [code]developers[/code]."
+msgstr ""
+"以 [Dictionary] 形式返回引擎作者信息,其中每个条目都是一个字符串 [Array],其中"
+"包含 Godot 引擎著名贡献者的姓名:[code]lead_developers[/code]、"
+"[code]founders[/code]、[code]project_managers[/code] 和 [code]developers[/"
+"code]。"
+
+msgid ""
+"Returns an [Array] of dictionaries with copyright information for every "
+"component of Godot's source code.\n"
+"Every [Dictionary] contains a [code]name[/code] identifier, and a "
+"[code]parts[/code] array of dictionaries. It describes the component in "
+"detail with the following entries:\n"
+"- [code]files[/code] - [Array] of file paths from the source code affected by "
+"this component;\n"
+"- [code]copyright[/code] - [Array] of owners of this component;\n"
+"- [code]license[/code] - The license applied to this component (such as "
+"\"[url=https://en.wikipedia.org/wiki/"
+"MIT_License#Ambiguity_and_variants]Expat[/url]\" or \"[url=https://"
+"creativecommons.org/licenses/by/4.0/]CC-BY-4.0[/url]\")."
+msgstr ""
+"返回包含 Godot 源码组件版权信息的字典的 [Array]。\n"
+"每个 [Dictionary] 中都包含了名称标识符 [code]name[/code] 以及另一个字典数组 "
+"[code]parts[/code]。后者详细描述了对应的组件,包含的字段如下:\n"
+"- [code]files[/code] - 受到该组件影响的源码文件路径 [Array];\n"
+"- [code]copyright[/code] - 该组件的所有者 [Array];\n"
+"- [code]license[/code] - 该组件适用的协议(例如 \"[url=https://en.wikipedia."
+"org/wiki/MIT_License#Ambiguity_and_variants]Expat[/url]\" 或 \"[url=https://"
+"creativecommons.org/licenses/by/4.0/]CC-BY-4.0[/url]\")。"
+
+msgid ""
+"Returns a [Dictionary] of categorized donor names. Each entry is an [Array] "
+"of strings:\n"
+"{[code]platinum_sponsors[/code], [code]gold_sponsors[/code], "
+"[code]silver_sponsors[/code], [code]bronze_sponsors[/code], "
+"[code]mini_sponsors[/code], [code]gold_donors[/code], [code]silver_donors[/"
+"code], [code]bronze_donors[/code]}"
+msgstr ""
+"返回分类捐赠者姓名的 [Dictionary]。每个条目都是一个字符串 [Array]:\n"
+"{[code]platinum_sponsors[/code], [code]gold_sponsors[/code], "
+"[code]silver_sponsors[/code], [code]bronze_sponsors[/code], "
+"[code]mini_sponsors[/code], [code]gold_donors[/code], [code]silver_donors[/"
+"code], [code]bronze_donors[/code]}"
+
+msgid ""
+"Returns the total number of frames drawn since the engine started.\n"
+"[b]Note:[/b] On headless platforms, or if rendering is disabled with [code]--"
+"disable-render-loop[/code] via command line, this method always returns "
+"[code]0[/code]. See also [method get_process_frames]."
+msgstr ""
+"返回自引擎启动以来绘制的帧的总数。\n"
+"[b]注意:[/b]在无头平台上,或者如果通过命令行使用 [code]--disable-render-"
+"loop[/code] 禁用渲染,则该方法始终返回 [code]0[/code]。请参阅 [method "
+"get_process_frames]。"
+
+msgid ""
+"Returns the average frames rendered every second (FPS), also known as the "
+"framerate."
+msgstr "返回每秒渲染的平均帧数(FPS),也被称为帧速率。"
+
+msgid ""
+"Returns a [Dictionary] of licenses used by Godot and included third party "
+"components. Each entry is a license name (such as \"[url=https://en.wikipedia."
+"org/wiki/MIT_License#Ambiguity_and_variants]Expat[/url]\") and its associated "
+"text."
+msgstr ""
+"返回 Godot 和包含的第三方组件使用的许可证的 [Dictionary]。每个条目都是一个许可"
+"证名称(例如 \"[url=https://en.wikipedia.org/wiki/"
+"MIT_License#Ambiguity_and_variants]Expat[/url]\")及其关联的文本。"
+
+msgid "Returns the full Godot license text."
+msgstr "返回完整的 Godot 许可证文本。"
+
+msgid ""
+"Returns the instance of the [MainLoop]. This is usually the main [SceneTree] "
+"and is the same as [method Node.get_tree].\n"
+"[b]Note:[/b] The type instantiated as the main loop can changed with [member "
+"ProjectSettings.application/run/main_loop_type]."
+msgstr ""
+"返回该 [MainLoop] 的实例。这通常是主 [SceneTree] 并且与 [method Node."
+"get_tree] 相同。\n"
+"[b]注意:[/b]作为主循环的实例化类型可以通过 [member ProjectSettings."
+"application/run/main_loop_type] 更改。"
+
+msgid ""
+"Returns the total number of frames passed since the engine started. This "
+"number is increased every [b]physics frame[/b]. See also [method "
+"get_process_frames].\n"
+"This method can be used to run expensive logic less often without relying on "
+"a [Timer]:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _physics_process(_delta):\n"
+" if Engine.get_physics_frames() % 2 == 0:\n"
+" pass # Run expensive logic only once every 2 physics frames here.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _PhysicsProcess(double delta)\n"
+"{\n"
+" base._PhysicsProcess(delta);\n"
+"\n"
+" if (Engine.GetPhysicsFrames() % 2 == 0)\n"
+" {\n"
+" // Run expensive logic only once every 2 physics frames here.\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回自引擎启动以来经过的总帧数。这个数字每个[b]物理帧[/b]都会增加。另见 "
+"[method get_process_frames]。\n"
+"该方法可用于在不依赖 [Timer] 的情况下,减少运行昂贵的逻辑的次数:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _physics_process(_delta):\n"
+" if Engine.get_physics_frames() % 2 == 0:\n"
+" pass # 此处每 2 个物理帧仅运行一次昂贵的逻辑。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _PhysicsProcess(double delta)\n"
+"{\n"
+" base._PhysicsProcess(delta);\n"
+"\n"
+" if (Engine.GetPhysicsFrames() % 2 == 0)\n"
+" {\n"
+" // 此处每 2 个物理帧仅运行一次昂贵的逻辑。\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
"Returns the fraction through the current physics tick we are at the time of "
"rendering the frame. This can be used to implement fixed timestep "
"interpolation."
msgstr "返回渲染帧时当前物理周期中的分数。可用于实现固定的时间步插值。"
msgid ""
+"Returns the total number of frames passed since the engine started. This "
+"number is increased every [b]process frame[/b], regardless of whether the "
+"render loop is enabled. See also [method get_frames_drawn] and [method "
+"get_physics_frames].\n"
+"This method can be used to run expensive logic less often without relying on "
+"a [Timer]:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _process(_delta):\n"
+" if Engine.get_process_frames() % 5 == 0:\n"
+" pass # Run expensive logic only once every 5 process (render) frames "
+"here.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Process(double delta)\n"
+"{\n"
+" base._Process(delta);\n"
+"\n"
+" if (Engine.GetProcessFrames() % 5 == 0)\n"
+" {\n"
+" // Run expensive logic only once every 5 process (render) frames "
+"here.\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回自引擎启动以来经过的总帧数,无论渲染循环是否启用,每个[b]处理帧[/b]都会增"
+"加该数字。另见 [method get_frames_drawn] 和 [method get_physics_frames]。\n"
+"[method get_process_frames] 可用于在不依赖 [Timer] 的情况下,减少运行昂贵的逻"
+"辑的次数:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func _process(_delta):\n"
+" if Engine.get_process_frames() % 2 == 0:\n"
+" pass # 此处每 2 个处理(渲染)帧仅运行一次昂贵的逻辑。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public override void _Process(double delta)\n"
+"{\n"
+" base._Process(delta);\n"
+"\n"
+" if (Engine.GetProcessFrames() % 2 == 0)\n"
+" {\n"
+" // 此处每 2 个处理(渲染)帧仅运行一次昂贵的逻辑。\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid "Returns an instance of a [ScriptLanguage] with the given [param index]."
+msgstr "返回给定索引 [param index] 处的 [ScriptLanguage] 实例。"
+
+msgid ""
"Returns the number of available script languages. Use with [method "
"get_script_language]."
msgstr "返回可用脚本语言的数量。请配合 [method get_script_language] 使用。"
msgid ""
+"Returns the global singleton with the given [param name], or [code]null[/"
+"code] if it does not exist. Often used for plugins. See also [method "
+"has_singleton] and [method get_singleton_list].\n"
+"[b]Note:[/b] Global singletons are not the same as autoloaded nodes, which "
+"are configurable in the project settings."
+msgstr ""
+"返回具有给定 [param name] 的全局单例,如果不存在则返回 [code]null[/code]。常用"
+"于插件。另见 [method has_singleton] and [method get_singleton_list]。\n"
+"[b]注意:[/b]全局单例与自动加载的节点不同,后者可以在项目设置中进行配置。"
+
+msgid ""
+"Returns a list of names of all available global singletons. See also [method "
+"get_singleton]."
+msgstr "返回所有可用全局单例的名称列表。另见 [method get_singleton]。"
+
+msgid ""
+"Returns the current engine version information as a [Dictionary] containing "
+"the following entries:\n"
+"- [code]major[/code] - Major version number as an int;\n"
+"- [code]minor[/code] - Minor version number as an int;\n"
+"- [code]patch[/code] - Patch version number as an int;\n"
+"- [code]hex[/code] - Full version encoded as a hexadecimal int with one byte "
+"(2 hex digits) per number (see example below);\n"
+"- [code]status[/code] - Status (such as \"beta\", \"rc1\", \"rc2\", "
+"\"stable\", etc.) as a String;\n"
+"- [code]build[/code] - Build name (e.g. \"custom_build\") as a String;\n"
+"- [code]hash[/code] - Full Git commit hash as a String;\n"
+"- [code]timestamp[/code] - Holds the Git commit date UNIX timestamp in "
+"seconds as an int, or [code]0[/code] if unavailable;\n"
+"- [code]string[/code] - [code]major[/code], [code]minor[/code], [code]patch[/"
+"code], [code]status[/code], and [code]build[/code] in a single String.\n"
+"The [code]hex[/code] value is encoded as follows, from left to right: one "
+"byte for the major, one byte for the minor, one byte for the patch version. "
+"For example, \"3.1.12\" would be [code]0x03010C[/code].\n"
+"[b]Note:[/b] The [code]hex[/code] value is still an [int] internally, and "
+"printing it will give you its decimal representation, which is not "
+"particularly meaningful. Use hexadecimal literals for quick version "
+"comparisons from code:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"if Engine.get_version_info().hex >= 0x040100:\n"
+" pass # Do things specific to version 4.1 or later.\n"
+"else:\n"
+" pass # Do things specific to versions before 4.1.\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"if ((int)Engine.GetVersionInfo()[\"hex\"] >= 0x040100)\n"
+"{\n"
+" // Do things specific to version 4.1 or later.\n"
+"}\n"
+"else\n"
+"{\n"
+" // Do things specific to versions before 4.1.\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"以包含以下条目的 [Dictionary] 形式返回当前引擎版本信息:\n"
+"- [code]major[/code] - 主要版本号为一个 int;\n"
+"- [code]minor[/code] - 次要版本号为一个 int;\n"
+"- [code]patch[/code] - 补丁版本号为一个 int;\n"
+"- [code]hex[/code] - 完整版本被编码为一个十六进制 int,每个数字一个字节(2 个"
+"十六进制数字)(参见下面的示例);\n"
+"- [code]status[/code] - 状态(例如“beta”、“rc1”、“rc2”、“stable” 等)为一串字"
+"符串;\n"
+"- [code]build[/code] - 构建名称(例如 “custom_build”)为一串字符串;\n"
+"- [code]hash[/code] - 完整的 Git 提交哈希为一串字符串;\n"
+"- [code]timestamp[/code] - 以秒为单位,以 int 形式保存 Git 提交日期 UNIX 时间"
+"戳,如果不可用,则保存为 [code]0[/code];\n"
+"- [code]string[/code] - 将 [code]major[/code] + [code]minor[/code] + "
+"[code]patch[/code] + [code]status[/code] + [code]build[/code] 保存在单个字符串"
+"中。\n"
+"[code]hex[/code] 值的编码方式如下,从左到右:主版本对应一字节,次版本对应一字"
+"节,补丁版本对应一字节。例如,“3.1.12”将是 [code]0x03010C[/code]。\n"
+"[b]注意:[/b][code]hex[/code] 值内部还是一个 [int],打印出来就是它的十进制表"
+"示,没有特别的意义。使用十六进制文字从代码中快速比较版本:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"if Engine.get_version_info().hex >= 0x040100:\n"
+" pass # 执行特定于版本 4.1 或更高版本的操作。\n"
+"else:\n"
+" pass # 执行特定于 4.1 之前版本的操作。\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"if ((int)Engine.GetVersionInfo()[\"hex\"] >= 0x040100)\n"
+"{\n"
+" // 执行特定于版本 4.1 或更高版本的操作。\n"
+"}\n"
+"else\n"
+"{\n"
+" // 执行特定于 4.1 之前版本的操作。\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
+msgid ""
+"Returns the path to the [MovieWriter]'s output file, or an empty string if "
+"the engine wasn't started in Movie Maker mode. The default path can be "
+"changed in [member ProjectSettings.editor/movie_writer/movie_file]."
+msgstr ""
+"返回 [MovieWriter] 的输出文件的路径,如果引擎未在 Movie Maker 模式下启动,则返"
+"回一个空字符串。该默认路径可以在 [member ProjectSettings.editor/movie_writer/"
+"movie_file] 中更改。"
+
+msgid ""
+"Returns [code]true[/code] if a singleton with the given [param name] exists "
+"in the global scope. See also [method get_singleton].\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"print(Engine.has_singleton(\"OS\")) # Prints true\n"
+"print(Engine.has_singleton(\"Engine\")) # Prints true\n"
+"print(Engine.has_singleton(\"AudioServer\")) # Prints true\n"
+"print(Engine.has_singleton(\"Unknown\")) # Prints false\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Print(Engine.HasSingleton(\"OS\")); // Prints true\n"
+"GD.Print(Engine.HasSingleton(\"Engine\")); // Prints true\n"
+"GD.Print(Engine.HasSingleton(\"AudioServer\")); // Prints true\n"
+"GD.Print(Engine.HasSingleton(\"Unknown\")); // Prints false\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] Global singletons are not the same as autoloaded nodes, which "
+"are configurable in the project settings."
+msgstr ""
+"如果全局范围内存在具有给定 [param name] 的单例,则返回 [code]true[/code]。另"
+"见 [method get_singleton]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"print(Engine.has_singleton(\"OS\")) # 输出 true\n"
+"print(Engine.has_singleton(\"Engine\")) # 输出 true\n"
+"print(Engine.has_singleton(\"AudioServer\")) # 输出 true\n"
+"print(Engine.has_singleton(\"Unknown\")) # 输出 false\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"GD.Print(Engine.HasSingleton(\"OS\")); // 输出 true\n"
+"GD.Print(Engine.HasSingleton(\"Engine\")); // 输出 true\n"
+"GD.Print(Engine.HasSingleton(\"AudioServer\")); // 输出 true\n"
+"GD.Print(Engine.HasSingleton(\"Unknown\")); // 输出 false\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注意:[/b]全局单例与自动加载的节点不同,后者可以在项目设置中进行配置。"
+
+msgid ""
+"Returns [code]true[/code] if the script is currently running inside the "
+"editor, otherwise returns [code]false[/code]. This is useful for [code]@tool[/"
+"code] scripts to conditionally draw editor helpers, or prevent accidentally "
+"running \"game\" code that would affect the scene state while in the editor:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"if Engine.is_editor_hint():\n"
+" draw_gizmos()\n"
+"else:\n"
+" simulate_physics()\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"if (Engine.IsEditorHint())\n"
+" DrawGizmos();\n"
+"else\n"
+" SimulatePhysics();\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"See [url=$DOCS_URL/tutorials/plugins/running_code_in_the_editor.html]Running "
+"code in the editor[/url] in the documentation for more information.\n"
+"[b]Note:[/b] To detect whether the script is running on an editor [i]build[/"
+"i] (such as when pressing [kbd]F5[/kbd]), use [method OS.has_feature] with "
+"the [code]\"editor\"[/code] argument instead. [code]OS.has_feature(\"editor\")"
+"[/code] evaluate to [code]true[/code] both when the script is running in the "
+"editor and when running the project from the editor, but returns [code]false[/"
+"code] when run from an exported project."
+msgstr ""
+"如果脚本当前正在编辑器中运行,则返回 [code]true[/code],否则返回 [code]false[/"
+"code]。这对于 [code]@tool[/code] 脚本很有用,可以有条件地绘制编辑器助手,或者"
+"防止在编辑器中意外运行会影响场景状态的“游戏”代码:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"if Engine.is_editor_hint():\n"
+" draw_gizmos()\n"
+"else:\n"
+" simulate_physics()\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"if (Engine.IsEditorHint())\n"
+" DrawGizmos();\n"
+"else\n"
+" SimulatePhysics();\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"有关详细信息,请参阅文档中的[url=$DOCS_URL/tutorials/plugins/"
+"running_code_in_the_editor.html]《在编辑器中运行代码》[/url]。\n"
+"[b]注意:[/b]要检测脚本是否在编辑器[i]构建[/i]上运行(例如,当按 [kbd]F5[/"
+"kbd] 时),请改用 [method OS.has_feature] 和 [code]\"editor\"[/code] 参数。"
+"[code]OS.has_feature(\"editor\")[/code] 将在编辑器中运行脚本和从编辑器运行项目"
+"时,被评估为 [code]true[/code];但当从导出的项目运行时,它将被评估为 "
+"[code]false[/code]。"
+
+msgid ""
+"Returns [code]true[/code] if the engine is inside the fixed physics process "
+"step of the main loop.\n"
+"[codeblock]\n"
+"func _enter_tree():\n"
+" # Depending on when the node is added to the tree,\n"
+" # prints either \"true\" or \"false\".\n"
+" print(Engine.is_in_physics_frame())\n"
+"\n"
+"func _process(delta):\n"
+" print(Engine.is_in_physics_frame()) # Prints false\n"
+"\n"
+"func _physics_process(delta):\n"
+" print(Engine.is_in_physics_frame()) # Prints true\n"
+"[/codeblock]"
+msgstr ""
+"如果引擎位于主循环的固定物理处理步骤内,则返回 [code]true[/code]。\n"
+"[codeblock]\n"
+"func _enter_tree():\n"
+" # 根据节点添加到树中的时间,\n"
+" # 输出 “true” 或 “false”。\n"
+" print(Engine.is_in_physics_frame())\n"
+"\n"
+"func _process(delta):\n"
+" print(Engine.is_in_physics_frame()) # 输出 false\n"
+"\n"
+"func _physics_process(delta):\n"
+" print(Engine.is_in_physics_frame()) # 输出 true\n"
+"[/codeblock]"
+
+msgid ""
+"Registers a [ScriptLanguage] instance to be available with "
+"[code]ScriptServer[/code].\n"
+"Returns:\n"
+"- [constant OK] on success;\n"
+"- [constant ERR_UNAVAILABLE] if [code]ScriptServer[/code] has reached the "
+"limit and cannot register any new language;\n"
+"- [constant ERR_ALREADY_EXISTS] if [code]ScriptServer[/code] already contains "
+"a language with similar extension/name/type."
+msgstr ""
+"注册一个 [ScriptLanguage] 实例,供 [code]ScriptServer[/code] 使用。\n"
+"返回:\n"
+"- [constant OK] 表示成功;\n"
+"- [constant ERR_UNAVAILABLE] 表示 [code]ScriptServer[/code] 已达到限制,无法注"
+"册任何新语言;\n"
+"- [constant ERR_ALREADY_EXISTS] 表示 [code]ScriptServer[/code] 已经包含一个具"
+"有相似扩展名/名称/类型的语言。"
+
+msgid ""
+"Registers the given [Object] [param instance] as a singleton, available "
+"globally under [param name]. Useful for plugins."
+msgstr ""
+"将给定的 [Object] [param instance] 注册为单例,在名称 [param name] 下全局可"
+"用。对于插件很有用。"
+
+msgid ""
+"Unregisters the [ScriptLanguage] instance from [code]ScriptServer[/code].\n"
+"Returns:\n"
+"- [constant OK] on success;\n"
+"- [constant ERR_DOES_NOT_EXIST] if the language is not registered in "
+"[code]ScriptServer[/code]."
+msgstr ""
+"从 [code]ScriptServer[/code] 注销该 [ScriptLanguage] 实例。\n"
+"返回:\n"
+"- [constant OK] 表示成功;\n"
+"- [constant ERR_DOES_NOT_EXIST] 表示该语言尚未在 [code]ScriptServer[/code] 中"
+"注册。"
+
+msgid ""
+"Removes the singleton registered under [param name]. The singleton object is "
+"[i]not[/i] freed. Only works with user-defined singletons registered with "
+"[method register_singleton]."
+msgstr ""
+"移除在 [param name] 下注册的单例。该单例对象[i]不会[/i]被释放。仅适用于使用 "
+"[method register_singleton] 注册的用户定义的单例。"
+
+msgid ""
+"The maximum number of physics steps that can be simulated each rendered "
+"frame.\n"
+"[b]Note:[/b] The default value is tuned to prevent expensive physics "
+"simulations from triggering even more expensive simulations indefinitely. "
+"However, the game will appear to slow down if the rendering FPS is less than "
+"[code]1 / max_physics_steps_per_frame[/code] of [member "
+"physics_ticks_per_second]. This occurs even if [code]delta[/code] is "
+"consistently used in physics calculations. To avoid this, increase [member "
+"max_physics_steps_per_frame] if you have increased [member "
+"physics_ticks_per_second] significantly above its default value."
+msgstr ""
+"每个渲染帧所能模拟的最大物理迭代数。\n"
+"[b]注意:[/b]调整默认值是为了防止昂贵的物理模拟无限期地触发更昂贵的模拟。然"
+"而,如果渲染 FPS 小于 [member physics_ticks_per_second] 的 [code]1 / "
+"max_physics_steps_per_frame[/code],游戏看上去会是降速的。即便在物理计算中始终"
+"使用 [code]delta[/code] 也一样会发生。要避免这种情况,如果已经增大了 [member "
+"physics_ticks_per_second],而且远大于其默认值,那么建议将 [member "
+"max_physics_steps_per_frame] 也调大。"
+
+msgid ""
+"How much physics ticks are synchronized with real time. If [code]0[/code] or "
+"less, the ticks are fully synchronized. Higher values cause the in-game clock "
+"to deviate more from the real clock, but they smooth out framerate jitters.\n"
+"[b]Note:[/b] The default value of [code]0.5[/code] should be good enough for "
+"most cases; values above [code]2[/code] could cause the game to react to "
+"dropped frames with a noticeable delay and are not recommended.\n"
+"[b]Note:[/b] When using a custom physics interpolation solution, or within a "
+"network game, it's recommended to disable the physics jitter fix by setting "
+"this property to [code]0[/code]."
+msgstr ""
+"有多少物理滴答与实际时间同步。如果为 [code]0[/code] 或更少,则滴答完全同步。较"
+"高的值会导致游戏中的时钟与真实时钟的偏差更大,但它们可以平滑帧率抖动。\n"
+"[b]注意:[/b]默认值 [code]0.5[/code] 对于大多数情况来说应该足够了;高于 "
+"[code]2[/code] 的值可能会导致游戏对掉帧做出反应并出现明显的延迟,因此不推荐使"
+"用。\n"
+"[b]注意:[/b]当使用自定义物理插值解决方案或在网络游戏中时,建议通过将该属性设"
+"置为 [code]0[/code] 来禁用物理抖动修复。"
+
+msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run. This value "
"should generally always be set to [code]60[/code] or above, as Godot doesn't "
@@ -48620,6 +47890,61 @@ msgstr ""
"physics_ticks_per_second],而且远大于默认值,那么建议将 [member "
"max_physics_steps_per_frame] 也调大。"
+msgid ""
+"If [code]false[/code], stops printing error and warning messages to the "
+"console and editor Output log. This can be used to hide error and warning "
+"messages during unit test suite runs. This property is equivalent to the "
+"[member ProjectSettings.application/run/disable_stderr] project setting.\n"
+"[b]Note:[/b] This property does not impact the editor's Errors tab when "
+"running a project from the editor.\n"
+"[b]Warning:[/b] If set to [code]false[/code] anywhere in the project, "
+"important error messages may be hidden even if they are emitted from other "
+"scripts. In a [code]@tool[/code] script, this will also impact the editor "
+"itself. Do [i]not[/i] report bugs before ensuring error messages are enabled "
+"(as they are by default)."
+msgstr ""
+"如果为 [code]false[/code],则停止向控制台和编辑器输出日志打印错误和警告消息。"
+"这可用于在单元测试套件运行期间隐藏错误和警告消息。该属性等效于 [member "
+"ProjectSettings.application/run/disable_stderr] 项目设置。\n"
+"[b]注意:[/b]从编辑器运行项目时,该属性不会影响编辑器的“错误”选项卡。\n"
+"[b]警告:[/b]如果在项目的任何地方将该项设置为 [code]false[/code],则重要的错误"
+"消息可能会被隐藏,即使它们是从其他脚本发出的。在 [code]@tool[/code] 脚本中,这"
+"也会影响编辑器本身。在确保错误消息被启用(默认情况下)之前,[i]不[/i]要报告错"
+"误。"
+
+msgid ""
+"The speed multiplier at which the in-game clock updates, compared to real "
+"time. For example, if set to [code]2.0[/code] the game runs twice as fast, "
+"and if set to [code]0.5[/code] the game runs half as fast.\n"
+"This value affects [Timer], [SceneTreeTimer], and all other simulations that "
+"make use of [code]delta[/code] time (such as [method Node._process] and "
+"[method Node._physics_process]).\n"
+"[b]Note:[/b] It's recommended to keep this property above [code]0.0[/code], "
+"as the game may behave unexpectedly otherwise.\n"
+"[b]Note:[/b] This does not affect audio playback speed. Use [member "
+"AudioServer.playback_speed_scale] to adjust audio playback speed "
+"independently of [member Engine.time_scale].\n"
+"[b]Note:[/b] This does not automatically adjust [member "
+"physics_ticks_per_second]. With values above [code]1.0[/code] physics "
+"simulation may become less precise, as each physics tick will stretch over a "
+"larger period of engine time. If you're modifying [member Engine.time_scale] "
+"to speed up simulation by a large factor, consider also increasing [member "
+"physics_ticks_per_second] to make the simulation more reliable."
+msgstr ""
+"游戏内部时钟更新的速度乘数,相对于真实时间。例如设置为 [code]2.0[/code] 就会让"
+"游戏以二倍速运行,设置为 [code]0.5[/code] 就会让游戏以一半的速度运行。\n"
+"这个值会影响 [Timer]、[SceneTreeTimer] 以及其他使用 [code]delta[/code] 时间进"
+"行的仿真(例如 [method Node._process] 和 [method Node._physics_process])。\n"
+"[b]注意:[/b]建议让这个属性保持大于 [code]0.0[/code],否则可能导致游戏产生意外"
+"的行为。\n"
+"[b]注意:[/b]这个属性不会影响音频的播放。请使用 [member AudioServer."
+"playback_speed_scale] 来调整音频播放的速度,配合 [member Engine."
+"time_scale]。\n"
+"[b]注意:[/b]这个属性不会自动调整 [member physics_ticks_per_second]。大于 "
+"[code]1.0[/code] 时可能导致物理仿真精度的下降,因为每个物理周期都会被拉伸到覆"
+"盖引擎中的一大段时间。修改 [member Engine.time_scale] 大幅加速仿真速度时,请考"
+"虑同时增大 [member physics_ticks_per_second],让仿真更可靠。"
+
msgid "Exposes the internal debugger."
msgstr "暴露内部调试器。"
@@ -48907,6 +48232,47 @@ msgstr ""
"说不是很有用,因为天空会被照亮。设置为 [code]1.0[/code] 时,雾的颜色完全来自 "
"[Sky]。设置为 [code]0.0[/code] 时,会禁用空气透视。"
+msgid ""
+"The fog density to be used. This is demonstrated in different ways depending "
+"on the [member fog_mode] mode chosen:\n"
+"[b]Exponential Fog Mode:[/b] Higher values result in denser fog. The fog "
+"rendering is exponential like in real life.\n"
+"[b]Depth Fog mode:[/b] The maximum intensity of the deep fog, effect will "
+"appear in the distance (relative to the camera). At [code]1.0[/code] the fog "
+"will fully obscure the scene, at [code]0.0[/code] the fog will not be visible."
+msgstr ""
+"要使用的雾密度。根据所选的 [member fog_mode] 模式,可以通过不同的方式进行演"
+"示:\n"
+"[b]指数雾模式:[/b]数值越高,雾就越浓。雾渲染就像现实生活中一样呈指数级增"
+"长。\n"
+"[b]深度雾模式:[/b]深度雾的最大强度,效果将出现在远处(相对于相机)。在 "
+"[code]1.0[/code] 处,雾将完全遮盖场景,在 [code]0.0[/code] 处,雾将不可见。"
+
+msgid ""
+"The fog's depth starting distance from the camera. Only available when "
+"[member fog_mode] is set to [constant FOG_MODE_DEPTH]."
+msgstr ""
+"雾距相机的深度起始距离。仅当 [member fog_mode] 被设置为 [constant "
+"FOG_MODE_DEPTH] 时可用。"
+
+msgid ""
+"The fog depth's intensity curve. A number of presets are available in the "
+"Inspector by right-clicking the curve. Only available when [member fog_mode] "
+"is set to [constant FOG_MODE_DEPTH]."
+msgstr ""
+"雾深度的强度曲线。通过右键点击曲线,可以在检查器中使用许多预设。仅当 [member "
+"fog_mode] 被设置为 [constant FOG_MODE_DEPTH] 时可用。"
+
+msgid ""
+"The fog's depth end distance from the camera. If this value is set to "
+"[code]0[/code], it will be equal to the current camera's [member Camera3D."
+"far] value. Only available when [member fog_mode] is set to [constant "
+"FOG_MODE_DEPTH]."
+msgstr ""
+"雾距相机的深度结束的距离。如果该值被设置为 [code]0[/code],它将等于当前相机的 "
+"[member Camera3D.far] 值。仅当 [member fog_mode] 被设置为 [constant "
+"FOG_MODE_DEPTH] 时可用。"
+
msgid "If [code]true[/code], fog effects are enabled."
msgstr "如果为 [code]true[/code],则启用雾效果。"
@@ -48949,6 +48315,16 @@ msgstr ""
"给人一种太阳正在“穿透”雾的印象。"
msgid ""
+"The glow blending mode.\n"
+"[b]Note:[/b] [member glow_blend_mode] has no effect when using the "
+"Compatibility rendering method, due to this rendering method using a simpler "
+"glow implementation optimized for low-end devices."
+msgstr ""
+"辉光混合模式。\n"
+"[b]注意:[/b][member glow_blend_mode] 在使用兼容性渲染方法时没有效果,因为这种"
+"渲染方法使用针对低端设备优化的更简单的辉光实现。"
+
+msgid ""
"The bloom's intensity. If set to a value higher than [code]0[/code], this "
"will make glow visible in areas darker than the [member glow_hdr_threshold]."
msgstr ""
@@ -48956,6 +48332,28 @@ msgstr ""
"glow_hdr_threshold] 成员更暗的区域中显示辉光。"
msgid ""
+"If [code]true[/code], the glow effect is enabled. This simulates real world "
+"eye/camera behavior where bright pixels bleed onto surrounding pixels.\n"
+"[b]Note:[/b] When using the Mobile rendering method, glow looks different due "
+"to the lower dynamic range available in the Mobile rendering method.\n"
+"[b]Note:[/b] When using the Compatibility rendering method, glow uses a "
+"different implementation with some properties being unavailable and hidden "
+"from the inspector: [code]glow_levels/*[/code], [member glow_normalized], "
+"[member glow_strength], [member glow_blend_mode], [member glow_mix], [member "
+"glow_map], and [member glow_map_strength]. This implementation is optimized "
+"to run on low-end devices and is less flexible as a result."
+msgstr ""
+"如果为 [code]true[/code],则会启用辉光效果。这个效果模拟的是真实世界中眼睛/相"
+"机的行为,亮度很高的像素会溢出到周围的像素中。\n"
+"[b]注意:[/b]使用“移动”渲染方法时,辉光的外观会不一样,因为“移动”渲染方法中只"
+"能使用低动态范围。\n"
+"[b]注意:[/b]使用“兼容”渲染方法时,辉光的实现方式不同,部分属性不可用,会在检"
+"查器中隐藏:[code]glow_levels/*[/code]、[member glow_normalized]、[member "
+"glow_strength]、[member glow_blend_mode]、[member glow_mix]、[member "
+"glow_map]、[member glow_map_strength]。这种实现方式是针对在低端设备上运行而优"
+"化的,因此灵活性较差。"
+
+msgid ""
"The higher threshold of the HDR glow. Areas brighter than this threshold will "
"be clamped for the purposes of the glow effect."
msgstr ""
@@ -48985,6 +48383,156 @@ msgstr ""
"辉光效果的整体亮度倍数。使用 Mobile 渲染方法时(仅支持较低的动态范围,最大为 "
"[code]2.0[/code]),应将其增加到 [code]1.5[/code] 进行补偿。"
+msgid ""
+"The intensity of the 1st level of glow. This is the most \"local\" level "
+"(least blurry).\n"
+"[b]Note:[/b] [member glow_levels/1] has no effect when using the "
+"Compatibility rendering method, due to this rendering method using a simpler "
+"glow implementation optimized for low-end devices."
+msgstr ""
+"第一级辉光的强度。这是最“局部”的级别(最不模糊)。\n"
+"[b]注意:[/b][member glow_levels/1] 在使用兼容性渲染方法时没有效果,因为这种渲"
+"染方法使用针对低端设备优化的更简单的辉光实现。"
+
+msgid ""
+"The intensity of the 2nd level of glow.\n"
+"[b]Note:[/b] [member glow_levels/2] has no effect when using the "
+"Compatibility rendering method, due to this rendering method using a simpler "
+"glow implementation optimized for low-end devices."
+msgstr ""
+"第二级辉光的强度。\n"
+"[b]注意:[/b][member glow_levels/2] 在使用兼容性渲染方法时没有效果,因为这种渲"
+"染方法使用针对低端设备优化的更简单的辉光实现。"
+
+msgid ""
+"The intensity of the 3rd level of glow.\n"
+"[b]Note:[/b] [member glow_levels/3] has no effect when using the "
+"Compatibility rendering method, due to this rendering method using a simpler "
+"glow implementation optimized for low-end devices."
+msgstr ""
+"第三级辉光的强度。\n"
+"[b]注意:[/b][member glow_levels/3] 在使用兼容性渲染方法时没有效果,因为这种渲"
+"染方法使用针对低端设备优化的更简单的辉光实现。"
+
+msgid ""
+"The intensity of the 4th level of glow.\n"
+"[b]Note:[/b] [member glow_levels/4] has no effect when using the "
+"Compatibility rendering method, due to this rendering method using a simpler "
+"glow implementation optimized for low-end devices."
+msgstr ""
+"第四级辉光的强度。\n"
+"[b]注意:[/b][member glow_levels/4] 在使用兼容性渲染方法时没有效果,因为这种渲"
+"染方法使用针对低端设备优化的更简单的辉光实现。"
+
+msgid ""
+"The intensity of the 5th level of glow.\n"
+"[b]Note:[/b] [member glow_levels/5] has no effect when using the "
+"Compatibility rendering method, due to this rendering method using a simpler "
+"glow implementation optimized for low-end devices."
+msgstr ""
+"第五级辉光的强度。\n"
+"[b]注意:[/b][member glow_levels/5] 在使用兼容性渲染方法时没有效果,因为这种渲"
+"染方法使用针对低端设备优化的更简单的辉光实现。"
+
+msgid ""
+"The intensity of the 6th level of glow.\n"
+"[b]Note:[/b] [member glow_levels/6] has no effect when using the "
+"Compatibility rendering method, due to this rendering method using a simpler "
+"glow implementation optimized for low-end devices."
+msgstr ""
+"第六级辉光的强度。\n"
+"[b]注意:[/b][member glow_levels/6] 在使用兼容性渲染方法时没有效果,因为这种渲"
+"染方法使用针对低端设备优化的更简单的辉光实现。"
+
+msgid ""
+"The intensity of the 7th level of glow. This is the most \"global\" level "
+"(blurriest).\n"
+"[b]Note:[/b] [member glow_levels/7] has no effect when using the "
+"Compatibility rendering method, due to this rendering method using a simpler "
+"glow implementation optimized for low-end devices."
+msgstr ""
+"第七级辉光的强度。这是最“全局”的级别(最模糊)。\n"
+"[b]注意:[/b][member glow_levels/7] 在使用兼容性渲染方法时没有效果,因为这种渲"
+"染方法使用针对低端设备优化的更简单的辉光实现。"
+
+msgid ""
+"The texture that should be used as a glow map to [i]multiply[/i] the "
+"resulting glow color according to [member glow_map_strength]. This can be "
+"used to create a \"lens dirt\" effect. The texture's RGB color channels are "
+"used for modulation, but the alpha channel is ignored.\n"
+"[b]Note:[/b] The texture will be stretched to fit the screen. Therefore, it's "
+"recommended to use a texture with an aspect ratio that matches your project's "
+"base aspect ratio (typically 16:9).\n"
+"[b]Note:[/b] [member glow_map] has no effect when using the Compatibility "
+"rendering method, due to this rendering method using a simpler glow "
+"implementation optimized for low-end devices."
+msgstr ""
+"该纹理应被用作一个辉光贴图,以根据 [member glow_map_strength] [i]乘以[/i] 生成"
+"的辉光颜色。这可以用来创建一个“镜头污垢”效果。该纹理的 RGB 颜色通道被用于调"
+"制,但 Alpha 通道将被忽略。\n"
+"[b]注意:[/b]该纹理将被拉伸以适应屏幕。因此,建议使用长宽比与项目的基本长宽比"
+"(通常为 16:9)相匹配的纹理。\n"
+"[b]注意:[/b][member glow_map] 在使用兼容性渲染方法时没有效果,因为该渲染方法"
+"使用针对低端设备优化的更简单的辉光实现。"
+
+msgid ""
+"How strong of an impact the [member glow_map] should have on the overall glow "
+"effect. A strength of [code]0.0[/code] means the glow map has no effect on "
+"the overall glow effect. A strength of [code]1.0[/code] means the glow has a "
+"full effect on the overall glow effect (and can turn off glow entirely in "
+"specific areas of the screen if the glow map has black areas).\n"
+"[b]Note:[/b] [member glow_map_strength] has no effect when using the "
+"Compatibility rendering method, due to this rendering method using a simpler "
+"glow implementation optimized for low-end devices."
+msgstr ""
+"[member glow_map] 应该对整体发光效果产生多大的影响。[code]0.0[/code] 的强度,"
+"表示辉光贴图对整体辉光效果没有影响。[code]1.0[/code] 的强度,表示辉光对整体辉"
+"光效果具有完全的效果(如果辉光贴图有黑色区域,则可以在屏幕的特定区域完全关闭辉"
+"光)。\n"
+"[b]注意:[/b][member glow_map_strength] 在使用兼容性渲染方法时没有效果,因为该"
+"渲染方法使用针对低端设备优化的更简单的辉光实现。"
+
+msgid ""
+"When using the [constant GLOW_BLEND_MODE_MIX] [member glow_blend_mode], this "
+"controls how much the source image is blended with the glow layer. A value of "
+"[code]0.0[/code] makes the glow rendering invisible, while a value of "
+"[code]1.0[/code] is equivalent to [constant GLOW_BLEND_MODE_REPLACE].\n"
+"[b]Note:[/b] [member glow_mix] has no effect when using the Compatibility "
+"rendering method, due to this rendering method using a simpler glow "
+"implementation optimized for low-end devices."
+msgstr ""
+"当使用 [constant GLOW_BLEND_MODE_MIX] [member glow_blend_mode] 时,它控制源图"
+"像与辉光层混合的程度。[code]0.0[/code] 的值使辉光渲染不可见,而 [code]1.0[/"
+"code] 的值等效于 [constant GLOW_BLEND_MODE_REPLACE]。\n"
+"[b]注意:[/b][member glow_mix] 在使用兼容性渲染方法时没有效果,因为该渲染方法"
+"使用针对低端设备优化的更简单的辉光实现。"
+
+msgid ""
+"If [code]true[/code], glow levels will be normalized so that summed together "
+"their intensities equal [code]1.0[/code].\n"
+"[b]Note:[/b] [member glow_normalized] has no effect when using the "
+"Compatibility rendering method, due to this rendering method using a simpler "
+"glow implementation optimized for low-end devices."
+msgstr ""
+"如果为 [code]true[/code],则辉光级别将被归一化,以便它们的强度总和等于 "
+"[code]1.0[/code]。\n"
+"[b]注意:[/b][member glow_normalized] 在使用兼容性渲染方法时没有效果,因为这种"
+"渲染方法使用针对低端设备优化的更简单的辉光实现。"
+
+msgid ""
+"The strength of the glow effect. This applies as the glow is blurred across "
+"the screen and increases the distance and intensity of the blur. When using "
+"the Mobile rendering method, this should be increased to compensate for the "
+"lower dynamic range.\n"
+"[b]Note:[/b] [member glow_strength] has no effect when using the "
+"Compatibility rendering method, due to this rendering method using a simpler "
+"glow implementation optimized for low-end devices."
+msgstr ""
+"辉光效果的强度。适用于屏幕上的辉光模糊,能够增加模糊的距离和强度。使用 Mobile "
+"渲染方法时应将其提高,对低动态范围进行补偿。\n"
+"[b]注意:[/b][member glow_strength] 在使用兼容性渲染方法时没有效果,因为该渲染"
+"方法使用针对低端设备优化的更简单的辉光实现。"
+
msgid "The reflected (specular) light source."
msgstr "反射(镜面反射)光源。"
@@ -49336,14 +48884,6 @@ msgid ""
msgstr "色调映射的默认曝光。值越高,图像越亮。另见 [member tonemap_white]。"
msgid ""
-"The tonemapping mode to use. Tonemapping is the process that \"converts\" HDR "
-"values to be suitable for rendering on a LDR display. (Godot doesn't support "
-"rendering on HDR displays yet.)"
-msgstr ""
-"要使用的色调映射模式。色调映射是对 HDR 值进行“转换”的过程,转换后的值适合在 "
-"LDR 显示器上渲染。(Godot 尚不支持在 HDR 显示器上进行渲染。)"
-
-msgid ""
"The white reference value for tonemapping (also called \"whitepoint\"). "
"Higher values can make highlights look less blown out, and will also slightly "
"darken the whole scene as a result. Only effective if the [member "
@@ -49444,8 +48984,8 @@ msgid ""
msgstr ""
"启用体积雾效果。体积雾使用与屏幕对齐的视锥体素缓冲区,来计算短至中等范围内的精"
"确体积散射。体积雾与 [FogVolume] 和灯光交互,以计算局部和全局的雾。体积雾使用"
-"一个基于消光、散射、和自发光的 PBR 单一散射模型,它以密度、反照率、和自发光的"
-"形式暴露给用户。\n"
+"一个基于消光、散射和自发光的 PBR 单一散射模型,它以密度、反照率和自发光的形式"
+"暴露给用户。\n"
"[b]注意:[/b]体积雾只支持 Forward+ 渲染方式,不支持移动和兼容模式。"
msgid ""
@@ -49653,6 +49193,17 @@ msgid ""
"much while still maintaining a glow effect."
msgstr "将辉光与底层颜色混合,以避免在保持辉光效果的同时,尽可能多地增加亮度。"
+msgid "Use a physically-based fog model defined primarily by fog density."
+msgstr "使用主要由雾密度定义的基于物理的雾模型。"
+
+msgid ""
+"Use a simple fog model defined by start and end positions and a custom curve. "
+"While not physically accurate, this model can be useful when you need more "
+"artistic control."
+msgstr ""
+"使用由开始位置和结束位置以及自定义曲线定义的简单雾模型。虽然在物理上并不准确,"
+"但当你需要更多的艺术控制时,该模型可能会很有用。"
+
msgid ""
"Use 50% scale for SDFGI on the Y (vertical) axis. SDFGI cells will be twice "
"as short as they are wide. This allows providing increased GI detail and "
@@ -50061,104 +49612,36 @@ msgid ""
"distortion."
msgstr "为每个八度音阶独立地扭曲空间,从而导致更混乱的失真。"
-msgid "Provides methods for file reading and writing operations."
-msgstr "提供用于文件读写操作的方法。"
+msgid "Handles FBX documents."
+msgstr "处理 FBX 文档。"
msgid ""
-"This class can be used to permanently store data in the user device's file "
-"system and to read from it. This is useful for store game save data or player "
-"configuration files.\n"
-"Here's a sample on how to write and read from a file:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func save(content):\n"
-" var file = FileAccess.open(\"user://save_game.dat\", FileAccess.WRITE)\n"
-" file.store_string(content)\n"
-"\n"
-"func load():\n"
-" var file = FileAccess.open(\"user://save_game.dat\", FileAccess.READ)\n"
-" var content = file.get_as_text()\n"
-" return content\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public void Save(string content)\n"
-"{\n"
-" using var file = FileAccess.Open(\"user://save_game.dat\", FileAccess."
-"ModeFlags.Write);\n"
-" file.StoreString(content);\n"
-"}\n"
-"\n"
-"public string Load()\n"
-"{\n"
-" using var file = FileAccess.Open(\"user://save_game.dat\", FileAccess."
-"ModeFlags.Read);\n"
-" string content = file.GetAsText();\n"
-" return content;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"In the example above, the file will be saved in the user data folder as "
-"specified in the [url=$DOCS_URL/tutorials/io/data_paths.html]Data paths[/url] "
-"documentation.\n"
-"[FileAccess] will close when it's freed, which happens when it goes out of "
-"scope or when it gets assigned with [code]null[/code]. [method close] can be "
-"used to close it before then explicitly. In C# the reference must be disposed "
-"manually, which can be done with the [code]using[/code] statement or by "
-"calling the [code]Dispose[/code] method directly.\n"
-"[b]Note:[/b] To access project resources once exported, it is recommended to "
-"use [ResourceLoader] instead of [FileAccess], as some files are converted to "
-"engine-specific formats and their original source files might not be present "
-"in the exported PCK package.\n"
-"[b]Note:[/b] Files are automatically closed only if the process exits "
-"\"normally\" (such as by clicking the window manager's close button or "
-"pressing [b]Alt + F4[/b]). If you stop the project execution by pressing "
-"[b]F8[/b] while the project is running, the file won't be closed as the game "
-"process will be killed. You can work around this by calling [method flush] at "
-"regular intervals."
-msgstr ""
-"这个类可以用于在用户设备的文件系统中永久存储数据,也可以从中读取数据。适用于存"
-"储游戏存档数据或玩家配置文件。\n"
-"下面是一个关于如何写入和读取文件的示例:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func save(content):\n"
-" var file = FileAccess.open(\"user://save_game.dat\", FileAccess.WRITE)\n"
-" file.store_string(content)\n"
-"\n"
-"func load():\n"
-" var file = FileAccess.open(\"user://save_game.dat\", FileAccess.READ)\n"
-" var content = file.get_as_text()\n"
-" return content\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public void Save(string content)\n"
-"{\n"
-" using var file = FileAccess.Open(\"user://save_game.dat\", FileAccess."
-"ModeFlags.Write);\n"
-" file.StoreString(content);\n"
-"}\n"
-"\n"
-"public string Load()\n"
-"{\n"
-" using var file = FileAccess.Open(\"user://save_game.dat\", FileAccess."
-"ModeFlags.Read);\n"
-" string content = file.GetAsText();\n"
-" return content;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"在上面的例子中,文件将被保存在[url=$DOCS_URL/tutorials/io/data_paths.html]数据"
-"路径[/url]文件中指定的用户数据文件夹中。\n"
-"[FileAccess] 会在释放时关闭,超出作用于、赋值为 [code]null[/code] 等情况都会导"
-"致释放。可以使用 [method close] 在此之前显式关闭。在 C# 中,引用必须手动释放,"
-"可以通过 [code]using[/code] 语句或直接调用 [code]Dispose[/code] 方法来完成。\n"
-"[b]注意:[/b]要在导出后访问项目资源,建议使用 [ResourceLoader] 而不是 "
-"[FileAccess],因为有些文件已被转换为特定于引擎的格式,并且它们的原始源文件可能"
-"并不存在于导出的 PCK 包中。\n"
-"[b]注意:[/b]只有当进程“正常”退出时(例如通过单击窗口管理器的关闭按钮或按 "
-"[b]Alt + F4[/b]),文件才会自动关闭。如果在项目运行时按 [b]F8[/b] 停止项目执"
-"行,则不会关闭文件,因为游戏进程将被杀死。可以通过定期调用 [method flush] 来解"
-"决这个问题。"
+"The FBXDocument handles FBX documents. It provides methods to append data "
+"from buffers or files, generate scenes, and register/unregister document "
+"extensions.\n"
+"When exporting FBX from Blender, use the \"FBX Units Scale\" option. The "
+"\"FBX Units Scale\" option sets the correct scale factor and avoids manual "
+"adjustments when re-importing into Blender, such as through glTF export."
+msgstr ""
+"FBXDocument 处理 FBX 文档。它提供了从缓冲区或文件追加数据、生成场景、以及注册/"
+"取消注册文档扩展名的方法。\n"
+"从 Blender 导出 FBX 时,请使用 “FBX 单位缩放” 选项。“FBX 单位缩放” 选项设置正"
+"确的缩放系数,并避免在重新导入到 Blender 时(例如通过 glTF 导出)进行手动调"
+"整。"
+
+msgid "The FBXState handles the state data imported from FBX files."
+msgstr "FBXState 处理从 FBX 文件导入的状态数据。"
+
+msgid ""
+"If [code]true[/code], the import process used auxiliary nodes called geometry "
+"helper nodes. These nodes help preserve the pivots and transformations of the "
+"original 3D model during import."
+msgstr ""
+"如果为 [code]true[/code],则导入过程使用被称为几何辅助节点的辅助节点。这些节点"
+"有助于在导入过程中保留原始 3D 模型的枢轴和变换。"
+
+msgid "Provides methods for file reading and writing operations."
+msgstr "提供用于文件读写操作的方法。"
msgid ""
"Closes the currently opened file and prevents subsequent read/write "
@@ -50284,42 +49767,6 @@ msgstr ""
msgid "Returns next [param length] bytes of the file as a [PackedByteArray]."
msgstr "将文件中接下来的 [param length] 个字节作为 [PackedByteArray] 返回。"
-msgid ""
-"Returns the next value of the file in CSV (Comma-Separated Values) format. "
-"You can pass a different delimiter [param delim] to use other than the "
-"default [code]\",\"[/code] (comma). This delimiter must be one-character "
-"long, and cannot be a double quotation mark.\n"
-"Text is interpreted as being UTF-8 encoded. Text values must be enclosed in "
-"double quotes if they include the delimiter character. Double quotes within a "
-"text value can be escaped by doubling their occurrence.\n"
-"For example, the following CSV lines are valid and will be properly parsed as "
-"two strings each:\n"
-"[codeblock]\n"
-"Alice,\"Hello, Bob!\"\n"
-"Bob,Alice! What a surprise!\n"
-"Alice,\"I thought you'd reply with \"\"Hello, world\"\".\"\n"
-"[/codeblock]\n"
-"Note how the second line can omit the enclosing quotes as it does not include "
-"the delimiter. However it [i]could[/i] very well use quotes, it was only "
-"written without for demonstration purposes. The third line must use "
-"[code]\"\"[/code] for each quotation mark that needs to be interpreted as "
-"such instead of the end of a text value."
-msgstr ""
-"以 CSV(逗号分隔值)格式返回文件的下一个值。可以传递不同的分隔符 [param "
-"delim],以使用默认 [code]\",\"[/code](逗号)以外的其他分隔符。这个分隔符必须"
-"为一个字符长,且不能是双引号。\n"
-"文本被解析为 UTF-8 编码。如果文本值包含分隔符,则它们必须用双引号引起来。文本"
-"值中的双引号可以通过将它们的出现次数加倍来转义。\n"
-"例如,以下 CSV 行是有效的,每行将被正确解析为两个字符串:\n"
-"[codeblock]\n"
-"Alice,\"Hello, Bob!\"\n"
-"Bob,Alice! What a surprise!\n"
-"Alice,\"I thought you'd reply with \"\"Hello, world\"\".\"\n"
-"[/codeblock]\n"
-"请注意第二行如何省略封闭的引号,因为它不包含分隔符。然而它[i]可以[/i]很好地使"
-"用引号,它只是为了演示目的而没有编写。第三行必须为每个需要被解析为引号而不是文"
-"本值的末尾而使用 [code]\"\"[/code]。"
-
msgid "Returns the next 64 bits from the file as a floating-point number."
msgstr "将文件中接下来的 64 位作为浮点数返回。"
@@ -50364,13 +49811,6 @@ msgid "Returns the size of the file in bytes."
msgstr "返回该文件的大小,单位为字节。"
msgid ""
-"Returns the next line of the file as a [String].\n"
-"Text is interpreted as being UTF-8 encoded."
-msgstr ""
-"将文件中的下一行作为 [String] 字符串返回。\n"
-"将按照 UTF-8 编码解析文本。"
-
-msgid ""
"Returns an MD5 String representing the file at the given path or an empty "
"[String] on failure."
msgstr "返回一个给定路径文件的 MD5 字符串,如果失败则返回一个空的 [String]。"
@@ -50410,12 +49850,6 @@ msgid "Returns the next bits from the file as a floating-point number."
msgstr "将文件中接下来的若干位以浮点数形式返回。"
msgid ""
-"Returns a SHA-256 [String] representing the file at the given path or an "
-"empty [String] on failure."
-msgstr ""
-"返回一个给定路径的文件的 SHA-256 字符串,如果失败则返回一个空的 [String]。"
-
-msgid ""
"Returns file UNIX permissions.\n"
"[b]Note:[/b] This method is implemented on iOS, Linux/BSD, and macOS."
msgstr ""
@@ -50748,23 +50182,10 @@ msgid ""
msgstr "打开文件进行读取操作。光标位于文件的开头。"
msgid ""
-"Opens the file for write operations. The file is created if it does not "
-"exist, and truncated if it does."
-msgstr "打开文件进行写操作。如果文件不存在,则创建该文件,如果存在则截断。"
-
-msgid ""
"Opens the file for read and write operations. Does not truncate the file. The "
"cursor is positioned at the beginning of the file."
msgstr "打开文件用于读写操作。不截断文件。光标位于文件的开头。"
-msgid ""
-"Opens the file for read and write operations. The file is created if it does "
-"not exist, and truncated if it does. The cursor is positioned at the "
-"beginning of the file."
-msgstr ""
-"打开文件进行读写操作。如果文件不存在,则创建该文件,如果存在则截断。光标位于文"
-"件的开头。"
-
msgid "Uses the [url=https://fastlz.org/]FastLZ[/url] compression method."
msgstr "使用 [url=https://fastlz.org/]FastLZ[/url] 压缩方法。"
@@ -50866,21 +50287,6 @@ msgid "Clear all currently selected items in the dialog."
msgstr "清除对话框中所有当前选定的项目。"
msgid ""
-"Returns the default value index of the [OptionButton] or [CheckBox] with "
-"index [param option]."
-msgstr ""
-"返回索引为 [param option] 的 [OptionButton] 或 [CheckBox] 的默认值索引。"
-
-msgid ""
-"Returns the name of the [OptionButton] or [CheckBox] with index [param "
-"option]."
-msgstr "返回索引为 [param option] 的 [OptionButton] 或 [CheckBox] 的名称。"
-
-msgid ""
-"Returns an array of values of the [OptionButton] with index [param option]."
-msgstr "返回索引为 [param option] 的 [OptionButton] 值的数组。"
-
-msgid ""
"Returns the vertical box container of the dialog, custom controls can be "
"added to it.\n"
"[b]Warning:[/b] This is a required internal node, removing and freeing it may "
@@ -50895,19 +50301,6 @@ msgid "Invalidate and update the current dialog content list."
msgstr "使当前对话框内容列表无效并更新。"
msgid ""
-"Sets the default value index of the [OptionButton] or [CheckBox] with index "
-"[param option]."
-msgstr ""
-"设置索引为 [param option] 的 [OptionButton] 或 [CheckBox] 的默认值索引。"
-
-msgid ""
-"Sets the name of the [OptionButton] or [CheckBox] with index [param option]."
-msgstr "设置索引为 [param option] 的 [OptionButton] 或 [CheckBox] 的名称。"
-
-msgid "Sets the option values of the [OptionButton] with index [param option]."
-msgstr "设置索引为 [param option] 的 [OptionButton] 的选项值。"
-
-msgid ""
"The file system access scope. See [enum Access] constants.\n"
"[b]Warning:[/b] Currently, in sandboxed environments such as Web builds or "
"sandboxed macOS apps, FileDialog cannot access the host file system. See "
@@ -51014,6 +50407,9 @@ msgstr "应用于文件夹图标的颜色调制。"
msgid "Custom icon for the back arrow."
msgstr "向后箭头的自定义图标。"
+msgid "Custom icon for the create folder button."
+msgstr "用于创建文件夹按钮的自定义图标。"
+
msgid "Custom icon for files."
msgstr "文件的自定义图标。"
@@ -51090,6 +50486,9 @@ msgstr "在编辑器中实例化给定场景时发出。"
msgid "Emitted when an external [param resource] had its file removed."
msgstr "外部资源 [param resource] 的对应文件被移除时发出。"
+msgid "A built-in type for floating-point numbers."
+msgstr "浮点数内置类型。"
+
msgid ""
"The [float] built-in type is a 64-bit double-precision floating-point number, "
"equivalent to [code]double[/code] in C++. This type has 14 reliable decimal "
@@ -51404,6 +50803,12 @@ msgstr ""
"列。\n"
"使用 [HFlowContainer] 和 [VFlowContainer] 时不能改变。"
+msgid "The horizontal separation of child nodes."
+msgstr "子节点的水平分隔量。"
+
+msgid "The vertical separation of child nodes."
+msgstr "子节点的垂直分隔量。"
+
msgid ""
"A material that controls how volumetric fog is rendered, to be assigned to a "
"[FogVolume]."
@@ -51664,6 +51069,18 @@ msgstr ""
"同。仅将其用作粗略估计(例如作为空行的上高)。"
msgid ""
+"Returns the size of a character. Does not take kerning into account.\n"
+"[b]Note:[/b] Do not use this function to calculate width of the string "
+"character by character, use [method get_string_size] or [TextLine] instead. "
+"The height returned is the font height (see also [method get_height]) and has "
+"no relation to the glyph height."
+msgstr ""
+"返回字符的大小。不考虑字偶距。\n"
+"[b]注意:[/b]不要使用这个函数逐个字符地计算字符串的宽度,而是使用 [method "
+"get_string_size] 或 [TextLine]。返回的高度是字体高度(另见 [method "
+"get_height])并且与字形高度无关。"
+
+msgid ""
"Returns the average font descent (number of pixels below the baseline).\n"
"[b]Note:[/b] Real descent of the string is context-dependent and can be "
"significantly different from the value returned by this function. Use it only "
@@ -51968,15 +51385,6 @@ msgstr ""
msgid "Removes all font cache entries."
msgstr "移除所有字体缓存条目。"
-msgid ""
-"Removes all rendered glyphs information from the cache entry.\n"
-"[b]Note:[/b] This function will not remove textures associated with the "
-"glyphs, use [method remove_texture] to remove them manually."
-msgstr ""
-"从字体缓存条目中,移除所有渲染的字形信息。\n"
-"[b]注意:[/b]该函数不会移除与字形相关的纹理,请使用 [method remove_texture] 手"
-"动移除它们。"
-
msgid "Removes all kerning overrides."
msgstr "移除所有字距调整覆盖。"
@@ -52022,6 +51430,9 @@ msgid ""
"outlines. Negative values reduce the outline thickness."
msgstr "返回加粗强度,如果不等于零,则加粗字体轮廓。负值会减小轮廓粗细。"
+msgid "Returns extra baseline offset (as a fraction of font height)."
+msgstr "返回额外的基线偏移(作为字体高度的一部分)。"
+
msgid ""
"Returns spacing for [param spacing] (see [enum TextServer.SpacingType]) in "
"pixels (not relative to the font size)."
@@ -52190,6 +51601,9 @@ msgid ""
"Negative values reduce the outline thickness."
msgstr "设置加粗强度,如果不等于零,则会加粗字体的轮廓。负值会减小轮廓的厚度。"
+msgid "Sets extra baseline offset (as a fraction of font height)."
+msgstr "设置额外的基线偏移(作为字体高度的一部分)。"
+
msgid ""
"Sets the spacing for [param spacing] (see [enum TextServer.SpacingType]) to "
"[param value] in pixels (not relative to the font size)."
@@ -52236,11 +51650,6 @@ msgid "Sets array containing glyph packing data."
msgstr "设置包含字形打包数据的数组。"
msgid ""
-"Sets 2D transform, applied to the font outlines, can be used for slanting, "
-"flipping and rotating glyphs."
-msgstr "设置应用于字体轮廓的 2D 变换,可用于倾斜、翻转和旋转字形。"
-
-msgid ""
"Sets variation coordinates for the specified font cache entry. See [method "
"Font.get_supported_variation_list] for more info."
msgstr ""
@@ -52442,6 +51851,9 @@ msgid ""
"used."
msgstr "用于创建变体的基础字体。如果未设置,则使用默认的 [Theme] 字体。"
+msgid "Extra baseline offset (as a fraction of font height)."
+msgstr "额外的基线偏移(作为字体高度的一部分)。"
+
msgid ""
"A set of OpenType feature tags. More info: [url=https://docs.microsoft.com/en-"
"us/typography/opentype/spec/featuretags]OpenType feature tags[/url]."
@@ -52512,16 +51924,91 @@ msgstr ""
msgid "Framebuffer cache manager for Rendering Device based renderers."
msgstr "基于渲染设备的渲染器的帧缓冲区缓存管理器。"
+msgid ""
+"Framebuffer cache manager for Rendering Device based renderers. Provides a "
+"way to create a framebuffer and reuse it in subsequent calls for as long as "
+"the used textures exists. Framebuffers will automatically be cleaned up when "
+"dependent objects are freed."
+msgstr ""
+"基于渲染设备的渲染器的帧缓冲区缓存管理器。提供一种创建帧缓冲区并在后续调用中重"
+"用它(只要使用的纹理存在)的方法。当依赖的对象被释放时,帧缓冲区将被自动清理。"
+
+msgid ""
+"Creates, or obtains a cached, framebuffer. [param textures] lists textures "
+"accessed. [param passes] defines the subpasses and texture allocation, if "
+"left empty a single pass is created and textures are allocated depending on "
+"their usage flags. [param views] defines the number of views used when "
+"rendering."
+msgstr ""
+"创建或获取缓存的帧缓冲区。[param textures] 列出访问的纹理。[param passes] 定义"
+"子通道和纹理分配,如果留空,则会创建单个通道并根据其使用标志分配纹理。[param "
+"views] 定义渲染时使用的视图数量。"
+
msgid "A native library for GDExtension."
msgstr "GDExtension 的原生库。"
+msgid ""
+"The [GDExtension] resource type represents a [url=https://en.wikipedia.org/"
+"wiki/Shared_library]shared library[/url] which can expand the functionality "
+"of the engine. The [GDExtensionManager] singleton is responsible for loading, "
+"reloading, and unloading [GDExtension] resources.\n"
+"[b]Note:[/b] GDExtension itself is not a scripting language and has no "
+"relation to [GDScript] resources."
+msgstr ""
+"[GDExtension] 资源类型代表一个[url=https://en.wikipedia.org/wiki/"
+"Shared_library]共享库[/url],它可以扩展引擎的功能。[GDExtensionManager] 单例负"
+"责加载、重新加载和卸载 [GDExtension] 资源。\n"
+"[b]注意:[/b]GDExtension 本身不是脚本语言,与 [GDScript] 资源没有关系。"
+
+msgid "GDExtension overview"
+msgstr "GDExtension 概述"
+
+msgid "GDExtension example in C++"
+msgstr "C++ 的 GDExtension 示例"
+
+msgid ""
+"Returns the lowest level required for this extension to be properly "
+"initialized (see the [enum InitializationLevel] enum)."
+msgstr ""
+"返回正确初始化该扩展所需的最低级别(请参阅 [enum InitializationLevel] 枚举)。"
+
msgid "Returns [code]true[/code] if this extension's library has been opened."
msgstr "如果该扩展的库已被打开,则返回 [code]true[/code]。"
+msgid ""
+"The library is initialized at the same time as the core features of the "
+"engine."
+msgstr "该库与引擎的核心功能同时初始化。"
+
+msgid ""
+"The library is initialized at the same time as the engine's servers (such as "
+"[RenderingServer] or [PhysicsServer3D])."
+msgstr ""
+"该库与引擎的服务器(例如 [RenderingServer] 或 [PhysicsServer3D])同时初始化。"
+
+msgid ""
+"The library is initialized at the same time as the engine's scene-related "
+"classes."
+msgstr "该库与引擎的场景相关类同时初始化。"
+
+msgid ""
+"The library is initialized at the same time as the engine's editor classes. "
+"Only happens when loading the GDExtension in the editor."
+msgstr "该库与引擎的编辑器类同时初始化。仅在编辑器中加载 GDExtension 时发生。"
+
msgid "Provides access to GDExtension functionality."
msgstr "提供对 GDExtension 功能的访问。"
msgid ""
+"The GDExtensionManager loads, initializes, and keeps track of all available "
+"[GDExtension] libraries in the project.\n"
+"[b]Note:[/b] Do not worry about GDExtension unless you know what you are "
+"doing."
+msgstr ""
+"GDExtensionManager 加载、初始化、并跟踪项目中所有可用的 [GDExtension] 库。\n"
+"[b]注意:[/b]除非你知道自己在做什么,否则无需担心 GDExtension。"
+
+msgid ""
"Returns the [GDExtension] at the given file [param path], or [code]null[/"
"code] if it has not been loaded or does not exist."
msgstr ""
@@ -52538,18 +52025,54 @@ msgstr ""
"如果给定文件 [param path] 处的扩展已成功加载,则返回 [code]true[/code]。另请参"
"阅 [method get_loaded_extensions]。"
+msgid ""
+"Loads an extension by absolute file path. The [param path] needs to point to "
+"a valid [GDExtension]. Returns [constant LOAD_STATUS_OK] if successful."
+msgstr ""
+"使用绝对文件路径加载扩展。[param path] 需要指向有效的 [GDExtension]。成功时返"
+"回 [constant LOAD_STATUS_OK]。"
+
+msgid ""
+"Reloads the extension at the given file path. The [param path] needs to point "
+"to a valid [GDExtension], otherwise this method may return either [constant "
+"LOAD_STATUS_NOT_LOADED] or [constant LOAD_STATUS_FAILED]. \n"
+"[b]Note:[/b] You can only reload extensions in the editor. In release builds, "
+"this method always fails and returns [constant LOAD_STATUS_FAILED]."
+msgstr ""
+"重新加载给定文件路径处的扩展。[param path] 需要指向有效的 [GDExtension],否则"
+"该方法可能返回 [constant LOAD_STATUS_NOT_LOADED] 或 [constant "
+"LOAD_STATUS_FAILED]。\n"
+"[b]注意:[/b]你只能在编辑器中重新加载扩展。在发布构建中,该方法总是失败并返回 "
+"[constant LOAD_STATUS_FAILED]。"
+
+msgid ""
+"Unloads an extension by file path. The [param path] needs to point to an "
+"already loaded [GDExtension], otherwise this method returns [constant "
+"LOAD_STATUS_NOT_LOADED]."
+msgstr ""
+"按文件路径卸载扩展。[param path] 需要指向已经加载的 [GDExtension],否则该方法"
+"返回 [constant LOAD_STATUS_NOT_LOADED]。"
+
msgid "Emitted after the editor has finished reloading one or more extensions."
msgstr "在编辑器已完成重新加载一个或多个扩展后发出。"
msgid "The extension has loaded successfully."
msgstr "扩展已被成功加载。"
+msgid ""
+"The extension has failed to load, possibly because it does not exist or has "
+"missing dependencies."
+msgstr "扩展加载失败,可能是因为它不存在或缺少依赖项。"
+
msgid "The extension has already been loaded."
msgstr "扩展已被加载。"
msgid "The extension has not been loaded."
msgstr "扩展尚未被加载。"
+msgid "The extension requires the application to restart to fully load."
+msgstr "该扩展需要应用程序重新启动才能完全加载。"
+
msgid "A script implemented in the GDScript programming language."
msgstr "用 GDScript 编程语言实现的脚本。"
@@ -53564,9 +53087,9 @@ msgid ""
msgstr ""
"[LightmapGI] 中用于光照贴图的纹素密度。较大的缩放值可在光照贴图中提供更高的分"
"辨率,这可以为同时烘焙了直接光和间接光的灯光,生成更清晰的阴影。但是,更大的缩"
-"放值也会增加光照贴图纹理中网格占用的空间,从而增加需要的内存、存储空间、和烘焙"
-"时间。在不同缩放下使用单个网格时,请考虑调整该值,以保持光照贴图纹素密度在网格"
-"之间保持一致。"
+"放值也会增加光照贴图纹理中网格占用的空间,从而增加需要的内存、存储空间和烘焙时"
+"间。在不同缩放下使用单个网格时,请考虑调整该值,以保持光照贴图纹素密度在网格之"
+"间保持一致。"
msgid ""
"The global illumination mode to use for the whole geometry. To avoid "
@@ -53625,31 +53148,6 @@ msgstr ""
"质。"
msgid ""
-"The transparency applied to the whole geometry (as a multiplier of the "
-"materials' existing transparency). [code]0.0[/code] is fully opaque, while "
-"[code]1.0[/code] is fully transparent. Values greater than [code]0.0[/code] "
-"(exclusive) will force the geometry's materials to go through the transparent "
-"pipeline, which is slower to render and can exhibit rendering issues due to "
-"incorrect transparency sorting. However, unlike using a transparent material, "
-"setting [member transparency] to a value greater than [code]0.0[/code] "
-"(exclusive) will [i]not[/i] disable shadow rendering.\n"
-"In spatial shaders, [code]1.0 - transparency[/code] is set as the default "
-"value of the [code]ALPHA[/code] built-in.\n"
-"[b]Note:[/b] [member transparency] is clamped between [code]0.0[/code] and "
-"[code]1.0[/code], so this property cannot be used to make transparent "
-"materials more opaque than they originally are."
-msgstr ""
-"应用于整个几何体的透明度(作为材质现有透明度的乘数)。[code]0.0[/code] 是完全"
-"不透明的,而 [code]1.0[/code] 是完全透明的。大于 [code]0.0[/code](不含)的值"
-"将强制几何体的材质通过透明管道,这会导致渲染速度变慢,并且可能会因不正确的透明"
-"度排序而出现渲染问题。但是,与使用透明材质不同的是,将 [member transparency] "
-"设置为大于 [code]0.0[/code](不含)的值并[i]不会[/i]禁用阴影渲染。\n"
-"在空间着色器中,[code]1.0 - transparency[/code] 被设置为内置 [code]ALPHA[/"
-"code] 的默认值。\n"
-"[b]注意:[/b][member transparency] 被钳制在 [code]0.0[/code] 和 [code]1.0[/"
-"code] 之间,所以这个属性不能被用来使透明材质变得比原来更加不透明。"
-
-msgid ""
"Starting distance from which the GeometryInstance3D will be visible, taking "
"[member visibility_range_begin_margin] into account as well. The default "
"value of 0 is used to disable the range check."
@@ -53742,19 +53240,6 @@ msgstr ""
"换句话说,实际的网格将不可见,只有网格投影可见。"
msgid ""
-"Disabled global illumination mode. Use for dynamic objects that do not "
-"contribute to global illumination (such as characters). When using [VoxelGI] "
-"and SDFGI, the geometry will [i]receive[/i] indirect lighting and reflections "
-"but the geometry will not be considered in GI baking. When using "
-"[LightmapGI], the object will receive indirect lighting using lightmap probes "
-"instead of using the baked lightmap texture."
-msgstr ""
-"禁用全局照明模式。用于对全局照明没有贡献的动态对象(例如角色)。使用 "
-"[VoxelGI] 和 SDFGI 时,几何体将[i]接收[/i]间接照明和反射,但在 GI 烘焙中不会考"
-"虑几何体。使用 [LightmapGI] 时,对象将使用光照贴图探针接收间接光照,而不是使用"
-"烘焙的光照贴图纹理。"
-
-msgid ""
"Baked global illumination mode. Use for static objects that contribute to "
"global illumination (such as level geometry). This GI mode is effective when "
"using [VoxelGI], SDFGI and [LightmapGI]."
@@ -53762,16 +53247,6 @@ msgstr ""
"烘焙全局照明模式。用于有助于全局照明的静态对象(例如关卡几何体)。该 GI 模式在"
"使用 [VoxelGI]、SDFGI 和 [LightmapGI] 时有效。"
-msgid ""
-"Dynamic global illumination mode. Use for dynamic objects that contribute to "
-"global illumination. This GI mode is only effective when using [VoxelGI], but "
-"it has a higher performance impact than [constant GI_MODE_STATIC]. When using "
-"other GI methods, this will act the same as [constant GI_MODE_DISABLED]."
-msgstr ""
-"动态全局照明模式。用于有助于全局照明的动态对象。这种 GI 模式只有在使用 "
-"[VoxelGI] 时才有效,但它对性能的影响,比 [constant GI_MODE_STATIC] 更高。当使"
-"用其他 GI 方法时,它的作用与 [constant GI_MODE_DISABLED] 相同。"
-
msgid "The standard texel density for lightmapping with [LightmapGI]."
msgstr "使用 [LightmapGI] 进行光照贴图的标准纹素密度。"
@@ -53814,36 +53289,92 @@ msgstr ""
"息,请参阅 [member visibility_range_begin] 和 [member Node3D."
"visibility_parent]。"
+msgid "Represents a GLTF accessor."
+msgstr "代表 GLTF 访问器。"
+
msgid ""
-"Will fade-out itself when reaching the limits of its own visibility range. "
-"This is slower than [constant VISIBILITY_RANGE_FADE_DISABLED], but it can "
-"provide smoother transitions. The fading range is determined by [member "
-"visibility_range_begin_margin] and [member visibility_range_end_margin]."
+"GLTFAccessor is a data structure representing GLTF a [code]accessor[/code] "
+"that would be found in the [code]\"accessors\"[/code] array. A buffer is a "
+"blob of binary data. A buffer view is a slice of a buffer. An accessor is a "
+"typed interpretation of the data in a buffer view.\n"
+"Most custom data stored in GLTF does not need accessors, only buffer views "
+"(see [GLTFBufferView]). Accessors are for more advanced use cases such as "
+"interleaved mesh data encoded for the GPU."
msgstr ""
-"当达到自身可见范围的极限时,会自行淡出。这比 [constant "
-"VISIBILITY_RANGE_FADE_DISABLED] 慢,但它可以提供更平滑的过渡。淡出范围由 "
-"[member visibility_range_begin_margin] 和 [member "
-"visibility_range_end_margin] 决定。"
+"GLTFAccessor 是一个表示 GLTF 的数据结构,一个可以在 [code]\"accessors\"[/"
+"code] 数组中找到的 [code]accessor[/code]。缓冲区是二进制数据的 blob。缓冲区视"
+"图是缓冲区的一个切片。访问器是缓冲区视图中数据的类型化解释。\n"
+"大多数存储在 GLTF 中的自定义数据不需要访问器,只需要缓冲区视图(请参阅 "
+"[GLTFBufferView])。访问器适用于更高级的用例,例如为 GPU 编码的交错网格数据。"
+
+msgid "Buffers, BufferViews, and Accessors in Khronos glTF specification"
+msgstr "Khronos glTF 规范中的缓冲区、BufferView 和访问器"
msgid ""
-"Will fade-in its visibility dependencies (see [member Node3D."
-"visibility_parent]) when reaching the limits of its own visibility range. "
-"This is slower than [constant VISIBILITY_RANGE_FADE_DISABLED], but it can "
-"provide smoother transitions. The fading range is determined by [member "
-"visibility_range_begin_margin] and [member visibility_range_end_margin]."
+"The index of the buffer view this accessor is referencing. If [code]-1[/"
+"code], this accessor is not referencing any buffer view."
msgstr ""
-"当达到其自身可见性范围的限制时,将淡入其可见性依赖项(参见 [member Node3D."
-"visibility_parent])。这比 [constant VISIBILITY_RANGE_FADE_DISABLED] 慢,但它"
-"可以提供更平滑的过渡。淡出范围由 [member visibility_range_begin_margin] 和 "
-"[member visibility_range_end_margin] 决定。"
+"该访问器正在引用的缓冲区视图的索引。如果为 [code]-1[/code],则该访问器未引用任"
+"何缓冲区视图。"
-msgid "Represents a GLTF accessor."
-msgstr "代表 GLTF 访问器。"
+msgid ""
+"Gets additional arbitrary data in this [GLTFAnimation] instance. This can be "
+"used to keep per-node state data in [GLTFDocumentExtension] classes, which is "
+"important because they are stateless.\n"
+"The argument should be the [GLTFDocumentExtension] name (does not have to "
+"match the extension name in the GLTF file), and the return value can be "
+"anything you set. If nothing was set, the return value is null."
+msgstr ""
+"在这个 [GLTFAnimation] 实例中获取额外的任意数据。这可用于将每个节点的状态数据"
+"保存在 [GLTFDocumentExtension] 类中,这很重要,因为它们是无状态的。\n"
+"参数应该是 [GLTFDocumentExtension] 的名字(不必与 GLTF 文件中的扩展名匹配),"
+"且返回值可以是你设置的任何值。如果没有设置任何内容,则返回值为 null。"
+
+msgid ""
+"Sets additional arbitrary data in this [GLTFAnimation] instance. This can be "
+"used to keep per-node state data in [GLTFDocumentExtension] classes, which is "
+"important because they are stateless.\n"
+"The first argument should be the [GLTFDocumentExtension] name (does not have "
+"to match the extension name in the GLTF file), and the second argument can be "
+"anything you want."
+msgstr ""
+"在这个 [GLTFAnimation] 实例中设置额外的任意数据。这可用于将每个节点的状态数据"
+"保存在 [GLTFDocumentExtension] 类中,这很重要,因为它们是无状态的。\n"
+"第一个参数应该是 [GLTFDocumentExtension] 的名字(不必与 GLTF 文件中的扩展名匹"
+"配),第二个参数可以是你想要的任何内容。"
+
+msgid "The original name of the animation."
+msgstr "动画的原名。"
msgid "Represents a GLTF buffer view."
msgstr "代表 GLTF 缓冲区视图。"
msgid ""
+"GLTFBufferView is a data structure representing GLTF a [code]bufferView[/"
+"code] that would be found in the [code]\"bufferViews\"[/code] array. A buffer "
+"is a blob of binary data. A buffer view is a slice of a buffer that can be "
+"used to identify and extract data from the buffer.\n"
+"Most custom uses of buffers only need to use the [member buffer], [member "
+"byte_length], and [member byte_offset]. The [member byte_stride] and [member "
+"indices] properties are for more advanced use cases such as interleaved mesh "
+"data encoded for the GPU."
+msgstr ""
+"GLTFBufferView 是一个表示 GLTF 的数据结构,一个可以在 [code]\"bufferViews\"[/"
+"code] 数组中找到的 [code]bufferView[/code]。缓冲区是二进制数据的 blob。缓冲区"
+"视图是缓冲区的一个切片,可用于识别缓冲区并从缓冲区中提取数据。\n"
+"大多数缓冲区的自定义用途只需要使用 [member buffer]、[member byte_length] 和 "
+"[member byte_offset]。[member byte_stride] 和 [member indices] 属性适用于更高"
+"级的用例,例如为 GPU 编码的交错网格数据。"
+
+msgid ""
+"Loads the buffer view data from the buffer referenced by this buffer view in "
+"the given [GLTFState]. Interleaved data with a byte stride is not yet "
+"supported by this method. The data is returned as a [PackedByteArray]."
+msgstr ""
+"从给定 [GLTFState] 中该缓冲区视图引用的缓冲区加载缓冲区视图数据。该方法尚不支"
+"持具有字节步幅的交错数据。数据以 [PackedByteArray] 形式返回。"
+
+msgid ""
"The index of the buffer this buffer view is referencing. If [code]-1[/code], "
"this buffer view is not referencing any buffer."
msgstr ""
@@ -53952,8 +53483,8 @@ msgid ""
"[method register_gltf_document_extension]. This allows for custom data to be "
"imported and exported."
msgstr ""
-"GLTFDocument 支持从 glTF 文件、缓冲区、或 Godot 场景中读取数据。然后可以将该数"
-"据写入文件系统、缓冲区、或用于创建 Godot 场景。\n"
+"GLTFDocument 支持从 glTF 文件、缓冲区或 Godot 场景中读取数据。然后可以将该数据"
+"写入文件系统、缓冲区或用于创建 Godot 场景。\n"
"GLTF 场景中的所有数据都存储在 [GLTFState] 类中。GLTFDocument 处理状态对象,但"
"本身不包含任何场景数据。GLTFDocument 有成员变量来存储如图像格式等导出配置设"
"置,但在其他方面是无状态的。可以使用相同的 GLTFDocument 对象和不同的 "
@@ -54050,7 +53581,7 @@ msgid ""
msgstr ""
"导出图像格式的用户友好名称。这被用于导出 GLTF 文件,包括写入文件和写入字节数"
"组。\n"
-"默认情况下,Godot 允许以下选项:“无”、“PNG”、“JPEG”、“无损 WebP”、和“有损 "
+"默认情况下,Godot 允许以下选项:“无”、“PNG”、“JPEG”、“无损 WebP”和“有损 "
"WebP”。可以使用 [GLTFDocumentExtension] 类添加对更多图像格式的支持。"
msgid ""
@@ -54467,6 +53998,53 @@ msgstr ""
"灯光的范围,超过这个范围灯光无效。没有定义范围的 GLTF 灯光的行为与无限范围的物"
"理灯光一样。当创建 Godot 灯光时,范围限制在 4096。"
+msgid ""
+"GLTFMesh handles 3D mesh data imported from GLTF files. It includes "
+"properties for blend channels, blend weights, instance materials, and the "
+"mesh itself."
+msgstr ""
+"GLTFMesh 处理从 GLTF 文件导入的 3D 网格数据。它包括混合通道、混合权重、实例材"
+"质和网格本身的属性。"
+
+msgid ""
+"Gets additional arbitrary data in this [GLTFMesh] instance. This can be used "
+"to keep per-node state data in [GLTFDocumentExtension] classes, which is "
+"important because they are stateless.\n"
+"The argument should be the [GLTFDocumentExtension] name (does not have to "
+"match the extension name in the GLTF file), and the return value can be "
+"anything you set. If nothing was set, the return value is null."
+msgstr ""
+"在这个 [GLTFMesh] 实例中获取额外的任意数据。这可用于将每个节点的状态数据保存"
+"在 [GLTFDocumentExtension] 类中,这很重要,因为它们是无状态的。\n"
+"参数应该是 [GLTFDocumentExtension] 的名字(不必与 GLTF 文件中的扩展名匹配),"
+"且返回值可以是你设置的任何值。如果没有设置任何内容,则返回值为 null。"
+
+msgid ""
+"Sets additional arbitrary data in this [GLTFMesh] instance. This can be used "
+"to keep per-node state data in [GLTFDocumentExtension] classes, which is "
+"important because they are stateless.\n"
+"The first argument should be the [GLTFDocumentExtension] name (does not have "
+"to match the extension name in the GLTF file), and the second argument can be "
+"anything you want."
+msgstr ""
+"在这个 [GLTFMesh] 实例中设置额外的任意数据。这可用于将每个节点的状态数据保存"
+"在 [GLTFDocumentExtension] 类中,这很重要,因为它们是无状态的。\n"
+"第一个参数应该是 [GLTFDocumentExtension] 的名字(不必与 GLTF 文件中的扩展名匹"
+"配),第二个参数可以是你想要的任何内容。"
+
+msgid "An array of floats representing the blend weights of the mesh."
+msgstr "float 数组,代表网格的混合权重。"
+
+msgid ""
+"An array of Material objects representing the materials used in the mesh."
+msgstr "Material 对象数组,代表网格所使用的材质。"
+
+msgid "The [ImporterMesh] object representing the mesh itself."
+msgstr "代表网格本身的 [ImporterMesh] 对象。"
+
+msgid "The original name of the mesh."
+msgstr "网格的原名。"
+
msgid "GLTF node class."
msgstr "GLTF 节点类。"
@@ -54526,6 +54104,12 @@ msgstr ""
"的属性。如果为 -1,则该节点不是相机。"
msgid ""
+"The indices of the child nodes in the [GLTFState]. If this GLTF node has no "
+"children, this will be an empty array."
+msgstr ""
+"[GLTFState] 中子节点的索引。如果该 GLTF 节点没有子节点,则这将是一个空数组。"
+
+msgid ""
"How deep into the node hierarchy this node is. A root node will have a height "
"of 0, its children will have a height of 1, and so on. If -1, the height has "
"not been calculated."
@@ -54547,6 +54131,9 @@ msgstr ""
"如果该 GLTF 节点是网格,则 [GLTFState] 中 [GLTFMesh] 的索引将描述该网格的属"
"性。如果为 -1,则该节点不是网格。"
+msgid "The original name of the node."
+msgstr "节点的原名。"
+
msgid ""
"The index of the parent node in the [GLTFState]. If -1, this node is a root "
"node."
@@ -54607,11 +54194,6 @@ msgstr ""
"建新的 GLTFPhysicsBody 实例。"
msgid ""
-"Create a new GLTFPhysicsBody instance from the given Godot "
-"[CollisionObject3D] node."
-msgstr "从给定的 Godot [CollisionObject3D] 节点新建 GLTFPhysicsBody 实例。"
-
-msgid ""
"Serializes this GLTFPhysicsBody instance into a [Dictionary]. It will be in "
"the format expected by the [code]OMI_physics_body[/code] GLTF extension."
msgstr ""
@@ -54636,9 +54218,9 @@ msgid ""
"\"dynamic\" motion types, or the \"trigger\" property."
msgstr ""
"该物体的类型。导入时,控制 Godot 应该生成哪种类型的 [CollisionObject3D] 节点。"
-"有效值有 “static”、“animatable”、“character”、“rigid”、“vehicle”、和 "
-"“trigger”。导出时,这将被压缩为 “static”、“kinematic” 或 “dynamic” 运动类型之"
-"一,或为 “trigger” 属性。"
+"有效值有 “static”、“animatable”、“character”、“rigid”、“vehicle”、“trigger”。"
+"导出时,这将被压缩为 “static”、“kinematic” 或 “dynamic” 运动类型之一,或为 "
+"“trigger” 属性。"
msgid ""
"The center of mass of the body, in meters. This is in local space relative to "
@@ -54659,6 +54241,15 @@ msgstr ""
"当转换为 Godot [RigidBody3D] 节点时,如果该值为零,则会自动计算惯性。"
msgid ""
+"The inertia orientation of the physics body. This defines the rotation of the "
+"inertia's principle axes relative to the object's local axes. This is only "
+"used when the body type is \"rigid\" or \"vehicle\" and [member "
+"inertia_diagonal] is set to a non-zero value."
+msgstr ""
+"物理体的惯性方向。这定义了惯性主轴相对于对象局部轴的旋转。仅当物体类型为“刚"
+"性”或“车辆”且 [member inertia_diagonal] 被设置为非零值时才使用。"
+
+msgid ""
"The inertia tensor of the physics body, in kilogram meter squared (kg⋅m²). "
"This is only used when the body type is \"rigid\" or \"vehicle\".\n"
"When converted to a Godot [RigidBody3D] node, if this value is zero, then the "
@@ -54666,7 +54257,7 @@ msgid ""
msgstr ""
"该物理体的惯性张量,单位为千克平方米(kg⋅m²)。仅在物体类型"
"为“rigid”或“vehicle”时使用。\n"
-"转换为 Godot [RigidBody3D] 节点时,如果该值为零,则会自动计算惯性。"
+"转换为 Godot [RigidBody3D] 节点时,如果该值为零,则会自动计算该惯量。"
msgid ""
"The linear velocity of the physics body, in meters per second. This is only "
@@ -54703,11 +54294,6 @@ msgid ""
msgstr "通过解析给定的 [Dictionary] 新建 GLTFPhysicsShape 实例。"
msgid ""
-"Create a new GLTFPhysicsShape instance from the given Godot "
-"[CollisionShape3D] node."
-msgstr "根据给定的 Godot [CollisionShape3D] 节点新建 GLTFPhysicsShape 实例。"
-
-msgid ""
"Serializes this GLTFPhysicsShape instance into a [Dictionary] in the format "
"defined by [code]OMI_physics_shape[/code]."
msgstr ""
@@ -54859,6 +54445,16 @@ msgstr ""
"终的列表将按字母顺序排序。"
msgid ""
+"Appends the given byte array data to the buffers and creates a "
+"[GLTFBufferView] for it. The index of the destination [GLTFBufferView] is "
+"returned. If [param deduplication] is true, the buffers will first be "
+"searched for duplicate data, otherwise new bytes will always be appended."
+msgstr ""
+"将给定的字节数组数据附加到缓冲区并为其创建一个 [GLTFBufferView]。返回目标 "
+"[GLTFBufferView] 的索引。如果 [param deduplication] 为 true,则将首先在缓冲区"
+"中搜索重复数据,否则将始终追加新字节。"
+
+msgid ""
"Gets additional arbitrary data in this [GLTFState] instance. This can be used "
"to keep per-file state data in [GLTFDocumentExtension] classes, which is "
"important because they are stateless.\n"
@@ -55106,6 +54702,17 @@ msgstr ""
"的 GLTF,否则这是二进制 GLB。这将在导入期间从文件追加时设置,并将在导出期间写"
"入文件时设置。如果写入到缓冲区,这将是一个空字符串。"
+msgid "The binary buffer attached to a .glb file."
+msgstr "附加到 .glb 文件的二进制缓冲区。"
+
+msgid ""
+"True to force all GLTFNodes in the document to be bones of a single "
+"Skeleton3D godot node."
+msgstr "True 则强制文档中的所有 GLTFNode 成为单个 Skeleton3D godot 节点的骨骼。"
+
+msgid "The original raw JSON document corresponding to this GLTFState."
+msgstr "与该 GLTFState 对应的原始 JSON 文档。"
+
msgid ""
"The root nodes of the GLTF file. Typically, a GLTF file will only have one "
"scene, and therefore one root node. However, a GLTF file may have multiple "
@@ -55255,9 +54862,6 @@ msgstr ""
"默认的 ParticleProcessMaterial 将覆盖 [param color] 并使用 [param custom] 的内"
"容作为 [code](rotation, age, animation, lifetime)[/code]。"
-msgid "Restarts all the existing particles."
-msgstr "重新启动所有现有的粒子。"
-
msgid ""
"The number of particles to emit in one emission cycle. The effective emission "
"rate is [code](amount * amount_ratio) / lifetime[/code] particles per second. "
@@ -55384,9 +54988,8 @@ msgstr ""
"[b]注意:[/b]要使用翻页纹理,请将新的 [CanvasItemMaterial] 分配给 "
"[GPUParticles2D] 的 [member CanvasItem.material] 属性,然后启用 [member "
"CanvasItemMaterial.particles_animation] 并设置 [member CanvasItemMaterial."
-"particles_anim_h_frames]、[member CanvasItemMaterial."
-"particles_anim_v_frames]、和 [member CanvasItemMaterial.particles_anim_loop] "
-"来匹配该翻页纹理。"
+"particles_anim_h_frames]、[member CanvasItemMaterial.particles_anim_v_frames] "
+"和 [member CanvasItemMaterial.particles_anim_loop] 来匹配该翻页纹理。"
msgid ""
"If [code]true[/code], enables particle trails using a mesh skinning system.\n"
@@ -55437,17 +55040,6 @@ msgstr ""
"使用 [b]Particles → Generate Visibility Rect[/b] 编辑器工具生成。"
msgid ""
-"Emitted when all active particles have finished processing. When [member "
-"one_shot] is disabled, particles will process continuously, so this is never "
-"emitted.\n"
-"[b]Note:[/b] Due to the particles being computed on the GPU there might be a "
-"delay before the signal gets emitted."
-msgstr ""
-"当所有活动粒子完成处理时发出。当 [member one_shot] 被禁用时,粒子将连续处理,"
-"因此它永远不会发出。\n"
-"[b]注意:[/b]由于粒子是在 GPU 上计算的,因此在该信号发出之前可能会有延迟。"
-
-msgid ""
"Particles are drawn in reverse order of remaining lifetime. In other words, "
"the particle with the lowest lifetime is drawn at the front."
msgstr "粒子按照剩余寿命的相反顺序绘制。换句话说,寿命最短的粒子被绘制在前面。"
@@ -55500,9 +55092,6 @@ msgstr "设置该节点的属性以匹配给定的 [CPUParticles3D] 节点。"
msgid "Returns the [Mesh] that is drawn at index [param pass]."
msgstr "返回在索引 [param pass] 处绘制的 [Mesh] 。"
-msgid "Restarts the particle emission, clearing existing particles."
-msgstr "重新发射粒子,清除现有的粒子。"
-
msgid "Sets the [Mesh] that is drawn at index [param pass]."
msgstr "设置在索引 [param pass] 处绘制的 [Mesh] 。"
@@ -56131,7 +55720,7 @@ msgid ""
"moved."
msgstr ""
"碰撞形状的厚度。与其他粒子碰撞器不同,[GPUParticlesCollisionSDF3D] 实际上内部"
-"是空心的。可以增加 [member thickness],以防止粒子在高速运动、或者当 "
+"是空心的。可以增加 [member thickness],以防止粒子在高速运动或者当 "
"[GPUParticlesCollisionSDF3D] 移动时,穿过碰撞形状。"
msgid ""
@@ -56233,18 +55822,6 @@ msgid "Sets the offset for the gradient color at index [param point]."
msgstr "设置渐变色在索引 [param point] 处的偏移。"
msgid ""
-"Gradient's colors returned as a [PackedColorArray].\n"
-"[b]Note:[/b] This property returns a copy, modifying the return value does "
-"not update the gradient. To update the gradient use [method set_color] method "
-"(for updating colors individually) or assign to this property directly (for "
-"bulk-updating all colors at once)."
-msgstr ""
-"[PackedColorArray] 形式的渐变色颜色。\n"
-"[b]注意:[/b]这个属性返回的是副本,修改返回值并不会对渐变色进行更新。要更新渐"
-"变色,请使用 [method set_color] 方法(单独更新颜色)或直接为这个属性赋值(一次"
-"性更新所有颜色)。"
-
-msgid ""
"The color space used to interpolate between points of the gradient. It does "
"not affect the returned colors, which will always be in sRGB space. See [enum "
"ColorSpace] for available modes.\n"
@@ -56262,18 +55839,6 @@ msgid ""
msgstr "用于在渐变点之间进行插值的算法。可用的模式见 [enum InterpolationMode]。"
msgid ""
-"Gradient's offsets returned as a [PackedFloat32Array].\n"
-"[b]Note:[/b] This property returns a copy, modifying the return value does "
-"not update the gradient. To update the gradient use [method set_offset] "
-"method (for updating offsets individually) or assign to this property "
-"directly (for bulk-updating all offsets at once)."
-msgstr ""
-"[PackedFloat32Array] 形式的渐变色偏移。\n"
-"[b]注意:[/b]这个属性返回的是副本,修改返回值并不会对渐变色进行更新。要更新渐"
-"变色,请使用 [method set_offset] 方法(单独更新偏移)或直接为这个属性赋值(一"
-"次性更新所有偏移)。"
-
-msgid ""
"Constant interpolation, color changes abruptly at each point and stays "
"uniform between. This might cause visible aliasing when used for a gradient "
"texture in some cases."
@@ -56626,6 +56191,32 @@ msgstr ""
"请求信号。"
msgid ""
+"Returns the closest connection to the given point in screen space. If no "
+"connection is found within [param max_distance] pixels, an empty [Dictionary] "
+"is returned.\n"
+"A connection consists in a structure of the form [code]{ from_port: 0, "
+"from_node: \"GraphNode name 0\", to_port: 1, to_node: \"GraphNode name 1\" }[/"
+"code].\n"
+"For example, getting a connection at a given mouse position can be achieved "
+"like this:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var connection = get_closest_connection_at_point(mouse_event.get_position())\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+msgstr ""
+"返回到屏幕空间中给定点的最近连接。如果在 [param max_distance] 像素内未找到连"
+"接,则返回空的 [Dictionary]。\n"
+"连接由以下形式的结构组成:[code]{ from_port: 0, from_node: \"GraphNode name "
+"0\", to_port: 1, to_node: \"GraphNode name 1\" }[/code]。\n"
+"例如,可以像这样实现获取在给定鼠标位置处的连接:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var connection = get_closest_connection_at_point(mouse_event.get_position())\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+
+msgid ""
"Returns the points which would make up a connection between [param from_node] "
"and [param to_node]."
msgstr "返回构成 [param from_node] 和 [param to_node] 之间的连接的点。"
@@ -56891,14 +56482,6 @@ msgstr ""
"时触发。一般来说,该信号指示应被粘贴的先前复制的 [GraphElement]。"
msgid ""
-"Emitted when a popup is requested. Happens on right-clicking in the "
-"GraphEdit. [param position] is the position of the mouse pointer when the "
-"signal is sent."
-msgstr ""
-"当请求弹出窗口时发出。在 GraphEdit 中右键点击时发生。[param position]为该信号"
-"被发出时鼠标指针的位置。"
-
-msgid ""
"Emitted when the scroll offset is changed by the user. It will not be emitted "
"when changed in code."
msgstr "当用户改变滚动偏移量时发出。在代码中改变滚动偏移量时,它不会被触发。"
@@ -56925,6 +56508,21 @@ msgid ""
msgstr ""
"根据连接的活动值插入连接线的颜色(请参阅 [method set_connection_activity])。"
+msgid ""
+"Color which is blended with the connection line when the mouse is hovering "
+"over it."
+msgstr "当鼠标悬停在连接线上时与该连接线混合的颜色。"
+
+msgid ""
+"Color of the rim around each connection line used for making intersecting "
+"lines more distinguishable."
+msgstr "每条连接线周围的边缘颜色,用于使相交线更容易区分。"
+
+msgid ""
+"Color which is blended with the connection line when the currently dragged "
+"connection is hovering over a valid target port."
+msgstr "当前拖动的连接悬停在有效目标端口上时与该连接线混合的颜色。"
+
msgid "Color of major grid lines/dots."
msgstr "主要栅格线/点的颜色。"
@@ -56979,8 +56577,8 @@ msgid ""
"[GraphNode]."
msgstr ""
"[GraphElement] 允许为 [GraphEdit] 图表创建自定义元素。默认情况下,可以此类元素"
-"可以被选择、调整大小、和重新定位,但它们无法被连接。对于允许连接的图形元素,请"
-"参阅 [GraphNode]。"
+"可以被选择、调整大小和重新定位,但它们无法被连接。对于允许连接的图形元素,请参"
+"阅 [GraphNode]。"
msgid "If [code]true[/code], the user can drag the GraphElement."
msgstr "如果为 [code]true[/code],则用户能够拖动该 GraphElement。"
@@ -56990,15 +56588,6 @@ msgid ""
"[GraphEdit]."
msgstr "GraphElement 的偏移量,相对于 [GraphEdit] 的滚动偏移量。"
-msgid ""
-"If [code]true[/code], the user can resize the GraphElement.\n"
-"[b]Note:[/b] Dragging the handle will only emit the [signal resize_request] "
-"signal, the GraphElement needs to be resized manually."
-msgstr ""
-"如果为 [code]true[/code],则用户可以调整 GraphElement 的大小。\n"
-"[b]注意:[/b]拖动手柄只会发出 [signal resize_request] 信号,GraphElement 需要"
-"手动调整大小。"
-
msgid "If [code]true[/code], the user can select the GraphElement."
msgstr "如果为 [code]true[/code],则用户能够选中该 GraphElement。"
@@ -57038,6 +56627,9 @@ msgid ""
"The icon used for the resizer, visible when [member resizable] is enabled."
msgstr "用于调整大小的图标,在 [member resizable] 被启用时可见。"
+msgid "The color modulation applied to the resizer icon."
+msgstr "应用于调整尺寸大小图标的颜色调制。"
+
msgid "A container with connection ports, representing a node in a [GraphEdit]."
msgstr "带有连接端口的容器,代表 [GraphEdit] 中的一个节点。"
@@ -57294,9 +56886,6 @@ msgstr "显示在 GraphNode 标题栏中的文本。"
msgid "Emitted when any GraphNode's slot is updated."
msgstr "当任何图形节点的插槽更新时发出。"
-msgid "The color modulation applied to the resizer icon."
-msgstr "应用于调整尺寸大小图标的颜色调制。"
-
msgid "Horizontal offset for the ports."
msgstr "端口的水平偏移量。"
@@ -57606,123 +57195,9 @@ msgid ""
"Provides functionality for computing cryptographic hashes chunk by chunk."
msgstr "提供分段计算加密哈希的功能。"
-msgid ""
-"The HashingContext class provides an interface for computing cryptographic "
-"hashes over multiple iterations. Useful for computing hashes of big files (so "
-"you don't have to load them all in memory), network streams, and data streams "
-"in general (so you don't have to hold buffers).\n"
-"The [enum HashType] enum shows the supported hashing algorithms.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"const CHUNK_SIZE = 1024\n"
-"\n"
-"func hash_file(path):\n"
-" # Check that file exists.\n"
-" if not FileAccess.file_exists(path):\n"
-" return\n"
-" # Start a SHA-256 context.\n"
-" var ctx = HashingContext.new()\n"
-" ctx.start(HashingContext.HASH_SHA256)\n"
-" # Open the file to hash.\n"
-" var file = FileAccess.open(path, FileAccess.READ)\n"
-" # Update the context after reading each chunk.\n"
-" while not file.eof_reached():\n"
-" ctx.update(file.get_buffer(CHUNK_SIZE))\n"
-" # Get the computed hash.\n"
-" var res = ctx.finish()\n"
-" # Print the result as hex string and array.\n"
-" printt(res.hex_encode(), Array(res))\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public const int ChunkSize = 1024;\n"
-"\n"
-"public void HashFile(string path)\n"
-"{\n"
-" // Check that file exists.\n"
-" if (!FileAccess.FileExists(path))\n"
-" {\n"
-" return;\n"
-" }\n"
-" // Start a SHA-256 context.\n"
-" var ctx = new HashingContext();\n"
-" ctx.Start(HashingContext.HashType.Sha256);\n"
-" // Open the file to hash.\n"
-" using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);\n"
-" // Update the context after reading each chunk.\n"
-" while (!file.EofReached())\n"
-" {\n"
-" ctx.Update(file.GetBuffer(ChunkSize));\n"
-" }\n"
-" // Get the computed hash.\n"
-" byte[] res = ctx.Finish();\n"
-" // Print the result as hex string and array.\n"
-" GD.PrintT(res.HexEncode(), (Variant)res);\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"HashingContext 类提供了一个接口,用于在多次迭代中计算加密哈希值。常用于计算大"
-"文件(不必全部加载到内存中)、网络流和一般数据流(不必持有缓冲区)的哈希值。\n"
-"[enum HashType] 枚举显示了支持的哈希算法。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"const CHUNK_SIZE = 1024\n"
-"\n"
-"func hash_file(path):\n"
-" # 检查文件是否存在。\n"
-" if not FileAccess.file_exists(path):\n"
-" return\n"
-" # 启动一个 SHA-256 上下文。\n"
-" var ctx = HashingContext.new()\n"
-" ctx.start(HashingContext.HASH_SHA256)\n"
-" # 打开文件进行哈希处理。\n"
-" var file = FileAccess.open(path, FileAccess.READ)\n"
-" # 读取每个块后更新上下文。\n"
-" while not file.eof_reached():\n"
-" ctx.update(file.get_buffer(CHUNK_SIZE))\n"
-" # 获取计算的哈希值。\n"
-" var res = ctx.finish()\n"
-" # 将结果打印为十六进制字符串和数组。\n"
-" printt(res.hex_encode(), Array(res))\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public const int ChunkSize = 1024;\n"
-"\n"
-"public void HashFile(string path)\n"
-"{\n"
-" // 检查文件是否存在。\n"
-" if (!FileAccess.FileExists(path))\n"
-" {\n"
-" return;\n"
-" }\n"
-" // 启动一个 SHA-256 上下文。\n"
-" var ctx = new HashingContext();\n"
-" ctx.Start(HashingContext.HashType.Sha256);\n"
-" // 打开文件进行哈希处理。\n"
-" using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);\n"
-" // 读取每个块后更新上下文。\n"
-" while (!file.EofReached())\n"
-" {\n"
-" ctx.Update(file.GetBuffer(ChunkSize));\n"
-" }\n"
-" // 获取计算的哈希值。\n"
-" byte[] res = ctx.Finish();\n"
-" // 将结果打印为十六进制字符串和数组。\n"
-" GD.PrintT(res.HexEncode(), (Variant)res);\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
msgid "Closes the current context, and return the computed hash."
msgstr "关闭当前上下文,并返回计算出的哈希值。"
-msgid ""
-"Starts a new hash computation of the given [param type] (e.g. [constant "
-"HASH_SHA256] to start computation of a SHA-256)."
-msgstr ""
-"开始对给定类型 [param type] 的哈希计算(例如 [constant HASH_SHA256] 会开始计"
-"算 SHA-256)。"
-
msgid "Updates the computation with the given [param chunk] of data."
msgstr "使用给定的数据块 [param chunk] 更新计算。"
@@ -57750,19 +57225,18 @@ msgid "A 3D height map shape used for physics collision."
msgstr "3D 高度图形状,用于物理碰撞。"
msgid ""
-"A 3D heightmap shape, intended for use in physics. Usually used to provide a "
-"shape for a [CollisionShape3D]. This is useful for terrain, but it is limited "
-"as overhangs (such as caves) cannot be stored. Holes in a [HeightMapShape3D] "
-"are created by assigning very low values to points in the desired area.\n"
-"[b]Performance:[/b] [HeightMapShape3D] is faster to check collisions against "
-"than [ConcavePolygonShape3D], but it is significantly slower than primitive "
-"shapes like [BoxShape3D]."
+"Returns the largest height value found in [member map_data]. Recalculates "
+"only when [member map_data] changes."
+msgstr ""
+"返回在 [member map_data] 中找到的最大高度值。仅当 [member map_data] 更改时重新"
+"计算。"
+
+msgid ""
+"Returns the smallest height value found in [member map_data]. Recalculates "
+"only when [member map_data] changes."
msgstr ""
-"3D 高度图形状,旨在用于物理。常用于为 [CollisionShape3D] 提供形状。可用于地"
-"形,但是有无法存储悬垂部分(如洞窟)的限制。[HeightMapShape3D] 中创建洞的方法"
-"是为所需区域分配极低的值。\n"
-"[b]性能:[/b]对 [HeightMapShape3D] 的碰撞检测比 [ConcavePolygonShape3D] 快,但"
-"与 [BoxShape3D] 等图元形状相比显著要慢。"
+"返回在 [member map_data] 中找到的最小高度值。仅当 [member map_data] 更改时重新"
+"计算。"
msgid ""
"Height map data. The array's size must be equal to [member map_width] "
@@ -58064,16 +57538,16 @@ msgid ""
"managed certificates with a short validity period."
msgstr ""
"超文本传输协议客户端(有时称为“用户代理”)。用于发出 HTTP 请求以下载网络内容,"
-"上传文件和其他数据、或与各种服务通信,以及其他用例。\n"
+"上传文件和其他数据或与各种服务通信,以及其他用例。\n"
"请参阅 [HTTPRequest] 节点以获取更高级别的替代方案。\n"
"[b]注意:[/b]这个客户端只需要连接一个主机一次(见[method connect_to_host]),"
"就可以发送多个请求。因此,使用 URL 的方法通常只使用主机后面的部分而不是完整的 "
"URL,因为客户端已经连接到主机。请参阅 [method request] 以获取完整示例并开始使"
"用。\n"
-"[HTTPClient] 应该在多个请求之间重用、或连接到不同的主机,而不是为每个请求创建"
-"一个客户端。支持传输层安全 (TLS),包括服务器证书验证。2xx 范围内的 HTTP 状态代"
-"码表示成功,3xx 表示重定向(即“再试一次,但在这里”),4xx 表示请求有问题,5xx "
-"表示服务器端出了问题。\n"
+"[HTTPClient] 应该在多个请求之间重用或连接到不同的主机,而不是为每个请求创建一"
+"个客户端。支持传输层安全 (TLS),包括服务器证书验证。2xx 范围内的 HTTP 状态代码"
+"表示成功,3xx 表示重定向(即“再试一次,但在这里”),4xx 表示请求有问题,5xx 表"
+"示服务器端出了问题。\n"
"有关 HTTP 的更多信息,请参阅 [url=https://developer.mozilla.org/en-US/docs/"
"Web/HTTP]MDN 上 HTTP 的文档[/url](或阅读 [url=https://tools.ietf.org/html/"
"rfc2616]RFC 2616[/url],直接从根源了解)。\n"
@@ -58251,72 +57725,6 @@ msgid "Reads one chunk from the response."
msgstr "从响应中读取一块数据。"
msgid ""
-"Sends a request to the connected host.\n"
-"The URL parameter is usually just the part after the host, so for "
-"[code]https://somehost.com/index.php[/code], it is [code]/index.php[/code]. "
-"When sending requests to an HTTP proxy server, it should be an absolute URL. "
-"For [constant HTTPClient.METHOD_OPTIONS] requests, [code]*[/code] is also "
-"allowed. For [constant HTTPClient.METHOD_CONNECT] requests, it should be the "
-"authority component ([code]host:port[/code]).\n"
-"Headers are HTTP request headers. For available HTTP methods, see [enum "
-"Method].\n"
-"To create a POST request with query strings to push to the server, do:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var fields = {\"username\" : \"user\", \"password\" : \"pass\"}\n"
-"var query_string = http_client.query_string_from_dict(fields)\n"
-"var headers = [\"Content-Type: application/x-www-form-urlencoded\", \"Content-"
-"Length: \" + str(query_string.length())]\n"
-"var result = http_client.request(http_client.METHOD_POST, \"/index.php\", "
-"headers, query_string)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var fields = new Godot.Collections.Dictionary { { \"username\", \"user\" }, "
-"{ \"password\", \"pass\" } };\n"
-"string queryString = new HTTPClient().QueryStringFromDict(fields);\n"
-"string[] headers = { \"Content-Type: application/x-www-form-urlencoded\", $"
-"\"Content-Length: {queryString.Length}\" };\n"
-"var result = new HTTPClient().Request(HTTPClient.Method.Post, \"index.php\", "
-"headers, queryString);\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Note:[/b] The [param body] parameter is ignored if [param method] is "
-"[constant HTTPClient.METHOD_GET]. This is because GET methods can't contain "
-"request data. As a workaround, you can pass request data as a query string in "
-"the URL. See [method String.uri_encode] for an example."
-msgstr ""
-"向连接的服务器发送请求。\n"
-"URL 参数通常只是主机名后面的部分,所以对于 [code]https://somehost.com/index."
-"php[/code] 来说就是 [code]/index.php[/code]。当向 HTTP 代理服务器发送请求时,"
-"它应该是一个绝对 URL。对于 [constant HTTPClient.METHOD_OPTIONS] 请求,"
-"[code]*[/code] 也是允许的。对于 [constant HTTPClient.METHOD_CONNECT] 请求,它"
-"应该是权限组件 ([code]host:port[/code])。\n"
-"Headers 参数是 HTTP 请求的报头。有关可用的 HTTP 方法,请参阅 [enum Method]。\n"
-"要创建带有查询字符串的 POST 请求以推送到服务器,请执行以下操作:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var fields = {\"username\" : \"user\", \"password\" : \"pass\"}\n"
-"var query_string = http_client.query_string_from_dict(fields)\n"
-"var headers = [\"Content-Type: application/x-www-form-urlencoded\", \"Content-"
-"Length: \" + str(query_string.length())]\n"
-"var result = http_client.request(http_client.METHOD_POST, \"/index.php\", "
-"headers, query_string)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var fields = new Godot.Collections.Dictionary { { \"username\", \"user\" }, "
-"{ \"password\", \"pass\" } };\n"
-"string queryString = new HTTPClient().QueryStringFromDict(fields);\n"
-"string[] headers = { \"Content-Type: application/x-www-form-urlencoded\", $"
-"\"Content-Length: {queryString.Length}\" };\n"
-"var result = new HTTPClient().Request(HTTPClient.Method.Post, \"index.php\", "
-"headers, queryString);\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]如果 [param method] 是 [constant HTTPClient.METHOD_GET],则忽略 "
-"[param body] 参数。这是因为 GET 方法不能包含请求数据。解决方法是,可以将请求数"
-"据作为 URL 中的查询字符串传递。有关示例,请参见 [method String.uri_encode]。"
-
-msgid ""
"Sends a raw request to the connected host.\n"
"The URL parameter is usually just the part after the host, so for "
"[code]https://somehost.com/index.php[/code], it is [code]/index.php[/code]. "
@@ -58621,6 +58029,11 @@ msgstr ""
"HTTP 状态码 [code]304 Not Modified[/code]。收到了条件 GET 或者 HEAD,并且要不"
"是因为该条件为 [code]false[/code] 就会返回 200 OK 响应。"
+msgid ""
+"Many clients ignore this response code for security reasons. It is also "
+"deprecated by the HTTP standard."
+msgstr "出于安全原因,许多客户端会忽略该响应代码。HTTP 标准也已弃用它。"
+
msgid "HTTP status code [code]305 Use Proxy[/code]."
msgstr "HTTP 状态码 [code]305 Use Proxy[/code]。"
@@ -58976,334 +58389,6 @@ msgstr ""
msgid "A node with the ability to send HTTP(S) requests."
msgstr "具有发送 HTTP(S) 请求能力的节点。"
-msgid ""
-"A node with the ability to send HTTP requests. Uses [HTTPClient] internally.\n"
-"Can be used to make HTTP requests, i.e. download or upload files or web "
-"content via HTTP.\n"
-"[b]Warning:[/b] See the notes and warnings on [HTTPClient] for limitations, "
-"especially regarding TLS security.\n"
-"[b]Note:[/b] When exporting to Android, make sure to enable the "
-"[code]INTERNET[/code] permission in the Android export preset before "
-"exporting the project or using one-click deploy. Otherwise, network "
-"communication of any kind will be blocked by Android.\n"
-"[b]Example of contacting a REST API and printing one of its returned fields:[/"
-"b]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" # Create an HTTP request node and connect its completion signal.\n"
-" var http_request = HTTPRequest.new()\n"
-" add_child(http_request)\n"
-" http_request.request_completed.connect(self._http_request_completed)\n"
-"\n"
-" # Perform a GET request. The URL below returns JSON as of writing.\n"
-" var error = http_request.request(\"https://httpbin.org/get\")\n"
-" if error != OK:\n"
-" push_error(\"An error occurred in the HTTP request.\")\n"
-"\n"
-" # Perform a POST request. The URL below returns JSON as of writing.\n"
-" # Note: Don't make simultaneous requests using a single HTTPRequest "
-"node.\n"
-" # The snippet below is provided for reference only.\n"
-" var body = JSON.new().stringify({\"name\": \"Godette\"})\n"
-" error = http_request.request(\"https://httpbin.org/post\", [], HTTPClient."
-"METHOD_POST, body)\n"
-" if error != OK:\n"
-" push_error(\"An error occurred in the HTTP request.\")\n"
-"\n"
-"# Called when the HTTP request is completed.\n"
-"func _http_request_completed(result, response_code, headers, body):\n"
-" var json = JSON.new()\n"
-" json.parse(body.get_string_from_utf8())\n"
-" var response = json.get_data()\n"
-"\n"
-" # Will print the user agent string used by the HTTPRequest node (as "
-"recognized by httpbin.org).\n"
-" print(response.headers[\"User-Agent\"])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" // Create an HTTP request node and connect its completion signal.\n"
-" var httpRequest = new HTTPRequest();\n"
-" AddChild(httpRequest);\n"
-" httpRequest.RequestCompleted += HttpRequestCompleted;\n"
-"\n"
-" // Perform a GET request. The URL below returns JSON as of writing.\n"
-" Error error = httpRequest.Request(\"https://httpbin.org/get\");\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"An error occurred in the HTTP request.\");\n"
-" }\n"
-"\n"
-" // Perform a POST request. The URL below returns JSON as of writing.\n"
-" // Note: Don't make simultaneous requests using a single HTTPRequest "
-"node.\n"
-" // The snippet below is provided for reference only.\n"
-" string body = new Json().Stringify(new Godot.Collections.Dictionary\n"
-" {\n"
-" { \"name\", \"Godette\" }\n"
-" });\n"
-" error = httpRequest.Request(\"https://httpbin.org/post\", null, "
-"HTTPClient.Method.Post, body);\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"An error occurred in the HTTP request.\");\n"
-" }\n"
-"}\n"
-"\n"
-"// Called when the HTTP request is completed.\n"
-"private void HttpRequestCompleted(long result, long responseCode, string[] "
-"headers, byte[] body)\n"
-"{\n"
-" var json = new Json();\n"
-" json.Parse(body.GetStringFromUtf8());\n"
-" var response = json.GetData().AsGodotDictionary();\n"
-"\n"
-" // Will print the user agent string used by the HTTPRequest node (as "
-"recognized by httpbin.org).\n"
-" GD.Print((response[\"headers\"].AsGodotDictionary())[\"User-Agent\"]);\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Example of loading and displaying an image using HTTPRequest:[/b]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" # Create an HTTP request node and connect its completion signal.\n"
-" var http_request = HTTPRequest.new()\n"
-" add_child(http_request)\n"
-" http_request.request_completed.connect(self._http_request_completed)\n"
-"\n"
-" # Perform the HTTP request. The URL below returns a PNG image as of "
-"writing.\n"
-" var error = http_request.request(\"https://via.placeholder.com/512\")\n"
-" if error != OK:\n"
-" push_error(\"An error occurred in the HTTP request.\")\n"
-"\n"
-"# Called when the HTTP request is completed.\n"
-"func _http_request_completed(result, response_code, headers, body):\n"
-" if result != HTTPRequest.RESULT_SUCCESS:\n"
-" push_error(\"Image couldn't be downloaded. Try a different image.\")\n"
-"\n"
-" var image = Image.new()\n"
-" var error = image.load_png_from_buffer(body)\n"
-" if error != OK:\n"
-" push_error(\"Couldn't load the image.\")\n"
-"\n"
-" var texture = ImageTexture.create_from_image(image)\n"
-"\n"
-" # Display the image in a TextureRect node.\n"
-" var texture_rect = TextureRect.new()\n"
-" add_child(texture_rect)\n"
-" texture_rect.texture = texture\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" // Create an HTTP request node and connect its completion signal.\n"
-" var httpRequest = new HTTPRequest();\n"
-" AddChild(httpRequest);\n"
-" httpRequest.RequestCompleted += HttpRequestCompleted;\n"
-"\n"
-" // Perform the HTTP request. The URL below returns a PNG image as of "
-"writing.\n"
-" Error error = httpRequest.Request(\"https://via.placeholder.com/512\");\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"An error occurred in the HTTP request.\");\n"
-" }\n"
-"}\n"
-"\n"
-"// Called when the HTTP request is completed.\n"
-"private void HttpRequestCompleted(long result, long responseCode, string[] "
-"headers, byte[] body)\n"
-"{\n"
-" if (result != (long)HTTPRequest.Result.Success)\n"
-" {\n"
-" GD.PushError(\"Image couldn't be downloaded. Try a different image."
-"\");\n"
-" }\n"
-" var image = new Image();\n"
-" Error error = image.LoadPngFromBuffer(body);\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"Couldn't load the image.\");\n"
-" }\n"
-"\n"
-" var texture = ImageTexture.CreateFromImage(image);\n"
-"\n"
-" // Display the image in a TextureRect node.\n"
-" var textureRect = new TextureRect();\n"
-" AddChild(textureRect);\n"
-" textureRect.Texture = texture;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Gzipped response bodies[/b]: HTTPRequest will automatically handle "
-"decompression of response bodies. A [code]Accept-Encoding[/code] header will "
-"be automatically added to each of your requests, unless one is already "
-"specified. Any response with a [code]Content-Encoding: gzip[/code] header "
-"will automatically be decompressed and delivered to you as uncompressed bytes."
-msgstr ""
-"一种具有发送 HTTP 请求能力的节点。内部使用 [HTTPClient]。\n"
-"可用于发出 HTTP 请求,即通过 HTTP 下载或上传文件或网络内容。\n"
-"[b]警告:[/b]请参阅 [HTTPClient] 中的注释和警告以了解限制,尤其是有关 TLS 安全"
-"性的限制。\n"
-"[b]注意:[/b]导出到 Android 时,在导出项目或使用一键部署前,请确保在 Android "
-"导出预设中启用 [code]INTERNET[/code] 权限。否则,任何类型的网络通信都将被 "
-"Android 阻止。\n"
-"[b]联系 REST API 并打印其返回字段之一的示例:[/b]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" # 创建一个 HTTP 请求节点并连接其完成信号。\n"
-" var http_request = HTTPRequest.new()\n"
-" add_child(http_request)\n"
-" http_request.request_completed.connect(self._http_request_completed)\n"
-"\n"
-" # 执行一个 GET 请求。以下 URL 会将写入作为 JSON 返回。\n"
-" var error = http_request.request(\"https://httpbin.org/get\")\n"
-" if error != OK:\n"
-" push_error(\"在HTTP请求中发生了一个错误。\")\n"
-"\n"
-" # 执行一个 POST 请求。 以下 URL 会将写入作为 JSON 返回。\n"
-" # 注意:不要使用单个 HTTPRequest 节点同时发出请求。\n"
-" # 下面的代码片段仅供参考。\n"
-" var body = JSON.new().stringify({\"name\": \"Godette\"})\n"
-" error = http_request.request(\"https://httpbin.org/post\", [], HTTPClient."
-"METHOD_POST, body)\n"
-" if error != OK:\n"
-" push_error(\"在HTTP请求中发生了一个错误。\")\n"
-"\n"
-"# 当 HTTP 请求完成时调用。\n"
-"func _http_request_completed(result, response_code, headers, body):\n"
-" var json = JSON.new()\n"
-" json.parse(body.get_string_from_utf8())\n"
-" var response = json.get_data()\n"
-"\n"
-" # 将打印 HTTPRequest 节点使用的用户代理字符串(由 httpbin.org 识别)。\n"
-" print(response.headers[\"User-Agent\"])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" // 创建一个 HTTP 请求节点并连接其完成信号。\n"
-" var httpRequest = new HTTPRequest();\n"
-" AddChild(httpRequest);\n"
-" httpRequest.RequestCompleted += HttpRequestCompleted;\n"
-"\n"
-" // 执行一个 GET 请求。以下 URL 会将写入作为 JSON 返回。\n"
-" Error error = httpRequest.Request(\"https://httpbin.org/get\");\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"在HTTP请求中发生了一个错误。\");\n"
-" }\n"
-"\n"
-" // 执行一个 POST 请求。 以下 URL 会将写入作为 JSON 返回。\n"
-" // 注意:不要使用单个 HTTPRequest 节点同时发出请求。\n"
-" // 下面的代码片段仅供参考。\n"
-" string body = new Json().Stringify(new Godot.Collections.Dictionary\n"
-" {\n"
-" { \"name\", \"Godette\" }\n"
-" });\n"
-" error = httpRequest.Request(\"https://httpbin.org/post\", null, "
-"HTTPClient.Method.Post, body);\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"在HTTP请求中发生了一个错误。\");\n"
-" }\n"
-"}\n"
-"\n"
-"// 当 HTTP 请求完成时调用。\n"
-"private void HttpRequestCompleted(long result, long responseCode, string[] "
-"headers, byte[] body)\n"
-"{\n"
-" var json = new Json();\n"
-" json.Parse(body.GetStringFromUtf8());\n"
-" var response = json.GetData().AsGodotDictionary();\n"
-"\n"
-" // 将打印 HTTPRequest 节点使用的用户代理字符串(由 httpbin.org 识别)。\n"
-" GD.Print((response[\"headers\"].AsGodotDictionary())[\"User-Agent\"]);\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]使用 HTTPRequest 加载和显示图像的示例:[/b]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" # 创建一个 HTTP 请求节点并连接其完成信号。\n"
-" var http_request = HTTPRequest.new()\n"
-" add_child(http_request)\n"
-" http_request.request_completed.connect(self._http_request_completed)\n"
-"\n"
-" # 执行一个 HTTP 请求。下面的 URL 将写入作为一个 PNG 图像返回。\n"
-" var error = http_request.request(\"https://via.placeholder.com/512\")\n"
-" if error != OK:\n"
-" push_error(\"在HTTP请求中发生了一个错误。\")\n"
-"\n"
-"# 当 HTTP 请求完成时调用。\n"
-"func _http_request_completed(result, response_code, headers, body):\n"
-" if result != HTTPRequest.RESULT_SUCCESS:\n"
-" push_error(\"无法下载图像。尝试一个不同的图像。\")\n"
-"\n"
-" var image = Image.new()\n"
-" var error = image.load_png_from_buffer(body)\n"
-" if error != OK:\n"
-" push_error(\"无法加载图像。\")\n"
-"\n"
-" var texture = ImageTexture.create_from_image(image)\n"
-"\n"
-" # 在 TextureRect 节点中显示图像。\n"
-" var texture_rect = TextureRect.new()\n"
-" add_child(texture_rect)\n"
-" texture_rect.texture = texture\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" // 创建一个 HTTP 请求节点并连接其完成信号。\n"
-" var httpRequest = new HTTPRequest();\n"
-" AddChild(httpRequest);\n"
-" httpRequest.RequestCompleted += HttpRequestCompleted;\n"
-"\n"
-" // 执行一个 HTTP 请求。下面的 URL 将写入作为一个 PNG 图像返回。\n"
-" Error error = httpRequest.Request(\"https://via.placeholder.com/512\");\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"在HTTP请求中发生了一个错误。\");\n"
-" }\n"
-"}\n"
-"\n"
-"// 当 HTTP 请求完成时调用。\n"
-"private void HttpRequestCompleted(long result, long responseCode, string[] "
-"headers, byte[] body)\n"
-"{\n"
-" if (result != (long)HTTPRequest.Result.Success)\n"
-" {\n"
-" GD.PushError(\"无法下载图像。尝试一个不同的图像。\");\n"
-" }\n"
-" var image = new Image();\n"
-" Error error = image.LoadPngFromBuffer(body);\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"无法加载图像。\");\n"
-" }\n"
-"\n"
-" var texture = ImageTexture.CreateFromImage(image);\n"
-"\n"
-" // 在 TextureRect 节点中显示图像。\n"
-" var textureRect = new TextureRect();\n"
-" AddChild(textureRect);\n"
-" textureRect.Texture = texture;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Gzipped 响应体[/b]:HTTPRequest 将自动处理响应体的解压缩。除非已经指定了一"
-"个,否则 [code]Accept-Encoding[/code] 报头将自动添加到你的每个请求中。任何带"
-"有 [code]Content-Encoding: gzip[/code] 报头的响应都将自动解压,并作为未压缩的"
-"字节传送给你。"
-
msgid "Making HTTP requests"
msgstr "发出 HTTP 请求"
@@ -59865,8 +58950,8 @@ msgid ""
msgstr ""
"从 [url=https://github.com/KhronosGroup/KTX-Software]KTX[/url] 文件的二进制内"
"容加载图像。与大多数图像格式不同,KTX 可以存储 VRAM 压缩数据并嵌入 mipmap。\n"
-"[b]注意:[/b]Godot 的 libktx 实现仅支持 2D 图像。不支持立方体贴图、纹理数组、"
-"和去填充。\n"
+"[b]注意:[/b]Godot 的 libktx 实现仅支持 2D 图像。不支持立方体贴图、纹理数组和"
+"去填充。\n"
"[b]注意:[/b]该方法仅在启用了 KTX 模块的引擎版本中可用。默认情况下,KTX 模块是"
"启用的,但可以在构建时使用 [code]module_ktx_enabled=no[/code] SCons 选项禁用"
"它。"
@@ -59891,17 +58976,6 @@ msgstr ""
"它。"
msgid ""
-"Loads an image from the string contents of a SVG file ([b].svg[/b]).\n"
-"[b]Note:[/b] This method is only available in engine builds with the SVG "
-"module enabled. By default, the SVG module is enabled, but it can be disabled "
-"at build-time using the [code]module_svg_enabled=no[/code] SCons option."
-msgstr ""
-"从 SVG 文件([b].svg[/b])的字符串内容加载图像。\n"
-"[b]注意:[/b]该方法仅在启用了 SVG 模块的引擎版本中可用。默认情况下,SVG 模块是"
-"启用的,但可以在构建时使用 [code]module_svg_enabled=no[/code] SCons 选项禁用"
-"它。"
-
-msgid ""
"Loads an image from the binary contents of a TGA file.\n"
"[b]Note:[/b] This method is only available in engine builds with the TGA "
"module enabled. By default, the TGA module is enabled, but it can be disabled "
@@ -60497,12 +59571,30 @@ msgstr ""
"绿)。另见 [constant FORMAT_DXT5]。"
msgid ""
+"[url=https://en.wikipedia.org/wiki/"
+"Adaptive_scalable_texture_compression]Adaptive Scalable Texture Compression[/"
+"url]. This implements the 4×4 (high quality) mode."
+msgstr ""
+"[url=https://zh.wikipedia.org/wiki/"
+"%E8%87%AA%E9%80%82%E5%BA%94%E5%8F%AF%E4%BC%B8%E7%BC%A9%E7%BA%B9%E7%90%86%E5%8E%8B%E7%BC%A9]"
+"自适应可伸缩纹理压缩[/url]。这实现了 4×4(高质量)模式。"
+
+msgid ""
"Same format as [constant FORMAT_ASTC_4x4], but with the hint to let the GPU "
"know it is used for HDR."
msgstr ""
"与 [constant FORMAT_ASTC_4x4] 相同的格式,但有提示以让 GPU 知道它用于 HDR。"
msgid ""
+"[url=https://en.wikipedia.org/wiki/"
+"Adaptive_scalable_texture_compression]Adaptive Scalable Texture Compression[/"
+"url]. This implements the 8×8 (low quality) mode."
+msgstr ""
+"[url=https://zh.wikipedia.org/wiki/"
+"%E8%87%AA%E9%80%82%E5%BA%94%E5%8F%AF%E4%BC%B8%E7%BC%A9%E7%BA%B9%E7%90%86%E5%8E%8B%E7%BC%A9]"
+"自适应可伸缩纹理压缩[/url]。这实现了 8×8(低质量)模式。"
+
+msgid ""
"Same format as [constant FORMAT_ASTC_8x8], but with the hint to let the GPU "
"know it is used for HDR."
msgstr ""
@@ -60621,6 +59713,16 @@ msgid ""
"compressed into two channels)."
msgstr "原始纹理(在压缩前)是法线纹理(例如可以压缩为两个通道)。"
+msgid ""
+"Hint to indicate that the high quality 4×4 ASTC compression format should be "
+"used."
+msgstr "表示应该使用高质量 4×4 ASTC 压缩格式的提示。"
+
+msgid ""
+"Hint to indicate that the low quality 8×8 ASTC compression format should be "
+"used."
+msgstr "表示应该使用低质量 8×8 ASTC 压缩格式的提示。"
+
msgid "Base class to add support for specific image formats."
msgstr "用于添加特定图像格式支持的基类。"
@@ -60771,9 +59873,9 @@ msgid ""
"texture each time."
msgstr ""
"用新的 [Image] 替换该纹理的数据。\n"
-"[b]注意:[/b]该纹理必须使用 [method create_from_image] 创建、或首先使用 "
-"[method set_image] 方法初始化,然后才能更新。新的图像大小、格式和 mipmaps 配"
-"置,应与现有纹理的图像配置相匹配。\n"
+"[b]注意:[/b]该纹理必须使用 [method create_from_image] 创建或首先使用 [method "
+"set_image] 方法初始化,然后才能更新。新的图像大小、格式和 mipmap 配置,应与现"
+"有纹理的图像配置相匹配。\n"
"如果需要频繁更新纹理,请使用该方法而不是 [method set_image],这比每次为一个新"
"纹理分配额外内存要快。"
@@ -60788,11 +59890,11 @@ msgid ""
"[GPUParticlesAttractorVectorField3D] and collision maps for "
"[GPUParticlesCollisionSDF3D]. 3D textures can also be used in custom shaders."
msgstr ""
-"[ImageTexture3D] 是一种具有宽度、高度、和深度的三维 [ImageTexture]。另请参阅 "
+"[ImageTexture3D] 是一种具有宽度、高度和深度的三维 [ImageTexture]。另请参阅 "
"[ImageTextureLayered]。\n"
"3D 纹理通常用于存储 [FogMaterial] 的密度图、[Environment] 的色彩校正 LUT、"
-"[GPUParticlesAttractorVectorField3D] 的矢量场、和 "
-"[GPUParticlesCollisionSDF3D] 的碰撞图。3D 纹理也可用于自定义着色器。"
+"[GPUParticlesAttractorVectorField3D] 的矢量场和 [GPUParticlesCollisionSDF3D] "
+"的碰撞图。3D 纹理也可用于自定义着色器。"
msgid ""
"Creates the [ImageTexture3D] with specified [param width], [param height], "
@@ -60851,8 +59953,8 @@ msgid ""
"The update is immediate: it's synchronized with drawing."
msgstr ""
"用这个新图像替换给定 [param layer] 的现有 [Image] 数据。\n"
-"给定的 [Image] 必须与其余引用的图像具有相同的宽度、高度、图像格式、和多级渐远"
-"纹理标志。\n"
+"给定的 [Image] 必须与其余引用的图像具有相同的宽度、高度、图像格式和多级渐远纹"
+"理标志。\n"
"如果图像格式不受支持,它将被解压缩并转换为一个相似且受支持的 [enum Image."
"Format]。\n"
"更新是即时的:它与绘制同步。"
@@ -61224,18 +60326,6 @@ msgid ""
msgstr "返回给定索引(参见 [enum JoyAxis])处的游戏手柄轴的当前值。"
msgid ""
-"Returns a SDL2-compatible device GUID on platforms that use gamepad "
-"remapping, e.g. [code]030000004c050000c405000000010000[/code]. Returns "
-"[code]\"Default Gamepad\"[/code] otherwise. Godot uses the [url=https://"
-"github.com/gabomdq/SDL_GameControllerDB]SDL2 game controller database[/url] "
-"to determine gamepad names and mappings based on this GUID."
-msgstr ""
-"如果平台使用游戏手柄重映射,则返回设备的 GUID,与 SDL2 兼容,例如 "
-"[code]030000004c050000c405000000010000[/code]。否则返回 [code]\"Default "
-"Gamepad\"[/code]。Godot 会根据这个 GUI 使用 [url=https://github.com/gabomdq/"
-"SDL_GameControllerDB]SDL2 游戏控制器数据库[/url]来确定游戏手柄的名称和映射。"
-
-msgid ""
"Returns a dictionary with extra platform-specific information about the "
"device, e.g. the raw gamepad name from the OS or the Steam Input index.\n"
"On Windows the dictionary contains the following fields:\n"
@@ -61418,9 +60508,9 @@ msgid ""
"is being pressed. This will also return [code]true[/code] if any action is "
"simulated via code by calling [method action_press]."
msgstr ""
-"如果任何动作、按键、游戏手柄按钮、或鼠标按钮正被按下,则返回 [code]true[/"
-"code]。如果动作是通过调用 [method action_press] 以通过代码来模拟,该方法也将返"
-"回 [code]true[/code]。"
+"如果任何动作、按键、游戏手柄按钮或鼠标按钮正被按下,则返回 [code]true[/code]。"
+"如果动作是通过调用 [method action_press] 以通过代码来模拟,该方法也将返回 "
+"[code]true[/code]。"
msgid ""
"Returns [code]true[/code] if you are pressing the joypad button (see [enum "
@@ -61501,6 +60591,51 @@ msgstr ""
"《输入示例》[/url]。"
msgid ""
+"Feeds an [InputEvent] to the game. Can be used to artificially trigger input "
+"events from code. Also generates [method Node._input] calls.\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var cancel_event = InputEventAction.new()\n"
+"cancel_event.action = \"ui_cancel\"\n"
+"cancel_event.pressed = true\n"
+"Input.parse_input_event(cancel_event)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var cancelEvent = new InputEventAction();\n"
+"cancelEvent.Action = \"ui_cancel\";\n"
+"cancelEvent.Pressed = true;\n"
+"Input.ParseInputEvent(cancelEvent);\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] Calling this function has no influence on the operating system. "
+"So for example sending an [InputEventMouseMotion] will not move the OS mouse "
+"cursor to the specified position (use [method warp_mouse] instead) and "
+"sending [kbd]Alt/Cmd + Tab[/kbd] as [InputEventKey] won't toggle between "
+"active windows."
+msgstr ""
+"向游戏提供一个 [InputEvent]。可用于通过代码人为地触发输入事件。也会产生 "
+"[method Node._input] 调用。\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var cancel_event = InputEventAction.new()\n"
+"cancel_event.action = \"ui_cancel\"\n"
+"cancel_event.pressed = true\n"
+"Input.parse_input_event(cancel_event)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var cancelEvent = new InputEventAction();\n"
+"cancelEvent.Action = \"ui_cancel\";\n"
+"cancelEvent.Pressed = true;\n"
+"Input.ParseInputEvent(cancelEvent);\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注意:[/b]调用该函数不会影响操作系统。因此,发送 [InputEventMouseMotion] 事"
+"件并不会将操作系统的鼠标光标移动到指定位置(请改用 [method warp_mouse]),发"
+"送 [kbd]Alt/Cmd + Tab[/kbd] 对应的 [InputEventKey] 也不会触发当前窗口的切换。"
+
+msgid ""
"Removes all mappings from the internal database that match the given GUID."
msgstr "从内部数据库中删除与给定 GUID 匹配的所有映射。"
@@ -61516,6 +60651,41 @@ msgstr ""
"[b]注意:[/b]这个值在 Android 和 iOS 上可立即被硬件传感器的值所覆盖。"
msgid ""
+"Sets a custom mouse cursor image, which is only visible inside the game "
+"window. The hotspot can also be specified. Passing [code]null[/code] to the "
+"image parameter resets to the system cursor. See [enum CursorShape] for the "
+"list of shapes.\n"
+"[param image] can be either [Texture2D] or [Image] and its size must be lower "
+"than or equal to 256×256. To avoid rendering issues, sizes lower than or "
+"equal to 128×128 are recommended.\n"
+"[param hotspot] must be within [param image]'s size.\n"
+"[b]Note:[/b] [AnimatedTexture]s aren't supported as custom mouse cursors. If "
+"using an [AnimatedTexture], only the first frame will be displayed.\n"
+"[b]Note:[/b] The [b]Lossless[/b], [b]Lossy[/b] or [b]Uncompressed[/b] "
+"compression modes are recommended. The [b]Video RAM[/b] compression mode can "
+"be used, but it will be decompressed on the CPU, which means loading times "
+"are slowed down and no memory is saved compared to lossless modes.\n"
+"[b]Note:[/b] On the web platform, the maximum allowed cursor image size is "
+"128×128. Cursor images larger than 32×32 will also only be displayed if the "
+"mouse cursor image is entirely located within the page for [url=https://"
+"chromestatus.com/feature/5825971391299584]security reasons[/url]."
+msgstr ""
+"设置自定义鼠标光标图像,该图像仅在游戏窗口内可见。还可以指定热点。将 "
+"[code]null[/code] 传递给 image 参数将重置为系统光标。形状列表见 [enum "
+"CursorShape]。\n"
+"[param image] 可以是 [Texture2D] 或 [Image],其大小必须小于等于 256×256。为了"
+"避免渲染问题,建议使用小于等于 128×128 的大小。\n"
+"[param hotspot] 必须在 [param image] 的大小范围内。\n"
+"[b]注意:[/b]不支持使用 [AnimatedTexture] 作为自定义鼠标光标。如果使用 "
+"[AnimatedTexture],则只会显示第一帧。\n"
+"[b]注意:[/b]推荐使用 [b]Lossless[/b]、[b]Lossy[/b] 或 [b]Uncompressed[/b] 压"
+"缩模式。[b]Video RAM[/b] 压缩模式也可以,但会使用 CPU 解压,拖慢加载,相对于无"
+"损模式也并不节省内存。\n"
+"[b]注意:[/b]在网络平台上,光标图像允许的最大尺寸为 128×128。 出于"
+"[url=https://chromestatus.com/feature/5825971391299584]安全原因[/url],只有当"
+"鼠标光标图像完全位于页面内时,大于 32×32 的光标图像才会显示。"
+
+msgid ""
"Sets the default cursor shape to be used in the viewport instead of [constant "
"CURSOR_ARROW].\n"
"[b]Note:[/b] If you want to change the default cursor shape for [Control]'s "
@@ -61604,26 +60774,6 @@ msgid ""
msgstr "停止使用 [method start_joy_vibration] 启动的游戏手柄的振动。"
msgid ""
-"Vibrate the handheld device for the specified duration in milliseconds.\n"
-"[b]Note:[/b] This method is implemented on Android, iOS, and Web. It has no "
-"effect on other platforms.\n"
-"[b]Note:[/b] For Android, [method vibrate_handheld] requires enabling the "
-"[code]VIBRATE[/code] permission in the export preset. Otherwise, [method "
-"vibrate_handheld] will have no effect.\n"
-"[b]Note:[/b] For iOS, specifying the duration is only supported in iOS 13 and "
-"later.\n"
-"[b]Note:[/b] Some web browsers such as Safari and Firefox for Android do not "
-"support [method vibrate_handheld]."
-msgstr ""
-"使手持设备振动指定的持续时间,单位为毫秒。\n"
-"[b]注意:[/b]该方法在 Android、iOS 和 Web 上实现。它对其他平台没有影响。\n"
-"[b]注意:[/b]对于 Android,[method vibrate_handheld] 需要在导出预设中启用 "
-"[code]VIBRATE[/code] 权限。否则,[method vibrate_handheld] 将无效。\n"
-"[b]注意:[/b]对于 iOS,仅 iOS 13 及更高版本支持指定持续时间。\n"
-"[b]注意:[/b]某些网络浏览器,如 Safari 和 Android 版的 Firefox 不支持 [method "
-"vibrate_handheld]。"
-
-msgid ""
"Sets the mouse position to the specified vector, provided in pixels and "
"relative to an origin at the upper left corner of the currently focused "
"Window Manager game window.\n"
@@ -61703,6 +60853,19 @@ msgid ""
msgstr "十字光标。通常出现在可以执行绘制操作或进行选择的区域上方。"
msgid ""
+"Wait cursor. Indicates that the application is busy performing an operation, "
+"and that it cannot be used during the operation (e.g. something is blocking "
+"its main thread)."
+msgstr ""
+"等待光标。表示应用程序正忙于执行某项操作,并且它在操作期间无法使用(例如,某些"
+"东西正在阻塞其主线程)。"
+
+msgid ""
+"Busy cursor. Indicates that the application is busy performing an operation, "
+"and that it is still usable during the operation."
+msgstr "忙碌光标。表示应用程序正忙于执行某项操作,并且它在操作期间仍然可用。"
+
+msgid ""
"Drag cursor. Usually displayed when dragging something.\n"
"[b]Note:[/b] Windows lacks a dragging cursor, so [constant CURSOR_DRAG] is "
"the same as [constant CURSOR_MOVE] for this platform."
@@ -61922,19 +61085,9 @@ msgid ""
msgstr ""
"返回给定输入事件的副本,该副本已被 [param local_ofs] 偏移并被 [param xform] 变"
"换。与 [InputEventMouseButton]、[InputEventMouseMotion]、"
-"[InputEventScreenTouch]、[InputEventScreenDrag]、[InputEventMagnifyGesture]、"
+"[InputEventScreenTouch]、[InputEventScreenDrag]、[InputEventMagnifyGesture] "
"和 [InputEventPanGesture] 类型的事件相关。"
-msgid ""
-"The event's device ID.\n"
-"[b]Note:[/b] This device ID will always be [code]-1[/code] for emulated mouse "
-"input from a touchscreen. This can be used to distinguish emulated mouse "
-"input from physical mouse input."
-msgstr ""
-"该事件的设备 ID。\n"
-"[b]注意:[/b]对于来自触摸屏的模拟鼠标输入,该设备 ID 将总是 [code]-1[/code]。"
-"可用于区分模拟鼠标输入和物理鼠标输入。"
-
msgid "An input event type for actions."
msgstr "动作的输入事件类型。"
@@ -62150,57 +61303,9 @@ msgstr ""
"键。"
msgid ""
-"Represents the localized label printed on the key in the current keyboard "
-"layout, which corresponds to one of the [enum Key] constants or any valid "
-"Unicode character.\n"
-"For keyboard layouts with a single label on the key, it is equivalent to "
-"[member keycode].\n"
-"To get a human-readable representation of the [InputEventKey], use [code]OS."
-"get_keycode_string(event.key_label)[/code] where [code]event[/code] is the "
-"[InputEventKey].\n"
-"[codeblock]\n"
-" +-----+ +-----+\n"
-" | Q | | Q | - \"Q\" - keycode\n"
-" | Й | | ض | - \"Й\" and \"ض\" - key_label\n"
-" +-----+ +-----+\n"
-"[/codeblock]"
-msgstr ""
-"表示当前键盘布局中印在键上的本地化标签,对应于 [enum Key] 常量之一或任何有效"
-"的 Unicode 字符。\n"
-"对于键上只有一个标签的键盘布局,它等同于 [member keycode]。\n"
-"要获得 [InputEventKey] 的人类可读表示,请使用 [code]OS."
-"get_keycode_string(event.key_label)[/code],其中 [code]event[/code] 是 "
-"[InputEventKey]。\n"
-"[codeblock]\n"
-" +-----+ +-----+\n"
-" | Q | | Q | - \"Q\" - keycode\n"
-" | Й | | ض | - \"Й\" and \"ض\" - key_label\n"
-" +-----+ +-----+\n"
-"[/codeblock]"
-
-msgid ""
-"Latin label printed on the key in the current keyboard layout, which "
-"corresponds to one of the [enum Key] constants.\n"
-"To get a human-readable representation of the [InputEventKey], use [code]OS."
-"get_keycode_string(event.keycode)[/code] where [code]event[/code] is the "
-"[InputEventKey].\n"
-"[codeblock]\n"
-" +-----+ +-----+\n"
-" | Q | | Q | - \"Q\" - keycode\n"
-" | Й | | ض | - \"Й\" and \"ض\" - key_label\n"
-" +-----+ +-----+\n"
-"[/codeblock]"
-msgstr ""
-"当前键盘布局中键上打印的拉丁标签,对应于 [enum Key] 常量之一。\n"
-"要获得 [InputEventKey] 的人类可读表示,请使用 [code]OS."
-"get_keycode_string(event.keycode)[/code],其中 [code]event[/code] 是 "
-"[InputEventKey]。\n"
-"[codeblock]\n"
-" +-----+ +-----+\n"
-" | Q | | Q | - \"Q\" - 键码\n"
-" | Й | | ض | - \"Й\" 和 \"ض\" - key_label\n"
-" +-----+ +-----+\n"
-"[/codeblock]"
+"Represents the location of a key which has both left and right versions, such "
+"as [kbd]Shift[/kbd] or [kbd]Alt[/kbd]."
+msgstr "表示具有左右版本的键的位置,例如 [kbd]Shift[/kbd] 和 [kbd]Alt[/kbd]。"
msgid ""
"Represents the physical location of a key on the 101/102-key US QWERTY "
@@ -62295,131 +61400,6 @@ msgid ""
"Represents a MIDI message from a MIDI device, such as a musical keyboard."
msgstr "代表来自 MIDI 设备的 MIDI 消息,例如来自音乐键盘。"
-msgid ""
-"InputEventMIDI stores information about messages from [url=https://en."
-"wikipedia.org/wiki/MIDI]MIDI[/url] (Musical Instrument Digital Interface) "
-"devices. These may include musical keyboards, synthesizers, and drum "
-"machines.\n"
-"MIDI messages can be received over a 5-pin MIDI connector or over USB. If "
-"your device supports both be sure to check the settings in the device to see "
-"which output it is using.\n"
-"By default, Godot does not detect MIDI devices. You need to call [method OS."
-"open_midi_inputs], first. You can check which devices are detected with "
-"[method OS.get_connected_midi_inputs], and close the connection with [method "
-"OS.close_midi_inputs].\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" OS.open_midi_inputs()\n"
-" print(OS.get_connected_midi_inputs())\n"
-"\n"
-"func _input(input_event):\n"
-" if input_event is InputEventMIDI:\n"
-" _print_midi_info(input_event)\n"
-"\n"
-"func _print_midi_info(midi_event):\n"
-" print(midi_event)\n"
-" print(\"Channel \", midi_event.channel)\n"
-" print(\"Message \", midi_event.message)\n"
-" print(\"Pitch \", midi_event.pitch)\n"
-" print(\"Velocity \", midi_event.velocity)\n"
-" print(\"Instrument \", midi_event.instrument)\n"
-" print(\"Pressure \", midi_event.pressure)\n"
-" print(\"Controller number: \", midi_event.controller_number)\n"
-" print(\"Controller value: \", midi_event.controller_value)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" OS.OpenMidiInputs();\n"
-" GD.Print(OS.GetConnectedMidiInputs());\n"
-"}\n"
-"\n"
-"public override void _Input(InputEvent inputEvent)\n"
-"{\n"
-" if (inputEvent is InputEventMIDI midiEvent)\n"
-" {\n"
-" PrintMIDIInfo(midiEvent);\n"
-" }\n"
-"}\n"
-"\n"
-"private void PrintMIDIInfo(InputEventMIDI midiEvent)\n"
-"{\n"
-" GD.Print(midiEvent);\n"
-" GD.Print($\"Channel {midiEvent.Channel}\");\n"
-" GD.Print($\"Message {midiEvent.Message}\");\n"
-" GD.Print($\"Pitch {midiEvent.Pitch}\");\n"
-" GD.Print($\"Velocity {midiEvent.Velocity}\");\n"
-" GD.Print($\"Instrument {midiEvent.Instrument}\");\n"
-" GD.Print($\"Pressure {midiEvent.Pressure}\");\n"
-" GD.Print($\"Controller number: {midiEvent.ControllerNumber}\");\n"
-" GD.Print($\"Controller value: {midiEvent.ControllerValue}\");\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Note:[/b] Godot does not support MIDI output, so there is no way to emit "
-"MIDI messages from Godot. Only MIDI input is supported."
-msgstr ""
-"InputEventMIDI 存储有关来自 [url=https://en.wikipedia.org/wiki/MIDI]MIDI[/url]"
-"(乐器数字接口)设备的消息的信息。这些设备可能包括音乐键盘、合成器和鼓机。\n"
-"MIDI 消息可以通过 5 针 MIDI 连接器或 USB 接收。如果你的设备支持这两种方式,请"
-"务必检查设备中的设置以查看它正在使用哪种输出。\n"
-"默认情况下,Godot 不检测 MIDI 设备。需要首先调用 [method OS."
-"open_midi_inputs]。可以使用 [method OS.get_connected_midi_inputs] 检查检测到哪"
-"些设备,并使用 [method OS.close_midi_inputs] 关闭连接。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" OS.open_midi_inputs()\n"
-" print(OS.get_connected_midi_inputs())\n"
-"\n"
-"func _input(input_event):\n"
-" if input_event is InputEventMIDI:\n"
-" _print_midi_info(input_event)\n"
-"\n"
-"func _print_midi_info(midi_event):\n"
-" print(midi_event)\n"
-" print(\"Channel \", midi_event.channel)\n"
-" print(\"Message \", midi_event.message)\n"
-" print(\"Pitch \", midi_event.pitch)\n"
-" print(\"Velocity \", midi_event.velocity)\n"
-" print(\"Instrument \", midi_event.instrument)\n"
-" print(\"Pressure \", midi_event.pressure)\n"
-" print(\"Controller number: \", midi_event.controller_number)\n"
-" print(\"Controller value: \", midi_event.controller_value)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" OS.OpenMidiInputs();\n"
-" GD.Print(OS.GetConnectedMidiInputs());\n"
-"}\n"
-"\n"
-"public override void _Input(InputEvent inputEvent)\n"
-"{\n"
-" if (inputEvent is InputEventMIDI midiEvent)\n"
-" {\n"
-" PrintMIDIInfo(midiEvent);\n"
-" }\n"
-"}\n"
-"\n"
-"private void PrintMIDIInfo(InputEventMIDI midiEvent)\n"
-"{\n"
-" GD.Print(midiEvent);\n"
-" GD.Print($\"Channel {midiEvent.Channel}\");\n"
-" GD.Print($\"Message {midiEvent.Message}\");\n"
-" GD.Print($\"Pitch {midiEvent.Pitch}\");\n"
-" GD.Print($\"Velocity {midiEvent.Velocity}\");\n"
-" GD.Print($\"Instrument {midiEvent.Instrument}\");\n"
-" GD.Print($\"Pressure {midiEvent.Pressure}\");\n"
-" GD.Print($\"Controller number: {midiEvent.ControllerNumber}\");\n"
-" GD.Print($\"Controller value: {midiEvent.ControllerValue}\");\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]Godot 不支持 MIDI 输出,因此无法从 Godot 发出 MIDI 消息。仅支持 "
-"MIDI 输入。"
-
msgid "MIDI Message Status Byte List"
msgstr "MIDI 消息状态字节列表"
@@ -62430,6 +61410,86 @@ msgid "Wikipedia Piano Key Frequencies List"
msgstr "维基百科钢琴琴键频率列表"
msgid ""
+"The MIDI channel of this message, ranging from [code]0[/code] to [code]15[/"
+"code]. MIDI channel [code]9[/code] is reserved for percussion instruments."
+msgstr ""
+"该消息的 MIDI 通道,范围从 [code]0[/code] 到 [code]15[/code]。MIDI 通道 "
+"[code]9[/code] 是为打击乐器保留的。"
+
+msgid ""
+"The unique number of the controller, if [member message] is [constant "
+"MIDI_MESSAGE_CONTROL_CHANGE], otherwise this is [code]0[/code]. This value "
+"can be used to identify sliders for volume, balance, and panning, as well as "
+"switches and pedals on the MIDI device. See the [url=https://en.wikipedia.org/"
+"wiki/General_MIDI#Controller_events]General MIDI specification[/url] for a "
+"small list."
+msgstr ""
+"如果 [member message] 为 [constant MIDI_MESSAGE_CONTROL_CHANGE],控制器的唯一"
+"编号;否则为 [code]0[/code]。该值可用于识别用于音量、平衡和平移的滑块,以及 "
+"MIDI 设备上的开关和踏板。有关小列表,请参阅[url=https://en.wikipedia.org/wiki/"
+"General_MIDI#Controller_events]通用 MIDI 规范[/url]。"
+
+msgid ""
+"The value applied to the controller. If [member message] is [constant "
+"MIDI_MESSAGE_CONTROL_CHANGE], this value ranges from [code]0[/code] to "
+"[code]127[/code], otherwise it is [code]0[/code]. See also [member "
+"controller_value]."
+msgstr ""
+"应用于控制器的值。如果 [member message] 为 [constant "
+"MIDI_MESSAGE_CONTROL_CHANGE],则该值介于 [code]0[/code] 到 [code]127[/code] 之"
+"间,否则为 [code]0[/code]。另见 [member controller_value]。"
+
+msgid ""
+"The instrument (also called [i]program[/i] or [i]preset[/i]) used on this "
+"MIDI message. This value ranges from [code]0[/code] to [code]127[/code].\n"
+"To see what each value means, refer to the [url=https://en.wikipedia.org/wiki/"
+"General_MIDI#Program_change_events]General MIDI's instrument list[/url]. Keep "
+"in mind that the list is off by 1 because it does not begin from 0. A value "
+"of [code]0[/code] corresponds to the acoustic grand piano."
+msgstr ""
+"该 MIDI 消息上使用的乐器(也称为 [i]程序[/i] 或 [i]预设[/i])。该值介于 "
+"[code]0[/code] 到 [code]127[/code] 之间。\n"
+"要了解每个值的含义,请参阅[url=https://en.wikipedia.org/wiki/"
+"General_MIDI#Program_change_events]通用 MIDI 乐器列表[/url]。请记住,该列表相"
+"差 1,因为它不是从 0 开始的。值 [code]0[/code] 对应于原声三角钢琴。"
+
+msgid ""
+"Represents the type of MIDI message (see the [enum MIDIMessage] enum).\n"
+"For more information, see the [url=https://www.midi.org/specifications-old/"
+"item/table-2-expanded-messages-list-status-bytes]MIDI message status byte "
+"list chart[/url]."
+msgstr ""
+"表示 MIDI 消息的类型(请参阅 [enum MIDIMessage] 枚举)。\n"
+"有关更多信息,请参阅 [url=https://www.midi.org/specifications-old/item/"
+"table-2-expanded-messages-list-status-bytes]MIDI 消息状态字节列表图表[/url]。"
+
+msgid ""
+"The pitch index number of this MIDI message. This value ranges from [code]0[/"
+"code] to [code]127[/code].\n"
+"On a piano, the [b]middle C[/b] is [code]60[/code], followed by a [b]C-sharp[/"
+"b] ([code]61[/code]), then a [b]D[/b] ([code]62[/code]), and so on. Each "
+"octave is split in offsets of 12. See the \"MIDI note number\" column of the "
+"[url=https://en.wikipedia.org/wiki/Piano_key_frequencies]piano key frequency "
+"chart[/url] a full list."
+msgstr ""
+"该 MIDI 消息的音高索引号。该值的范围从 [code]0[/code] 到 [code]127[/code]。\n"
+"在钢琴上,[b]中音 C[/b]为 [code]60[/code],后跟 [b]C 升音[/b]([code]61[/"
+"code]),然后是 [b]D[/b]([code]62[/code]),等等。每个八度音阶以 12 为偏移量"
+"进行分割。请参阅 [url=https://en.wikipedia.org/wiki/Piano_key_frequencies]钢琴"
+"键频率图表[/url] 完整列表的“MIDI 音符编号”列。"
+
+msgid ""
+"The strength of the key being pressed. This value ranges from [code]0[/code] "
+"to [code]127[/code].\n"
+"[b]Note:[/b] For many devices, this value is always [code]0[/code]. Other "
+"devices such as musical keyboards may simulate pressure by changing the "
+"[member velocity], instead."
+msgstr ""
+"按键的力度。该值的范围从 [code]0[/code] 到 [code]127[/code]。\n"
+"[b]注意:[/b]对于许多设备,该值始终为 [code]0[/code]。其他如音乐键盘等设备可以"
+"通过改用更改 [member velocity] 来模拟压力。"
+
+msgid ""
"The velocity of the MIDI message. This value ranges from [code]0[/code] to "
"[code]127[/code]. For a musical keyboard, this corresponds to how quickly the "
"key was pressed, and is rarely above [code]110[/code] in practice.\n"
@@ -62577,6 +61637,27 @@ msgid ""
msgstr "表示用户对笔施加的压力。范围从 [code]0.0[/code] 到 [code]1.0[/code] 。"
msgid ""
+"The mouse position relative to the previous position (position at the last "
+"frame).\n"
+"[b]Note:[/b] Since [InputEventMouseMotion] is only emitted when the mouse "
+"moves, the last event won't have a relative position of [code]Vector2(0, 0)[/"
+"code] when the user stops moving the mouse.\n"
+"[b]Note:[/b] [member relative] is automatically scaled according to the "
+"content scale factor, which is defined by the project's stretch mode "
+"settings. This means mouse sensitivity will appear different depending on "
+"resolution when using [member relative] in a script that handles mouse aiming "
+"with the [constant Input.MOUSE_MODE_CAPTURED] mouse mode. To avoid this, use "
+"[member screen_relative] instead."
+msgstr ""
+"鼠标相对于前一个位置(上一帧时的位置)的位置。\n"
+"[b]注意:[/b]因为 [InputEventMouseMotion] 只会在鼠标移动时发出,用户停止移动鼠"
+"标时,最后一个事件的相对位置不会是 [code]Vector2(0, 0)[/code]。\n"
+"[b]注意:[/b][member relative] 会根据内容缩放系数自动进行缩放,这个系数是在项"
+"目的拉伸模式设置中定义的。也就是说在 [constant Input.MOUSE_MODE_CAPTURED] 鼠标"
+"模式下,如果在脚本中使用 [member relative] 来处理鼠标瞄准,那么鼠标的灵敏度就"
+"会因分辨率的不同而不同。为了避免这种情况,请改用 [member screen_relative]。"
+
+msgid ""
"The unscaled mouse position relative to the previous position in the "
"coordinate system of the screen (position at the last frame).\n"
"[b]Note:[/b] Since [InputEventMouseMotion] is only emitted when the mouse "
@@ -62595,6 +61676,18 @@ msgstr ""
"鼠标瞄准来说,这都应该优于 [member relative]。"
msgid ""
+"The unscaled mouse velocity in pixels per second in screen coordinates. This "
+"velocity is [i]not[/i] scaled according to the content scale factor or calls "
+"to [method InputEvent.xformed_by]. This should be preferred over [member "
+"velocity] for mouse aiming when using the [constant Input."
+"MOUSE_MODE_CAPTURED] mouse mode, regardless of the project's stretch mode."
+msgstr ""
+"屏幕坐标中未缩放的鼠标速度(单位为每秒像素数)。该速度[i]不[/i]根据内容缩放系"
+"数或对 [method InputEvent.xformed_by] 的调用进行缩放。当使用 [constant Input."
+"MOUSE_MODE_CAPTURED] 鼠标模式时,无论项目的拉伸模式如何,这都应该优先于鼠标瞄"
+"准的 [member velocity]。"
+
+msgid ""
"Represents the angles of tilt of the pen. Positive X-coordinate value "
"indicates a tilt to the right. Positive Y-coordinate value indicates a tilt "
"toward the user. Ranges from [code]-1.0[/code] to [code]1.0[/code] for both "
@@ -62603,6 +61696,21 @@ msgstr ""
"代表笔的倾斜角度。正的 X 坐标值表示向右倾斜。正的Y坐标值表示向用户自身倾斜。两"
"个轴的范围是 [code]-1.0[/code] 到 [code]1.0[/code]。"
+msgid ""
+"The mouse velocity in pixels per second.\n"
+"[b]Note:[/b] [member velocity] is automatically scaled according to the "
+"content scale factor, which is defined by the project's stretch mode "
+"settings. This means mouse sensitivity will appear different depending on "
+"resolution when using [member velocity] in a script that handles mouse aiming "
+"with the [constant Input.MOUSE_MODE_CAPTURED] mouse mode. To avoid this, use "
+"[member screen_velocity] instead."
+msgstr ""
+"鼠标速度(单位为像素每秒)。\n"
+"[b]注意:[/b][member velocity] 根据内容缩放系数自动缩放,内容缩放系数由项目的"
+"拉伸模式设置定义。这意味着在使用 [constant Input.MOUSE_MODE_CAPTURED] 鼠标模式"
+"处理鼠标瞄准的脚本中使用 [member velocity] 时,鼠标灵敏度将根据分辨率而有所不"
+"同。为了避免这种情况,请改用 [member screen_velocity]。"
+
msgid "Represents a panning touch gesture."
msgstr "代表平移触摸手势。"
@@ -62634,8 +61742,55 @@ msgstr "多次拖动事件中的拖动事件索引。"
msgid "Returns [code]true[/code] when using the eraser end of a stylus pen."
msgstr "正在使用手写笔的橡皮端时,会返回 [code]true[/code]。"
-msgid "The drag position."
-msgstr "拖拽的位置。"
+msgid ""
+"The drag position relative to the previous position (position at the last "
+"frame).\n"
+"[b]Note:[/b] [member relative] is automatically scaled according to the "
+"content scale factor, which is defined by the project's stretch mode "
+"settings. This means touch sensitivity will appear different depending on "
+"resolution when using [member relative] in a script that handles touch "
+"aiming. To avoid this, use [member screen_relative] instead."
+msgstr ""
+"相对于前一位置(上一帧的位置)的拖动位置。\n"
+"[b]注意:[/b][member relative] 根据内容缩放系数自动缩放,内容缩放系数由项目的"
+"拉伸模式设置定义。这意味着在处理触摸瞄准的脚本中使用 [member relative] 时,触"
+"摸灵敏度将根据分辨率而有所不同。为了避免这种情况,请改用 [member "
+"screen_relative]。"
+
+msgid ""
+"The unscaled drag position relative to the previous position in screen "
+"coordinates (position at the last frame). This position is [i]not[/i] scaled "
+"according to the content scale factor or calls to [method InputEvent."
+"xformed_by]. This should be preferred over [member relative] for touch aiming "
+"regardless of the project's stretch mode."
+msgstr ""
+"相对于屏幕坐标中的上一个位置(上一帧的位置)的未缩放拖动位置。该位置[i]不[/i]"
+"根据内容缩放系数或调用 [method InputEvent.xformed_by] 进行缩放。无论项目的拉伸"
+"模式如何,对于触摸瞄准来说,这都应该优先于 [member relative]。"
+
+msgid ""
+"The unscaled drag velocity in pixels per second in screen coordinates. This "
+"velocity is [i]not[/i] scaled according to the content scale factor or calls "
+"to [method InputEvent.xformed_by]. This should be preferred over [member "
+"velocity] for touch aiming regardless of the project's stretch mode."
+msgstr ""
+"屏幕坐标中未缩放的拖动速度(单位为每秒像素数)。该速度[i]不会[/i]根据内容缩放"
+"系数或对 [method InputEvent.xformed_by] 的调用进行缩放。无论项目的拉伸模式如"
+"何,对于触摸瞄准来说,这都应该优先于 [member velocity]。"
+
+msgid ""
+"The drag velocity.\n"
+"[b]Note:[/b] [member velocity] is automatically scaled according to the "
+"content scale factor, which is defined by the project's stretch mode "
+"settings. This means touch sensitivity will appear different depending on "
+"resolution when using [member velocity] in a script that handles touch "
+"aiming. To avoid this, use [member screen_velocity] instead."
+msgstr ""
+"拖动速度。\n"
+"[b]注意:[/b][member velocity] 根据内容缩放系数自动缩放,内容缩放系数由项目的"
+"拉伸模式设置定义。这意味着在处理触摸瞄准的脚本中使用 [member velocity] 时,触"
+"摸灵敏度将根据分辨率而表现不同。为了避免这种情况,请改用 [member "
+"screen_velocity]。"
msgid "Represents a screen touch event."
msgstr "代表屏幕触摸事件。"
@@ -62657,9 +61812,6 @@ msgid ""
"The touch index in the case of a multi-touch event. One index = one finger."
msgstr "在多点触摸事件中的触摸指数。一个索引 = 一个手指。"
-msgid "The touch position, in screen (global) coordinates."
-msgstr "触摸位置,使用屏幕(全局)坐标。"
-
msgid ""
"If [code]true[/code], the touch's state is pressed. If [code]false[/code], "
"the touch's state is released."
@@ -62890,6 +62042,99 @@ msgstr ""
msgid "A built-in type for integers."
msgstr "整数内置类型。"
+msgid ""
+"Signed 64-bit integer type. This means that it can take values from "
+"[code]-2^63[/code] to [code]2^63 - 1[/code], i.e. from "
+"[code]-9223372036854775808[/code] to [code]9223372036854775807[/code]. When "
+"it exceeds these bounds, it will wrap around.\n"
+"[int]s can be automatically converted to [float]s when necessary, for example "
+"when passing them as arguments in functions. The [float] will be as close to "
+"the original integer as possible.\n"
+"Likewise, [float]s can be automatically converted into [int]s. This will "
+"truncate the [float], discarding anything after the floating-point.\n"
+"[b]Note:[/b] In a boolean context, an [int] will evaluate to [code]false[/"
+"code] if it equals [code]0[/code], and to [code]true[/code] otherwise.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var x: int = 1 # x is 1\n"
+"x = 4.2 # x is 4, because 4.2 gets truncated\n"
+"var max_int = 9223372036854775807 # Biggest value an int can store\n"
+"max_int += 1 # max_int is -9223372036854775808, because it wrapped around\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"int x = 1; // x is 1\n"
+"x = (int)4.2; // x is 4, because 4.2 gets truncated\n"
+"// We use long below, because GDScript's int is 64-bit while C#'s int is 32-"
+"bit.\n"
+"long maxLong = 9223372036854775807; // Biggest value a long can store\n"
+"maxLong++; // maxLong is now -9223372036854775808, because it wrapped "
+"around.\n"
+"\n"
+"// Alternatively with C#'s 32-bit int type, which has a smaller maximum "
+"value.\n"
+"int maxInt = 2147483647; // Biggest value an int can store\n"
+"maxInt++; // maxInt is now -2147483648, because it wrapped around\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"You can use the [code]0b[/code] literal for binary representation, the "
+"[code]0x[/code] literal for hexadecimal representation, and the [code]_[/"
+"code] symbol to separate long numbers and improve readability.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var x = 0b1001 # x is 9\n"
+"var y = 0xF5 # y is 245\n"
+"var z = 10_000_000 # z is 10000000\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"int x = 0b1001; // x is 9\n"
+"int y = 0xF5; // y is 245\n"
+"int z = 10_000_000; // z is 10000000\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"带符号 64 位整数类型。这意味着它能够接受从 [code]-2^63[/code] 到 [code]2^63 - "
+"1[/code] 的值,即从 [code]-9223372036854775808[/code] 到 "
+"[code]9223372036854775807[/code]。超出这个范围后,值会绕回到另一端。\n"
+"[int] 可以在需要时自动转换为 [float],例如在作为函数的参数传递的时候。[float] "
+"会尽可能与原始整数接近。\n"
+"类似地,[float] 可以自动转换为 [int]。这样会截断该 [float],丢弃小数点之后的部"
+"分。\n"
+"[b]注意:[/b]布尔环境中会将等于 [code]0[/code] 的 [int] 评估为 [code]false[/"
+"code],其他值则为 [code]true[/code]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var x: int = 1 # x 为 1\n"
+"x = 4.2 # x 为 4,因为 4.2 发生了截断\n"
+"var max_int = 9223372036854775807 # int 所能存储的最大值\n"
+"max_int += 1 # max_int 现在是 -9223372036854775808,因为它绕到了另一端\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"int x = 1; // x 为 1\n"
+"x = (int)4.2; // x 为 4,因为 4.2 发生了截断\n"
+"// 下面使用 long,因为 GDScript 的 int 为 64 位,而 C# 的 int 为 32 位。\n"
+"long maxLong = 9223372036854775807; // long 所能存储的最大值\n"
+"maxLong++; // maxLong 现在是 -9223372036854775808,因为它绕到了另一端。\n"
+"\n"
+"// 也可以使用 C# 的 32 位 int 类型,最大值较小。\n"
+"int maxInt = 2147483647; // int 所能存储的最大值\n"
+"maxInt++; // maxInt 现在是 -2147483648,因为它绕到了另一端。\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"你可以使用 [code]0b[/code] 字面量书写二进制值,使用 [code]0x[/code] 字面量书写"
+"十六进制值,使用 [code]_[/code] 符号分隔较长的数字,提升可读性。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var x = 0b1001 # x 为 9\n"
+"var y = 0xF5 # y 为 245\n"
+"var z = 10_000_000 # z 为 10000000\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"int x = 0b1001; // x 为 9\n"
+"int y = 0xF5; // y 为 245\n"
+"int z = 10_000_000; // z 为 10000000\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
msgid "Constructs an [int] set to [code]0[/code]."
msgstr "构造设为 [code]0[/code] 的 [int]。"
@@ -64581,6 +63826,16 @@ msgstr ""
"用于显示纯文本的控件。可以控制水平和垂直对齐方式以及文本在节点包围框内的换行方"
"式。不支持粗体、斜体等富文本格式。这种需求请改用 [RichTextLabel]。"
+msgid ""
+"Returns the bounding rectangle of the character at position [param pos]. If "
+"the character is a non-visual character or [param pos] is outside the valid "
+"range, an empty [Rect2] is returned. If the character is a part of a "
+"composite grapheme, the bounding rectangle of the whole grapheme is returned."
+msgstr ""
+"返回位置 [param pos] 处字符的边界矩形。如果字符是非视觉字符或 [param pos] 超出"
+"有效范围,则返回空 [Rect2]。如果字符是复合字素的一部分,则返回整个字素的边界矩"
+"形。"
+
msgid "Returns the number of lines of text the Label has."
msgstr "返回该 Label 的文本行数。"
@@ -64620,12 +63875,15 @@ msgstr ""
"如果为 [code]true[/code],Label 将仅显示位于其边界矩形内部的文本,并将水平裁剪"
"文本。"
+msgid "Ellipsis character used for text clipping."
+msgstr "用于文本裁剪的省略字符。"
+
msgid ""
"Controls the text's horizontal alignment. Supports left, center, right, and "
"fill, or justify. Set it to one of the [enum HorizontalAlignment] constants."
msgstr ""
-"控制文本的水平对齐方式。支持左对齐、居中对齐、右对齐、和填充、或两端对齐。将其"
-"设置为 [enum HorizontalAlignment] 常量之一。"
+"控制文本的水平对齐方式。支持左对齐、居中对齐、右对齐、填充(即两端对齐)。请将"
+"其设置为 [enum HorizontalAlignment] 常量。"
msgid ""
"Line fill alignment rules. For more info see [enum TextServer."
@@ -64664,7 +63922,7 @@ msgid ""
"Controls the text's vertical alignment. Supports top, center, bottom, and "
"fill. Set it to one of the [enum VerticalAlignment] constants."
msgstr ""
-"控制文本的垂直对齐方式。支持顶部对齐、居中对齐、底部对齐、和填充。将其设置为 "
+"控制文本的垂直对齐方式。支持顶部对齐、居中对齐、底部对齐和填充。将其设置为 "
"[enum VerticalAlignment] 常量之一。"
msgid ""
@@ -64940,8 +64198,8 @@ msgid ""
"this mode might have transparency sorting issues between the main text and "
"the outline."
msgstr ""
-"该模式仅允许完全透明、或完全不透明的像素。除非启用了某种形式的屏幕空间抗锯齿"
-"(请参阅 [member ProjectSettings.rendering/anti_aliasing/quality/"
+"该模式仅允许完全透明或完全不透明的像素。除非启用了某种形式的屏幕空间抗锯齿"
+"(见 [member ProjectSettings.rendering/anti_aliasing/quality/"
"screen_space_aa]),否则会看到粗糙的边缘。该模式也被称为 [i]Alpha 测试[/i] 或 "
"[i]1 位透明度[/i]。\n"
"[b]注意:[/b]该模式可能会出现抗锯齿字体和轮廓问题,请尝试调整 [member "
@@ -65816,6 +65074,17 @@ msgstr ""
"use_denoiser]、并增加 3D 场景的光照贴图纹素大小。"
msgid ""
+"Scales the lightmap texel density of all meshes for the current bake. This is "
+"a multiplier that builds upon the existing lightmap texel size defined in "
+"each imported 3D scene, along with the per-mesh density multiplier (which is "
+"designed to be used when the same mesh is used at different scales). Lower "
+"values will result in faster bake times."
+msgstr ""
+"缩放当前烘焙的所有网格的光照贴图纹素密度。这是一个基于每个导入的 3D 场景中定义"
+"的已有光照贴图纹素大小、以及每个网格密度乘数(设计用于在不同缩放使用相同网格时"
+"使用)的乘数。较低的值将导致更快的烘焙时间。"
+
+msgid ""
"If [code]true[/code], uses a GPU-based denoising algorithm on the generated "
"lightmap. This eliminates most noise within the generated lightmap at the "
"cost of longer bake times. File sizes are generally not impacted "
@@ -67091,6 +66360,129 @@ msgstr ""
msgid "Abstract base class for the game's main loop."
msgstr "游戏主循环的抽象基类。"
+msgid ""
+"[MainLoop] is the abstract base class for a Godot project's game loop. It is "
+"inherited by [SceneTree], which is the default game loop implementation used "
+"in Godot projects, though it is also possible to write and use one's own "
+"[MainLoop] subclass instead of the scene tree.\n"
+"Upon the application start, a [MainLoop] implementation must be provided to "
+"the OS; otherwise, the application will exit. This happens automatically (and "
+"a [SceneTree] is created) unless a [MainLoop] [Script] is provided from the "
+"command line (with e.g. [code]godot -s my_loop.gd[/code]) or the \"Main Loop "
+"Type\" project setting is overwritten.\n"
+"Here is an example script implementing a simple [MainLoop]:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"class_name CustomMainLoop\n"
+"extends MainLoop\n"
+"\n"
+"var time_elapsed = 0\n"
+"\n"
+"func _initialize():\n"
+" print(\"Initialized:\")\n"
+" print(\" Starting time: %s\" % str(time_elapsed))\n"
+"\n"
+"func _process(delta):\n"
+" time_elapsed += delta\n"
+" # Return true to end the main loop.\n"
+" return Input.get_mouse_button_mask() != 0 || Input."
+"is_key_pressed(KEY_ESCAPE)\n"
+"\n"
+"func _finalize():\n"
+" print(\"Finalized:\")\n"
+" print(\" End time: %s\" % str(time_elapsed))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"\n"
+"[GlobalClass]\n"
+"public partial class CustomMainLoop : MainLoop\n"
+"{\n"
+" private double _timeElapsed = 0;\n"
+"\n"
+" public override void _Initialize()\n"
+" {\n"
+" GD.Print(\"Initialized:\");\n"
+" GD.Print($\" Starting Time: {_timeElapsed}\");\n"
+" }\n"
+"\n"
+" public override bool _Process(double delta)\n"
+" {\n"
+" _timeElapsed += delta;\n"
+" // Return true to end the main loop.\n"
+" return Input.GetMouseButtonMask() != 0 || Input.IsKeyPressed(Key."
+"Escape);\n"
+" }\n"
+"\n"
+" private void _Finalize()\n"
+" {\n"
+" GD.Print(\"Finalized:\");\n"
+" GD.Print($\" End Time: {_timeElapsed}\");\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"[MainLoop] 是 Godot 项目中游戏循环的抽象基类。它被 [SceneTree] 继承,"
+"[SceneTree] 是 Godot 项目中使用的默认游戏循环的实现,不过也可以编写和使用自己"
+"的 [MainLoop] 子类,来代替场景树。\n"
+"在应用程序启动时,必须向操作系统提供一个 [MainLoop] 实现;否则,应用程序将退"
+"出。这会自动发生(并创建一个 [SceneTree]),除非从命令行提供一个 [MainLoop] "
+"[Script](例如 [code]godot -s my_loop.gd[/code]),或“主循环类型(Main Loop "
+"Type)”项目设置被覆盖。\n"
+"有一个实现简单 [MainLoop] 的示例脚本:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"class_name CustomMainLoop\n"
+"extends MainLoop\n"
+"\n"
+"var time_elapsed = 0\n"
+"\n"
+"func _initialize():\n"
+" print(\"Initialized:\")\n"
+" print(\" Starting time: %s\" % str(time_elapsed))\n"
+"\n"
+"func _process(delta):\n"
+" time_elapsed += delta\n"
+" # 返回 true 结束主循环。\n"
+" return Input.get_mouse_button_mask() != 0 || Input."
+"is_key_pressed(KEY_ESCAPE)\n"
+"\n"
+"func _finalize():\n"
+" print(\"Finalized:\")\n"
+" print(\" End time: %s\" % str(time_elapsed))\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"\n"
+"[GlobalClass]\n"
+"public partial class CustomMainLoop : MainLoop\n"
+"{\n"
+" private double _timeElapsed = 0;\n"
+"\n"
+" public override void _Initialize()\n"
+" {\n"
+" GD.Print(\"Initialized:\");\n"
+" GD.Print($\" Starting Time: {_timeElapsed}\");\n"
+" }\n"
+"\n"
+" public override bool _Process(double delta)\n"
+" {\n"
+" _timeElapsed += delta;\n"
+" // 返回 true 结束主循环。\n"
+" return Input.GetMouseButtonMask() != 0 || Input.IsKeyPressed(Key."
+"Escape);\n"
+" }\n"
+"\n"
+" private void _Finalize()\n"
+" {\n"
+" GD.Print(\"Finalized:\");\n"
+" GD.Print($\" End Time: {_timeElapsed}\");\n"
+" }\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
msgid "Called before the program exits."
msgstr "在程序退出前调用。"
@@ -67176,6 +66568,18 @@ msgstr ""
"具体针对 Android 和 iOS 平台。"
msgid ""
+"Notification received from the OS when the application is paused.\n"
+"Specific to the Android and iOS platforms.\n"
+"[b]Note:[/b] On iOS, you only have approximately 5 seconds to finish a task "
+"started by this signal. If you go over this allotment, iOS will kill the app "
+"instead of pausing it."
+msgstr ""
+"应用程序暂停时从操作系统收到的通知。\n"
+"特定于 Android 和 iOS 平台。\n"
+"[b]注意:[/b]在 iOS 上,你只有大约 5 秒时间来完成由该信号启动的任务。如果你超"
+"过了该分配,则 iOS 将终止该应用程序而不是暂停它。"
+
+msgid ""
"Notification received from the OS when the application is focused, i.e. when "
"changing the focus from the OS desktop or a thirdparty application to any "
"open window of the Godot instance.\n"
@@ -67860,6 +67264,58 @@ msgid "[PackedVector2Array] for second UV coordinates."
msgstr "第二 UV 坐标的 [PackedVector2Array]。"
msgid ""
+"Contains custom color channel 0. [PackedByteArray] if [code](format >> Mesh."
+"ARRAY_FORMAT_CUSTOM0_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK[/code] is "
+"[constant ARRAY_CUSTOM_RGBA8_UNORM], [constant ARRAY_CUSTOM_RGBA8_SNORM], "
+"[constant ARRAY_CUSTOM_RG_HALF], or [constant ARRAY_CUSTOM_RGBA_HALF]. "
+"[PackedFloat32Array] otherwise."
+msgstr ""
+"包含自定义颜色通道 0。如果 [code](format >> Mesh.ARRAY_FORMAT_CUSTOM0_SHIFT) "
+"& Mesh.ARRAY_FORMAT_CUSTOM_MASK[/code] 为 [constant "
+"ARRAY_CUSTOM_RGBA8_UNORM]、[constant ARRAY_CUSTOM_RGBA8_SNORM]、[constant "
+"ARRAY_CUSTOM_RG_HALF] 或 [constant ARRAY_CUSTOM_RGBA_HALF],则为 "
+"[PackedByteArray]。否则为 [PackedFloat32Array]。"
+
+msgid ""
+"Contains custom color channel 1. [PackedByteArray] if [code](format >> Mesh."
+"ARRAY_FORMAT_CUSTOM1_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK[/code] is "
+"[constant ARRAY_CUSTOM_RGBA8_UNORM], [constant ARRAY_CUSTOM_RGBA8_SNORM], "
+"[constant ARRAY_CUSTOM_RG_HALF], or [constant ARRAY_CUSTOM_RGBA_HALF]. "
+"[PackedFloat32Array] otherwise."
+msgstr ""
+"包含自定义颜色通道 1。如果 [code](format >> Mesh.ARRAY_FORMAT_CUSTOM1_SHIFT) "
+"& Mesh.ARRAY_FORMAT_CUSTOM_MASK[/code] 为 [constant "
+"ARRAY_CUSTOM_RGBA8_UNORM]、[constant ARRAY_CUSTOM_RGBA8_SNORM]、[constant "
+"ARRAY_CUSTOM_RG_HALF] 或 [constant ARRAY_CUSTOM_RGBA_HALF],则为 "
+"[PackedByteArray]。否则为 [PackedFloat32Array]。"
+
+msgid ""
+"Contains custom color channel 2. [PackedByteArray] if [code](format >> Mesh."
+"ARRAY_FORMAT_CUSTOM2_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK[/code] is "
+"[constant ARRAY_CUSTOM_RGBA8_UNORM], [constant ARRAY_CUSTOM_RGBA8_SNORM], "
+"[constant ARRAY_CUSTOM_RG_HALF], or [constant ARRAY_CUSTOM_RGBA_HALF]. "
+"[PackedFloat32Array] otherwise."
+msgstr ""
+"包含自定义颜色通道 2。如果 [code](format >> Mesh.ARRAY_FORMAT_CUSTOM2_SHIFT) "
+"& Mesh.ARRAY_FORMAT_CUSTOM_MASK[/code] 为 [constant "
+"ARRAY_CUSTOM_RGBA8_UNORM]、[constant ARRAY_CUSTOM_RGBA8_SNORM]、[constant "
+"ARRAY_CUSTOM_RG_HALF] 或 [constant ARRAY_CUSTOM_RGBA_HALF],则为 "
+"[PackedByteArray]。否则为 [PackedFloat32Array]。"
+
+msgid ""
+"Contains custom color channel 3. [PackedByteArray] if [code](format >> Mesh."
+"ARRAY_FORMAT_CUSTOM3_SHIFT) & Mesh.ARRAY_FORMAT_CUSTOM_MASK[/code] is "
+"[constant ARRAY_CUSTOM_RGBA8_UNORM], [constant ARRAY_CUSTOM_RGBA8_SNORM], "
+"[constant ARRAY_CUSTOM_RG_HALF], or [constant ARRAY_CUSTOM_RGBA_HALF]. "
+"[PackedFloat32Array] otherwise."
+msgstr ""
+"包含自定义颜色通道 3。如果 [code](format >> Mesh.ARRAY_FORMAT_CUSTOM3_SHIFT) "
+"& Mesh.ARRAY_FORMAT_CUSTOM_MASK[/code] 为 [constant "
+"ARRAY_CUSTOM_RGBA8_UNORM]、[constant ARRAY_CUSTOM_RGBA8_SNORM]、[constant "
+"ARRAY_CUSTOM_RG_HALF] 或 [constant ARRAY_CUSTOM_RGBA_HALF],则为 "
+"[PackedByteArray]。否则为 [PackedFloat32Array]。"
+
+msgid ""
"[PackedFloat32Array] or [PackedInt32Array] of bone indices. Contains either 4 "
"or 8 numbers per vertex depending on the presence of the [constant "
"ARRAY_FLAG_USE_8_BONE_WEIGHTS] flag."
@@ -67889,9 +67345,9 @@ msgid ""
"vertices of each triangle. For lines, the index array is in pairs indicating "
"the start and end of each line."
msgstr ""
-"整数的 [PackedInt32Array],用作引用顶点、颜色、法线、切线、和纹理的索引。所有"
-"这些数组必须具有与顶点数组相同数量的元素。任何索引都不能超过顶点数组的大小。当"
-"该索引数组存在时,它会将函数置于“索引模式”,其中索引选择第 [i]i[/i] 个顶点、法"
+"整数的 [PackedInt32Array],用作引用顶点、颜色、法线、切线和纹理的索引。所有这"
+"些数组必须具有与顶点数组相同数量的元素。任何索引都不能超过顶点数组的大小。当该"
+"索引数组存在时,它会将函数置于“索引模式”,其中索引选择第 [i]i[/i] 个顶点、法"
"线、切线、颜色、UV 等。这意味着,如果想要沿着一条边有不同的法线或颜色,则必须"
"复制这些顶点。\n"
"对于三角形,索引数组被解释为三元组,指代每个三角形的顶点。对于线条,索引数组成"
@@ -68067,8 +67523,8 @@ msgstr ""
"压缩后,顶点位置将被打包到 RGBA16UNORM 属性中,并在顶点着色器中进行缩放。法线"
"和切线将被打包到表示一个轴的 RG16UNORM 中,并在顶点的 A 通道中存储一个 16 位浮"
"点数。UV 将使用 16 位标准化浮点数而不是完整的 32 位有符号浮点数。使用该压缩模"
-"式时,必须使用顶点、法线、和切线或仅使用顶点。你无法使用没有切线的法线。如果可"
-"以的话,导入器将自动启用这种压缩。"
+"式时,必须使用顶点、法线和切线或仅使用顶点。你无法使用没有切线的法线。如果可以"
+"的话,导入器将自动启用这种压缩。"
msgid "Blend shapes are normalized."
msgstr "混合形状是被归一化了的。"
@@ -68079,6 +67535,9 @@ msgstr "混合形状是相对于基础的权重。"
msgid "Parameters to be used with a [Mesh] convex decomposition operation."
msgstr "用于 [Mesh] 凸分解操作的参数。"
+msgid "If [code]true[/code], uses approximation for computing convex hulls."
+msgstr "如果为 [code]true[/code],则在计算凸包时使用近似计算。"
+
msgid ""
"Controls the precision of the convex-hull generation process during the "
"clipping plane selection stage. Ranges from [code]1[/code] to [code]16[/code]."
@@ -68108,11 +67567,23 @@ msgid "Mode for the approximate convex decomposition."
msgstr "近似凸分解的模式。"
msgid ""
+"If [code]true[/code], normalizes the mesh before applying the convex "
+"decomposition."
+msgstr "如果为 [code]true[/code],则会在应用凸分解前将网格归一化。"
+
+msgid ""
"Controls the granularity of the search for the \"best\" clipping plane. "
"Ranges from [code]1[/code] to [code]16[/code]."
msgstr ""
"控制搜索“最佳”裁剪平面的颗粒度。范围从 [code]1[/code] 到 [code]16[/code]。"
+msgid ""
+"If [code]true[/code], projects output convex hull vertices onto the original "
+"source mesh to increase floating-point accuracy of the results."
+msgstr ""
+"如果为 [code]true[/code],则项目会将凸包顶点输出到该源网格之上,提高结果的浮点"
+"数精度。"
+
msgid "Maximum number of voxels generated during the voxelization stage."
msgstr "体素化阶段生成的最大体素数量。"
@@ -68240,7 +67711,7 @@ msgstr ""
"AddChild(mi);\n"
"[/csharp]\n"
"[/codeblocks]\n"
-"另请参阅 [ArrayMesh]、[ImmediateMesh]、和 [SurfaceTool],以了解程序化几何生"
+"另请参阅 [ArrayMesh]、[ImmediateMesh] 和 [SurfaceTool],以了解程序化几何生"
"成。\n"
"[b]注意:[/b]对于三角形基元模式的前面,Godot 使用顺时针[url=https://"
"learnopengl.com/Advanced-OpenGL/Face-culling]缠绕顺序[/url]。"
@@ -68332,6 +67803,17 @@ msgstr ""
"[/csharp]\n"
"[/codeblocks]"
+msgid ""
+"Returns the [Mesh]'s format as a combination of the [enum Mesh.ArrayFormat] "
+"flags. For example, a mesh containing both vertices and normals would return "
+"a format of [code]3[/code] because [constant Mesh.ARRAY_FORMAT_VERTEX] is "
+"[code]1[/code] and [constant Mesh.ARRAY_FORMAT_NORMAL] is [code]2[/code]."
+msgstr ""
+"将 [Mesh] 的格式返回为 [enum Mesh.ArrayFormat] 标志的组合。例如,包含顶点和法"
+"线的网格将返回为 [code]3[/code] 的格式,因为 [constant Mesh."
+"ARRAY_FORMAT_VERTEX] 是 [code]1[/code],而 [constant Mesh."
+"ARRAY_FORMAT_NORMAL] 是 [code]2[/code]。"
+
msgid "Returns the material assigned to the [Mesh]."
msgstr "返回分配给该 [Mesh] 的材质。"
@@ -68515,7 +67997,7 @@ msgid ""
msgstr ""
"返回 [Mesh] 在绘制时将使用的 [Material]。这可以返回 [member "
"GeometryInstance3D.material_override]、在该 [MeshInstance3D] 中定义的表面覆盖 "
-"[Material]、或 [member mesh] 中定义的表面 [Material]。例如,如果使用 [member "
+"[Material] 或 [member mesh] 中定义的表面 [Material]。例如,如果使用 [member "
"GeometryInstance3D.material_override],则所有表面都将返回该覆盖材质。\n"
"如果没有材质处于活动状态,包括当 [member mesh] 为 [code]null[/code] 时,则返"
"回 [code]null[/code]。"
@@ -68772,6 +68254,11 @@ msgstr ""
"[b]警告:[/b]除非你知道自己在做什么,否则忽略丢失的节点。丢失节点上的已有属性"
"可以在代码中自由修改,无论它们的类型如何。"
+msgid ""
+"The name of the class this node was supposed to be (see [method Object."
+"get_class])."
+msgstr "该节点本来的类名(见 [method Object.get_class])。"
+
msgid "Returns the path of the scene this node was instance of originally."
msgstr "返回该节点最初是其实例的场景的路径。"
@@ -68801,6 +68288,18 @@ msgstr ""
"[b]警告:[/b]除非你知道自己在做什么,否则忽略缺失的资源。缺失资源的已有属性可"
"以在代码中自由修改,无论它们的类型如何。"
+msgid ""
+"The name of the class this resource was supposed to be (see [method Object."
+"get_class])."
+msgstr "该资源本来的类名(见 [method Object.get_class])。"
+
+msgid ""
+"If set to [code]true[/code], allows new properties to be added on top of the "
+"existing ones with [method Object.set]."
+msgstr ""
+"如果设置为 [code]true[/code],则允许使用 [method Object.set] 在已有属性之上添"
+"加新属性。"
+
msgid "Generic mobile VR implementation."
msgstr "通用移动 VR 实现。"
@@ -68994,7 +68493,7 @@ msgid ""
"command_line_tutorial.html]command line argument[/url]."
msgstr ""
"在引擎开始写入视频和音频数据之前调用一次。[param movie_size] 是要保存的视频的"
-"宽度和高度。[param fps] 是指定的每秒帧数,在项目设置中、或使用 [code]--fixed-"
+"宽度和高度。[param fps] 是指定的每秒帧数,在项目设置中或使用 [code]--fixed-"
"fps <fps>[/code][url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]"
"《命令行参数》[/url]指定。"
@@ -69104,6 +68603,21 @@ msgstr ""
"[code]true[/code]。如果打算设置绝对颜色而不是着色,请确保材质的反照率颜色被设"
"置为纯白色 ([code]Color(1, 1, 1)[/code])。"
+msgid ""
+"Sets custom data for a specific instance. [param custom_data] is a [Color] "
+"type only to contain 4 floating-point numbers.\n"
+"For the custom data to be used, ensure that [member use_custom_data] is "
+"[code]true[/code].\n"
+"This custom instance data has to be manually accessed in your custom shader "
+"using [code]INSTANCE_CUSTOM[/code]."
+msgstr ""
+"为特定的实例设置自定义数据。[param custom_data] 是一个 [Color] 类型,仅为了包"
+"含 4 个浮点数。\n"
+"对于要使用的自定义数据,请确保 [member use_custom_data] 为 [code]true[/"
+"code]。\n"
+"必须使用 [code]INSTANCE_CUSTOM[/code] 在自定义着色器中,手动访问该自定义实例数"
+"据。"
+
msgid "Sets the [Transform3D] for a specific instance."
msgstr "为指定实例设置 [Transform3D]。"
@@ -69111,6 +68625,36 @@ msgid "Sets the [Transform2D] for a specific instance."
msgstr "为指定实例设置 [Transform2D]。"
msgid ""
+"Accessing this property is very slow. Use [method set_instance_color] and "
+"[method get_instance_color] instead."
+msgstr ""
+"访问该属性非常慢。请改用 [method set_instance_color] 和 [method "
+"get_instance_color]。"
+
+msgid "Array containing each [Color] used by all instances of this mesh."
+msgstr "包含该网格所有实例使用的每种 [Color] 的数组。"
+
+msgid ""
+"Custom AABB for this MultiMesh resource. Setting this manually prevents "
+"costly runtime AABB recalculations."
+msgstr ""
+"为该 MultiMesh 资源自定义 AABB。手动设置该项可以防止高昂的运行时 AABB 重新计算"
+"成本。"
+
+msgid ""
+"Accessing this property is very slow. Use [method set_instance_custom_data] "
+"and [method get_instance_custom_data] instead."
+msgstr ""
+"访问该属性非常慢。请改用 [method set_instance_custom_data] 和 [method "
+"get_instance_custom_data]。"
+
+msgid ""
+"Array containing each custom data value used by all instances of this mesh, "
+"as a [PackedColorArray]."
+msgstr ""
+"包含该网格的所有实例所使用的每个自定义数据值的数组,作为 [PackedColorArray]。"
+
+msgid ""
"Number of instances that will get drawn. This clears and (re)sizes the "
"buffers. Setting data format or flags afterwards will have no effect.\n"
"By default, all instances are drawn but you can limit this with [member "
@@ -69130,6 +68674,40 @@ msgstr ""
"各个实例的外观可以通过 [method set_instance_color] 和 [method "
"set_instance_custom_data] 来修改。"
+msgid ""
+"Accessing this property is very slow. Use [method set_instance_transform_2d] "
+"and [method get_instance_transform_2d] instead."
+msgstr ""
+"访问该属性非常慢。请改用 [method set_instance_transform_2d] 和 [method "
+"get_instance_transform_2d]。"
+
+msgid ""
+"Array containing each [Transform2D] value used by all instances of this mesh, "
+"as a [PackedVector2Array]. Each transform is divided into 3 [Vector2] values "
+"corresponding to the transforms' [code]x[/code], [code]y[/code], and "
+"[code]origin[/code]."
+msgstr ""
+"包含该网格的所有实例所使用的每个 [Transform2D] 值的数组,作为 "
+"[PackedVector2Array]。每个变换被分为 3 个 [Vector2] 值,分别对应于变换的 "
+"[code]x[/code]、[code]y[/code] 和 [code]origin[/code]。"
+
+msgid ""
+"Accessing this property is very slow. Use [method set_instance_transform] and "
+"[method get_instance_transform] instead."
+msgstr ""
+"访问该属性非常慢。请改用 [method set_instance_transform] 和 [method "
+"get_instance_transform]。"
+
+msgid ""
+"Array containing each [Transform3D] value used by all instances of this mesh, "
+"as a [PackedVector3Array]. Each transform is divided into 4 [Vector3] values "
+"corresponding to the transforms' [code]x[/code], [code]y[/code], [code]z[/"
+"code], and [code]origin[/code]."
+msgstr ""
+"包含该网格的所有实例所使用的每个 [Transform3D] 值的数组,作为 "
+"[PackedVector3Array]。每个变换被分为 4 个 [Vector3] 值,分别对应于变换的 "
+"[code]x[/code]、[code]y[/code]、[code]z[/code] 和 [code]origin[/code]。"
+
msgid "Format of transform used to transform mesh, either 2D or 3D."
msgstr "用于变换网格的变换格式,可以是 2D 或 3D。"
@@ -69244,13 +68822,6 @@ msgstr ""
"ID。"
msgid ""
-"Returns the sender's peer ID for the RPC currently being executed.\n"
-"[b]Note:[/b] If not inside an RPC this method will return 0."
-msgstr ""
-"返回当前正在执行的 RPC 的发送方的对等体 ID。\n"
-"[b]注意:[/b]如果不在 RPC 内,这个方法将返回 0。"
-
-msgid ""
"Returns the unique peer ID of this MultiplayerAPI's [member multiplayer_peer]."
msgstr "返回这个 MultiplayerAPI 的 [member multiplayer_peer] 唯一对等体 ID。"
@@ -69639,9 +69210,6 @@ msgstr ""
"Android 导出预设中启用了 [code]INTERNET[/code] 权限。否则,任何类型的网络通信"
"都会被安卓阻止。"
-msgid "WebRTC Signaling Demo"
-msgstr "WebRTC 信号演示"
-
msgid ""
"Immediately close the multiplayer peer returning to the state [constant "
"CONNECTION_DISCONNECTED]. Connected peers will be dropped without emitting "
@@ -70825,6 +70393,16 @@ msgstr ""
"或障碍物。3D 避障时只使用半径球体,该设置无效。"
msgid ""
+"If [code]true[/code], and the agent uses 2D avoidance, it will remember the "
+"set y-axis velocity and reapply it after the avoidance step. While 2D "
+"avoidance has no y-axis and simulates on a flat plane this setting can help "
+"to soften the most obvious clipping on uneven 3D geometry."
+msgstr ""
+"如果为 [code]true[/code],并且代理使用 2D 避障,它将记住设置的 y 轴速度并在避"
+"障步进后重新应用它。虽然 2D 避障没有 y 轴并在平坦平面上进行模拟,但该设置可以"
+"帮助柔化不均匀 3D 几何体上最明显的裁剪。"
+
+msgid ""
"The height offset is subtracted from the y-axis value of any vector path "
"position for this NavigationAgent. The NavigationAgent height offset does not "
"change or influence the navigation mesh or pathfinding query result. "
@@ -71069,9 +70647,6 @@ msgstr ""
msgid "Using NavigationMeshes"
msgstr "使用 NavigationMesh"
-msgid "3D Navmesh Demo"
-msgstr "3D 导航网格演示"
-
msgid ""
"Adds a polygon using the indices of the vertices you get when calling [method "
"get_vertices]."
@@ -71365,6 +70940,69 @@ msgid "Helper class for creating and clearing navigation meshes."
msgstr "对导航网格进行创建和清理的辅助类。"
msgid ""
+"This class is responsible for creating and clearing 3D navigation meshes used "
+"as [NavigationMesh] resources inside [NavigationRegion3D]. The "
+"[NavigationMeshGenerator] has very limited to no use for 2D as the navigation "
+"mesh baking process expects 3D node types and 3D source geometry to parse.\n"
+"The entire navigation mesh baking is best done in a separate thread as the "
+"voxelization, collision tests and mesh optimization steps involved are very "
+"slow and performance-intensive operations.\n"
+"Navigation mesh baking happens in multiple steps and the result depends on 3D "
+"source geometry and properties of the [NavigationMesh] resource. In the first "
+"step, starting from a root node and depending on [NavigationMesh] properties "
+"all valid 3D source geometry nodes are collected from the [SceneTree]. "
+"Second, all collected nodes are parsed for their relevant 3D geometry data "
+"and a combined 3D mesh is build. Due to the many different types of parsable "
+"objects, from normal [MeshInstance3D]s to [CSGShape3D]s or various "
+"[CollisionObject3D]s, some operations to collect geometry data can trigger "
+"[RenderingServer] and [PhysicsServer3D] synchronizations. Server "
+"synchronization can have a negative effect on baking time or framerate as it "
+"often involves [Mutex] locking for thread security. Many parsable objects and "
+"the continuous synchronization with other threaded Servers can increase the "
+"baking time significantly. On the other hand only a few but very large and "
+"complex objects will take some time to prepare for the Servers which can "
+"noticeably stall the next frame render. As a general rule the total number of "
+"parsable objects and their individual size and complexity should be balanced "
+"to avoid framerate issues or very long baking times. The combined mesh is "
+"then passed to the Recast Navigation Object to test the source geometry for "
+"walkable terrain suitable to [NavigationMesh] agent properties by creating a "
+"voxel world around the meshes bounding area.\n"
+"The finalized navigation mesh is then returned and stored inside the "
+"[NavigationMesh] for use as a resource inside [NavigationRegion3D] nodes.\n"
+"[b]Note:[/b] Using meshes to not only define walkable surfaces but also "
+"obstruct navigation baking does not always work. The navigation baking has no "
+"concept of what is a geometry \"inside\" when dealing with mesh source "
+"geometry and this is intentional. Depending on current baking parameters, as "
+"soon as the obstructing mesh is large enough to fit a navigation mesh area "
+"inside, the baking will generate navigation mesh areas that are inside the "
+"obstructing source geometry mesh."
+msgstr ""
+"该类负责创建和清除用作 [NavigationRegion3D] 内的 [NavigationMesh] 资源的 3D 导"
+"航网格。[NavigationMeshGenerator] 在 2D 中的用途非常有限,因为导航网格烘焙过程"
+"需要 3D 节点类型和 3D 源几何体来解析。\n"
+"整个导航网格的烘焙最好在单独的线程中完成,因为所涉及的体素化、碰撞测试和网格优"
+"化步骤是非常缓慢且性能密集型的操作。\n"
+"导航网格的烘焙分成若干步进行,最终结果取决于 [NavigationMesh] 资源的 3D 源几何"
+"体和该资源的属性。第一步是从根节点开始,并根据 [NavigationMesh] 的属性从 "
+"[SceneTree] 收集所有有效的 3D 源几何体节点。第二步会对所有收集的节点进行解析,"
+"以获得其相关的 3D 几何体数据,合并构造成一个 3D 网格。由于可解析的对象类型众"
+"多,从普通的 [MeshInstance3D] 到 [CSGShape3D] 再到各种 [CollisionObject3D],其"
+"中某些收集几何数据的操作可能会触发 [RenderingServer] 和 [PhysicsServer3D] 的同"
+"步。服务器同步通常涉及 [Mutex] 锁定以确保线程安全,这会对烘焙时间或帧率产生负"
+"面影响。可解析对象过多,以及与多线程服务器之间的连续同步,都会大幅影响烘焙时"
+"间。而如果对象数量较少,但都是非常大而且复杂的对象,那么就会在为服务器准备数据"
+"上花费时间,这可能会明显拖延下一帧渲染。一般而言,可解析对象的总数与它们各自的"
+"大小和复杂度之间应该达到平衡,防止出现帧率问题和超长的烘焙时间。合并后的网格后"
+"续会被交给 Recast 导航对象,通过在网格的包围区域周边创建体素世界,来测试适合 "
+"[NavigationMesh] 代理属性的可行走地形的源几何体。\n"
+"最终的导航网格然后将被返回并被存储在 [NavigationMesh] 中,用作 "
+"[NavigationRegion3D] 节点内的资源。\n"
+"[b]注意:[/b]使用网格不仅定义可行走的表面的导航烘焙,而且定义障碍的导航烘焙,"
+"并不总会有效。在处理网格源几何体时,导航烘焙没有什么是几何体“位于内部”的概念,"
+"这是有意为之的。根据当前的烘焙参数,一旦障碍网格足够大,大到足以在内部容纳一个"
+"导航网格区域,则烘焙时将生成位于障碍源几何体网格内部的导航网格区域。"
+
+msgid ""
"This method is deprecated due to core threading changes. To upgrade existing "
"code, first create a [NavigationMeshSourceGeometryData3D] resource. Use this "
"resource with [method parse_source_geometry_data] to parse the [SceneTree] "
@@ -71509,35 +71147,6 @@ msgstr ""
"设置解析得到的源几何体数据顶点。顶点需要与正确的索引相匹配。\n"
"[b]警告:[/b]数据不正确会导致相关第三方库在烘焙过程中崩溃。"
-msgid ""
-"2D Obstacle used in navigation to constrain avoidance controlled agents "
-"outside or inside an area."
-msgstr ""
-"用于导航的 2D 障碍物,能够将启用了避障处理的代理约束在某个区域之外或之内。"
-
-msgid ""
-"2D Obstacle used in navigation to constrain avoidance controlled agents "
-"outside or inside an area. The obstacle needs a navigation map and outline "
-"vertices defined to work correctly.\n"
-"If the obstacle's vertices are winded in clockwise order, avoidance agents "
-"will be pushed in by the obstacle, otherwise, avoidance agents will be pushed "
-"out. Outlines must not cross or overlap.\n"
-"Obstacles are [b]not[/b] a replacement for a (re)baked navigation mesh. "
-"Obstacles [b]don't[/b] change the resulting path from the pathfinding, "
-"obstacles only affect the navigation avoidance agent movement by altering the "
-"suggested velocity of the avoidance agent.\n"
-"Obstacles using vertices can warp to a new position but should not moved "
-"every frame as each move requires a rebuild of the avoidance map."
-msgstr ""
-"导航中使用的 2D 障碍物,能够将由避障控制的代理约束在某个区域之外或之内。障碍物"
-"定义导航地图和轮廓顶点后才能正常工作。\n"
-"如果障碍物的顶点使用顺时针顺序缠绕,则避障代理会被推入障碍物,否则避障代理就会"
-"被推出障碍物。轮廓必须不存在交叉和重叠。\n"
-"障碍物[b]不是[/b](重新)烘焙导航网格的替代品。障碍物[b]不会[/b]改变寻路的结"
-"果,障碍物只会修改避障代理的推荐速度,从而影响导航避障代理的移动。\n"
-"使用顶点的障碍物可以传送至新位置,但不应该每一帧都移动,因为每次移动都需要重新"
-"构建避障地图。"
-
msgid "Using NavigationObstacles"
msgstr "使用 NavigationObstacle"
@@ -71600,35 +71209,6 @@ msgstr ""
"理向内推,否则就会向外推。轮廓不能交叉或重叠。如果这些顶点直接跳到了新的位置,"
"那么其他代理可能无法预测这种行为,导致被困在障碍物内。"
-msgid ""
-"3D Obstacle used in navigation to constrain avoidance controlled agents "
-"outside or inside an area."
-msgstr ""
-"用于导航的 3D 障碍物,能够将启用了避障处理的代理约束在某个区域之外或之内。"
-
-msgid ""
-"3D Obstacle used in navigation to constrain avoidance controlled agents "
-"outside or inside an area. The obstacle needs a navigation map and outline "
-"vertices defined to work correctly.\n"
-"If the obstacle's vertices are winded in clockwise order, avoidance agents "
-"will be pushed in by the obstacle, otherwise, avoidance agents will be pushed "
-"out. Outlines must not cross or overlap.\n"
-"Obstacles are [b]not[/b] a replacement for a (re)baked navigation mesh. "
-"Obstacles [b]don't[/b] change the resulting path from the pathfinding, "
-"obstacles only affect the navigation avoidance agent movement by altering the "
-"suggested velocity of the avoidance agent.\n"
-"Obstacles using vertices can warp to a new position but should not moved "
-"every frame as each move requires a rebuild of the avoidance map."
-msgstr ""
-"导航中使用的 3D 障碍物,能够将由避障控制的代理约束在某个区域之外或之内。障碍物"
-"定义导航地图和轮廓顶点后才能正常工作。\n"
-"如果障碍物的顶点使用顺时针顺序缠绕,则避障代理会被推入障碍物,否则避障代理就会"
-"被推出障碍物。轮廓必须不存在交叉和重叠。\n"
-"障碍物[b]不是[/b](重新)烘焙导航网格的替代品。障碍物[b]不会[/b]改变寻路的结"
-"果,障碍物只会修改避障代理的推荐速度,从而影响导航避障代理的移动。\n"
-"使用顶点的障碍物可以传送至新位置,但不应该每一帧都移动,因为每次移动都需要重新"
-"构建避障地图。"
-
msgid "Returns the [RID] of this obstacle on the [NavigationServer3D]."
msgstr "返回这个障碍物在 [NavigationServer3D] 上的 [RID]。"
@@ -71892,9 +71472,6 @@ msgstr ""
"[/csharp]\n"
"[/codeblocks]"
-msgid "2D Navigation Demo"
-msgstr "2D 导航演示"
-
msgid ""
"Appends a [PackedVector2Array] that contains the vertices of an outline to "
"the internal array that contains all the outlines."
@@ -71998,6 +71575,17 @@ msgid "The position offset applied to the [member baking_rect] [Rect2]."
msgstr "应用于 [member baking_rect] [Rect2] 的位置偏移量。"
msgid ""
+"The size of the non-navigable border around the bake bounding area defined by "
+"the [member baking_rect] [Rect2].\n"
+"In conjunction with the [member baking_rect] the border size can be used to "
+"bake tile aligned navigation meshes without the tile edges being shrunk by "
+"[member agent_radius]."
+msgstr ""
+"由 [member baking_rect] [Rect2] 定义的烘焙边界区域周围的不可导航边框的大小。\n"
+"与 [member baking_rect] 结合使用,边框大小可用于烘焙图块对齐的导航网格,而图块"
+"边缘不会因 [member agent_radius] 而缩小。"
+
+msgid ""
"The cell size used to rasterize the navigation mesh vertices. Must match with "
"the cell size on the navigation map."
msgstr ""
@@ -72128,9 +71716,6 @@ msgstr ""
"设置该区块应使用的导航地图的 [RID]。默认情况下,该区块会自动加入 [World2D] 默"
"认导航地图,因此该函数只需要覆盖默认地图即可。"
-msgid "A bitfield determining all avoidance layers for the avoidance constrain."
-msgstr "位域,确定避障约束的所有避障层。"
-
msgid "Determines if the [NavigationRegion2D] is enabled or disabled."
msgstr "决定该 [NavigationRegion2D] 是启用还是禁用。"
@@ -72276,6 +71861,54 @@ msgstr "[NavigationMesh] 发生变化时发出通知。"
msgid "A server interface for low-level 2D navigation access."
msgstr "用于访问低阶 2D 导航的服务器接口。"
+msgid ""
+"NavigationServer2D is the server that handles navigation maps, regions and "
+"agents. It does not handle A* navigation from [AStar2D] or [AStarGrid2D].\n"
+"Maps are divided into regions, which are composed of navigation polygons. "
+"Together, they define the traversable areas in the 2D world.\n"
+"[b]Note:[/b] Most [NavigationServer2D] changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation-related nodes in the scene tree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [code]edge_connection_margin[/code] to the "
+"respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method NavigationServer2D."
+"region_set_navigation_layers], which then can be checked upon when requesting "
+"a path with [method NavigationServer2D.map_get_path]. This can be used to "
+"allow or deny certain areas for some objects.\n"
+"To use the collision avoidance system, you may use agents. You can set an "
+"agent's target velocity, then the servers will emit a callback with a "
+"modified velocity.\n"
+"[b]Note:[/b] The collision avoidance system ignores regions. Using the "
+"modified velocity directly may move an agent outside of the traversable area. "
+"This is a limitation of the collision avoidance system, any more complex "
+"situation may require the use of the physics engine.\n"
+"This server keeps tracks of any call and executes them during the sync phase. "
+"This means that you can request any change to the map, using any thread, "
+"without worrying."
+msgstr ""
+"NavigationServer2D 是负责处理导航地图、区块、代理的服务器。不负责处理 "
+"[AStar2D] 和 [AStarGrid2D] 的 A* 导航。\n"
+"地图被划分为多个区块,这些区块由导航多边形组成。它们共同定义了 2D 世界中的可穿"
+"越区域。\n"
+"[b]注意:[/b]大多数 [NavigationServer2D] 的更改都是在下一个物理帧进行的,不会"
+"立即生效。包括所有对地图、区块、代理的更改,无论是通过场景树中导航相关的节点作"
+"出的更改,还是通过脚本作出的更改。\n"
+"两个区块必须共享一条相似的边才能相连。如果一条边的两个顶点与另一条边上相应顶点"
+"的距离都小于 [code]edge_connection_margin[/code],那么就会认为这两条边是相连"
+"的。\n"
+"可以使用 [method NavigationServer2D.region_set_navigation_layers] 为区块分配导"
+"航层,使用 [method NavigationServer2D.map_get_path] 请求路径时会对导航层进行检"
+"查。可用于允许或禁止某些对象进入特定的区域。\n"
+"使用碰撞躲避系统就需要使用代理。你可以为代理设置目标速度,然后服务器就会发出回"
+"调,提供修改后的速度。\n"
+"[b]注意:[/b]碰撞躲避系统并不考虑区块。直接使用修改后的速度可能会将代理移动到"
+"可达区域之外。这是碰撞躲避系统的缺陷,更复杂的场合可能需要使用物理引擎。\n"
+"服务器会对所有调用进行跟踪,并在同步阶段执行。这意味着你可以放心地从任何线程请"
+"求对地图作出任何修改。"
+
msgid "Using NavigationServer"
msgstr "使用 NavigationServer"
@@ -72380,6 +72013,21 @@ msgstr "设置该代理的 [code]avoidance_layers[/code] 位掩码。"
msgid "Set the agent's [code]avoidance_mask[/code] bitmask."
msgstr "设置该代理的 [code]avoidance_mask[/code] 位掩码。"
+msgid ""
+"Set the agent's [code]avoidance_priority[/code] with a [param priority] "
+"between 0.0 (lowest priority) to 1.0 (highest priority).\n"
+"The specified [param agent] does not adjust the velocity for other agents "
+"that would match the [code]avoidance_mask[/code] but have a lower "
+"[code]avoidance_priority[/code]. This in turn makes the other agents with "
+"lower priority adjust their velocities even more to avoid collision with this "
+"agent."
+msgstr ""
+"设置该代理的 [code]avoidance_priority[/code],优先级 [param priority] 在 0.0"
+"(最低优先级)到 1.0(最高优先级)之间。\n"
+"[param agent] 指定的代理不会针对 [code]avoidance_mask[/code] 存在匹配但 "
+"[code]avoidance_priority[/code] 更低的代理调整速度。相应地,优先级更低的代理则"
+"会对其速度进行更大的调整,从而避免与这个代理发生碰撞。"
+
msgid "Puts the agent in the map."
msgstr "将代理放入地图中。"
@@ -72633,6 +72281,17 @@ msgid ""
msgstr "返回地图的边界连接边距。边界连接边距是用于连接两个地区的距离。"
msgid ""
+"Returns the current iteration id of the navigation map. Every time the "
+"navigation map changes and synchronizes the iteration id increases. An "
+"iteration id of 0 means the navigation map has never synchronized.\n"
+"[b]Note:[/b] The iteration id will wrap back to 1 after reaching its range "
+"limit."
+msgstr ""
+"返回导航地图的当前迭代 ID。导航地图发生更改并同步时都会增加迭代 ID。迭代 ID "
+"为 0 表示导航地图从未进行过同步。\n"
+"[b]注意:[/b]迭代 ID 超过取值范围后会绕回 1。"
+
+msgid ""
"Returns the link connection radius of the map. This distance is the maximum "
"range any link will search for navigation mesh polygons to connect to."
msgstr ""
@@ -72973,6 +72632,54 @@ msgid "A server interface for low-level 3D navigation access."
msgstr "用于访问低阶 3D 导航的服务器接口。"
msgid ""
+"NavigationServer3D is the server that handles navigation maps, regions and "
+"agents. It does not handle A* navigation from [AStar3D].\n"
+"Maps are divided into regions, which are composed of navigation meshes. "
+"Together, they define the navigable areas in the 3D world.\n"
+"[b]Note:[/b] Most [NavigationServer3D] changes take effect after the next "
+"physics frame and not immediately. This includes all changes made to maps, "
+"regions or agents by navigation-related nodes in the scene tree or made "
+"through scripts.\n"
+"For two regions to be connected to each other, they must share a similar "
+"edge. An edge is considered connected to another if both of its two vertices "
+"are at a distance less than [code]edge_connection_margin[/code] to the "
+"respective other edge's vertex.\n"
+"You may assign navigation layers to regions with [method NavigationServer3D."
+"region_set_navigation_layers], which then can be checked upon when requesting "
+"a path with [method NavigationServer3D.map_get_path]. This can be used to "
+"allow or deny certain areas for some objects.\n"
+"To use the collision avoidance system, you may use agents. You can set an "
+"agent's target velocity, then the servers will emit a callback with a "
+"modified velocity.\n"
+"[b]Note:[/b] The collision avoidance system ignores regions. Using the "
+"modified velocity directly may move an agent outside of the traversable area. "
+"This is a limitation of the collision avoidance system, any more complex "
+"situation may require the use of the physics engine.\n"
+"This server keeps tracks of any call and executes them during the sync phase. "
+"This means that you can request any change to the map, using any thread, "
+"without worrying."
+msgstr ""
+"NavigationServer3D 是处理导航地图、区块、代理的服务器。它不处理来自 [AStar3D] "
+"的 A* 导航。\n"
+"地图分为多个区块,这些区块由导航网格组成。它们共同定义了 3D 世界中的可导航区"
+"域。\n"
+"[b]注意:[/b]大多数 [NavigationServer3D] 的更改都是在下一个物理帧进行的,不会"
+"立即生效。包括所有对地图、区块、代理的更改,无论是通过场景树中导航相关的节点作"
+"出的更改,还是通过脚本作出的更改。\n"
+"两个区块必须共享一条相似的边才能相连。如果一条边的两个顶点与另一条边上相应顶点"
+"的距离都小于 [code]edge_connection_margin[/code],那么就会认为这两条边是相连"
+"的。\n"
+"可以使用 [method NavigationServer3D.region_set_navigation_layers] 为区块分配导"
+"航层,使用 [method NavigationServer3D.map_get_path] 请求路径时会对导航层进行检"
+"查。可用于针对某些对象允许或禁止特定的区域。\n"
+"使用碰撞躲避系统就需要使用代理。你可以为代理设置目标速度,然后服务器就会发出回"
+"调,提供修改后的速度。\n"
+"[b]注意:[/b]碰撞躲避系统会忽略区块。直接使用修改后的速度可能会将代理移动到可"
+"达区域之外。这是碰撞躲避系统的缺陷,更复杂的场合可能需要使用物理引擎。\n"
+"服务器会对所有调用进行跟踪,并在同步阶段执行。这意味着你可以放心地从任何线程请"
+"求对地图作出任何修改。"
+
+msgid ""
"Returns [code]true[/code] if the provided [param agent] has avoidance enabled."
msgstr "如果指定代理 [param agent] 启用了避障,则返回 [code]true[/code]。"
@@ -73486,7 +73193,7 @@ msgid ""
"Corresponds to the [constant NOTIFICATION_ENTER_TREE] notification in [method "
"Object._notification]."
msgstr ""
-"当节点进入 [SceneTree] 时调用(例如实例化时、场景改变时、或者在脚本中调用 "
+"当节点进入 [SceneTree] 时调用(例如实例化时、场景改变时或者在脚本中调用 "
"[method add_child] 后)。如果节点有子节点,则首先调用它的 [method "
"_enter_tree] 回调函数,然后再调用子节点的回调函数。\n"
"对应于 [method Object._notification] 中的 [constant NOTIFICATION_ENTER_TREE] "
@@ -73637,36 +73344,6 @@ msgstr ""
"[method request_ready],它可以在再次添加节点之前的任何地方被调用。"
msgid ""
-"Called when an [InputEventKey] or [InputEventShortcut] hasn't been consumed "
-"by [method _input] or any GUI [Control] item. It is called before [method "
-"_unhandled_key_input] and [method _unhandled_input]. The input event "
-"propagates up through the node tree until a node consumes it.\n"
-"It is only called if shortcut processing is enabled, which is done "
-"automatically if this method is overridden, and can be toggled with [method "
-"set_process_shortcut_input].\n"
-"To consume the input event and stop it propagating further to other nodes, "
-"[method Viewport.set_input_as_handled] can be called.\n"
-"This method can be used to handle shortcuts. For generic GUI events, use "
-"[method _input] instead. Gameplay events should usually be handled with "
-"either [method _unhandled_input] or [method _unhandled_key_input].\n"
-"[b]Note:[/b] This method is only called if the node is present in the scene "
-"tree (i.e. if it's not orphan)."
-msgstr ""
-"当一个 [InputEventKey] 或 [InputEventShortcut],尚未被 [method _input] 或任何 "
-"GUI [Control] 项使用时调用。这是在 [method _unhandled_key_input] 和 [method "
-"_unhandled_input] 之前调用的。输入事件通过节点树向上传播,直到一个节点消耗"
-"它。\n"
-"它仅在启用快捷键处理时调用,如果此方法被覆盖,则会自动调用,并且可以使用 "
-"[method set_process_shortcut_input] 进行开关。\n"
-"要消耗输入事件,并阻止它进一步传播到其他节点,可以调用 [method Viewport."
-"set_input_as_handled]。\n"
-"此方法可用于处理快捷键。如果是常规的 GUI 事件,请改用 [method _input]。游戏事"
-"件通常应该使用 [method _unhandled_input] 或 [method _unhandled_key_input] 处"
-"理。\n"
-"[b]注意:[/b]仅当该节点存在于场景树中(即它不是一个孤立节点)时,此方法才会被"
-"调用。"
-
-msgid ""
"Called when an [InputEvent] hasn't been consumed by [method _input] or any "
"GUI [Control] item. It is called after [method _shortcut_input] and after "
"[method _unhandled_key_input]. The input event propagates up through the node "
@@ -73786,7 +73463,7 @@ msgstr ""
"[param node] 的可读性。如果尚未命名,[param node] 将重命名为它的类型,如果存"
"在 [member name] 相同的兄弟节点,则会添加合适的数字后缀。这个操作很慢。因此,"
"建议将其保留为 [code]false[/code],在这两种情况下会分配包含 [code]@[/code] 的"
-"虚拟名称。\n"
+"虚设名称。\n"
"如果 [param internal] 不同于 [constant INTERNAL_MODE_DISABLED],则该子节点将被"
"添加为内部节点。[method get_children] 等方法会忽略这些节点,除非它们的参数 "
"[code]include_internal[/code] 为 [code]true[/code]。这种功能的设计初衷是对用户"
@@ -73839,7 +73516,7 @@ msgstr ""
"sibling] 的可读性。如果没有命名,[param sibling] 将被重命名为它的类型,如果它"
"与一个同级节点共享 [member name],则添加一个更合适的数字后缀。这个操作很慢。因"
"此,建议将其保留为 [code]false[/code],这会在两种情况下分配一个以 [code]@[/"
-"code] 为特色的虚拟名称。\n"
+"code] 为特色的虚设名称。\n"
"如果不需要将该子节点添加到子列表中特定节点的下方,请使用 [method add_child] 而"
"不是该方法。\n"
"[b]注意:[/b]如果这个节点是内部的,则添加的同级节点也将是内部的(参见 [method "
@@ -73870,28 +73547,6 @@ msgstr ""
"[method is_inside_tree])。"
msgid ""
-"Translates a [param message], using the translation catalogs configured in "
-"the Project Settings. Further [param context] can be specified to help with "
-"the translation.\n"
-"This method works the same as [method Object.tr], with the addition of "
-"respecting the [member auto_translate_mode] state.\n"
-"If [method Object.can_translate_messages] is [code]false[/code], or no "
-"translation is available, this method returns the [param message] without "
-"changes. See [method Object.set_message_translation].\n"
-"For detailed examples, see [url=$DOCS_URL/tutorials/i18n/"
-"internationalizing_games.html]Internationalizing games[/url]."
-msgstr ""
-"使用项目设置中配置的翻译目录,翻译一条 [param message]。可以进一步指定 [param "
-"context] 来帮助翻译。\n"
-"该方法的工作方式与 [method Object.tr] 相同,此外还遵循 [member "
-"auto_translate_mode] 状态。\n"
-"如果 [method Object.can_translate_messages] 为 [code]false[/code],或者没有翻"
-"译可用,则该方法将返回 [param message] 而不做任何更改。请参阅 [method Object."
-"set_message_translation]。\n"
-"有关详细示例,请参阅[url=$DOCS_URL/tutorials/i18n/internationalizing_games."
-"html]《国际化游戏》[/url]。"
-
-msgid ""
"Translates a [param message] or [param plural_message], using the translation "
"catalogs configured in the Project Settings. Further [param context] can be "
"specified to help with the translation.\n"
@@ -73946,6 +73601,41 @@ msgstr ""
"中调用的,那么调用就会变成延迟调用。否则就会直接调用。"
msgid ""
+"Returns [code]true[/code] if the node can receive processing notifications "
+"and input callbacks ([constant NOTIFICATION_PROCESS], [method _input], etc.) "
+"from the [SceneTree] and [Viewport]. The returned value depends on [member "
+"process_mode]:\n"
+"- If set to [constant PROCESS_MODE_PAUSABLE], returns [code]true[/code] when "
+"the game is processing, i.e. [member SceneTree.paused] is [code]false[/"
+"code];\n"
+"- If set to [constant PROCESS_MODE_WHEN_PAUSED], returns [code]true[/code] "
+"when the game is paused, i.e. [member SceneTree.paused] is [code]true[/"
+"code];\n"
+"- If set to [constant PROCESS_MODE_ALWAYS], always returns [code]true[/"
+"code];\n"
+"- If set to [constant PROCESS_MODE_DISABLED], always returns [code]false[/"
+"code];\n"
+"- If set to [constant PROCESS_MODE_INHERIT], use the parent node's [member "
+"process_mode] to determine the result.\n"
+"If the node is not inside the tree, returns [code]false[/code] no matter the "
+"value of [member process_mode]."
+msgstr ""
+"如果节点可以接收 [SceneTree] 和 [Viewport] 的处理通知和输入回调([constant "
+"NOTIFICATION_PROCESS]、[method _input] 等)则返回 [code]true[/code]。返回值取"
+"决于 [member process_mode]:\n"
+"- 如果设为 [constant PROCESS_MODE_PAUSABLE],则会在游戏处理时返回 [code]true[/"
+"code],即 [member SceneTree.paused] 为 [code]false[/code] 的情况;\n"
+"- 如果设为 [constant PROCESS_MODE_WHEN_PAUSED],则会在游戏暂停时返回 "
+"[code]true[/code],即 [member SceneTree.paused] 为 [code]true[/code] 的情"
+"况;\n"
+"- 如果设为 [constant PROCESS_MODE_ALWAYS],则始终返回 [code]true[/code];\n"
+"- 如果设为 [constant PROCESS_MODE_DISABLED],则始终返回 [code]false[/code];\n"
+"- 如果设为 [constant PROCESS_MODE_INHERIT],则会根据父节点的 [member "
+"process_mode] 决定返回值。\n"
+"如果节点不在场景树中,则无论 [member process_mode] 是什么都返回 [code]false[/"
+"code]。"
+
+msgid ""
"Creates a new [Tween] and binds it to this node.\n"
"This is the equivalent of doing:\n"
"[codeblocks]\n"
@@ -74218,79 +73908,6 @@ msgstr ""
"返回这个节点多人游戏控制者的对等体 ID。见 [method set_multiplayer_authority]。"
msgid ""
-"Fetches a node. The [NodePath] can either be a relative path (from this "
-"node), or an absolute path (from the [member SceneTree.root]) to a node. If "
-"[param path] does not point to a valid node, generates an error and returns "
-"[code]null[/code]. Attempts to access methods on the return value will result "
-"in an [i]\"Attempt to call <method> on a null instance.\"[/i] error.\n"
-"[b]Note:[/b] Fetching by absolute path only works when the node is inside the "
-"scene tree (see [method is_inside_tree]).\n"
-"[b]Example:[/b] Assume this method is called from the Character node, inside "
-"the following tree:\n"
-"[codeblock]\n"
-" ┖╴root\n"
-" ┠╴Character (you are here!)\n"
-" ┃ ┠╴Sword\n"
-" ┃ ┖╴Backpack\n"
-" ┃ ┖╴Dagger\n"
-" ┠╴MyGame\n"
-" ┖╴Swamp\n"
-" ┠╴Alligator\n"
-" ┠╴Mosquito\n"
-" ┖╴Goblin\n"
-"[/codeblock]\n"
-"The following calls will return a valid node:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"get_node(\"Sword\")\n"
-"get_node(\"Backpack/Dagger\")\n"
-"get_node(\"../Swamp/Alligator\")\n"
-"get_node(\"/root/MyGame\")\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"GetNode(\"Sword\");\n"
-"GetNode(\"Backpack/Dagger\");\n"
-"GetNode(\"../Swamp/Alligator\");\n"
-"GetNode(\"/root/MyGame\");\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"获取一个节点。[NodePath] 可以是到一个节点的相对路径(从该节点开始)或绝对路径"
-"(从 [member SceneTree.root] 开始)。如果 [param path] 未指向一个有效节点,则"
-"会生成错误并返回 [code]null[/code]。尝试访问返回值上的方法将导致[i]“尝试在一"
-"个 null 实例上调用 <method>。”[/i]错误。\n"
-"[b]注意:[/b]通过绝对路径获取,仅在节点位于场景树内部时有效(参见 [method "
-"is_inside_tree])。\n"
-"[b]示例:[/b]假设从以下树内的 Character 节点调用该方法:\n"
-"[codeblock]\n"
-" ┖╴root\n"
-" ┠╴Character (you are here!)\n"
-" ┃ ┠╴Sword\n"
-" ┃ ┖╴Backpack\n"
-" ┃ ┖╴Dagger\n"
-" ┠╴MyGame\n"
-" ┖╴Swamp\n"
-" ┠╴Alligator\n"
-" ┠╴Mosquito\n"
-" ┖╴Goblin\n"
-"[/codeblock]\n"
-"以下调用将返回一个有效节点:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"get_node(\"Sword\")\n"
-"get_node(\"Backpack/Dagger\")\n"
-"get_node(\"../Swamp/Alligator\")\n"
-"get_node(\"/root/MyGame\")\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"GetNode(\"Sword\");\n"
-"GetNode(\"Backpack/Dagger\");\n"
-"GetNode(\"../Swamp/Alligator\");\n"
-"GetNode(\"/root/MyGame\");\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Fetches a node and its most nested resource as specified by the [NodePath]'s "
"subname. Returns an [Array] of size [code]3[/code] where:\n"
"- Element [code]0[/code] is the [Node], or [code]null[/code] if not found;\n"
@@ -74455,60 +74072,6 @@ msgstr ""
"[code]null[/code]。另见 [method is_inside_tree]。"
msgid ""
-"Returns the tree as a [String]. Used mainly for debugging purposes. This "
-"version displays the path relative to the current node, and is good for copy/"
-"pasting into the [method get_node] function. It also can be used in game UI/"
-"UX.\n"
-"[b]Example output:[/b]\n"
-"[codeblock]\n"
-"TheGame\n"
-"TheGame/Menu\n"
-"TheGame/Menu/Label\n"
-"TheGame/Menu/Camera2D\n"
-"TheGame/SplashScreen\n"
-"TheGame/SplashScreen/Camera2D\n"
-"[/codeblock]"
-msgstr ""
-"将树以 [String] 的形式返回。主要用于调试。这个版本显示相对于当前节点的路径,适"
-"合复制/粘贴到 [method get_node] 函数中。也可以用于游戏中的 UI/UX。\n"
-"[b]示例输出:[/b]\n"
-"[codeblock]\n"
-"TheGame\n"
-"TheGame/Menu\n"
-"TheGame/Menu/Label\n"
-"TheGame/Menu/Camera2D\n"
-"TheGame/SplashScreen\n"
-"TheGame/SplashScreen/Camera2D\n"
-"[/codeblock]"
-
-msgid ""
-"Similar to [method get_tree_string], this returns the tree as a [String]. "
-"This version displays a more graphical representation similar to what is "
-"displayed in the Scene Dock. It is useful for inspecting larger trees.\n"
-"[b]Example output:[/b]\n"
-"[codeblock]\n"
-" ┖╴TheGame\n"
-" ┠╴Menu\n"
-" ┃ ┠╴Label\n"
-" ┃ ┖╴Camera2D\n"
-" ┖╴SplashScreen\n"
-" ┖╴Camera2D\n"
-"[/codeblock]"
-msgstr ""
-"类似于 [method get_tree_string],会将树以 [String] 的形式返回。这个版本使用的"
-"是一种更加图形化的呈现方式,类似于在“场景”面板中显示的内容。非常适合检查较大的"
-"树。\n"
-"[b]输出示例:[/b]\n"
-"[codeblock]\n"
-" ┖╴TheGame\n"
-" ┠╴Menu\n"
-" ┃ ┠╴Label\n"
-" ┃ ┖╴Camera2D\n"
-" ┖╴SplashScreen\n"
-" ┖╴Camera2D\n"
-"[/codeblock]"
-
-msgid ""
"Returns the node's closest [Viewport] ancestor, if the node is inside the "
"tree. Otherwise, returns [code]null[/code]."
msgstr ""
@@ -74688,62 +74251,6 @@ msgstr ""
"作。"
msgid ""
-"Prints the node and its children to the console, recursively. The node does "
-"not have to be inside the tree. This method outputs [NodePath]s relative to "
-"this node, and is good for copy/pasting into [method get_node]. See also "
-"[method print_tree_pretty].\n"
-"[b]Example output:[/b]\n"
-"[codeblock]\n"
-".\n"
-"Menu\n"
-"Menu/Label\n"
-"Menu/Camera2D\n"
-"SplashScreen\n"
-"SplashScreen/Camera2D\n"
-"[/codeblock]"
-msgstr ""
-"将该节点及其子节点打印到标准输出,会进行递归操作。该节点可以不在树中。这个方法"
-"输出的是相对于当前节点的路径,适合复制/粘贴到 [method get_node] 函数中。另见 "
-"[method print_tree_pretty]。\n"
-"[b]示例输出:[/b]\n"
-"[codeblock]\n"
-".\n"
-"Menu\n"
-"Menu/Label\n"
-"Menu/Camera2D\n"
-"SplashScreen\n"
-"SplashScreen/Camera2D\n"
-"[/codeblock]"
-
-msgid ""
-"Prints the node and its children to the console, recursively. The node does "
-"not have to be inside the tree. Similar to [method print_tree], but the "
-"graphical representation looks like what is displayed in the editor's Scene "
-"dock. It is useful for inspecting larger trees.\n"
-"[b]Example output:[/b]\n"
-"[codeblock]\n"
-" ┖╴TheGame\n"
-" ┠╴Menu\n"
-" ┃ ┠╴Label\n"
-" ┃ ┖╴Camera2D\n"
-" ┖╴SplashScreen\n"
-" ┖╴Camera2D\n"
-"[/codeblock]"
-msgstr ""
-"递归地将节点及其子节点打印到控制台。节点不必位于场景树中。类似于 [method "
-"print_tree],但图形表示看起来像编辑器的场景面板中显示的内容。利于检查较大的"
-"树。\n"
-"[b]输出示例:[/b]\n"
-"[codeblock]\n"
-" ┖╴TheGame\n"
-" ┠╴Menu\n"
-" ┃ ┠╴Label\n"
-" ┃ ┖╴Camera2D\n"
-" ┖╴SplashScreen\n"
-" ┖╴Camera2D\n"
-"[/codeblock]"
-
-msgid ""
"Calls the given [param method] name, passing [param args] as arguments, on "
"this node and all of its children, recursively.\n"
"If [param parent_first] is [code]true[/code], the method is called on this "
@@ -74975,7 +74482,7 @@ msgstr ""
"如果 [param recursive] 为 [code]true[/code],则该节点的所有子节点将递归地将给"
"定的对等体设置为控制方。\n"
"[b]警告:[/b]这[b]不会[/b]自动将新的控制方复制给其他对等体。是否这样做由开发者"
-"负责。可以使用 [member MultiplayerSpawner.spawn_function]、RPC、或 "
+"负责。可以使用 [member MultiplayerSpawner.spawn_function]、RPC 或 "
"[MultiplayerSynchronizer] 复制新控制方的信息。此外,父节点的控制方[b]不会[/b]"
"传播给新添加的子节点。"
@@ -75034,6 +74541,16 @@ msgstr ""
"process_mode] 设置为 [constant PROCESS_MODE_DISABLED]。"
msgid ""
+"If set to [code]true[/code], enables input processing.\n"
+"[b]Note:[/b] If [method _input] is overridden, this will be automatically "
+"enabled before [method _ready] is called. Input processing is also already "
+"enabled for GUI controls, such as [Button] and [TextEdit]."
+msgstr ""
+"如果设为 [code]true[/code],则会启用输入处理。\n"
+"[b]注意:[/b]如果覆盖了 [method _input],则会在调用 [method _ready] 前自动启"
+"用。[Button]、[TextEdit] 等 GUI 控件也会自动启用输入处理。"
+
+msgid ""
"If set to [code]true[/code], enables internal processing for this node. "
"Internal processing happens in isolation from the normal [method _process] "
"calls and is used by some nodes internally to guarantee proper functioning "
@@ -75101,16 +74618,6 @@ msgstr ""
"定义要显示的警告消息。"
msgid ""
-"Defines if any text should automatically change to its translated version "
-"depending on the current locale (for nodes such as [Label], [RichTextLabel], "
-"[Window], etc.). See [enum AutoTranslateMode].\n"
-"Also decides if the node's strings should be parsed for POT generation."
-msgstr ""
-"定义任何文本是否应根据当前区域设置自动更改为其翻译版本(对于 [Label]、"
-"[RichTextLabel]、[Window] 等节点)。请参阅 [enum AutoTranslateMode]。\n"
-"还决定节点的字符串是否应被解析以生成 POT。"
-
-msgid ""
"An optional description to the node. It will be displayed as a tooltip when "
"hovering over the node in the editor's Scene dock."
msgstr ""
@@ -75180,17 +74687,61 @@ msgid ""
"value is [i]lower[/i] call their process callbacks first, regardless of tree "
"order."
msgstr ""
-"处理回调([method _process]、[method _physics_process]、和内部处理)的节点执行"
+"处理回调([method _process]、[method _physics_process] 和内部处理)的节点执行"
"顺序。无论树顺序如何,优先级值[i]较低[/i]的节点将先调用其处理回调。"
msgid ""
+"Set the process thread group for this node (basically, whether it receives "
+"[constant NOTIFICATION_PROCESS], [constant NOTIFICATION_PHYSICS_PROCESS], "
+"[method _process] or [method _physics_process] (and the internal versions) on "
+"the main thread or in a sub-thread.\n"
+"By default, the thread group is [constant PROCESS_THREAD_GROUP_INHERIT], "
+"which means that this node belongs to the same thread group as the parent "
+"node. The thread groups means that nodes in a specific thread group will "
+"process together, separate to other thread groups (depending on [member "
+"process_thread_group_order]). If the value is set is [constant "
+"PROCESS_THREAD_GROUP_SUB_THREAD], this thread group will occur on a sub "
+"thread (not the main thread), otherwise if set to [constant "
+"PROCESS_THREAD_GROUP_MAIN_THREAD] it will process on the main thread. If "
+"there is not a parent or grandparent node set to something other than "
+"inherit, the node will belong to the [i]default thread group[/i]. This "
+"default group will process on the main thread and its group order is 0.\n"
+"During processing in a sub-thread, accessing most functions in nodes outside "
+"the thread group is forbidden (and it will result in an error in debug mode). "
+"Use [method Object.call_deferred], [method call_thread_safe], [method "
+"call_deferred_thread_group] and the likes in order to communicate from the "
+"thread groups to the main thread (or to other thread groups).\n"
+"To better understand process thread groups, the idea is that any node set to "
+"any other value than [constant PROCESS_THREAD_GROUP_INHERIT] will include any "
+"child (and grandchild) nodes set to inherit into its process thread group. "
+"This means that the processing of all the nodes in the group will happen "
+"together, at the same time as the node including them."
+msgstr ""
+"设置这个节点的处理线程组(基本上就是在主线程还是子线程中接收 [constant "
+"NOTIFICATION_PROCESS]、[constant NOTIFICATION_PHYSICS_PROCESS]、[method "
+"_process]、[method _physics_process] 以及这些回调的内部版本)。\n"
+"默认情况下线程组为 [constant PROCESS_THREAD_GROUP_INHERIT],表示这个节点所属的"
+"线程组与父节点一致。同一线程组中的节点会一起处理,独立于其他线程组(由 "
+"[member process_thread_group_order] 决定)。如果设为 [constant "
+"PROCESS_THREAD_GROUP_SUB_THREAD],则该线程组会在子线程(非主线程)中执行,而如"
+"果设为 [constant PROCESS_THREAD_GROUP_MAIN_THREAD] 就会在主线程中处理。如果父"
+"节点和先祖节点都没有设置为非继承,则该节点属于[i]默认线程组[/i]。默认分组在主"
+"线程中处理,分组顺序为 0。\n"
+"在子线程中处理时,禁止访问不属于该线程组的节点的大多数函数(调试模式下会报"
+"错)。请使用 [method Object.call_deferred]、[method call_thread_safe]、"
+"[method call_deferred_thread_group] 等方法与主线程(或其他线程组)通信。\n"
+"为了更好地理解线程组,你可以认为非 [constant PROCESS_THREAD_GROUP_INHERIT] 的"
+"节点都会将设为继承的子节点(以及后续子孙节点)纳入它的处理线程组。这样该分组中"
+"的节点就会一起处理,包括包含它们的节点。"
+
+msgid ""
"Change the process thread group order. Groups with a lesser order will "
"process before groups with a greater order. This is useful when a large "
"amount of nodes process in sub thread and, afterwards, another group wants to "
"collect their result in the main thread, as an example."
msgstr ""
"修改处理线程组的顺序。顺序取值较小的分组会在较大的分组前处理。例如,可以让大量"
-"的节点先在子线程中处理,然后另一组节点要在主线程中获取它们的处理结果。"
+"的节点先在子线程中处理,然后再让另一组节点在主线程中获取它们的处理结果。"
msgid ""
"Set whether the current thread group will process messages (calls to [method "
@@ -75398,9 +74949,9 @@ msgstr ""
"请使用 [method Viewport.gui_is_drag_successful] 检查拖放是否成功。"
msgid ""
-"Notification received when the node's [member name] or one of its "
-"ancestors' [member name] is changed. This notification is [i]not[/i] received "
-"when the node is removed from the [SceneTree]."
+"Notification received when the node's [member name] or one of its ancestors' "
+"[member name] is changed. This notification is [i]not[/i] received when the "
+"node is removed from the [SceneTree]."
msgstr ""
"当该节点的 [member name] 或其祖先节点之一的 [member name] 更改时收到的通知。当"
"节点从 [SceneTree] 中移除时,[i]不会[/i]收到该通知。"
@@ -75618,7 +75169,7 @@ msgid ""
"Always process. Keeps processing, ignoring [member SceneTree.paused]. This is "
"the inverse of [constant PROCESS_MODE_DISABLED]."
msgstr ""
-"始终处理。继续处理,忽略 [member SceneTree.paused]。与 [constant "
+"始终处理。忽略 [member SceneTree.paused] 的取值,保持处理。与 [constant "
"PROCESS_MODE_DISABLED] 相反。"
msgid ""
@@ -75629,11 +75180,47 @@ msgstr ""
"PROCESS_MODE_ALWAYS] 相反。"
msgid ""
+"Process this node based on the thread group mode of the first parent (or "
+"grandparent) node that has a thread group mode that is not inherit. See "
+"[member process_thread_group] for more information."
+msgstr ""
+"根据第一个具有非继承线程组模式的父节点(或祖父节点)的线程组模式来处理该节点。"
+"详见 [member process_thread_group]。"
+
+msgid ""
+"Process this node (and child nodes set to inherit) on the main thread. See "
+"[member process_thread_group] for more information."
+msgstr ""
+"在主线程上处理该节点(以及设为继承的子节点)。详见 [member "
+"process_thread_group]。"
+
+msgid ""
+"Process this node (and child nodes set to inherit) on a sub-thread. See "
+"[member process_thread_group] for more information."
+msgstr ""
+"在子线程上处理该节点(以及设为继承的子节点)。详见 [member "
+"process_thread_group]。"
+
+msgid ""
+"Allows this node to process threaded messages created with [method "
+"call_deferred_thread_group] right before [method _process] is called."
+msgstr ""
+"允许该节点在调用 [method _process] 前处理 [method call_deferred_thread_group] "
+"创建的多线程消息。"
+
+msgid ""
+"Allows this node to process threaded messages created with [method "
+"call_deferred_thread_group] right before [method _physics_process] is called."
+msgstr ""
+"允许该节点在调用 [method _physics_process] 前处理 [method "
+"call_deferred_thread_group] 创建的多线程消息。"
+
+msgid ""
"Allows this node to process threaded messages created with [method "
"call_deferred_thread_group] right before either [method _process] or [method "
"_physics_process] are called."
msgstr ""
-"允许该节点在调用 [method _process] 或 [method _physicals_process] 之前,处理使"
+"允许该节点在调用 [method _process] 或 [method _physics_process] 之前,处理使"
"用 [method call_deferred_thread_group] 创建的线程消息。"
msgid "Duplicate the node's signal connections."
@@ -75661,6 +75248,16 @@ msgid "The node will not be internal."
msgstr "该节点不是内部节点。"
msgid ""
+"The node will be placed at the beginning of the parent's children, before any "
+"non-internal sibling."
+msgstr "该节点将被放置在父节点的子节点开头,位于所有非内部兄弟节点之前。"
+
+msgid ""
+"The node will be placed at the end of the parent's children, after any non-"
+"internal sibling."
+msgstr "该节点将被放置在父节点的子节点末尾,位于所有非内部兄弟节点之后。"
+
+msgid ""
"Inherits [member auto_translate_mode] from the node's parent. This is the "
"default for any newly created node."
msgstr ""
@@ -75668,6 +75265,23 @@ msgstr ""
"设置。"
msgid ""
+"Always automatically translate. This is the inverse of [constant "
+"AUTO_TRANSLATE_MODE_DISABLED], and the default for the root node."
+msgstr ""
+"始终自动翻译。和 [constant AUTO_TRANSLATE_MODE_DISABLED] 相反,是根节点的默认"
+"值。"
+
+msgid ""
+"Never automatically translate. This is the inverse of [constant "
+"AUTO_TRANSLATE_MODE_ALWAYS].\n"
+"String parsing for POT generation will be skipped for this node and children "
+"that are set to [constant AUTO_TRANSLATE_MODE_INHERIT]."
+msgstr ""
+"始终不自动翻译。和 [constant AUTO_TRANSLATE_MODE_ALWAYS] 相反。\n"
+"生成 POT 解析字符串时会跳过对该节点,如果子节点为 [constant "
+"AUTO_TRANSLATE_MODE_INHERIT] 则还会跳过子节点。"
+
+msgid ""
"A 2D game object, inherited by all 2D-related nodes. Has a position, "
"rotation, scale, and Z index."
msgstr "2D 游戏对象,被所有 2D 相关的节点继承。具有位置、旋转、缩放和 Z 索引。"
@@ -75704,11 +75318,6 @@ msgid "Adds the [param offset] vector to the node's global position."
msgstr "将偏移向量 [param offset] 添加到该节点的全局位置。"
msgid ""
-"Rotates the node so it points towards the [param point], which is expected to "
-"use global coordinates."
-msgstr "旋转该节点,使其指向 [param point],该点应使用全局坐标。"
-
-msgid ""
"Applies a local translation on the node's X axis based on the [method Node."
"_process]'s [param delta]. If [param scaled] is [code]false[/code], "
"normalizes the movement."
@@ -75870,6 +75479,17 @@ msgid "Returns all the gizmos attached to this [Node3D]."
msgstr "返回附加到该 [Node3D] 的所有小工具。"
msgid ""
+"Returns the parent [Node3D], or [code]null[/code] if no parent exists, the "
+"parent is not of type [Node3D], or [member top_level] is [code]true[/code].\n"
+"[b]Note:[/b] Calling this method is not equivalent to [code]get_parent() as "
+"Node3D[/code], which does not take [member top_level] into account."
+msgstr ""
+"返回 [Node3D] 父节点,如果没有父节点、父节点不是 [Node3D] 类型或 [member "
+"top_level] 为 [code]true[/code],则返回 [code]null[/code]。\n"
+"[b]注意:[/b]调用这个方法并不等价于 [code]get_parent() as Node3D[/code],后者"
+"不会考虑 [member top_level]。"
+
+msgid ""
"Returns the current [World3D] resource this [Node3D] node is registered to."
msgstr "返回此 [Node3D] 节点所注册的当前 [World3D] 资源。"
@@ -76061,6 +75681,11 @@ msgid "Updates all the [Node3D] gizmos attached to this node."
msgstr "更新附加于该节点的所有 [Node3D] 小工具。"
msgid ""
+"Basis of the [member transform] property. Represents the rotation, scale, and "
+"shear of this node."
+msgstr "[member transform] 属性的基。代表该节点的旋转、缩放、切变。"
+
+msgid ""
"Global basis of this node. This is equivalent to [code]global_transform."
"basis[/code]."
msgstr "这个节点的全局基。与 [code]global_transform.basis[/code] 等价。"
@@ -76256,8 +75881,96 @@ msgstr ""
msgid "A pre-parsed scene tree path."
msgstr "预先解析的场景树路径。"
-msgid "2D Role Playing Game Demo"
-msgstr "2D 角色扮演游戏演示"
+msgid ""
+"The [NodePath] built-in [Variant] type represents a path to a node or "
+"property in a hierarchy of nodes. It is designed to be efficiently passed "
+"into many built-in methods (such as [method Node.get_node], [method Object."
+"set_indexed], [method Tween.tween_property], etc.) without a hard dependence "
+"on the node or property they point to.\n"
+"A node path is represented as a [String] composed of slash-separated ([code]/"
+"[/code]) node names and colon-separated ([code]:[/code]) property names (also "
+"called \"subnames\"). Similar to a filesystem path, [code]\"..\"[/code] and "
+"[code]\".\"[/code] are special node names. They refer to the parent node and "
+"the current node, respectively.\n"
+"The following examples are paths relative to the current node:\n"
+"[codeblock]\n"
+"^\"A\" # Points to the direct child A.\n"
+"^\"A/B\" # Points to A's child B.\n"
+"^\".\" # Points to the current node.\n"
+"^\"..\" # Points to the parent node.\n"
+"^\"../C\" # Points to the sibling node C.\n"
+"^\"../..\" # Points to the grandparent node.\n"
+"[/codeblock]\n"
+"A leading slash means the path is absolute, and begins from the [SceneTree]:\n"
+"[codeblock]\n"
+"^\"/root\" # Points to the SceneTree's root Window.\n"
+"^\"/root/Title\" # May point to the main scene's root node named "
+"\"Title\".\n"
+"^\"/root/Global\" # May point to an autoloaded node or scene named "
+"\"Global\".\n"
+"[/codeblock]\n"
+"Despite their name, node paths may also point to a property:\n"
+"[codeblock]\n"
+"^\"position\" # Points to this object's position.\n"
+"^\"position:x\" # Points to this object's position in the x axis.\n"
+"^\"Camera3D:rotation:y\" # Points to the child Camera3D and its y rotation.\n"
+"^\"/root:size:x\" # Points to the root Window and its width.\n"
+"[/codeblock]\n"
+"Node paths cannot check whether they are valid and may point to nodes or "
+"properties that do not exist. Their meaning depends entirely on the context "
+"in which they're used.\n"
+"You usually do not have to worry about the [NodePath] type, as strings are "
+"automatically converted to the type when necessary. There are still times "
+"when defining node paths is useful. For example, exported [NodePath] "
+"properties allow you to easily select any node within the currently edited "
+"scene. They are also automatically updated when moving, renaming or deleting "
+"nodes in the scene tree editor. See also [annotation @GDScript."
+"@export_node_path].\n"
+"See also [StringName], which is a similar type designed for optimised "
+"strings.\n"
+"[b]Note:[/b] In a boolean context, a [NodePath] will evaluate to [code]false[/"
+"code] if it is empty ([code]NodePath(\"\")[/code]). Otherwise, a [NodePath] "
+"will always evaluate to [code]true[/code]."
+msgstr ""
+"[NodePath] 即“节点路径”,是一种内置的 [Variant] 类型,代表节点层次结构中指向某"
+"个节点或属性的路径。可以用来将路径高效地传递给许多内置方法(例如 [method Node."
+"get_node]、[method Object.set_indexed]、[method Tween.tween_property] 等),实"
+"现与被指向的节点或属性的解耦。\n"
+"节点的路径可以用 [String] 来表示,其中包含了由斜杠([code]/[/code])分隔的节点"
+"名称以及由英文冒号([code]:[/code])分隔的属性名称(也叫“子名称”)。与文件系统"
+"路径类似,[code]\"..\"[/code] 和 [code]\".\"[/code] 都是特殊的节点名称,分别指"
+"向父节点和当前节点。\n"
+"以下示例都是相对于当前节点的路径:\n"
+"[codeblock]\n"
+"^\"A\" # 指向直接子节点 A。\n"
+"^\"A/B\" # 指向 A 的子节点 B。\n"
+"^\".\" # 指向当前节点。\n"
+"^\"..\" # 指向父节点。\n"
+"^\"../C\" # 指向兄弟节点 C。\n"
+"^\"../..\" # 指向祖父节点。\n"
+"[/codeblock]\n"
+"以斜杠开头的路径是绝对路径,路径从 [SceneTree] 开始:\n"
+"[codeblock]\n"
+"^\"/root\" # 指向 SceneTree 的根 Window。\n"
+"^\"/root/Title\" # 可能指向主场景的根节点,名叫“Title”。\n"
+"^\"/root/Global\" # 可能指向名叫“Global”的自动加载节点或场景。\n"
+"[/codeblock]\n"
+"虽然名字里说的是“节点”,但是节点路径也可以指向属性:\n"
+"[codeblock]\n"
+"^\"position\" # 指向该对象的位置。\n"
+"^\"position:x\" # 指向该对象在 X 轴的位置。\n"
+"^\"Camera3D:rotation:y\" # 指向 Camera3D 子节点及其 Y 轴旋转。\n"
+"^\"/root:size:x\" # 指向根 Window 及其宽度。\n"
+"[/codeblock]\n"
+"节点路径无法检查自身的有效性,可能指向不存在的节点或属性。具体含义完全由使用场"
+"合决定。\n"
+"通常无需关心 [NodePath] 类型,字符串会在必要时自动转换为这个类型。但在某些情况"
+"下也会需要定义节点路径。例如利用导出的 [NodePath] 属性可以很方便地在当前编辑的"
+"场景中选择节点。场景树编辑器中节点发生移动、重命名、删除时,节点路径也会自动更"
+"新。另见 [annotation @GDScript.@export_node_path]。\n"
+"另见 [StringName],这是一种针对字符串优化的相似的类型。\n"
+"[b]注意:[/b]在布尔环境中,[NodePath] 为空时取值为 [code]false[/code]"
+"([code]NodePath(\"\")[/code])。否则 [NodePath] 始终为 [code]true[/code]。"
msgid "Constructs an empty [NodePath]."
msgstr "构造空的 [NodePath]。"
@@ -76521,6 +76234,29 @@ msgstr ""
"如果节点路径是从空的 [String]([code]\"\"[/code])构造的,则返回 [code]true[/"
"code]。"
+msgid ""
+"Returns the slice of the [NodePath], from [param begin] (inclusive) to [param "
+"end] (exclusive), as a new [NodePath].\n"
+"The absolute value of [param begin] and [param end] will be clamped to the "
+"sum of [method get_name_count] and [method get_subname_count], so the default "
+"value for [param end] makes it slice to the end of the [NodePath] by default "
+"(i.e. [code]path.slice(1)[/code] is a shorthand for [code]path.slice(1, path."
+"get_name_count() + path.get_subname_count())[/code]).\n"
+"If either [param begin] or [param end] are negative, they will be relative to "
+"the end of the [NodePath] (i.e. [code]path.slice(0, -2)[/code] is a shorthand "
+"for [code]path.slice(0, path.get_name_count() + path.get_subname_count() - 2)"
+"[/code])."
+msgstr ""
+"返回该 [NodePath] 的切片,是从 [param begin](含)到 [param end](不含)的全"
+"新 [NodePath]。\n"
+"[param begin] 和 [param end] 的绝对值将被限制为 [method get_name_count] 和 "
+"[method get_subname_count] 的总和,因此 [param end] 的默认值默认会使其切片到 "
+"[NodePath] 的末尾(即 [code]path.slice(1)[/code] 是 [code]path.slice(1, path."
+"get_name_count() + path.get_subname_count())[/code] 的简写)。\n"
+"如果 [param begin] 或 [param end] 为负,则表示相对于 [NodePath] 的末尾(即 "
+"[code]path.slice(0, -2)[/code] 是 [code]path.slice(0, path.get_name_count() + "
+"path.get_subname_count() - 2)[/code] 的简写)。"
+
msgid "Returns [code]true[/code] if two node paths are not equal."
msgstr "如果两个节点路径不相等,则返回 [code]true[/code]。"
@@ -77305,6 +77041,19 @@ msgstr ""
msgid ""
"Override this method to customize the given [param property]'s revert "
+"behavior. Should return [code]true[/code] if the [param property] has a "
+"custom default value and is revertible in the Inspector dock. Use [method "
+"_property_get_revert] to specify the [param property]'s default value.\n"
+"[b]Note:[/b] This method must return consistently, regardless of the current "
+"value of the [param property]."
+msgstr ""
+"覆盖该方法以自定义给定 [param property] 的恢复行为。如果 [param property] 具有"
+"自定义默认值并且可在检查器面板中恢复,则应返回 [code]true[/code]。使用 "
+"[method _property_get_revert] 来指定 [param property] 的默认值。\n"
+"[b]注意:[/b]无论 [param property] 的当前值如何,该方法都必须始终如一地返回。"
+
+msgid ""
+"Override this method to customize the given [param property]'s revert "
"behavior. Should return the default value for the [param property]. If the "
"default value differs from the [param property]'s current value, a revert "
"icon is displayed in the Inspector dock.\n"
@@ -77559,62 +77308,6 @@ msgstr ""
"[/codeblocks]"
msgid ""
-"Adds a user-defined [param signal]. Optional arguments for the signal can be "
-"added as an [Array] of dictionaries, each defining a [code]name[/code] "
-"[String] and a [code]type[/code] [int] (see [enum Variant.Type]). See also "
-"[method has_user_signal].\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"add_user_signal(\"hurt\", [\n"
-" { \"name\": \"damage\", \"type\": TYPE_INT },\n"
-" { \"name\": \"source\", \"type\": TYPE_OBJECT }\n"
-"])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"AddUserSignal(\"Hurt\", new Godot.Collections.Array()\n"
-"{\n"
-" new Godot.Collections.Dictionary()\n"
-" {\n"
-" { \"name\", \"damage\" },\n"
-" { \"type\", (int)Variant.Type.Int }\n"
-" },\n"
-" new Godot.Collections.Dictionary()\n"
-" {\n"
-" { \"name\", \"source\" },\n"
-" { \"type\", (int)Variant.Type.Object }\n"
-" }\n"
-"});\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"添加用户定义的信号 [param signal]。信号的参数是可选的,以字典的 [Array] 形式添"
-"加,字典中定义名称 [code]name[/code] [String],类型 [code]type[/code] [int]"
-"(见 [enum Variant.Type])。另见 [method has_user_signal]。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"add_user_signal(\"hurt\", [\n"
-" { \"name\": \"damage\", \"type\": TYPE_INT },\n"
-" { \"name\": \"source\", \"type\": TYPE_OBJECT }\n"
-"])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"AddUserSignal(\"Hurt\", new Godot.Collections.Array()\n"
-"{\n"
-" new Godot.Collections.Dictionary()\n"
-" {\n"
-" { \"name\", \"damage\" },\n"
-" { \"type\", (int)Variant.Type.Int }\n"
-" },\n"
-" new Godot.Collections.Dictionary()\n"
-" {\n"
-" { \"name\", \"source\" },\n"
-" { \"type\", (int)Variant.Type.Object }\n"
-" }\n"
-"});\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Calls the [param method] on the object and returns the result. This method "
"supports a variable number of arguments, so parameters can be passed as a "
"comma separated list.\n"
@@ -77650,6 +77343,80 @@ msgstr ""
"调用时分配新的 [StringName]。"
msgid ""
+"Calls the [param method] on the object during idle time. Always returns null, "
+"[b]not[/b] the method's result.\n"
+"Idle time happens mainly at the end of process and physics frames. In it, "
+"deferred calls will be run until there are none left, which means you can "
+"defer calls from other deferred calls and they'll still be run in the current "
+"idle time cycle. This means you should not call a method deferred from itself "
+"(or from a method called by it), as this causes infinite recursion the same "
+"way as if you had called the method directly.\n"
+"This method supports a variable number of arguments, so parameters can be "
+"passed as a comma separated list.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var node = Node3D.new()\n"
+"node.call_deferred(\"rotate\", Vector3(1.0, 0.0, 0.0), 1.571)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var node = new Node3D();\n"
+"node.CallDeferred(Node3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), "
+"1.571f);\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"See also [method Callable.call_deferred].\n"
+"[b]Note:[/b] In C#, [param method] must be in snake_case when referring to "
+"built-in Godot methods. Prefer using the names exposed in the "
+"[code]MethodName[/code] class to avoid allocating a new [StringName] on each "
+"call.\n"
+"[b]Note:[/b] If you're looking to delay the function call by a frame, refer "
+"to the [signal SceneTree.process_frame] and [signal SceneTree.physics_frame] "
+"signals.\n"
+"[codeblock]\n"
+"var node = Node3D.new()\n"
+"# Make a Callable and bind the arguments to the node's rotate() call.\n"
+"var callable = node.rotate.bind(Vector3(1.0, 0.0, 0.0), 1.571)\n"
+"# Connect the callable to the process_frame signal, so it gets called in the "
+"next process frame.\n"
+"# CONNECT_ONE_SHOT makes sure it only gets called once instead of every "
+"frame.\n"
+"get_tree().process_frame.connect(callable, CONNECT_ONE_SHOT)\n"
+"[/codeblock]"
+msgstr ""
+"在空闲时调用该对象的 [param method] 方法。始终返回 null,[b]不返回[/b]该方法的"
+"结果。\n"
+"空闲时间主要出现在处理帧和物理帧的末尾。延迟的调用会在此时执行,直到没有调用剩"
+"余为止,这意味着你可以从其他延迟的调用中延迟调用,并且它们仍将在当前空闲时间周"
+"期中运行。这意味着你不应从延迟调用的方法(或从其调用的方法)中延迟调用其自身,"
+"因为这会导致无限递归,就像你直接调用该方法一样。\n"
+"这个方法支持可变数量的参数,所以参数可以用逗号分隔列表的形式传递。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var node = Node3D.new()\n"
+"node.call_deferred(\"rotate\", Vector3(1.0, 0.0, 0.0), 1.571)\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var node = new Node3D();\n"
+"node.CallDeferred(Node3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), "
+"1.571f);\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"另见 [method Callable.call_deferred]。\n"
+"[b]注意:[/b]在 C# 中,[param method] 引用内置的 Godot 方法时必须使用 "
+"snake_case 的形式。请优先使用 [code]MethodName[/code] 类中暴露的名称,避免每次"
+"调用都分配一个新的 [StringName]。\n"
+"[b]注意:[/b]如果你想要延迟一帧再调用函数,请使用 [signal SceneTree."
+"process_frame] 和 [signal SceneTree.physics_frame] 信号。\n"
+"[codeblock]\n"
+"var node = Node3D.new()\n"
+"# 制作可调用体并将参数绑定到该节点的 rotate() 调用。\n"
+"var callable = node.rotate.bind(Vector3(1.0, 0.0, 0.0), 1.571)\n"
+"# 将可调用体连接到 process_frame 信号,这样就能够在下一个处理帧中调用。\n"
+"# CONNECT_ONE_SHOT 能够确保只调用一次,不会每帧都调用。\n"
+"get_tree().process_frame.connect(callable, CONNECT_ONE_SHOT)\n"
+"[/codeblock]"
+
+msgid ""
"Calls the [param method] on the object and returns the result. Unlike [method "
"call], this method expects all parameters to be contained inside [param "
"arg_array].\n"
@@ -77704,337 +77471,6 @@ msgstr ""
"对象。"
msgid ""
-"Connects a [param signal] by name to a [param callable]. Optional [param "
-"flags] can be also added to configure the connection's behavior (see [enum "
-"ConnectFlags] constants).\n"
-"A signal can only be connected once to the same [Callable]. If the signal is "
-"already connected, this method returns [constant ERR_INVALID_PARAMETER] and "
-"pushes an error message, unless the signal is connected with [constant "
-"CONNECT_REFERENCE_COUNTED]. To prevent this, use [method is_connected] first "
-"to check for existing connections.\n"
-"If the [param callable]'s object is freed, the connection will be lost.\n"
-"[b]Examples with recommended syntax:[/b]\n"
-"Connecting signals is one of the most common operations in Godot and the API "
-"gives many options to do so, which are described further down. The code block "
-"below shows the recommended approach.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" var button = Button.new()\n"
-" # `button_down` here is a Signal variant type, and we thus call the "
-"Signal.connect() method, not Object.connect().\n"
-" # See discussion below for a more in-depth overview of the API.\n"
-" button.button_down.connect(_on_button_down)\n"
-"\n"
-" # This assumes that a `Player` class exists, which defines a `hit` "
-"signal.\n"
-" var player = Player.new()\n"
-" # We use Signal.connect() again, and we also use the Callable.bind() "
-"method,\n"
-" # which returns a new Callable with the parameter binds.\n"
-" player.hit.connect(_on_player_hit.bind(\"sword\", 100))\n"
-"\n"
-"func _on_button_down():\n"
-" print(\"Button down!\")\n"
-"\n"
-"func _on_player_hit(weapon_type, damage):\n"
-" print(\"Hit with weapon %s for %d damage.\" % [weapon_type, damage])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" var button = new Button();\n"
-" // C# supports passing signals as events, so we can use this idiomatic "
-"construct:\n"
-" button.ButtonDown += OnButtonDown;\n"
-"\n"
-" // This assumes that a `Player` class exists, which defines a `Hit` "
-"signal.\n"
-" var player = new Player();\n"
-" // We can use lambdas when we need to bind additional parameters.\n"
-" player.Hit += () => OnPlayerHit(\"sword\", 100);\n"
-"}\n"
-"\n"
-"private void OnButtonDown()\n"
-"{\n"
-" GD.Print(\"Button down!\");\n"
-"}\n"
-"\n"
-"private void OnPlayerHit(string weaponType, int damage)\n"
-"{\n"
-" GD.Print($\"Hit with weapon {weaponType} for {damage} damage.\");\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b][code skip-lint]Object.connect()[/code] or [code skip-lint]Signal.connect()"
-"[/code]?[/b]\n"
-"As seen above, the recommended method to connect signals is not [method "
-"Object.connect]. The code block below shows the four options for connecting "
-"signals, using either this legacy method or the recommended [method Signal."
-"connect], and using either an implicit [Callable] or a manually defined one.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" var button = Button.new()\n"
-" # Option 1: Object.connect() with an implicit Callable for the defined "
-"function.\n"
-" button.connect(\"button_down\", _on_button_down)\n"
-" # Option 2: Object.connect() with a constructed Callable using a target "
-"object and method name.\n"
-" button.connect(\"button_down\", Callable(self, \"_on_button_down\"))\n"
-" # Option 3: Signal.connect() with an implicit Callable for the defined "
-"function.\n"
-" button.button_down.connect(_on_button_down)\n"
-" # Option 4: Signal.connect() with a constructed Callable using a target "
-"object and method name.\n"
-" button.button_down.connect(Callable(self, \"_on_button_down\"))\n"
-"\n"
-"func _on_button_down():\n"
-" print(\"Button down!\")\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" var button = new Button();\n"
-" // Option 1: In C#, we can use signals as events and connect with this "
-"idiomatic syntax:\n"
-" button.ButtonDown += OnButtonDown;\n"
-" // Option 2: GodotObject.Connect() with a constructed Callable from a "
-"method group.\n"
-" button.Connect(Button.SignalName.ButtonDown, Callable."
-"From(OnButtonDown));\n"
-" // Option 3: GodotObject.Connect() with a constructed Callable using a "
-"target object and method name.\n"
-" button.Connect(Button.SignalName.ButtonDown, new Callable(this, "
-"MethodName.OnButtonDown));\n"
-"}\n"
-"\n"
-"private void OnButtonDown()\n"
-"{\n"
-" GD.Print(\"Button down!\");\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"While all options have the same outcome ([code]button[/code]'s [signal "
-"BaseButton.button_down] signal will be connected to [code]_on_button_down[/"
-"code]), [b]option 3[/b] offers the best validation: it will print a compile-"
-"time error if either the [code]button_down[/code] [Signal] or the "
-"[code]_on_button_down[/code] [Callable] are not defined. On the other hand, "
-"[b]option 2[/b] only relies on string names and will only be able to validate "
-"either names at runtime: it will print a runtime error if "
-"[code]\"button_down\"[/code] doesn't correspond to a signal, or if "
-"[code]\"_on_button_down\"[/code] is not a registered method in the object "
-"[code]self[/code]. The main reason for using options 1, 2, or 4 would be if "
-"you actually need to use strings (e.g. to connect signals programmatically "
-"based on strings read from a configuration file). Otherwise, option 3 is the "
-"recommended (and fastest) method.\n"
-"[b]Binding and passing parameters:[/b]\n"
-"The syntax to bind parameters is through [method Callable.bind], which "
-"returns a copy of the [Callable] with its parameters bound.\n"
-"When calling [method emit_signal], the signal parameters can be also passed. "
-"The examples below show the relationship between these signal parameters and "
-"bound parameters.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" # This assumes that a `Player` class exists, which defines a `hit` "
-"signal.\n"
-" var player = Player.new()\n"
-" # Using Callable.bind().\n"
-" player.hit.connect(_on_player_hit.bind(\"sword\", 100))\n"
-"\n"
-" # Parameters added when emitting the signal are passed first.\n"
-" player.emit_signal(\"hit\", \"Dark lord\", 5)\n"
-"\n"
-"# We pass two arguments when emitting (`hit_by`, `level`),\n"
-"# and bind two more arguments when connecting (`weapon_type`, `damage`).\n"
-"func _on_player_hit(hit_by, level, weapon_type, damage):\n"
-" print(\"Hit by %s (level %d) with weapon %s for %d damage.\" % [hit_by, "
-"level, weapon_type, damage])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" // This assumes that a `Player` class exists, which defines a `Hit` "
-"signal.\n"
-" var player = new Player();\n"
-" // Using lambda expressions that create a closure that captures the "
-"additional parameters.\n"
-" // The lambda only receives the parameters defined by the signal's "
-"delegate.\n"
-" player.Hit += (hitBy, level) => OnPlayerHit(hitBy, level, \"sword\", "
-"100);\n"
-"\n"
-" // Parameters added when emitting the signal are passed first.\n"
-" player.EmitSignal(SignalName.Hit, \"Dark lord\", 5);\n"
-"}\n"
-"\n"
-"// We pass two arguments when emitting (`hit_by`, `level`),\n"
-"// and bind two more arguments when connecting (`weapon_type`, `damage`).\n"
-"private void OnPlayerHit(string hitBy, int level, string weaponType, int "
-"damage)\n"
-"{\n"
-" GD.Print($\"Hit by {hitBy} (level {level}) with weapon {weaponType} for "
-"{damage} damage.\");\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"按名称将 [param signal] 连接到 [param callable]。还可以添加可选的 [param "
-"flags] 来配置该连接的行为(请参阅 [enum ConnectFlags] 常量)。\n"
-"一个信号只能连接到同一个 [Callable] 一次。如果该信号已经连接,除非该信号是使"
-"用 [constant CONNECT_REFERENCE_COUNTED] 连接的,否则该方法会返回 [constant "
-"ERR_INVALID_PARAMETER] 并推送一条错误消息。为防止这种情况,请首先使用 [method "
-"is_connected] 检查已存在的连接。\n"
-"如果 [param callable] 的对象被释放,则该连接将会丢失。\n"
-"[b]推荐语法的示例:[/b]\n"
-"连接信号是 Godot 中最常见的操作之一,API 提供了许多这样做的选项,这些选项将在"
-"下面进一步介绍。下面的代码块显示了推荐的方法。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" var button = Button.new()\n"
-" # 这里的 `button_down` 是一个 Signal 变体类型,因此我们调用 Signal."
-"connect() 方法,而不是 Object.connect()。\n"
-" # 请参阅下面的讨论以更深入地了解该 API。\n"
-" button.button_down.connect(_on_button_down)\n"
-"\n"
-" # 这假设存在一个“Player”类,它定义了一个“hit”信号。\n"
-" var player = Player.new()\n"
-" # 我们再次使用 Signal.connect() ,并且我们还使用了 Callable.bind() 方"
-"法,\n"
-" # 它返回一个带有参数绑定的新 Callable。\n"
-" player.hit.connect(_on_player_hit.bind(\"剑\", 100))\n"
-"\n"
-"func _on_button_down():\n"
-" print(\"按钮按下!\")\n"
-"\n"
-"func _on_player_hit(weapon_type, damage):\n"
-" print(\"用武器 %s 击中,造成 %d 伤害。\" % [weapon_type, damage])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" var button = new Button();\n"
-" // C# 支持将信号作为事件传递,因此我们可以使用这个惯用的构造:\n"
-" button.ButtonDown += OnButtonDown;\n"
-"\n"
-" // 这假设存在一个“Player”类,它定义了一个“Hit”信号。\n"
-" var player = new Player();\n"
-" // 当我们需要绑定额外的参数时,我们可以使用 Lambda 表达式。\n"
-" player.Hit += () => OnPlayerHit(\"剑\", 100);\n"
-"}\n"
-"\n"
-"private void OnButtonDown()\n"
-"{\n"
-" GD.Print(\"按钮按下!\");\n"
-"}\n"
-"\n"
-"private void OnPlayerHit(string weaponType, int damage)\n"
-"{\n"
-" GD.Print($\"用武器 {weaponType} 击中,造成 {damage} 伤害。\");\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b][code skip-lint]Object.connect()[/code] 还是 [code skip-lint]Signal."
-"connect()[/code]?[/b]\n"
-"如上所示,推荐的连接信号的方法不是 [method Object.connect]。下面的代码块显示了"
-"连接信号的四个选项,使用该传统方法或推荐的 [method Signal.connect],并使用一个"
-"隐式的 [Callable] 或手动定义的 [Callable]。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" var button = Button.new()\n"
-" # 选项 1:Object.connect() 并使用已定义的函数的隐式 Callable。\n"
-" button.connect(\"button_down\", _on_button_down)\n"
-" # 选项 2:Object.connect() 并使用由目标对象和方法名称构造的 Callable。\n"
-" button.connect(\"button_down\", Callable(self, \"_on_button_down\"))\n"
-" # 选项 3:Signal.connect() 并使用已定义的函数的隐式 Callable。\n"
-" button.button_down.connect(_on_button_down)\n"
-" # 选项 4:Signal.connect() 并使用由目标对象和方法名称构造的 Callable。\n"
-" button.button_down.connect(Callable(self, \"_on_button_down\"))\n"
-"\n"
-"func _on_button_down():\n"
-" print(\"按钮按下!\")\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" var button = new Button();\n"
-" // 选项 1:在 C# 中,我们可以将信号用作事件并使用以下惯用语法进行连接:\n"
-" button.ButtonDown += OnButtonDown;\n"
-" // 选项 2:GodotObject.Connect() 并使用从方法组构造的 Callable。\n"
-" button.Connect(Button.SignalName.ButtonDown, Callable."
-"From(OnButtonDown));\n"
-" // 选项 3:GodotObject.Connect() 并使用由目标对象和方法名称构造的 "
-"Callable。\n"
-" button.Connect(Button.SignalName.ButtonDown, new Callable(this, "
-"MethodName.OnButtonDown));\n"
-"}\n"
-"\n"
-"private void OnButtonDown()\n"
-"{\n"
-" GD.Print(\"按钮按下!\");\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"虽然所有选项都有相同的结果([code]button[/code] 的 [signal BaseButton."
-"button_down] 信号将被连接到 [code]_on_button_down[/code]),但[b]选项 3[/b] 提"
-"供了最好的验证:如果 [code]button_down[/code] [Signal] 或 "
-"[code]_on_button_down[/code] [Callable] 没有被定义,它将打印一个编译时错误。另"
-"一方面,[b]选项 2[/b] 只依赖于字符串名称,并且只能在运行时验证这两个名称:如"
-"果 [code]\"button_down\"[/code] 不对应于一个信号,或者如果 "
-"[code]\"_on_button_down\"[/code] 不是对象 [code]self[/code] 中的注册方法,它将"
-"打印一个运行时错误。使用选项 1、2 或 4 的主要原因,是你是否确实需要使用字符串"
-"(例如,根据从配置文件读取的字符串,以编程的方式连接信号)。否则,选项 3 是推"
-"荐的(也是最快的)方法。\n"
-"[b]绑定和传递参数:[/b]\n"
-"绑定参数的语法是通过 [method Callable.bind],它返回一个绑定了参数的 "
-"[Callable] 的副本。\n"
-"当调用 [method emit_signal] 时,信号参数也可以被传递。下面的示例显示了这些信号"
-"参数和绑定参数之间的关系。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" # 这假设存在一个 `Player` 类,它定义了一个 `hit` 信号。\n"
-" var player = Player.new()\n"
-" # 使用 Callable.bind()。\n"
-" player.hit.connect(_on_player_hit.bind(\"剑\", 100))\n"
-"\n"
-" # 发出信号时添加的参数首先被传递。\n"
-" player.emit_signal(\"hit\", \"黑暗领主\", 5)\n"
-"\n"
-"# 我们在发出时传递两个参数(`hit_by`,`level`),\n"
-"# 并在连接时再绑定两个参数(`weapon_type`、`damage`)。\n"
-"func _on_player_hit(hit_by, level, weapon_type, damage):\n"
-" print(\"被 %s(等级 %d)用武器 %s 击中,造成 %d 伤害。\" % [hit_by, "
-"level, weapon_type, damage])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" // 这假设存在一个 `Player` 类,它定义了一个 `Hit` 信号。\n"
-" var player = new Player();\n"
-" // 使用 lambda 表达式创建一个闭包来捕获额外的参数。\n"
-" // lambda 仅接收由信号委托定义的参数。\n"
-" player.Hit += (hitBy, level) => OnPlayerHit(hitBy, level, \"剑\", 100);\n"
-"\n"
-" // 发出信号时添加的参数首先被传递。\n"
-" player.EmitSignal(SignalName.Hit, \"黑暗领主\", 5);\n"
-"}\n"
-"\n"
-"// 我们在发出时传递两个参数(`hit_by`,`level`),\n"
-"// 并在连接时再绑定两个参数(`weapon_type`、`damage`)。\n"
-"private void OnPlayerHit(string hitBy, int level, string weaponType, int "
-"damage)\n"
-"{\n"
-" GD.Print($\"被 {hitBy}(等级 {level})用武器 {weaponType} 击中,造成 "
-"{damage} 伤害。\");\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Disconnects a [param signal] by name from a given [param callable]. If the "
"connection does not exist, generates an error. Use [method is_connected] to "
"make sure that the connection exists."
@@ -78094,44 +77530,6 @@ msgstr ""
"用时将返回 [code]false[/code]。"
msgid ""
-"Returns the [Variant] value of the given [param property]. If the [param "
-"property] does not exist, this method returns [code]null[/code].\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var node = Node2D.new()\n"
-"node.rotation = 1.5\n"
-"var a = node.get(\"rotation\") # a is 1.5\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var node = new Node2D();\n"
-"node.Rotation = 1.5f;\n"
-"var a = node.Get(\"rotation\"); // a is 1.5\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Note:[/b] In C#, [param property] must be in snake_case when referring to "
-"built-in Godot properties. Prefer using the names exposed in the "
-"[code]PropertyName[/code] class to avoid allocating a new [StringName] on "
-"each call."
-msgstr ""
-"返回给定 [param property] 的 [Variant] 值。如果 [param property] 不存在,则该"
-"方法返回 [code]null[/code]。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var node = Node2D.new()\n"
-"node.rotation = 1.5\n"
-"var a = node.get(\"rotation\") # a 为 1.5\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var node = new Node2D();\n"
-"node.Rotation = 1.5f;\n"
-"var a = node.Get(\"rotation\"); // a 为 1.5\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]在 C# 中,在引用 Godot 内置属性时,[param property] 必须是 "
-"snake_case。最好使用 [code]PropertyName[/code] 类中公开的名称,以避免在每次调"
-"用时分配一个新的 [StringName]。"
-
-msgid ""
"Returns the object's built-in class name, as a [String]. See also [method "
"is_class].\n"
"[b]Note:[/b] This method ignores [code]class_name[/code] declarations. If "
@@ -78366,13 +77764,6 @@ msgstr ""
"新分配一个 [StringName]。"
msgid ""
-"Returns [code]true[/code] if the given user-defined [param signal] name "
-"exists. Only signals added with [method add_user_signal] are included."
-msgstr ""
-"如果存在给定的用户定义信号名称 [param signal],则返回 [code]true[/code]。仅包"
-"含通过 [method add_user_signal] 添加的信号。"
-
-msgid ""
"Returns [code]true[/code] if the object is blocking its signals from being "
"emitted. See [method set_block_signals]."
msgstr ""
@@ -78540,7 +77931,7 @@ msgid ""
"this method."
msgstr ""
"从对象的元数据中移除名称为 [param name] 的条目。另请参阅 [method has_meta]、"
-"[method get_meta]、和 [method set_meta]。\n"
+"[method get_meta] 和 [method set_meta]。\n"
"[b]注意:[/b]元数据的名称必须是符合 [method StringName.is_valid_identifier] 的"
"有效标识符。\n"
"[b]注意:[/b]名称以下划线([code]_[/code])开头的元数据仅供编辑器使用。仅供编"
@@ -78548,44 +77939,6 @@ msgstr ""
"行编辑。"
msgid ""
-"Assigns [param value] to the given [param property]. If the property does not "
-"exist or the given [param value]'s type doesn't match, nothing happens.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var node = Node2D.new()\n"
-"node.set(\"global_scale\", Vector2(8, 2.5))\n"
-"print(node.global_scale) # Prints (8, 2.5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var node = new Node2D();\n"
-"node.Set(\"global_scale\", new Vector2(8, 2.5));\n"
-"GD.Print(node.GlobalScale); // Prints Vector2(8, 2.5)\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Note:[/b] In C#, [param property] must be in snake_case when referring to "
-"built-in Godot properties. Prefer using the names exposed in the "
-"[code]PropertyName[/code] class to avoid allocating a new [StringName] on "
-"each call."
-msgstr ""
-"将给定属性 [param property] 的值分配为 [param value]。如果该属性不存在,或者给"
-"定 [param value] 的类型不匹配,则不会发生任何事情。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var node = Node2D.new()\n"
-"node.set(\"global_scale\", Vector2(8, 2.5))\n"
-"print(node.global_scale) # 输出 (8, 2.5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var node = new Node2D();\n"
-"node.Set(\"global_scale\", new Vector2(8, 2.5));\n"
-"GD.Print(node.GlobalScale); // 输出 Vector2(8, 2.5)\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]在 C# 中引用内置 Godot 属性时 [param property] 必须为 snake_case "
-"蛇形大小写。请优先使用 [code]PropertyName[/code] 类中暴露的名称,避免每次调用"
-"都重新分配一个 [StringName]。"
-
-msgid ""
"If set to [code]true[/code], the object becomes unable to emit signals. As "
"such, [method emit_signal] and signal connections will not work, until it is "
"set to [code]false[/code]."
@@ -78594,65 +77947,6 @@ msgstr ""
"emit_signal] 和信号连接将不起作用,直到该属性被设置为 [code]false[/code]。"
msgid ""
-"Assigns [param value] to the given [param property], at the end of the "
-"current frame. This is equivalent to calling [method set] through [method "
-"call_deferred].\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var node = Node2D.new()\n"
-"add_child(node)\n"
-"\n"
-"node.rotation = 45.0\n"
-"node.set_deferred(\"rotation\", 90.0)\n"
-"print(node.rotation) # Prints 45.0\n"
-"\n"
-"await get_tree().process_frame\n"
-"print(node.rotation) # Prints 90.0\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var node = new Node2D();\n"
-"node.Rotation = 45f;\n"
-"node.SetDeferred(\"rotation\", 90f);\n"
-"GD.Print(node.Rotation); // Prints 45.0\n"
-"\n"
-"await ToSignal(GetTree(), SceneTree.SignalName.ProcessFrame);\n"
-"GD.Print(node.Rotation); // Prints 90.0\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Note:[/b] In C#, [param property] must be in snake_case when referring to "
-"built-in Godot properties. Prefer using the names exposed in the "
-"[code]PropertyName[/code] class to avoid allocating a new [StringName] on "
-"each call."
-msgstr ""
-"在当前帧的末尾,将给定属性 [param property] 的值分配为 [param value]。等价于通"
-"过 [method call_deferred] 调用 [method set]。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var node = Node2D.new()\n"
-"add_child(node)\n"
-"\n"
-"node.rotation = 45.0\n"
-"node.set_deferred(\"rotation\", 90.0)\n"
-"print(node.rotation) # 输出 45.0\n"
-"\n"
-"await get_tree().process_frame\n"
-"print(node.rotation) # 输出 90.0\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var node = new Node2D();\n"
-"node.Rotation = 45f;\n"
-"node.SetDeferred(\"rotation\", 90f);\n"
-"GD.Print(node.Rotation); // 输出 45.0\n"
-"\n"
-"await ToSignal(GetTree(), SceneTree.SignalName.ProcessFrame);\n"
-"GD.Print(node.Rotation); // 输出 90.0\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]在 C# 中引用内置 Godot 属性时 [param property] 必须为 snake_case "
-"蛇形大小写。请优先使用 [code]PropertyName[/code] 类中暴露的名称,避免每次调用"
-"都重新分配一个 [StringName]。"
-
-msgid ""
"Assigns a new [param value] to the property identified by the [param "
"property_path]. The path should be a [NodePath] relative to this object, and "
"can use the colon character ([code]:[/code]) to access nested properties.\n"
@@ -78749,24 +78043,6 @@ msgstr ""
"[method _to_string] 以自定义对象的字符串表示形式。"
msgid ""
-"Translates a [param message], using the translation catalogs configured in "
-"the Project Settings. Further [param context] can be specified to help with "
-"the translation.\n"
-"If [method can_translate_messages] is [code]false[/code], or no translation "
-"is available, this method returns the [param message] without changes. See "
-"[method set_message_translation].\n"
-"For detailed examples, see [url=$DOCS_URL/tutorials/i18n/"
-"internationalizing_games.html]Internationalizing games[/url]."
-msgstr ""
-"使用项目设置中配置的翻译目录,翻译一个 [param message]。可以进一步指定 [param "
-"context] 来帮助翻译。\n"
-"如果 [method can_translate_messages] 为 [code]false[/code],或者没有翻译可用,"
-"则该方法将返回 [param message] 而不做任何更改。请参阅 [method "
-"set_message_translation]。\n"
-"有关详细示例,请参阅[url=$DOCS_URL/tutorials/i18n/internationalizing_games."
-"html]《国际化游戏》[/url]。"
-
-msgid ""
"Translates a [param message] or [param plural_message], using the translation "
"catalogs configured in the Project Settings. Further [param context] can be "
"specified to help with the translation.\n"
@@ -79009,14 +78285,6 @@ msgstr ""
msgid "The culling mode to use."
msgstr "要使用的剔除模式。"
-msgid ""
-"A [Vector2] array with the index for polygon's vertices positions.\n"
-"[b]Note:[/b] The returned value is a copy of the underlying array, rather "
-"than a reference."
-msgstr ""
-"带有多边形顶点位置索引的 [Vector2] 数组。\n"
-"[b]注意:[/b]返回值是基础数组的副本,而不是引用。"
-
msgid "Culling is disabled. See [member cull_mode]."
msgstr "禁用剔除。见 [member cull_mode]。"
@@ -79097,6 +78365,26 @@ msgstr ""
"大。否则灯光在该网格上可能不可见。"
msgid ""
+"Controls the distance attenuation function for omnilights.\n"
+"A value of [code]0.0[/code] smoothly attenuates light at the edge of the "
+"range. A value of [code]1.0[/code] approaches a physical lighting model. A "
+"value of [code]0.5[/code] approximates linear attenuation.\n"
+"[b]Note:[/b] Setting it to [code]1.0[/code] may result in distant objects "
+"receiving minimal light, even within range. For example, with a range of "
+"[code]4096[/code], an object at [code]100[/code] units receives less than "
+"[code]0.1[/code] energy.\n"
+"[b]Note:[/b] Using negative or values higher than [code]10.0[/code] may lead "
+"to unexpected results."
+msgstr ""
+"控制全向灯的距离衰减函数。\n"
+"值为 [code]0.0[/code] 可平滑地衰减范围边缘的光。值为 [code]1.0[/code] 接近物理"
+"照明模型。值为 [code]0.5[/code] 近似于线性衰减。\n"
+"[b]注意:[/b]将其设置为 [code]1.0[/code] 可能会导致远处的物体接收到的光最少,"
+"即使在范围内也是如此。例如,在 [code]4096[/code] 范围内,在 [code]100[/code] "
+"单位处的物体接收到的能量少于 [code]0.1[/code]。\n"
+"[b]注意:[/b]使用负数或高于 [code]10.0[/code] 的值可能会导致意外结果。"
+
+msgid ""
"The light's radius. Note that the effectively lit area may appear to be "
"smaller depending on the [member omni_attenuation] in use. No matter the "
"[member omni_attenuation] in use, the light will never reach anything outside "
@@ -79128,6 +78416,36 @@ msgstr ""
msgid "An OpenXR action."
msgstr "OpenXR 动作。"
+msgid ""
+"This resource defines an OpenXR action. Actions can be used both for inputs "
+"(buttons, joysticks, triggers, etc.) and outputs (haptics).\n"
+"OpenXR performs automatic conversion between action type and input type "
+"whenever possible. An analog trigger bound to a boolean action will thus "
+"return [code]false[/code] if the trigger is depressed and [code]true[/code] "
+"if pressed fully.\n"
+"Actions are not directly bound to specific devices, instead OpenXR recognizes "
+"a limited number of top level paths that identify devices by usage. We can "
+"restrict which devices an action can be bound to by these top level paths. "
+"For instance an action that should only be used for hand held controllers can "
+"have the top level paths \"/user/hand/left\" and \"/user/hand/right\" "
+"associated with them. See the [url=https://www.khronos.org/registry/OpenXR/"
+"specs/1.0/html/xrspec.html#semantic-path-reserved]reserved path section in "
+"the OpenXR specification[/url] for more info on the top level paths.\n"
+"Note that the name of the resource is used to register the action with."
+msgstr ""
+"该资源定义了一个 OpenXR 动作。动作可用于输入(按钮、操纵杆、触发器等)和输出"
+"(触觉)。\n"
+"只要有可能,OpenXR 就会在动作类型和输入类型之间执行自动转换。因此,如果触发器"
+"被按下,则绑定到一个布尔动作的模拟触发器将返回 [code]false[/code],如果完全按"
+"下则返回 [code]true[/code]。\n"
+"动作并不被直接绑定到特定设备,相反,OpenXR 识别了有限数量的顶级路径,这些路径"
+"按用途识别设备。我们可以通过这些顶级路径来限制一个动作可以被绑定到哪些设备上。"
+"例如,一个只应用于手持控制器的动作,可以具有与其关联的顶级路径“/user/hand/"
+"left”和“/user/hand/right”。有关顶级路径的详细信息,请参阅 OpenXR 规范中的"
+"[url=https://www.khronos.org/registry/OpenXR/specs/1.0/html/xrspec."
+"html#semantic-path-reserved]保留路径部分[/url]。\n"
+"注意,资源的名字是用来注册动作的。"
+
msgid "The type of action."
msgstr "动作的类型。"
@@ -79334,9 +78652,6 @@ msgstr ""
"[b]注意:[/b][code]openxr/util.h[/code] 包含用于获取 OpenXR 函数的实用宏,例"
"如, [code]GDEXTENSION_INIT_XR_FUNC_V(xrCreateAction)[/code]。"
-msgid "Returns the timing for the next frame."
-msgstr "返回下一帧的时间。"
-
msgid ""
"Returns the play space, which is an [url=https://registry.khronos.org/OpenXR/"
"specs/1.0/man/html/XrSpace.html]XrSpace[/url] cast to an integer."
@@ -79361,6 +78676,14 @@ msgstr ""
"返回系统的 id,它是一个被转换为整数的 [url=https://registry.khronos.org/"
"OpenXR/specs/1.0/man/html/XrSystemId.html]XrSystemId[/url]。"
+msgid ""
+"Returns [enum OpenXRAPIExtension.OpenXRAlphaBlendModeSupport] denoting if "
+"[constant XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND] is really supported, "
+"emulated or not supported at all."
+msgstr ""
+"返回 [enum OpenXRAPIExtension.OpenXRAlphaBlendModeSupport] 表示 [constant "
+"XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND] 是否确实受支持、模拟或根本不支持。"
+
msgid "Returns [code]true[/code] if OpenXR is initialized."
msgstr "如果 OpenXR 已初始化,则返回 [code]true[/code]。"
@@ -79380,6 +78703,14 @@ msgid "Registers the given extension as a composition layer provider."
msgstr "将给定扩展注册为组合层提供器。"
msgid ""
+"If set to [code]true[/code], an OpenXR extension is loaded which is capable "
+"of emulating the [constant XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND] blend "
+"mode."
+msgstr ""
+"如果设置为 [code]true[/code],则会加载 OpenXR 扩展,该扩展能够模拟 [constant "
+"XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND] 混合模式。"
+
+msgid ""
"Creates a [Transform3D] from an [url=https://registry.khronos.org/OpenXR/"
"specs/1.0/man/html/XrPosef.html]XrPosef[/url]."
msgstr ""
@@ -79557,9 +78888,39 @@ msgid ""
"level."
msgstr "注册扩展程序。这应该发生在核心模块初始化级别。"
+msgid "Use [XRHandModifier3D] instead."
+msgstr "改用 [XRHandModifier3D]。"
+
msgid "Node supporting hand and finger tracking in OpenXR."
msgstr "OpenXR 中支持手和手指跟踪的节点。"
+msgid ""
+"This node enables OpenXR's hand tracking functionality. The node should be a "
+"child node of an [XROrigin3D] node, tracking will update its position to the "
+"player's tracked hand Palm joint location (the center of the middle finger's "
+"metacarpal bone). This node also updates the skeleton of a properly skinned "
+"hand or avatar model.\n"
+"If the skeleton is a hand (one of the hand bones is the root node of the "
+"skeleton), then the skeleton will be placed relative to the hand palm "
+"location and the hand mesh and skeleton should be children of the OpenXRHand "
+"node.\n"
+"If the hand bones are part of a full skeleton, then the root of the hand will "
+"keep its location with the assumption that IK is used to position the hand "
+"and arm.\n"
+"By default the skeleton hand bones are repositioned to match the size of the "
+"tracked hand. To preserve the modeled bone sizes change [member bone_update] "
+"to apply rotation only."
+msgstr ""
+"该节点启用 OpenXR 的手部跟踪功能。该节点应该是 [XROrigin3D] 节点的子节点,跟踪"
+"会将其位置更新为玩家被跟踪的手掌关节位置(中指的掌骨中心)。该节点还会更新正确"
+"蒙皮的手或头像模型的骨架。\n"
+"如果骨架是一只手(手部骨骼之一是该骨架的根节点),则该骨架将相对于手掌位置放"
+"置,并且手部网格和骨架应该是 OpenXRHand 节点的子级。\n"
+"如果手骨是完整骨架的一部分,假设使用 IK 来定位手和胳膊,则手的根部将保持其位"
+"置。\n"
+"默认情况下,骨架手骨会被重新定位以匹配跟踪的手的大小。要保留建模的骨骼大小,请"
+"更改 [member bone_update] 以仅应用旋转。"
+
msgid "Specify the type of updates to perform on the bone."
msgstr "指定要在骨骼上执行的更新类型。"
@@ -79572,6 +78933,10 @@ msgstr "设置一个[Skeleton3D]节点,该节点的姿势位置将被更新。
msgid "Set the motion range (if supported) limiting the hand motion."
msgstr "设置限制手部运动的运动范围(前提是支持)。"
+msgid ""
+"Set the type of skeleton rig the [member hand_skeleton] is compliant with."
+msgstr "设置 [member hand_skeleton] 所兼容的骨架绑定类型。"
+
msgid "Tracking the player's left hand."
msgstr "追踪玩家的左手。"
@@ -79598,6 +78963,16 @@ msgstr "符合 OpenXR 标准的骨架。"
msgid "A [SkeletonProfileHumanoid] compliant skeleton."
msgstr "符合 [SkeletonProfileHumanoid] 标准的骨架。"
+msgid ""
+"The skeletons bones are fully updated (both position and rotation) to match "
+"the tracked bones."
+msgstr "骨架骨骼已完全更新(位置和旋转)以匹配跟踪的骨骼。"
+
+msgid ""
+"The skeletons bones are only rotated to align with the tracked bones, "
+"preserving bone length."
+msgstr "骨架骨骼仅旋转以与跟踪的骨骼对齐,从而保留骨骼长度。"
+
msgid "Maximum supported bone update mode."
msgstr "最大支持的骨骼更新模式。"
@@ -79903,9 +79278,34 @@ msgstr "右手。"
msgid "Maximum value for the hand enum."
msgstr "手部枚举的最大值。"
+msgid "Full hand range, if user closes their hands, we make a full fist."
+msgstr "全手范围,如果用户握紧双手,我们会握紧拳头。"
+
+msgid ""
+"Conform to controller, if user closes their hands, the tracked data conforms "
+"to the shape of the controller."
+msgstr "符合控制器,如果用户合上手,则跟踪的数据符合控制器的形状。"
+
msgid "Maximum value for the motion range enum."
msgstr "运动范围枚举的最大值。"
+msgid ""
+"The source of hand tracking data is unknown (the extension is likely "
+"unsupported)."
+msgstr "手部跟踪数据的来源未知(该扩展可能不受支持)。"
+
+msgid ""
+"The source of hand tracking is unobstructed, this means that an accurate "
+"method of hand tracking is used, e.g. optical hand tracking, data gloves, etc."
+msgstr ""
+"手部跟踪的来源是畅通的,这意味着使用了准确的手部跟踪方法,例如光学手部跟踪、数"
+"据手套等。"
+
+msgid ""
+"The source of hand tracking is a controller, bone positions are inferred from "
+"controller inputs."
+msgstr "手部跟踪的来源是控制器,骨骼位置是根据控制器输入推断的。"
+
msgid "Maximum value for the hand tracked source enum."
msgstr "手部跟踪源枚举的最大值。"
@@ -80237,7 +79637,7 @@ msgid ""
msgstr ""
"如果为 [code]true[/code],最小尺寸将由最长项目的文本确定,而不是当前选定的文"
"本。\n"
-"[b]注意:[/b]出于性能原因,在添加、移除、或修改项目时,最小尺寸不会立即更新。"
+"[b]注意:[/b]出于性能原因,在添加、移除或修改项目时,最小尺寸不会立即更新。"
msgid "The number of items to select from."
msgstr "可供挑选的菜单项的数量。"
@@ -80302,8 +79702,8 @@ msgid ""
msgstr ""
"[OS] 类封装了与主机操作系统通信的最常见功能,例如视频驱动、延时、环境变量、二"
"进制文件的执行、命令行等。\n"
-"[b]注意:[/b]在 Godot 4 中,与窗口管理、剪贴板、和 TTS 相关的 [OS] 函数已被移"
-"至 [DisplayServer] 单例(和 [Window] 类)。与时间相关的函数已被移除,并且仅在 "
+"[b]注意:[/b]在 Godot 4 中,与窗口管理、剪贴板和 TTS 相关的 [OS] 函数已被移至 "
+"[DisplayServer] 单例(和 [Window] 类)。与时间相关的函数已被移除,并且仅在 "
"[Time] 类中可用。"
msgid ""
@@ -80355,54 +79755,6 @@ msgstr ""
"[b]注意:[/b]该方法在 Android、Linux、macOS 和 Windows 上实现。"
msgid ""
-"Creates a new process that runs independently of Godot. It will not terminate "
-"when Godot terminates. The path specified in [param path] must exist and be "
-"executable file or macOS .app bundle. Platform path resolution will be used. "
-"The [param arguments] are used in the given order and separated by a space.\n"
-"On Windows, if [param open_console] is [code]true[/code] and the process is a "
-"console app, a new terminal window will be opened.\n"
-"If the process is successfully created, this method returns its process ID, "
-"which you can use to monitor the process (and potentially terminate it with "
-"[method kill]). Otherwise this method returns [code]-1[/code].\n"
-"For example, running another instance of the project:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var pid = OS.create_process(OS.get_executable_path(), [])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var pid = OS.CreateProcess(OS.GetExecutablePath(), new string[] {});\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"See [method execute] if you wish to run an external command and retrieve the "
-"results.\n"
-"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and "
-"Windows.\n"
-"[b]Note:[/b] On macOS, sandboxed applications are limited to run only "
-"embedded helper executables, specified during export or system .app bundle, "
-"system .app bundles will ignore arguments."
-msgstr ""
-"创建一个独立于 Godot 运行的新进程。Godot 终止时它也不会终止。[param path] 中指"
-"定的路径必须存在,并且是可执行文件或 macOS .app 包。将使用平台路径解析。"
-"[param arguments] 按给定顺序使用,并以空格分隔。\n"
-"在 Windows 上,如果 [param open_console] 为 [code]true[/code],并且该进程是一"
-"个控制台应用程序,则一个新的终端窗口将被打开。\n"
-"如果进程创建成功,则该方法将返回新的进程 ID,可以使用它来监视进程(并可能使用 "
-"[method kill] 终止它)。否则该方法将返回 [code]-1[/code]。\n"
-"例如,运行项目的另一个实例:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var pid = OS.create_process(OS.get_executable_path(), [])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var pid = OS.CreateProcess(OS.GetExecutablePath(), new string[] {});\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"如果希望运行一个外部命令并检索结果,请参阅 [method execute]。\n"
-"[b]注意:[/b]该方法在 Android、iOS、Linux、macOS 和 Windows 上实现。\n"
-"[b]注意:[/b]在 macOS 上,沙盒应用程序被限制为只能运行嵌入式辅助可执行文件,在"
-"导出或系统 .app 包期间指定,系统 .app 包将忽略参数。"
-
-msgid ""
"Delays execution of the current thread by [param msec] milliseconds. [param "
"msec] must be greater than or equal to [code]0[/code]. Otherwise, [method "
"delay_msec] does nothing and prints an error message.\n"
@@ -80457,112 +79809,6 @@ msgstr ""
"项目是一个独立的子进程)。"
msgid ""
-"Executes the given process in a [i]blocking[/i] way. The file specified in "
-"[param path] must exist and be executable. The system path resolution will be "
-"used. The [param arguments] are used in the given order, separated by spaces, "
-"and wrapped in quotes.\n"
-"If an [param output] array is provided, the complete shell output of the "
-"process is appended to [param output] as a single [String] element. If [param "
-"read_stderr] is [code]true[/code], the output to the standard error stream is "
-"also appended to the array.\n"
-"On Windows, if [param open_console] is [code]true[/code] and the process is a "
-"console app, a new terminal window is opened.\n"
-"This method returns the exit code of the command, or [code]-1[/code] if the "
-"process fails to execute.\n"
-"[b]Note:[/b] The main thread will be blocked until the executed command "
-"terminates. Use [Thread] to create a separate thread that will not block the "
-"main thread, or use [method create_process] to create a completely "
-"independent process.\n"
-"For example, to retrieve a list of the working directory's contents:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var output = []\n"
-"var exit_code = OS.execute(\"ls\", [\"-l\", \"/tmp\"], output)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var output = new Godot.Collections.Array();\n"
-"int exitCode = OS.Execute(\"ls\", new string[] {\"-l\", \"/tmp\"}, output);\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"If you wish to access a shell built-in or execute a composite command, a "
-"platform-specific shell can be invoked. For example:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var output = []\n"
-"OS.execute(\"CMD.exe\", [\"/C\", \"cd %TEMP% && dir\"], output)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var output = new Godot.Collections.Array();\n"
-"OS.Execute(\"CMD.exe\", new string[] {\"/C\", \"cd %TEMP% && dir\"}, "
-"output);\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and "
-"Windows.\n"
-"[b]Note:[/b] To execute a Windows command interpreter built-in command, "
-"specify [code]cmd.exe[/code] in [param path], [code]/c[/code] as the first "
-"argument, and the desired command as the second argument.\n"
-"[b]Note:[/b] To execute a PowerShell built-in command, specify "
-"[code]powershell.exe[/code] in [param path], [code]-Command[/code] as the "
-"first argument, and the desired command as the second argument.\n"
-"[b]Note:[/b] To execute a Unix shell built-in command, specify shell "
-"executable name in [param path], [code]-c[/code] as the first argument, and "
-"the desired command as the second argument.\n"
-"[b]Note:[/b] On macOS, sandboxed applications are limited to run only "
-"embedded helper executables, specified during export.\n"
-"[b]Note:[/b] On Android, system commands such as [code]dumpsys[/code] can "
-"only be run on a rooted device."
-msgstr ""
-"以[i]阻塞[/i]方式执行给定进程。[param path] 中指定的文件必须存在且可执行。将使"
-"用系统路径解析。[param arguments] 按给定顺序使用,用空格分隔,并用引号包裹。\n"
-"如果提供了 [param output] 数组,则进程的完整 shell 输出,将作为单个 [String] "
-"元素被追加到 [param output]。如果 [param read_stderr] 为 [code]true[/code],则"
-"标准错误流的输出也会被追加到数组中。\n"
-"在 Windows 上,如果 [param open_console] 为 [code]true[/code] 并且进程是控制台"
-"应用程序,则会打开一个新的终端窗口。\n"
-"该方法返回命令的退出代码,如果进程执行失败,则返回 [code]-1[/code]。\n"
-"[b]注意:[/b]主线程将被阻塞,直到执行的命令终止。使用 [Thread] 创建一个不会阻"
-"塞主线程的独立线程,或者使用 [method create_process] 创建一个完全独立的进"
-"程。\n"
-"例如,要检索工作目录内容的列表:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var output = []\n"
-"var exit_code = OS.execute(\"ls\", [\"-l\", \"/tmp\"], output)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var output = new Godot.Collections.Array();\n"
-"int exitCode = OS.Execute(\"ls\", new string[] {\"-l\", \"/tmp\"}, output);\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"如果希望访问内置的 shell 或执行复合命令,则可以调用特定于平台的 shell。例"
-"如:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var output = []\n"
-"OS.execute(\"CMD.exe\", [\"/C\", \"cd %TEMP% && dir\"], output)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var output = new Godot.Collections.Array();\n"
-"OS.Execute(\"CMD.exe\", new string[] {\"/C\", \"cd %TEMP% && dir\"}, "
-"output);\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]该方法在 Android、iOS、Linux、macOS 和 Windows 上实现。\n"
-"[b]注意:[/b]要执行 Windows 命令解释器的内置命令,在 [param path] 中指定 "
-"[code]cmd.exe[/code],将 [code]/c[/code] 作为第一个参数,并将所需的命令作为第"
-"二个参数。\n"
-"[b]注意:[/b]要执行 PowerShell 的内置命令,在 [param path] 中指定 "
-"[code]powershell.exe[/code],将 [code]-Command[/code] 作为第一个参数,然后将所"
-"需的命令作为第二个参数。\n"
-"[b]注意:[/b]要执行 Unix shell 内置命令,请在 [param path] 中指定 shell 可执行"
-"文件名称,将 [code]-c[/code] 作为第一个参数,并将所需的命令作为第二个参数。\n"
-"[b]注意:[/b]在 macOS 上,沙盒应用程序仅限于运行在导出期间指定的嵌入的辅助可执"
-"行文件。\n"
-"[b]注意:[/b]在 Android 上,[code]dumpsys[/code] 等系统命令只能在 root 设备上"
-"运行。"
-
-msgid ""
"Finds the keycode for the given string. The returned values are equivalent to "
"the [enum Key] constants.\n"
"[codeblocks]\n"
@@ -80626,94 +79872,33 @@ msgstr ""
"径。"
msgid ""
-"Returns the command-line arguments passed to the engine.\n"
-"Command-line arguments can be written in any form, including both [code]--key "
-"value[/code] and [code]--key=value[/code] forms so they can be properly "
-"parsed, as long as custom command-line arguments do not conflict with engine "
-"arguments.\n"
-"You can also incorporate environment variables using the [method "
-"get_environment] method.\n"
-"You can set [member ProjectSettings.editor/run/main_run_args] to define "
-"command-line arguments to be passed by the editor when running the project.\n"
-"Here's a minimal example on how to parse command-line arguments into a "
-"[Dictionary] using the [code]--key=value[/code] form for arguments:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var arguments = {}\n"
-"for argument in OS.get_cmdline_args():\n"
-" if argument.contains(\"=\"):\n"
-" var key_value = argument.split(\"=\")\n"
-" arguments[key_value[0].lstrip(\"--\")] = key_value[1]\n"
-" else:\n"
-" # Options without an argument will be present in the dictionary,\n"
-" # with the value set to an empty string.\n"
-" arguments[argument.lstrip(\"--\")] = \"\"\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var arguments = new Godot.Collections.Dictionary();\n"
-"foreach (var argument in OS.GetCmdlineArgs())\n"
-"{\n"
-" if (argument.Contains('='))\n"
-" {\n"
-" string[] keyValue = argument.Split(\"=\");\n"
-" arguments[keyValue[0].LStrip(\"--\")] = keyValue[1];\n"
-" }\n"
-" else\n"
-" {\n"
-" // Options without an argument will be present in the dictionary,\n"
-" // with the value set to an empty string.\n"
-" arguments[keyValue[0].LStrip(\"--\")] = \"\";\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Note:[/b] Passing custom user arguments directly is not recommended, as "
-"the engine may discard or modify them. Instead, pass the standard UNIX double "
-"dash ([code]--[/code]) and then the custom arguments, which the engine will "
-"ignore by design. These can be read via [method get_cmdline_user_args]."
-msgstr ""
-"返回传递给引擎的命令行参数。\n"
-"命令行参数可以写成任何形式,包括 [code]--key value[/code] 和 [code]--"
-"key=value[/code] 两种形式,这样它们就可以被正确解析,只要自定义命令行参数不与"
-"引擎参数冲突。\n"
-"还可以使用 [method get_environment] 方法合并环境变量。\n"
-"可以设置 [member ProjectSettings.editor/run/main_run_args] 来定义编辑器在运行"
-"项目时传递的命令行参数。\n"
-"下面是一个关于如何使用参数的 [code]--key=value[/code] 形式,将命令行参数解析为"
-"一个 [Dictionary] 的最小示例:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var arguments = {}\n"
-"for argument in OS.get_cmdline_args():\n"
-" if argument.contains(\"=\"):\n"
-" var key_value = argument.split(\"=\")\n"
-" arguments[key_value[0].lstrip(\"--\")] = key_value[1]\n"
-" else:\n"
-" # 没有参数的选项将出现在字典中,\n"
-" # 其值被设置为空字符串。\n"
-" arguments[argument.lstrip(\"--\")] = \"\"\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var arguments = new Godot.Collections.Dictionary();\n"
-"foreach (var argument in OS.GetCmdlineArgs())\n"
-"{\n"
-" if (argument.Contains('='))\n"
-" {\n"
-" string[] keyValue = argument.Split(\"=\");\n"
-" arguments[keyValue[0].LStrip(\"--\")] = keyValue[1];\n"
-" }\n"
-" else\n"
-" {\n"
-" // 没有参数的选项将出现在字典中,\n"
-" // 其值被设置为空字符串。\n"
-" arguments[keyValue[0].LStrip(\"--\")] = \"\";\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]不建议直接传递自定义用户参数,因为引擎可能会丢弃或修改它们。相"
-"反,传递标准的 UNIX 双破折号([code]--[/code]),然后传递自定义参数,引擎将根"
-"据设计忽略这些参数。这些可以通过 [method get_cmdline_user_args] 读取。"
+"Returns the command-line user arguments passed to the engine. User arguments "
+"are ignored by the engine and reserved for the user. They are passed after "
+"the double dash [code]--[/code] argument. [code]++[/code] may be used when "
+"[code]--[/code] is intercepted by another program (such as [code]startx[/"
+"code]).\n"
+"[codeblock]\n"
+"# Godot has been executed with the following command:\n"
+"# godot --fullscreen -- --level=2 --hardcore\n"
+"\n"
+"OS.get_cmdline_args() # Returns [\"--fullscreen\", \"--level=2\", \"--"
+"hardcore\"]\n"
+"OS.get_cmdline_user_args() # Returns [\"--level=2\", \"--hardcore\"]\n"
+"[/codeblock]\n"
+"To get all passed arguments, use [method get_cmdline_args]."
+msgstr ""
+"返回传递给引擎的命令行用户参数。引擎不会使用用户参数,用户可以自由指定。用户参"
+"数在双横杠 [code]--[/code] 之后指定。如果其他程序会拦截 [code]--[/code](例如 "
+"[code]startx[/code]),那么也可以使用 [code]++[/code]。\n"
+"[codeblock]\n"
+"# Godot 使用以下命令执行:\n"
+"# godot --fullscreen -- --level=2 --hardcore\n"
+"\n"
+"OS.get_cmdline_args() # 返回 [\"--fullscreen\", \"--level=2\", \"--"
+"hardcore\"]\n"
+"OS.get_cmdline_user_args() # 返回 [\"--level=2\", \"--hardcore\"]\n"
+"[/codeblock]\n"
+"要获取传递的所有参数,请使用 [method get_cmdline_args]。"
msgid ""
"Returns the [i]global[/i] user configuration directory according to the "
@@ -81068,15 +80253,6 @@ msgstr ""
"阅 [method has_feature]。"
msgid ""
-"Returns the number used by the host machine to uniquely identify this "
-"application.\n"
-"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and "
-"Windows."
-msgstr ""
-"返回主机用来唯一标识该应用程序的编号。\n"
-"[b]注意:[/b]该方法在 Android、iOS、Linux、macOS、Windows 上实现。"
-
-msgid ""
"Returns the number of [i]logical[/i] CPU cores available on the host machine. "
"On CPUs with HyperThreading enabled, this number will be greater than the "
"number of [i]physical[/i] CPU cores."
@@ -81190,6 +80366,25 @@ msgstr ""
"[b]注意:[/b]线程 ID 不是确定的,也许会在应用程序重新启动时被重复使用。"
msgid ""
+"Returns a string that is unique to the device.\n"
+"[b]Note:[/b] This string may change without notice if the user reinstalls "
+"their operating system, upgrades it, or modifies their hardware. This means "
+"it should generally not be used to encrypt persistent data, as the data saved "
+"before an unexpected ID change would become inaccessible. The returned string "
+"may also be falsified using external programs, so do not rely on the string "
+"returned by this method for security purposes.\n"
+"[b]Note:[/b] On Web, returns an empty string and generates an error, as this "
+"method cannot be implemented for security reasons."
+msgstr ""
+"返回特定于该设备的一个字符串。\n"
+"[b]注意:[/b]如果用户重新安装操作系统、升级操作系统或修改硬件,则该字符串可能"
+"会更改,恕不另行通知。这意味着它通常不应用于加密持久数据,因为在意外的 ID 更改"
+"会使之前保存的数据变得无法访问。返回的字符串也可能会被外部程序伪造,因此出于安"
+"全目的,请勿依赖该方法返回的字符串。\n"
+"[b]注意:[/b]在 Web 上,返回空字符串并生成错误,因为出于安全考虑无法实现该方"
+"法。"
+
+msgid ""
"Returns the absolute directory path where user data is written (the "
"[code]user://[/code] directory in Godot). The path depends on the project "
"name and [member ProjectSettings.application/config/use_custom_user_dir].\n"
@@ -81369,18 +80564,6 @@ msgstr ""
"[/codeblocks]"
msgid ""
-"Returns [code]true[/code] if the child process ID ([param pid]) is still "
-"running or [code]false[/code] if it has terminated. [param pid] must be a "
-"valid ID generated from [method create_process].\n"
-"[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and "
-"Windows."
-msgstr ""
-"如果该子进程 ID([param pid])仍在运行,则返回 [code]true[/code];如果它已终"
-"止,则返回 [code]false[/code]。[param pid] 必须是从 [method create_process] 生"
-"成的有效 ID。\n"
-"[b]注意:[/b]该方法在 Android、iOS、Linux、macOS 和 Windows 上实现。"
-
-msgid ""
"Returns [code]true[/code] if the project will automatically restart when it "
"exits for any reason, [code]false[/code] otherwise. See also [method "
"set_restart_on_exit] and [method get_restart_on_exit_arguments]."
@@ -81758,17 +80941,6 @@ msgstr "指铃声目录路径。"
msgid "A packed array of bytes."
msgstr "字节紧缩数组。"
-msgid ""
-"An array specifically designed to hold bytes. Packs data tightly, so it saves "
-"memory for large array sizes.\n"
-"[PackedByteArray] also provides methods to encode/decode various types to/"
-"from bytes. The way values are encoded is an implementation detail and "
-"shouldn't be relied upon when interacting with external apps."
-msgstr ""
-"专门设计用于存放字节的数组。数据是紧密存放的,因此能够在数组较大时节省内存。\n"
-"[PackedByteArray] 还提供了在许多类型和字节之间进行编码/解码的方法。这些值的编"
-"码方式属于实现细节,与外部应用程序交互时不应依赖这种编码。"
-
msgid "Constructs an empty [PackedByteArray]."
msgstr "构造空的 [PackedByteArray]。"
@@ -81784,6 +80956,20 @@ msgid "Appends a [PackedByteArray] at the end of this array."
msgstr "在该数组的末尾追加一个 [PackedByteArray]。"
msgid ""
+"Finds the index of an existing value (or the insertion index that maintains "
+"sorting order, if the value is not yet present in the array) using binary "
+"search. Optionally, a [param before] specifier can be passed. If [code]false[/"
+"code], the returned index comes after all existing entries of the value in "
+"the array.\n"
+"[b]Note:[/b] Calling [method bsearch] on an unsorted array results in "
+"unexpected behavior."
+msgstr ""
+"使用二进法查找已有值的索引(如果该值尚未存在于数组中,则为保持排序顺序的插入索"
+"引)。传递 [param before] 说明符是可选的。如果该参数为 [code]false[/code],则"
+"返回的索引位于数组中该值的所有已有的条目之后。\n"
+"[b]注意:[/b]在未排序的数组上调用 [method bsearch] 会产生预料之外的行为。"
+
+msgid ""
"Returns a new [PackedByteArray] with the data compressed. Set the compression "
"mode using one of [enum FileAccess.CompressionMode]'s constants."
msgstr ""
@@ -81791,6 +80977,30 @@ msgstr ""
"FileAccess.CompressionMode] 常量。"
msgid ""
+"Decodes a 64-bit floating-point number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0.0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节序列解码为 64 位浮点数,起始位置字节偏移量为 [param byte_offset]。字节数"
+"不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a 32-bit floating-point number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0.0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节序列解码为 32 位浮点数,起始位置字节偏移量为 [param byte_offset]。字节数"
+"不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。"
+
+msgid ""
+"Decodes a 16-bit floating-point number from the bytes starting at [param "
+"byte_offset]. Fails if the byte count is insufficient. Returns [code]0.0[/"
+"code] if a valid number can't be decoded."
+msgstr ""
+"将字节序列解码为 16 位浮点数,起始位置字节偏移量为 [param byte_offset]。字节数"
+"不足时会失败。如果无法解码有效的数字,则返回 [code]0.0[/code]。"
+
+msgid ""
"Decodes a 8-bit signed integer number from the bytes starting at [param "
"byte_offset]. Fails if the byte count is insufficient. Returns [code]0[/code] "
"if a valid number can't be decoded."
@@ -81917,6 +81127,30 @@ msgid "Creates a copy of the array, and returns it."
msgstr "创建该数组的副本,并将该副本返回。"
msgid ""
+"Encodes a 64-bit floating-point number as bytes at the index of [param "
+"byte_offset] bytes. The array must have at least 8 bytes of allocated space, "
+"starting at the offset."
+msgstr ""
+"将 64 位浮点数编码为字节序列,起始位置字节偏移量为 [param byte_offset]。从偏移"
+"量位置开始,该数组必须还分配有至少 8 个字节的空间。"
+
+msgid ""
+"Encodes a 32-bit floating-point number as bytes at the index of [param "
+"byte_offset] bytes. The array must have at least 4 bytes of space, starting "
+"at the offset."
+msgstr ""
+"将 32 位浮点数编码为字节序列,起始位置字节偏移量为 [param byte_offset]。从偏移"
+"量位置开始,该数组必须还分配有至少 4 个字节的空间。"
+
+msgid ""
+"Encodes a 16-bit floating-point number as bytes at the index of [param "
+"byte_offset] bytes. The array must have at least 2 bytes of space, starting "
+"at the offset."
+msgstr ""
+"将 16 位浮点数编码为字节序列,起始位置字节偏移量为 [param byte_offset]。从偏移"
+"量位置开始,该数组必须还分配有至少 2 个字节的空间。"
+
+msgid ""
"Encodes a 8-bit signed integer number (signed byte) at the index of [param "
"byte_offset] bytes. The array must have at least 1 byte of space, starting at "
"the offset."
@@ -82225,13 +81459,6 @@ msgstr ""
msgid "A packed array of [Color]s."
msgstr "[Color] 紧缩数组。"
-msgid ""
-"An array specifically designed to hold [Color]. Packs data tightly, so it "
-"saves memory for large array sizes."
-msgstr ""
-"专门设计用于存放 [Color] 的数组。数据是紧密存放的,因此能够在数组较大时节省内"
-"存。"
-
msgid "Constructs an empty [PackedColorArray]."
msgstr "构造空的 [PackedColorArray]。"
@@ -82437,15 +81664,6 @@ msgstr ""
msgid "A packed array of 32-bit floating-point values."
msgstr "32 位浮点数紧缩数组。"
-msgid ""
-"An array specifically designed to hold 32-bit floating-point values (float). "
-"Packs data tightly, so it saves memory for large array sizes.\n"
-"If you need to pack 64-bit floats tightly, see [PackedFloat64Array]."
-msgstr ""
-"专门设计用于存放 32 位浮点值(float)的数组。数据是紧密存放的,因此能够在数组"
-"较大时节省内存。\n"
-"如果你需要紧密存放 64 位浮点数,请参阅 [PackedFloat64Array]。"
-
msgid "Constructs an empty [PackedFloat32Array]."
msgstr "构造空的 [PackedFloat32Array]。"
@@ -82593,17 +81811,6 @@ msgstr ""
msgid "A packed array of 64-bit floating-point values."
msgstr "64 位浮点数紧缩数组。"
-msgid ""
-"An array specifically designed to hold 64-bit floating-point values (double). "
-"Packs data tightly, so it saves memory for large array sizes.\n"
-"If you only need to pack 32-bit floats tightly, see [PackedFloat32Array] for "
-"a more memory-friendly alternative."
-msgstr ""
-"专门设计用于存放 64 位浮点值(double)的数组。数据是紧密存放的,因此能够在数组"
-"较大时节省内存。\n"
-"如果你只需要紧密存放 32 位浮点数,请参阅 [PackedFloat32Array],是对内存更友好"
-"的选择。"
-
msgid "Constructs an empty [PackedFloat64Array]."
msgstr "构造空的 [PackedFloat64Array]。"
@@ -82673,22 +81880,6 @@ msgstr ""
msgid "A packed array of 32-bit integers."
msgstr "32 位整数紧缩数组。"
-msgid ""
-"An array specifically designed to hold 32-bit integer values. Packs data "
-"tightly, so it saves memory for large array sizes.\n"
-"[b]Note:[/b] This type stores signed 32-bit integers, which means it can take "
-"values in the interval [code][-2^31, 2^31 - 1][/code], i.e. [code]"
-"[-2147483648, 2147483647][/code]. Exceeding those bounds will wrap around. In "
-"comparison, [int] uses signed 64-bit integers which can hold much larger "
-"values. If you need to pack 64-bit integers tightly, see [PackedInt64Array]."
-msgstr ""
-"专门设计用于存放 32 位整数值的数组。数据是紧密存放的,因此能够在数组较大时节省"
-"内存。\n"
-"[b]注意:[/b]该类型存储的是 32 位有符号整数,也就是说它可以取区间 [code]"
-"[-2^31, 2^31 - 1][/code] 内的值,即 [code][-2147483648, 2147483647][/code]。超"
-"过这些界限将环绕往复。相比之下,[int] 使用带符号的 64 位整数,可以容纳更大的"
-"值。如果你需要紧密存放 64 位整数,请参阅 [PackedInt64Array]。"
-
msgid "Constructs an empty [PackedInt32Array]."
msgstr "构造空的 [PackedInt32Array]。"
@@ -82769,22 +81960,6 @@ msgstr ""
msgid "A packed array of 64-bit integers."
msgstr "64 位整数紧缩数组。"
-msgid ""
-"An array specifically designed to hold 64-bit integer values. Packs data "
-"tightly, so it saves memory for large array sizes.\n"
-"[b]Note:[/b] This type stores signed 64-bit integers, which means it can take "
-"values in the interval [code][-2^63, 2^63 - 1][/code], i.e. [code]"
-"[-9223372036854775808, 9223372036854775807][/code]. Exceeding those bounds "
-"will wrap around. If you only need to pack 32-bit integers tightly, see "
-"[PackedInt32Array] for a more memory-friendly alternative."
-msgstr ""
-"专门设计用于存放 64 位整数值的数组。数据是紧密存放的,因此能够在数组较大时节省"
-"内存。\n"
-"[b]注意:[/b]该类型存储的是 64 位有符号整数,也就是说它可以取区间 [code]"
-"[-2^63, 2^63 - 1][/code] 内的值,即 [code][-9223372036854775808, "
-"9223372036854775807][/code]。超过这些界限将环绕往复。如果你只需要紧密存放 32 "
-"位整数,请参阅 [PackedInt32Array],是对内存更友好的选择。"
-
msgid "Constructs an empty [PackedInt64Array]."
msgstr "构造空的 [PackedInt64Array]。"
@@ -83018,11 +82193,6 @@ msgstr ""
"实例化该场景的节点架构。触发子场景的实例化。在根节点上触发 [constant Node."
"NOTIFICATION_SCENE_INSTANTIATED] 通知。"
-msgid ""
-"Pack will ignore any sub-nodes not owned by given node. See [member Node."
-"owner]."
-msgstr "包将忽略不属于给定节点的任何子节点。请参阅 [member Node.owner]。"
-
msgid "If passed to [method instantiate], blocks edits to the scene state."
msgstr "如果传递给 [method instantiate],则会阻止对场景状态的编辑。"
@@ -83055,25 +82225,6 @@ msgstr ""
msgid "A packed array of [String]s."
msgstr "[String] 紧缩数组。"
-msgid ""
-"An array specifically designed to hold [String]s. Packs data tightly, so it "
-"saves memory for large array sizes.\n"
-"If you want to join the strings in the array, use [method String.join].\n"
-"[codeblock]\n"
-"var string_array = PackedStringArray([\"hello\", \"world\"])\n"
-"var string = \" \".join(string_array)\n"
-"print(string) # \"hello world\"\n"
-"[/codeblock]"
-msgstr ""
-"专门设计用于存放 [String] 的数组。数据是紧密存放的,因此能够在数组较大时节省内"
-"存。\n"
-"如果要连接数组中的字符串,请使用 [method String.join]。\n"
-"[codeblock]\n"
-"var string_array = PackedStringArray([\"hello\", \"world\"])\n"
-"var string = \" \".join(string_array)\n"
-"print(string) # \"hello world\"\n"
-"[/codeblock]"
-
msgid "Constructs an empty [PackedStringArray]."
msgstr "构造空的 [PackedStringArray]。"
@@ -83143,16 +82294,6 @@ msgstr ""
msgid "A packed array of [Vector2]s."
msgstr "[Vector2] 紧缩数组。"
-msgid ""
-"An array specifically designed to hold [Vector2]. Packs data tightly, so it "
-"saves memory for large array sizes."
-msgstr ""
-"专门设计用于存放 [Vector2] 的数组。数据是紧密存放的,因此能够在数组较大时节省"
-"内存。"
-
-msgid "2D Navigation Astar Demo"
-msgstr "2D 导航 Astar 演示"
-
msgid "Constructs an empty [PackedVector2Array]."
msgstr "构造空的 [PackedVector2Array]。"
@@ -83327,13 +82468,6 @@ msgstr ""
msgid "A packed array of [Vector3]s."
msgstr "[Vector3] 紧缩数组。"
-msgid ""
-"An array specifically designed to hold [Vector3]. Packs data tightly, so it "
-"saves memory for large array sizes."
-msgstr ""
-"专门设计用于存放 [Vector3] 的数组。数据是紧密存放的,因此能够在数组较大时节省"
-"内存。"
-
msgid "Constructs an empty [PackedVector3Array]."
msgstr "构造空的 [PackedVector3Array]。"
@@ -83445,9 +82579,9 @@ msgstr ""
"PacketPeer 是基于数据包的协议(如 UDP)的抽象和基类。它提供了用于发送和接收数"
"据包的 API,可以发送原始数据或变量。这使得在协议之间传输数据变得容易,不必将数"
"据编码为低级字节或担心网络排序问题。\n"
-"[b]注意:[/b]导出到安卓时,在导出项目、或使用一键部署之前,请务必在安卓导出预"
-"设中,开启 [code]INTERNET[/code] 权限。否则,任何类型的网络通信,都将被 "
-"Android 阻止。"
+"[b]注意:[/b]导出到安卓时,在导出项目或使用一键部署之前,请务必在安卓导出预设"
+"中,开启 [code]INTERNET[/code] 权限。否则,任何类型的网络通信,都将被 Android "
+"阻止。"
msgid "Returns the number of packets currently available in the ring-buffer."
msgstr "返回环形缓冲区中当前可用的数据包数。"
@@ -83587,9 +82721,9 @@ msgstr ""
"PacketStreamPeer 提供了一个在流中使用数据包的包装器。这样就能够在基于数据包的"
"代码中使用 StreamPeer。PacketPeerStream 在 StreamPeer 的基础上实现了自定义协"
"议,因此用户不应该直接读取或写入被包装的 StreamPeer。\n"
-"[b]注意:[/b]导出到安卓时,在导出项目、或使用一键部署之前,请务必在安卓导出预"
-"设中,开启 [code]INTERNET[/code] 权限。否则,任何类型的网络通信,都将被 "
-"Android 阻止。"
+"[b]注意:[/b]导出到安卓时,在导出项目或使用一键部署之前,请务必在安卓导出预设"
+"中,开启 [code]INTERNET[/code] 权限。否则,任何类型的网络通信,都将被 Android "
+"阻止。"
msgid "The wrapped [StreamPeer] object."
msgstr "被包装的 [StreamPeer] 对象。"
@@ -83605,9 +82739,34 @@ msgid ""
"communication of any kind will be blocked by Android."
msgstr ""
"UDP 数据包对等体。可用于发送原始 UDP 数据包,也可以发送 [Variant]。\n"
-"[b]注意:[/b]导出到安卓时,在导出项目、或使用一键部署之前,请务必在安卓导出预"
-"设中,开启 [code]INTERNET[/code] 权限。否则,任何类型的网络通信,都将被 "
-"Android 阻止。"
+"[b]注意:[/b]导出到安卓时,在导出项目或使用一键部署之前,请务必在安卓导出预设"
+"中,开启 [code]INTERNET[/code] 权限。否则,任何类型的网络通信,都将被 Android "
+"阻止。"
+
+msgid ""
+"Binds this [PacketPeerUDP] to the specified [param port] and [param "
+"bind_address] with a buffer size [param recv_buf_size], allowing it to "
+"receive incoming packets.\n"
+"If [param bind_address] is set to [code]\"*\"[/code] (default), the peer will "
+"be bound on all available addresses (both IPv4 and IPv6).\n"
+"If [param bind_address] is set to [code]\"0.0.0.0\"[/code] (for IPv4) or "
+"[code]\"::\"[/code] (for IPv6), the peer will be bound to all available "
+"addresses matching that IP type.\n"
+"If [param bind_address] is set to any valid address (e.g. "
+"[code]\"192.168.1.101\"[/code], [code]\"::1\"[/code], etc.), the peer will "
+"only be bound to the interface with that address (or fail if no interface "
+"with the given address exists)."
+msgstr ""
+"将该 [PacketPeerUDP] 绑定到指定的 [param port] 和 [param bind_address],其缓冲"
+"区大小为 [param recv_buf_size],允许它接收传入的数据包。\n"
+"如果 [param bind_address] 被设置为 [code]\"*\"[/code](默认),对等体将被绑定"
+"到所有可用地址(IPv4 和 IPv6)。\n"
+"如果 [param bind_address] 被设置为 [code]\"0.0.0.0\"[/code](对于 IPv4)或 "
+"[code]\"::\"[/code](对于 IPv6),对等体将被绑定到匹配该 IP 类型的所有可用地"
+"址。\n"
+"如果 [param bind_address] 被设置为任何有效地址(例如 [code]\"192.168.1.101\"[/"
+"code]、[code]\"::1\"[/code] 等),对等体将只被绑定到该地址的接口(如果不存在具"
+"有给定地址的接口,则失败)。"
msgid "Closes the [PacketPeerUDP]'s underlying UDP socket."
msgstr "关闭该 [PacketPeerUDP] 底层 UDP 套接字。"
@@ -83704,76 +82863,6 @@ msgstr ""
"[b]注意:[/b]在向广播地址(例如:[code]255.255.255.255[/code])发送数据包之"
"前,必须启用 [method set_broadcast_enabled]。"
-msgid ""
-"Waits for a packet to arrive on the bound address. See [method bind].\n"
-"[b]Note:[/b] [method wait] can't be interrupted once it has been called. This "
-"can be worked around by allowing the other party to send a specific \"death "
-"pill\" packet like this:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"socket = PacketPeerUDP.new()\n"
-"# Server\n"
-"socket.set_dest_address(\"127.0.0.1\", 789)\n"
-"socket.put_packet(\"Time to stop\".to_ascii_buffer())\n"
-"\n"
-"# Client\n"
-"while socket.wait() == OK:\n"
-" var data = socket.get_packet().get_string_from_ascii()\n"
-" if data == \"Time to stop\":\n"
-" return\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var socket = new PacketPeerUDP();\n"
-"// Server\n"
-"socket.SetDestAddress(\"127.0.0.1\", 789);\n"
-"socket.PutPacket(\"Time to stop\".ToAsciiBuffer());\n"
-"\n"
-"// Client\n"
-"while (socket.Wait() == OK)\n"
-"{\n"
-" string data = socket.GetPacket().GetStringFromASCII();\n"
-" if (data == \"Time to stop\")\n"
-" {\n"
-" return;\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"等待数据包到达绑定的地址。见 [method bind]。\n"
-"[b]注意:[/b][method wait] 一旦被调用就无法中断。解决方法是让对方发送一个特定"
-"的“毒药”数据包,如下所示:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"socket = PacketPeerUDP.new()\n"
-"# 服务端\n"
-"socket.set_dest_address(\"127.0.0.1\", 789)\n"
-"socket.put_packet(\"Time to stop\".to_ascii_buffer())\n"
-"\n"
-"# 客户端\n"
-"while socket.wait() == OK:\n"
-" var data = socket.get_packet().get_string_from_ascii()\n"
-" if data == \"Time to stop\":\n"
-" return\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var socket = new PacketPeerUDP();\n"
-"// 服务端\n"
-"socket.SetDestAddress(\"127.0.0.1\", 789);\n"
-"socket.PutPacket(\"Time to stop\".ToAsciiBuffer());\n"
-"\n"
-"// 客户端\n"
-"while (socket.Wait() == OK)\n"
-"{\n"
-" string data = socket.GetPacket().GetStringFromASCII();\n"
-" if (data == \"Time to stop\")\n"
-" {\n"
-" return;\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
msgid "A GUI control that displays a [StyleBox]."
msgstr "显示 [StyleBox] 的 GUI 控件。"
@@ -83782,12 +82871,6 @@ msgid ""
"[PanelContainer]."
msgstr "[Panel] 是一种显示 [StyleBox] 的 GUI 控件。另见 [PanelContainer]。"
-msgid "2D Finite State Machine Demo"
-msgstr "2D 有限状态机演示"
-
-msgid "3D Inverse Kinematics Demo"
-msgstr "3D 逆运动学演示"
-
msgid "The [StyleBox] of this control."
msgstr "该控件的 [StyleBox]。"
@@ -83840,10 +82923,105 @@ msgstr "布尔值,用于确定背景纹理是否应被过滤。"
msgid "[Texture2D] to be applied to the [PanoramaSkyMaterial]."
msgstr "应用于该 [PanoramaSkyMaterial] 的 [Texture2D]。"
+msgid ""
+"This node is meant to replace [ParallaxBackground] and [ParallaxLayer]. The "
+"implementation may change in the future."
+msgstr ""
+"该节点旨在替换 [ParallaxBackground] 和 [ParallaxLayer]。后续版本中可能修改实现"
+"方法。"
+
msgid "A node used to create a parallax scrolling background."
msgstr "用于创建视差滚动背景的节点。"
msgid ""
+"A [Parallax2D] is used to create a parallax effect. It can move at a "
+"different speed relative to the camera movement using [member scroll_scale]. "
+"This creates an illusion of depth in a 2D game. If manual scrolling is "
+"desired, the [Camera2D] position can be ignored with [member "
+"ignore_camera_scroll].\n"
+"[b]Note:[/b] Any changes to this node's position made after it enters the "
+"scene tree will be overridden if [member ignore_camera_scroll] is "
+"[code]false[/code] or [member screen_offset] is modified."
+msgstr ""
+"[Parallax2D] 可用于创造视差效果。使用 [member scroll_scale] 可以在相机移动时,"
+"以不同的相对速度移动,这样就在 2D 游戏中创造出了深度的错觉。如果需要手动滚动,"
+"也可以使用 [member ignore_camera_scroll] 忽略 [Camera2D] 的位置。\n"
+"[b]注意:[/b]如果 [member ignore_camera_scroll] 为 [code]false[/code] 或者修改"
+"了 [member screen_offset],那么该节点进入场景树后发生的任何位移都会被覆盖。"
+
+msgid ""
+"Velocity at which the offset scrolls automatically, in pixels per second."
+msgstr "偏移量自动滚动的速度,单位为像素每秒。"
+
+msgid ""
+"If [code]true[/code], this [Parallax2D] is offset by the current camera's "
+"position. If the [Parallax2D] is in a [CanvasLayer] separate from the current "
+"camera, it may be desired to match the value with [member CanvasLayer."
+"follow_viewport_enabled]."
+msgstr ""
+"如果为 [code]true[/code],则会根据当前相机的位置对 [Parallax2D] 进行偏移。如"
+"果 [Parallax2D] 所处的 [CanvasLayer] 与当前相机不同,也可以使用 [member "
+"CanvasLayer.follow_viewport_enabled] 进行匹配。"
+
+msgid ""
+"If [code]true[/code], [Parallax2D]'s position is not affected by the position "
+"of the camera."
+msgstr "如果为 [code]true[/code],则 [Parallax2D] 的位置不受相机位置的影响。"
+
+msgid ""
+"Top-left limits for scrolling to begin. If the camera is outside of this "
+"limit, the [Parallax2D] stops scrolling. Must be lower than [member "
+"limit_end] minus the viewport size to work."
+msgstr ""
+"开始滚动的左上角限制。如果相机超出这个限制,[Parallax2D] 将停止滚动。必须低于 "
+"[member limit_end] 减去视口大小才能正常工作。"
+
+msgid ""
+"Bottom-right limits for scrolling to end. If the camera is outside of this "
+"limit, the [Parallax2D] will stop scrolling. Must be higher than [member "
+"limit_begin] and the viewport size combined to work."
+msgstr ""
+"滚动结束的右下角限制。如果相机超出这个限制,[Parallax2D] 将停止滚动。必须高于 "
+"[member limit_begin] 和视口大小的总和才能工作。"
+
+msgid ""
+"Repeats the [Texture2D] of each of this node's children and offsets them by "
+"this value. When scrolling, the node's position loops, giving the illusion of "
+"an infinite scrolling background if the values are larger than the screen "
+"size. If an axis is set to [code]0[/code], the [Texture2D] will not be "
+"repeated."
+msgstr ""
+"根据这个值将每个子节点的 [Texture2D] 进行重复和偏移。滚动时该节点的位置会发生"
+"循环,取值大于屏幕尺寸时就会造成背景无限滚动的错觉。某个轴如果为 [code]0[/"
+"code],则 [Texture2D] 不会重复。"
+
+msgid ""
+"Overrides the amount of times the texture repeats. Each texture copy spreads "
+"evenly from the original by [member repeat_size]. Useful for when zooming out "
+"with a camera."
+msgstr ""
+"覆盖纹理重复的次数。每个纹理副本都会相对于前一个往后挪 [member repeat_size]。"
+"适用于相机远离的情况。"
+
+msgid ""
+"Offset used to scroll this [Parallax2D]. This value is updated automatically "
+"unless [member ignore_camera_scroll] is [code]true[/code]."
+msgstr ""
+"用于滚动 [Parallax2D] 的偏移量。[member ignore_camera_scroll] 为 [code]false[/"
+"code] 时这个值会自动更新。"
+
+msgid ""
+"The [Parallax2D]'s offset. Similar to [member screen_offset] and [member "
+"Node2D.position], but will not be overridden.\n"
+"[b]Note:[/b] Values will loop if [member repeat_size] is set higher than "
+"[code]0[/code]."
+msgstr ""
+"[Parallax2D] 的偏移量。与 [member screen_offset] 和 [member Node2D.position] "
+"类似,但是不会被覆盖。\n"
+"[b]注意:[/b]如果 [member repeat_size] 大于 [code]0[/code],则这个值会发生循"
+"环。"
+
+msgid ""
"A ParallaxBackground uses one or more [ParallaxLayer] child nodes to create a "
"parallax effect. Each [ParallaxLayer] can move at a different speed using "
"[member ParallaxLayer.motion_offset]. This creates an illusion of depth in a "
@@ -84117,7 +83295,7 @@ msgid ""
msgstr ""
"如果为 [code]true[/code],[member GPUParticles3D.collision_base_size] 乘以粒子"
"的有效缩放(请参阅 [member scale_min]、[member scale_max]、[member "
-"scale_curve]、和 [member scale_over_velocity_curve])。"
+"scale_curve] 和 [member scale_over_velocity_curve])。"
msgid ""
"Each particle's initial color. If the [GPUParticles2D]'s [code]texture[/code] "
@@ -84171,13 +83349,6 @@ msgstr ""
"代替。"
msgid ""
-"The box's extents if [member emission_shape] is set to [constant "
-"EMISSION_SHAPE_BOX]."
-msgstr ""
-"[member emission_shape] 被设置为 [constant EMISSION_SHAPE_BOX] 时,该框的范"
-"围。"
-
-msgid ""
"Particle color will be modulated by color determined by sampling this texture "
"at the same point as the [member emission_point_texture].\n"
"[b]Note:[/b] [member emission_color_texture] multiplies the particle mesh's "
@@ -84929,45 +84100,6 @@ msgid "Creates packages that can be loaded into a running project."
msgstr "创建可以加载到正在运行的项目中的包。"
msgid ""
-"The [PCKPacker] is used to create packages that can be loaded into a running "
-"project using [method ProjectSettings.load_resource_pack].\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var packer = PCKPacker.new()\n"
-"packer.pck_start(\"test.pck\")\n"
-"packer.add_file(\"res://text.txt\", \"text.txt\")\n"
-"packer.flush()\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var packer = new PCKPacker();\n"
-"packer.PckStart(\"test.pck\");\n"
-"packer.AddFile(\"res://text.txt\", \"text.txt\");\n"
-"packer.Flush();\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"The above [PCKPacker] creates package [code]test.pck[/code], then adds a file "
-"named [code]text.txt[/code] at the root of the package."
-msgstr ""
-"[PCKPacker] 可以创建打包文件,项目运行时可以使用 [method ProjectSettings."
-"load_resource_pack] 来加载打包文件。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var packer = PCKPacker.new()\n"
-"packer.pck_start(\"test.pck\")\n"
-"packer.add_file(\"res://text.txt\", \"text.txt\")\n"
-"packer.flush()\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var packer = new PCKPacker();\n"
-"packer.PckStart(\"test.pck\");\n"
-"packer.AddFile(\"res://text.txt\", \"text.txt\");\n"
-"packer.Flush();\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"上面的例子中,[PCKPacker] 创建了打包文件 [code]test.pck[/code],但后将名为 "
-"[code]text.txt[/code] 的文件添加到了包的根目录。"
-
-msgid ""
"Adds the [param source_path] file to the current PCK package at the [param "
"pck_path] internal path (should start with [code]res://[/code])."
msgstr ""
@@ -85012,9 +84144,9 @@ msgid ""
"[b]Note:[/b] Custom monitors do not support negative values. Negative values "
"are clamped to 0."
msgstr ""
-"该类提供对许多与性能相关的不同监视器的访问,例如内存使用情况、绘制调用、和 "
-"FPS。这些值与编辑器的[b]调试器[/b]面板中的[b]监视[/b]选项卡中显示的值相同。通"
-"过使用该类的 [method get_monitor] 方法,你可以从代码中访问该数据。\n"
+"该类提供对许多与性能相关的不同监视器的访问,例如内存使用情况、绘制调用和 FPS。"
+"这些值与编辑器的[b]调试器[/b]面板中的[b]监视[/b]选项卡中显示的值相同。通过使用"
+"该类的 [method get_monitor] 方法,你可以从代码中访问该数据。\n"
"可以使用 [method add_custom_monitor] 方法添加自定义监视器。在编辑器的[b]调试器"
"[/b]面板的[b]监视[/b]选项卡中,自定义监视器可以与内置监视器一起使用。\n"
"[b]注意:[/b]某些内置监视器仅在调试模式下可用,并且在以发布模式导出的项目中使"
@@ -85276,8 +84408,8 @@ msgid ""
"include culled objects (either via hiding nodes, frustum culling or occlusion "
"culling). [i]Lower is better.[/i]"
msgstr ""
-"在上一个渲染帧中的对象总数。该指标不包括剔除的对象(通过隐藏节点、视锥剔除、或"
-"遮挡剔除)。[i]越低越好。[/i]"
+"在上一个渲染帧中的对象总数。该指标不包括剔除的对象(通过隐藏节点、视锥剔除或遮"
+"挡剔除)。[i]越低越好。[/i]"
msgid ""
"The total number of vertices or indices rendered in the last rendered frame. "
@@ -85288,8 +84420,8 @@ msgid ""
"vertex count). [i]Lower is better.[/i]"
msgstr ""
"在上一个渲染帧中渲染的顶点或索引的总数。该指标不包括来自被剔除对象的图元(通过"
-"隐藏节点、视锥剔除、或遮挡剔除)。由于预深度阶段和阴影阶段,图元的数量总是高于"
-"场景中的实际顶点数量(通常是原始顶点数量的两倍或三倍)。[i]越低越好。[/i]"
+"隐藏节点、视锥剔除或遮挡剔除)。由于预深度阶段和阴影阶段,图元的数量总是高于场"
+"景中的实际顶点数量(通常是原始顶点数量的两倍或三倍)。[i]越低越好。[/i]"
msgid ""
"The total number of draw calls performed in the last rendered frame. This "
@@ -85298,7 +84430,7 @@ msgid ""
"[i]Lower is better.[/i]"
msgstr ""
"在上一个渲染帧中执行的绘制调用的总数。该指标不包括剔除对象(通过隐藏节点、视锥"
-"剔除、或遮挡剔除),因为它们不会导致绘制调用。[i]越低越好。[/i]"
+"剔除或遮挡剔除),因为它们不会导致绘制调用。[i]越低越好。[/i]"
msgid ""
"The amount of video memory used (texture and vertex memory combined, in "
@@ -85485,17 +84617,6 @@ msgstr ""
"体。"
msgid ""
-"Called during physics processing, allowing you to read and safely modify the "
-"simulation state for the object. By default, it works in addition to the "
-"usual physics behavior, but the [member custom_integrator] property allows "
-"you to disable the default behavior and do fully custom force integration for "
-"a body."
-msgstr ""
-"在物理处理过程中被调用,允许你读取并安全地修改对象的模拟状态。默认情况下,它会"
-"和通常的物理行为一起生效,但是你可以通过 [member custom_integrator] 属性禁用默"
-"认行为,为物体施加完全自定义的合力。"
-
-msgid ""
"Damps the body's rotation. By default, the body will use the [b]Default "
"Angular Damp[/b] in [b]Project > Project Settings > Physics > 3d[/b] or any "
"value override set by an [Area3D] the body is in. Depending on [member "
@@ -85523,6 +84644,26 @@ msgid "Sets the body's transform."
msgstr "设置该物体的变换。"
msgid ""
+"The body's bounciness. Values range from [code]0[/code] (no bounce) to "
+"[code]1[/code] (full bounciness).\n"
+"[b]Note:[/b] Even with [member bounce] set to [code]1.0[/code], some energy "
+"will be lost over time due to linear and angular damping. To have a "
+"[PhysicalBone3D] that preserves all its energy over time, set [member bounce] "
+"to [code]1.0[/code], [member linear_damp_mode] to [constant "
+"DAMP_MODE_REPLACE], [member linear_damp] to [code]0.0[/code], [member "
+"angular_damp_mode] to [constant DAMP_MODE_REPLACE], and [member angular_damp] "
+"to [code]0.0[/code]."
+msgstr ""
+"身体的反弹力。值范围从 [code]0[/code] (无反弹)到 [code]1[/code](完全反"
+"弹)。\n"
+"[b]注意:[/b]即使将 [member bounce] 设置为 [code]1.0[/code],由于线性和角度阻"
+"尼,一些能量也会随着时间的推移而损失。要让 [PhysicalBone3D] 随时间推移保留其所"
+"有能量,请将 [member bounce] 设置为 [code]1.0[/code]、[member "
+"linear_damp_mode] 设置为 [constant DAMP_MODE_REPLACE]、[member linear_damp] 设"
+"置为 [code]0.0[/code]、[member angular_damp_mode] 设置为 [constant "
+"DAMP_MODE_REPLACE]、并将 [member angular_damp] 设置为 [code]0.0[/code]。"
+
+msgid ""
"If [code]true[/code], the body is deactivated when there is no movement, so "
"it will not take part in the simulation until it is awakened by an external "
"force."
@@ -85531,16 +84672,6 @@ msgstr ""
"与模拟。"
msgid ""
-"If [code]true[/code], internal force integration will be disabled (like "
-"gravity or air friction) for this body. Other than collision response, the "
-"body will only move as determined by the [method _integrate_forces] function, "
-"if defined."
-msgstr ""
-"如果为 [code]true[/code],则该物体的内力积分将被禁用(如重力或空气摩擦)。除了"
-"碰撞响应之外,物体将仅根据 [method _integrate_forces] 函数确定的方式移动(如果"
-"已定义)。"
-
-msgid ""
"The body's friction, from [code]0[/code] (frictionless) to [code]1[/code] "
"(max friction)."
msgstr ""
@@ -85610,6 +84741,32 @@ msgid ""
msgstr "在这种模式下,物体的阻尼值将替换掉区域中设置的任何值或默认值。"
msgid ""
+"Adds a collision exception to the physical bone.\n"
+"Works just like the [RigidBody3D] node."
+msgstr ""
+"向物理骨骼添加一个碰撞例外。\n"
+"就像 [RigidBody3D] 节点一样工作。"
+
+msgid ""
+"Removes a collision exception to the physical bone.\n"
+"Works just like the [RigidBody3D] node."
+msgstr ""
+"移除物理骨骼的一个碰撞例外。\n"
+"就像 [RigidBody3D] 节点一样工作。"
+
+msgid ""
+"Tells the [PhysicalBone3D] nodes in the Skeleton to start simulating and "
+"reacting to the physics world.\n"
+"Optionally, a list of bone names can be passed-in, allowing only the passed-"
+"in bones to be simulated."
+msgstr ""
+"让 Skeleton 中的 [PhysicalBone3D] 节点开始仿真模拟,对物理世界做出反应。\n"
+"可以传入骨骼名称列表,只对传入的骨骼进行仿真模拟。"
+
+msgid "Tells the [PhysicalBone3D] nodes in the Skeleton to stop simulating."
+msgstr "让 Skeleton 中的 [PhysicalBone3D] 节点停止仿真模拟。"
+
+msgid ""
"A material that defines a sky for a [Sky] resource by a set of physical "
"properties."
msgstr "通过一组物理属性定义 [Sky] 资源的天空的材质。"
@@ -85630,8 +84787,8 @@ msgstr ""
"该 [PhysicalSkyMaterial] 使用 Preetham 解析日光模型,根据物理属性绘制一个天"
"空。这会产生比 [ProceduralSkyMaterial] 更加逼真的天空,但速度稍慢且灵活性较"
"差。\n"
-"该 [PhysicalSkyMaterial] 仅支持一个太阳。太阳的颜色、能量、和方向,取自场景树"
-"中的第一个 [DirectionalLight3D]。\n"
+"该 [PhysicalSkyMaterial] 仅支持一个太阳。太阳的颜色、能量和方向,取自场景树中"
+"的第一个 [DirectionalLight3D]。\n"
"由于它基于一个日光模型,所以随着日落的结束,天空会逐渐变黑。如果想要一个完整的"
"白天/黑夜循环,则必须通过将其转换为一个 [ShaderMaterial],并将一个夜空直接添加"
"到生成的着色器中以添加一个夜空。"
@@ -85796,9 +84953,9 @@ msgstr ""
"然后尝试沿向量 [param motion] 移动实体。如果碰撞会阻止实体沿整个路径移动,则返"
"回 [code]true[/code]。\n"
"[param collision] 是类型为 [KinematicCollision2D] 的一个可选对象,它包含有关停"
-"止时碰撞、或沿运动接触另一个实体时碰撞的附加信息。\n"
-"[param safe_margin] 是用于碰撞恢复的额外余量(有关更多详细信息,请参阅 "
-"[member CharacterBody2D.safe_margin])。\n"
+"止时碰撞或沿运动接触另一个实体时碰撞的附加信息。\n"
+"[param safe_margin] 是用于碰撞恢复的额外余量(详情见 [member CharacterBody2D."
+"safe_margin])。\n"
"如果 [param recovery_as_collision] 为 [code]true[/code],恢复阶段的任何穿透也"
"将被报告为碰撞;这对于检查该实体是否会[i]接触[/i]其他任意实体很有用。"
@@ -85890,9 +85047,9 @@ msgstr ""
"然后尝试沿向量 [param motion] 移动实体。如果碰撞会阻止实体沿整个路径移动,则返"
"回 [code]true[/code]。\n"
"[param collision] 是类型为 [KinematicCollision3D] 的一个可选对象,它包含有关停"
-"止时碰撞、或沿运动接触另一个实体时碰撞的附加信息。\n"
-"[param safe_margin] 是用于碰撞恢复的额外余量(有关更多详细信息,请参阅 "
-"[member CharacterBody3D.safe_margin])。\n"
+"止时碰撞或沿运动接触另一个实体时碰撞的附加信息。\n"
+"[param safe_margin] 是用于碰撞恢复的额外余量(详情见 [member CharacterBody3D."
+"safe_margin])。\n"
"如果 [param recovery_as_collision] 为 [code]true[/code],恢复阶段的任何穿透也"
"将被报告为碰撞;这对于检查该实体是否会[i]接触[/i]其他任意实体很有用。\n"
"[param max_collisions] 允许检索一个以上的碰撞结果。"
@@ -86102,9 +85259,6 @@ msgid ""
"translation and rotation."
msgstr "返回给定相对位置的物体速度,包括平移和旋转。"
-msgid "Calls the built-in force integration code."
-msgstr "调用内置的力集成代码。"
-
msgid ""
"Sets the body's total constant positional forces applied during each physics "
"update.\n"
@@ -86655,6 +85809,25 @@ msgstr ""
"如果为 [code]true[/code],则从碰撞对象的弹跳性中减去弹性,而不是添加它。"
msgid ""
+"The body's bounciness. Values range from [code]0[/code] (no bounce) to "
+"[code]1[/code] (full bounciness).\n"
+"[b]Note:[/b] Even with [member bounce] set to [code]1.0[/code], some energy "
+"will be lost over time due to linear and angular damping. To have a "
+"[PhysicsBody3D] that preserves all its energy over time, set [member bounce] "
+"to [code]1.0[/code], the body's linear damp mode to [b]Replace[/b] (if "
+"applicable), its linear damp to [code]0.0[/code], its angular damp mode to "
+"[b]Replace[/b] (if applicable), and its angular damp to [code]0.0[/code]."
+msgstr ""
+"身体的反弹力。值范围从 [code]0[/code] (无反弹)到 [code]1[/code](完全反"
+"弹)。\n"
+"[b]注意:[/b]即使将 [member bounce] 设置为 [code]1.0[/code],由于线性和角度阻"
+"尼,一些能量也会随着时间的推移而损失。要让 [PhysicsBody3D] 随时间推移保留其所"
+"有能量,请将 [member bounce] 设置为 [code]1.0[/code]、将该物体的线性阻尼模式设"
+"置为 [b]Replace[/b](如果可用)、将它的线性阻尼设置为 [code]0.0[/code]、它的角"
+"度阻尼模式设置为 [b]Replace[/b](如果可用)、并将它的角度阻尼设置为 "
+"[code]0.0[/code]。"
+
+msgid ""
"The body's friction. Values range from [code]0[/code] (frictionless) to "
"[code]1[/code] (maximum friction)."
msgstr ""
@@ -86928,16 +86101,6 @@ msgstr ""
"回来。"
msgid ""
-"Creates a 2D area object in the physics server, and returns the [RID] that "
-"identifies it. Use [method area_add_shape] to add shapes to it, use [method "
-"area_set_transform] to set its transform, and use [method area_set_space] to "
-"add the area to a space."
-msgstr ""
-"在物理服务中创建一个 2D 区域对象,并返回标识它的 [RID]。使用 [method "
-"area_add_shape] 为其添加形状,使用 [method area_set_transform] 设置其变换,并"
-"使用 [method area_set_space] 将区域添加到一个空间。"
-
-msgid ""
"Returns the [code]ObjectID[/code] of the canvas attached to the area. Use "
"[method @GlobalScope.instance_from_id] to retrieve a [CanvasLayer] from a "
"nonzero [code]ObjectID[/code]."
@@ -87251,16 +86414,6 @@ msgstr ""
"加回来。"
msgid ""
-"Creates a 2D body object in the physics server, and returns the [RID] that "
-"identifies it. Use [method body_add_shape] to add shapes to it, use [method "
-"body_set_state] to set its transform, and use [method body_set_space] to add "
-"the body to a space."
-msgstr ""
-"在物理服务中创建一个 2D 物体对象,并返回标识它的 [RID]。可使用 [method "
-"body_add_shape] 为其添加形状,使用 [method body_set_state] 设置其变换,以及使"
-"用 [method body_set_space] 将实体添加到一个空间。"
-
-msgid ""
"Returns the [code]ObjectID[/code] of the canvas attached to the body. Use "
"[method @GlobalScope.instance_from_id] to retrieve a [CanvasLayer] from a "
"nonzero [code]ObjectID[/code]."
@@ -87354,13 +86507,6 @@ msgid ""
msgstr "返回该实体给定状态的值。有关可用状态的列表,请参阅 [enum BodyState]。"
msgid ""
-"Returns [code]true[/code] if the body uses a callback function to calculate "
-"its own physics (see [method body_set_force_integration_callback])."
-msgstr ""
-"如果实体使用回调函数来计算自己的物理运算(请参阅 [method "
-"body_set_force_integration_callback]),则返回 [code]true[/code]。"
-
-msgid ""
"Removes [param excepted_body] from the body's list of collision exceptions, "
"so that collisions with it are no longer ignored."
msgstr ""
@@ -87439,23 +86585,6 @@ msgstr ""
"并在发生碰撞时纠正它的运动。"
msgid ""
-"Sets the function used to calculate physics for the body, if that body allows "
-"it (see [method body_set_omit_force_integration]).\n"
-"The force integration function takes the following two parameters:\n"
-"1. a [PhysicsDirectBodyState2D] [code]state[/code]: used to retrieve and "
-"modify the body's state,\n"
-"2. a [Variant] [param userdata]: optional user data.\n"
-"[b]Note:[/b] This callback is currently not called in Godot Physics."
-msgstr ""
-"如果该实体允许的话,设置用于计算实体物理的函数(参见 [method "
-"body_set_omit_force_integration])。\n"
-"该力的积分函数采用以下两个参数:\n"
-"1. 一个 [PhysicsDirectBodyState2D] [code]state[/code]:用于检索和修改实体的状"
-"态,\n"
-"2. 一个 [Variant] [param userdata]:可选的用户数据。\n"
-"[b]注意:[/b]该回调目前在 Godot 物理中不会被调用。"
-
-msgid ""
"Sets the maximum number of contacts that the body can report. If [param "
"amount] is greater than zero, then the body will keep track of at most this "
"many contacts with other bodies."
@@ -87468,13 +86597,6 @@ msgid ""
msgstr "设置该实体的模式。有关可用模式的列表,请参阅 [enum BodyMode]。"
msgid ""
-"Sets whether the body uses a callback function to calculate its own physics "
-"(see [method body_set_force_integration_callback])."
-msgstr ""
-"设置一个物体是否使用回调函数来计算它自己的物理(参见 [method "
-"body_set_force_integration_callback])。"
-
-msgid ""
"Sets the value of the given body parameter. See [enum BodyParameter] for the "
"list of available parameters."
msgstr "设置给定实体参数的值。有关可用参数列表,请参阅 [enum BodyParameter]。"
@@ -87532,7 +86654,7 @@ msgstr ""
"- 如果从未明确设置参数 [constant BODY_PARAM_CENTER_OF_MASS],则该参数的值将根"
"据实体的形状重新计算。\n"
"- 如果参数 [constant BODY_PARAM_INERTIA] 被设置为一个 [code]<= 0.0[/code] 的"
-"值,则该参数的值将根据实体的形状、质量、和质心重新计算。\n"
+"值,则该参数的值将根据实体的形状、质量和质心重新计算。\n"
"[b]注意:[/b]要从一个空间中移除实体,且不立即将其添加回其他地方,请使用 "
"[code]PhysicsServer2D.body_set_space(body, RID())[/code]。"
@@ -87562,14 +86684,14 @@ msgid ""
"identifies it. Use [method shape_set_data] to set the capsule's height and "
"radius."
msgstr ""
-"在物理服务中创建一个 2D 胶囊形状,并返回标识它的 [RID]。可使用 [method "
+"在物理服务器中创建一个 2D 胶囊形状,并返回标识它的 [RID]。可使用 [method "
"shape_set_data] 设置胶囊的高度和半径。"
msgid ""
"Creates a 2D circle shape in the physics server, and returns the [RID] that "
"identifies it. Use [method shape_set_data] to set the circle's radius."
msgstr ""
-"在物理服务中创建一个 2D 圆形,并返回标识它的 [RID]。可使用 [method "
+"在物理服务器中创建一个 2D 圆形,并返回标识它的 [RID]。可使用 [method "
"shape_set_data] 设置圆的半径。"
msgid ""
@@ -87577,7 +86699,7 @@ msgid ""
"[RID] that identifies it. Use [method shape_set_data] to set the concave "
"polygon's segments."
msgstr ""
-"在物理服务中创建一个 2D 凹多边形形状,并返回标识它的 [RID]。可使用 [method "
+"在物理服务器中创建一个 2D 凹多边形形状,并返回标识它的 [RID]。可使用 [method "
"shape_set_data] 设置凹多边形的线段。"
msgid ""
@@ -87585,7 +86707,7 @@ msgid ""
"[RID] that identifies it. Use [method shape_set_data] to set the convex "
"polygon's points."
msgstr ""
-"在物理服务中创建一个 2D 凸多边形形状,并返回标识它的 [RID]。可使用 [method "
+"在物理服务器中创建一个 2D 凸多边形形状,并返回标识它的 [RID]。可使用 [method "
"shape_set_data] 设置凸多边形的点。"
msgid ""
@@ -87629,7 +86751,7 @@ msgid ""
"[method joint_make_groove] or [method joint_make_pin]. Use [method "
"joint_set_param] to set generic joint parameters."
msgstr ""
-"在物理服务中创建一个 2D 关节,并返回标识它的 [RID]。要设置关节类型,请使用 "
+"在物理服务器中创建一个 2D 关节,并返回标识它的 [RID]。要设置关节类型,请使用 "
"[method joint_make_damped_spring]、[method joint_make_groove] 或 [method "
"joint_make_pin]。可使用 [method joint_set_param] 设置通用关节参数。"
@@ -87704,7 +86826,7 @@ msgid ""
"that identifies it. Use [method shape_set_data] to set the rectangle's half-"
"extents."
msgstr ""
-"在物理服务中创建一个 2D 矩形形状,并返回标识它的 [RID]。可使用 [method "
+"在物理服务器中创建一个 2D 矩形形状,并返回标识它的 [RID]。可使用 [method "
"shape_set_data] 设置该矩形的半边距。"
msgid ""
@@ -87712,7 +86834,7 @@ msgid ""
"identifies it. Use [method shape_set_data] to set the segment's start and end "
"points."
msgstr ""
-"在物理服务中创建一个 2D 线段形状,并返回标识它的 [RID]。可使用 [method "
+"在物理服务器中创建一个 2D 线段形状,并返回标识它的 [RID]。可使用 [method "
"shape_set_data] 设置线段的起点和终点。"
msgid ""
@@ -87720,7 +86842,7 @@ msgid ""
"[RID] that identifies it. Use [method shape_set_data] to set the shape's "
"[code]length[/code] and [code]slide_on_slope[/code] properties."
msgstr ""
-"在物理服务中创建一个 2D 分离射线形状,并返回标识它的 [RID]。可使用 [method "
+"在物理服务器中创建一个 2D 分离射线形状,并返回标识它的 [RID]。可使用 [method "
"shape_set_data] 设置形状的 [code]length[/code] 和 [code]slide_on_slope[/code] "
"属性。"
@@ -87729,8 +86851,8 @@ msgid ""
"[code]false[/code], then the physics server will not do anything in its "
"physics step."
msgstr ""
-"激活或停用 2D 物理服务。如果 [param active] 为 [code]false[/code],则物理服务"
-"将不会在其物理步骤中执行任何操作。"
+"激活或停用 2D 物理服务器。如果 [param active] 为 [code]false[/code],则物理服"
+"务器将不会在其物理迭代中执行任何操作。"
msgid ""
"Returns the shape data that defines the configuration of the shape, such as "
@@ -87802,8 +86924,8 @@ msgid ""
"identifies it. A space contains bodies and areas, and controls the stepping "
"of the physics simulation of the objects in it."
msgstr ""
-"在物理服务中创建一个 2D 空间,并返回标识它的 [RID]。空间包含实体和区域,并控制"
-"其中实体的物理模拟的步骤。"
+"在物理服务器中创建一个 2D 空间,并返回标识它的 [RID]。空间包含实体和区域,并控"
+"制其中实体的物理模拟的步骤。"
msgid ""
"Returns the state of a space, a [PhysicsDirectSpaceState2D]. This object can "
@@ -87825,8 +86947,8 @@ msgid ""
"then the physics server will not do anything with this space in its physics "
"step."
msgstr ""
-"激活或停用该空间。如果 [param active] 为 [code]false[/code],那么物理服务将不"
-"会在它的物理步骤中对这个空间做任何事情。"
+"激活或停用该空间。如果 [param active] 为 [code]false[/code],那么物理服务器将"
+"不会在它的物理迭代中对这个空间做任何事情。"
msgid ""
"Sets the value of the given space parameter. See [enum SpaceParameter] for "
@@ -87838,7 +86960,7 @@ msgid ""
"[RID] that identifies it. Use [method shape_set_data] to set the shape's "
"normal direction and distance properties."
msgstr ""
-"在物理服务中创建一个 2D 世界边界形状,并返回标识它的 [RID]。可使用 [method "
+"在物理服务器中创建一个 2D 世界边界形状,并返回标识它的 [RID]。可使用 [method "
"shape_set_data] 设置形状的法线方向和距离属性。"
msgid ""
@@ -88088,36 +87210,36 @@ 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 ""
-"这个区域不影响重力/阻尼。这些一般都是只存在于检测碰撞的区域,以及进入或离开它"
-"们的物体。"
+"该区域不影响重力/阻尼。这些区域的存在通常只是为了检测碰撞、以及物体是否进入或"
+"离开它们。"
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 ""
-"此区域把它的重力/阻尼加到目前已经计算过的对象上。这样一来,许多重叠的区域可以"
-"结合它们的物理运算来产生有趣的效果。"
+"该区域将其重力/阻尼值加到目前已经计算出的结果上。这样一来,许多重叠的区域可以"
+"结合它们的物理运算来创建有趣的效果。"
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 ""
-"这个区域把它的重力/阻尼加到迄今为止已经计算出来的任何东西上。然后停止考虑其余"
-"的区域,甚至默认的区域。"
+"该区域将其重力/阻尼值加到目前已经计算出的结果上。然后停止考虑其余区域,甚至是"
+"默认区域。"
msgid ""
"This area replaces any gravity/damp, even the default one, and stops taking "
"into account the rest of the areas."
-msgstr "这个区域取代了任何重力/阻尼,甚至是默认的,并停止考虑其余的区域。"
+msgstr "该区域将替换所有重力/阻尼,甚至是默认值,并停止考虑其余区域。"
msgid ""
"This area replaces any gravity/damp calculated so far, but keeps calculating "
"the rest of the areas, down to the default one."
msgstr ""
-"这个区域取代了到目前为止计算的任何重力/阻尼,但继续计算其余的区域,直到默认的"
-"区域。"
+"该区域将替换目前已经计算出的任何重力/阻尼,但仍将继续计算其余区域,直到默认区"
+"域。"
msgid ""
"Constant for static bodies. In this mode, a body can be only moved by user "
@@ -88151,7 +87273,7 @@ msgstr "常量,用于设置/获取物体的反弹系数。该参数的默认
msgid ""
"Constant to set/get a body's friction. The default value of this parameter is "
"[code]1.0[/code]."
-msgstr "常量,用于设置/获取实体摩擦力。该参数的默认值为 [code]1.0[/code]。"
+msgstr "常量,用于设置/获取物体的摩擦力。该参数的默认值为 [code]1.0[/code]。"
msgid ""
"Constant to set/get a body's mass. The default value of this parameter is "
@@ -88164,13 +87286,12 @@ msgid ""
"0.0[/code], then the value of that parameter will be recalculated based on "
"the body's shapes, mass, and center of mass."
msgstr ""
-"常量,用于设置/获取一个实体质量。该参数的默认值为[code]1.0[/code]。如果该实体"
-"的模式被设置为 [constant BODY_MODE_RIGID],那么设置这个参数会有以下附加效"
-"果:\n"
-"- 如果该参数 [constant BODY_PARAM_CENTER_OF_MASS] 从未被明确设置,则该参数的值"
-"将根据实体的形状重新计算。\n"
-"- 如果该参数 [constant BODY_PARAM_INERTIA] 被设置为值 [code]<= 0.0[/code],则"
-"该参数的值将根据该实体的形状、质量、和质心重新计算。"
+"常量,用于设置/获取物体的质量。该参数的默认值为[code]1.0[/code]。如果该物体的"
+"模式被设置为 [constant BODY_MODE_RIGID],那么设置这个参数会有以下额外效果:\n"
+"- 如果参数 [constant BODY_PARAM_CENTER_OF_MASS] 尚未被明确设置,则该参数的值将"
+"根据物体的形状重新计算。\n"
+"- 如果参数 [constant BODY_PARAM_INERTIA] 被设置为 [code]<= 0.0[/code],则该参"
+"数的值将根据该物体的形状、质量和质心重新计算。"
msgid ""
"Constant to set/get a body's inertia. The default value of this parameter is "
@@ -88178,9 +87299,8 @@ msgid ""
"code], then the inertia will be recalculated based on the body's shapes, "
"mass, and center of mass."
msgstr ""
-"常量,用于设置/获取一个实体惯性。该参数的默认值为[code]0.0[/code]。如果实体的"
-"惯性被设置为一个值 [code]<= 0.0[/code],那么惯性将根据实体的形状、质量、和质心"
-"重新计算。"
+"常量,用于设置/获取物体的惯性。该参数的默认值为 [code]0.0[/code]。如果物体的惯"
+"性被设置为 [code]<= 0.0[/code],则惯性将根据该物体的形状、质量和质心重新计算。"
msgid ""
"Constant to set/get a body's center of mass position in the body's local "
@@ -88189,9 +87309,9 @@ msgid ""
"based on the body's shapes when setting the parameter [constant "
"BODY_PARAM_MASS] or when calling [method body_set_space]."
msgstr ""
-"常量,用于在实体局部坐标系中设置/获取一个实体质心位置。该参数的默认值为 "
+"常量,用于在物体局部坐标系中设置/获取该物体的质心位置。该参数的默认值为 "
"[code]Vector2(0,0)[/code]。如果该参数从未明确设置,则在设置参数 [constant "
-"BODY_PARAM_MASS] 或调用 [method body_set_space] 时,会根据实体的形状重新计算。"
+"BODY_PARAM_MASS] 或调用 [method body_set_space] 时,会根据物体的形状重新计算。"
msgid ""
"Constant to set/get a body's gravity multiplier. The default value of this "
@@ -88232,7 +87352,7 @@ msgstr "代表 [enum BodyParameter] 枚举的大小。"
msgid ""
"The body's damping value is added to any value set in areas or the default "
"value."
-msgstr "物体的阻尼值会叠加到替换区域中所设置的值或默认值。"
+msgstr "物体的阻尼值将被加到区域中所设置的值或默认值上。"
msgid ""
"The body's damping value replaces any value set in areas or the default value."
@@ -88254,7 +87374,7 @@ msgid "Constant to set/get whether the body can sleep."
msgstr "常量,用于设置/获取物体是否可以休眠。"
msgid "Constant to create pin joints."
-msgstr "常量,用于创造钉关节。"
+msgstr "常量,用于创造销关节。"
msgid "Constant to create groove joints."
msgstr "常量,用于创造槽关节。"
@@ -88362,22 +87482,22 @@ msgstr "通过形变实现连续的碰撞检测。它是最慢的 CCD 方法,
msgid ""
"The value of the first parameter and area callback function receives, when an "
"object enters one of its shapes."
-msgstr "当对象进入其形状之一时,第一个参数和区域回调函数接收的值。"
+msgstr "当对象进入区域的任一形状时,区域回调函数接收的第一个参数值。"
msgid ""
"The value of the first parameter and area callback function receives, when an "
"object exits one of its shapes."
-msgstr "当对象退出其形状之一时,第一个参数和区域回调函数接收的值。"
+msgstr "当对象退出区域的任一形状时,区域回调函数接收的第一个参数值。"
msgid "Constant to get the number of objects that are not sleeping."
-msgstr "常量,用以获取未处于睡眠状态的对象的数量。"
+msgstr "常量,用以获取未休眠的对象的数量。"
msgid "Constant to get the number of possible collisions."
msgstr "常量,用以获取可能的碰撞数。"
msgid ""
"Constant to get the number of space regions where a collision could occur."
-msgstr "常量,用以获取可能发生碰撞的空间区域数。"
+msgstr "常量,用以获取可能发生碰撞的空间区块数。"
msgid ""
"Provides virtual methods that can be overridden to create custom "
@@ -88505,9 +87625,6 @@ msgid ""
"be reassigned later."
msgstr "从一个区域移除所有形状。它不会删除形状,因此它们可以稍后重新分配。"
-msgid "Creates an [Area3D]."
-msgstr "创建 [Area3D]。"
-
msgid "Returns the physics layer or layers an area belongs to."
msgstr "返回该区域所属的物理层。"
@@ -88720,13 +87837,6 @@ msgid ""
msgstr "如果为 [code]true[/code],则启用连续碰撞检测模式。"
msgid ""
-"Returns whether a body uses a callback function to calculate its own physics "
-"(see [method body_set_force_integration_callback])."
-msgstr ""
-"返回一个物体是否使用回调函数来计算它自己的物理值(见 [method "
-"body_set_force_integration_callback])。"
-
-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."
@@ -88790,21 +87900,6 @@ msgstr ""
"连续碰撞检测尝试预测运动物体碰撞的位置,而不是在碰撞时移动物体并纠正其运动。"
msgid ""
-"Sets the function used to calculate physics for an object, if that object "
-"allows it (see [method body_set_omit_force_integration]). The force "
-"integration function takes 2 arguments:\n"
-"- [code]state[/code] — [PhysicsDirectBodyState3D] used to retrieve and modify "
-"the body's state.\n"
-"- [code skip-lint]userdata[/code] — optional user data passed to [method "
-"body_set_force_integration_callback]."
-msgstr ""
-"如果对象允许的话,设置用于计算该对象物理的函数(见 [method "
-"body_set_omit_force_integration])。力的积分函数有 2 个参数:\n"
-"[code]state[/code] — [PhysicsDirectBodyState3D] 用于检索和修改物体的状态。\n"
-"[code skip-lint]userdata[/code] — 可选的用户数据,如果在调用 [method "
-"body_set_force_integration_callback] 时被传递。"
-
-msgid ""
"Sets the maximum contacts to report. Bodies can keep a log of the contacts "
"with other bodies. This is enabled by setting the maximum number of contacts "
"reported to a number greater than 0."
@@ -88816,13 +87911,6 @@ msgid "Sets the body mode, from one of the [enum BodyMode] constants."
msgstr "从 [enum BodyMode] 常量之一设置主体模式。"
msgid ""
-"Sets whether a body uses a callback function to calculate its own physics "
-"(see [method body_set_force_integration_callback])."
-msgstr ""
-"设置一个物体是否使用回调函数来计算它自己的物理(见 [method "
-"body_set_force_integration_callback])。"
-
-msgid ""
"Sets a body parameter. A list of available parameters is on the [enum "
"BodyParameter] constants."
msgstr "设置物体参数。可用参数列表位于 [enum BodyParameter] 常量上。"
@@ -88873,24 +87961,6 @@ msgstr ""
"PhysicsServer3D 创建的对象,则会向控制台发送错误。"
msgid ""
-"Gets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants)."
-msgstr "获取 generic_6_DOF_joit 标志(见 [enum G6DOFJointAxisFlag] 常量)。"
-
-msgid ""
-"Gets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] "
-"constants)."
-msgstr "获取 generic_6_DOF_joint 参数(见 [enum G6DOFJointAxisParam] 常量)。"
-
-msgid ""
-"Sets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants)."
-msgstr "设置 generic_6_DOF_joint 标志(见 [enum G6DOFJointAxisFlag] 常量)。"
-
-msgid ""
-"Sets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] "
-"constants)."
-msgstr "设置 generic_6_DOF_joint 参数(见 [enum G6DOFJointAxisParam] 常量)。"
-
-msgid ""
"Returns information about the current state of the 3D physics engine. See "
"[enum ProcessInfo] for a list of available states."
msgstr ""
@@ -89003,6 +88073,18 @@ msgstr "返回给定柔性物体的模拟精度。"
msgid "Returns the [RID] of the space assigned to the given soft body."
msgstr "返回分配给给定柔性物体的空间的 [RID]。"
+msgid ""
+"Returns the given soft body state (see [enum BodyState] constants).\n"
+"[b]Note:[/b] Godot's default physics implementation does not support "
+"[constant BODY_STATE_LINEAR_VELOCITY], [constant "
+"BODY_STATE_ANGULAR_VELOCITY], [constant BODY_STATE_SLEEPING], or [constant "
+"BODY_STATE_CAN_SLEEP]."
+msgstr ""
+"返回给定的柔性物体状态(见 [enum BodyState] 常量)。\n"
+"[b]注意:[/b]Godot 的默认物理实现不支持 [constant "
+"BODY_STATE_LINEAR_VELOCITY]、[constant BODY_STATE_ANGULAR_VELOCITY]、"
+"[constant BODY_STATE_SLEEPING] 或 [constant BODY_STATE_CAN_SLEEP]。"
+
msgid "Returns the total mass assigned to the given soft body."
msgstr "返回分配给给定柔性物体的总质量。"
@@ -89012,6 +88094,16 @@ msgstr "返回给定的柔性物体点是否已固定。"
msgid "Moves the given soft body point to a position in global coordinates."
msgstr "将给定的柔性物体点移动到全局坐标中的某个位置。"
+msgid ""
+"Pins or unpins the given soft body point based on the value of [param pin].\n"
+"[b]Note:[/b] Pinning a point effectively makes it kinematic, preventing it "
+"from being affected by forces, but you can still move it using [method "
+"soft_body_move_point]."
+msgstr ""
+"根据 [param pin] 的值固定或取消固定给定的柔性物体点。\n"
+"[b]注意:[/b]固定一个点可以有效地使其成为运动学的,从而防止其受到力的影响,但"
+"你仍然可以使用 [method soft_body_move_point] 移动它。"
+
msgid "Unpins all points of the given soft body."
msgstr "取消固定给定柔性物体的所有点。"
@@ -89060,6 +88152,10 @@ msgstr ""
"度。"
msgid ""
+"Sets whether the given soft body will be pickable when using object picking."
+msgstr "设置在使用对象拾取时给定柔性物体是否可拾取。"
+
+msgid ""
"Sets the simulation precision of the given soft body. Increasing this value "
"will improve the resulting simulation, but can affect performance. Use with "
"care."
@@ -89069,6 +88165,19 @@ msgstr ""
msgid "Assigns a space to the given soft body (see [method space_create])."
msgstr "为给定的柔性物体分配一个空间(请参阅 [method space_create])。"
+msgid ""
+"Sets the given body state for the given body (see [enum BodyState] "
+"constants).\n"
+"[b]Note:[/b] Godot's default physics implementation does not support "
+"[constant BODY_STATE_LINEAR_VELOCITY], [constant "
+"BODY_STATE_ANGULAR_VELOCITY], [constant BODY_STATE_SLEEPING], or [constant "
+"BODY_STATE_CAN_SLEEP]."
+msgstr ""
+"设置给定物体的给定物体状态(见 [enum BodyState] 常量)。\n"
+"[b]注意:[/b]Godot 的默认物理实现不支持 [constant "
+"BODY_STATE_LINEAR_VELOCITY]、[constant BODY_STATE_ANGULAR_VELOCITY]、"
+"[constant BODY_STATE_SLEEPING] 或 [constant BODY_STATE_CAN_SLEEP]。"
+
msgid "Sets the total mass for the given soft body."
msgstr "设置给定柔性物体的总质量。"
@@ -89076,6 +88185,14 @@ msgid "Sets the global transform of the given soft body."
msgstr "设置给定柔性物体的全局变换。"
msgid ""
+"Requests that the physics server updates the rendering server with the latest "
+"positions of the given soft body's points through the [param "
+"rendering_server_handler] interface."
+msgstr ""
+"请求物理服务器通过 [param rendering_server_handler] 接口用给定柔性物体点的最新"
+"位置更新渲染服务器。"
+
+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]."
@@ -89381,9 +88498,6 @@ msgstr "常数,用于设置/获取区域的角度阻尼系数。"
msgid "Constant to set/get the priority (order of processing) of an area."
msgstr "常量,用于设置/获取区域的优先级(处理顺序)。"
-msgid "Constant to set/get the magnitude of area-specific wind force."
-msgstr "常量,用于设置/获取特定区域风力大小。"
-
msgid ""
"Constant to set/get the 3D vector that specifies the origin from which an "
"area-specific wind blows."
@@ -90265,7 +89379,7 @@ msgid ""
"the plane has a distance of [param d] from the origin."
msgstr ""
"根据四个参数创建一个平面。产生的平面的 [member normal] 的三个分量是 [param "
-"a]、[param b]、和 [param c],且该平面与原点的距离为 [param d]。"
+"a]、[param b] 和 [param c],且该平面与原点的距离为 [param d]。"
msgid ""
"Creates a plane from the normal vector. The plane will intersect the origin.\n"
@@ -90624,15 +89738,6 @@ msgid "The offset applied to each vertex."
msgstr "应用于每个顶点的位置偏移量。"
msgid ""
-"The polygon's list of vertices. The final point will be connected to the "
-"first.\n"
-"[b]Note:[/b] This returns a copy of the [PackedVector2Array] rather than a "
-"reference."
-msgstr ""
-"多边形的顶点列表。最后一点将连接到第一个点。\n"
-"[b]注意:[/b]返回的是 [PackedVector2Array] 的副本,不是引用。"
-
-msgid ""
"The list of polygons, in case more than one is being represented. Every "
"individual polygon is stored as a [PackedInt32Array] where each [int] is an "
"index to a point in [member polygon]. If empty, this property will be "
@@ -90736,9 +89841,6 @@ msgstr ""
msgid "Emitted when the popup is hidden."
msgstr "当该弹出窗口被隐藏时发出。"
-msgid "Default [StyleBox] for the [Popup]."
-msgstr "该 [Popup] 的默认 [StyleBox] 。"
-
msgid "A modal window used to display a list of options."
msgstr "用于显示选项列表的模态窗口。"
@@ -91041,6 +90143,9 @@ msgstr ""
"还可以提供 [param id]。如果没有提供 [param id],则会根据索引来创建。\n"
"如果 [param allow_echo] 为 [code]true[/code],则快捷键可以被回响事件激活。"
+msgid "Prefer using [method add_submenu_node_item] instead."
+msgstr "更喜欢改用 [method add_submenu_node_item]。"
+
msgid ""
"Adds an item that will act as a submenu of the parent [PopupMenu] node when "
"clicked. The [param submenu] argument must be the name of an existing "
@@ -91052,11 +90157,30 @@ msgid ""
msgstr ""
"添加菜单项,点击时会作为父级 [PopupMenu] 节点的子菜单。[param submenu] 参数必"
"须是已作为子节点添加到此节点的现有 [PopupMenu] 的名称。当点击该项目、悬停足够"
-"长的时间、或使用 [code]ui_select[/code] 或 [code]ui_right[/code] 输入操作激活"
-"该子菜单时,将显示该子菜单。\n"
+"长的时间或使用 [code]ui_select[/code] 或 [code]ui_right[/code] 输入操作激活该"
+"子菜单时,将显示该子菜单。\n"
"还可以提供 [param id]。如果没有提供 [param id],则会根据索引来创建。"
msgid ""
+"Adds an item that will act as a submenu of the parent [PopupMenu] node when "
+"clicked. This submenu will be shown when the item is clicked, hovered for "
+"long enough, or activated using the [code]ui_select[/code] or [code]ui_right[/"
+"code] input actions.\n"
+"[param submenu] must be either child of this [PopupMenu] or has no parent "
+"node (in which case it will be automatically added as a child). If the [param "
+"submenu] popup has another parent, this method will fail.\n"
+"An [param id] can optionally be provided. If no [param id] is provided, one "
+"will be created from the index."
+msgstr ""
+"添加一个菜单项,点击时会作为父级 [PopupMenu] 节点的子菜单。当点击该项目、悬停"
+"足够长的时间或使用 [code]ui_select[/code] 或 [code]ui_right[/code] 输入操作激"
+"活该子菜单时,将显示该子菜单。\n"
+"[param submenu] 必须是该 [PopupMenu] 的子节点,或者没有父节点(在这种情况下,"
+"它将自动添加为子节点)。如果 [param submenu] 弹出窗口有另一个父级节点,则该方"
+"法将失败。\n"
+"还可以选择提供 [param id]。如果没有提供 [param id],则将从索引创建一个。"
+
+msgid ""
"Removes all items from the [PopupMenu]. If [param free_submenus] is "
"[code]true[/code], the submenu nodes are automatically freed."
msgstr ""
@@ -91131,6 +90255,9 @@ msgid ""
"Returns the [Shortcut] associated with the item at the given [param index]."
msgstr "返回给定 [param index] 处菜单项所关联的 [Shortcut]。"
+msgid "Prefer using [method get_item_submenu_node] instead."
+msgstr "优先改用 [method get_item_submenu_node]。"
+
msgid ""
"Returns the submenu name of the item at the given [param index]. See [method "
"add_submenu_item] for more info on how to add a submenu."
@@ -91138,6 +90265,15 @@ msgstr ""
"返回给定 [param index] 处菜单项的子菜单名称。有关如何添加子菜单的更多信息,请"
"参见 [method add_submenu_item]。"
+msgid ""
+"Returns the submenu of the item at the given [param index], or [code]null[/"
+"code] if no submenu was added. See [method add_submenu_node_item] for more "
+"info on how to add a submenu."
+msgstr ""
+"返回给定 [param index] 处菜单项的子菜单,如果尚未添加子菜单,则返回 "
+"[code]null[/code]。有关如何添加子菜单的更多信息,请参阅 [method "
+"add_submenu_node_item]。"
+
msgid "Returns the text of the item at the given [param index]."
msgstr "返回索引为 [param index] 的菜单项的文本。"
@@ -91310,6 +90446,9 @@ msgstr "设置索引为 [param index] 的菜单项的 [Shortcut]。"
msgid "Disables the [Shortcut] of the item at the given [param index]."
msgstr "禁用索引为 [param index] 的菜单项的 [Shortcut]。"
+msgid "Prefer using [method set_item_submenu_node] instead."
+msgstr "优先改用 [method set_item_submenu_node]。"
+
msgid ""
"Sets the submenu of the item at the given [param index]. The submenu is the "
"name of a child [PopupMenu] node that would be shown when the item is clicked."
@@ -91317,6 +90456,18 @@ msgstr ""
"设置位于给定 [param index] 的菜单项的子菜单。子菜单为点击该菜单项后应该显示的"
"子 [PopupMenu] 节点的名称。"
+msgid ""
+"Sets the submenu of the item at the given [param index]. The submenu is a "
+"[PopupMenu] node that would be shown when the item is clicked. It must either "
+"be a child of this [PopupMenu] or has no parent (in which case it will be "
+"automatically added as a child). If the [param submenu] popup has another "
+"parent, this method will fail."
+msgstr ""
+"设置给定 [param index] 处的项目的子菜单。子菜单是一个 [PopupMenu] 节点,点击该"
+"项目时将显示该节点。它必须是该 [PopupMenu] 的子级或没有父级(在这种情况下,它"
+"将自动添加为子级)。如果 [param submenu] 弹出窗口有另一个父级,则该方法将失"
+"败。"
+
msgid "Sets the text of the item at the given [param index]."
msgstr "设置索引为 [param index] 的菜单项的文本。"
@@ -91356,15 +90507,6 @@ msgstr ""
"单的子菜单(作为子菜单),它将继承父菜单项的延迟时间。"
msgid ""
-"If set to one of the values returned by [method DisplayServer."
-"global_menu_get_system_menu_roots], this [PopupMenu] is bound to the special "
-"system menu. Only one [PopupMenu] can be bound to each special menu at a time."
-msgstr ""
-"如果设为 [method DisplayServer.global_menu_get_system_menu_roots] 返回值中的任"
-"意一个,则该 [PopupMenu] 与特殊系统菜单绑定。每个特殊菜单在同一时间只能与一个 "
-"[PopupMenu] 绑定。"
-
-msgid ""
"Emitted when the user navigated to an item of some [param id] using the "
"[member ProjectSettings.input/ui_up] or [member ProjectSettings.input/"
"ui_down] input action."
@@ -91710,12 +90852,12 @@ msgid ""
"sky that is simple and computationally cheap, but unrealistic. If you need a "
"more realistic procedural option, use [PhysicalSkyMaterial]."
msgstr ""
-"[ProceduralSkyMaterial] 提供了一种通过为太阳、天空、和地面定义程序参数,来快速"
-"创建一个有效背景的方法。天空和地面由主颜色、地平线颜色、以及在它们之间插值的缓"
-"动曲线定义。太阳通过天空中的位置、颜色、以及缓动曲线结束时距太阳的最大角度来描"
+"[ProceduralSkyMaterial] 提供了一种通过为太阳、天空和地面定义程序参数,来快速创"
+"建一个有效背景的方法。天空和地面由主颜色、地平线颜色、以及在它们之间插值的缓动"
+"曲线定义。太阳通过天空中的位置、颜色、以及缓动曲线结束时距太阳的最大角度来描"
"述。因此,最大角度定义了天空中太阳的大小。\n"
"[ProceduralSkyMaterial] 支持最多 4 个太阳,它们使用场景中前四个 "
-"[DirectionalLight3D] 节点的颜色、能量、方向、和角距离。这意味着太阳由其相应的 "
+"[DirectionalLight3D] 节点的颜色、能量、方向和角距离。这意味着太阳由其相应的 "
"[DirectionalLight3D] 的属性单独定义,并由 [member sun_angle_max] 和 [member "
"sun_curve] 全局定义。\n"
"[ProceduralSkyMaterial] 使用轻量级着色器来绘制天空,因此适合实时更新。这使得它"
@@ -91866,6 +91008,21 @@ msgid "A 4×4 matrix for 3D projective transformations."
msgstr "用于 3D 投影变换的 4×4 矩阵。"
msgid ""
+"A 4×4 matrix used for 3D projective transformations. It can represent "
+"transformations such as translation, rotation, scaling, shearing, and "
+"perspective division. It consists of four [Vector4] columns.\n"
+"For purely linear transformations (translation, rotation, and scale), it is "
+"recommended to use [Transform3D], as it is more performant and requires less "
+"memory.\n"
+"Used internally as [Camera3D]'s projection matrix."
+msgstr ""
+"用于 3D 投影变换的 4×4 矩阵,可以表示平移、旋转、缩放、剪切和透视分割等变换,"
+"由四个 [Vector4] 列组成。\n"
+"对于纯粹的线性变换(平移、旋转和缩放),建议使用 [Transform3D],因为它的性能更"
+"强,内存占用更少。\n"
+"在内部作为 [Camera3D] 的投影矩阵使用。"
+
+msgid ""
"Constructs a default-initialized [Projection] set to [constant IDENTITY]."
msgstr "构造默认初始化为 [constant IDENTITY] 的 [Projection]。"
@@ -91994,13 +91151,14 @@ msgid ""
msgstr "返回投影远裁剪平面的尺寸除以二。"
msgid "Returns the horizontal field of view of the projection (in degrees)."
-msgstr "返回该投影的水平视野(单位为度)。"
+msgstr "返回该投影的水平视场角(单位为度)。"
msgid ""
"Returns the vertical field of view of the projection (in degrees) associated "
"with the given horizontal field of view (in degrees) and aspect ratio."
msgstr ""
-"返回与给定水平视场(以度为单位)和长宽比相关联的投影的垂直视场(以度为单位)。"
+"返回与给定水平视场角(以度为单位)和长宽比相关联的投影的垂直视场角(以度为单"
+"位)。"
msgid ""
"Returns the factor by which the visible level of detail is scaled by this "
@@ -92166,11 +91324,11 @@ msgid ""
"[b]Overriding:[/b] Any project setting can be overridden by creating a file "
"named [code]override.cfg[/code] in the project's root directory. This can "
"also be used in exported projects by placing this file in the same directory "
-"as the project binary. Overriding will still take the base project "
-"settings' [url=$DOCS_URL/tutorials/export/feature_tags.html]feature tags[/"
-"url] in account. Therefore, make sure to [i]also[/i] override the setting "
-"with the desired feature tags if you want them to override base project "
-"settings on all platforms and configurations."
+"as the project binary. Overriding will still take the base project settings' "
+"[url=$DOCS_URL/tutorials/export/feature_tags.html]feature tags[/url] in "
+"account. Therefore, make sure to [i]also[/i] override the setting with the "
+"desired feature tags if you want them to override base project settings on "
+"all platforms and configurations."
msgstr ""
"储存可以从任何地方访问的变量。请使用 [method get_setting]、[method "
"set_setting]、[method has_setting] 访问。存储在 [code]project.godot[/code] 中"
@@ -92527,6 +91685,21 @@ msgstr ""
"[/codeblocks]\n"
"也可以用来擦除自定义项目设置。方法是将设置项的值设置为 [code]null[/code]。"
+msgid ""
+"If [code]true[/code], [AnimationMixer] prints the warning of interpolation "
+"being forced to choose the shortest rotation path due to multiple angle "
+"interpolation types being mixed in the [AnimationMixer] cache."
+msgstr ""
+"如果为 [code]true[/code],[AnimationMixer] 会打印由于 [AnimationMixer] 缓存中"
+"混合了多种角度插值类型而导致插值被迫选择最短旋转路径的警告。"
+
+msgid ""
+"If [code]true[/code], [AnimationMixer] prints the warning of no matching "
+"object of the track path in the scene."
+msgstr ""
+"如果为 [code]true[/code],则 [AnimationMixer] 打印场景中轨道路径没有匹配对象的"
+"警告。"
+
msgid "Background color for the boot splash."
msgstr "启动界面的背景色。"
@@ -92539,19 +91712,6 @@ msgstr ""
"长宽比)。如果为 [code]false[/code],引擎将保持其默认像素大小。"
msgid ""
-"Path to an image used as the boot splash. If left empty, the default Godot "
-"Engine splash will be displayed instead.\n"
-"[b]Note:[/b] Only effective if [member application/boot_splash/show_image] is "
-"[code]true[/code].\n"
-"[b]Note:[/b] The only supported format is PNG. Using another image format "
-"will result in an error."
-msgstr ""
-"图像的路径,会作为启动画面使用。留空时将使用默认的 Godot 引擎启动画面。\n"
-"[b]注意:[/b]仅在 [member application/boot_splash/show_image] 为 [code]true[/"
-"code] 时有效。\n"
-"[b]注意:[/b]只支持 PNG 格式。使用其他图像格式会导致出错。"
-
-msgid ""
"Minimum boot splash display time (in milliseconds). It is not recommended to "
"set too high values for this setting."
msgstr "启动画面的最小显示时间(单位为毫秒)。不建议设置为过高的值。"
@@ -92804,16 +91964,6 @@ msgstr ""
"可以使用 [code]--frame-delay <ms;>[/code] 命令行参数覆盖该设置。"
msgid ""
-"If [code]true[/code], enables low-processor usage mode. This setting only "
-"works on desktop platforms. The screen is not redrawn if nothing changes "
-"visually. This is meant for writing applications and editors, but is pretty "
-"useless (and can hurt performance) in most games."
-msgstr ""
-"如果为 [code]true[/code],则启用低处理器使用模式。此设置仅适用于桌面平台。如果"
-"视觉上没有任何变化,屏幕不会被重绘。这是为了编写应用程序和编辑器,但在大多数游"
-"戏中这是非常无用的(并可能损害性能)。"
-
-msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr "启用低处理器使用模式时帧间的睡眠量(以微秒计)。值越高,CPU占用率越低。"
@@ -92825,53 +91975,14 @@ msgid "Path to the main scene file that will be loaded when the project runs."
msgstr "项目运行时将加载的主场景文件的路径。"
msgid ""
-"Maximum number of frames per second allowed. A value of [code]0[/code] means "
-"\"no limit\". The actual number of frames per second may still be below this "
-"value if the CPU or GPU cannot keep up with the project logic and rendering.\n"
-"Limiting the FPS can be useful to reduce system power consumption, which "
-"reduces heat and noise emissions (and improves battery life on mobile "
-"devices).\n"
-"If [member display/window/vsync/vsync_mode] is set to [code]Enabled[/code] or "
-"[code]Adaptive[/code], it takes precedence and the forced FPS number cannot "
-"exceed the monitor's refresh rate.\n"
-"If [member display/window/vsync/vsync_mode] is [code]Enabled[/code], on "
-"monitors with variable refresh rate enabled (G-Sync/FreeSync), using a FPS "
-"limit a few frames lower than the monitor's refresh rate will [url=https://"
-"blurbusters.com/howto-low-lag-vsync-on/]reduce input lag while avoiding "
-"tearing[/url].\n"
-"If [member display/window/vsync/vsync_mode] is [code]Disabled[/code], "
-"limiting the FPS to a high value that can be consistently reached on the "
-"system can reduce input lag compared to an uncapped framerate. Since this "
-"works by ensuring the GPU load is lower than 100%, this latency reduction is "
-"only effective in GPU-bottlenecked scenarios, not CPU-bottlenecked "
-"scenarios.\n"
-"See also [member physics/common/physics_ticks_per_second].\n"
-"This setting can be overridden using the [code]--max-fps <fps>[/code] command "
-"line argument (including with a value of [code]0[/code] for unlimited "
-"framerate).\n"
-"[b]Note:[/b] This property is only read when the project starts. To change "
-"the rendering FPS cap at runtime, set [member Engine.max_fps] instead."
-msgstr ""
-"每秒允许的最大帧数。[code]0[/code] 表示“不限制”。如果 CPU 或 GPU 无法满足项目"
-"逻辑和渲染,则实际每秒的帧数可能仍然比这个值小。\n"
-"限制 FPS 可以降低系统对电源的消耗,能够降低发热、减少噪音(延长移动设备的电池"
-"寿命)。\n"
-"[member display/window/vsync/vsync_mode] 为 [code]Enabled[/code] 或 "
-"[code]Adaptive[/code] 时,该设置优先生效,强制的 FPS 数无法超过显示器的刷新"
-"率。\n"
-"[member display/window/vsync/vsync_mode] 为 [code]Enabled[/code] 时,在启用了"
-"可变刷新率(G-Sync/FreeSync)的显示器上使用比显示器刷新率略低几帧的 FPS 限制会"
-"[url=https://blurbusters.com/howto-low-lag-vsync-on/]降低输入延迟,避免画面撕"
-"裂[/url]。\n"
-"[member display/window/vsync/vsync_mode] 为 [code]Disabled[/code] 时,与不限制"
-"帧率相比,将 FPS 限制设为系统所能达到的较高值能够降低输入延迟。因为原理是确保 "
-"GPU 负载低于 100%,所以只有在 GPU 为瓶颈时才会降低延迟,无法缓解 CPU 瓶颈导致"
-"的延迟。\n"
-"另见 [member physics/common/physics_ticks_per_second]。\n"
-"这个设置可以使用 [code]--max-fps <fps>[/code] 命令行参数覆盖(设为 [code]0[/"
-"code] 则是不限制帧率)。\n"
-"[b]注意:[/b]这个属性仅在项目启动时读取。要在运行时修改渲染 FPS 上限,请改为设"
-"置 [member Engine.max_fps]。"
+"If [code]true[/code], the engine header is printed in the console on startup. "
+"This header describes the current version of the engine, as well as the "
+"renderer being used. This behavior can also be disabled on the command line "
+"with the [code]--no-header[/code] option."
+msgstr ""
+"如果为 [code]true[/code],则启动时在控制台中打印引擎标头。该标头描述了引擎的当"
+"前版本以及正在使用的渲染器。也可以使用 [code]--no-header[/code] 选项在命令行上"
+"禁用该行为。"
msgid ""
"Audio buses will disable automatically when sound goes below a given dB "
@@ -93196,13 +92307,6 @@ msgstr ""
msgid ""
"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
-"error respectively when deprecated keywords are used."
-msgstr ""
-"设为 [code]warn[/code] 或 [code]error[/code] 时,会在使用已启用的关键字时对应"
-"产生警告或错误。"
-
-msgid ""
-"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
"error respectively when an empty file is parsed."
msgstr ""
"设为 [code]warn[/code] 或 [code]error[/code] 时,会在解析空文件时对应产生警告"
@@ -93268,8 +92372,8 @@ msgid ""
"than [code]UNTYPED_DECLARATION[/code] warning level makes little sense and is "
"not recommended."
msgstr ""
-"设置为 [code]warn[/code] 或 [code]error[/code] 时,当变量、常量、或参数具有隐"
-"式推断的静态类型时,分别产生警告或错误。\n"
+"设置为 [code]warn[/code] 或 [code]error[/code] 时,当变量、常量或参数具有隐式"
+"推断的静态类型时,分别产生警告或错误。\n"
"[b]注意:[/b]如果你希望始终显式指定类型,则推荐该警告,[i]除了[/i] [member "
"debug/gdscript/warnings/untyped_declaration]。使 [code]INFERRED_DECLARATION[/"
"code] 警告级别高于 [code]UNTYPED_DECLARATION[/code] 警告级别意义不大,且不被推"
@@ -93356,13 +92460,24 @@ msgstr ""
msgid ""
"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
+"error respectively when calling a function without using its return value (by "
+"assigning it to a variable or using it as a function argument). These return "
+"values are sometimes used to indicate possible errors using the [enum Error] "
+"enum."
+msgstr ""
+"设置为 [code]warn[/code] 或 [code]error[/code] 时,当调用函数却不使用其返回值"
+"(通过将其分配给变量或将其用作函数参数)时,会分别产生一个警告或一个错误。这些"
+"返回值有时使用 [enum Error] 枚举来指示可能的错误。"
+
+msgid ""
+"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
"error respectively when defining a local or member variable, signal, or enum "
"that would have the same name as a built-in function or global class name, "
"thus shadowing it."
msgstr ""
"设置为 [code]warn[/code] 或 [code]error[/code] 时,当定义一个与内置函数或全局"
-"类同名的局部变量或成员变量、信号、或枚举,从而隐藏该内置函数或全局类时,会分别"
-"产生一个警告或一个错误。"
+"类同名的局部变量或成员变量、信号或枚举,从而隐藏该内置函数或全局类时,会分别产"
+"生一个警告或一个错误。"
msgid ""
"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
@@ -93447,13 +92562,6 @@ msgstr ""
msgid ""
"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
-"error respectively when performing an unsafe cast."
-msgstr ""
-"设置为 [code]warn[/code] 或 [code]error[/code] 时,当执行不安全的转换时,会分"
-"别产生一个警告或一个错误。"
-
-msgid ""
-"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
"error respectively when calling a method whose presence is not guaranteed at "
"compile-time in the class."
msgstr ""
@@ -93512,13 +92620,6 @@ msgstr ""
msgid ""
"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
-"error respectively when a signal is declared but never emitted."
-msgstr ""
-"设置为 [code]warn[/code] 或 [code]error[/code] 时,当一个信号被声明但从未发出"
-"时,会分别产生一个警告或一个错误。"
-
-msgid ""
-"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
"error respectively when a local variable is unused."
msgstr ""
"设置为 [code]warn[/code] 或 [code]error[/code] 时,当一个局部变量未被使用时,"
@@ -93589,6 +92690,14 @@ msgstr ""
"有着色器警告。"
msgid ""
+"When set to [code]true[/code], produces a warning when two floating-point "
+"numbers are compared directly with the [code]==[/code] operator or the [code]!"
+"=[/code] operator."
+msgstr ""
+"设为 [code]true[/code] 时,当使用 [code]==[/code] 或 [code]!=[/code] 运算符直"
+"接比较两个浮点数时,会产生警告。"
+
+msgid ""
"When set to [code]true[/code], produces a warning upon encountering certain "
"formatting errors. Currently this only checks for empty statements. More "
"formatting errors may be added over time."
@@ -93883,13 +92992,6 @@ msgstr ""
"程序不会接管。适用于桌面和移动平台。"
msgid ""
-"Editor-only override for [member display/window/energy_saving/"
-"keep_screen_on]. Does not affect exported projects in debug or release mode."
-msgstr ""
-"[member display/window/energy_saving/keep_screen_on] 的编辑器覆盖项。不影响调"
-"试模式和发布模式下导出的项目。"
-
-msgid ""
"The default screen orientation to use on mobile devices. See [enum "
"DisplayServer.ScreenOrientation] for possible values.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -94000,8 +93102,8 @@ msgstr ""
msgid ""
"Main window initial screen, this setting is used only if [member display/"
-"window/size/initial_position_type] is set to \"Other Screen "
-"Center\" ([code]2[/code]).\n"
+"window/size/initial_position_type] is set to \"Other Screen Center\" "
+"([code]2[/code]).\n"
"[b]Note:[/b] This setting only affects the exported project, or when the "
"project is run from the command line. In the editor, the value of [member "
"EditorSettings.run/window_placement/screen] is used instead."
@@ -94421,46 +93523,11 @@ msgstr ""
"code]、[code]{signal_name}[/code]。"
msgid ""
-"When creating node names automatically, set the type of casing in this "
-"project. This is mostly an editor setting."
-msgstr ""
-"当自动创建节点名称时,在这个项目中设置大小写的类型。这主要是编辑器设置。"
-
-msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr "用什么来分隔节点名称和编号。这主要是一个编辑器的设置。"
msgid ""
-"When generating file names from scene root node, set the type of casing in "
-"this project. This is mostly an editor setting."
-msgstr ""
-"根据场景根节点生成文件名时,设置这个项目中的大小写类型。主要是编辑器设置。"
-
-msgid ""
-"The command-line arguments to append to Godot's own command line when running "
-"the project. This doesn't affect the editor itself.\n"
-"It is possible to make another executable run Godot by using the "
-"[code]%command%[/code] placeholder. The placeholder will be replaced with "
-"Godot's own command line. Program-specific arguments should be placed "
-"[i]before[/i] the placeholder, whereas Godot-specific arguments should be "
-"placed [i]after[/i] the placeholder.\n"
-"For example, this can be used to force the project to run on the dedicated "
-"GPU in a NVIDIA Optimus system on Linux:\n"
-"[codeblock]\n"
-"prime-run %command%\n"
-"[/codeblock]"
-msgstr ""
-"运行项目时附加到 Godot 自己的命令行的命令行参数。这不会影响编辑器本身。\n"
-"可以使用 [code]%command%[/code] 占位符使另一个可执行文件运行 Godot。占位符将替"
-"换为 Godot 自己的命令行。程序特定的参数应该放在[i]占位符之前[/i],而 Godot 特"
-"定参数应该放在[i]占位符之后[/i]。\n"
-"例如,这可用于强制项目在 Linux 上的 NVIDIA Optimus 系统中的专用 GPU 上运行:\n"
-"[codeblock]\n"
-"prime-run %command%\n"
-"[/codeblock]"
-
-msgid ""
"Text-based file extensions to include in the script editor's \"Find in "
"Files\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
"your scene files, especially if you use built-in scripts which are serialized "
@@ -94505,6 +93572,20 @@ msgstr ""
"问到 Blender。"
msgid ""
+"Override for [member filesystem/import/fbx2gltf/enabled] on Android where "
+"FBX2glTF can't easily be accessed from Godot."
+msgstr ""
+"[member filesystem/import/fbx2gltf/enabled] 在 Android 上的覆盖项,在 Android "
+"上 Godot 无法轻易访问到 FBX2glTF。"
+
+msgid ""
+"Override for [member filesystem/import/fbx2gltf/enabled] on the Web where "
+"FBX2glTF can't easily be accessed from Godot."
+msgstr ""
+"[member filesystem/import/fbx2gltf/enabled] 在 Web 上的覆盖项,在 Web 上 "
+"Godot 无法轻易访问到 FBX2glTF。"
+
+msgid ""
"Default value for [member ScrollContainer.scroll_deadzone], which will be "
"used for all [ScrollContainer]s unless overridden."
msgstr ""
@@ -95467,8 +94548,8 @@ msgid ""
"breaking rules. Data is about 4 MB large.\n"
"[b]Note:[/b] \"Fallback\" text server does not use additional data."
msgstr ""
-"如果为 [code]true[/code],则文本服务器中断迭代规则集、字典、和其他可选数据将被"
-"包含在导出的项目中。\n"
+"如果为 [code]true[/code],则文本服务器中断迭代规则集、字典和其他可选数据将被包"
+"含在导出的项目中。\n"
"[b]注意:[/b]“ICU / HarfBuzz / Graphite”文本服务器数据,包括缅甸语、汉语、日"
"语、高棉语、老挝语和泰语的词典,以及 Unicode 标准附件 #29 和 Unicode 标准附件 "
"#14 单词和行折断规则。数据大约 4 MB。\n"
@@ -95548,6 +94629,33 @@ msgid "Root node default layout direction."
msgstr "根节点的默认布局方向。"
msgid ""
+"Specifies the [TextServer] to use. If left empty, the default will be used.\n"
+"\"ICU / HarfBuzz / Graphite\" is the most advanced text driver, supporting "
+"right-to-left typesetting and complex scripts (for languages like Arabic, "
+"Hebrew, etc.). The \"Fallback\" text driver does not support right-to-left "
+"typesetting and complex scripts.\n"
+"[b]Note:[/b] The driver in use can be overridden at runtime via the [code]--"
+"text-driver[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial."
+"html]command line argument[/url].\n"
+"[b]Note:[/b] There is an additional [code]Dummy[/code] text driver available, "
+"which disables all text rendering and font-related functionality. This driver "
+"is not listed in the project settings, but it can be enabled when running the "
+"editor or project using the [code]--text-driver Dummy[/code] [url=$DOCS_URL/"
+"tutorials/editor/command_line_tutorial.html]command line argument[/url]."
+msgstr ""
+"指定要使用的 [TextServer]。如果留空,则会使用默认服务器。\n"
+"“ICU / HarfBuzz / Graphite”是最先进的文本驱动,支持从右至左的排版和复杂文字"
+"(用于阿拉伯语、希伯来语等语言)。“Fallback”文本驱动不支持从右至左的排版和复杂"
+"文字。\n"
+"[b]注意:[/b]在运行时可以通过 [code]--text-driver[/code] [url=$DOCS_URL/"
+"tutorials/editor/command_line_tutorial.html]命令行参数[/url]覆盖使用的驱动程"
+"序。\n"
+"[b]注意:[/b]另外还提供了 [code]Dummy[/code] 文本驱动,它禁用了所有文本渲染和"
+"字体相关的功能。这个驱动没有在项目设置中列出,但可以在运行编辑器或项目时使用 "
+"[code]--text-driver Dummy[/code] [url=$DOCS_URL/tutorials/editor/"
+"command_line_tutorial.html]命令行参数[/url]启用。"
+
+msgid ""
"Optional name for the 2D navigation layer 1. If left empty, the layer will "
"display as \"Layer 1\"."
msgstr "2D 导航层 1 的可选名称。留空则会显示为“层 1”。"
@@ -96705,6 +95813,51 @@ msgstr ""
"如果有疑问,请将此设置留空。"
msgid ""
+"The default rotational motion damping in 2D. Damping is used to gradually "
+"slow down physical objects over time. RigidBodies will fall back to this "
+"value when combining their own damping values and no area damping value is "
+"present.\n"
+"Suggested values are in the range [code]0[/code] to [code]30[/code]. At value "
+"[code]0[/code] objects will keep moving with the same velocity. Greater "
+"values will stop the object faster. A value equal to or greater than the "
+"physics tick rate ([member physics/common/physics_ticks_per_second]) will "
+"bring the object to a stop in one iteration.\n"
+"[b]Note:[/b] Godot damping calculations are velocity-dependent, meaning "
+"bodies moving faster will take a longer time to come to rest. They do not "
+"simulate inertia, friction, or air resistance. Therefore heavier or larger "
+"bodies will lose speed at the same proportional rate as lighter or smaller "
+"bodies.\n"
+"During each physics tick, Godot will multiply the linear velocity of "
+"RigidBodies by [code]1.0 - combined_damp / physics_ticks_per_second[/code]. "
+"By default, bodies combine damp factors: [code]combined_damp[/code] is the "
+"sum of the damp value of the body and this value or the area's value the body "
+"is in. See [enum RigidBody2D.DampMode].\n"
+"[b]Warning:[/b] Godot's damping calculations are simulation tick rate "
+"dependent. Changing [member physics/common/physics_ticks_per_second] may "
+"significantly change the outcomes and feel of your simulation. This is true "
+"for the entire range of damping values greater than 0. To get back to a "
+"similar feel, you also need to change your damp values. This needed change is "
+"not proportional and differs from case to case."
+msgstr ""
+"默认的 2D 旋转运动阻尼。阻尼可以用来让物理对象逐渐慢下来。RigidBody 在合并自身"
+"的阻尼值时,如果没有区域阻尼,那么就会回退到这个值。\n"
+"建议使用 [code]0[/code] 到 [code]30[/code] 之间的值。为 [code]0[/code] 时,对"
+"象会使用相同的速度持续移动。值越大、物体停得越快。如果大于等于物理周期"
+"([member physics/common/physics_ticks_per_second]),那么对象进行一次迭代就会"
+"停下来。\n"
+"[b]注意:[/b]Godot 中的阻尼计算与速度相关,即物体移动得越快、静止所需的时间就"
+"越长,不会对惯性、摩擦力、空气阻力进行仿真。因此,较重较大的物体和较轻较小的物"
+"体会以相同的比例损失速度。\n"
+"每个物理周期中,Godot 会将 RigidBody 的线速度乘以 [code]1.0 - combined_damp / "
+"physics_ticks_per_second[/code]。默认情况下,物体的合并阻尼系数 "
+"[code]combined_damp[/code] 是该物体所有阻尼值与这个值或物体所处区域阻尼值之"
+"和。见 [enum RigidBody2D.DampMode]。\n"
+"[b]警告:[/b]Godot 中的阻尼计算与仿真周期率相关。修改 [member physics/common/"
+"physics_ticks_per_second] 可能对仿真的结果和感觉造成显著影响。只要是大于 0 的"
+"阻尼值都会有这种现象。要恢复此前的感觉,就需要修改阻尼值。修改多少并不成比例,"
+"需要根据实际情况调整。"
+
+msgid ""
"The default gravity strength in 2D (in pixels per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
"the default gravity at runtime, use the following code sample:\n"
@@ -96771,6 +95924,51 @@ msgstr ""
"[/codeblocks]"
msgid ""
+"The default linear motion damping in 2D. Damping is used to gradually slow "
+"down physical objects over time. RigidBodies will fall back to this value "
+"when combining their own damping values and no area damping value is "
+"present.\n"
+"Suggested values are in the range [code]0[/code] to [code]30[/code]. At value "
+"[code]0[/code] objects will keep moving with the same velocity. Greater "
+"values will stop the object faster. A value equal to or greater than the "
+"physics tick rate ([member physics/common/physics_ticks_per_second]) will "
+"bring the object to a stop in one iteration.\n"
+"[b]Note:[/b] Godot damping calculations are velocity-dependent, meaning "
+"bodies moving faster will take a longer time to come to rest. They do not "
+"simulate inertia, friction, or air resistance. Therefore heavier or larger "
+"bodies will lose speed at the same proportional rate as lighter or smaller "
+"bodies.\n"
+"During each physics tick, Godot will multiply the linear velocity of "
+"RigidBodies by [code]1.0 - combined_damp / physics_ticks_per_second[/code], "
+"where [code]combined_damp[/code] is the sum of the linear damp of the body "
+"and this value, or the area's value the body is in, assuming the body "
+"defaults to combine damp values. See [enum RigidBody2D.DampMode].\n"
+"[b]Warning:[/b] Godot's damping calculations are simulation tick rate "
+"dependent. Changing [member physics/common/physics_ticks_per_second] may "
+"significantly change the outcomes and feel of your simulation. This is true "
+"for the entire range of damping values greater than 0. To get back to a "
+"similar feel, you also need to change your damp values. This needed change is "
+"not proportional and differs from case to case."
+msgstr ""
+"默认的 2D 线性运动阻尼。阻尼可以用来让物理对象逐渐慢下来。RigidBody 在合并自身"
+"的阻尼值时,如果没有区域阻尼,那么就会回退到这个值。\n"
+"建议使用 [code]0[/code] 到 [code]30[/code] 之间的值。为 [code]0[/code] 时,对"
+"象会使用相同的速度持续移动。值越大、物体停得越快。如果大于等于物理周期"
+"([member physics/common/physics_ticks_per_second]),那么对象进行一次迭代就会"
+"停下来。\n"
+"[b]注意:[/b]Godot 中的阻尼计算与速度相关,即物体移动得越快、静止所需的时间就"
+"越长,不会对惯性、摩擦力、空气阻力进行仿真。因此,较重较大的物体和较轻较小的物"
+"体会以相同的比例损失速度。\n"
+"每个物理周期中,Godot 会将 RigidBody 的线速度乘以 [code]1.0 - combined_damp / "
+"physics_ticks_per_second[/code],其中 [code]combined_damp[/code] 是该物体线性"
+"阻尼值与这个值或物体所处区域阻尼值之和。这些都以物体默认合并阻尼值为前提。见 "
+"[enum RigidBody2D.DampMode]。\n"
+"[b]警告:[/b]Godot 中的阻尼计算与仿真周期率相关。修改 [member physics/common/"
+"physics_ticks_per_second] 可能对仿真的结果和感觉造成显著影响。只要是大于 0 的"
+"阻尼值都会有这种现象。要恢复此前的感觉,就需要修改阻尼值。修改多少并不成比例,"
+"需要根据实际情况调整。"
+
+msgid ""
"Sets which physics engine to use for 2D physics.\n"
"\"DEFAULT\" and \"GodotPhysics2D\" are the same, as there is currently no "
"alternative 2D physics server implemented."
@@ -96868,6 +96066,51 @@ msgstr ""
"PhysicsServer2D.SPACE_PARAM_BODY_TIME_TO_SLEEP]。"
msgid ""
+"The default rotational motion damping in 3D. Damping is used to gradually "
+"slow down physical objects over time. RigidBodies will fall back to this "
+"value when combining their own damping values and no area damping value is "
+"present.\n"
+"Suggested values are in the range [code]0[/code] to [code]30[/code]. At value "
+"[code]0[/code] objects will keep moving with the same velocity. Greater "
+"values will stop the object faster. A value equal to or greater than the "
+"physics tick rate ([member physics/common/physics_ticks_per_second]) will "
+"bring the object to a stop in one iteration.\n"
+"[b]Note:[/b] Godot damping calculations are velocity-dependent, meaning "
+"bodies moving faster will take a longer time to come to rest. They do not "
+"simulate inertia, friction, or air resistance. Therefore heavier or larger "
+"bodies will lose speed at the same proportional rate as lighter or smaller "
+"bodies.\n"
+"During each physics tick, Godot will multiply the angular velocity of "
+"RigidBodies by [code]1.0 - combined_damp / physics_ticks_per_second[/code]. "
+"By default, bodies combine damp factors: [code]combined_damp[/code] is the "
+"sum of the damp value of the body and this value or the area's value the body "
+"is in. See [enum RigidBody3D.DampMode].\n"
+"[b]Warning:[/b] Godot's damping calculations are simulation tick rate "
+"dependent. Changing [member physics/common/physics_ticks_per_second] may "
+"significantly change the outcomes and feel of your simulation. This is true "
+"for the entire range of damping values greater than 0. To get back to a "
+"similar feel, you also need to change your damp values. This needed change is "
+"not proportional and differs from case to case."
+msgstr ""
+"默认的 3D 旋转运动阻尼。阻尼可以用来让物理对象逐渐慢下来。RigidBody 在合并自身"
+"的阻尼值时,如果没有区域阻尼,那么就会回退到这个值。\n"
+"建议使用 [code]0[/code] 到 [code]30[/code] 之间的值。为 [code]0[/code] 时,对"
+"象会使用相同的速度持续移动。值越大、物体停得越快。如果大于等于物理周期"
+"([member physics/common/physics_ticks_per_second]),那么对象进行一次迭代就会"
+"停下来。\n"
+"[b]注意:[/b]Godot 中的阻尼计算与速度相关,即物体移动得越快、静止所需的时间就"
+"越长,不会对惯性、摩擦力、空气阻力进行仿真。因此,较重较大的物体和较轻较小的物"
+"体会以相同的比例损失速度。\n"
+"每个物理周期中,Godot 会将 RigidBody 的角速度乘以 [code]1.0 - combined_damp / "
+"physics_ticks_per_second[/code]。默认情况下,物体的合并阻尼系数 "
+"[code]combined_damp[/code] 是该物体所有阻尼值与这个值或物体所处区域阻尼值之"
+"和。见 [enum RigidBody3D.DampMode]。\n"
+"[b]警告:[/b]Godot 中的阻尼计算与仿真周期率相关。修改 [member physics/common/"
+"physics_ticks_per_second] 可能对仿真的结果和感觉造成显著影响。只要是大于 0 的"
+"阻尼值都会有这种现象。要恢复此前的感觉,就需要修改阻尼值。修改多少并不成比例,"
+"需要根据实际情况调整。"
+
+msgid ""
"The default gravity strength in 3D (in meters per second squared).\n"
"[b]Note:[/b] This property is only read when the project starts. To change "
"the default gravity at runtime, use the following code sample:\n"
@@ -96934,6 +96177,51 @@ msgstr ""
"[/codeblocks]"
msgid ""
+"The default linear motion damping in 3D. Damping is used to gradually slow "
+"down physical objects over time. RigidBodies will fall back to this value "
+"when combining their own damping values and no area damping value is "
+"present.\n"
+"Suggested values are in the range [code]0[/code] to [code]30[/code]. At value "
+"[code]0[/code] objects will keep moving with the same velocity. Greater "
+"values will stop the object faster. A value equal to or greater than the "
+"physics tick rate ([member physics/common/physics_ticks_per_second]) will "
+"bring the object to a stop in one iteration.\n"
+"[b]Note:[/b] Godot damping calculations are velocity-dependent, meaning "
+"bodies moving faster will take a longer time to come to rest. They do not "
+"simulate inertia, friction, or air resistance. Therefore heavier or larger "
+"bodies will lose speed at the same proportional rate as lighter or smaller "
+"bodies.\n"
+"During each physics tick, Godot will multiply the linear velocity of "
+"RigidBodies by [code]1.0 - combined_damp / physics_ticks_per_second[/code]. "
+"By default, bodies combine damp factors: [code]combined_damp[/code] is the "
+"sum of the damp value of the body and this value or the area's value the body "
+"is in. See [enum RigidBody3D.DampMode].\n"
+"[b]Warning:[/b] Godot's damping calculations are simulation tick rate "
+"dependent. Changing [member physics/common/physics_ticks_per_second] may "
+"significantly change the outcomes and feel of your simulation. This is true "
+"for the entire range of damping values greater than 0. To get back to a "
+"similar feel, you also need to change your damp values. This needed change is "
+"not proportional and differs from case to case."
+msgstr ""
+"默认的 3D 线性运动阻尼。阻尼可以用来让物理对象逐渐慢下来。RigidBody 在合并自身"
+"的阻尼值时,如果没有区域阻尼,那么就会回退到这个值。\n"
+"建议使用 [code]0[/code] 到 [code]30[/code] 之间的值。为 [code]0[/code] 时,对"
+"象会使用相同的速度持续移动。值越大、物体停得越快。如果大于等于物理周期"
+"([member physics/common/physics_ticks_per_second]),那么对象进行一次迭代就会"
+"停下来。\n"
+"[b]注意:[/b]Godot 中的阻尼计算与速度相关,即物体移动得越快、静止所需的时间就"
+"越长,不会对惯性、摩擦力、空气阻力进行仿真。因此,较重较大的物体和较轻较小的物"
+"体会以相同的比例损失速度。\n"
+"每个物理周期中,Godot 会将 RigidBody 的线速度乘以 [code]1.0 - combined_damp / "
+"physics_ticks_per_second[/code],默认情况下,物体的合并阻尼系数 "
+"[code]combined_damp[/code] 是该物体线性阻尼值与这个值或物体所处区域阻尼值之"
+"和。这些都以物体默认合并阻尼值为前提。见 [enum RigidBody3D.DampMode]。\n"
+"[b]警告:[/b]Godot 中的阻尼计算与仿真周期率相关。修改 [member physics/common/"
+"physics_ticks_per_second] 可能对仿真的结果和感觉造成显著影响。只要是大于 0 的"
+"阻尼值都会有这种现象。要恢复此前的感觉,就需要修改阻尼值。修改多少并不成比例,"
+"需要根据实际情况调整。"
+
+msgid ""
"Sets which physics engine to use for 3D physics.\n"
"\"DEFAULT\" and \"GodotPhysics3D\" are the same, as there is currently no "
"alternative 3D physics server implemented."
@@ -97038,7 +96326,7 @@ msgid ""
"the maximum number of simulated physics steps per frame at runtime, set "
"[member Engine.max_physics_steps_per_frame] instead."
msgstr ""
-"控制每个渲染帧所能模拟的最大物理步骤数。默认值经过调试,可以避免“死亡螺旋”,防"
+"控制每个渲染帧所能模拟的最大物理迭代数。默认值经过调试,可以避免“死亡螺旋”,防"
"止开销较大的物理仿真无限触发开销更大的仿真。不过如果渲染 FPS 小于 [member "
"physics/common/physics_ticks_per_second] 的 [code]1 / "
"max_physics_steps_per_frame[/code],游戏看上去会是降速的。即便在物理计算中始终"
@@ -97049,31 +96337,6 @@ msgstr ""
"数,请改为设置 [member Engine.max_physics_steps_per_frame]。"
msgid ""
-"Controls how much physics ticks are synchronized with real time. For 0 or "
-"less, the ticks are synchronized. Such values are recommended for network "
-"games, where clock synchronization matters. Higher values cause higher "
-"deviation of in-game clock and real clock, but allows smoothing out framerate "
-"jitters. The default value of 0.5 should be good enough for most; values "
-"above 2 could cause the game to react to dropped frames with a noticeable "
-"delay and are not recommended.\n"
-"[b]Note:[/b] For best results, when using a custom physics interpolation "
-"solution, the physics jitter fix should be disabled by setting [member "
-"physics/common/physics_jitter_fix] to [code]0[/code].\n"
-"[b]Note:[/b] This property is only read when the project starts. To change "
-"the physics jitter fix at runtime, set [member Engine.physics_jitter_fix] "
-"instead."
-msgstr ""
-"控制物理周期与真实时间的同步程度。小于等于 0 时,周期是同步的。对时钟同步有要"
-"求的网络游戏建议使用此类值。较高的值会导致游戏内时钟和真实时钟的较大偏差,但可"
-"以平滑帧率抖动。大多数情况下,默认值 0.5 应该足够好了;大于 2 的值可能导致游戏"
-"对丢帧作出明显延迟的反应,因此不推荐使用。\n"
-"[b]注意:[/b]为了获得最佳的结果,使用自定义物理插值解决方案时,应通过将 "
-"[member physics/common/physics_jitter_fix] 设置为 [code]0[/code] 来禁用物理抖"
-"动修复。\n"
-"[b]注意:[/b]该属性仅在项目启动时读取。 要在运行时更改物理抖动修复,请改为设"
-"置 [member Engine.physics_jitter_fix]。"
-
-msgid ""
"The number of fixed iterations per second. This controls how often physics "
"simulation and [method Node._physics_process] methods are run. See also "
"[member application/run/max_fps].\n"
@@ -97155,6 +96418,61 @@ msgstr ""
"改用 [method RenderingServer.canvas_set_shadow_texture_size]。"
msgid ""
+"If [code]true[/code], [CanvasItem] nodes will internally snap to full pixels. "
+"Useful for low-resolution pixel art games. Their position can still be sub-"
+"pixel, but the decimals will not have effect as the position is rounded. This "
+"can lead to a crisper appearance at the cost of less smooth movement, "
+"especially when [Camera2D] smoothing is enabled.\n"
+"[b]Note:[/b] This property is only read when the project starts. To toggle 2D "
+"transform snapping at runtime, use [method RenderingServer."
+"viewport_set_snap_2d_transforms_to_pixel] on the root [Viewport] instead.\n"
+"[b]Note:[/b] [Control] nodes are snapped to the nearest pixel by default. "
+"This is controlled by [member gui/common/snap_controls_to_pixels].\n"
+"[b]Note:[/b] It is not recommended to use this setting together with [member "
+"rendering/2d/snap/snap_2d_vertices_to_pixel], as movement may appear even "
+"less smooth. Prefer only enabling this setting instead."
+msgstr ""
+"如果为 [code]true[/code],则 [CanvasItem] 节点会在内部吸附到整像素。对于低分辨"
+"率像素艺术游戏很有用。节点的位置仍然可以是次像素的,但小数点不会产生影响,因为"
+"位置被四舍五入。这样外观看上去就会更锐利,但会影响移动的平滑程度,尤其是在启用"
+"了 [Camera2D] 平滑的情况下。\n"
+"[b]注意:[/b]这个属性仅在项目启动时读取。要在运行时开关 2D 变换的吸附,请改为"
+"在根 [Viewport] 上使用 [method RenderingServer."
+"viewport_set_snap_2d_transforms_to_pixel]。\n"
+"[b]注意:[/b][Control] 节点默认就是吸附到最接近的像素的。这种行为由 [member "
+"gui/common/snap_controls_to_pixels] 控制。\n"
+"[b]注意:[/b]不建议将该设置与 [member rendering/2d/snap/"
+"snap_2d_vertices_to_pixel] 一起使用,因为移动可能会显得更不平滑。最好只启用该"
+"设置。"
+
+msgid ""
+"If [code]true[/code], vertices of [CanvasItem] nodes will snap to full "
+"pixels. Useful for low-resolution pixel art games. Only affects the final "
+"vertex positions, not the transforms. This can lead to a crisper appearance "
+"at the cost of less smooth movement, especially when [Camera2D] smoothing is "
+"enabled.\n"
+"[b]Note:[/b] This property is only read when the project starts. To toggle 2D "
+"vertex snapping at runtime, use [method RenderingServer."
+"viewport_set_snap_2d_vertices_to_pixel] on the root [Viewport] instead.\n"
+"[b]Note:[/b] [Control] nodes are snapped to the nearest pixel by default. "
+"This is controlled by [member gui/common/snap_controls_to_pixels].\n"
+"[b]Note:[/b] It is not recommended to use this setting together with [member "
+"rendering/2d/snap/snap_2d_transforms_to_pixel], as movement may appear even "
+"less smooth. Prefer only enabling that setting instead."
+msgstr ""
+"如果为 [code]true[/code],则 [CanvasItem] 节点的顶点会吸附到整像素。对于低分辨"
+"率像素艺术游戏很有用。只影响最终顶点的位置,不影响变换。这样外观看上去就会更锐"
+"利,但会影响移动的平滑程度,尤其是在启用了 [Camera2D] 平滑的情况下。\n"
+"[b]注意:[/b]这个属性仅在项目启动时读取。要在运行时开关 2D 顶点的吸附,请改为"
+"在根 [Viewport] 上使用 [method RenderingServer."
+"viewport_set_snap_2d_vertices_to_pixel]。\n"
+"[b]注意:[/b][Control] 节点默认就是吸附到最接近的像素的。这种行为由 [member "
+"gui/common/snap_controls_to_pixels] 控制。\n"
+"[b]注意:[/b]不建议将该设置与 [member rendering/2d/snap/"
+"snap_2d_transforms_to_pixel] 一起使用,因为移动可能会显得更不平滑。最好只启用"
+"该设置。"
+
+msgid ""
"Sets the number of MSAA samples to use for 2D/Canvas rendering (as a power of "
"two). MSAA is used to reduce aliasing around the edges of polygons. A higher "
"MSAA value results in smoother edges but can be significantly slower on some "
@@ -97333,6 +96651,21 @@ msgstr ""
"用 Mobile 渲染方法时,不会执行前置深度阶段。"
msgid ""
+"This setting has several known bugs which can lead to crashing, especially "
+"when using particles or resizing the window. Not recommended for use in "
+"production at this stage."
+msgstr ""
+"该设置有几个已知的错误,这可能会导致崩溃,尤其是在使用粒子或调整窗口大小时。现"
+"阶段不建议在生产环境中使用。"
+
+msgid ""
+"The thread model to use for rendering. Rendering on a thread may improve "
+"performance, but synchronizing to the main thread can cause a bit more jitter."
+msgstr ""
+"用于渲染的线程模型。在线程上渲染可能会提高性能,但同步到主线程可能会导致更多的"
+"抖动。"
+
+msgid ""
"Default background clear color. Overridable per [Viewport] using its "
"[Environment]. See [member Environment.background_mode] and [member "
"Environment.background_color] in particular. To change this default color "
@@ -98289,6 +97622,36 @@ msgid ""
msgstr "Direct3D 12 Agility SDK 的版本号([code]D3D12SDKVersion[/code])。"
msgid ""
+"The number of entries in the miscellaneous descriptors heap the Direct3D 12 "
+"rendering driver uses each frame, used for various operations like clearing a "
+"texture.\n"
+"Depending on the complexity of scenes, this value may be lowered or may need "
+"to be raised."
+msgstr ""
+"Direct3D 12 渲染驱动每帧所使用的杂项描述符堆中的条目数,用于清除纹理等各种操"
+"作。\n"
+"这个值可能会降低,也可能需要提高,具体取决于场景的复杂度。"
+
+msgid ""
+"The number of entries in the resource descriptors heap the Direct3D 12 "
+"rendering driver uses each frame, used for most rendering operations.\n"
+"Depending on the complexity of scenes, this value may be lowered or may need "
+"to be raised."
+msgstr ""
+"Direct3D 12 渲染驱动每帧所使用的资源描述符堆中的条目数,用于大多数渲染操作。\n"
+"这个值可能会降低,也可能需要提高,具体取决于场景的复杂度。"
+
+msgid ""
+"The number of entries in the sampler descriptors heap the Direct3D 12 "
+"rendering driver uses each frame, used for most rendering operations.\n"
+"Depending on the complexity of scenes, this value may be lowered or may need "
+"to be raised."
+msgstr ""
+"Direct3D 12 渲染驱动每帧所使用的采样器描述符堆中的条目数,用于大多数渲染操"
+"作。\n"
+"这个值可能会降低,也可能需要提高,具体取决于场景的复杂度。"
+
+msgid ""
"Sets the driver to be used by the renderer when using a RenderingDevice-based "
"renderer like the clustered renderer or the mobile renderer. This property "
"can not be edited directly, instead, set the driver using the platform-"
@@ -98318,6 +97681,57 @@ msgid ""
msgstr "决定管线缓存保存到磁盘的间隔。值越低,保存地越频繁。"
msgid ""
+"The number of frames to track on the CPU side before stalling to wait for the "
+"GPU.\n"
+"Try the [url=https://darksylinc.github.io/vsync_simulator/]V-Sync Simulator[/"
+"url], an interactive interface that simulates presentation to better "
+"understand how it is affected by different variables under various "
+"conditions.\n"
+"[b]Note:[/b] This property is only read when the project starts. There is "
+"currently no way to change this value at run-time."
+msgstr ""
+"在停止等待 GPU 之前要在 CPU 端跟踪的帧数。\n"
+"尝试使用[url=https://darksylinc.github.io/vsync_simulator/]垂直同步模拟器[/"
+"url],这是一个交互式界面,可以模拟演示,以更好地了解不同条件下不同变量的影"
+"响。\n"
+"[b]注意:[/b]该属性仅在项目启动时读取。目前无法在运行时更改该值。"
+
+msgid ""
+"The number of images the swapchain will consist of (back buffers + front "
+"buffer).\n"
+"[code]2[/code] corresponds to double-buffering and [code]3[/code] to triple-"
+"buffering.\n"
+"Double-buffering may give you the lowest lag/latency but if V-Sync is on and "
+"the system can't render at 60 fps, the framerate will go down in multiples of "
+"it (e.g. 30 fps, 15, 7.5, etc.). Triple buffering gives you higher framerate "
+"(specially if the system can't reach a constant 60 fps) at the cost of up to "
+"1 frame of latency, with [constant DisplayServer.VSYNC_ENABLED] (FIFO).\n"
+"Use double-buffering with [constant DisplayServer.VSYNC_ENABLED]. Triple-"
+"buffering is a must if you plan on using [constant DisplayServer."
+"VSYNC_MAILBOX] mode.\n"
+"Try the [url=https://darksylinc.github.io/vsync_simulator/]V-Sync Simulator[/"
+"url], an interactive interface that simulates presentation to better "
+"understand how it is affected by different variables under various "
+"conditions.\n"
+"[b]Note:[/b] This property is only read when the project starts. There is "
+"currently no way to change this value at run-time.\n"
+"[b]Note:[/b] Some platforms may restrict the actual value."
+msgstr ""
+"交换链将包含的图像数量(后台缓冲区 + 前台缓冲区)。\n"
+"[code]2[/code] 对应双缓冲,[code]3[/code] 对应三缓冲。\n"
+"双缓冲可能会给你带来最低的滞后/延迟,但如果垂直同步打开并且系统无法以 60 fps "
+"渲染,则帧率将以它的倍数下降(例如 30 fps、15、7.5 等) 。三重缓冲可为你提供更"
+"高的帧率(特别是在系统无法达到恒定 60 fps 的情况下),其代价是 [constant "
+"DisplayServer.VSYNC_ENABLED](FIFO)时最多 1 帧延迟。\n"
+"将双缓冲与 [constant DisplayServer.VSYNC_ENABLED] 结合使用。如果你计划使用 "
+"[constant DisplayServer.VSYNC_MAILBOX] 模式,则必须使用三重缓冲。\n"
+"尝试使用[url=https://darksylinc.github.io/vsync_simulator/]垂直同步模拟器[/"
+"url],这是一个交互式界面,可以模拟演示,以更好地了解不同条件下不同变量的影"
+"响。\n"
+"[b]注意:[/b]该属性仅在项目启动时读取。目前无法在运行时更改该值。\n"
+"[b]注意:[/b]某些平台可能会限制实际值。"
+
+msgid ""
"Determines how sharp the upscaled image will be when using the FSR upscaling "
"mode. Sharpness halves with every whole number. Values go from 0.0 (sharpest) "
"to 2.0. Values above 2.0 won't make a visible difference."
@@ -98536,6 +97950,30 @@ msgstr ""
msgid ""
"If [code]true[/code], the texture importer will import VRAM-compressed "
+"textures using the Ericsson Texture Compression 2 algorithm for lower quality "
+"textures and normal maps and Adaptable Scalable Texture Compression algorithm "
+"for high quality textures (in 4×4 block size).\n"
+"[b]Note:[/b] This setting is an override. The texture importer will always "
+"import the format the host platform needs, even if this is set to "
+"[code]false[/code].\n"
+"[b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were "
+"already imported before. To make this setting apply to textures that were "
+"already imported, exit the editor, remove the [code].godot/imported/[/code] "
+"folder located inside the project folder then restart the editor (see [member "
+"application/config/use_hidden_project_data_directory])."
+msgstr ""
+"如果为 [code]true[/code],则纹理导入器,将使用 Ericsson 纹理压缩 2 算法导入 "
+"VRAM 压缩纹理以获取较低质量的纹理和法线贴图,并使用自适应可缩放纹理压缩算法导"
+"入高质量纹理(4×4 块大小)。\n"
+"[b]注意:[/b]这是设置覆盖项。即便设为 [code]false[/code],纹理导入器也始终会导"
+"入宿主平台所需的格式。\n"
+"[b]注意:[/b]更改该设置[i]不会[/i]影响之前已经导入的纹理。要使该设置应用于已导"
+"入的纹理,请退出编辑器,移除位于项目文件夹内的 [code].godot/imported/[/code] "
+"文件夹,然后重新启动编辑器(请参阅 [member application/config/"
+"use_hidden_project_data_directory])。"
+
+msgid ""
+"If [code]true[/code], the texture importer will import VRAM-compressed "
"textures using the S3 Texture Compression algorithm (DXT1-5) for lower "
"quality textures and the BPTC algorithm (BC6H and BC7) for high quality "
"textures. This algorithm is only supported on PC desktop platforms and "
@@ -98828,9 +98266,6 @@ msgstr ""
"[PlaneMesh] 是等价的,区别是 [member PlaneMesh.orientation] 默认为 [constant "
"PlaneMesh.FACE_Z]。"
-msgid "2D in 3D Demo"
-msgstr "3D 中的 2D 演示"
-
msgid "Flat plane shape for use with occlusion culling in [OccluderInstance3D]."
msgstr "用于 [OccluderInstance3D] 遮挡剔除的扁平平面形状。"
@@ -98851,10 +98286,100 @@ msgstr "该四边形的大小,使用 3D 单位。"
msgid "A unit quaternion used for representing 3D rotations."
msgstr "代表 3D 旋转的单位四元数。"
+msgid ""
+"The [Quaternion] built-in [Variant] type is a 4D data structure that "
+"represents rotation in the form of a [url=https://en.wikipedia.org/wiki/"
+"Quaternions_and_spatial_rotation]Hamilton convention quaternion[/url]. "
+"Compared to the [Basis] type which can store both rotation and scale, "
+"quaternions can [i]only[/i] store rotation.\n"
+"A [Quaternion] is composed by 4 floating-point components: [member w], "
+"[member x], [member y], and [member z]. These components are very compact in "
+"memory, and because of this some operations are more efficient and less "
+"likely to cause floating-point errors. Methods such as [method get_angle], "
+"[method get_axis], and [method slerp] are faster than their [Basis] "
+"counterparts.\n"
+"For a great introduction to quaternions, see [url=https://www.youtube.com/"
+"watch?v=d4EgbgTm0Bg]this video by 3Blue1Brown[/url]. You do not need to know "
+"the math behind quaternions, as Godot provides several helper methods that "
+"handle it for you. These include [method slerp] and [method "
+"spherical_cubic_interpolate], as well as the [code]*[/code] operator.\n"
+"[b]Note:[/b] Quaternions must be normalized before being used for rotation "
+"(see [method normalized]).\n"
+"[b]Note:[/b] Similarly to [Vector2] and [Vector3], the components of a "
+"quaternion use 32-bit precision by default, unlike [float] which is always 64-"
+"bit. If double precision is needed, compile the engine with the option "
+"[code]precision=double[/code]."
+msgstr ""
+"[Quaternion] 即四元数,是一种内置的 [Variant] 类型,这种 4D 数据结构使用"
+"[url=https://zh.wikipedia.org/zh-cn/"
+"%E5%9B%9B%E5%85%83%E6%95%B0%E4%B8%8E%E7%A9%BA%E9%97%B4%E6%97%8B%E8%BD%AC]哈密"
+"顿四元数[/url]来代表旋转。[Basis] 类型能够同时存储旋转和缩放,而四元数[i]只能"
+"[/i]存储旋转。\n"
+"[Quaternion] 由 4 个浮点分量组成:[member w]、[member x]、[member y]、[member "
+"z]。这些分量在内存中非常紧凑,因此部分运算更加高效、造成的浮点数误差也更低。"
+"[method get_angle]、[method get_axis]、[method slerp] 等方法与 [Basis] 中的版"
+"本相比也更快。\n"
+"四元数的入门知识请观看 [url=https://www.bilibili.com/video/"
+"BV1SW411y7W1/]3Blue1Brown 的这个视频[/url]。四元数背后的数学原理并不需要理解,"
+"因为 Godot 提供了一些辅助方法能够帮你处理相关的情况。其中包含 [method slerp]、"
+"[method spherical_cubic_interpolate] 以及 [code]*[/code] 运算符。\n"
+"[b]注意:[/b]用于旋转前,必须将四元数归一化(见 [method normalized])。\n"
+"[b]注意:[/b]与 [Vector2] 和 [Vector3] 类似,四元数的分量默认使用的是 32 位精"
+"度,而 [float] 则是 64 位。如果需要双精度,请使用 [code]precision=double[/"
+"code] 选项编译引擎。"
+
+msgid "3Blue1Brown's video on Quaternions"
+msgstr "3Blue1Brown 关于四元数的视频"
+
+msgid "Online Quaternion Visualization"
+msgstr "在线四元数可视化"
+
+msgid "Advanced Quaternion Visualization"
+msgstr "高级四元数可视化"
+
+msgid "Constructs a [Quaternion] identical to the [constant IDENTITY]."
+msgstr "构造一个与 [constant IDENTITY] 相同的 [Quaternion]。"
+
msgid "Constructs a [Quaternion] as a copy of the given [Quaternion]."
msgstr "构造给定 [Quaternion] 的副本。"
msgid ""
+"Constructs a [Quaternion] representing the shortest arc between [param "
+"arc_from] and [param arc_to]. These can be imagined as two points "
+"intersecting a sphere's surface, with a radius of [code]1.0[/code]."
+msgstr ""
+"构造一个表示 [param arc_from] 和 [param arc_to] 之间最短弧的 [Quaternion]。这"
+"些可以想象为与球体表面相交的两个点,球面半径为 [code]1.0[/code]。"
+
+msgid ""
+"Constructs a [Quaternion] representing rotation around the [param axis] by "
+"the given [param angle], in radians. The axis must be a normalized vector."
+msgstr ""
+"构造一个 [Quaternion],表示围绕 [param axis] 旋转给定的 [param angle] 弧度。该"
+"轴必须是一个归一化向量。"
+
+msgid ""
+"Constructs a [Quaternion] from the given rotation [Basis].\n"
+"This constructor is faster than [method Basis.get_rotation_quaternion], but "
+"the given basis must be [i]orthonormalized[/i] (see [method Basis."
+"orthonormalized]). Otherwise, the constructor fails and returns [constant "
+"IDENTITY]."
+msgstr ""
+"根据给定的旋转 [Basis] 构造一个 [Quaternion]。\n"
+"该构造函数比 [method Basis.get_rotation_quaternion] 更快,但给定的基必须是[i]"
+"正交归一化的[/i](请参阅 [method Basis.orthonormalized])。否则,构造函数将失"
+"败并返回 [constant IDENTITY]。"
+
+msgid ""
+"Constructs a [Quaternion] defined by the given values.\n"
+"[b]Note:[/b] Only normalized quaternions represent rotation; if these values "
+"are not normalized, the new [Quaternion] will not be a valid rotation."
+msgstr ""
+"构造一个由给定值定义的 [Quaternion]。\n"
+"[b]注意:[/b]只有归一化的四元数才表示旋转;如果这些值没有归一化,则新的 "
+"[Quaternion] 将不是有效的旋转。"
+
+msgid ""
"Returns the angle between this quaternion and [param to]. This is the "
"magnitude of the angle you would need to rotate by to get from one to the "
"other.\n"
@@ -98868,6 +98393,15 @@ msgstr ""
"法的结果不可靠。"
msgid ""
+"Returns the dot product between this quaternion and [param with].\n"
+"This is equivalent to [code](quat.x * with.x) + (quat.y * with.y) + (quat.z * "
+"with.z) + (quat.w * with.w)[/code]."
+msgstr ""
+"返回该四元数与 [param with] 的点积。\n"
+"等价于 [code](quat.x * with.x) + (quat.y * with.y) + (quat.z * with.z) + "
+"(quat.w * with.w)[/code]。"
+
+msgid ""
"Returns the exponential of this quaternion. The rotation axis of the result "
"is the normalized rotation axis of this quaternion, the angle of the result "
"is the length of the vector part of this quaternion."
@@ -98876,6 +98410,15 @@ msgstr ""
"元数的向量部分的长度。"
msgid ""
+"Constructs a new [Quaternion] from the given [Vector3] of [url=https://en."
+"wikipedia.org/wiki/Euler_angles]Euler angles[/url], in radians. This method "
+"always uses the YXZ convention ([constant EULER_ORDER_YXZ])."
+msgstr ""
+"从给定的 [url=https://en.wikipedia.org/wiki/Euler_angles]欧拉角[/url]的 "
+"[Vector3] 弧度角构造一个新的 [Quaternion]。该方法始终使用 YXZ 约定([constant "
+"EULER_ORDER_YXZ])。"
+
+msgid ""
"Returns the angle of the rotation represented by this quaternion.\n"
"[b]Note:[/b] The quaternion must be normalized."
msgstr ""
@@ -98887,6 +98430,27 @@ msgid ""
msgstr "返回该四元数表示的旋转的旋转轴。"
msgid ""
+"Returns this quaternion's rotation as a [Vector3] of [url=https://en."
+"wikipedia.org/wiki/Euler_angles]Euler angles[/url], in radians.\n"
+"The order of each consecutive rotation can be changed with [param order] (see "
+"[enum EulerOrder] constants). By default, the YXZ convention is used "
+"([constant EULER_ORDER_YXZ]): Z (roll) is calculated first, then X (pitch), "
+"and lastly Y (yaw). When using the opposite method [method from_euler], this "
+"order is reversed."
+msgstr ""
+"返回该四元数的旋转作为[url=https://en.wikipedia.org/wiki/Euler_angles]欧拉角[/"
+"url]弧度角的 [Vector3]。\n"
+"每个连续旋转的顺序可以使用 [param order] 更改(请参阅 [enum EulerOrder] 常"
+"量)。默认情况下,使用 YXZ 约定([constant EULER_ORDER_YXZ]):首先计算 Z(翻"
+"滚),然后计算 X(俯仰),最后计算 Y(偏航)。当使用相反的方法 [method "
+"from_euler] 时,该顺序相反。"
+
+msgid ""
+"Returns the inverse version of this quaternion, inverting the sign of every "
+"component except [member w]."
+msgstr "返回该四元数的逆版本,反转除 [member w] 之外的每个分量的符号。"
+
+msgid ""
"Returns [code]true[/code] if this quaternion and [param to] are approximately "
"equal, by running [method @GlobalScope.is_equal_approx] on each component."
msgstr ""
@@ -98901,6 +98465,59 @@ msgstr ""
"[method @GlobalScope.is_finite]。"
msgid ""
+"Returns [code]true[/code] if this quaternion is normalized. See also [method "
+"normalized]."
+msgstr ""
+"如果该四元数已被归一化,则返回 [code]true[/code]。另见 [method normalized]。"
+
+msgid "Returns this quaternion's length, also called magnitude."
+msgstr "返回该四元数的长度,也被称为幅度。"
+
+msgid ""
+"Returns this quaternion's length, squared.\n"
+"[b]Note:[/b] This method is faster than [method length], so prefer it if you "
+"only need to compare quaternion lengths."
+msgstr ""
+"返回该四元数的长度的平方。\n"
+"[b]注意:[/b]该方法比 [method length] 更快,因此如果你只需要比较四元数的长度,"
+"则优先使用它。"
+
+msgid ""
+"Returns the logarithm of this quaternion. Multiplies this quaternion's "
+"rotation axis by its rotation angle, and stores the result in the returned "
+"quaternion's vector part ([member x], [member y], and [member z]). The "
+"returned quaternion's real part ([member w]) is always [code]0.0[/code]."
+msgstr ""
+"返回该四元数的对数。将该四元数的旋转轴乘以它的旋转角度,并将结果存储在返回的四"
+"元数的向量部分([member x]、[member y] 和 [member z])中。返回的四元数的实数部"
+"分([member w])始终为 [code]0.0[/code]。"
+
+msgid ""
+"Returns a copy of this quaternion, normalized so that its length is "
+"[code]1.0[/code]. See also [method is_normalized]."
+msgstr ""
+"返回该四元数的副本,已归一化,因此其长度为 [code]1.0[/code]。另见 [method "
+"is_normalized]。"
+
+msgid ""
+"Performs a spherical-linear interpolation with the [param to] quaternion, "
+"given a [param weight] and returns the result. Both this quaternion and "
+"[param to] must be normalized."
+msgstr ""
+"使用 [param to] 四元数,在给定 [param weight] 下执行球面线性插值并返回结果。该"
+"四元数和 [param to] 都必须已归一化。"
+
+msgid ""
+"Performs a spherical-linear interpolation with the [param to] quaternion, "
+"given a [param weight] and returns the result. Unlike [method slerp], this "
+"method does not check if the rotation path is smaller than 90 degrees. Both "
+"this quaternion and [param to] must be normalized."
+msgstr ""
+"在给定 [param weight] 的情况下,使用 [param to] 四元数执行球面线性插值并返回结"
+"果。与 [method slerp] 不同,该方法不检查旋转路径是否小于 90 度。该四元数和 "
+"[param to] 都必须是归一化的。"
+
+msgid ""
"Performs a spherical cubic interpolation between quaternions [param pre_a], "
"this vector, [param b], and [param post_b], by the given amount [param "
"weight]."
@@ -98919,6 +98536,146 @@ msgstr ""
"[param weight] 执行三次球面插值。\n"
"它可以根据时间值执行比 [method spherical_cubic_interpolate] 更平滑的插值。"
+msgid ""
+"W component of the quaternion. This is the \"real\" part.\n"
+"[b]Note:[/b] Quaternion components should usually not be manipulated directly."
+msgstr ""
+"四元数的 W 分量。这是“实数”的部分。\n"
+"[b]注意:[/b]四元数分量通常不应被直接操作。"
+
+msgid ""
+"X component of the quaternion. This is the value along the \"imaginary\" "
+"[code]i[/code] axis.\n"
+"[b]Note:[/b] Quaternion components should usually not be manipulated directly."
+msgstr ""
+"四元数的 X 分量。这是沿“虚数” [code]i[/code] 轴的值。\n"
+"[b]注意:[/b]四元数分量通常不应被直接操作。"
+
+msgid ""
+"Y component of the quaternion. This is the value along the \"imaginary\" "
+"[code]j[/code] axis.\n"
+"[b]Note:[/b] Quaternion components should usually not be manipulated directly."
+msgstr ""
+"四元数的 Y 分量。这是沿“虚数” [code]j[/code] 轴的值。\n"
+"[b]注意:[/b]四元数分量通常不应被直接操作。"
+
+msgid ""
+"Z component of the quaternion. This is the value along the \"imaginary\" "
+"[code]k[/code] axis.\n"
+"[b]Note:[/b] Quaternion components should usually not be manipulated directly."
+msgstr ""
+"四元数的 Z 分量。这是沿“虚数” [code]k[/code] 轴的值。\n"
+"[b]注意:[/b]四元数分量通常不应被直接操作。"
+
+msgid ""
+"The identity quaternion, representing no rotation. This has the same rotation "
+"as [constant Basis.IDENTITY].\n"
+"If a [Vector3] is rotated (multiplied) by this quaternion, it does not change."
+msgstr ""
+"单位四元数,代表无旋转。这与 [constant Basis.IDENTITY] 具有相同的旋转。\n"
+"如果一个 [Vector3] 被该四元数旋转(乘以),则它不会改变。"
+
+msgid ""
+"Returns [code]true[/code] if the components of both quaternions 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 ""
+"Composes (multiplies) two quaternions. This rotates the [param right] "
+"quaternion (the child) by this quaternion (the parent)."
+msgstr ""
+"组合(相乘)两个四元数。这会由该四元数(父项)旋转 [param right] 四元数(子"
+"项)。"
+
+msgid ""
+"Rotates (multiplies) the [param right] vector by this quaternion, returning a "
+"[Vector3]."
+msgstr "由该四元数旋转(乘以) [param right] 向量,返回一个 [Vector3]。"
+
+msgid ""
+"Multiplies each component of the [Quaternion] by the right [float] value.\n"
+"This operation is not meaningful on its own, but it can be used as a part of "
+"a larger expression."
+msgstr ""
+"将该 [Quaternion] 的每个分量乘以右侧的 [float] 值。\n"
+"该操作本身没有意义,但可以用作更大表达式的一部分。"
+
+msgid ""
+"Multiplies each component of the [Quaternion] by the right [int] value.\n"
+"This operation is not meaningful on its own, but it can be used as a part of "
+"a larger expression."
+msgstr ""
+"将该 [Quaternion] 的每个分量乘以右侧 [int] 值。\n"
+"该操作本身没有意义,但可以用作更大表达式的一部分。"
+
+msgid ""
+"Adds each component of the left [Quaternion] to the right [Quaternion].\n"
+"This operation is not meaningful on its own, but it can be used as a part of "
+"a larger expression, such as approximating an intermediate rotation between "
+"two nearby rotations."
+msgstr ""
+"将左侧 [Quaternion] 的每个分量添加到右侧 [Quaternion]。\n"
+"该操作本身没有意义,但可以用作更大表达式的一部分,例如用于近似两个相邻旋转之间"
+"的中间旋转。"
+
+msgid ""
+"Subtracts each component of the left [Quaternion] by the right [Quaternion].\n"
+"This operation is not meaningful on its own, but it can be used as a part of "
+"a larger expression."
+msgstr ""
+"将左侧 [Quaternion] 的每个分量减去右侧 [Quaternion]。\n"
+"该操作本身没有意义,但可以用作更大表达式的一部分。"
+
+msgid ""
+"Divides each component of the [Quaternion] by the right [float] value.\n"
+"This operation is not meaningful on its own, but it can be used as a part of "
+"a larger expression."
+msgstr ""
+"将该 [Quaternion] 的每个分量除以右侧 [float] 值。\n"
+"该操作本身没有意义,但可以用作更大表达式的一部分。"
+
+msgid ""
+"Divides each component of the [Quaternion] by the right [int] value.\n"
+"This operation is not meaningful on its own, but it can be used as a part of "
+"a larger expression."
+msgstr ""
+"将该 [Quaternion] 的每个分量除以右侧的 [int] 值。\n"
+"该操作本身没有意义,但可以用作更大表达式的一部分。"
+
+msgid ""
+"Returns [code]true[/code] if the components of both quaternions are exactly "
+"equal.\n"
+"[b]Note:[/b] Due to floating-point precision errors, consider using [method "
+"is_equal_approx] instead, which is more reliable."
+msgstr ""
+"如果两个四元数的分量完全相等,则返回 [code]true[/code]。\n"
+"[b]注意:[/b]由于浮点精度误差,请考虑改用 [method is_equal_approx],这样更可"
+"靠。"
+
+msgid ""
+"Accesses each component of this quaternion by their index.\n"
+"Index [code]0[/code] is the same as [member x], index [code]1[/code] is the "
+"same as [member y], index [code]2[/code] is the same as [member z], and index "
+"[code]3[/code] is the same as [member w]."
+msgstr ""
+"通过索引访问该四元数的每个分量。\n"
+"索引 [code]0[/code] 与 [member x] 相同,索引 [code]1[/code] 与 [member y] 相"
+"同,索引 [code]2[/code] 与 [member z] 相同,索引 [code]3[/code] 与 [member w] "
+"相同。"
+
+msgid ""
+"Returns the negative value of the [Quaternion]. This is the same as "
+"multiplying all components by [code]-1[/code]. This operation results in a "
+"quaternion that represents the same rotation."
+msgstr ""
+"返回该 [Quaternion] 的负值。这与将所有分量乘以 [code]-1[/code] 相同。这个操作"
+"得到的是代表相同旋转的四元数。"
+
msgid "Provides methods for generating pseudo-random numbers."
msgstr "提供生成伪随机数的方法。"
@@ -98946,6 +98703,37 @@ msgstr ""
"[/codeblock]"
msgid ""
+"Returns a random index with non-uniform weights. Prints an error and returns "
+"[code]-1[/code] if the array is empty.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var rng = RandomNumberGenerator.new()\n"
+"\n"
+"var my_array = [\"one\", \"two\", \"three\", \"four\"]\n"
+"var weights = PackedFloat32Array([0.5, 1, 1, 2])\n"
+"\n"
+"# Prints one of the four elements in `my_array`.\n"
+"# It is more likely to print \"four\", and less likely to print \"one\".\n"
+"print(my_array[rng.rand_weighted(weights)])\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+msgstr ""
+"返回具有非均匀权重的随机索引。如果数组为空,则输出错误并返回 [code]-1[/"
+"code]。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var rng = RandomNumberGenerator.new()\n"
+"\n"
+"var my_array = [\"one\", \"two\", \"three\", \"four\"]\n"
+"var weights = PackedFloat32Array([0.5, 1, 1, 2])\n"
+"\n"
+"# 输出 `my_array` 中的四个元素之一。\n"
+"# 更有可能输出 “four”,而不太可能输出 “one”。\n"
+"print(my_array[rng.rand_weighted(weights)])\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+
+msgid ""
"Returns a pseudo-random float between [code]0.0[/code] and [code]1.0[/code] "
"(inclusive)."
msgstr ""
@@ -98956,6 +98744,20 @@ msgid ""
msgstr "返回在 [param from] 和 [param to] 之间(含端点)的伪随机浮点数。"
msgid ""
+"Returns a [url=https://en.wikipedia.org/wiki/Normal_distribution]normally-"
+"distributed[/url], pseudo-random floating-point number from the specified "
+"[param mean] and a standard [param deviation]. This is also known as a "
+"Gaussian distribution.\n"
+"[b]Note:[/b] This method uses the [url=https://en.wikipedia.org/wiki/"
+"Box%E2%80%93Muller_transform]Box-Muller transform[/url] algorithm."
+msgstr ""
+"返回一个[url=https://en.wikipedia.org/wiki/Normal_distribution]正态分布[/url]"
+"的伪随机数,该分布使用指定的 [param mean] 和标准 [param deviation]。这也被称为"
+"高斯分布。\n"
+"[b]注意:[/b]该方法使用 [url=https://en.wikipedia.org/wiki/"
+"Box%E2%80%93Muller_transform]Box-Muller 变换[/url]算法。"
+
+msgid ""
"Returns a pseudo-random 32-bit unsigned integer between [code]0[/code] and "
"[code]4294967295[/code] (inclusive)."
msgstr ""
@@ -99230,32 +99032,6 @@ msgstr ""
"(即 [method is_colliding] 返回 [code]false[/code])。"
msgid ""
-"Returns the shape ID of the first object that the ray intersects, or [code]0[/"
-"code] if no object is intersecting the ray (i.e. [method is_colliding] "
-"returns [code]false[/code])."
-msgstr ""
-"返回射线相交的第一个对象的形状 ID,如果没有对象与射线相交,则返回 [code]0[/"
-"code](即 [method is_colliding] 返回 [code]false[/code])。"
-
-msgid ""
-"Returns the normal of the intersecting object's shape at the collision point, "
-"or [code]Vector2(0, 0)[/code] if the ray starts inside the shape and [member "
-"hit_from_inside] is [code]true[/code]."
-msgstr ""
-"返回相交对象的形状在碰撞点处的法线,如果射线从该形状内部发出并且 [member "
-"hit_from_inside] 为 [code]true[/code],则为 [code]Vector2(0, 0)[/code]。"
-
-msgid ""
-"Returns the collision point at which the ray intersects the closest object. "
-"If [member hit_from_inside] is [code]true[/code] and the ray starts inside of "
-"a collision shape, this function will return the origin point of the ray.\n"
-"[b]Note:[/b] This point is in the [b]global[/b] coordinate system."
-msgstr ""
-"返回射线与最近的物体相交的碰撞点。如果 [member hit_from_inside] 为 "
-"[code]true[/code] 并且射线从碰撞形状内部开始,则该函数将返回该射线的原点。\n"
-"[b]注意:[/b]这个点是在[b]全局[/b]坐标系中。"
-
-msgid ""
"Returns whether any object is intersecting with the ray's vector (considering "
"the vector length)."
msgstr "返回是否有任何对象与射线的向量相交(考虑向量长度)。"
@@ -99350,14 +99126,6 @@ msgstr ""
"[ConcavePolygonShape3D],则返回 [code]-1[/code]。"
msgid ""
-"Returns the normal of the intersecting object's shape at the collision point, "
-"or [code]Vector3(0, 0, 0)[/code] if the ray starts inside the shape and "
-"[member hit_from_inside] is [code]true[/code]."
-msgstr ""
-"返回相交对象形状在碰撞点处的法线;或者如果射线从形状内部开始并且 [member "
-"hit_from_inside] 为 [code]true[/code],则返回 [code]Vector3(0, 0, 0)[/code]。"
-
-msgid ""
"Removes a collision exception so the ray does report collisions with the "
"specified [CollisionObject3D] node."
msgstr ""
@@ -99788,7 +99556,7 @@ msgid ""
"that begin with \"front_op\" and properties with \"back_op\" for each."
msgstr ""
"如果为 [code]true[/code],则启用模板测试。正面三角形和背面三角形有单独的模板缓"
-"冲区。请参阅每个以“front_op”开头、和以“back_op”开头的属性。"
+"冲区。请参阅每个以“front_op”开头和以“back_op”开头的属性。"
msgid ""
"The method used for comparing the previous front stencil value and [member "
@@ -99904,6 +99672,34 @@ msgid ""
msgstr "绘制多边形时的剔除模式,决定隐藏正面还是反面。"
msgid ""
+"A limit for how much each depth value can be offset. If negative, it serves "
+"as a minimum value, but if positive, it serves as a maximum value."
+msgstr ""
+"每个深度值可以偏移多少的限制。如果为负,则充当最小值;如果为正,则充当最大值。"
+
+msgid ""
+"A constant offset added to each depth value. Applied after [member "
+"depth_bias_slope_factor]."
+msgstr ""
+"添加到每个深度值的恒定偏移量。在 [member depth_bias_slope_factor] 之后应用。"
+
+msgid ""
+"If [code]true[/code], each generated depth value will by offset by some "
+"amount. The specific amount is generated per polygon based on the values of "
+"[member depth_bias_slope_factor] and [member depth_bias_constant_factor]."
+msgstr ""
+"如果为 [code]true[/code],每个生成的深度值将偏移一定量。它是基于 [member "
+"depth_bias_slope_factor] 和 [member depth_bias_constant_factor] 的值生成每个多"
+"边形的特定量。"
+
+msgid ""
+"A constant scale applied to the slope of each polygons' depth. Applied before "
+"[member depth_bias_constant_factor]."
+msgstr ""
+"应用于每个多边形深度斜率的恒定缩放。在 [member depth_bias_constant_factor] 之"
+"前应用。"
+
+msgid ""
"If [code]true[/code], primitives are discarded immediately before the "
"rasterization stage."
msgstr "如果为 [code]true[/code],则会在栅格化阶段前立即丢弃图元。"
@@ -100021,12 +99817,24 @@ msgstr ""
"[code]0.0[/code] 之间。仅在采样器的 mipmap 可用时有效。"
msgid ""
+"The sampler's magnification filter. It is the filtering method used when "
+"sampling texels that appear bigger than on-screen pixels."
+msgstr ""
+"采样器的放大过滤器。如果采样的纹素比屏幕像素显示得大,就会使用这个过滤方法。"
+
+msgid ""
"The maximum mipmap LOD bias to display (lowest resolution). Only effective if "
"the sampler has mipmaps available."
msgstr ""
"用于显示的最大 mipmap LOD 偏置(最低分辨率)。仅在采样器有 mipmap 可用时有效。"
msgid ""
+"The sampler's minification filter. It is the filtering method used when "
+"sampling texels that appear smaller than on-screen pixels."
+msgstr ""
+"采样器的缩小过滤器。如果采样的纹素比屏幕像素显示得小,就会使用这个过滤方法。"
+
+msgid ""
"The minimum mipmap LOD bias to display (highest resolution). Only effective "
"if the sampler has mipmaps available."
msgstr ""
@@ -100054,6 +99862,14 @@ msgstr ""
"效。"
msgid ""
+"If [code]true[/code], the texture will be sampled with coordinates ranging "
+"from 0 to the texture's resolution. Otherwise, the coordinates will be "
+"normalized and range from 0 to 1."
+msgstr ""
+"如果为 [code]true[/code],则纹理将使用范围从 0 到纹理分辨率的坐标进行采样。否"
+"则,坐标将被归一化,范围从 0 到 1。"
+
+msgid ""
"If [code]true[/code], perform anisotropic sampling. See [member "
"anisotropy_max]."
msgstr "如果为 [code]true[/code],则执行各向异性采样。"
@@ -100334,6 +100150,16 @@ msgstr "对红色通道进行采样时采样的通道。"
msgid "Shader uniform (used by [RenderingDevice])."
msgstr "着色器 Uniform(由 [RenderingDevice] 使用)。"
+msgid ""
+"Binds the given id to the uniform. The data associated with the id is then "
+"used when the uniform is passed to a shader."
+msgstr ""
+"将给定的 ID 绑定到 uniform。将 Uniform 传递给着色器时会使用与该 ID 关联的数"
+"据。"
+
+msgid "Unbinds all ids currently bound to the uniform."
+msgstr "解绑所有与该 uniform 绑定的 ID。"
+
msgid "Returns an array of all ids currently bound to the uniform."
msgstr "返回当前绑定到该 uniform 的所有 id 的数组。"
@@ -100437,40 +100263,6 @@ msgid ""
msgstr "如果该矩形[i]完全[/i]包含 [param b] 矩形,则返回 [code]true[/code]。"
msgid ""
-"Returns a copy of this rectangle expanded to align the edges with the given "
-"[param to] point, if necessary.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var rect = Rect2(0, 0, 5, 2)\n"
-"\n"
-"rect = rect.expand(Vector2(10, 0)) # rect is Rect2(0, 0, 10, 2)\n"
-"rect = rect.expand(Vector2(-5, 5)) # rect is Rect2(-5, 0, 10, 5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var rect = new Rect2(0, 0, 5, 2);\n"
-"\n"
-"rect = rect.Expand(new Vector2(10, 0)); // rect is Rect2(0, 0, 10, 2)\n"
-"rect = rect.Expand(new Vector2(-5, 5)); // rect is Rect2(-5, 0, 10, 5)\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"返回该矩形的副本,如有必要,该矩形被扩展为将边缘与给定的 [param to] 点对齐。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var rect = Rect2(0, 0, 5, 2)\n"
-"\n"
-"rect = rect.expand(Vector2(10, 0)) # rect 为 Rect2(0, 0, 10, 2)\n"
-"rect = rect.expand(Vector2(-5, 5)) # rect 为 Rect2(-5, 0, 10, 5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var rect = new Rect2(0, 0, 5, 2);\n"
-"\n"
-"rect = rect.Expand(new Vector2(10, 0)); // rect 为 Rect2(0, 0, 10, 2)\n"
-"rect = rect.Expand(new Vector2(-5, 5)); // rect 为 Rect2(-5, 0, 10, 5)\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Returns the rectangle's area. This is equivalent to [code]size.x * size.y[/"
"code]. See also [method has_area]."
msgstr ""
@@ -100516,7 +100308,7 @@ msgid ""
"values shrink the sides, instead. See also [method grow] and [method "
"grow_side]."
msgstr ""
-"返回该矩形的副本,其 [param left]、[param top]、[param right]、和 [param "
+"返回该矩形的副本,其 [param left]、[param top]、[param right] 和 [param "
"bottom] 边扩展了给定的量。相反,负值会缩小边。另见 [method grow] and [method "
"grow_side]。"
@@ -100766,40 +100558,6 @@ msgid ""
msgstr "如果该 [Rect2i] 完全包含另一个,则返回 [code]true[/code]。"
msgid ""
-"Returns a copy of this rectangle expanded to align the edges with the given "
-"[param to] point, if necessary.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var rect = Rect2i(0, 0, 5, 2)\n"
-"\n"
-"rect = rect.expand(Vector2i(10, 0)) # rect is Rect2i(0, 0, 10, 2)\n"
-"rect = rect.expand(Vector2i(-5, 5)) # rect is Rect2i(-5, 0, 10, 5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var rect = new Rect2I(0, 0, 5, 2);\n"
-"\n"
-"rect = rect.Expand(new Vector2I(10, 0)); // rect is Rect2I(0, 0, 10, 2)\n"
-"rect = rect.Expand(new Vector2I(-5, 5)); // rect is Rect2I(-5, 0, 10, 5)\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"返回该矩形的副本,如有必要,该矩形被扩展为将边缘与给定的 [param to] 点对齐。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var rect = Rect2i(0, 0, 5, 2)\n"
-"\n"
-"rect = rect.expand(Vector2i(10, 0)) # rect 为 Rect2i(0, 0, 10, 2)\n"
-"rect = rect.expand(Vector2i(-5, 5)) # rect 为 Rect2i(-5, 0, 10, 5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var rect = new Rect2I(0, 0, 5, 2);\n"
-"\n"
-"rect = rect.Expand(new Vector2I(10, 0)); // rect 为 Rect2I(0, 0, 10, 2)\n"
-"rect = rect.Expand(new Vector2I(-5, 5)); // rect 为 Rect2I(-5, 0, 10, 5)\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Returns the center point of the rectangle. This is the same as [code]position "
"+ (size / 2)[/code].\n"
"[b]Note:[/b] If the [member size] is odd, the result will be rounded towards "
@@ -100930,6 +100688,44 @@ msgstr "该矩形的宽度和高度。"
msgid "Base class for reference-counted objects."
msgstr "引用计数对象的基类。"
+msgid ""
+"Base class for any object that keeps a reference count. [Resource] and many "
+"other helper objects inherit this class.\n"
+"Unlike other [Object] types, [RefCounted]s keep an internal reference counter "
+"so that they are automatically released when no longer in use, and only then. "
+"[RefCounted]s therefore do not need to be freed manually with [method Object."
+"free].\n"
+"[RefCounted] instances caught in a cyclic reference will [b]not[/b] be freed "
+"automatically. For example, if a node holds a reference to instance [code]A[/"
+"code], which directly or indirectly holds a reference back to [code]A[/code], "
+"[code]A[/code]'s reference count will be 2. Destruction of the node will "
+"leave [code]A[/code] dangling with a reference count of 1, and there will be "
+"a memory leak. To prevent this, one of the references in the cycle can be "
+"made weak with [method @GlobalScope.weakref].\n"
+"In the vast majority of use cases, instantiating and using [RefCounted]-"
+"derived types is all you need to do. The methods provided in this class are "
+"only for advanced users, and can cause issues if misused.\n"
+"[b]Note:[/b] In C#, reference-counted objects will not be freed instantly "
+"after they are no longer in use. Instead, garbage collection will run "
+"periodically and will free reference-counted objects that are no longer in "
+"use. This means that unused ones will remain in memory for a while before "
+"being removed."
+msgstr ""
+"所有保持引用计数的对象的基类。[Resource] 和许多其他辅助对象继承该类。\n"
+"与其他 [Object] 类型不同,[RefCounted] 保留一个内部引用计数器,以便它们在不再"
+"使用时自动释放,并且仅在那时才会如此。因此,[RefCounted] 不需要使用 [method "
+"Object.free] 手动释放。\n"
+"陷入循环引用的 [RefCounted] 实例将[b]不会[/b]自动释放。例如,如果节点持有对实"
+"例 [code]A[/code] 的引用,而该实例直接或间接持有对 [code]A[/code] 的引用,则 "
+"[code]A[/code] 的引用计数将为 2。该节点的销毁将使 [code]A[/code] 悬空,引用计"
+"数为 1,并且会出现内存泄漏。为了防止这种情况,可以使用 [method @GlobalScope."
+"weakref] 将循环中的引用之一设置为弱引用。\n"
+"在绝大多数用例中,只需实例化和使用 [RefCounted] 派生类型即可。该类中提供的方法"
+"仅适用于高级用户,如果使用不当可能会导致问题。\n"
+"[b]注意:[/b]在 C# 中,引用计数的对象在不再使用后不会立即被释放。相反,垃圾收"
+"集将定期运行,并释放不再使用的引用计数对象。这意味着未使用的引用计数对象会在被"
+"移除之前在内存中保留一段时间。"
+
msgid "Returns the current reference count."
msgstr "返回当前的引用计数。"
@@ -101155,6 +100951,17 @@ msgstr ""
"数量。"
msgid ""
+"Sets the reflection mask which determines what objects have reflections "
+"applied from this probe. Every [VisualInstance3D] with a layer included in "
+"this reflection mask will have reflections applied from this probe. See also "
+"[member cull_mask], which can be used to exclude objects from appearing in "
+"the reflection while still making them affected by the [ReflectionProbe]."
+msgstr ""
+"设置反射掩码,该掩码确定哪些对象应用了来自该探针的反射。每个包含在该反射掩码中"
+"的层的 [VisualInstance3D] 都将由该探针应用反射。另请参阅 [member cull_mask],"
+"它可用于排除对象出现在反射中,同时仍使它们受到 [ReflectionProbe] 的影响。"
+
+msgid ""
"The size of the reflection probe. The larger the size, the more space covered "
"by the probe, which will lower the perceived resolution. It is best to keep "
"the size only as large as you need it.\n"
@@ -101613,6 +101420,42 @@ msgstr "返回管理这个视口渲染的 [RenderSceneBuffers] 对象。"
msgid "Returns the [RenderSceneData] object managing this frames scene data."
msgstr "返回管理这个帧场景数据的 [RenderSceneData] 对象。"
+msgid ""
+"This class allows for a RenderData implementation to be made in GDExtension."
+msgstr "该类允许在 GDExtension 中实现 RenderData。"
+
+msgid ""
+"Implement this in GDExtension to return the [RID] for the implementations "
+"camera attributes object."
+msgstr "在 GDExtension 中实现它以返回实现相机属性对象的 [RID]。"
+
+msgid ""
+"Implement this in GDExtension to return the [RID] of the implementations "
+"environment object."
+msgstr "在 GDExtension 中实现它以返回实现环境对象的 [RID]。"
+
+msgid ""
+"Implement this in GDExtension to return the implementations "
+"[RenderSceneDataExtension] object."
+msgstr "在 GDExtension 中实现它以返回实现 [RenderSceneDataExtension] 对象。"
+
+msgid ""
+"Render data implementation for the RenderingDevice based renderers.\n"
+"[b]Note:[/b] This is an internal rendering server object, do not instantiate "
+"this from script."
+msgstr ""
+"基于 RenderingDevice 的渲染器的渲染数据实现。\n"
+"[b]注意:[/b]这是一个内部渲染服务器对象,不要从脚本中实例化它。"
+
+msgid ""
+"This object manages all render data for the rendering device based "
+"renderers.\n"
+"[b]Note:[/b] This is an internal rendering server object only exposed for "
+"GDExtension plugins."
+msgstr ""
+"该对象管理基于渲染设备的渲染器的所有渲染数据。\n"
+"[b]注意:[/b]这是一个仅为 GDExtension 插件公开的内部渲染服务器对象。"
+
msgid "Abstraction for working with modern low-level graphics APIs."
msgstr "用于处理现代低阶图形 API 的抽象。"
@@ -101744,6 +101587,57 @@ msgid "Raises a Vulkan compute barrier in the specified [param compute_list]."
msgstr "在指定的 [param compute_list] 中引发 Vulkan 计算屏障。"
msgid ""
+"Starts a list of compute commands created with the [code]compute_*[/code] "
+"methods. The returned value should be passed to other [code]compute_list_*[/"
+"code] functions.\n"
+"Multiple compute lists cannot be created at the same time; you must finish "
+"the previous compute list first using [method compute_list_end].\n"
+"A simple compute operation might look like this (code is not a complete "
+"example):\n"
+"[codeblock]\n"
+"var rd = RenderingDevice.new()\n"
+"var compute_list = rd.compute_list_begin()\n"
+"\n"
+"rd.compute_list_bind_compute_pipeline(compute_list, "
+"compute_shader_dilate_pipeline)\n"
+"rd.compute_list_bind_uniform_set(compute_list, compute_base_uniform_set, 0)\n"
+"rd.compute_list_bind_uniform_set(compute_list, dilate_uniform_set, 1)\n"
+"\n"
+"for i in atlas_slices:\n"
+" rd.compute_list_set_push_constant(compute_list, push_constant, "
+"push_constant.size())\n"
+" rd.compute_list_dispatch(compute_list, group_size.x, group_size.y, "
+"group_size.z)\n"
+" # No barrier, let them run all together.\n"
+"\n"
+"rd.compute_list_end()\n"
+"[/codeblock]"
+msgstr ""
+"开始由 [code]compute_*[/code] 方法创建的计算命令列表。应该将返回值传递给其他 "
+"[code]compute_list_*[/code] 函数。\n"
+"无法同时创建多个计算列表;你必须先使用 [method compute_list_end] 把之前的计算"
+"列表完成。\n"
+"简易的计算操作类似于下面这样(代码不是完整的示例):\n"
+"[codeblock]\n"
+"var rd = RenderingDevice.new()\n"
+"var compute_list = rd.compute_list_begin()\n"
+"\n"
+"rd.compute_list_bind_compute_pipeline(compute_list, "
+"compute_shader_dilate_pipeline)\n"
+"rd.compute_list_bind_uniform_set(compute_list, compute_base_uniform_set, 0)\n"
+"rd.compute_list_bind_uniform_set(compute_list, dilate_uniform_set, 1)\n"
+"\n"
+"for i in atlas_slices:\n"
+" rd.compute_list_set_push_constant(compute_list, push_constant, "
+"push_constant.size())\n"
+" rd.compute_list_dispatch(compute_list, group_size.x, group_size.y, "
+"group_size.z)\n"
+" # 没有屏障,一起执行。\n"
+"\n"
+"rd.compute_list_end()\n"
+"[/codeblock]"
+
+msgid ""
"Tells the GPU what compute pipeline to use when processing the compute list. "
"If the shader has changed since the last time this function was called, Godot "
"will unbind all descriptor sets and will re-bind them inside [method "
@@ -101808,12 +101702,33 @@ msgstr ""
"分。"
msgid ""
+"Create a command buffer debug label region that can be displayed in third-"
+"party tools such as [url=https://renderdoc.org/]RenderDoc[/url]. All regions "
+"must be ended with a [method draw_command_end_label] call. When viewed from "
+"the linear series of submissions to a single queue, calls to [method "
+"draw_command_begin_label] and [method draw_command_end_label] must be matched "
+"and balanced.\n"
+"The [code]VK_EXT_DEBUG_UTILS_EXTENSION_NAME[/code] Vulkan extension must be "
+"available and enabled for command buffer debug label region to work. See also "
+"[method draw_command_end_label]."
+msgstr ""
+"创建命令缓冲调试标签区域,能够在 [url=https://renderdoc.org/]RenderDoc[/url] "
+"等第三方工具中显示。所有的区域都应该调用 [method draw_command_end_label] 结"
+"束。观察单个队列的线性提交序列时,[method draw_command_begin_label] 必须有与之"
+"对应的 [method draw_command_end_label]。\n"
+"Vulkan 扩展 [code]VK_EXT_DEBUG_UTILS_EXTENSION_NAME[/code] 必须可用并启用,这"
+"样命令缓冲调试标签区域才能正常工作。另见 [method draw_command_end_label]。"
+
+msgid ""
"Ends the command buffer debug label region started by a [method "
"draw_command_begin_label] call."
msgstr ""
"结束命令缓冲调试标签区域,该区域由 [method draw_command_begin_label] 调用开"
"启。"
+msgid "Inserting labels no longer applies due to command reordering."
+msgstr "由于命令重新排序,插入标签不再适用。"
+
msgid ""
"Starts a list of raster drawing commands created with the [code]draw_*[/code] "
"methods. The returned value should be passed to other [code]draw_list_*[/"
@@ -101889,6 +101804,12 @@ msgstr ""
"RenderingDevice 上调用,[method draw_list_begin_for_screen] 会返回 [constant "
"INVALID_ID]。"
+msgid "Split draw lists are used automatically by RenderingDevice."
+msgstr "由 RenderingDevice 自动使用的分割绘制列表。"
+
+msgid "This method does nothing and always returns an empty [PackedInt64Array]."
+msgstr "该方法不执行任何操作,并且始终返回空的 [PackedInt64Array]。"
+
msgid "Binds [param index_array] to the specified [param draw_list]."
msgstr "将 [param index_array] 绑定到指定的 [param draw_list]。"
@@ -101959,6 +101880,9 @@ msgstr ""
"进制数据由着色器决定。另外还必须在 [param size_bytes] 中指定缓冲的字节大小(可"
"以通过对 [param buffer] 调用 [method PackedByteArray.size] 获取)。"
+msgid "Switches to the next draw pass."
+msgstr "切换到下一个绘制阶段。"
+
msgid ""
"Creates a new framebuffer. It can be accessed with the RID that is returned.\n"
"Once finished with your RID, you will want to free the RID using the "
@@ -102197,6 +102121,18 @@ msgstr ""
"理,则返回 [code]true[/code]。"
msgid ""
+"Returns the framebuffer format of the given screen.\n"
+"[b]Note:[/b] Only the main [RenderingDevice] returned by [method "
+"RenderingServer.get_rendering_device] has a format. If called on a local "
+"[RenderingDevice], this method prints an error and returns [constant "
+"INVALID_ID]."
+msgstr ""
+"返回给定屏幕的帧缓冲的格式。\n"
+"[b]注意:[/b]只有 [method RenderingServer.get_rendering_device] 返回的主 "
+"[RenderingDevice] 有格式。对局部 [RenderingDevice] 调用时,这个方法会输出错误"
+"并返回 [constant INVALID_ID]。"
+
+msgid ""
"Returns the window height matching the graphics API context for the given "
"window ID (in pixels). Despite the parameter being named [param screen], this "
"returns the [i]window[/i] size. See also [method screen_get_width].\n"
@@ -102460,7 +102396,7 @@ msgid ""
"used to allow Godot to render onto foreign images."
msgstr ""
"使用给定的 [param type]、[param format]、[param samples]、[param "
-"usage_flags]、[param width]、[param height]、[param depth]、和 [param layers] "
+"usage_flags]、[param width]、[param height]、[param depth] 和 [param layers] "
"返回已有 [param image]([code]VkImage[/code])的 RID。这可被用于允许 Godot 渲"
"染到外部图像上。"
@@ -102515,6 +102451,12 @@ msgid "Returns the data format used to create this texture."
msgstr "返回用于创建该纹理的数据格式。"
msgid ""
+"Use [method get_driver_resource] with [constant DRIVER_RESOURCE_TEXTURE] "
+"instead."
+msgstr ""
+"请改用 [method get_driver_resource] 和 [constant DRIVER_RESOURCE_TEXTURE]。"
+
+msgid ""
"Returns the internal graphics handle for this texture object. For use when "
"communicating with third-party APIs mostly with GDExtension.\n"
"[b]Note:[/b] This function returns a [code]uint64_t[/code] which internally "
@@ -105394,12 +105336,47 @@ msgstr "最大混合运算(保留两者之间的较大值)。"
msgid "Represents the size of the [enum BlendOperation] enum."
msgstr "代表 [enum BlendOperation] 枚举的大小。"
+msgid "Load the previous contents of the framebuffer."
+msgstr "加载帧缓冲的先前内容。"
+
+msgid "Clear the whole framebuffer or its specified region."
+msgstr "清除整个帧缓冲区或其指定区块。"
+
+msgid ""
+"Ignore the previous contents of the framebuffer. This is the fastest option "
+"if you'll overwrite all of the pixels and don't need to read any of them."
+msgstr ""
+"忽略帧缓冲区之前的内容。如果你要覆盖所有像素并且不需要读取任何像素,这是最快的"
+"选项。"
+
msgid "Represents the size of the [enum InitialAction] enum."
msgstr "代表 [enum InitialAction] 枚举的大小。"
+msgid "Use [constant INITIAL_ACTION_CLEAR] instead."
+msgstr "请改用 [constant INITIAL_ACTION_CLEAR]。"
+
+msgid "Use [constant INITIAL_ACTION_LOAD] instead."
+msgstr "请改用 [constant INITIAL_ACTION_LOAD]。"
+
+msgid "Use [constant INITIAL_ACTION_DISCARD] instead."
+msgstr "请改用 [constant INITIAL_ACTION_DISCARD]。"
+
+msgid ""
+"Store the result of the draw list in the framebuffer. This is generally what "
+"you want to do."
+msgstr "将绘制列表的结果存储在帧缓冲区中。这通常是你想要做的。"
+
+msgid ""
+"Discard the contents of the framebuffer. This is the fastest option if you "
+"don't need to use the results of the draw list."
+msgstr "丢弃帧缓冲区的内容。如果你不需要使用绘制列表的结果,则这是最快的选项。"
+
msgid "Represents the size of the [enum FinalAction] enum."
msgstr "代表 [enum FinalAction] 枚举的大小。"
+msgid "Use [constant FINAL_ACTION_STORE] instead."
+msgstr "请改用 [constant FINAL_ACTION_STORE]。"
+
msgid ""
"Vertex shader stage. This can be used to manipulate vertices from a shader "
"(but not create new vertices)."
@@ -105691,7 +105668,7 @@ msgstr ""
"以 [code]canvas_*[/code] 开头。\n"
"[b]无头模式:[/b]使用 [code]--headless[/code] [url=$DOCS_URL/tutorials/editor/"
"command_line_tutorial.html]命令行参数[/url]启动引擎将禁用所有渲染和窗口管理功"
-"能。在这种情况下,[RenderingServer] 中的大多数函数将返回虚值。"
+"能。在这种情况下,[RenderingServer] 中的大多数函数将返回虚设值。"
msgid "Optimization using Servers"
msgstr "使用服务器进行优化"
@@ -105763,39 +105740,6 @@ msgstr ""
"use_jitter] 可用于抖动模糊过程中采集的样本,以隐藏伪影,代价是看起来更模糊。"
msgid ""
-"Sets the exposure values that will be used by the renderers. The "
-"normalization amount is used to bake a given Exposure Value (EV) into "
-"rendering calculations to reduce the dynamic range of the scene.\n"
-"The normalization factor can be calculated from exposure value (EV100) as "
-"follows:\n"
-"[codeblock]\n"
-"func get_exposure_normalization(float ev100):\n"
-" \t\t\t return 1.0 / (pow(2.0, ev100) * 1.2)\n"
-"[/codeblock]\n"
-"The exposure value can be calculated from aperture (in f-stops), shutter "
-"speed (in seconds), and sensitivity (in ISO) as follows:\n"
-"[codeblock]\n"
-"func get_exposure(float aperture, float shutter_speed, float sensitivity):\n"
-" return log2((aperture * aperture) / shutterSpeed * (100.0 / "
-"sensitivity))\n"
-"[/codeblock]"
-msgstr ""
-"设置渲染器所使用的曝光值。归一化量用于将给定的曝光值(Exposure Value,EV)烘焙"
-"进渲染计算,从而降低场景的动态范围。\n"
-"可以用如下方法根据曝光值(EV100)来计算归一化系数:\n"
-"[codeblock]\n"
-"func get_exposure_normalization(float ev100):\n"
-" \t\t\t return 1.0 / (pow(2.0, ev100) * 1.2)\n"
-"[/codeblock]\n"
-"可以使用如下方法根据光圈(单位为 F 值)、快门速度(单位为秒)、感光度(单位为 "
-"ISO)来计算曝光值:\n"
-"[codeblock]\n"
-"func get_exposure(float aperture, float shutter_speed, float sensitivity):\n"
-" return log2((aperture * aperture) / shutterSpeed * (100.0 / "
-"sensitivity))\n"
-"[/codeblock]"
-
-msgid ""
"Creates a 3D camera and adds it to the RenderingServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]camera_*[/"
"code] RenderingServer functions.\n"
@@ -105816,6 +105760,11 @@ msgstr ""
"相机。"
msgid ""
+"Sets the compositor used by this camera. Equivalent to [member Camera3D."
+"compositor]."
+msgstr "设置该相机使用的合成器。相当于 [member Camera3D.compositor]。"
+
+msgid ""
"Sets the cull mask associated with this camera. The cull mask describes which "
"3D layers are rendered by this camera. Equivalent to [member Camera3D."
"cull_mask]."
@@ -105903,7 +105852,7 @@ msgid ""
"[param modulate] color, and [param texture]. This is used internally by "
"[MeshInstance2D]."
msgstr ""
-"使用给定的 [param transform]、[param modulate] 颜色、和 [param texture] 绘制使"
+"使用给定的 [param transform]、[param modulate] 颜色和 [param texture] 绘制使"
"用 [method mesh_create] 创建的网格。这由 [MeshInstance2D] 内部使用。"
msgid "See also [method CanvasItem.draw_msdf_texture_rect_region]."
@@ -106339,6 +106288,15 @@ msgid ""
"[Vector2]."
msgstr "画布项目的副本将以镜像的局部偏移量[Vector2]被绘制。"
+msgid ""
+"A copy of the canvas item will be drawn with a local offset of the [param "
+"repeat_size] by the number of times of the [param repeat_times]. As the "
+"[param repeat_times] increases, the copies will spread away from the origin "
+"texture."
+msgstr ""
+"将使用 [param repeat_size] 的局部偏移量和 [param repeat_times] 的次数来绘制画"
+"布项目的副本。随着 [param repeat_times] 的增加,副本将从原始纹理蔓延开来。"
+
msgid "Modulates all colors in the given canvas."
msgstr "调制给定画布中的所有颜色。"
@@ -106401,6 +106359,52 @@ msgstr ""
"canvas_texture] 指定。"
msgid ""
+"Creates a new compositor and adds it to the RenderingServer. It can be "
+"accessed with the RID that is returned.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"RenderingServer's [method free_rid] method."
+msgstr ""
+"创建一个新的合成器并将其添加到 RenderingServer。可以使用返回的 RID 来访问"
+"它。\n"
+"RID 使用完后,你将需要使用 RenderingServer 的 [method free_rid] 方法释放该 "
+"RID。"
+
+msgid ""
+"Creates a new rendering effect and adds it to the RenderingServer. It can be "
+"accessed with the RID that is returned.\n"
+"Once finished with your RID, you will want to free the RID using the "
+"RenderingServer's [method free_rid] method."
+msgstr ""
+"创建新的渲染效果并将其添加到 RenderingServer。可以使用返回的 RID 来访问它。\n"
+"RID 使用完后,你将需要使用 RenderingServer 的 [method free_rid] 方法释放该 "
+"RID。"
+
+msgid ""
+"Sets the callback type ([param callback_type]) and callback method([param "
+"callback]) for this rendering effect."
+msgstr ""
+"设置该渲染效果的回调类型([param callback_type])和回调方法([param "
+"callback])。"
+
+msgid "Enables/disables this rendering effect."
+msgstr "启用/禁用该渲染效果。"
+
+msgid ""
+"Sets the flag ([param flag]) for this rendering effect to [code]true[/code] "
+"or [code]false[/code] ([param set])."
+msgstr ""
+"将该渲染效果的标志([param flag])设置为 [code]true[/code] 或 [code]false[/"
+"code]([param set])。"
+
+msgid ""
+"Sets the compositor effects for the specified compositor RID. [param effects] "
+"should be an array containing RIDs created with [method "
+"compositor_effect_create]."
+msgstr ""
+"设置指定合成器 RID 的合成器效果。[param effects] 应该是一个包含使用 [method "
+"compositor_effect_create] 创建的 RID 的数组。"
+
+msgid ""
"Creates a RenderingDevice that can be used to do draw and compute operations "
"on a separate thread. Cannot draw to the screen nor share data with the "
"global RenderingDevice.\n"
@@ -107064,6 +107068,12 @@ msgstr ""
"如果对 RenderingServer 的数据进行了更改,则返回 [code]true[/code]。如果发生这"
"种情况,通常会调用 [method force_draw]。"
+msgid "This method has not been used since Godot 3.0."
+msgstr "从 Godot 3.0 开始就没有使用过这个方法了。"
+
+msgid "This method does nothing and always returns [code]false[/code]."
+msgstr "该方法不执行任何操作,并且始终返回 [code]false[/code]。"
+
msgid ""
"Returns [code]true[/code] if the OS supports a certain [param feature]. "
"Features might be [code]s3tc[/code], [code]etc[/code], and [code]etc2[/code]."
@@ -107298,11 +107308,6 @@ msgstr ""
"set_surface_override_material]。"
msgid ""
-"Sets the world space transform of the instance. Equivalent to [member Node3D."
-"transform]."
-msgstr "设置该实例的世界空间变换。相当于 [member Node3D.transform]。"
-
-msgid ""
"Sets the visibility parent for the given instance. Equivalent to [member "
"Node3D.visibility_parent]."
msgstr "设置给定实例的可见性父级。相当于 [member Node3D.visibility_parent]。"
@@ -107650,6 +107655,22 @@ msgid ""
"instances within the multimesh."
msgstr "计算并返回轴对齐的边界框,该边界框将所有的实例都包含在 multimesh 中。"
+msgid ""
+"Returns the MultiMesh data (such as instance transforms, colors, etc.). See "
+"[method multimesh_set_buffer] for details on the returned data.\n"
+"[b]Note:[/b] If the buffer is in the engine's internal cache, it will have to "
+"be fetched from GPU memory and possibly decompressed. This means [method "
+"multimesh_get_buffer] is potentially a slow operation and should be avoided "
+"whenever possible."
+msgstr ""
+"返回 MultiMesh 数据(例如实例的变换、颜色等)。有关返回数据的详细信息,请参阅 "
+"[method multimesh_set_buffer]。\n"
+"[b]注意:[/b]如果缓冲位于引擎的内部缓存中,则需要从 GPU 显存获取,并且有可能需"
+"要解压。也就是说 [method multimesh_get_buffer] 可能会比较慢,应该尽可能避免。"
+
+msgid "Returns the custom AABB defined for this MultiMesh resource."
+msgstr "返回为该 MultiMesh 资源定义的自定义 AABB。"
+
msgid "Returns the number of instances allocated for this multimesh."
msgstr "返回分配给这个 multimesh 的实例的数量。"
@@ -107699,56 +107720,8 @@ msgstr ""
"为此实例设置 [Transform2D]。用于在 2D 中使用 multimesh 时。相当于 [method "
"MultiMesh.set_instance_transform_2d]。"
-msgid ""
-"Set the entire data to use for drawing the [param multimesh] at once to "
-"[param buffer] (such as instance transforms and colors). [param buffer]'s "
-"size must match the number of instances multiplied by the per-instance data "
-"size (which depends on the enabled MultiMesh fields). Otherwise, an error "
-"message is printed and nothing is rendered. See also [method "
-"multimesh_get_buffer].\n"
-"The per-instance data size and expected data order is:\n"
-"[codeblock]\n"
-"2D:\n"
-" - Position: 8 floats (8 floats for Transform2D)\n"
-" - Position + Vertex color: 12 floats (8 floats for Transform2D, 4 floats "
-"for Color)\n"
-" - Position + Custom data: 12 floats (8 floats for Transform2D, 4 floats of "
-"custom data)\n"
-" - Position + Vertex color + Custom data: 16 floats (8 floats for "
-"Transform2D, 4 floats for Color, 4 floats of custom data)\n"
-"3D:\n"
-" - Position: 12 floats (12 floats for Transform3D)\n"
-" - Position + Vertex color: 16 floats (12 floats for Transform3D, 4 floats "
-"for Color)\n"
-" - Position + Custom data: 16 floats (12 floats for Transform3D, 4 floats of "
-"custom data)\n"
-" - Position + Vertex color + Custom data: 20 floats (12 floats for "
-"Transform3D, 4 floats for Color, 4 floats of custom data)\n"
-"[/codeblock]"
-msgstr ""
-"将用于绘制 [param multimesh] 的全部数据立即写入 [param buffer](例如实例的变换"
-"和颜色)。[param buffer] 的大小必须与实例数和单实例数据大小的乘积匹配(后者取"
-"决于启用的 MultiMesh 字段)。否则,会输出错误信息,不渲染任何东西。另见 "
-"[method multimesh_get_buffer]。\n"
-"单实例数据大小与预期的数据顺序如下:\n"
-"[codeblock]\n"
-"2D:\n"
-" - 位置:8 个 float(Transform2D 占 8 个 float)\n"
-" - 位置 + 顶点颜色:12 个 float(Transform2D 占 8 个 float、颜色占 4 个 "
-"float)\n"
-" - 位置 + 自定义数据:12 个 float(Transform2D 占 8 个 float、自定义数据占 4 "
-"个 float)\n"
-" - 位置 + 顶点颜色 + 自定义数据:16 个 float(Transform2D 占 8 个 float、颜色"
-"占 4 个 float、自定义数据占 4 个 float)\n"
-"3D:\n"
-" - 位置:12 个 float(Transform3D 占 12 个 float)\n"
-" - 位置 + 顶点颜色:16 个 float(Transform3D 占 12 个 float、颜色占 4 个 "
-"float)\n"
-" - 位置 + 自定义数据:16 个 float(Transform3D 占 12 个 float、自定义数据占 "
-"4 个 float)\n"
-" - 位置 + 顶点颜色 + 自定义数据:20 个 float(Transform3D 占 12 个 float、颜"
-"色占 4 个 float、自定义数据占 4 个 float)\n"
-"[/codeblock]"
+msgid "Sets the custom AABB for this MultiMesh resource."
+msgstr "为该 MultiMesh 资源设置自定义 AABB。"
msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
@@ -108009,7 +107982,7 @@ msgid ""
"GPUParticles3D.draw_pass_3], and [member GPUParticles3D.draw_pass_4]."
msgstr ""
"设置用于指定绘制阶段的网格。相当于 [member GPUParticles3D.draw_pass_1]、"
-"[member GPUParticles3D.draw_pass_2]、[member GPUParticles3D.draw_pass_3]、和 "
+"[member GPUParticles3D.draw_pass_2]、[member GPUParticles3D.draw_pass_3] 和 "
"[member GPUParticles3D.draw_pass_4]。"
msgid ""
@@ -108181,6 +108154,14 @@ msgstr ""
"ReflectionProbe.interior]。"
msgid ""
+"Sets the render cull mask for this reflection probe. Only instances with a "
+"matching layer will be reflected by this probe. Equivalent to [member "
+"ReflectionProbe.cull_mask]."
+msgstr ""
+"设置该反射探针的渲染剔除掩码。只有具有匹配层的实例才会被该探针反射。相当于 "
+"[member ReflectionProbe.cull_mask]。"
+
+msgid ""
"If [code]true[/code], uses box projection. This can make reflections look "
"more correct in certain situations. Equivalent to [member ReflectionProbe."
"box_projection]."
@@ -108228,6 +108209,14 @@ msgstr ""
"ReflectionProbe.origin_offset]。"
msgid ""
+"Sets the render reflection mask for this reflection probe. Only instances "
+"with a matching layer will have reflections applied from this probe. "
+"Equivalent to [member ReflectionProbe.reflection_mask]."
+msgstr ""
+"设置该反射探针的渲染反射掩码。只有具有匹配层的实例才会被该探针应用反射。相当"
+"于 [member ReflectionProbe.reflection_mask]。"
+
+msgid ""
"Sets the resolution to use when rendering the specified reflection probe. The "
"[param resolution] is specified for each cubemap face: for instance, "
"specifying [code]512[/code] will allocate 6 faces of 512×512 each (plus "
@@ -108272,6 +108261,12 @@ msgstr ""
"设置该场景会使用的相机属性([param effects])。另见 [CameraAttributes]。"
msgid ""
+"Sets the compositor ([param compositor]) that will be used with this "
+"scenario. See also [Compositor]."
+msgstr ""
+"设置将被用于该场景的合成器([param compositor])。另请参阅 [Compositor]。"
+
+msgid ""
"Sets the environment that will be used with this scenario. See also "
"[Environment]."
msgstr "设置该场景会使用的环境。另见 [Environment]。"
@@ -108719,11 +108714,11 @@ msgstr ""
msgid ""
"Returns the CPU time taken to render the last frame in milliseconds. This "
-"[i]only[/i] includes time spent in rendering-related operations; "
-"scripts' [code]_process[/code] functions and other engine subsystems are not "
-"included in this readout. To get a complete readout of CPU time spent to "
-"render the scene, sum the render times of all viewports that are drawn every "
-"frame plus [method get_frame_setup_time_cpu]. Unlike [method Engine."
+"[i]only[/i] includes time spent in rendering-related operations; scripts' "
+"[code]_process[/code] functions and other engine subsystems are not included "
+"in this readout. To get a complete readout of CPU time spent to render the "
+"scene, sum the render times of all viewports that are drawn every frame plus "
+"[method get_frame_setup_time_cpu]. Unlike [method Engine."
"get_frames_per_second], this method will accurately reflect CPU utilization "
"even if framerate is capped via V-Sync or [member Engine.max_fps]. See also "
"[method viewport_get_measured_render_time_gpu].\n"
@@ -108825,6 +108820,9 @@ msgstr "返回该视口的渲染目标。"
msgid "Returns the viewport's last rendered frame."
msgstr "返回视口的最后渲染帧。"
+msgid "Detaches a viewport from a canvas."
+msgstr "从画布分离视口。"
+
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
"如果为 [code]true[/code],则将视口设置为活动状态,否则将其设置为非活动状态。"
@@ -109121,35 +109119,6 @@ msgstr ""
"ProjectSettings.rendering/anti_aliasing/quality/use_debanding]。"
msgid ""
-"If [code]true[/code], 2D rendering will use a high dynamic range (HDR) format "
-"framebuffer matching the bit depth of the 3D framebuffer. When using the "
-"Forward+ renderer this will be a [code]RGBA16[/code] framebuffer, while when "
-"using the Mobile renderer it will be a [code]RGB10_A2[/code] framebuffer. "
-"Additionally, 2D rendering will take place in linear color space and will be "
-"converted to sRGB space immediately before blitting to the screen (if the "
-"Viewport is attached to the screen). Practically speaking, this means that "
-"the end result of the Viewport will not be clamped into the [code]0-1[/code] "
-"range and can be used in 3D rendering without color space adjustments. This "
-"allows 2D rendering to take advantage of effects requiring high dynamic range "
-"(e.g. 2D glow) as well as substantially improves the appearance of effects "
-"requiring highly detailed gradients. This setting has the same effect as "
-"[member Viewport.use_hdr_2d].\n"
-"[b]Note:[/b] This setting will have no effect when using the GL Compatibility "
-"renderer as the GL Compatibility renderer always renders in low dynamic range "
-"for performance reasons."
-msgstr ""
-"如果为 [code]true[/code],2D 渲染将使用与 3D 帧缓冲区的位深度匹配的高动态范围"
-"(HDR)格式帧缓冲区。当使用 Forward+ 渲染器时,这将是一个 [code]RGBA16[/code] "
-"帧缓冲区,而当使用 Mobile 渲染器时,它将是一个 [code]RGB10_A2[/code] 帧缓冲"
-"区。此外,2D 渲染将在线性色彩空间中进行,并在位块传输到屏幕之前(如果视口被连"
-"接到屏幕)立即转换为 sRGB 空间。实际上,这意味着视口的最终结果不会被钳制在 "
-"[code]0-1[/code] 范围内,并且可以在不进行色彩空间调整的情况下被用于 3D 渲染。"
-"这使得 2D 渲染能够利用需要高动态范围的效果(例如 2D 辉光),并显著改善需要高度"
-"详细渐变的效果的外观。该设置与 [member Viewport.use_hdr_2d] 效果相同。\n"
-"[b]注意:[/b]使用 GL 兼容渲染器时,该设置无效,因为出于性能原因,GL 兼容渲染器"
-"始终在低动态范围内渲染。"
-
-msgid ""
"If [code]true[/code], enables occlusion culling on the specified viewport. "
"Equivalent to [member ProjectSettings.rendering/occlusion_culling/"
"use_occlusion_culling]."
@@ -110467,9 +110436,6 @@ msgstr ""
"可变速率着色使用纹理。请注意,对于立体视觉,请使用为每个视图提供纹理的纹理图"
"集。"
-msgid "Variable rate shading texture is supplied by the primary [XRInterface]."
-msgstr "可变速率着色纹理由主 [XRInterface] 提供。"
-
msgid "Represents the size of the [enum ViewportVRSMode] enum."
msgstr "代表 [enum ViewportVRSMode] 枚举的大小。"
@@ -111517,9 +111483,65 @@ msgstr "返回关联视口的视图数。"
msgid "Returns [code]true[/code] if a cached texture exists for this name."
msgstr "如果存在使用该名称的缓冲纹理,则返回 [code]true[/code]。"
+msgid ""
+"Abstract render data object, holds scene data related to rendering a single "
+"frame of a viewport."
+msgstr "抽象渲染数据对象,保存与渲染视口的单个帧相关的场景数据。"
+
+msgid ""
+"Abstract scene data object, exists for the duration of rendering a single "
+"viewport.\n"
+"[b]Note:[/b] This is an internal rendering server object, do not instantiate "
+"this from script."
+msgstr ""
+"抽象场景数据对象,在渲染单个视口期间存在。\n"
+"[b]注意:[/b]这是一个内部渲染服务器对象,不要从脚本中实例化它。"
+
+msgid ""
+"Returns the camera projection used to render this frame.\n"
+"[b]Note:[/b] If more than one view is rendered, this will return a combined "
+"projection."
+msgstr ""
+"返回用于渲染该帧的相机投影。\n"
+"[b]注意:[/b]如果渲染多个视图,则这将返回一个组合的投影。"
+
+msgid ""
+"Returns the camera transform used to render this frame.\n"
+"[b]Note:[/b] If more than one view is rendered, this will return a centered "
+"transform."
+msgstr ""
+"返回用于渲染该帧的相机变换。\n"
+"[b]注意:[/b]如果渲染多个视图,则这将返回一个居中的变换。"
+
+msgid ""
+"Return the [RID] of the uniform buffer containing the scene data as a UBO."
+msgstr "返回包含场景数据作为 UBO 的 uniform 缓冲区的 [RID]。"
+
msgid "Returns the number of views being rendered."
msgstr "返回渲染的视图数。"
+msgid ""
+"Returns the eye offset per view used to render this frame. This is the offset "
+"between our camera transform and the eye transform."
+msgstr ""
+"返回用于渲染该帧的每个视图的眼睛偏移量。这是我们的相机变换和眼睛变换之间的偏"
+"移。"
+
+msgid ""
+"Returns the view projection per view used to render this frame.\n"
+"[b]Note:[/b] If a single view is rendered, this returns the camera "
+"projection. If more than one view is rendered, this will return a projection "
+"for the given view including the eye offset."
+msgstr ""
+"返回用于渲染该帧的每个视图的视图投影。\n"
+"[b]注意:[/b]如果渲染单个视图,则返回相机投影。如果渲染多个视图,则这将返回给"
+"定视图的投影,包括眼睛偏移。"
+
+msgid ""
+"This class allows for a RenderSceneData implementation to be made in "
+"GDExtension."
+msgstr "该类允许在 GDExtension 中实现 RenderSceneData。"
+
msgid "Implement this in GDExtension to return the camera [Projection]."
msgstr "在 GDExtension 中实现时请返回相机的 [Projection]。"
@@ -111546,10 +111568,56 @@ msgid ""
"[param view]."
msgstr "在 GDExtension 中实现时请返回 [param view] 视图的视图 [Projection]。"
+msgid ""
+"Render scene data implementation for the RenderingDevice based renderers."
+msgstr "基于 RenderingDevice 的渲染器的渲染场景数据实现。"
+
+msgid ""
+"Object holds scene data related to rendering a single frame of a viewport.\n"
+"[b]Note:[/b] This is an internal rendering server object, do not instantiate "
+"this from script."
+msgstr ""
+"对象保存与渲染视口的单个帧相关的场景数据。\n"
+"[b]注意:[/b]这是一个内部渲染服务器对象,不要从脚本中实例化它。"
+
msgid "Base class for serializable objects."
msgstr "可序列化对象的基类。"
msgid ""
+"Resource is the base class for all Godot-specific resource types, serving "
+"primarily as data containers. Since they inherit from [RefCounted], resources "
+"are reference-counted and freed when no longer in use. They can also be "
+"nested within other resources, and saved on disk. [PackedScene], one of the "
+"most common [Object]s in a Godot project, is also a resource, uniquely "
+"capable of storing and instantiating the [Node]s it contains as many times as "
+"desired.\n"
+"In GDScript, resources can loaded from disk by their [member resource_path] "
+"using [method @GDScript.load] or [method @GDScript.preload].\n"
+"The engine keeps a global cache of all loaded resources, referenced by paths "
+"(see [method ResourceLoader.has_cached]). A resource will be cached when "
+"loaded for the first time and removed from cache once all references are "
+"released. When a resource is cached, subsequent loads using its path will "
+"return the cached reference.\n"
+"[b]Note:[/b] In C#, resources will not be freed instantly after they are no "
+"longer in use. Instead, garbage collection will run periodically and will "
+"free resources that are no longer in use. This means that unused resources "
+"will remain in memory for a while before being removed."
+msgstr ""
+"资源是所有 Godot 特定资源类型的基类,主要作为数据容器。因为资源继承自 "
+"[RefCounted],所以进行了引用计数,不再使用时会被释放。资源也可以嵌套到其他资源"
+"里、保存到磁盘上。[PackedScene] 也是一种资源,它是 Godot 项目中最常用的 "
+"[Object] 之一,独特的能力是可以将若干 [Node] 保存起来、随意进行实例化。\n"
+"在 GDScript 中,可以根据 [member resource_path] 从磁盘上加载资源,使用 "
+"[method @GDScript.load] 或 [method @GDScript.preload] 即可。\n"
+"引擎会维护所有已加载资源的全局缓存,可以根据路径引用资源(见 [method "
+"ResourceLoader.has_cached])。资源会在首次加载时缓存,所有引用释放后就会从缓存"
+"中移除。如果缓存中存在某个资源,那么后续使用其路径进行加载的时候返回的就是缓存"
+"中的引用。\n"
+"[b]注意:[/b]在 C# 中,资源不再被使用后并不会立即被释放。相反,垃圾回收将定期"
+"运行,并释放不再使用的资源。这意味着未使用的资源在被删除之前会在内存中保留一段"
+"时间。"
+
+msgid ""
"Override this method to return a custom [RID] when [method get_rid] is called."
msgstr "可以覆盖此方法,从而在调用 [method get_rid] 时返回自定义 [RID]。"
@@ -111855,6 +111923,48 @@ msgstr ""
"[code]{ String => String }[/code],将旧依赖路径映射到新路径。\n"
"成功时返回 [constant OK],失败时返回 [enum Error] 常量。"
+msgid ""
+"Neither the main resource (the one requested to be loaded) nor any of its "
+"subresources are retrieved from cache nor stored into it. Dependencies "
+"(external resources) are loaded with [constant CACHE_MODE_REUSE]."
+msgstr ""
+"主资源(请求加载的资源)或其任何子资源都不会从缓存中检索或存储到其中。依赖项"
+"(外部资源)使用 [constant CACHE_MODE_REUSE] 加载。"
+
+msgid ""
+"The main resource (the one requested to be loaded), its subresources, and its "
+"dependencies (external resources) are retrieved from cache if present, "
+"instead of loaded. Those not cached are loaded and then stored into the "
+"cache. The same rules are propagated recursively down the tree of "
+"dependencies (external resources)."
+msgstr ""
+"如果主资源(请求加载的资源)、其子资源、及其依赖项(外部资源)存在,则将从缓存"
+"中检索,而不是加载。那些未缓存的将被加载,然后存储到缓存中。相同的规则将沿着依"
+"赖关系树(外部资源)递归传播。"
+
+msgid ""
+"Like [constant CACHE_MODE_REUSE], but the cache is checked for the main "
+"resource (the one requested to be loaded) as well as for each of its "
+"subresources. Those already in the cache, as long as the loaded and cached "
+"types match, have their data refreshed from storage into the already existing "
+"instances. Otherwise, they are recreated as completely new objects."
+msgstr ""
+"与 [constant CACHE_MODE_REUSE] 类似,但会检查主资源(请求加载的资源)及其每个"
+"子资源的缓存。那些已经在缓存中的实例,只要加载的类型和缓存的类型匹配,则它们的"
+"数据就会从存储中刷新到已经存在的实例中。否则,它们将被重新创建为全新的对象。"
+
+msgid ""
+"Like [constant CACHE_MODE_IGNORE], but propagated recursively down the tree "
+"of dependencies (external resources)."
+msgstr ""
+"与 [constant CACHE_MODE_IGNORE] 类似,但沿依赖关系树(外部资源)递归传播。"
+
+msgid ""
+"Like [constant CACHE_MODE_REPLACE], but propagated recursively down the tree "
+"of dependencies (external resources)."
+msgstr ""
+"与 [constant CACHE_MODE_REPLACE] 类似,但沿依赖关系树(外部资源)递归传播。"
+
msgid "Saves a specific resource type to a file."
msgstr "将特定资源类型保存到文件。"
@@ -111958,8 +112068,8 @@ msgid ""
"\"disabled\" (bit is [code]false[/code]).\n"
"[b]Alpha:[/b] Pixels whose alpha value is greater than the [member threshold] "
"will be considered as \"enabled\" (bit is [code]true[/code]). If the pixel is "
-"lower than or equal to the threshold, it will be considered as "
-"\"disabled\" (bit is [code]false[/code])."
+"lower than or equal to the threshold, it will be considered as \"disabled\" "
+"(bit is [code]false[/code])."
msgstr ""
"用于生成位图的数据源。\n"
"[b]黑白:[/b]HSV 值大于 [member threshold] 的像素将被视为“启用”(位为 "
@@ -112010,32 +112120,6 @@ msgstr "字体缩放模式。"
msgid "Imports comma-separated values"
msgstr "导入 CSV"
-msgid ""
-"Comma-separated values are a plain text table storage format. The format's "
-"simplicity makes it easy to edit in any text editor or spreadsheet software. "
-"This makes it a common choice for game localization.\n"
-"[b]Example CSV file:[/b]\n"
-"[codeblock]\n"
-"keys,en,es,ja\n"
-"GREET,\"Hello, friend!\",\"Hola, amigo!\",こんにちは\n"
-"ASK,How are you?,Cómo está?,元気ですか\n"
-"BYE,Goodbye,Adiós,さようなら\n"
-"QUOTE,\"\"\"Hello\"\" said the man.\",\"\"\"Hola\"\" dijo el hombre.\",「こん"
-"にちは」男は言いました\n"
-"[/codeblock]"
-msgstr ""
-"逗号分隔值是纯文本表格存储格式。该格式的简单性使其可以轻松地在任何文本编辑器或"
-"电子表格软件中进行编辑。这使其成为游戏本地化的常见选择。\n"
-"[b]示例 CSV 文件:[/b]\n"
-"[codeblock]\n"
-"keys,en,es,ja\n"
-"GREET,\"Hello, friend!\",\"Hola, amigo!\",こんにちは\n"
-"ASK,How are you?,Cómo está?,元気ですか\n"
-"BYE,Goodbye,Adiós,さようなら\n"
-"QUOTE,\"\"\"Hello\"\" said the man.\",\"\"\"Hola\"\" dijo el hombre.\",「こん"
-"にちは」男は言いました\n"
-"[/codeblock]"
-
msgid "Importing translations"
msgstr "导入翻译"
@@ -112378,6 +112462,21 @@ msgid ""
msgstr ""
"整个图像两侧的裁减边距。这可被用于裁减该图像包含属性信息或类似信息的部分。"
+msgid ""
+"Kerning pairs for the font. Kerning pair adjust the spacing between two "
+"characters.\n"
+"Each string consist of three space separated values: \"from\" string, \"to\" "
+"string and integer offset. Each combination form the two string for a kerning "
+"pair, e.g, [code]ab cd -3[/code] will create kerning pairs [code]ac[/code], "
+"[code]ad[/code], [code]bc[/code], and [code]bd[/code] with offset [code]-3[/"
+"code]."
+msgstr ""
+"字体中的字偶列表。字偶的作用是调整特定的两个字符的间距。\n"
+"每个字符串都是由空格分隔的三个值:“from”字符串、“to”字符串、整数偏移量。两个字"
+"符串中的字符两两组合成字偶,例如 [code]ab cd -3[/code] 会创建字偶 [code]ac[/"
+"code]、[code]ad[/code]、[code]bc[/code]、[code]bd[/code],这些字偶的偏移量都"
+"是 [code]-3[/code]。"
+
msgid "Number of rows in the font image. See also [member columns]."
msgstr "字体图像中的行数。另见 [member columns]。"
@@ -112542,27 +112641,6 @@ msgstr ""
"控制立方体贴图纹理的内部布局方式。使用高分辨率立方体贴图时,与 [b]1×6[/b] 和 "
"[b]6×1[/b] 相比,[b]2×3[/b] and [b]3×2[/b] 不太容易超出硬件纹理大小限制。"
-msgid "Imports a MP3 audio file for playback."
-msgstr "导入 MP3 音频文件进行播放。"
-
-msgid ""
-"MP3 is a lossy audio format, with worse audio quality compared to "
-"[ResourceImporterOggVorbis] at a given bitrate.\n"
-"In most cases, it's recommended to use Ogg Vorbis over MP3. However, if "
-"you're using a MP3 sound source with no higher quality source available, then "
-"it's recommended to use the MP3 file directly to avoid double lossy "
-"compression.\n"
-"MP3 requires more CPU to decode than [ResourceImporterWAV]. If you need to "
-"play a lot of simultaneous sounds, it's recommended to use WAV for those "
-"sounds instead, especially if targeting low-end devices."
-msgstr ""
-"MP3 是一种有损音频格式,在给定比特率下,与 [ResourceImporterOggVorbis] 相比,"
-"音频质量较差。\n"
-"在大多数情况下,建议使用 Ogg Vorbis 而不是 MP3。但是,如果你使用的 MP3 音源没"
-"有更高质量的可用源,则建议直接使用 MP3 文件以避免两次有损压缩。\n"
-"MP3 比 [ResourceImporterWAV] 需要更多的 CPU 来解码。如果你需要同时播放很多声"
-"音,建议对这些声音使用 WAV,特别是针对低端设备。"
-
msgid "Importing audio samples"
msgstr "导入音频样本"
@@ -112701,24 +112779,6 @@ msgid "Imports an Ogg Vorbis audio file for playback."
msgstr "导入 Ogg Vorbis 音频文件进行播放。"
msgid ""
-"Ogg Vorbis is a lossy audio format, with better audio quality compared to "
-"[ResourceImporterMP3] at a given bitrate.\n"
-"In most cases, it's recommended to use Ogg Vorbis over MP3. However, if "
-"you're using a MP3 sound source with no higher quality source available, then "
-"it's recommended to use the MP3 file directly to avoid double lossy "
-"compression.\n"
-"Ogg Vorbis requires more CPU to decode than [ResourceImporterWAV]. If you "
-"need to play a lot of simultaneous sounds, it's recommended to use WAV for "
-"those sounds instead, especially if targeting low-end devices."
-msgstr ""
-"Ogg Vorbis 是一种有损音频格式,在给定比特率下,与 [ResourceImporterMP3] 相比具"
-"有更好的音频质量。\n"
-"在大多数情况下,建议使用 Ogg Vorbis 而不是 MP3。但是,如果你使用的 MP3 音源没"
-"有更高质量的可用音源,则建议直接使用 MP3 文件以避免两次有损压缩。\n"
-"Ogg Vorbis 比 [ResourceImporterWAV] 需要更多的 CPU 来解码。如果你需要同时播放"
-"很多声音,建议对这些声音使用 WAV,特别是针对低端设备。"
-
-msgid ""
"This method loads audio data from a PackedByteArray buffer into an "
"AudioStreamOggVorbis object."
msgstr ""
@@ -112879,6 +112939,19 @@ msgstr ""
"果为 [code]false[/code],[member nodes/root_scale] 将乘以该根节点的缩放。"
msgid ""
+"Treat all nodes in the imported scene as if they are bones within a single "
+"[Skeleton3D]. Can be used to guarantee that imported animations target "
+"skeleton bones rather than nodes. May also be used to assign the "
+"[code]\"Root\"[/code] bone in a [BoneMap]. See [url=$DOCS_URL/tutorials/"
+"assets_pipeline/retargeting_3d_skeletons.html]Retargeting 3D Skeletons[/url] "
+"for more information."
+msgstr ""
+"将导入场景中的所有节点视为单个 [Skeleton3D] 中的骨骼。可用于保证导入的动画以骨"
+"架骨骼而不是节点为目标。也可用于在 [BoneMap] 中分配 [code]\"Root\"[/code] 骨"
+"骼。有关详细信息,请参阅 [url=$DOCS_URL/tutorials/assets_pipeline/"
+"retargeting_3d_skeletons.html]重定向 3D 骨架[/url]。"
+
+msgid ""
"Override for the root node name. If empty, the root node will use what the "
"scene specifies, or the file name if the scene does not specify a root name."
msgstr ""
@@ -112932,8 +113005,8 @@ msgstr ""
"- 网格是显示网格所需的所有原始顶点数据。就网格而言,它知道如何对顶点进行权重绘"
"制,并使用通常从 3D 建模软件导入的某些内部编号。\n"
"- 蒙皮包含将该网格绑定到该 Skeleton3D 上所必需的信息。对于 3D 建模软件选择的每"
-"一个内部骨骼 ID,它都包含两件事。首先是一个名为绑定姿势矩阵、逆绑定矩阵、或简"
-"称为 IBM 的矩阵。其次,该 [Skin] 包含每个骨骼的名称(如果 [member skins/"
+"一个内部骨骼 ID,它都包含两件事。首先是一个名为绑定姿势矩阵、逆绑定矩阵或简称"
+"为 IBM 的矩阵。其次,该 [Skin] 包含每个骨骼的名称(如果 [member skins/"
"use_named_skins] 为 [code]true[/code]),或者骨骼在 [Skeleton3D] 列表中的索引"
"(如果 [member skins/use_named_skins] 为 [code]false[/code])。\n"
"总之,这些信息足以告诉 Godot 如何使用 [Skeleton3D] 节点中的骨骼姿势来渲染每个 "
@@ -113067,6 +113140,19 @@ msgstr ""
"但内存占用会增加。"
msgid ""
+"If [code]true[/code], puts pixels of the same surrounding color in transition "
+"from transparent to opaque areas. For textures displayed with bilinear "
+"filtering, this helps to reduce the outline effect when exporting images from "
+"an image editor.\n"
+"It's recommended to leave this enabled (as it is by default), unless this "
+"causes issues for a particular image."
+msgstr ""
+"如果为 [code]true[/code],则将相同周围颜色的像素置于从透明区域到不透明区域的过"
+"渡中。对于使用双线性过滤显示的纹理,这有助于减轻从图像编辑器导出图像时的轮廓效"
+"果。\n"
+"建议启用该功能(默认情况下),除非这会导致特定图像出现问题。"
+
+msgid ""
"Some HDR images you can find online may be broken and contain sRGB color data "
"(instead of linear color data). It is advised not to use those files. If you "
"absolutely have to, enabling [member process/hdr_as_srgb] will make them look "
@@ -113254,18 +113340,6 @@ msgstr ""
"销也最低。因此,即便在低端设备上,也能够同时播放大量的 WAV 声音。"
msgid ""
-"The compression mode to use on import.\n"
-"[b]Disabled:[/b] Imports audio data without any compression. This results in "
-"the highest possible quality.\n"
-"[b]RAM (Ima-ADPCM):[/b] Performs fast lossy compression on import. Low CPU "
-"cost, but quality is noticeably decreased compared to Ogg Vorbis or even MP3."
-msgstr ""
-"导入时使用的压缩模式。\n"
-"[b]Disabled:[/b]导入音频数据,不进行压缩。得到的质量最高。\n"
-"[b]RAM (Ima-ADPCM):[/b]导入时进行快速有损压缩。CPU 开销较低,但质量比 Ogg "
-"Vorbis 甚至是 MP3 都显著更低。"
-
-msgid ""
"The begin loop point to use when [member edit/loop_mode] is [b]Forward[/b], "
"[b]Ping-Pong[/b] or [b]Backward[/b]. This is set in seconds after the "
"beginning of the audio file."
@@ -113458,47 +113532,6 @@ msgstr ""
"take_over_path] 来覆盖缓存资源。"
msgid ""
-"Loads a resource at the given [param path], caching the result for further "
-"access.\n"
-"The registered [ResourceFormatLoader]s are queried sequentially to find the "
-"first one which can handle the file's extension, and then attempt loading. If "
-"loading fails, the remaining ResourceFormatLoaders are also attempted.\n"
-"An optional [param type_hint] can be used to further specify the [Resource] "
-"type that should be handled by the [ResourceFormatLoader]. Anything that "
-"inherits from [Resource] can be used as a type hint, for example [Image].\n"
-"The [param cache_mode] property defines whether and how the cache should be "
-"used or updated when loading the resource. See [enum CacheMode] for details.\n"
-"Returns an empty resource if no [ResourceFormatLoader] could handle the "
-"file.\n"
-"GDScript has a simplified [method @GDScript.load] built-in method which can "
-"be used in most situations, leaving the use of [ResourceLoader] for more "
-"advanced scenarios.\n"
-"[b]Note:[/b] If [member ProjectSettings.editor/export/"
-"convert_text_resources_to_binary] is [code]true[/code], [method @GDScript."
-"load] will not be able to read converted files in an exported project. If you "
-"rely on run-time loading of files present within the PCK, set [member "
-"ProjectSettings.editor/export/convert_text_resources_to_binary] to "
-"[code]false[/code]."
-msgstr ""
-"在给定的 [param path] 中加载资源,并将结果缓存以供进一步访问。\n"
-"按顺序查询注册的 [ResourceFormatLoader],以找到可以处理文件扩展名的第一个 "
-"[ResourceFormatLoader],然后尝试加载。如果加载失败,则还会尝试其余的 "
-"[ResourceFormatLoader]。\n"
-"可选的 [param type_hint] 可用于进一步指定 [ResourceFormatLoader] 应处理的 "
-"[Resource] 类型。任何继承自 [Resource] 的东西都可以用作类型提示,例如 "
-"[Image]。\n"
-"[param cache_mode] 属性定义在加载资源时是否以及如何使用或更新缓存。详情见 "
-"[enum CacheMode]。\n"
-"如果没有 [ResourceFormatLoader] 可以处理该文件,则返回空资源。\n"
-"GDScript 具有一个简化的 [method @GDScript.load] 内置方法,可在大多数情况下使"
-"用,而 [ResourceLoader] 供更高级的情况使用。\n"
-"[b]注意:[/b]如果 [member ProjectSettings.editor/export/"
-"convert_text_resources_to_binary] 为 [code]true[/code],则 [method @GDScript."
-"load] 无法在导出后的项目中读取已转换的文件。如果你需要在运行时加载存在于 PCK "
-"中的文件,请将 [member ProjectSettings.editor/export/"
-"convert_text_resources_to_binary] 设置为 [code]false[/code]。"
-
-msgid ""
"Returns the resource loaded by [method load_threaded_request].\n"
"If this is called before the loading thread is done (i.e. [method "
"load_threaded_get_status] is not [constant THREAD_LOAD_LOADED]), the calling "
@@ -113922,9 +113955,6 @@ msgstr ""
"直对齐文本的内置方法,但这可以通过使用锚点/容器和 [member fit_content] 属性来"
"模拟。"
-msgid "GUI Rich Text/BBcode Demo"
-msgstr "GUI 富文本/BBcode 演示"
-
msgid ""
"Adds an image's opening and closing tags to the tag stack, optionally "
"providing a [param width] and [param height] to resize the image, a [param "
@@ -113974,6 +114004,38 @@ msgstr ""
"[member text] 而不是使用 [method append_text]。"
msgid ""
+"Clears the tag stack, causing the label to display nothing.\n"
+"[b]Note:[/b] This method does not affect [member text], and its contents will "
+"show again if the label is redrawn. However, setting [member text] to an "
+"empty [String] also clears the stack."
+msgstr ""
+"清除标签栈,导致该标签不显示任何内容。\n"
+"[b]注意:[/b]这个方法不会影响 [member text],如果重绘标签,其内容会重新显示。"
+"但将 [member text] 设置为空 [String] 也会清除栈。"
+
+msgid ""
+"Returns the line number of the character position provided. Line and "
+"character numbers are both zero-indexed.\n"
+"[b]Note:[/b] If [member threaded] is enabled, this method returns a value for "
+"the loaded part of the document. Use [method is_ready] or [signal finished] "
+"to determine whether document is fully loaded."
+msgstr ""
+"返回提供的字符位置的行号。行号和字符号都是从零开始索引的。\n"
+"[b]注意:[/b]如果启用了 [member threaded],则此方法返回的是文档已加载部分的"
+"值。请使用 [method is_ready] 或 [signal finished] 来确定文档是否已完全加载。"
+
+msgid ""
+"Returns the paragraph number of the character position provided. Paragraph "
+"and character numbers are both zero-indexed.\n"
+"[b]Note:[/b] If [member threaded] is enabled, this method returns a value for "
+"the loaded part of the document. Use [method is_ready] or [signal finished] "
+"to determine whether document is fully loaded."
+msgstr ""
+"返回提供的字符位置的段号。段号和字符号都是从零开始索引的。\n"
+"[b]注意:[/b]如果启用了 [member threaded],则此方法返回的是文档已加载部分的"
+"值。请使用 [method is_ready] 或 [signal finished] 来确定文档是否已完全加载。"
+
+msgid ""
"Returns the height of the content.\n"
"[b]Note:[/b] If [member threaded] is enabled, this method returns a value for "
"the loaded part of the document. Use [method is_ready] or [signal finished] "
@@ -114358,6 +114420,23 @@ msgstr ""
"栈中。将 [param level] 乘以当前 [member tab_size] 来确定新的边距长度。"
msgid ""
+"Adds a meta tag to the tag stack. Similar to the BBCode [code skip-lint]"
+"[url=something]{text}[/url][/code], but supports non-[String] metadata "
+"types.\n"
+"If [member meta_underlined] is [code]true[/code], meta tags display an "
+"underline. This behavior can be customized with [param underline_mode].\n"
+"[b]Note:[/b] Meta tags do nothing by default when clicked. To assign behavior "
+"when clicked, connect [signal meta_clicked] to a function that is called when "
+"the meta tag is clicked."
+msgstr ""
+"添加一个元数据标签到标签栈。类似于 BBCode [code skip-lint][url=something]"
+"{text}[/url][/code],但是还支持非 [String] 类型的元数据。\n"
+"如果 [member meta_underlined] 为 [code]true[/code],则元数据标签会显示下划线。"
+"可以使用 [param underline_mode] 来自定义这个行为。\n"
+"[b]注意:[/b]点击元数据标签默认不会发生任何事情。要分配点击后的行为,请将 "
+"[signal meta_clicked] 连接到某个函数上,这样点击元数据标签时就会调用这个函数。"
+
+msgid ""
"Adds a [code skip-lint][font][/code] tag with a monospace font to the tag "
"stack."
msgstr "在标签栈中添加 [code skip-lint][font][/code] 标签,该标签为等宽字体。"
@@ -114395,16 +114474,6 @@ msgstr ""
msgid "Adds a [code skip-lint][u][/code] tag to the tag stack."
msgstr "向标签栈中添加 [code skip-lint][u][/code] 标签。"
-msgid ""
-"Removes a paragraph of content from the label. Returns [code]true[/code] if "
-"the paragraph exists.\n"
-"The [param paragraph] argument is the index of the paragraph to remove, it "
-"can take values in the interval [code][0, get_paragraph_count() - 1][/code]."
-msgstr ""
-"从标签中移除一段内容。如果该段落存在,则返回 [code]true[/code]。\n"
-"[param paragraph] 参数是要移除的段落的索引,它可以在 [code][0, "
-"get_paragraph_count() - 1][/code] 区间内取值。"
-
msgid "Scrolls the window's top line to match [param line]."
msgstr "滚动窗口,让第一行与 [param line] 匹配。"
@@ -114466,6 +114535,14 @@ msgstr ""
"如果设置为 [constant TextServer.AUTOWRAP_OFF] 以外的值,则文本将在节点的边界矩"
"形内换行。要了解每种模式的行为,请参见 [enum TextServer.AutowrapMode]。"
+msgid ""
+"If [code]true[/code], the label uses BBCode formatting.\n"
+"[b]Note:[/b] This only affects the contents of [member text], not the tag "
+"stack."
+msgstr ""
+"如果为 [code]true[/code],则标签使用 BBCode 格式。\n"
+"[b]注意:[/b]只会影响 [member text] 的内容,不会影响标签栈。"
+
msgid "If [code]true[/code], a right-click displays the context menu."
msgstr "为 [code]true[/code] 时右键单击会显示上下文菜单。"
@@ -114492,6 +114569,15 @@ msgstr ""
"skip-lint][hint=description]{text}[/hint][/code]。"
msgid ""
+"If [code]true[/code], the label underlines meta tags such as [code skip-lint]"
+"[url]{text}[/url][/code]. These tags can call a function when clicked if "
+"[signal meta_clicked] is connected to a function."
+msgstr ""
+"如果为 [code]true[/code],则标签会在元标记下加下划线,例如 [code skip-lint]"
+"[url]{text}[/url][/code]。如果 [signal meta_clicked] 被连接到某个函数,则这些"
+"标记可以在点击时调用函数。"
+
+msgid ""
"The delay after which the loading progress bar is displayed, in milliseconds. "
"Set to [code]-1[/code] to disable progress bar entirely.\n"
"[b]Note:[/b] Progress bar is displayed only if [member threaded] is enabled."
@@ -114555,6 +114641,44 @@ msgstr "如果为 [code]true[/code],则文本处理在后台线程中完成。
msgid "Triggered when the document is fully loaded."
msgstr "当文档完全加载时触发。"
+msgid ""
+"Triggered when the user clicks on content between meta (URL) tags. If the "
+"meta is defined in BBCode, e.g. [code skip-lint][url={\"key\": "
+"\"value\"}]Text[/url][/code], then the parameter for this signal will always "
+"be a [String] type. If a particular type or an object is desired, the [method "
+"push_meta] method must be used to manually insert the data into the tag "
+"stack. Alternatively, you can convert the [String] input to the desired type "
+"based on its contents (such as calling [method JSON.parse] on it).\n"
+"For example, the following method can be connected to [signal meta_clicked] "
+"to open clicked URLs using the user's default web browser:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# This assumes RichTextLabel's `meta_clicked` signal was connected to\n"
+"# the function below using the signal connection dialog.\n"
+"func _richtextlabel_on_meta_clicked(meta):\n"
+" # `meta` is of Variant type, so convert it to a String to avoid script "
+"errors at run-time.\n"
+" OS.shell_open(str(meta))\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+msgstr ""
+"用户点击元数据(URL)标签之间的内容时触发。如果 BBCode 中使用类似 [code skip-"
+"lint][url={\"key\": \"value\"}]Text[/url][/code] 的形式定义了元数据,那么该信"
+"号的参数就始终是 [String] 类型。如果需要是特定的类型或者对象,就必须使用 "
+"[method push_meta] 手动向标签栈中插入数据。或者你也可以将输入 [String] 的内容"
+"转换到所需的类型(例如调用 [method JSON.parse])。\n"
+"例如,将下面的方法连接到 [signal meta_clicked] 型号可以在点击 URL 时使用用户的"
+"默认浏览器打开:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"# 假设使用信号连接对话框将 RichTextLabel 的 `meta_clicked` 信号\n"
+"# 连接到了下面的函数。\n"
+"func _richtextlabel_on_meta_clicked(meta):\n"
+" # `meta` 是 Variant 类型,所以将其转换为 String,避免运行时脚本出错。\n"
+" OS.shell_open(str(meta))\n"
+"[/gdscript]\n"
+"[/codeblocks]"
+
msgid "Triggers when the mouse exits a meta tag."
msgstr "当鼠标退出元标签时触发。"
@@ -114576,6 +114700,26 @@ msgstr "每个列表项都有实心圆标记。"
msgid "Selects the whole [RichTextLabel] text."
msgstr "全选 [TextEdit] 文本。"
+msgid ""
+"Meta tag does not display an underline, even if [member meta_underlined] is "
+"[code]true[/code]."
+msgstr ""
+"即使 [member meta_underlined] 为 [code]true[/code],元标记也不显示下划线。"
+
+msgid ""
+"If [member meta_underlined] is [code]true[/code], meta tag always display an "
+"underline."
+msgstr ""
+"如果 [member meta_underlined] 为 [code]true[/code],元数据标签始终会显示下划"
+"线。"
+
+msgid ""
+"If [member meta_underlined] is [code]true[/code], meta tag display an "
+"underline when the mouse cursor is over it."
+msgstr ""
+"如果 [member meta_underlined] 为 [code]true[/code],元数据标签会在鼠标光标悬停"
+"时显示下划线。"
+
msgid "If this bit is set, [method update_image] changes image texture."
msgstr "如果设置了该位,[method update_image] 会更改图像纹理。"
@@ -114723,10 +114867,10 @@ msgid ""
"A low-level resource may correspond to a high-level [Resource], such as "
"[Texture] or [Mesh]."
msgstr ""
-"RID [Variant] 类型用于通过其唯一 ID 访问低级资源。RID 是不透明的,这意味着它们"
-"不会自行授予对资源的访问权限。它们由低级服务类使用,例如 [DisplayServer]、"
+"RID [Variant] 类型用于通过其唯一 ID 访问底层资源。RID 是不透明的,这意味着它们"
+"不会自行授予对资源的访问权限。它们由底层服务器类使用,例如 [DisplayServer]、"
"[RenderingServer]、[TextServer] 等。\n"
-"低级资源可能对应于高级 [Resource],例如 [Texture] 或 [Mesh]。"
+"底层资源可能对应于高阶 [Resource],例如 [Texture] 或 [Mesh]。"
msgid "Constructs an empty [RID] with the invalid ID [code]0[/code]."
msgstr "构造空的 [RID],内容为无效的 ID [code]0[/code]。"
@@ -114800,7 +114944,7 @@ msgstr ""
"[RigidBody2D] 实现了完整的 2D 物理。这个物理体无法直接控制,必须对其施加力(重"
"力、冲量等),物理仿真将计算由此产生的移动、旋转、对碰撞的反应以及对沿路其他物"
"理体的影响等。\n"
-"可以使用 [member lock_rotation]、[member freeze]、和 [member freeze_mode] 调整"
+"可以使用 [member lock_rotation]、[member freeze] 和 [member freeze_mode] 调整"
"该物理体的行为。通过修改该对象的 [member mass] 等属性,你可以控制物理仿真对其"
"的影响。\n"
"即使施加了力,刚体也会始终维持自身的形状和大小。适用于环境中可交互的对象,例如"
@@ -114818,19 +114962,6 @@ msgid "Instancing Demo"
msgstr "实例化演示"
msgid ""
-"Allows you to read and safely modify the simulation state for the object. Use "
-"this instead of [method Node._physics_process] if you need to directly change "
-"the body's [code]position[/code] or other physics properties. By default, it "
-"works in addition to the usual physics behavior, but [member "
-"custom_integrator] allows you to disable the default behavior and write "
-"custom force integration for a body."
-msgstr ""
-"允许你读取并安全地修改对象的模拟状态。如果你需要直接改变物体的 "
-"[code]position[/code] 或其他物理属性,请使用它代替 [method Node."
-"_physics_process]。默认情况下,它是在通常的物理行为之外工作的,但是 [member "
-"custom_integrator] 允许你禁用默认行为并为一个物体编写自定义的合力。"
-
-msgid ""
"Applies a rotational force without affecting position. A force is time "
"dependent and meant to be applied every physics update.\n"
"[b]Note:[/b] [member inertia] is required for this to work. To have [member "
@@ -114870,7 +115001,7 @@ msgstr ""
"[code]true[/code],并将 [member max_contacts_reported] 设置足够高以侦测所有碰"
"撞。\n"
"[b]注意:[/b]此测试的结果不会立即在移动物体后得出。为了提高性能,碰撞列表每帧"
-"更新一次,且在物理步骤之前进行。可考虑改用信号来代替。"
+"更新一次,且在物理迭代之前进行。可考虑改用信号来代替。"
msgid ""
"Returns the number of contacts this body has with other bodies. By default, "
@@ -114975,14 +115106,6 @@ msgstr ""
"少。可以使用光线投射和形状投射方法。有关详细信息,请参阅 [enum CCDMode]。"
msgid ""
-"If [code]true[/code], internal force integration is disabled for this body. "
-"Aside from collision response, the body will only move as determined by the "
-"[method _integrate_forces] function."
-msgstr ""
-"如果为 [code]true[/code],则禁用该物体的内力积分。除了碰撞响应,物体只会按照 "
-"[method _integrate_forces] 函数确定的方式移动。"
-
-msgid ""
"If [code]true[/code], the body is frozen. Gravity and forces are not applied "
"anymore.\n"
"See [member freeze_mode] to set the body's behavior when frozen.\n"
@@ -115043,12 +115166,12 @@ msgid ""
"[/csharp]\n"
"[/codeblocks]"
msgstr ""
-"该物体的惯性力矩。与质量类似,但适用于旋转:用于确定需要施加多少扭矩才能让该物"
-"体旋转。通常会自动根据质量和形状计算惯性力矩,但这个属性能够让你设置自定义的"
+"该物体的转动惯量。与质量类似,但用于旋转:用于确定需要施加多少力矩才能让该物体"
+"旋转。通常会自动根据质量和形状计算转动惯量,但这个属性能够让你设置自定义的"
"值。\n"
-"设置为 [code]0[/code] 时,会自动计算惯性(默认值)。\n"
-"[b]注意:[/b]自动计算出惯性后,这个值不会改变。请使用 [PhysicsServer2D] 获取计"
-"算出的惯性。\n"
+"设置为 [code]0[/code] 时,会自动计算惯量(默认值)。\n"
+"[b]注意:[/b]自动计算出惯量后,这个值不会改变。请使用 [PhysicsServer2D] 获取计"
+"算出的惯量。\n"
"[codeblocks]\n"
"[gdscript]\n"
"@onready var ball = $Ball\n"
@@ -115319,7 +115442,7 @@ msgstr ""
"[RigidBody3D] 实现了完整的 3D 物理。这个物理体无法直接控制,必须对其施加力(重"
"力、冲量等),物理仿真将计算由此产生的移动、旋转、对碰撞的反应以及对沿路其他物"
"理体的影响等。\n"
-"可以使用 [member lock_rotation]、[member freeze]、和 [member freeze_mode] 调整"
+"可以使用 [member lock_rotation]、[member freeze] 和 [member freeze_mode] 调整"
"该物理体的行为。通过修改该对象的 [member mass] 等属性,你可以控制物理仿真对其"
"的影响。\n"
"即使施加了力,刚体也会始终维持自身的形状和大小。适用于环境中可交互的对象,例如"
@@ -115362,7 +115485,7 @@ msgid ""
"Returns the inverse inertia tensor basis. This is used to calculate the "
"angular acceleration resulting from a torque applied to the [RigidBody3D]."
msgstr ""
-"返回逆惯性张量基础。这用于计算施加到 [RigidBody3D] 上的扭矩产生的角加速度。"
+"返回逆惯性张量基础。这用于计算施加到 [RigidBody3D] 上的力矩产生的角加速度。"
msgid "The RigidBody3D's rotational velocity in [i]radians[/i] per second."
msgstr "该 RigidBody3D 的旋转速度,单位为[i]弧度[/i]每秒。"
@@ -115454,12 +115577,12 @@ msgid ""
"[/csharp]\n"
"[/codeblocks]"
msgstr ""
-"该物体的惯性力矩。与质量类似,但适用于旋转:用于确定各个轴上需要施加多少扭矩才"
-"能让该物体旋转。通常会自动根据质量和形状计算惯性力矩,但这个属性能够让你设置自"
-"定义的值。\n"
-"设置为 [constant Vector3.ZERO] 时,会自动计算惯性(默认值)。\n"
-"[b]注意:[/b]自动计算出惯性后,这个值不会改变。请使用 [PhysicsServer3D] 获取计"
-"算出的惯性。\n"
+"该物体的转动惯量。与质量类似,但用于旋转:用于确定各个轴上需要施加多少力矩才能"
+"让该物体旋转。通常会自动根据质量和形状计算转动惯量,但这个属性能够让你设置自定"
+"义的值。\n"
+"设置为 [constant Vector3.ZERO] 时,会自动计算惯量(默认值)。\n"
+"[b]注意:[/b]自动计算出惯量后,这个值不会改变。请使用 [PhysicsServer3D] 获取计"
+"算出的惯量。\n"
"[codeblocks]\n"
"[gdscript]\n"
"@onready var ball = $Ball\n"
@@ -115876,6 +115999,21 @@ msgid "Use [method property_get_replication_mode] instead."
msgstr "请改用 [method property_get_replication_mode]。"
msgid ""
+"Returns [code]true[/code] if the property identified by the given [param "
+"path] is configured to be synchronized on process."
+msgstr ""
+"如果给定 [param path] 标识的属性被配置为在处理时同步,则返回 [code]true[/"
+"code]。"
+
+msgid ""
+"Returns [code]true[/code] if the property identified by the given [param "
+"path] is configured to be reliably synchronized when changes are detected on "
+"process."
+msgstr ""
+"如果给定 [param path] 标识的属性被配置为在处理期间检测到更改时可靠地同步,则返"
+"回 [code]true[/code]。"
+
+msgid ""
"Sets the synchronization mode for the property identified by the given [param "
"path]. See [enum ReplicationMode]."
msgstr "为路径为 [param path] 的属性设置同步模式。见 [enum ReplicationMode]。"
@@ -115893,6 +116031,11 @@ msgstr ""
"property_set_replication_mode]。"
msgid ""
+"Sets whether the property identified by the given [param path] is configured "
+"to be synchronized on process."
+msgstr "设置给定 [param path] 标识的属性是否被配置为在处理时同步。"
+
+msgid ""
"Use [method property_set_replication_mode] with [constant "
"REPLICATION_MODE_ON_CHANGE] instead."
msgstr ""
@@ -115900,6 +116043,12 @@ msgstr ""
"property_set_replication_mode]。"
msgid ""
+"Sets whether the property identified by the given [param path] is configured "
+"to be reliably synchronized when changes are detected on process."
+msgstr ""
+"设置给定 [param path] 标识的属性是否被配置为在处理期间检测到更改时可靠地同步。"
+
+msgid ""
"Removes the property identified by the given [param path] from the "
"configuration."
msgstr "从配置中移除属性,该属性由 [param path] 指定。"
@@ -116095,10 +116244,86 @@ msgstr ""
msgid "Manages the game loop via a hierarchy of nodes."
msgstr "通过节点层次结构管理游戏循环。"
+msgid ""
+"As one of the most important classes, the [SceneTree] manages the hierarchy "
+"of nodes in a scene, as well as scenes themselves. Nodes can be added, "
+"fetched and removed. The whole scene tree (and thus the current scene) can be "
+"paused. Scenes can be loaded, switched and reloaded.\n"
+"You can also use the [SceneTree] to organize your nodes into [b]groups[/b]: "
+"every node can be added to as many groups as you want to create, e.g. an "
+"\"enemy\" group. You can then iterate these groups or even call methods and "
+"set properties on all the nodes belonging to any given group.\n"
+"[SceneTree] is the default [MainLoop] implementation used by the engine, and "
+"is thus in charge of the game loop."
+msgstr ""
+"作为最重要的类之一,[SceneTree] 管理着场景中节点的层次结构以及场景本身。节点可"
+"以被添加、获取和移除。整个场景树可以被暂停,包括当前场景。场景可以被加载、切换"
+"和重新加载。\n"
+"你也可以使用 [SceneTree] 将你的节点组织成[b]组[/b]:每个节点都可以被添加到你想"
+"要创建的任意多个组中,例如“敌人”组。然后你可以遍历这些组,甚至可以在属于任何给"
+"定组的所有节点上调用方法并设置属性。\n"
+"[SceneTree] 是引擎所使用的默认 [MainLoop] 实现,因此负责游戏循环。"
+
msgid "SceneTree"
msgstr "SceneTree"
msgid ""
+"Calls [param method] on each node inside this tree added to the given [param "
+"group]. You can pass arguments to [param method] by specifying them at the "
+"end of this method call. Nodes that cannot call [param method] (either "
+"because the method doesn't exist or the arguments do not match) are ignored. "
+"See also [method set_group] and [method notify_group].\n"
+"[b]Note:[/b] This method acts immediately on all selected nodes at once, "
+"which may cause stuttering in some performance-intensive situations.\n"
+"[b]Note:[/b] In C#, [param method] must be in snake_case when referring to "
+"built-in Godot methods. Prefer using the names exposed in the "
+"[code]MethodName[/code] class to avoid allocating a new [StringName] on each "
+"call."
+msgstr ""
+"在该树内添加到给定 [param group]的每个节点上调用 [param method]。你可以通过在"
+"该方法调用末尾指定参数来将参数传递给 [param method]。无法调用 [param method] "
+"的节点(因为该方法不存在或参数不匹配)将被忽略。另见 [method set_group] 和 "
+"[method notify_group]。\n"
+"[b]注意:[/b]该方法立即作用于所有选定的节点,这可能会在某些性能密集型情况下导"
+"致卡顿。\n"
+"[b]注意:[/b]在 C# 中,当引用内置的 Godot 方法时,[param method] 必须使用 "
+"snake_case。最好使用 [code]MethodName[/code] 类中公开的名称,以避免在每次调用"
+"时分配新的 [StringName]。"
+
+msgid ""
+"Calls the given [param method] on each node inside this tree added to the "
+"given [param group]. Use [param flags] to customize this method's behavior "
+"(see [enum GroupCallFlags]). Additional arguments for [param method] can be "
+"passed at the end of this method. Nodes that cannot call [param method] "
+"(either because the method doesn't exist or the arguments do not match) are "
+"ignored.\n"
+"[codeblock]\n"
+"# Calls \"hide\" to all nodes of the \"enemies\" group, at the end of the "
+"frame and in reverse tree order.\n"
+"get_tree().call_group_flags(\n"
+" SceneTree.GROUP_CALL_DEFERRED | SceneTree.GROUP_CALL_REVERSE,\n"
+" \"enemies\", \"hide\")\n"
+"[/codeblock]\n"
+"[b]Note:[/b] In C#, [param method] must be in snake_case when referring to "
+"built-in Godot methods. Prefer using the names exposed in the "
+"[code]MethodName[/code] class to avoid allocating a new [StringName] on each "
+"call."
+msgstr ""
+"在树内添加到给定 [param group] 的每个节点上调用给定的 [param method]。使用 "
+"[param flags] 自定义该方法的行为(请参阅 [enum GroupCallFlags])。[param "
+"method] 的附加参数可以在该方法的末尾传递。无法调用 [param method] 的节点(因为"
+"该方法不存在或参数不匹配)将被忽略。\n"
+"[codeblock]\n"
+"# 在帧末尾以相反的树顺序,在 “enemies” 组的所有节点上调用 “hide”。\n"
+"get_tree().call_group_flags(\n"
+" SceneTree.GROUP_CALL_DEFERRED | SceneTree.GROUP_CALL_REVERSE,\n"
+" \"enemies\", \"hide\")\n"
+"[/codeblock]\n"
+"[b]注意:[/b]在 C# 中,当引用内置的 Godot 方法时,[param method] 必须使用 "
+"snake_case。最好使用 [code]MethodName[/code] 类中公开的名称,以避免在每次调用"
+"时分配新的 [StringName]。"
+
+msgid ""
"Changes the running scene to the one at the given [param path], after loading "
"it into a [PackedScene] and creating a new instance.\n"
"Returns [constant OK] on success, [constant ERR_CANT_OPEN] if the [param "
@@ -116148,6 +116373,99 @@ msgstr ""
"全方式释放之前的场景。"
msgid ""
+"Returns a new [SceneTreeTimer]. After [param time_sec] in seconds have "
+"passed, the timer will emit [signal SceneTreeTimer.timeout] and will be "
+"automatically freed.\n"
+"If [param process_always] is [code]false[/code], the timer will be paused "
+"when setting [member SceneTree.paused] to [code]true[/code].\n"
+"If [param process_in_physics] is [code]true[/code], the timer will update at "
+"the end of the physics frame, instead of the process frame.\n"
+"If [param ignore_time_scale] is [code]true[/code], the timer will ignore "
+"[member Engine.time_scale] and update with the real, elapsed time.\n"
+"This method is commonly used to create a one-shot delay timer, as in the "
+"following example:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func some_function():\n"
+" print(\"start\")\n"
+" await get_tree().create_timer(1.0).timeout\n"
+" print(\"end\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public async Task SomeFunction()\n"
+"{\n"
+" GD.Print(\"start\");\n"
+" await ToSignal(GetTree().CreateTimer(1.0f), SceneTreeTimer.SignalName."
+"Timeout);\n"
+" GD.Print(\"end\");\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] The timer is always updated [i]after[/i] all of the nodes in the "
+"tree. A node's [method Node._process] method would be called before the timer "
+"updates (or [method Node._physics_process] if [param process_in_physics] is "
+"set to [code]true[/code])."
+msgstr ""
+"返回一个新的 [SceneTreeTimer]。在以秒为单位的 [param time_sec] 过去后,该计时"
+"器将发出 [signal SceneTreeTimer.timeout] 并自动释放。\n"
+"如果 [param process_always] 为 [code]false[/code],则当将 [member SceneTree."
+"paused] 设置为 [code]true[/code] 时,该计时器将被暂停。\n"
+"如果 [param process_in_physics] 为 [code]true[/code],则该计时器将在物理帧结束"
+"时,而不是在过程帧结束时更新。\n"
+"如果 [param ignore_time_scale] 为 [code]true[/code],则该计时器将忽略 [member "
+"Engine.time_scale] 并使用实际的、经过的时间更新。\n"
+"该方法通常用于创建一次性的延迟计时器,如下例所示:\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"func some_function():\n"
+" print(\"开始\")\n"
+" await get_tree().create_timer(1.0).timeout\n"
+" print(\"结束\")\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"public async Task SomeFunction()\n"
+"{\n"
+" GD.Print(\"开始\");\n"
+" await ToSignal(GetTree().CreateTimer(1.0f), SceneTreeTimer.SignalName."
+"Timeout);\n"
+" GD.Print(\"结束\");\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注意:[/b]该计时器总是在树中的所有节点[i]之后[/i]更新。在该计时器更新之前,"
+"将调用节点的 [method Node._process] 方法(如果 [param process_in_physics] 被设"
+"置为 [code]true[/code],则调用 [method Node._physics_process])。"
+
+msgid ""
+"Creates and returns a new [Tween] processed in this tree. The Tween will "
+"start automatically on the next process frame or physics frame (depending on "
+"its [enum Tween.TweenProcessMode]).\n"
+"[b]Note:[/b] A [Tween] created using this method is not bound to any [Node]. "
+"It may keep working until there is nothing left to animate. If you want the "
+"[Tween] to be automatically killed when the [Node] is freed, use [method Node."
+"create_tween] or [method Tween.bind_node]."
+msgstr ""
+"创建并返回在该树中处理的新的 [Tween]。该 Tween 将在下一个处理帧或物理帧中自动"
+"开始(取决于其 [enum Tween.TweenProcessMode])。\n"
+"[b]注意:[/b]使用该方法创建的 [Tween] 不会被绑定到任何 [Node]。它可能会继续工"
+"作,直到没有任何东西可以进行动画。如果希望在 [Node] 被释放时自动终结该 "
+"[Tween],请使用 [method Node.create_tween] 或 [method Tween.bind_node]。"
+
+msgid ""
+"Returns the first [Node] found inside the tree, that has been added to the "
+"given [param group], in scene hierarchy order. Returns [code]null[/code] if "
+"no match is found. See also [method get_nodes_in_group]."
+msgstr ""
+"返回树中找到的第一个加入了 [param group] 分组的 [Node],查找时按照场景层次结构"
+"顺序。如果没有找到匹配的节点则返回 [code]null[/code]。另见 [method "
+"get_nodes_in_group]。"
+
+msgid ""
+"Returns how many frames have been processed, since the application started. "
+"This is [i]not[/i] a measurement of elapsed time."
+msgstr "返回程序开始运行之后已经处理了多少帧。测量的[i]不是[/i]经过的时间。"
+
+msgid ""
"Searches for the [MultiplayerAPI] configured for the given path, if one does "
"not exist it searches the parent paths until one is found. If the path is "
"empty, or none is found, the default one is returned. See [method "
@@ -116157,6 +116475,131 @@ msgstr ""
"止。如果路径为空,或者没有找到,则返回默认路径。参见 [method "
"set_multiplayer]。"
+msgid "Returns the number of nodes inside this tree."
+msgstr "返回该树中的节点数。"
+
+msgid "Returns the number of nodes assigned to the given group."
+msgstr "返回分配给给定组的节点数。"
+
+msgid ""
+"Returns an [Array] containing all nodes inside this tree, that have been "
+"added to the given [param group], in scene hierarchy order."
+msgstr ""
+"返回一个 [Array],其中包含的是树中所有加入了 [param group] 分组的节点,按照场"
+"景层次结构排序。"
+
+msgid ""
+"Returns an [Array] of currently existing [Tween]s in the tree, including "
+"paused tweens."
+msgstr "返回树中当前存在的 [Tween] 的 [Array],包括暂停的补间。"
+
+msgid ""
+"Returns [code]true[/code] if a node added to the given group [param name] "
+"exists in the tree."
+msgstr ""
+"如果树中存在添加到给定组 [param name] 的节点,则返回 [code]true[/code]。"
+
+msgid ""
+"Calls [method Object.notification] with the given [param notification] to all "
+"nodes inside this tree added to the [param group]. See also [method "
+"call_group] and [method set_group].\n"
+"[b]Note:[/b] This method acts immediately on all selected nodes at once, "
+"which may cause stuttering in some performance-intensive situations."
+msgstr ""
+"在树内添加到该 [param group] 的所有节点上,使用给定 [param notification] 调用 "
+"[method Object.notification]。另见 [method call_group] 和 [method "
+"set_group]。\n"
+"[b]注意:[/b]该方法立即作用于所有选定的节点,这可能会在某些性能密集型情况下导"
+"致卡顿。"
+
+msgid ""
+"Calls [method Object.notification] with the given [param notification] to all "
+"nodes inside this tree added to the [param group]. Use [param call_flags] to "
+"customize this method's behavior (see [enum GroupCallFlags])."
+msgstr ""
+"使用给定的 [param notification] 对添加到 [param group] 的该树内的所有节点调用 "
+"[method Object.notification] 。使用 [param call_flags] 自定义该方法的行为(请"
+"参阅 [enum GroupCallFlags])。"
+
+msgid ""
+"Queues the given [param obj] to be deleted, calling its [method Object.free] "
+"at the end of the current frame. This method is similar to [method Node."
+"queue_free]."
+msgstr ""
+"将要删除的给定 [param obj] 排队,在当前帧末尾调用其 [method Object.free]。该方"
+"法与 [method Node.queue_free] 类似。"
+
+msgid ""
+"Quits the application at the end of the current iteration, with the given "
+"[param exit_code].\n"
+"By convention, an exit code of [code]0[/code] indicates success, whereas any "
+"other exit code indicates an error. For portability reasons, it should be "
+"between [code]0[/code] and [code]125[/code] (inclusive).\n"
+"[b]Note:[/b] On iOS this method doesn't work. Instead, as recommended by the "
+"[url=https://developer.apple.com/library/archive/qa/qa1561/_index.html]iOS "
+"Human Interface Guidelines[/url], the user is expected to close apps via the "
+"Home button."
+msgstr ""
+"使用给定的 [param exit_code] 在当前迭代结束时退出应用程序。\n"
+"按照惯例,退出代码 [code]0[/code] 表示成功,而任何其他退出代码表示错误。出于可"
+"移植性的原因,它应该在 [code]0[/code] 和 [code]125[/code] (含)之间。\n"
+"[b]注意:[/b]这个方法在 iOS 上不起作用。相反,根据 [url=https://developer."
+"apple.com/library/archive/qa/qa1561/_index.html]《iOS 人机界面指南》[/url] 中"
+"的建议,用户应通过 Home 按钮关闭应用程序。"
+
+msgid ""
+"Reloads the currently active scene, replacing [member current_scene] with a "
+"new instance of its original [PackedScene].\n"
+"Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member "
+"current_scene] is defined, [constant ERR_CANT_OPEN] if [member current_scene] "
+"cannot be loaded into a [PackedScene], or [constant ERR_CANT_CREATE] if the "
+"scene cannot be instantiated."
+msgstr ""
+"重新加载当前活动的场景,将 [member current_scene] 替换为其原始 [PackedScene] "
+"的新实例。\n"
+"成功时返回 [constant OK],如果尚未定义 [member current_scene],则返回 "
+"[constant ERR_UNCONFIGURED],如果 [member current_scene] 无法加载到 "
+"[PackedScene] 中,则返回 [constant ERR_CANT_OPEN],如果场景无法实例化,则返回 "
+"[constant ERR_CANT_CREATE]。"
+
+msgid ""
+"Sets the given [param property] to [param value] on all nodes inside this "
+"tree added to the given [param group]. Nodes that do not have the [param "
+"property] are ignored. See also [method call_group] and [method "
+"notify_group].\n"
+"[b]Note:[/b] This method acts immediately on all selected nodes at once, "
+"which may cause stuttering in some performance-intensive situations.\n"
+"[b]Note:[/b] In C#, [param property] must be in snake_case when referring to "
+"built-in Godot properties. Prefer using the names exposed in the "
+"[code]PropertyName[/code] class to avoid allocating a new [StringName] on "
+"each call."
+msgstr ""
+"将该树内被添加到给定 [param group] 的所有节点上的给定 [param property] 设置为 "
+"[param value]。没有 [param property] 的节点将被忽略。另见 [method call_group] "
+"和 [method notify_group]。\n"
+"[b]注意:[/b]该方法立即作用于所有选定的节点上,这可能会在某些性能密集型的情况"
+"下导致卡顿。\n"
+"[b]注意:[/b]在 C# 中,在引用 Godot 内置属性时,[param property] 必须是 "
+"snake_case。最好使用 [code]PropertyName[/code] 类中公开的名称,以避免在每次调"
+"用时分配一个新的 [StringName]。"
+
+msgid ""
+"Sets the given [param property] to [param value] on all nodes inside this "
+"tree added to the given [param group]. Nodes that do not have the [param "
+"property] are ignored. Use [param call_flags] to customize this method's "
+"behavior (see [enum GroupCallFlags]).\n"
+"[b]Note:[/b] In C#, [param property] must be in snake_case when referring to "
+"built-in Godot properties. Prefer using the names exposed in the "
+"[code]PropertyName[/code] class to avoid allocating a new [StringName] on "
+"each call."
+msgstr ""
+"将该树内被添加到给定 [param group] 的所有节点上的给定 [param property] 设置为 "
+"[param value]。没有 [param property] 的节点将被忽略。使用 [param call_flags] "
+"自定义该方法的行为(请参阅 [enum GroupCallFlags])。\n"
+"[b]注意:[/b]在 C# 中,在引用 Godot 内置方法时,[param property] 必须是 "
+"snake_case。最好使用 [code]SignalName[/code] 类中公开的名称,以避免在每次调用"
+"时分配一个新的 [StringName]。"
+
msgid ""
"Sets a custom [MultiplayerAPI] with the given [param root_path] (controlling "
"also the relative subpaths), or override the default one if [param root_path] "
@@ -116184,6 +116627,19 @@ msgstr ""
"移动平台见 [member quit_on_go_back]。"
msgid ""
+"The root node of the currently loaded main scene, usually as a direct child "
+"of [member root]. See also [method change_scene_to_file], [method "
+"change_scene_to_packed], and [method reload_current_scene].\n"
+"[b]Warning:[/b] Setting this property directly may not work as expected, as "
+"it does [i]not[/i] add or remove any nodes from this tree."
+msgstr ""
+"当前加载的主场景的根节点,通常是 [member root] 的直接子节点。另见 [method "
+"change_scene_to_file]、[method change_scene_to_packed]、[method "
+"reload_current_scene]。\n"
+"[b]警告:[/b]直接设置该属性可能无法正常工作,因为这样[i]不会[/i]在场景树中添加"
+"删除节点。"
+
+msgid ""
"If [code]true[/code], collision shapes will be visible when running the game "
"from the editor for debugging purposes.\n"
"[b]Note:[/b] This property is not designed to be changed at run-time. "
@@ -116218,6 +116674,14 @@ msgstr ""
"debug_paths_hint] 的值不会产生预期的效果。"
msgid ""
+"The root of the scene currently being edited in the editor. This is usually a "
+"direct child of [member root].\n"
+"[b]Note:[/b] This property does nothing in release builds."
+msgstr ""
+"编辑器中当前正在编辑场景的根节点。通常是 [member root] 的直接子节点。\n"
+"[b]注意:[/b]该属性在发布版本中不起任何作用。"
+
+msgid ""
"If [code]true[/code] (default value), enables automatic polling of the "
"[MultiplayerAPI] for this SceneTree during [signal process_frame].\n"
"If [code]false[/code], you need to manually call [method MultiplayerAPI.poll] "
@@ -116232,6 +116696,21 @@ msgstr ""
"运行 RPC,并在从线程访问 [MultiplayerAPI] 时进行手动 [Mutex] 保护。"
msgid ""
+"If [code]true[/code], the scene tree is considered paused. This causes the "
+"following behavior:\n"
+"- 2D and 3D physics will be stopped, as well as collision detection and "
+"related signals.\n"
+"- Depending on each node's [member Node.process_mode], their [method Node."
+"_process], [method Node._physics_process] and [method Node._input] callback "
+"methods may not called anymore."
+msgstr ""
+"如果为 [code]true[/code],则该场景树被视为暂停。这会导致以下行为:\n"
+"- 2D 和 3D 物理将停止,包括碰撞检测和相关信号。\n"
+"- 根据每个节点的 [member Node.process_mode],它们的 [method Node._process]、"
+"[method Node._physics_process] 和 [method Node._input] 回调方法可能不再被调"
+"用。"
+
+msgid ""
"If [code]true[/code], the application quits automatically when navigating "
"back (e.g. using the system \"Back\" button on Android).\n"
"To handle 'Go Back' button when this option is disabled, use [constant "
@@ -116242,6 +116721,90 @@ msgstr ""
"禁用这个选项时,如果要处理“返回”按钮,请使用 [constant DisplayServer."
"WINDOW_EVENT_GO_BACK_REQUEST]。"
+msgid ""
+"The tree's root [Window]. This is top-most [Node] of the scene tree, and is "
+"always present. An absolute [NodePath] always starts from this node. Children "
+"of the root node may include the loaded [member current_scene], as well as "
+"any [url=$DOCS_URL/tutorials/scripting/singletons_autoload.html]AutoLoad[/"
+"url] configured in the Project Settings.\n"
+"[b]Warning:[/b] Do not delete this node. This will result in unstable "
+"behavior, followed by a crash."
+msgstr ""
+"场景树的根 [Window]。这是场景树的最顶层 [Node],始终存在。绝对 [NodePath] 始终"
+"从这个节点开始。加载的 [member current_scene] 以及“项目设置”中配置的"
+"[url=$DOCS_URL/tutorials/scripting/singletons_autoload.html]自动加载[/url]可能"
+"也是根节点的子节点。\n"
+"[b]警告:[/b]请勿删除该节点。删除会导致不稳定的行为并引起崩溃。"
+
+msgid "Emitted when the [param node] enters this tree."
+msgstr "当 [param node] 进入该树时发出。"
+
+msgid ""
+"Emitted when the [param node]'s [method Node.update_configuration_warnings] "
+"is called. Only emitted in the editor."
+msgstr ""
+"当 [param node] 的 [method Node.update_configuration_warnings] 被调用时发出。"
+"仅在编辑器中发出。"
+
+msgid "Emitted when the [param node] exits this tree."
+msgstr "当 [param node] 退出该树时发出。"
+
+msgid "Emitted when the [param node]'s [member Node.name] is changed."
+msgstr "当 [param node] 的 [member Node.name] 被更改时发出。"
+
+msgid ""
+"Emitted immediately before [method Node._physics_process] is called on every "
+"node in this tree."
+msgstr "在该树中的每个节点上调用 [method Node._physics_process] 之前立即发出。"
+
+msgid ""
+"Emitted immediately before [method Node._process] is called on every node in "
+"this tree."
+msgstr "在该树中的每个节点上调用 [method Node._process] 之前立即发出。"
+
+msgid ""
+"Emitted any time the tree's hierarchy changes (nodes being moved, renamed, "
+"etc.)."
+msgstr "每当该树的层次结构发生变化(节点被移动、重命名等)时发出。"
+
+msgid ""
+"Emitted when the [member Node.process_mode] of any node inside the tree is "
+"changed. Only emitted in the editor, to update the visibility of disabled "
+"nodes."
+msgstr ""
+"当树内任意节点的 [member Node.process_mode] 更改时触发。仅在编辑器中触发,以更"
+"新禁用节点的可见性。"
+
+msgid "Call nodes within a group with no special behavior (default)."
+msgstr "没有特殊行为地调用组内的节点(默认)。"
+
+msgid ""
+"Call nodes within a group in reverse tree hierarchy order (all nested "
+"children are called before their respective parent nodes)."
+msgstr ""
+"按相反的树层次结构顺序调用组内的节点(所有嵌套子节点都在其各自的父节点之前调"
+"用)。"
+
+msgid ""
+"Call nodes within a group at the end of the current frame (can be either "
+"process or physics frame), similar to [method Object.call_deferred]."
+msgstr ""
+"在当前帧(可以是处理帧或物理帧)末尾调用组内的节点,类似于 [method Object."
+"call_deferred]。"
+
+msgid ""
+"Call nodes within a group only once, even if the call is executed many times "
+"in the same frame. Must be combined with [constant GROUP_CALL_DEFERRED] to "
+"work.\n"
+"[b]Note:[/b] Different arguments are not taken into account. Therefore, when "
+"the same call is executed with different arguments, only the first call will "
+"be performed."
+msgstr ""
+"即使在同一帧中执行多次,也仅调用组内的节点一次。必须与 [constant "
+"GROUP_CALL_DEFERRED] 结合使用才能工作。\n"
+"[b]注意:[/b]不考虑不同的参数。因此,当使用不同的参数执行相同的调用时,只会执"
+"行第一个调用。"
+
msgid "One-shot timer."
msgstr "一次性定时器。"
@@ -116334,6 +116897,44 @@ msgstr "如果该脚本可以被实例化,则返回 [code]true[/code]。"
msgid "Returns the script directly inherited by this script."
msgstr "返回由该脚本直接继承的脚本。"
+msgid ""
+"Returns the class name associated with the script, if there is one. Returns "
+"an empty string otherwise.\n"
+"To give the script a global name, you can use the [code]class_name[/code] "
+"keyword in GDScript and the [code][GlobalClass][/code] attribute in C#.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"class_name MyNode\n"
+"extends Node\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"\n"
+"[GlobalClass]\n"
+"public partial class MyNode : Node\n"
+"{\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+msgstr ""
+"返回与脚本关联的类名(如果有)。否则返回空字符串。\n"
+"要为脚本指定全局名称,你可以在 GDScript 中使用 [code]class_name[/code] 关键"
+"字,在 C# 中使用 [code][GlobalClass][/code] 属性。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"class_name MyNode\n"
+"extends Node\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"using Godot;\n"
+"\n"
+"[GlobalClass]\n"
+"public partial class MyNode : Node\n"
+"{\n"
+"}\n"
+"[/csharp]\n"
+"[/codeblocks]"
+
msgid "Returns the script's base type."
msgstr "返回脚本的基类类型。"
@@ -116563,6 +117164,14 @@ msgstr "用户进行上下文跳转,并且该条目在同一个脚本中时发
msgid "Emitted when the user request to search text in the file system."
msgstr "用户请求在文件系统中搜索文本时发出。"
+msgid ""
+"Returns the line where the function is defined in the code, or [code]-1[/"
+"code] if the function is not present."
+msgstr "返回代码中定义该函数的行,如果该函数不存在,则返回 [code]-1[/code]。"
+
+msgid "This method is not called by the engine."
+msgstr "引擎不会调用这个方法。"
+
msgid "Abstract base class for scrollbars."
msgstr "滚动条的抽象基类。"
@@ -116769,9 +117378,10 @@ msgid ""
"emulate_touch_from_mouse] is enabled."
msgstr ""
"当[i]通过触摸事件[/i]拖动可滚动区域而导致滚动停止时发出。当通过拖动滚动条滚"
-"动、使用鼠标滚轮滚动、或使用键盘/游戏手柄事件滚动时,[i]不[/i]会发出该信号。\n"
-"[b]注意:[/b]该信号仅在 Android 或 iOS 上,或在启用 [member ProjectSettings."
-"input_devices/pointing/emulate_touch_from_mouse] 时的桌面/Web 平台上发出。"
+"动、使用鼠标滚轮滚动、或使用键盘/游戏手柄事件滚动时,[i]不会[/i]发出该信号。\n"
+"[b]注意:[/b]该信号仅会在 Android、iOS、桌面、Web 平台上发出,在桌面/Web 平台"
+"上需要启用 [member ProjectSettings.input_devices/pointing/"
+"emulate_touch_from_mouse]。"
msgid ""
"Emitted when scrolling starts when dragging the scrollable area w[i]ith a "
@@ -116784,8 +117394,9 @@ msgid ""
msgstr ""
"当[i]通过触摸事件[/i]拖动可滚动区域而导致滚动开始时发出。当通过拖动滚动条滚"
"动、使用鼠标滚轮滚动、或使用键盘/游戏手柄事件滚动时,[i]不[/i]会发出该信号。\n"
-"[b]注意:[/b]该信号仅在 Android 或 iOS 上,或在启用 [member ProjectSettings."
-"input_devices/pointing/emulate_touch_from_mouse] 时的桌面/Web 平台上发出。"
+"[b]注意:[/b]该信号仅会在 Android、iOS、桌面、Web 平台上发出,在桌面/Web 平台"
+"上需要启用 [member ProjectSettings.input_devices/pointing/"
+"emulate_touch_from_mouse]。"
msgid "Scrolling disabled, scrollbar will be invisible."
msgstr "禁用滚动,滚动条不可见。"
@@ -117336,13 +117947,6 @@ msgstr ""
"数,即形状可以在不触发碰撞的情况下移动多远。"
msgid ""
-"The fraction from the [ShapeCast2D]'s origin to its [member target_position] "
-"(between 0 and 1) of how far the shape must move to trigger a collision."
-msgstr ""
-"从 [ShapeCast2D] 的原点到其 [member target_position](介于 0 和 1 之间)的分"
-"数,即形状必须移动多远才能触发碰撞。"
-
-msgid ""
"Returns the collided [Object] of one of the multiple collisions at [param "
"index], or [code]null[/code] if no object is intersecting the shape (i.e. "
"[method is_colliding] returns [code]false[/code])."
@@ -117370,7 +117974,7 @@ msgid ""
"get_collision_normal] methods."
msgstr ""
"在撞击点检测到的碰撞次数。使用它来迭代由 [method get_collider]、[method "
-"get_collider_shape]、[method get_collision_point]、和 [method "
+"get_collider_shape]、[method get_collision_point] 和 [method "
"get_collision_normal] 方法提供的多个碰撞。"
msgid ""
@@ -117475,13 +118079,6 @@ msgstr ""
"数,即形状可以在不触发碰撞的情况下移动多远。"
msgid ""
-"The fraction from the [ShapeCast3D]'s origin to its [member target_position] "
-"(between 0 and 1) of how far the shape must move to trigger a collision."
-msgstr ""
-"从 [ShapeCast3D] 的原点到其 [member target_position](介于 0 和 1 之间)的分"
-"数,即形状必须移动多远才能触发碰撞。"
-
-msgid ""
"Removes a collision exception so the shape does report collisions with the "
"specified [CollisionObject3D] node."
msgstr "移除碰撞例外,让该形状汇报与指定 [CollisionObject3D] 节点的碰撞。"
@@ -117813,6 +118410,17 @@ msgstr ""
"请注意,下文的“全局姿势”是指骨骼相对于骨架的整体变换,因此并不是骨骼的实际全"
"局/世界变换。"
+msgid ""
+"Adds a new bone with the given name. Returns the new bone's index, or "
+"[code]-1[/code] if this method fails.\n"
+"[b]Note:[/b] Bone names should be unique, non empty, and cannot include the "
+"[code]:[/code] and [code]/[/code] characters."
+msgstr ""
+"添加具有给定名称的新骨骼。返回新骨骼的索引,如果该方法失败,则返回 [code]-1[/"
+"code]。\n"
+"[b]注意:[/b]骨骼名称应该是唯一的、非空的,并且不能包含 [code]:[/code] 和 "
+"[code]/[/code] 字符。"
+
msgid "Clear all the bones in this skeleton."
msgstr "清除这个骨架上的所有骨骼。"
@@ -117830,16 +118438,14 @@ msgid ""
"its children."
msgstr "强制更新索引为 [param bone_idx] 的骨骼及其所有子项的变换/姿势。"
-msgid "Returns the number of bones in the skeleton."
-msgstr "返回骨架中骨骼的数量。"
-
msgid ""
-"Returns the overall transform of the specified bone, with respect to the "
-"skeleton. Being relative to the skeleton frame, this is not the actual "
-"\"global\" transform of the bone."
+"Returns an array containing the bone indexes of all the child node of the "
+"passed in bone, [param bone_idx]."
msgstr ""
-"返回指定骨骼的整体变换,相对于骨架。由于是相对于骨架的,这不是该骨骼的实际“全"
-"局”变换。"
+"返回一个数组,其中包含传入骨骼 [param bone_idx] 的所有子节点的骨骼索引。"
+
+msgid "Returns the number of bones in the skeleton."
+msgstr "返回骨架中骨骼的数量。"
msgid ""
"Returns the overall transform of the specified bone, with respect to the "
@@ -117867,9 +118473,6 @@ msgstr ""
"返回 [param bone_idx] 处的骨骼的父级骨骼索引。如果为 -1,则该骨骼没有父级。\n"
"[b]注意:[/b]返回的父骨骼索引总是小于 [param bone_idx]。"
-msgid "Returns the pose transform of the specified bone."
-msgstr "返回指定骨骼的姿势变换。"
-
msgid ""
"Returns the pose position of the bone at [param bone_idx]. The returned "
"[Vector3] is in the local coordinate space of the [Skeleton3D] node."
@@ -117917,32 +118520,6 @@ msgstr "返回位于 [param bone_idx] 的骨骼是否启用了骨骼姿势。"
msgid "Returns all bones in the skeleton to their rest poses."
msgstr "将骨架中的所有骨骼都恢复到放松姿势。"
-msgid ""
-"Adds a collision exception to the physical bone.\n"
-"Works just like the [RigidBody3D] node."
-msgstr ""
-"向物理骨骼添加一个碰撞例外。\n"
-"就像 [RigidBody3D] 节点一样工作。"
-
-msgid ""
-"Removes a collision exception to the physical bone.\n"
-"Works just like the [RigidBody3D] node."
-msgstr ""
-"移除物理骨骼的一个碰撞例外。\n"
-"就像 [RigidBody3D] 节点一样工作。"
-
-msgid ""
-"Tells the [PhysicalBone3D] nodes in the Skeleton to start simulating and "
-"reacting to the physics world.\n"
-"Optionally, a list of bone names can be passed-in, allowing only the passed-"
-"in bones to be simulated."
-msgstr ""
-"让 Skeleton 中的 [PhysicalBone3D] 节点开始仿真模拟,对物理世界做出反应。\n"
-"可以传入骨骼名称列表,只对传入的骨骼进行仿真模拟。"
-
-msgid "Tells the [PhysicalBone3D] nodes in the Skeleton to stop simulating."
-msgstr "让 Skeleton 中的 [PhysicalBone3D] 节点停止仿真模拟。"
-
msgid "Binds the given Skin to the Skeleton."
msgstr "将给定的 Skin 绑定到 Skeleton。"
@@ -118038,23 +118615,10 @@ msgstr ""
"当使用 [method set_bone_enabled] 切换 [param bone_idx] 处的骨骼时发出。使用 "
"[method is_bone_enabled] 来检查新值。"
-msgid ""
-"Emitted when the pose is updated, after [constant "
-"NOTIFICATION_UPDATE_SKELETON] is received."
-msgstr "收到 [constant NOTIFICATION_UPDATE_SKELETON] 后更新姿势时触发。"
-
msgid "Emitted when the value of [member show_rest_only] changes."
msgstr "当 [member show_rest_only] 的值改变时触发。"
msgid ""
-"Notification received when this skeleton's pose needs to be updated.\n"
-"This notification is received [i]before[/i] the related [signal pose_updated] "
-"signal."
-msgstr ""
-"当该骨架的姿势需要更新时收到的通知。\n"
-"该通知是在相关 [signal pose_updated] 信号[i]之前[/i]接收的。"
-
-msgid ""
"A node used to rotate all bones of a [Skeleton3D] bone chain a way that "
"places the end bone at a desired 3D position."
msgstr ""
@@ -118062,64 +118626,6 @@ msgstr ""
"位置的节点。"
msgid ""
-"SkeletonIK3D is used to rotate all bones of a [Skeleton3D] bone chain a way "
-"that places the end bone at a desired 3D position. A typical scenario for IK "
-"in games is to place a character's feet on the ground or a character's hands "
-"on a currently held object. SkeletonIK uses FabrikInverseKinematic internally "
-"to solve the bone chain and applies the results to the [Skeleton3D] "
-"[code]bones_global_pose_override[/code] property for all affected bones in "
-"the chain. If fully applied, this overwrites any bone transform from "
-"[Animation]s or bone custom poses set by users. The applied amount can be "
-"controlled with the [member interpolation] property.\n"
-"[codeblock]\n"
-"# Apply IK effect automatically on every new frame (not the current)\n"
-"skeleton_ik_node.start()\n"
-"\n"
-"# Apply IK effect only on the current frame\n"
-"skeleton_ik_node.start(true)\n"
-"\n"
-"# Stop IK effect and reset bones_global_pose_override on Skeleton\n"
-"skeleton_ik_node.stop()\n"
-"\n"
-"# Apply full IK effect\n"
-"skeleton_ik_node.set_interpolation(1.0)\n"
-"\n"
-"# Apply half IK effect\n"
-"skeleton_ik_node.set_interpolation(0.5)\n"
-"\n"
-"# Apply zero IK effect (a value at or below 0.01 also removes "
-"bones_global_pose_override on Skeleton)\n"
-"skeleton_ik_node.set_interpolation(0.0)\n"
-"[/codeblock]"
-msgstr ""
-"SkeletonIK3D 可以将 [Skeleton3D] 骨骼链中的所有骨骼进行旋转,从而将末端骨骼放"
-"置在正确的 3D 位置。游戏中 IK 的典型场景是将角色的脚放在地面上,或者将角色的手"
-"放在当前持有的物体上。SkeletonIK 在内部使用 FabrikInverseKinematic 来解决骨骼"
-"链,并将结果应用于 [Skeleton3D] [code]bones_global_pose_override[/code] 属性中"
-"所有受影响的骨骼链。如果完全应用,这将覆盖任何来自 [Animation] 的骨骼变换或用"
-"户设置的骨骼自定义姿势。应用量可以用 [member interpolation] 属性来控制。\n"
-"[codeblock]\n"
-"# 在每一个新的帧上自动应用 IK 效果(不是当前的)。\n"
-"skeleton_ik_node.start()\n"
-"\n"
-"# 只在当前帧上应用 IK 效果\n"
-"skeleton_ik_node.start(true)\n"
-"\n"
-"# 停止 IK 效果并重置骨骼上的 bones_global_pose_override\n"
-"skeleton_ik_node.stop()\n"
-"\n"
-"# 应用完整的 IK 效果\n"
-"skeleton_ik_node.set_interpolation(1.0)\n"
-"\n"
-"# 应用一半的 IK 效果\n"
-"skeleton_ik_node.set_interpolation(0.5)\n"
-"\n"
-"# 应用零 IK 效果(数值为 0.01 或低于 0.01 也会移除 Skeleton 上的 "
-"bones_global_pose_override)\n"
-"skeleton_ik_node.set_interpolation(0.0)\n"
-"[/codeblock]"
-
-msgid ""
"Returns the parent [Skeleton3D] Node that was present when SkeletonIK entered "
"the [SceneTree]. Returns null if the parent node was not a [Skeleton3D] Node "
"when SkeletonIK3D entered the [SceneTree]."
@@ -118156,18 +118662,6 @@ msgstr ""
"clear_bones_global_pose_override] 来移除所有骨骼上的现有覆盖。"
msgid ""
-"Interpolation value for how much the IK results are applied to the current "
-"skeleton bone chain. A value of [code]1.0[/code] will overwrite all skeleton "
-"bone transforms completely while a value of [code]0.0[/code] will visually "
-"disable the SkeletonIK. A value at or below [code]0.01[/code] also calls "
-"[method Skeleton3D.clear_bones_global_pose_override]."
-msgstr ""
-"IK 效果被应用于当前骨架骨骼链的程度的插值。[code]1.0[/code] 的值将完全覆盖所有"
-"骨架骨骼变换,而 [code]0.0[/code] 的值将在视觉上禁用 SkeletonIK。等于或低于 "
-"[code]0.01[/code] 的值也会调用 [method Skeleton3D."
-"clear_bones_global_pose_override]。"
-
-msgid ""
"Secondary target position (first is [member target] property or [member "
"target_node]) for the IK chain. Use magnet position (pole target) to control "
"the bending of the IK chain. Only works if the bone chain has more than 2 "
@@ -118800,11 +119294,24 @@ msgstr ""
"点。"
msgid ""
+"Physical bones may be changed in the future to perform the position update of "
+"[Bone2D] on their own, without needing this resource."
+msgstr "将来可能会更改物理骨骼以自行执行 [Bone2D] 的位置更新,而无需该资源。"
+
+msgid ""
"A modification that applies the transforms of [PhysicalBone2D] nodes to "
"[Bone2D] nodes."
msgstr "将 [PhysicalBone2D] 节点的变换应用到 [Bone2D] 节点的修改器。"
msgid ""
+"This modification takes the transforms of [PhysicalBone2D] nodes and applies "
+"them to [Bone2D] nodes. This allows the [Bone2D] nodes to react to physics "
+"thanks to the linked [PhysicalBone2D] nodes."
+msgstr ""
+"该修改采用 [PhysicalBone2D] 节点的变换并将它们应用于 [Bone2D] 节点。由于链接"
+"的 [PhysicalBone2D] 节点,这允许 [Bone2D] 节点对物理做出反应。"
+
+msgid ""
"Empties the list of [PhysicalBone2D] nodes and populates it with all "
"[PhysicalBone2D] nodes that are children of the [Skeleton2D]."
msgstr ""
@@ -119256,131 +119763,6 @@ msgstr "不计算方向。"
msgid "A humanoid [SkeletonProfile] preset."
msgstr "人形 [SkeletonProfile] 预设。"
-msgid ""
-"A [SkeletonProfile] as a preset that is optimized for the human form. This "
-"exists for standardization, so all parameters are read-only.\n"
-"A humanoid skeleton profile contains 54 bones divided in 4 groups: "
-"[code]\"Body\"[/code], [code]\"Face\"[/code], [code]\"LeftHand\"[/code], and "
-"[code]\"RightHand\"[/code]. It is structured as follows:\n"
-"[codeblock]\n"
-"Root\n"
-"└─ Hips\n"
-" ├─ LeftUpperLeg\n"
-" │ └─ LeftLowerLeg\n"
-" │ └─ LeftFoot\n"
-" │ └─ LeftToes\n"
-" ├─ RightUpperLeg\n"
-" │ └─ RightLowerLeg\n"
-" │ └─ RightFoot\n"
-" │ └─ RightToes\n"
-" └─ Spine\n"
-" └─ Chest\n"
-" └─ UpperChest\n"
-" ├─ Neck\n"
-" │ └─ Head\n"
-" │ ├─ Jaw\n"
-" │ ├─ LeftEye\n"
-" │ └─ RightEye\n"
-" ├─ LeftShoulder\n"
-" │ └─ LeftUpperArm\n"
-" │ └─ LeftLowerArm\n"
-" │ └─ LeftHand\n"
-" │ ├─ LeftThumbMetacarpal\n"
-" │ │ └─ LeftThumbProximal\n"
-" │ ├─ LeftIndexProximal\n"
-" │ │ └─ LeftIndexIntermediate\n"
-" │ │ └─ LeftIndexDistal\n"
-" │ ├─ LeftMiddleProximal\n"
-" │ │ └─ LeftMiddleIntermediate\n"
-" │ │ └─ LeftMiddleDistal\n"
-" │ ├─ LeftRingProximal\n"
-" │ │ └─ LeftRingIntermediate\n"
-" │ │ └─ LeftRingDistal\n"
-" │ └─ LeftLittleProximal\n"
-" │ └─ LeftLittleIntermediate\n"
-" │ └─ LeftLittleDistal\n"
-" └─ RightShoulder\n"
-" └─ RightUpperArm\n"
-" └─ RightLowerArm\n"
-" └─ RightHand\n"
-" ├─ RightThumbMetacarpal\n"
-" │ └─ RightThumbProximal\n"
-" ├─ RightIndexProximal\n"
-" │ └─ RightIndexIntermediate\n"
-" │ └─ RightIndexDistal\n"
-" ├─ RightMiddleProximal\n"
-" │ └─ RightMiddleIntermediate\n"
-" │ └─ RightMiddleDistal\n"
-" ├─ RightRingProximal\n"
-" │ └─ RightRingIntermediate\n"
-" │ └─ RightRingDistal\n"
-" └─ RightLittleProximal\n"
-" └─ RightLittleIntermediate\n"
-" └─ RightLittleDistal\n"
-"[/codeblock]"
-msgstr ""
-"[SkeletonProfile] 是针对人形优化的预设。它存在的目的是进行标准化,因此所有参数"
-"都是只读的。\n"
-"人形骨架预设包含了 54 根骨骼,分为 [code]\"Body\"[/code](身体)、"
-"[code]\"Face\"[/code](面部)、 [code]\"LeftHand\"[/code](左手)、"
-"[code]\"RightHand\"[/code](右手)4 组。结构如下:\n"
-"[codeblock]\n"
-"Root\n"
-"└─ Hips\n"
-" ├─ LeftUpperLeg\n"
-" │ └─ LeftLowerLeg\n"
-" │ └─ LeftFoot\n"
-" │ └─ LeftToes\n"
-" ├─ RightUpperLeg\n"
-" │ └─ RightLowerLeg\n"
-" │ └─ RightFoot\n"
-" │ └─ RightToes\n"
-" └─ Spine\n"
-" └─ Chest\n"
-" └─ UpperChest\n"
-" ├─ Neck\n"
-" │ └─ Head\n"
-" │ ├─ Jaw\n"
-" │ ├─ LeftEye\n"
-" │ └─ RightEye\n"
-" ├─ LeftShoulder\n"
-" │ └─ LeftUpperArm\n"
-" │ └─ LeftLowerArm\n"
-" │ └─ LeftHand\n"
-" │ ├─ LeftThumbMetacarpal\n"
-" │ │ └─ LeftThumbProximal\n"
-" │ ├─ LeftIndexProximal\n"
-" │ │ └─ LeftIndexIntermediate\n"
-" │ │ └─ LeftIndexDistal\n"
-" │ ├─ LeftMiddleProximal\n"
-" │ │ └─ LeftMiddleIntermediate\n"
-" │ │ └─ LeftMiddleDistal\n"
-" │ ├─ LeftRingProximal\n"
-" │ │ └─ LeftRingIntermediate\n"
-" │ │ └─ LeftRingDistal\n"
-" │ └─ LeftLittleProximal\n"
-" │ └─ LeftLittleIntermediate\n"
-" │ └─ LeftLittleDistal\n"
-" └─ RightShoulder\n"
-" └─ RightUpperArm\n"
-" └─ RightLowerArm\n"
-" └─ RightHand\n"
-" ├─ RightThumbMetacarpal\n"
-" │ └─ RightThumbProximal\n"
-" ├─ RightIndexProximal\n"
-" │ └─ RightIndexIntermediate\n"
-" │ └─ RightIndexDistal\n"
-" ├─ RightMiddleProximal\n"
-" │ └─ RightMiddleIntermediate\n"
-" │ └─ RightMiddleDistal\n"
-" ├─ RightRingProximal\n"
-" │ └─ RightRingIntermediate\n"
-" │ └─ RightRingDistal\n"
-" └─ RightLittleProximal\n"
-" └─ RightLittleIntermediate\n"
-" └─ RightLittleDistal\n"
-"[/codeblock]"
-
msgid "Defines a 3D environment's background by using a [Material]."
msgstr "使用 [Material] 定义 3D 环境的背景。"
@@ -119641,18 +120023,6 @@ msgstr ""
msgid "A deformable 3D physics mesh."
msgstr "可形变的 3D 物理网格。"
-msgid ""
-"A deformable 3D physics mesh. Used to create elastic or deformable objects "
-"such as cloth, rubber, or other flexible materials.\n"
-"[b]Note:[/b] There are many known bugs in [SoftBody3D]. Therefore, it's not "
-"recommended to use them for things that can affect gameplay (such as "
-"trampolines)."
-msgstr ""
-"可形变的 3D 物理网格。用于创建弹性或可形变的对象,例如布料、橡胶或其他柔性材"
-"质。\n"
-"[b]注意:[/b][SoftBody3D] 中有许多已知的问题。因此,不建议用于可能影响游戏玩法"
-"的东西上(例如蹦床)。"
-
msgid "SoftBody"
msgstr "SoftBody"
@@ -119812,6 +120182,65 @@ msgstr "球体的半径。形状的直径是半径的两倍。"
msgid "An input field for numbers."
msgstr "数字的输入字段。"
+msgid ""
+"[SpinBox] is a numerical input text field. It allows entering integers and "
+"floating-point numbers.\n"
+"[b]Example:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var spin_box = SpinBox.new()\n"
+"add_child(spin_box)\n"
+"var line_edit = spin_box.get_line_edit()\n"
+"line_edit.context_menu_enabled = false\n"
+"spin_box.horizontal_alignment = LineEdit.HORIZONTAL_ALIGNMENT_RIGHT\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var spinBox = new SpinBox();\n"
+"AddChild(spinBox);\n"
+"var lineEdit = spinBox.GetLineEdit();\n"
+"lineEdit.ContextMenuEnabled = false;\n"
+"spinBox.AlignHorizontal = LineEdit.HorizontalAlignEnum.Right;\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"The above code will create a [SpinBox], disable context menu on it and set "
+"the text alignment to right.\n"
+"See [Range] class for more options over the [SpinBox].\n"
+"[b]Note:[/b] With the [SpinBox]'s context menu disabled, you can right-click "
+"the bottom half of the spinbox to set the value to its minimum, while right-"
+"clicking the top half sets the value to its maximum.\n"
+"[b]Note:[/b] [SpinBox] relies on an underlying [LineEdit] node. To theme a "
+"[SpinBox]'s background, add theme items for [LineEdit] and customize them.\n"
+"[b]Note:[/b] If you want to implement drag and drop for the underlying "
+"[LineEdit], you can use [method Control.set_drag_forwarding] on the node "
+"returned by [method get_line_edit]."
+msgstr ""
+"[SpinBox] 是一种用于输入数值的文本字段,允许输入整数和浮点数。\n"
+"[b]示例:[/b]\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var spin_box = SpinBox.new()\n"
+"add_child(spin_box)\n"
+"var line_edit = spin_box.get_line_edit()\n"
+"line_edit.context_menu_enabled = false\n"
+"spin_box.horizontal_alignment = LineEdit.HORIZONTAL_ALIGNMENT_RIGHT\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"var spinBox = new SpinBox();\n"
+"AddChild(spinBox);\n"
+"var lineEdit = spinBox.GetLineEdit();\n"
+"lineEdit.ContextMenuEnabled = false;\n"
+"spinBox.AlignHorizontal = LineEdit.HorizontalAlignEnum.Right;\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"上面的代码会创建一个 [SpinBox],禁用其中的上下文菜单,并将文本设置为右对齐。\n"
+"[SpinBox] 的更多选项见 [Range] 类。\n"
+"[b]注意:[/b][SpinBox] 的上下文菜单被禁用时,右键单击微调框的下半部分可以将取"
+"值设置最小值,右键单击上半部分可以将取值设置最大值。\n"
+"[b]注意:[/b][SpinBox] 依赖底层的 [LineEdit] 节点。要为 [SpinBox] 的背景设置主"
+"题,请为 [LineEdit] 添加主题项目并进行自定义。\n"
+"[b]注意:[/b]如果你想要为底层的 [LineEdit] 实现拖放,可以对 [method "
+"get_line_edit] 所返回的节点使用 [method Control.set_drag_forwarding]。"
+
msgid "Applies the current value of this [SpinBox]."
msgstr "应用此 [SpinBox] 的当前值。"
@@ -120011,6 +120440,26 @@ msgid ""
msgstr "聚光灯的[i]角度[/i]衰减曲线。另见 [member spot_attenuation]。"
msgid ""
+"Controls the distance attenuation function for spotlights.\n"
+"A value of [code]0.0[/code] smoothly attenuates light at the edge of the "
+"range. A value of [code]1.0[/code] approaches a physical lighting model. A "
+"value of [code]0.5[/code] approximates linear attenuation.\n"
+"[b]Note:[/b] Setting it to [code]1.0[/code] may result in distant objects "
+"receiving minimal light, even within range. For example, with a range of "
+"[code]4096[/code], an object at [code]100[/code] units receives less than "
+"[code]0.1[/code] energy.\n"
+"[b]Note:[/b] Using negative or values higher than [code]10.0[/code] may lead "
+"to unexpected results."
+msgstr ""
+"控制聚光灯的距离衰减函数。\n"
+"值为 [code]0.0[/code] 可平滑地衰减范围边缘的光。值为 [code]1.0[/code] 接近物理"
+"照明模型。值为 [code]0.5[/code] 近似于线性衰减。\n"
+"[b]注意:[/b]将其设置为 [code]1.0[/code] 可能会导致远处的物体接收到的光最少,"
+"即使在范围内也是如此。例如,在 [code]4096[/code] 范围内,在 [code]100[/code] "
+"单位处的物体接收到的能量少于 [code]0.1[/code]。\n"
+"[b]注意:[/b]使用负数或高于 [code]10.0[/code] 的值可能会导致意外结果。"
+
+msgid ""
"The maximal range that can be reached by the spotlight. Note that the "
"effectively lit area may appear to be smaller depending on the [member "
"spot_attenuation] in use. No matter the [member spot_attenuation] in use, the "
@@ -120174,6 +120623,17 @@ msgstr ""
"[/codeblocks]"
msgid ""
+"Returns [code]true[/code], if the pixel at the given position is opaque and "
+"[code]false[/code] in other case. The position is in local coordinates.\n"
+"[b]Note:[/b] It also returns [code]false[/code], if the sprite's texture is "
+"[code]null[/code] or if the given position is invalid."
+msgstr ""
+"如果给定位置的像素不透明,则返回 [code]true[/code],其他情况下返回 "
+"[code]false[/code]。该位置采用局部坐标。\n"
+"[b]注意:[/b]如果精灵的纹理为 [code]null[/code] 或者给定的位置无效,它也会返"
+"回 [code]false[/code]。"
+
+msgid ""
"If [code]true[/code], texture is centered.\n"
"[b]Note:[/b] For games with a pixel art aesthetic, textures may appear "
"deformed when centered. This is caused by their position being between "
@@ -121265,30 +121725,6 @@ msgstr ""
"[/codeblocks]"
msgid ""
-"Performs a case-sensitive comparison to another string. Returns [code]-1[/"
-"code] if less than, [code]1[/code] if greater than, or [code]0[/code] if "
-"equal. \"Less than\" and \"greater than\" are determined by the [url=https://"
-"en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] of "
-"each string, which roughly matches the alphabetical order.\n"
-"With different string lengths, returns [code]1[/code] if this string is "
-"longer than the [param to] string, or [code]-1[/code] if shorter. Note that "
-"the length of empty strings is [i]always[/i] [code]0[/code].\n"
-"To get a [bool] result from a string comparison, use the [code]==[/code] "
-"operator instead. See also [method nocasecmp_to], [method naturalcasecmp_to], "
-"and [method naturalnocasecmp_to]."
-msgstr ""
-"与另一个字符串进行比较,区分大小写。小于时返回 [code]-1[/code]、大于时返回 "
-"[code]1[/code]、等于时返回 [code]0[/code]。“小于”和“大于”比较的是字符串中的 "
-"[url=https://zh.wikipedia.org/wiki/"
-"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 码位[/url],大致与字母表顺"
-"序一致。\n"
-"如果字符串长度不同,这个字符串比 [param to] 字符串长时返回 [code]1[/code],短"
-"时返回 [code]-1[/code]。请注意空字符串的长度[i]始终[/i]为 [code]0[/code]。\n"
-"如果想在比较字符串时获得 [bool] 返回值,请改用 [code]==[/code] 运算符。另见 "
-"[method nocasecmp_to]、[method naturalcasecmp_to] 和 [method "
-"naturalnocasecmp_to]。"
-
-msgid ""
"Returns a single Unicode character from the decimal [param char]. You may use "
"[url=https://unicodelookup.com/]unicodelookup.com[/url] or [url=https://www."
"unicode.org/charts/]unicode.org[/url] as points of reference.\n"
@@ -121436,67 +121872,6 @@ msgstr ""
"末尾。"
msgid ""
-"Formats the string by replacing all occurrences of [param placeholder] with "
-"the elements of [param values].\n"
-"[param values] can be a [Dictionary] or an [Array]. Any underscores in [param "
-"placeholder] will be replaced with the corresponding keys in advance. Array "
-"elements use their index as keys.\n"
-"[codeblock]\n"
-"# Prints \"Waiting for Godot is a play by Samuel Beckett, and Godot Engine is "
-"named after it.\"\n"
-"var use_array_values = \"Waiting for {0} is a play by {1}, and {0} Engine is "
-"named after it.\"\n"
-"print(use_array_values.format([\"Godot\", \"Samuel Beckett\"]))\n"
-"\n"
-"# Prints \"User 42 is Godot.\"\n"
-"print(\"User {id} is {name}.\".format({\"id\": 42, \"name\": \"Godot\"}))\n"
-"[/codeblock]\n"
-"Some additional handling is performed when [param values] is an [Array]. If "
-"[param placeholder] does not contain an underscore, the elements of the "
-"[param values] array will be used to replace one occurrence of the "
-"placeholder in order; If an element of [param values] is another 2-element "
-"array, it'll be interpreted as a key-value pair.\n"
-"[codeblock]\n"
-"# Prints \"User 42 is Godot.\"\n"
-"print(\"User {} is {}.\".format([42, \"Godot\"], \"{}\"))\n"
-"print(\"User {id} is {name}.\".format([[\"id\", 42], [\"name\", "
-"\"Godot\"]]))\n"
-"[/codeblock]\n"
-"See also the [url=$DOCS_URL/tutorials/scripting/gdscript/"
-"gdscript_format_string.html]GDScript format string[/url] tutorial.\n"
-"[b]Note:[/b] In C#, it's recommended to [url=https://learn.microsoft.com/en-"
-"us/dotnet/csharp/language-reference/tokens/interpolated]interpolate strings "
-"with \"$\"[/url], instead."
-msgstr ""
-"通过将所有出现的 [param placeholder] 替换为 [param values] 的元素来格式化字符"
-"串。\n"
-"[param values] 可以是 [Dictionary] 或 [Array]。[param placeholder] 中的任何下"
-"划线将被预先被替换为对应的键。数组元素使用它们的索引作为键。\n"
-"[codeblock]\n"
-"# 输出:Waiting for Godot 是 Samuel Beckett 的戏剧,Godot 引擎由此得名。\n"
-"var use_array_values = \"Waiting for {0} 是 {1} 的戏剧,{0} 引擎由此得名。\"\n"
-"print(use_array_values.format([\"Godot\", \"Samuel Beckett\"]))\n"
-"\n"
-"# 输出:第 42 号用户是 Godot。\n"
-"print(\"第 {id} 号用户是 {name}。\".format({\"id\": 42, \"name\": "
-"\"Godot\"}))\n"
-"[/codeblock]\n"
-"当 [param values] 是 [Array] 时还会执行一些额外的处理。 如果 [param "
-"placeholder] 不包含下划线,则 [param values] 数组的元素将用于按顺序替换出现的"
-"占位符;如果 [param values] 的元素是另一个 2 元素数组,则它将被解释为键值"
-"对。\n"
-"[codeblock]\n"
-"# 输出:第 42 号用户是 Godot。\n"
-"print(\"第 {} 号用户是 {}。\".format([42, \"Godot\"], \"{}\"))\n"
-"print(\"第 {id} 号用户是 {name}。\".format([[\"id\", 42], [\"name\", "
-"\"Godot\"]]))\n"
-"[/codeblock]\n"
-"另请参阅 [url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_format_string."
-"html]GDScript 格式化字符串[/url]教程。\n"
-"[b]注意:[/b]在 C# 中推荐改为[url=https://learn.microsoft.com/en-us/dotnet/"
-"csharp/language-reference/tokens/interpolated]使用“$”插入字符串[/url]。"
-
-msgid ""
"If the string is a valid file path, returns the base directory name.\n"
"[codeblock]\n"
"var dir_path = \"/path/to/file.txt\".get_base_dir() # dir_path is \"/path/"
@@ -121607,8 +121982,8 @@ msgid ""
"different hash values are guaranteed to be different."
msgstr ""
"返回代表该字符串内容的 32 位哈希值。\n"
-"[b]注意:[/b]由于哈希碰撞的缘故,内容相同的字符串[i]不一定[/i]会得到相同的哈希"
-"值。而相对的是,哈希不同的字符串一定不同。"
+"[b]注意:[/b]由于哈希碰撞的缘故,哈希相同的字符串[i]不一定[/i]相同。而相对的"
+"是,哈希不同的字符串一定不同。"
msgid ""
"Decodes a hexadecimal string as a [PackedByteArray].\n"
@@ -122019,97 +122394,6 @@ msgstr ""
"[String]。"
msgid ""
-"Performs a [b]case-sensitive[/b], [i]natural order[/i] comparison to another "
-"string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, "
-"or [code]0[/code] if equal. \"Less than\" or \"greater than\" are determined "
-"by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode "
-"code points[/url] of each string, which roughly matches the alphabetical "
-"order.\n"
-"When used for sorting, natural order comparison orders sequences of numbers "
-"by the combined value of each digit as is often expected, instead of the "
-"single digit's value. A sorted sequence of numbered strings will be [code]"
-"[\"1\", \"2\", \"3\", ...][/code], not [code][\"1\", \"10\", \"2\", "
-"\"3\", ...][/code].\n"
-"With different string lengths, returns [code]1[/code] if this string is "
-"longer than the [param to] string, or [code]-1[/code] if shorter. Note that "
-"the length of empty strings is [i]always[/i] [code]0[/code].\n"
-"To get a [bool] result from a string comparison, use the [code]==[/code] "
-"operator instead. See also [method naturalnocasecmp_to], [method "
-"nocasecmp_to], and [method casecmp_to]."
-msgstr ""
-"与另一个字符串进行[b]不区分大小写[/b]的[i]自然顺序[/i]比较。小于时返回 "
-"[code]-1[/code]、大于时返回 [code]1[/code]、等于时返回 [code]0[/code]。“小"
-"于”和“大于”比较的是字符串中的 [url=https://zh.wikipedia.org/wiki/"
-"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 码位[/url],大致与字母表顺"
-"序一致。内部实现时,会将小写字符转换为大写后进行比较。\n"
-"使用自然顺序进行排序时,会和常见预期一样将连续的数字进行组合,而不是一个个数字"
-"进行比较。排序后的数列为 [code][\"1\", \"2\", \"3\", ...][/code] 而不是 [code]"
-"[\"1\", \"10\", \"2\", \"3\", ...][/code]。\n"
-"如果字符串长度不同,这个字符串比 [param to] 字符串长时返回 [code]1[/code],短"
-"时返回 [code]-1[/code]。请注意空字符串的长度[i]始终[/i]为 [code]0[/code]。\n"
-"如果想在比较字符串时获得 [bool] 返回值,请改用 [code]==[/code] 运算符。另见 "
-"[method naturalnocasecmp_to]、[method nocasecmp_to] 和 [method casecmp_to]。"
-
-msgid ""
-"Performs a [b]case-insensitive[/b], [i]natural order[/i] comparison to "
-"another string. Returns [code]-1[/code] if less than, [code]1[/code] if "
-"greater than, or [code]0[/code] if equal. \"Less than\" or \"greater than\" "
-"are determined by the [url=https://en.wikipedia.org/wiki/"
-"List_of_Unicode_characters]Unicode code points[/url] of each string, which "
-"roughly matches the alphabetical order. Internally, lowercase characters are "
-"converted to uppercase for the comparison.\n"
-"When used for sorting, natural order comparison orders sequences of numbers "
-"by the combined value of each digit as is often expected, instead of the "
-"single digit's value. A sorted sequence of numbered strings will be [code]"
-"[\"1\", \"2\", \"3\", ...][/code], not [code][\"1\", \"10\", \"2\", "
-"\"3\", ...][/code].\n"
-"With different string lengths, returns [code]1[/code] if this string is "
-"longer than the [param to] string, or [code]-1[/code] if shorter. Note that "
-"the length of empty strings is [i]always[/i] [code]0[/code].\n"
-"To get a [bool] result from a string comparison, use the [code]==[/code] "
-"operator instead. See also [method naturalcasecmp_to], [method nocasecmp_to], "
-"and [method casecmp_to]."
-msgstr ""
-"与另一个字符串进行[b]不区分大小写[/b]的[i]自然顺序[/i]比较。小于时返回 "
-"[code]-1[/code]、大于时返回 [code]1[/code]、等于时返回 [code]0[/code]。“小"
-"于”和“大于”比较的是字符串中的 [url=https://zh.wikipedia.org/wiki/"
-"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 码位[/url],大致与字母表顺"
-"序一致。内部实现时,会将小写字符转换为大写后进行比较。\n"
-"使用自然顺序进行排序时,会和常见预期一样将连续的数字进行组合,而不是一个个数字"
-"进行比较。排序后的数列为 [code][\"1\", \"2\", \"3\", ...][/code] 而不是 [code]"
-"[\"1\", \"10\", \"2\", \"3\", ...][/code]。\n"
-"如果字符串长度不同,这个字符串比 [param to] 字符串长时返回 [code]1[/code],短"
-"时返回 [code]-1[/code]。请注意空字符串的长度[i]始终[/i]为 [code]0[/code]。\n"
-"如果想在比较字符串时获得 [bool] 返回值,请改用 [code]==[/code] 运算符。另见 "
-"[method naturalcasecmp_to]、[method nocasecmp_to] 和 [method casecmp_to]。"
-
-msgid ""
-"Performs a [b]case-insensitive[/b] comparison to another string. Returns "
-"[code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/"
-"code] if equal. \"Less than\" or \"greater than\" are determined by the "
-"[url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code "
-"points[/url] of each string, which roughly matches the alphabetical order. "
-"Internally, lowercase characters are converted to uppercase for the "
-"comparison.\n"
-"With different string lengths, returns [code]1[/code] if this string is "
-"longer than the [param to] string, or [code]-1[/code] if shorter. Note that "
-"the length of empty strings is [i]always[/i] [code]0[/code].\n"
-"To get a [bool] result from a string comparison, use the [code]==[/code] "
-"operator instead. See also [method casecmp_to], [method naturalcasecmp_to], "
-"and [method naturalnocasecmp_to]."
-msgstr ""
-"与另一个字符串进行[b]不区分大小写[/b]的比较。小于时返回 [code]-1[/code]、大于"
-"时返回 [code]1[/code]、等于时返回 [code]0[/code]。“小于”和“大于”比较的是字符串"
-"中的 [url=https://zh.wikipedia.org/wiki/"
-"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 码位[/url],大致与字母表顺"
-"序一致。内部实现时,会将小写字符转换为大写后进行比较。\n"
-"如果字符串长度不同,这个字符串比 [param to] 字符串长时返回 [code]1[/code],短"
-"时返回 [code]-1[/code]。请注意空字符串的长度[i]始终[/i]为 [code]0[/code]。\n"
-"如果想在比较字符串时获得 [bool] 返回值,请改用 [code]==[/code] 运算符。另见 "
-"[method casecmp_to]、[method naturalcasecmp_to] 和 [method "
-"naturalnocasecmp_to]。"
-
-msgid ""
"Converts a [float] to a string representation of a decimal number, with the "
"number of decimal places specified in [param decimals].\n"
"If [param decimals] is [code]-1[/code] as by default, the string "
@@ -122171,6 +122455,46 @@ msgstr ""
"如果 [param capitalize_hex] 为 [code]true[/code],比 9 大的数位会大写。"
msgid ""
+"Converts the given [param number] to a string representation, in scientific "
+"notation.\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var n = -5.2e8\n"
+"print(n) # Prints -520000000\n"
+"print(String.num_scientific(n)) # Prints -5.2e+08\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// This method is not implemented in C#.\n"
+"// Use `string.ToString()` with \"e\" to achieve similar results.\n"
+"var n = -5.2e8f;\n"
+"GD.Print(n); // Prints -520000000\n"
+"GD.Print(n.ToString(\"e1\")); // Prints -5.2e+008\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]Note:[/b] In C#, this method is not implemented. To achieve similar "
+"results, see C#'s [url=https://learn.microsoft.com/en-us/dotnet/standard/base-"
+"types/standard-numeric-format-strings]Standard numeric format strings[/url]"
+msgstr ""
+"将给定的数字 [param number] 转换为字符串表示,使用科学记数法。\n"
+"[codeblocks]\n"
+"[gdscript]\n"
+"var n = -5.2e8\n"
+"print(n) # 输出 -520000000\n"
+"print(String.num_scientific(n)) # 输出 -5.2e+08\n"
+"[/gdscript]\n"
+"[csharp]\n"
+"// 这个方法没有在 C# 中实现。\n"
+"// 请在 `string.ToString()` 中使用 \"e\" 来实现类似的结果。\n"
+"var n = -5.2e8f;\n"
+"GD.Print(n); // 输出 -520000000\n"
+"GD.Print(n.ToString(\"e1\")); // 输出 -5.2e+008\n"
+"[/csharp]\n"
+"[/codeblocks]\n"
+"[b]注意:[/b]这个方法没有在 C# 中实现。要实现类似的效果,见 C# 的[url=https://"
+"learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-"
+"strings]标准数字格式字符串[/url]"
+
+msgid ""
"Converts the given unsigned [int] to a string representation, with the given "
"[param base].\n"
"By default, [param base] is set to decimal ([code]10[/code]). Other common "
@@ -122227,9 +122551,6 @@ msgstr ""
"将该字符串中出现的所有 [param what] 都替换为给定的 [param forwhat],[b]大小写"
"不敏感[/b]。"
-msgid "Returns the copy of this string in reverse order."
-msgstr "返回将这个字符串逆序后的副本。"
-
msgid ""
"Returns the index of the [b]last[/b] occurrence of [param what] in this "
"string, or [code]-1[/code] if there are none. The search's start can be "
@@ -122942,6 +123263,67 @@ msgstr ""
"[code]StringName(\"example\")[/code] 与 [code]&\"example\"[/code] 等价。"
msgid ""
+"Formats the string by replacing all occurrences of [param placeholder] with "
+"the elements of [param values].\n"
+"[param values] can be a [Dictionary] or an [Array]. Any underscores in [param "
+"placeholder] will be replaced with the corresponding keys in advance. Array "
+"elements use their index as keys.\n"
+"[codeblock]\n"
+"# Prints \"Waiting for Godot is a play by Samuel Beckett, and Godot Engine is "
+"named after it.\"\n"
+"var use_array_values = \"Waiting for {0} is a play by {1}, and {0} Engine is "
+"named after it.\"\n"
+"print(use_array_values.format([\"Godot\", \"Samuel Beckett\"]))\n"
+"\n"
+"# Prints \"User 42 is Godot.\"\n"
+"print(\"User {id} is {name}.\".format({\"id\": 42, \"name\": \"Godot\"}))\n"
+"[/codeblock]\n"
+"Some additional handling is performed when [param values] is an [Array]. If "
+"[param placeholder] does not contain an underscore, the elements of the "
+"[param values] array will be used to replace one occurrence of the "
+"placeholder in order; If an element of [param values] is another 2-element "
+"array, it'll be interpreted as a key-value pair.\n"
+"[codeblock]\n"
+"# Prints \"User 42 is Godot.\"\n"
+"print(\"User {} is {}.\".format([42, \"Godot\"], \"{}\"))\n"
+"print(\"User {id} is {name}.\".format([[\"id\", 42], [\"name\", "
+"\"Godot\"]]))\n"
+"[/codeblock]\n"
+"See also the [url=$DOCS_URL/tutorials/scripting/gdscript/"
+"gdscript_format_string.html]GDScript format string[/url] tutorial.\n"
+"[b]Note:[/b] In C#, it's recommended to [url=https://learn.microsoft.com/en-"
+"us/dotnet/csharp/language-reference/tokens/interpolated]interpolate strings "
+"with \"$\"[/url], instead."
+msgstr ""
+"通过将所有出现的 [param placeholder] 替换为 [param values] 的元素来格式化字符"
+"串。\n"
+"[param values] 可以是 [Dictionary] 或 [Array]。[param placeholder] 中的任何下"
+"划线将被预先被替换为对应的键。数组元素使用它们的索引作为键。\n"
+"[codeblock]\n"
+"# 输出:Waiting for Godot 是 Samuel Beckett 的戏剧,Godot 引擎由此得名。\n"
+"var use_array_values = \"Waiting for {0} 是 {1} 的戏剧,{0} 引擎由此得名。\"\n"
+"print(use_array_values.format([\"Godot\", \"Samuel Beckett\"]))\n"
+"\n"
+"# 输出:第 42 号用户是 Godot。\n"
+"print(\"第 {id} 号用户是 {name}。\".format({\"id\": 42, \"name\": "
+"\"Godot\"}))\n"
+"[/codeblock]\n"
+"当 [param values] 是 [Array] 时还会执行一些额外的处理。 如果 [param "
+"placeholder] 不包含下划线,则 [param values] 数组的元素将用于按顺序替换出现的"
+"占位符;如果 [param values] 的元素是另一个 2 元素数组,则它将被解释为键值"
+"对。\n"
+"[codeblock]\n"
+"# 输出:第 42 号用户是 Godot。\n"
+"print(\"第 {} 号用户是 {}。\".format([42, \"Godot\"], \"{}\"))\n"
+"print(\"第 {id} 号用户是 {name}。\".format([[\"id\", 42], [\"name\", "
+"\"Godot\"]]))\n"
+"[/codeblock]\n"
+"另请参阅 [url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_format_string."
+"html]GDScript 格式化字符串[/url]教程。\n"
+"[b]注意:[/b]在 C# 中推荐改为[url=https://learn.microsoft.com/en-us/dotnet/"
+"csharp/language-reference/tokens/interpolated]使用“$”插入字符串[/url]。"
+
+msgid ""
"Splits the string using a [param delimiter] and returns the substring at "
"index [param slice]. Returns an empty string if the [param slice] does not "
"exist.\n"
@@ -123321,42 +123703,6 @@ msgstr ""
msgid "A customizable [StyleBox] that doesn't use a texture."
msgstr "不使用纹理的自定义 [StyleBox]。"
-msgid ""
-"By configuring various properties of this style box, you can achieve many "
-"common looks without the need of a texture. This includes optionally rounded "
-"borders, antialiasing, shadows, and skew.\n"
-"Setting corner radius to high values is allowed. As soon as corners overlap, "
-"the stylebox will switch to a relative system.\n"
-"[b]Example:[/b]\n"
-"[codeblock]\n"
-"height = 30\n"
-"corner_radius_top_left = 50\n"
-"corner_radius_bottom_left = 100\n"
-"[/codeblock]\n"
-"The relative system now would take the 1:2 ratio of the two left corners to "
-"calculate the actual corner width. Both corners added will [b]never[/b] be "
-"more than the height. Result:\n"
-"[codeblock]\n"
-"corner_radius_top_left: 10\n"
-"corner_radius_bottom_left: 20\n"
-"[/codeblock]"
-msgstr ""
-"通过配置这个样式盒的各种属性,你可以不使用纹理实现许多常见外观,包括可选的圆角"
-"边框、抗锯齿、阴影、偏斜等。\n"
-"允许将圆角半径设置为较高的值。两角重叠时,样式盒将切换到相对系统。\n"
-"[b]示例:[/b]\n"
-"[codeblock]\n"
-"height = 30\n"
-"corner_radius_top_left = 50\n"
-"corner_radius_bottom_left = 100\n"
-"[/codeblock]\n"
-"相对系统现在将采用两个左角的 1:2 比率来计算实际角宽度。添加的两个角[b]永远[/b]"
-"不会超过高度。结果:\n"
-"[codeblock]\n"
-"corner_radius_top_left: 10\n"
-"corner_radius_bottom_left: 20\n"
-"[/codeblock]"
-
msgid "Returns the specified [enum Side]'s border width."
msgstr "返回指定边 [enum Side] 的边框宽度。"
@@ -123776,18 +124122,12 @@ msgstr ""
msgid "Using Viewports"
msgstr "使用视口"
-msgid "3D in 2D Demo"
-msgstr "2D 中的 3D 演示"
-
msgid "Screen Capture Demo"
msgstr "屏幕捕捉演示"
msgid "Dynamic Split Screen Demo"
msgstr "动态分屏演示"
-msgid "3D Viewport Scaling Demo"
-msgstr "3D Viewport 缩放演示"
-
msgid ""
"The clear mode when the sub-viewport is used as a render target.\n"
"[b]Note:[/b] This property is intended for 2D usage."
@@ -124022,14 +124362,6 @@ msgstr ""
"[b]修订说明:[/b][param flags] 的记录可能值,它在 4.0 中发生了变化。可能是 "
"[enum Mesh.ArrayFormat] 的一些组合。"
-msgid ""
-"Commits the data to the same format used by [method ArrayMesh."
-"add_surface_from_arrays]. This way you can further process the mesh data "
-"using the [ArrayMesh] API."
-msgstr ""
-"将数据提交给[method ArrayMesh.add_surface_from_arrays]使用的相同格式。这样你就"
-"可以使用[ArrayMesh]的API接口进一步处理网格数据。"
-
msgid "Creates a vertex array from an existing [Mesh]."
msgstr "从现有的网格 [Mesh] 创建一个顶点数组。"
@@ -124051,13 +124383,6 @@ msgstr ""
"ImporterMesh.generate_lods]。"
msgid ""
-"Generates a LOD for a given [param nd_threshold] in linear units (square root "
-"of quadric error metric), using at most [param target_index_count] indices."
-msgstr ""
-"为给定的 [param nd_threshold] 生成 LOD,使用线性单位(四次误差的平方根),最多"
-"使用 [param target_index_count] 个索引。"
-
-msgid ""
"Generates normals from vertices so you do not have to do it manually. If "
"[param flip] is [code]true[/code], the resulting normals will be inverted. "
"[method generate_normals] should be called [i]after[/i] generating geometry "
@@ -124756,8 +125081,7 @@ msgid ""
"Emitted when a tab is selected via click, directional input, or script, even "
"if it is the current tab."
msgstr ""
-"通过点击、定向输入、或脚本选中某个选项卡时发出,即便该选项卡本来就是当前选项"
-"卡。"
+"通过点击、定向输入或脚本选中某个选项卡时发出,即便该选项卡本来就是当前选项卡。"
msgid "Places tabs to the left."
msgstr "将选项卡置于左侧。"
@@ -125064,6 +125388,14 @@ msgstr ""
"标题被隐藏。"
msgid ""
+"If [code]true[/code], child [Control] nodes that are hidden have their "
+"minimum size take into account in the total, instead of only the currently "
+"visible one."
+msgstr ""
+"如果为 [code]true[/code],隐藏的子 [Control] 节点在总数中考虑其最小大小,而不"
+"是仅考虑当前可见的一个。"
+
+msgid ""
"Emitted when the [TabContainer]'s [Popup] button is clicked. See [method "
"set_popup] for details."
msgstr ""
@@ -125160,6 +125492,28 @@ msgid ""
"connections."
msgstr "如果服务器当前正在侦听连接,则返回 [code]true[/code]。"
+msgid ""
+"Listen on the [param port] binding to [param bind_address].\n"
+"If [param bind_address] is set as [code]\"*\"[/code] (default), the server "
+"will listen on all available addresses (both IPv4 and IPv6).\n"
+"If [param bind_address] is set as [code]\"0.0.0.0\"[/code] (for IPv4) or "
+"[code]\"::\"[/code] (for IPv6), the server will listen on all available "
+"addresses matching that IP type.\n"
+"If [param bind_address] is set to any valid address (e.g. "
+"[code]\"192.168.1.101\"[/code], [code]\"::1\"[/code], etc.), the server will "
+"only listen on the interface with that address (or fail if no interface with "
+"the given address exists)."
+msgstr ""
+"在 [param port] 上监听与 [param bind_address] 绑定的地址。\n"
+"如果 [param bind_address] 被设置为 [code]\"*\"[/code](默认),该服务器将监听"
+"所有可用地址(包括 IPv4 和 IPv6)。\n"
+"如果 [param bind_address] 被设置为 [code]\"0.0.0.0\"[/code](用于 IPv4)或 "
+"[code]\"::\"[/code](用于 IPv6),该服务器将监听所有符合该 IP 类型的可用地"
+"址。\n"
+"如果 [param bind_address] 被设置为任何有效的地址(如 [code]\"192.168.1.101\"[/"
+"code]、[code]\"::1\"[/code] 等),该服务器将只在具有该地址的接口上监听(如果不"
+"存在具有该地址的接口则失败)。"
+
msgid "Stops listening."
msgstr "停止监听。"
@@ -125171,27 +125525,6 @@ msgid "A multiline text editor."
msgstr "多行文本编辑器。"
msgid ""
-"A multiline text editor. It also has limited facilities for editing code, "
-"such as syntax highlighting support. For more advanced facilities for editing "
-"code, see [CodeEdit].\n"
-"[b]Note:[/b] Most viewport, caret and edit methods contain a "
-"[code]caret_index[/code] argument for [member caret_multiple] support. The "
-"argument should be one of the following: [code]-1[/code] for all carets, "
-"[code]0[/code] for the main caret, or greater than [code]0[/code] for "
-"secondary carets.\n"
-"[b]Note:[/b] When holding down [kbd]Alt[/kbd], the vertical scroll wheel will "
-"scroll 5 times as fast as it would normally do. This also works in the Godot "
-"script editor."
-msgstr ""
-"多行文本编辑器。它还有少量用于编辑代码的功能,例如语法高亮支持。更多针对编辑代"
-"码的高阶功能见 [CodeEdit]。\n"
-"[b]注意:[/b]大多数视口、光标和编辑方法都包含 [code]caret_index[/code] 参数以"
-"支持 [member caret_multiple]。该参数应为以下之一:[code]-1[/code] 用于所有光"
-"标,[code]0[/code] 用于主光标,大于 [code]0[/code] 用于辅助光标。\n"
-"[b]注意:[/b]当按住 [kbd]Alt[/kbd] 时,垂直滚轮的滚动速度将是正常速度的 5 倍。"
-"这也适用于 Godot 脚本编辑器。"
-
-msgid ""
"Override this method to define what happens when the user presses the "
"backspace key."
msgstr "覆盖此方法可以定义用户按下退格键时应该发生什么。"
@@ -125233,13 +125566,6 @@ msgstr ""
"code]。"
msgid ""
-"Adds an additional caret above or below every caret. If [param below] is true "
-"the new caret will be added below and above otherwise."
-msgstr ""
-"在每个光标上方或下方添加一个额外的光标。如果 [param below] 为 true,则会在下方"
-"添加新光标,否则为上方。"
-
-msgid ""
"Register a new gutter to this [TextEdit]. Use [param at] to have a specific "
"gutter order. A value of [code]-1[/code] appends the gutter to the right."
msgstr ""
@@ -125253,13 +125579,6 @@ msgstr ""
"选中当前所选内容下一次出现的位置并添加文本光标。如果没有活动的选中内容,则选中"
"当前光标所处的单词。"
-msgid ""
-"Reposition the carets affected by the edit. This assumes edits are applied in "
-"edit order, see [method get_caret_index_edit_order]."
-msgstr ""
-"重新定位受编辑影响的文本光标。这个操作假定编辑是按照编辑顺序应用的,见 "
-"[method get_caret_index_edit_order]。"
-
msgid "Adjust the viewport so the caret is visible."
msgstr "调整视口,让光标可见。"
@@ -125363,6 +125682,13 @@ msgstr "返回注册的边栏数量。"
msgid "Returns the name of the gutter at the given index."
msgstr "返回给定索引处边栏的名称。"
+msgid ""
+"Returns the type of the gutter at the given index. Gutters can contain icons, "
+"text, or custom visuals. See [enum TextEdit.GutterType] for options."
+msgstr ""
+"返回给定索引处的边栏的类型。边栏可以包含图标、文本或自定义视觉效果。选项见 "
+"[enum TextEdit.GutterType]。"
+
msgid "Returns the width of the gutter at the given index."
msgstr "返回给定索引处边栏的宽度。"
@@ -125410,6 +125736,14 @@ msgstr ""
msgid "Returns the number of lines in the text."
msgstr "返回文本中的行数。"
+msgid ""
+"Returns the icon currently in [param gutter] at [param line]. This only works "
+"when the gutter type is [constant GUTTER_TYPE_ICON] (see [method "
+"set_gutter_type])."
+msgstr ""
+"返回 [param gutter] 中当前位于 [param line] 的图标。仅当边栏类型为 [constant "
+"GUTTER_TYPE_ICON] 时才有效(请参阅 [method set_gutter_type])。"
+
msgid "Returns the color currently in [param gutter] at [param line]."
msgstr "返回边栏 [param gutter] 中,当前位于 [param line] 行的颜色。"
@@ -125417,6 +125751,14 @@ msgid "Returns the metadata currently in [param gutter] at [param line]."
msgstr "返回边栏 [param gutter] 中,当前位于 [param line] 行的元数据。"
msgid ""
+"Returns the text currently in [param gutter] at [param line]. This only works "
+"when the gutter type is [constant GUTTER_TYPE_STRING] (see [method "
+"set_gutter_type])."
+msgstr ""
+"返回 [param gutter] 中当前位于 [param line] 的文本。仅当边栏类型为 [constant "
+"GUTTER_TYPE_STRING] 时才有效(请参阅 [method set_gutter_type])。"
+
+msgid ""
"Returns the maximum value of the line height among all lines.\n"
"[b]Note:[/b] The return value is influenced by [theme_item line_spacing] and "
"[theme_item font_size]. And it will not be less than [code]1[/code]."
@@ -125600,18 +125942,12 @@ msgstr ""
msgid "Returns the original start column of the selection."
msgstr "返回选区的原始起始列。"
-msgid "Returns the selection begin line."
-msgstr "返回选择开始行。"
-
msgid "Returns the original start line of the selection."
msgstr "返回选区的原始起始行。"
msgid "Returns the current selection mode."
msgstr "返回当前的选区模式。"
-msgid "Returns the selection end line."
-msgstr "返回选择结束行。"
-
msgid "Returns the [TextEdit]'s' tab size."
msgstr "返回该 [TextEdit] 的制表符大小。"
@@ -125664,11 +126000,6 @@ msgstr "在光标位置插入指定的文本。"
msgid "Returns [code]true[/code] if the caret is visible on the screen."
msgstr "如果光标在屏幕上可见,则返回 [code]true[/code]。"
-msgid ""
-"Returns [code]true[/code] if the user is dragging their mouse for scrolling "
-"or selecting."
-msgstr "如果用户拖动鼠标进行滚动或选择,则返回 [code]true[/code]。"
-
msgid "Returns whether the gutter is clickable."
msgstr "返回该边栏是否可点击。"
@@ -125700,16 +126031,6 @@ msgid ""
msgstr ""
"合并从 [param from_line] 到 [param to_line] 的边栏。只会复制可覆盖的边栏。"
-msgid ""
-"Merges any overlapping carets. Will favor the newest caret, or the caret with "
-"a selection.\n"
-"[b]Note:[/b] This is not called when a caret changes position but after "
-"certain actions, so it is possible to get into a state where carets overlap."
-msgstr ""
-"合并重叠的文本光标。会保留最新的光标,或者存在选中内容的光标。\n"
-"[b]注意:[/b]光标改变位置后不会进行调用,而是在某些动作之后调用,所以进入光标"
-"重叠的状态是可能的。"
-
msgid "Paste at the current location. Can be overridden with [method _paste]."
msgstr "粘贴到当前位置。可以用 [method _paste] 覆盖。"
@@ -125733,14 +126054,6 @@ msgid "Removes all additional carets."
msgstr "移除所有额外的光标。"
msgid ""
-"Removes text between the given positions.\n"
-"[b]Note:[/b] This does not adjust the caret or selection, which as a result "
-"it can end up in an invalid position."
-msgstr ""
-"移除给定位置之间的文本。\n"
-"[b]注意:[/b]文本光标和选区不会进行调整,因此可能最终处于无效位置。"
-
-msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
"In the returned vector, [code]x[/code] is the column, [code]y[/code] is the "
@@ -125789,13 +126102,6 @@ msgstr ""
"[/codeblocks]"
msgid ""
-"Perform selection, from line/column to line/column.\n"
-"If [member selecting_enabled] is [code]false[/code], no selection will occur."
-msgstr ""
-"执行选择,从行/列到行/列。\n"
-"如果 [member selecting_enabled] 为 [code]false[/code],则不会发生选择。"
-
-msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
@@ -125819,27 +126125,20 @@ msgstr ""
"merge_overlapping_carets]。"
msgid ""
-"Moves the caret to the specified [param line] index.\n"
-"If [param adjust_viewport] is [code]true[/code], the viewport will center at "
-"the caret position after the move occurs.\n"
-"If [param can_be_hidden] is [code]true[/code], the specified [param line] can "
-"be hidden.\n"
-"[b]Note:[/b] If supporting multiple carets this will not check for any "
-"overlap. See [method merge_overlapping_carets]."
-msgstr ""
-"将光标移动到指定的 [param line] 索引。\n"
-"如果 [param adjust_viewport] 为 [code]true[/code],则视口将在移动发生后以光标"
-"位置为中心。\n"
-"如果 [param can_be_hidden] 为 [code]true[/code],则可以隐藏指定的 [param "
-"line]。\n"
-"[b]注意:[/b]如果支持多个光标,则不会检查任何重叠。见 [method "
-"merge_overlapping_carets]。"
-
-msgid ""
"Sets the gutter as clickable. This will change the mouse cursor to a pointing "
"hand when hovering over the gutter."
msgstr "将边栏设置为可点击。当鼠标在边栏上悬停时,会将鼠标光标变为指点的手形。"
+msgid ""
+"Set a custom draw method for the gutter. The callback method must take the "
+"following args: [code]line: int, gutter: int, Area: Rect2[/code]. This only "
+"works when the gutter type is [constant GUTTER_TYPE_CUSTOM] (see [method "
+"set_gutter_type])."
+msgstr ""
+"为边栏设置自定义的绘制方法。回调方法必须接受以下参数:[code]line: int, "
+"gutter: int, Area: Rect2[/code]。仅当边栏类型为 [constant GUTTER_TYPE_CUSTOM] "
+"时才有效(请参阅 [method set_gutter_type])。"
+
msgid "Sets whether the gutter should be drawn."
msgstr "设置该边栏是否应被绘制。"
@@ -125849,12 +126148,16 @@ msgstr "设置该边栏的名称。"
msgid "Sets the gutter to overwritable. See [method merge_gutters]."
msgstr "设置该边栏为可覆写。见 [method merge_gutters]。"
+msgid ""
+"Sets the type of gutter. Gutters can contain icons, text, or custom visuals. "
+"See [enum TextEdit.GutterType] for options."
+msgstr ""
+"设置边栏的类型。边栏可以包含图标、文本或自定义视觉效果。有关选项,请参阅 "
+"[enum TextEdit.GutterType]。"
+
msgid "Set the width of the gutter."
msgstr "设置该边栏的宽度。"
-msgid "Sets the text for a specific line."
-msgstr "设置特定行的文本。"
-
msgid ""
"Positions the [param wrap_index] of [param line] at the center of the "
"viewport."
@@ -125882,6 +126185,14 @@ msgstr ""
"如果 [param clickable] 为 [code]true[/code],则让位于 [param line] 的 [param "
"gutter] 可点击。见 [signal gutter_clicked]。"
+msgid ""
+"Sets the icon for [param gutter] on [param line] to [param icon]. This only "
+"works when the gutter type is [constant GUTTER_TYPE_ICON] (see [method "
+"set_gutter_type])."
+msgstr ""
+"将 [param line] 上的 [param gutter] 的图标设置为 [param icon]。仅当边栏类型为 "
+"[constant GUTTER_TYPE_ICON] 时才有效(请参阅 [method set_gutter_type])。"
+
msgid "Sets the color for [param gutter] on [param line] to [param color]."
msgstr "将边栏 [param gutter] 在第 [param line] 行的颜色设置为 [param color]。"
@@ -125891,6 +126202,14 @@ msgstr ""
"将边栏 [param gutter] 在第 [param line] 行的元数据设置为 [param metadata]。"
msgid ""
+"Sets the text for [param gutter] on [param line] to [param text]. This only "
+"works when the gutter type is [constant GUTTER_TYPE_STRING] (see [method "
+"set_gutter_type])."
+msgstr ""
+"将 [param line] 上的 [param gutter] 的文本设置为 [param text]。仅当边栏类型为 "
+"[constant GUTTER_TYPE_STRING] 时才有效(请参阅 [method set_gutter_type])。"
+
+msgid ""
"If [code]true[/code], sets the user into overtype mode. When the user types "
"in this mode, it will override existing text."
msgstr ""
@@ -125933,9 +126252,6 @@ msgstr ""
"text_edit_idle_detect_sec] 或者在 [method start_action] 和 [method "
"end_action] 之外调用可撤销的操作都会导致动作的终止。"
-msgid "Swaps the two lines."
-msgstr "交换两行。"
-
msgid "Tag the current version as saved."
msgstr "将当前版本标记为已保存。"
@@ -126050,9 +126366,6 @@ msgstr "[TextEdit] 的字符串值。"
msgid "Sets the line wrapping mode to use."
msgstr "设置要使用的换行模式。"
-msgid "Emitted when the caret changes position."
-msgstr "光标改变位置时发出。"
-
msgid "Emitted when a gutter is added."
msgstr "添加边栏时发出。"
@@ -126138,6 +126451,28 @@ msgid ""
"visible."
msgstr "换行发生在控件边界,超出通常可见的范围。"
+msgid ""
+"When a gutter is set to string using [method set_gutter_type], it is used to "
+"contain text set via the [method set_line_gutter_text] method."
+msgstr ""
+"当使用 [method set_gutter_type] 将边栏设置为字符串时,它被用于包含通过 "
+"[method set_line_gutter_text] 方法设置的文本。"
+
+msgid ""
+"When a gutter is set to icon using [method set_gutter_type], it is used to "
+"contain an icon set via the [method set_line_gutter_icon] method."
+msgstr ""
+"当使用 [method set_gutter_type] 将边栏设置为图标时,它被用于包含通过 [method "
+"set_line_gutter_icon] 方法设置的图标。"
+
+msgid ""
+"When a gutter is set to custom using [method set_gutter_type], it is used to "
+"contain custom visuals controlled by a callback method set via the [method "
+"set_gutter_custom_draw] method."
+msgstr ""
+"当使用 [method set_gutter_type] 将边栏设置为自定义时,它被用于包含由通过 "
+"[method set_gutter_custom_draw] 方法设置的回调方法控制的自定义视觉效果。"
+
msgid "Sets the background [Color] of this [TextEdit]."
msgstr "设置该 [TextEdit] 的背景 [Color]。"
@@ -126379,6 +126714,17 @@ msgstr "多行 [TextMesh] 中,行与行之间的垂直间距。"
msgid "The size of one pixel's width on the text to scale it in 3D."
msgstr "文本上一个像素宽度的大小,以 3D 缩放。"
+msgid ""
+"The text to generate mesh from.\n"
+"[b]Note:[/b] Due to being a [Resource], it doesn't follow the rules of "
+"[member Node.auto_translate_mode]. If disabling translation is desired, it "
+"should be done manually with [method Object.set_message_translation]."
+msgstr ""
+"要从中生成网格的文本。\n"
+"[b]注意:[/b]由于是 [Resource],所以它并不遵循 [member Node."
+"auto_translate_mode] 的规则。如果需要禁用翻译,则应使用 [method Object."
+"set_message_translation] 手动完成。"
+
msgid "Text width (in pixels), used for fill alignment."
msgstr "文本宽度(单位为像素),用于填充对齐。"
@@ -126554,35 +126900,10 @@ msgstr ""
"源,请使用 [method free_rid] 方法。"
msgid ""
-"Creates new buffer for complex text layout, with the given [param direction] "
-"and [param orientation]. To free the resulting buffer, use [method free_rid] "
-"method.\n"
-"[b]Note:[/b] Direction is ignored if server does not support [constant "
-"FEATURE_BIDI_LAYOUT] feature (supported by [TextServerAdvanced]).\n"
-"[b]Note:[/b] Orientation is ignored if server does not support [constant "
-"FEATURE_VERTICAL_LAYOUT] feature (supported by [TextServerAdvanced])."
-msgstr ""
-"使用给定的方向 [param direction] 和朝向 [param orientation] 新建缓冲区,用于复"
-"杂排版。要释放生成的缓冲区,请使用 [method free_rid]方法。\n"
-"[b]注意:[/b]如果服务器不支持 [constant FEATURE_BIDI_LAYOUT] 特性,则会忽略方"
-"向([TextServerAdvanced] 支持)。\n"
-"[b]注意:[/b]如果服务器不支持 [constant FEATURE_VERTICAL_LAYOUT] 特性,则会忽"
-"略朝向([TextServerAdvanced] 支持)。"
-
-msgid ""
"Draws box displaying character hexadecimal code. Used for replacing missing "
"characters."
msgstr "绘制显示字符十六进制码的框。用于替换缺失的字符。"
-msgid ""
-"Removes all rendered glyphs information from the cache entry.\n"
-"[b]Note:[/b] This function will not remove textures associated with the "
-"glyphs, use [method font_remove_texture] to remove them manually."
-msgstr ""
-"从缓存条目中移除所有的渲染字形信息。\n"
-"[b]注意:[/b]该函数不会移除与字形关联的纹理,请使用 [method "
-"font_remove_texture] 手动移除。"
-
msgid "Removes all font sizes from the cache entry."
msgstr "从缓存条目中移除所有的字体大小。"
@@ -126923,16 +127244,6 @@ msgid "Sets font cache texture image data."
msgstr "设置字体的缓存纹理图像数据。"
msgid ""
-"Sets 2D transform, applied to the font outlines, can be used for slanting, "
-"flipping and rotating glyphs.\n"
-"For example, to simulate italic typeface by slanting, apply the following "
-"transform [code]Transform2D(1.0, slant, 0.0, 1.0, 0.0, 0.0)[/code]."
-msgstr ""
-"设置应用于字体轮廓的 2D 变换,可用于倾斜、翻转和旋转字形。\n"
-"例如,要通过倾斜来模拟斜体字体,请应用以下变换 [code]Transform2D(1.0, slant, "
-"0.0, 1.0, 0.0, 0.0)[/code]。"
-
-msgid ""
"Sets variation coordinates for the specified font cache entry. See [method "
"font_supported_variation_list] for more info."
msgstr ""
@@ -127054,10 +127365,6 @@ msgstr ""
"何作用。"
msgid ""
-"Converts readable feature, variation, script or language name to OpenType tag."
-msgstr "将特性、变体、文字、语言的可读名称转换为 OpenType 标记。"
-
-msgid ""
"Converts [param number] from the numeral systems used in [param language] to "
"Western Arabic (0..9)."
msgstr ""
@@ -127092,11 +127399,6 @@ msgstr ""
msgid "Returns text span metadata."
msgstr "返回文本区间的元数据。"
-msgid ""
-"Changes text span font, font size and OpenType features, without changing the "
-"text."
-msgstr "在不更改文本的情况下,更改文本区间的字体、字体大小和 OpenType 功能。"
-
msgid "Adds text span and font to draw it to the text buffer."
msgstr "添加文本区间和字体,将其绘制到文本缓冲中。"
@@ -127152,7 +127454,7 @@ msgid ""
"Returns custom punctuation character list, used for word breaking. If set to "
"empty string, server defaults are used."
msgstr ""
-"返回自定义标点字符列表,用于断字。如果被设置为空字符串,则使用服务的默认值。"
+"返回自定义标点字符列表,用于断字。如果被设置为空字符串,则使用服务器的默认值。"
msgid ""
"Returns the text descent (number of pixels below the baseline for horizontal "
@@ -127279,7 +127581,7 @@ msgid ""
"Sets custom punctuation character list, used for word breaking. If set to "
"empty string, server defaults are used."
msgstr ""
-"设置自定义标点字符列表,用于断字。如果被设置为空字符串,则使用服务的默认值。"
+"设置自定义标点字符列表,用于断字。如果被设置为空字符串,则使用服务器的默认值。"
msgid ""
"Sets desired text direction. If set to [constant DIRECTION_AUTO], direction "
@@ -127298,7 +127600,7 @@ msgid ""
"FEATURE_VERTICAL_LAYOUT] feature (supported by [TextServerAdvanced])."
msgstr ""
"设置所需的文本排版方向。\n"
-"[b]注意:[/b]如果服务不支持 [constant FEATURE_VERTICAL_LAYOUT] 功能(由 "
+"[b]注意:[/b]如果服务器不支持 [constant FEATURE_VERTICAL_LAYOUT] 功能(由 "
"[TextServerAdvanced] 支持),则排版方向将被忽略。"
msgid "If set to [code]true[/code] text buffer will display control characters."
@@ -127417,10 +127719,6 @@ msgstr ""
"从字符串中剥离变音符号。\n"
"[b]注意:[/b]得到的字符串可能比原来的更长,也可能更短。"
-msgid ""
-"Converts OpenType tag to readable feature, variation, script or language name."
-msgstr "将 OpenType 标签转换为可读的特性、变体、文字或语言的名称。"
-
msgid "Font glyphs are rasterized as 1-bit bitmaps."
msgstr "字体字形栅格化为 1 位的位图。"
@@ -127689,6 +127987,9 @@ msgstr "在这个字素之前插入 U+0640 以进行伸长是安全的。"
msgid "Grapheme is an object replacement character for the embedded object."
msgstr "字素是内嵌对象的对象替换字符。"
+msgid "Grapheme is a soft hyphen."
+msgstr "字素是一个软连字符。"
+
msgid "Disables font hinting (smoother but less crisp)."
msgstr "禁用字体提示(更平滑但不那么清晰)。"
@@ -128541,6 +128842,42 @@ msgstr ""
"能。"
msgid ""
+"Offsets [member texture_progress] if [member fill_mode] is [constant "
+"FILL_CLOCKWISE], [constant FILL_COUNTER_CLOCKWISE], or [constant "
+"FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE]."
+msgstr ""
+"如果 [member fill_mode] 为 [constant FILL_CLOCKWISE]、[constant "
+"FILL_COUNTER_CLOCKWISE] 或 [constant FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE],则"
+"对 [member texture_progress] 进行偏移。"
+
+msgid ""
+"Upper limit for the fill of [member texture_progress] if [member fill_mode] "
+"is [constant FILL_CLOCKWISE], [constant FILL_COUNTER_CLOCKWISE], or [constant "
+"FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE]. When the node's [code]value[/code] is "
+"equal to its [code]max_value[/code], the texture fills up to this angle.\n"
+"See [member Range.value], [member Range.max_value]."
+msgstr ""
+"[member fill_mode] 为 [constant FILL_CLOCKWISE]、[constant "
+"FILL_COUNTER_CLOCKWISE] 或 [constant FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE] "
+"时, [member texture_progress] 的填充上限。当节点的 [code]value[/code] 等于其 "
+"[code]max_value[/code] 时,则纹理将会填充到这个角度。\n"
+"见 [member Range.value]、[member Range.max_value]。"
+
+msgid ""
+"Starting angle for the fill of [member texture_progress] if [member "
+"fill_mode] is [constant FILL_CLOCKWISE], [constant FILL_COUNTER_CLOCKWISE], "
+"or [constant FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE]. When the node's "
+"[code]value[/code] is equal to its [code]min_value[/code], the texture "
+"doesn't show up at all. When the [code]value[/code] increases, the texture "
+"fills and tends towards [member radial_fill_degrees]."
+msgstr ""
+"[member fill_mode] 为 [constant FILL_CLOCKWISE]、[constant "
+"FILL_COUNTER_CLOCKWISE] 或 [constant FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE] "
+"时,[member texture_progress] 填充的起始角度。当节点的 [code]value[/code] 等于"
+"其 [code]min_value[/code] 时,纹理根本不会显示出来。当 [code]value[/code] 增加"
+"时,纹理填充并趋向于 [member radial_fill_degrees]。"
+
+msgid ""
"The height of the 9-patch's bottom row. A margin of 16 means the 9-slice's "
"bottom corners and side will have a height of 16 pixels. You can set all 4 "
"margin values individually to create panels with non-uniform borders. Only "
@@ -128691,6 +129028,12 @@ msgstr ""
"导致某些容器的行为不稳定。后续版本中可能会重新评估该行为并进行修改。"
msgid ""
+"Defines how minimum size is determined based on the texture's size. See [enum "
+"ExpandMode] for options."
+msgstr ""
+"定义如何根据纹理的大小确定最小大小。有关选项,请参阅 [enum ExpandMode]。"
+
+msgid ""
"Controls the texture's behavior when resizing the node's bounding rectangle. "
"See [enum StretchMode]."
msgstr "控件纹理在调整节点边界矩形时的行为。见 [enum StretchMode]。"
@@ -129701,10 +130044,6 @@ msgstr ""
"变换。"
msgid ""
-"Returns the tile's terrain bit for the given [param peering_bit] direction."
-msgstr "返回该图块给定 [param peering_bit] 方向的地形位。"
-
-msgid ""
"Returns whether one-way collisions are enabled for the polygon at index "
"[param polygon_index] for TileSet physics layer with index [param layer_id]."
msgstr ""
@@ -129770,9 +130109,6 @@ msgid ""
"Sets the occluder for the TileSet occlusion layer with index [param layer_id]."
msgstr "设置索引为 [param layer_id] 的 TileSet 遮挡层的遮挡器。"
-msgid "Sets the tile's terrain bit for the given [param peering_bit] direction."
-msgstr "设置该图块给定 [param peering_bit] 方向的地形位。"
-
msgid ""
"If [code]true[/code], the tile will have its texture flipped horizontally."
msgstr "如果为 [code]true[/code],则该图块的纹理会被水平翻转。"
@@ -129821,6 +130157,24 @@ msgstr "任何属性发生变化时发出。"
msgid "Node for 2D tile-based maps."
msgstr "基于 2D 图块的地图节点。"
+msgid ""
+"Node for 2D tile-based maps. Tilemaps use a [TileSet] which contain a list of "
+"tiles which are used to create grid-based maps. A TileMap may have several "
+"layers, layouting tiles on top of each other.\n"
+"For performance reasons, all TileMap updates are batched at the end of a "
+"frame. Notably, this means that scene tiles from a "
+"[TileSetScenesCollectionSource] may be initialized after their parent. This "
+"is only queued when inside the scene tree.\n"
+"To force an update earlier on, call [method update_internals]."
+msgstr ""
+"基于 2D 图块的地图节点。Tilemap(图块地图)使用 [TileSet],其中包含了图块的列"
+"表,用于创建基于栅格的地图。TileMap 可以有若干图层,可以将图块布局在彼此之"
+"上。\n"
+"出于性能原因,所有 TileMap 更新都会在一帧结束时进行批处理。值得注意的是,这意"
+"味着 [TileSetScenesCollectionSource] 中的场景图块可能会在其父级之后初始化。仅"
+"当在场景树内时才会排队。\n"
+"要提前强制更新,请调用 [method update_internals]。"
+
msgid "Using Tilemaps"
msgstr "使用 Tilemap"
@@ -129893,76 +130247,14 @@ msgid "Clears cells that do not exist in the tileset."
msgstr "清除图块集中不存在的单元格。"
msgid ""
-"Returns the tile alternative ID of the cell on layer [param layer] at [param "
-"coords]. If [param use_proxies] is [code]false[/code], ignores the "
-"[TileSet]'s tile proxies, returning the raw alternative identifier. See "
-"[method TileSet.map_tile_proxy].\n"
-"If [param layer] is negative, the layers are accessed from the last one."
-msgstr ""
-"返回 [param layer] 层中位于坐标 [param coords] 单元格的图块备选 ID。如果 "
-"[param use_proxies] 为 [code]false[/code],则会忽略该 [TileSet] 的图块代理,返"
-"回原始的备选标识符。见 [method TileSet.map_tile_proxy]。\n"
-"如果 [param layer] 为负,则从最后一个图层开始访问。"
-
-msgid ""
-"Returns the tile atlas coordinates ID of the cell on layer [param layer] at "
-"coordinates [param coords]. If [param use_proxies] is [code]false[/code], "
-"ignores the [TileSet]'s tile proxies, returning the raw alternative "
-"identifier. See [method TileSet.map_tile_proxy].\n"
-"If [param layer] is negative, the layers are accessed from the last one."
-msgstr ""
-"返回 [param layer] 层中位于坐标 [param coords] 单元格的图块图集坐标 ID。如果 "
-"[param use_proxies] 为 [code]false[/code],则会忽略该 [TileSet] 的图块代理,返"
-"回原始的备选标识符。见 [method TileSet.map_tile_proxy]。\n"
-"如果 [param layer] 为负,则从最后一个图层开始访问。"
-
-msgid ""
-"Returns the tile source ID of the cell on layer [param layer] at coordinates "
-"[param coords]. Returns [code]-1[/code] if the cell does not exist.\n"
-"If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile "
-"proxies, returning the raw alternative identifier. See [method TileSet."
-"map_tile_proxy].\n"
-"If [param layer] is negative, the layers are accessed from the last one."
+"Use [method notify_runtime_tile_data_update] and/or [method update_internals] "
+"instead."
msgstr ""
-"返回 [param layer] 层中位于坐标 [param coords] 单元格的图块源 ID。如果该单元格"
-"不存在,则返回 [code]-1[/code]。\n"
-"如果 [param use_proxies] 为 [code]false[/code],则会忽略该 [TileSet] 的图块代"
-"理,返回原始的备选标识符。见 [method TileSet.map_tile_proxy]。\n"
-"如果 [param layer] 为负,则从最后一个图层开始访问。"
+"请改用 [method notify_runtime_tile_data_update] 和/或 [method "
+"update_internals]。"
-msgid ""
-"Returns the [TileData] object associated with the given cell, or [code]null[/"
-"code] if the cell does not exist or is not a [TileSetAtlasSource].\n"
-"If [param layer] is negative, the layers are accessed from the last one.\n"
-"If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile "
-"proxies, returning the raw alternative identifier. See [method TileSet."
-"map_tile_proxy].\n"
-"[codeblock]\n"
-"func get_clicked_tile_power():\n"
-" var clicked_cell = tile_map.local_to_map(tile_map."
-"get_local_mouse_position())\n"
-" var data = tile_map.get_cell_tile_data(0, clicked_cell)\n"
-" if data:\n"
-" return data.get_custom_data(\"power\")\n"
-" else:\n"
-" return 0\n"
-"[/codeblock]"
-msgstr ""
-"返回与给定单元格关联的 [TileData] 对象,如果单元格不存在或者不是 "
-"[TileSetAtlasSource] 则返回 [code]null[/code]。\n"
-"如果 [param layer] 为负,则从最后一个图层开始访问。\n"
-"如果 [param use_proxies] 为 [code]false[/code],则会忽略 [TileSet] 的图块代"
-"理,返回原始的备选标识符。见 [method TileSet.map_tile_proxy]。\n"
-"[codeblock]\n"
-"func get_clicked_tile_power():\n"
-" var clicked_cell = tile_map.local_to_map(tile_map."
-"get_local_mouse_position())\n"
-" var data = tile_map.get_cell_tile_data(0, clicked_cell)\n"
-" if data:\n"
-" return data.get_custom_data(\"power\")\n"
-" else:\n"
-" return 0\n"
-"[/codeblock]"
+msgid "Forces the TileMap and the layer [param layer] to update."
+msgstr "强制更新 TileMap 和图层 [param layer]。"
msgid ""
"Returns the coordinates of the tile for given physics body RID. Such RID can "
@@ -129995,6 +130287,26 @@ msgstr ""
"如果 [param layer] 为负,则从最后一个图层开始访问。"
msgid ""
+"Returns the [RID] of the [NavigationServer2D] navigation map assigned to the "
+"specified TileMap layer [param layer].\n"
+"By default the TileMap uses the default [World2D] navigation map for the "
+"first TileMap layer. For each additional TileMap layer a new navigation map "
+"is created for the additional layer.\n"
+"In order to make [NavigationAgent2D] switch between TileMap layer navigation "
+"maps use [method NavigationAgent2D.set_navigation_map] with the navigation "
+"map received from [method get_layer_navigation_map].\n"
+"If [param layer] is negative, the layers are accessed from the last one."
+msgstr ""
+"返回分配给指定 TileMap 图层 [param layer] 的 [NavigationServer2D] 导航地图的 "
+"[RID]。\n"
+"默认情况下,TileMap 为第一个 TileMap 层,使用默认的 [World2D] 导航地图。对于每"
+"个附加的 TileMap 层,都会为附加层创建一个新的导航地图。\n"
+"为了使 [NavigationAgent2D] 在 TileMap 层导航地图之间切换,使用 [method "
+"NavigationAgent2D.set_navigation_map] 和从 [method get_navigation_map] 接收的"
+"导航地图。\n"
+"如果 [param layer] 为负,则从最后一个图层开始访问。"
+
+msgid ""
"Returns a TileMap layer's Y sort origin.\n"
"If [param layer] is negative, the layers are accessed from the last one."
msgstr ""
@@ -130011,6 +130323,16 @@ msgstr ""
msgid "Returns the number of layers in the TileMap."
msgstr "返回 TileMap 图层的数量。"
+msgid "Use [method get_layer_navigation_map] instead."
+msgstr "请改用 [method get_layer_navigation_map]。"
+
+msgid ""
+"Returns the [RID] of the [NavigationServer2D] navigation map assigned to the "
+"specified TileMap layer [param layer]."
+msgstr ""
+"返回分配给指定 TileMap 图层 [param layer] 的 [NavigationServer2D] 导航地图的 "
+"[RID]。"
+
msgid ""
"Returns the neighboring cell to the one at coordinates [param coords], "
"identified by the [param neighbor] direction. This method takes into account "
@@ -130233,6 +130555,15 @@ msgstr ""
"形组合的地形。否则,可能会产生意想不到的结果。"
msgid ""
+"Enables or disables the layer [param layer]. A disabled layer is not "
+"processed at all (no rendering, no physics, etc.).\n"
+"If [param layer] is negative, the layers are accessed from the last one."
+msgstr ""
+"启用或禁用图层 [param layer]。被禁用的图层根本不会被处理(没有渲染、物理"
+"等)。\n"
+"如果 [param layer] 为负数,则从最后一个图层开始访问。"
+
+msgid ""
"Sets a layer's color. It will be multiplied by tile's color and TileMap's "
"modulate.\n"
"If [param layer] is negative, the layers are accessed from the last one."
@@ -130256,6 +130587,26 @@ msgstr ""
"据 TileMap 烘焙导航区块,请禁用此项。"
msgid ""
+"Assigns [param map] as a [NavigationServer2D] navigation map for the "
+"specified TileMap layer [param layer].\n"
+"By default the TileMap uses the default [World2D] navigation map for the "
+"first TileMap layer. For each additional TileMap layer a new navigation map "
+"is created for the additional layer.\n"
+"In order to make [NavigationAgent2D] switch between TileMap layer navigation "
+"maps use [method NavigationAgent2D.set_navigation_map] with the navigation "
+"map received from [method get_layer_navigation_map].\n"
+"If [param layer] is negative, the layers are accessed from the last one."
+msgstr ""
+"将 [param map] 分配给指定 TileMap 图层 [param layer] 的 [NavigationServer2D] "
+"导航地图。\n"
+"默认情况下,TileMap 为第一个 TileMap 层使用默认的 [World2D] 导航地图。对于每个"
+"附加的 TileMap 层,都会为附加层创建一个新的导航地图。\n"
+"为了使 [NavigationAgent2D] 在 TileMap 层导航地图之间切换,使用 [method "
+"NavigationAgent2D.set_navigation_map] 和从 [method get_navigation_map] 接收的"
+"导航地图。\n"
+"如果 [param layer] 为负,则从最后一个图层开始访问。"
+
+msgid ""
"Enables or disables a layer's Y-sorting. If a layer is Y-sorted, the layer "
"will behave as a CanvasItem node where each of its tile gets Y-sorted.\n"
"Y-sorted layers should usually be on different Z-index values than not Y-"
@@ -130288,6 +130639,16 @@ msgstr ""
"设置图层的 Z 索引值。各个图块的 Z 索引值都会加上这个 Z 索引。\n"
"如果 [param layer] 为负,则逆序访问图层。"
+msgid "Use [method set_layer_navigation_map] instead."
+msgstr "请改用 [method set_layer_navigation_map]。"
+
+msgid ""
+"Assigns [param map] as a [NavigationServer2D] navigation map for the "
+"specified TileMap layer [param layer]."
+msgstr ""
+"将 [param map] 分配为指定 TileMap 层 [param layer] 的 [NavigationServer2D] 导"
+"航地图。"
+
msgid ""
"Paste the given [TileMapPattern] at the given [param position] and [param "
"layer] in the tile map.\n"
@@ -131074,7 +131435,7 @@ msgid ""
"margins], and the tiles' [member texture_region_size]."
msgstr ""
"返回图集栅格大小,这取决于纹理中可以容纳多少个图块。因此,它取决于 [member "
-"texture] 的大小,该图集的 [member margins]、和该图块的 [member "
+"texture] 的大小,该图集的 [member margins] 和该图块的 [member "
"texture_region_size]。"
msgid ""
@@ -131120,6 +131481,13 @@ msgid ""
msgstr "返回位于坐标 [param atlas_coords] 的图块有多少动画帧。"
msgid ""
+"Returns the tile animation mode of the tile at [param atlas_coords]. See also "
+"[method set_tile_animation_mode]."
+msgstr ""
+"返回 [param atlas_coords] 处图块的图块动画模式。另见 [method "
+"set_tile_animation_mode]。"
+
+msgid ""
"Returns the separation (as in the atlas grid) between each frame of an "
"animated tile at coordinates [param atlas_coords]."
msgstr ""
@@ -131251,6 +131619,13 @@ msgid ""
msgstr "设置位于坐标 [param atlas_coords] 的图块有多少动画帧。"
msgid ""
+"Sets the tile animation mode of the tile at [param atlas_coords] to [param "
+"mode]. See also [method get_tile_animation_mode]."
+msgstr ""
+"将 [param atlas_coords] 处的图块的图块动画模式设置为 [param mode]。另见 "
+"[method get_tile_animation_mode]。"
+
+msgid ""
"Sets the margin (in grid tiles) between each tile in the animation layout of "
"the tile at coordinates [param atlas_coords] has."
msgstr ""
@@ -131300,27 +131675,6 @@ msgid "Represents the size of the [enum TileAnimationMode] enum."
msgstr "代表 [enum TileAnimationMode] 枚举的大小。"
msgid ""
-"Represents cell's horizontal flip flag. Should be used directly with "
-"[TileMap] to flip placed tiles by altering their alternative IDs.\n"
-"[codeblock]\n"
-"var alternate_id = $TileMap.get_cell_alternative_tile(0, Vector2i(2, 2))\n"
-"if not alternate_id & TileSetAtlasSource.TRANSFORM_FLIP_H:\n"
-" # If tile is not already flipped, flip it.\n"
-" $TileMap.set_cell(0, Vector2i(2, 2), source_id, atlas_coords, "
-"alternate_id | TileSetAtlasSource.TRANSFORM_FLIP_H)\n"
-"[/codeblock]"
-msgstr ""
-"代表单元格的水平翻转标志。应该直接对 [TileMap] 使用,修改放置图块的备选 ID,将"
-"其进行翻转。\n"
-"[codeblock]\n"
-"var alternate_id = $TileMap.get_cell_alternative_tile(0, Vector2i(2, 2))\n"
-"if not alternate_id & TileSetAtlasSource.TRANSFORM_FLIP_H:\n"
-" # 如果没有翻转过就进行翻转。\n"
-" $TileMap.set_cell(0, Vector2i(2, 2), source_id, atlas_coords, "
-"alternate_id | TileSetAtlasSource.TRANSFORM_FLIP_H)\n"
-"[/codeblock]"
-
-msgid ""
"Represents cell's vertical flip flag. See [constant TRANSFORM_FLIP_H] for "
"usage."
msgstr "代表单元格的垂直翻转标志。用法见 [constant TRANSFORM_FLIP_H]。"
@@ -131473,43 +131827,6 @@ msgid "A singleton for working with time data."
msgstr "用于处理时间数据的单例。"
msgid ""
-"The Time singleton allows converting time between various formats and also "
-"getting time information from the system.\n"
-"This class conforms with as many of the ISO 8601 standards as possible. All "
-"dates follow the Proleptic Gregorian calendar. As such, the day before "
-"[code]1582-10-15[/code] is [code]1582-10-14[/code], not [code]1582-10-04[/"
-"code]. The year before 1 AD (aka 1 BC) is number [code]0[/code], with the "
-"year before that (2 BC) being [code]-1[/code], etc.\n"
-"Conversion methods assume \"the same timezone\", and do not handle timezone "
-"conversions or DST automatically. Leap seconds are also not handled, they "
-"must be done manually if desired. Suffixes such as \"Z\" are not handled, you "
-"need to strip them away manually.\n"
-"When getting time information from the system, the time can either be in the "
-"local timezone or UTC depending on the [code]utc[/code] parameter. However, "
-"the [method get_unix_time_from_system] method always returns the time in "
-"UTC.\n"
-"[b]Important:[/b] The [code]_from_system[/code] methods use the system clock "
-"that the user can manually set. [b]Never use[/b] this method for precise time "
-"calculation since its results are subject to automatic adjustments by the "
-"user or the operating system. [b]Always use[/b] [method get_ticks_usec] or "
-"[method get_ticks_msec] for precise time calculation instead, since they are "
-"guaranteed to be monotonic (i.e. never decrease)."
-msgstr ""
-"Time 单例可以转换各种不同格式的时间,也可以从系统获取时间信息。\n"
-"这个类尽可能多地符合了 ISO 8601 标准。所有日期都遵循“外推格里历”。因此 "
-"[code]1582-10-15[/code] 的前一天是 [code]1582-10-14[/code],而不是 "
-"[code]1582-10-04[/code]。公元 1 年的前一年(即公元前 1 年)是数字 [code]0[/"
-"code],再往前的一年(公元前 2 年)是 [code]-1[/code],以此类推。\n"
-"转换方法假设“时区相同”,不会自动处理时区或 DST(夏令时)的转换。不会对闰秒进行"
-"处理,如果需要必须手动处理。“Z”等后缀也没有处理,你需要进行手动剥除。\n"
-"从系统获取时间信息时,时间可能是本地时间或 UTC 时间,取决于 [code]utc[/code] "
-"参数。不过 [method get_unix_time_from_system] 方法返回的始终是 UTC 时间。\n"
-"[b]重要:[/b][code]_from_system[/code] 系列方法使用的是系统始终,用户可以自行"
-"设置。[b]千万不要[/b]使用该方法进行精确的时间计算,因为计算结果可能受到用户或"
-"操作系统的自动调整的影响。精确时间的计算[b]请始终使用[/b] [method "
-"get_ticks_usec] 或 [method get_ticks_msec],可以保证单调性(即不会变小)。"
-
-msgid ""
"Returns the current date as a dictionary of keys: [code]year[/code], "
"[code]month[/code], [code]day[/code], and [code]weekday[/code].\n"
"The returned values are in the system's local time when [param utc] is "
@@ -131579,7 +131896,7 @@ msgid ""
msgstr ""
"将给定的 Unix 时间戳转换为字典,包含的键为:[code]year[/code]、[code]month[/"
"code]、[code]day[/code]、[code]weekday[/code]、[code]hour[/code]、"
-"[code]minute[/code]、和 [code]second[/code]。\n"
+"[code]minute[/code] 和 [code]second[/code]。\n"
"如果 Unix 时间戳是当前时间,则返回的字典值将与 [method "
"get_datetime_dict_from_system] 相同,夏令时除外,因为它无法根据纪元确定。"
@@ -131736,18 +132053,6 @@ msgstr ""
"时区与给定的日期时间字符串相同。\n"
"[b]注意:[/b]时间字符串中的小数会被静默忽略。"
-msgid ""
-"Returns the current Unix timestamp in seconds based on the system time in "
-"UTC. This method is implemented by the operating system and always returns "
-"the time in UTC.\n"
-"[b]Note:[/b] Unlike other methods that use integer timestamps, this method "
-"returns the timestamp as a [float] for sub-second precision."
-msgstr ""
-"返回当前的 Unix 时间戳,以秒为单位,基于 UTC 系统时间。本方法由操作系统实现,"
-"返回的时间总是 UTC 的。\n"
-"[b]注意:[/b]与其他使用整数时间戳的方法不同,这个方法返回的是 [float] 类型的时"
-"间戳,可以表示比秒更高的精度。"
-
msgid "The month of January, represented numerically as [code]01[/code]."
msgstr "一月份,使用数字 [code]01[/code] 表示。"
@@ -131809,6 +132114,42 @@ msgstr "星期六,使用数字 [code]6[/code] 表示。"
msgid "A countdown timer."
msgstr "倒数计时器。"
+msgid ""
+"The [Timer] node is a countdown timer and is the simplest way to handle time-"
+"based logic in the engine. When a timer reaches the end of its [member "
+"wait_time], it will emit the [signal timeout] signal.\n"
+"After a timer enters the tree, it can be manually started with [method "
+"start]. A timer node is also started automatically if [member autostart] is "
+"[code]true[/code].\n"
+"Without requiring much code, a timer node can be added and configured in the "
+"editor. The [signal timeout] signal it emits can also be connected through "
+"the Node dock in the editor:\n"
+"[codeblock]\n"
+"func _on_timer_timeout():\n"
+" print(\"Time to attack!\")\n"
+"[/codeblock]\n"
+"[b]Note:[/b] To create a one-shot timer without instantiating a node, use "
+"[method SceneTree.create_timer].\n"
+"[b]Note:[/b] Timers are affected by [member Engine.time_scale]. The higher "
+"the time scale, the sooner timers will end. How often a timer processes may "
+"depend on the framerate or [member Engine.physics_ticks_per_second]."
+msgstr ""
+"[Timer] 即计时器节点,是一种倒计时器,也是引擎中最简单的处理基于时间的逻辑的方"
+"法。计时器在等待 [member wait_time] 结束后就会发出 [signal timeout] 信号。\n"
+"计时器进入场景树时,可以使用 [method start] 手动启动。如果 [member autostart] "
+"为 [code]true[/code],计时器节点也会自动启动。\n"
+"可以在编辑器中添加并配置计时器节点,无需编写特别多的代码。计时器发出的 "
+"[signal timeout] 信号可以在编辑器的“节点”面板中连接:\n"
+"[codeblock]\n"
+"func _on_timer_timeout():\n"
+" print(\"是时候表演真正的技术了!\")\n"
+"[/codeblock]\n"
+"[b]注意:[/b]如果只想创建一次性的计时器,不想实例化节点,请使用 [method "
+"SceneTree.create_timer]。\n"
+"[b]注意:[/b]计时器会受到 [member Engine.time_scale] 的影响。时间缩放值越大,"
+"计时器结束得越早。计时器的处理频率取决于帧率或 [member Engine."
+"physics_ticks_per_second]。"
+
msgid "Returns [code]true[/code] if the timer is stopped or has not started."
msgstr "如果定时器处于停止状态或尚未启动,则返回 [code]true[/code]。"
@@ -132356,6 +132697,13 @@ msgstr ""
"行统一缩放。"
msgid ""
+"This operator divides all components of the [Transform2D], including the "
+"[member origin] vector, which inversely scales it uniformly."
+msgstr ""
+"该运算符除以 [Transform2D] 的所有分量,包括 [member origin] 向量,这会对其进行"
+"均匀反向缩放。"
+
+msgid ""
"Returns [code]true[/code] if the transforms are exactly equal.\n"
"[b]Note:[/b] Due to floating-point precision errors, consider using [method "
"is_equal_approx] instead, which is more reliable."
@@ -132376,8 +132724,277 @@ msgstr ""
msgid "A 3×4 matrix representing a 3D transformation."
msgstr "代表 3D 变换的 3×4 矩阵。"
+msgid ""
+"The [Transform3D] built-in [Variant] type is a 3×4 matrix representing a "
+"transformation in 3D space. It contains a [Basis], which on its own can "
+"represent rotation, scale, and shear. Additionally, combined with its own "
+"[member origin], the transform can also represent a translation.\n"
+"For a general introduction, see the [url=$DOCS_URL/tutorials/math/"
+"matrices_and_transforms.html]Matrices and transforms[/url] tutorial.\n"
+"[b]Note:[/b] Godot uses a [url=https://en.wikipedia.org/wiki/Right-"
+"hand_rule]right-handed coordinate system[/url], which is a common standard. "
+"For directions, the convention for built-in types like [Camera3D] is for -Z "
+"to point forward (+X is right, +Y is up, and +Z is back). Other objects may "
+"use different direction conventions. For more information, see the "
+"[url=$DOCS_URL/tutorials/assets_pipeline/importing_scenes.html#d-asset-"
+"direction-conventions]Importing 3D Scenes[/url] tutorial."
+msgstr ""
+"[Transform3D] 即 3D 变换,是一种内置的 [Variant] 类型,这种 3×4 矩阵代表的是 "
+"3D 空间中的变换。变换中包含了一个 [Basis],表示的是旋转、缩放、切变。另外变换"
+"自身还提供了 [member origin],这样就能够表示平移。\n"
+"通用的介绍见教程[url=$DOCS_URL/tutorials/math/matrices_and_transforms.html]"
+"《矩阵和变换》[/url]。\n"
+"[b]注意:[/b]Godot 使用[url=https://zh.wikipedia.org/zh-cn/"
+"%E5%8F%B3%E6%89%8B%E5%AE%9A%E5%89%87]右手坐标系[/url],这是一种普遍标准。方向"
+"方面,[Camera3D] 等内置类型的约定是 -Z 指向前方(+X 为右、+Y 为上、+Z 为后)。"
+"其他对象可能使用不同的方向约定。更多信息见教程[url=$DOCS_URL/tutorials/"
+"assets_pipeline/importing_scenes.html#d-asset-direction-conventions]《导入 3D "
+"场景》[/url]。"
+
+msgid "Constructs a [Transform3D] identical to the [constant IDENTITY]."
+msgstr "构造与 [constant IDENTITY] 相同的 [Transform3D]。"
+
msgid "Constructs a [Transform3D] as a copy of the given [Transform3D]."
-msgstr "构造给定 [Transform3D] 的副本。"
+msgstr "构造给定 [Transform3D] 的副本 [Transform3D]。"
+
+msgid "Constructs a [Transform3D] from a [Basis] and [Vector3]."
+msgstr "根据 [Basis] 和 [Vector3] 构造 [Transform3D]。"
+
+msgid ""
+"Constructs a [Transform3D] from a [Projection]. Because [Transform3D] is a "
+"3×4 matrix and [Projection] is a 4×4 matrix, this operation trims the last "
+"row of the projection matrix ([code]from.x.w[/code], [code]from.y.w[/code], "
+"[code]from.z.w[/code], and [code]from.w.w[/code] are not included in the new "
+"transform)."
+msgstr ""
+"根据 [Projection] 构造 [Transform3D]。因为 [Transform3D] 是 3×4 的矩阵,而 "
+"[Projection] 是 4×4 的矩阵,所以这个操作会削去投影矩阵的最后一行(新的变换中不"
+"包含 [code]from.x.w[/code]、[code]from.y.w[/code]、[code]from.z.w[/code]、"
+"[code]from.w.w[/code])。"
+
+msgid ""
+"Constructs a [Transform3D] from four [Vector3] values (also called matrix "
+"columns).\n"
+"The first three arguments are the [member basis]'s axes ([member Basis.x], "
+"[member Basis.y], and [member Basis.z])."
+msgstr ""
+"根据四个 [Vector3] 值(也叫矩阵列)构造 [Transform3D]。\n"
+"前三个参数是 [member basis] 的三个轴([member Basis.x]、[member Basis.y]、"
+"[member Basis.z])。"
+
+msgid ""
+"Returns the inverted version of this transform. See also [method Basis."
+"inverse].\n"
+"[b]Note:[/b] For this method to return correctly, the transform's [member "
+"basis] needs to be [i]orthonormal[/i] (see [method Basis.orthonormalized]). "
+"That means, the basis should only represent a rotation. If it does not, use "
+"[method affine_inverse] instead."
+msgstr ""
+"返回该变换的逆版本。另见 [method Basis.inverse]。\n"
+"[b]注意:[/b]为了使该方法正确返回,该变换的 [member basis] 需要是[i]正交归一化"
+"的[/i](请参阅 [method Basis.orthonormalized])。这意味着,该基应该只代表旋"
+"转。如果没有,请改用 [method affine_inverse]。"
+
+msgid ""
+"Returns a copy of this transform rotated so that the forward axis (-Z) points "
+"towards the [param target] position.\n"
+"The up axis (+Y) points as close to the [param up] vector as possible while "
+"staying perpendicular to the forward axis. The resulting transform is "
+"orthonormalized. The existing rotation, scale, and skew information from the "
+"original transform is discarded. The [param target] and [param up] vectors "
+"cannot be zero, cannot be parallel to each other, and are defined in global/"
+"parent space.\n"
+"If [param use_model_front] is [code]true[/code], the +Z axis (asset front) is "
+"treated as forward (implies +X is left) and points toward the [param target] "
+"position. By default, the -Z axis (camera forward) is treated as forward "
+"(implies +X is right)."
+msgstr ""
+"返回该变换的旋转副本,以便向前轴(-Z)指向 [param target] 的位置。\n"
+"向上的轴(+Y)在保持与向前的轴垂直的前提下,尽可能接近 [param up] 向量。最终的"
+"变换是标准正交变换。变换中原有的旋转、缩放、偏斜信息会被丢弃。[param target] "
+"和 [param up] 向量不能为零,不能互相平行,使用全局/父级空间。\n"
+"如果 [param use_model_front] 为 [code]true[/code],则会将 +Z 轴(资产正面)作"
+"为向前的轴(此时 +X 为左),指向 [param target] 的位置。默认情况下会将 -Z 轴"
+"(相机前方)作为向前的轴(此时 +X 为右)。"
+
+msgid ""
+"Returns a copy of this transform with its [member basis] orthonormalized. An "
+"orthonormal basis is both [i]orthogonal[/i] (the axes are perpendicular to "
+"each other) and [i]normalized[/i] (the axes have a length of [code]1[/code]), "
+"which also means it can only represent rotation. See also [method Basis."
+"orthonormalized]."
+msgstr ""
+"返回该变换的副本,其 [member basis] 已正交归一化。正交归一化的基既是[i]正交的"
+"[/i](轴彼此垂直)又是[i]归一化的[/i](轴长度为 [code]1[/code]),这也意味着它"
+"只能代表旋转。另见 [method Basis.orthonormalized]。"
+
+msgid ""
+"Returns a copy of this transform rotated around the given [param axis] by the "
+"given [param angle] (in radians).\n"
+"The [param axis] must be a normalized vector.\n"
+"This method is an optimized version of multiplying the given transform "
+"[code]X[/code] with a corresponding rotation transform [code]R[/code] from "
+"the left, i.e., [code]R * X[/code].\n"
+"This can be seen as transforming with respect to the global/parent frame."
+msgstr ""
+"返回该变换围绕给定 [param axis] 旋转给定 [param angle](单位为弧度)的副本。\n"
+"[param axis] 必须为归一化的向量。\n"
+"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code] 从左侧相"
+"乘一致,即 [code]R * X[/code],但进行了优化。\n"
+"可以视作在全局/父级坐标系中的变换。"
+
+msgid ""
+"Returns a copy of this transform rotated around the given [param axis] by the "
+"given [param angle] (in radians).\n"
+"The [param axis] must be a normalized vector.\n"
+"This method is an optimized version of multiplying the given transform "
+"[code]X[/code] with a corresponding rotation transform [code]R[/code] from "
+"the right, i.e., [code]X * R[/code].\n"
+"This can be seen as transforming with respect to the local frame."
+msgstr ""
+"返回该变换围绕给定 [param axis] 旋转给定 [param angle](单位为弧度)的副本。\n"
+"[param axis] 必须为归一化的向量。\n"
+"这个方法的结果和让 [code]X[/code] 变换与相应的旋转变换 [code]R[/code] 从右侧相"
+"乘一致,即 [code]R * X[/code],但进行了优化。\n"
+"可以视作在局部坐标系中的变换。"
+
+msgid ""
+"Returns a copy of this transform scaled by the given [param scale] factor.\n"
+"This method is an optimized version of multiplying the given transform "
+"[code]X[/code] with a corresponding scaling transform [code]S[/code] from the "
+"left, i.e., [code]S * X[/code].\n"
+"This can be seen as transforming with respect to the global/parent frame."
+msgstr ""
+"返回该变换按给定的 [param scale] 系数缩放的副本。\n"
+"这个方法的结果和让 [code]X[/code] 变换与相应的缩放变换 [code]S[/code] 从左侧相"
+"乘一致,即 [code]S * X[/code],但进行了优化。\n"
+"可以视作在全局/父级坐标系中的变换。"
+
+msgid ""
+"Returns a copy of this transform scaled by the given [param scale] factor.\n"
+"This method is an optimized version of multiplying the given transform "
+"[code]X[/code] with a corresponding scaling transform [code]S[/code] from the "
+"right, i.e., [code]X * S[/code].\n"
+"This can be seen as transforming with respect to the local frame."
+msgstr ""
+"返回该变换按给定的 [param scale] 系数缩放的副本。\n"
+"这个方法的结果和让 [code]X[/code] 变换与相应的缩放变换 [code]S[/code] 从右侧相"
+"乘一致,即 [code]X * S[/code],但进行了优化。\n"
+"可以视作在局部坐标系中的变换。"
+
+msgid ""
+"Returns a copy of this transform translated by the given [param offset].\n"
+"This method is an optimized version of multiplying the given transform "
+"[code]X[/code] with a corresponding translation transform [code]T[/code] from "
+"the left, i.e., [code]T * X[/code].\n"
+"This can be seen as transforming with respect to the global/parent frame."
+msgstr ""
+"返回该变换平移了给定 [param offset] 的副本。\n"
+"这个方法的结果和让 [code]X[/code] 变换与相应的平移变换 [code]T[/code] 从左侧相"
+"乘一致,即 [code]T * X[/code],但进行了优化。\n"
+"可以视作在全局/父级坐标系中的变换。"
+
+msgid ""
+"Returns a copy of this transform translated by the given [param offset].\n"
+"This method is an optimized version of multiplying the given transform "
+"[code]X[/code] with a corresponding translation transform [code]T[/code] from "
+"the right, i.e., [code]X * T[/code].\n"
+"This can be seen as transforming with respect to the local frame."
+msgstr ""
+"返回该变化平移了给定 [param offset] 的副本。\n"
+"这个方法的结果和让 [code]X[/code] 变换与相应的平移变换 [code]T[/code] 从右侧相"
+"乘一致,即 [code]X * T[/code],但进行了优化。\n"
+"可以视作在局部坐标系中的变换。"
+
+msgid ""
+"The translation offset of this transform. In 3D space, this can be seen as "
+"the position."
+msgstr "该变换的平移偏移量。在 3D 空间中,这可以被看作是位置。"
+
+msgid ""
+"A transform with no translation, no rotation, and its scale being [code]1[/"
+"code]. Its [member basis] is equal to [constant Basis.IDENTITY].\n"
+"When multiplied by another [Variant] such as [AABB] or another [Transform3D], "
+"no transformation occurs."
+msgstr ""
+"不含平移、旋转、缩放为 [code]1[/code] 的变换。[member basis] 等于 [constant "
+"Basis.IDENTITY]。\n"
+"与 [AABB]、[Transform3D] 等其他 [Variant] 相乘时,不会进行任何变换。"
+
+msgid ""
+"[Transform3D] with mirroring applied perpendicular to the YZ plane. Its "
+"[member basis] is equal to [constant Basis.FLIP_X]."
+msgstr ""
+"应用了垂直于 YZ 平面镜像操作的 [Transform3D]。其 [member basis] 相当于 "
+"[constant Basis.FLIP_X]。"
+
+msgid ""
+"[Transform3D] with mirroring applied perpendicular to the XZ plane. Its "
+"[member basis] is equal to [constant Basis.FLIP_Y]."
+msgstr ""
+"应用了垂直于 XZ 平面镜像操作的 [Transform3D]。其 [member basis] 相当于 "
+"[constant Basis.FLIP_Y]。"
+
+msgid ""
+"[Transform3D] with mirroring applied perpendicular to the XY plane. Its "
+"[member basis] is equal to [constant Basis.FLIP_Z]."
+msgstr ""
+"应用了垂直于 XY 平面镜像操作的 [Transform3D]。其 [member basis] 相当于 "
+"[constant Basis.FLIP_Z]。"
+
+msgid ""
+"Returns [code]true[/code] if the components of both transforms are not "
+"equal.\n"
+"[b]Note:[/b] Due to floating-point precision errors, consider using [method "
+"is_equal_approx] instead, which is more reliable."
+msgstr ""
+"如果两个变换的分量不相等,则返回 [code]true[/code]。\n"
+"[b]注意:[/b]由于浮点精度误差,请考虑改用 [method is_equal_approx],这样更可"
+"靠。"
+
+msgid "Transforms (multiplies) the [AABB] by this transformation matrix."
+msgstr "使用该变换矩阵对 [AABB] 进行变换(相乘)。"
+
+msgid ""
+"Transforms (multiplies) every [Vector3] element of the given "
+"[PackedVector3Array] by this transformation matrix.\n"
+"On larger arrays, this operation is much faster than transforming each "
+"[Vector3] individually."
+msgstr ""
+"由该变换矩阵变换(乘以)给定 [PackedVector3Array] 的每个 [Vector3] 元素。\n"
+"在较大的数组上,该操作比单独变换每个 [Vector3] 要快得多。"
+
+msgid "Transforms (multiplies) the [Plane] by this transformation matrix."
+msgstr "使用该变换矩阵对 [Plane] 进行变换(相乘)。"
+
+msgid ""
+"Transforms (multiplies) this transform by the [param right] transform.\n"
+"This is the operation performed between parent and child [Node3D]s.\n"
+"[b]Note:[/b] If you need to only modify one attribute of this transform, "
+"consider using one of the following methods, instead:\n"
+"- For translation, see [method translated] or [method translated_local].\n"
+"- For rotation, see [method rotated] or [method rotated_local].\n"
+"- For scale, see [method scaled] or [method scaled_local]."
+msgstr ""
+"由 [param right] 变换来变换(乘以)该变换。\n"
+"这是父级和子级 [Node3D] 之间执行的操作。\n"
+"[b]注意:[/b]如果你只需要修改该变换的一个属性,请考虑改用以下方法之一:\n"
+"- 对于平移,请参阅 [method translated] 或 [method translated_local]。\n"
+"- 对于旋转,请参阅 [method rotated] 或 [method rotated_local]。\n"
+"- 对于缩放,请参阅 [method scaled] 或 [method scaled_local]。"
+
+msgid "Transforms (multiplies) the [Vector3] by this transformation matrix."
+msgstr "使用该变换矩阵对 [Vector3] 进行变换(相乘)。"
+
+msgid ""
+"Returns [code]true[/code] if the components of both transforms are exactly "
+"equal.\n"
+"[b]Note:[/b] Due to floating-point precision errors, consider using [method "
+"is_equal_approx] instead, which is more reliable."
+msgstr ""
+"如果两个变换的分量完全相等,则返回 [code]true[/code]。\n"
+"[b]注意:[/b]由于浮点精度误差,请考虑改用 [method is_equal_approx],这样更可"
+"靠。"
msgid ""
"A language translation that maps a collection of strings to their individual "
@@ -133165,6 +133782,13 @@ msgstr ""
"用于绘制可能的放置位置的 [Color] 颜色。有关放置位置的描述,参阅 [enum "
"DropModeFlags] 常量。"
+msgid ""
+"Text [Color] for a [constant TreeItem.CELL_MODE_CHECK] mode cell when it's "
+"non-editable (see [method TreeItem.set_editable])."
+msgstr ""
+"当不可编辑时,[constant TreeItem.CELL_MODE_CHECK] 模式单元格的文本 [Color](请"
+"参阅 [method TreeItem.set_editable])。"
+
msgid "[Color] of the guideline."
msgstr "参考线的 [Color] 颜色。"
@@ -133215,18 +133839,6 @@ msgstr ""
"项目单元格所允许的最大图标宽度。这是在图标默认大小的基础上的限制,在 [method "
"TreeItem.set_icon_max_width] 所设置的值之前生效。高度会根据图标的长宽比调整。"
-msgid "The inner bottom margin of an item."
-msgstr "项目的底部内边距。"
-
-msgid "The inner left margin of an item."
-msgstr "项目的左侧内边距。"
-
-msgid "The inner right margin of an item."
-msgstr "项目的右侧内边距。"
-
-msgid "The inner top margin of an item."
-msgstr "项目的顶部内边距。"
-
msgid ""
"The horizontal margin at the start of an item. This is used when folding is "
"enabled for the item."
@@ -133497,6 +134109,13 @@ msgstr ""
"如果在 [param column] 列中存在 ID 为 [param id] 的按钮,则返回其索引号,否则返"
"回 -1。"
+msgid ""
+"Returns the color of the button with ID [param id] in column [param column]. "
+"If the specified button does not exist, returns [constant Color.BLACK]."
+msgstr ""
+"返回列 [param column] 中 ID 为 [param id] 的按钮的颜色。如果指定的按钮不存在,"
+"则返回 [constant Color.BLACK]。"
+
msgid "Returns the number of buttons in column [param column]."
msgstr "返回在 [param column] 列中按钮的数量。"
@@ -133535,6 +134154,9 @@ msgstr "返回列 [param column] 的自定义背景色。"
msgid "Returns the custom color of column [param column]."
msgstr "返回列 [param column] 的自定义颜色。"
+msgid "Returns the custom callback of column [param column]."
+msgstr "返回列 [param column] 的自定义回调。"
+
msgid "Returns custom font used to draw text in the column [param column]."
msgstr "返回用于在 [param column] 列绘制文本的自定义字体。"
@@ -133802,6 +134424,30 @@ msgstr "设置给定列的自定义背景颜色,以及是否只将其作为一
msgid "Sets the given column's custom color."
msgstr "设置给定列的自定义颜色。"
+msgid "Use [method TreeItem.set_custom_draw_callback] instead."
+msgstr "请改用 [method TreeItem.set_custom_draw_callback]。"
+
+msgid ""
+"Sets the given column's custom draw callback to the [param callback] method "
+"on [param object].\n"
+"The method named [param callback] should accept two arguments: the [TreeItem] "
+"that is drawn and its position and size as a [Rect2]."
+msgstr ""
+"将给定列的自定义绘制回调设置为 [param object] 上的 [param callback] 方法。\n"
+"名为 [param callback] 的方法应接受两个参数:被绘制的 [TreeItem] 及其作为一个 "
+"[Rect2] 的位置和大小。"
+
+msgid ""
+"Sets the given column's custom draw callback. Use an empty [Callable] ([code "
+"skip-lint]Callable()[/code]) to clear the custom callback.\n"
+"The [param callback] should accept two arguments: the [TreeItem] that is "
+"drawn and its position and size as a [Rect2]."
+msgstr ""
+"设置给定列的自定义绘制回调。使用空的 [Callable]([code skip-lint]Callable()[/"
+"code])清除自定义回调。\n"
+"名为 [param callback] 的方法应接受两个参数:被绘制的 [TreeItem] 及其作为一个 "
+"[Rect2] 的位置和大小。"
+
msgid "Sets custom font used to draw text in the given [param column]."
msgstr "设置用于在给定列 [param column] 中绘制文本的自定义字体。"
@@ -133909,6 +134555,11 @@ msgstr "设置当文本超出给定 [param column] 中项目的边界矩形时
msgid "Sets the given column's tooltip text."
msgstr "设置给定列的工具提示文本。"
+msgid ""
+"Uncollapses all [TreeItem]s necessary to reveal this [TreeItem], i.e. all "
+"ancestor [TreeItem]s."
+msgstr "展开显示该 [TreeItem] 所需的所有 [TreeItem],即所有祖先 [TreeItem]。"
+
msgid "If [code]true[/code], the TreeItem is collapsed."
msgstr "如果为 [code]true[/code],则该 TreeItem 被折叠。"
@@ -134171,8 +134822,8 @@ msgstr ""
"[Tween]。手动创建的 [Tween](即使用 [code]Tween.new()[/code])无效,不能用于对"
"值进行补间。\n"
"通过使用 [method tween_property]、[method tween_interval]、[method "
-"tween_callback]、或 [method tween_method],可将 [Tweener] 添加到 [Tween] 对象"
-"来创建一个补间动画:\n"
+"tween_callback] 或 [method tween_method],可将 [Tweener] 添加到 [Tween] 对象来"
+"创建一个补间动画:\n"
"[codeblocks]\n"
"[gdscript]\n"
"var tween = get_tree().create_tween()\n"
@@ -134268,9 +134919,9 @@ msgstr ""
"一些 [Tweener] 会使用过渡和缓动。第一个接受一个 [enum TransitionType] 常量,指"
"的是处理动画时间的方式(相关示例见 [url=https://easings.net/]easings.net[/"
"url])。第二个接受一个 [enum EaseType] 常量,并控制 [code]trans_type[/code] 应"
-"用于插值的位置(在开头、结尾、或两者)。如果不知道该选择哪种过渡和缓动,可以尝"
-"试使用 [constant EASE_IN_OUT] 并配合不同 [enum TransitionType] 常量,并使用看"
-"起来最好的那个。\n"
+"用于插值的位置(在开头、结尾或两者均有)。如果不知道该选择哪种过渡和缓动,可以"
+"尝试使用 [constant EASE_IN_OUT] 并配合不同 [enum TransitionType] 常量,并使用"
+"看起来最好的那个。\n"
"[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/"
"tween_cheatsheet.webp]补间缓动与过渡类型速查表[/url]\n"
"[b]注意:[/b]Tween 并不是针对重用设计的,尝试重用会造成未定义行为。每次从头开"
@@ -134494,14 +135145,37 @@ msgid ""
msgstr ""
"这只该补间序列的重复次数,即 [code]set_loops(2)[/code] 会让动画执行两次。\n"
"调用这个方法时如果不带参数,那么该 [Tween] 会无限执行,直到被 [method kill] 销"
-"毁、该 [Tween] 绑定的节点被释放、或者所有进行动画的对象都被释放(无法再进行任"
-"何动画)。\n"
+"毁、该 [Tween] 绑定的节点被释放或者所有进行动画的对象都被释放(无法再进行任何"
+"动画)。\n"
"[b]警告:[/b]使用无限循环时请一定要加入一些时长/延迟。为了防止游戏冻结,0 时长"
"的循环动画(例如单个不带延迟的 [CallbackTweener])会在循环若干次后停止,造成出"
"乎预料的结果。如果 [Tween] 的生命期依赖于某个节点,请一定使用 [method "
"bind_node]。"
msgid ""
+"If [param parallel] is [code]true[/code], the [Tweener]s appended after this "
+"method will by default run simultaneously, as opposed to sequentially.\n"
+"[b]Note:[/b] Just like with [method parallel], the tweener added right before "
+"this method will also be part of the parallel step.\n"
+"[codeblock]\n"
+"tween.tween_property(self, \"position\", Vector2(300, 0), 0.5)\n"
+"tween.set_parallel()\n"
+"tween.tween_property(self, \"modulate\", Color.GREEN, 0.5) # Runs together "
+"with the position tweener.\n"
+"[/codeblock]"
+msgstr ""
+"如果 [param parallel] 为 [code]true[/code],则后续追加的 [Tweener] 默认就是同"
+"时运行的,否则默认依次运行。\n"
+"[b]注意:[/b]与 [method parallel] 类似,在这个方法前添加的那一个补间器也是并行"
+"步骤的一部分。\n"
+"[codeblock]\n"
+"tween.tween_property(self, \"position\", Vector2(300, 0), 0.5)\n"
+"tween.set_parallel()\n"
+"tween.tween_property(self, \"modulate\", Color.GREEN, 0.5) # 与位置补间器一同"
+"运行。\n"
+"[/codeblock]"
+
+msgid ""
"Determines the behavior of the [Tween] when the [SceneTree] is paused. Check "
"[enum TweenPauseMode] for options.\n"
"Default value is [constant TWEEN_PAUSE_BOUND]."
@@ -135520,30 +136194,6 @@ msgid ""
"the action is committed."
msgstr "注册 [param property],会在提交动作时将其值更改为 [param value]。"
-msgid ""
-"Register a reference for \"do\" that will be erased if the \"do\" history is "
-"lost. This is useful mostly for new nodes created for the \"do\" call. Do not "
-"use for resources.\n"
-"[codeblock]\n"
-"var node = Node2D.new()\n"
-"undo_redo.create_action(\"Add node\")\n"
-"undo_redo.add_do_method(add_child.bind(node))\n"
-"undo_redo.add_do_reference(node)\n"
-"undo_redo.add_undo_method(remove_child.bind(node))\n"
-"undo_redo.commit_action()\n"
-"[/codeblock]"
-msgstr ""
-"为“do”(执行)注册引用,丢弃该“do”历史时会擦除该引用。主要可用于“do”调用新建的"
-"节点。请勿用于资源。\n"
-"[codeblock]\n"
-"var node = Node2D.new()\n"
-"undo_redo.create_action(\"添加节点\")\n"
-"undo_redo.add_do_method(add_child.bind(node))\n"
-"undo_redo.add_do_reference(node)\n"
-"undo_redo.add_undo_method(remove_child.bind(node))\n"
-"undo_redo.commit_action()\n"
-"[/codeblock]"
-
msgid "Register a [Callable] that will be called when the action is undone."
msgstr "注册 [Callable],会在撤销动作时调用。"
@@ -135553,30 +136203,6 @@ msgid ""
msgstr "注册 [param property],会在撤销动作时将其值更改为 [param value]。"
msgid ""
-"Register a reference for \"undo\" that will be erased if the \"undo\" history "
-"is lost. This is useful mostly for nodes removed with the \"do\" call (not "
-"the \"undo\" call!).\n"
-"[codeblock]\n"
-"var node = $Node2D\n"
-"undo_redo.create_action(\"Remove node\")\n"
-"undo_redo.add_do_method(remove_child.bind(node))\n"
-"undo_redo.add_undo_method(add_child.bind(node))\n"
-"undo_redo.add_undo_reference(node)\n"
-"undo_redo.commit_action()\n"
-"[/codeblock]"
-msgstr ""
-"为“undo”(撤销)注册引用,丢弃该“undo”历史时会擦除该引用。主要可用于“do”调用移"
-"除的节点(不是“undo”调用)。\n"
-"[codeblock]\n"
-"var node = $Node2D\n"
-"undo_redo.create_action(\"移除节点\")\n"
-"undo_redo.add_do_method(remove_child.bind(node))\n"
-"undo_redo.add_undo_method(add_child.bind(node))\n"
-"undo_redo.add_undo_reference(node)\n"
-"undo_redo.commit_action()\n"
-"[/codeblock]"
-
-msgid ""
"Clear the undo/redo history and associated references.\n"
"Passing [code]false[/code] to [param increase_version] will prevent the "
"version number from increasing when the history is cleared."
@@ -135668,22 +136294,39 @@ msgstr ""
msgid "Undo the last action."
msgstr "撤销上一个动作。"
+msgid ""
+"The maximum number of steps that can be stored in the undo/redo history. If "
+"the number of stored steps exceeds this limit, older steps are removed from "
+"history and can no longer be reached by calling [method undo]. A value of "
+"[code]0[/code] or lower means no limit."
+msgstr ""
+"撤销/重做历史中能够存储的最大步数。如果存储的步数超出了这个限制,就会将最早的"
+"步骤从历史中移除,无法再通过调用 [method undo] 到达。小于等于 [code]0[/code] "
+"表示没有限制。"
+
msgid "Called when [method undo] or [method redo] was called."
msgstr "当 [method undo] 或 [method redo] 被调用时调用。"
msgid "Makes \"do\"/\"undo\" operations stay in separate actions."
msgstr "使“do”/“undo”操作保持在单独的动作中。"
+msgid "Uniform set cache manager for Rendering Device based renderers."
+msgstr "基于渲染设备的渲染器的 uniform 集缓存管理器。"
+
msgid ""
-"Makes so that the action's \"undo\" operations are from the first action "
-"created and the \"do\" operations are from the last subsequent action with "
-"the same name."
+"Uniform set cache manager for Rendering Device based renderers. Provides a "
+"way to create a uniform set and reuse it in subsequent calls for as long as "
+"the uniform set exists. Uniform set will automatically be cleaned up when "
+"dependent objects are freed."
msgstr ""
-"使得动作的“撤消”操作来自创建的第一个动作,“执行”操作来自最后一个具有相同名称的"
-"后续动作。"
+"基于渲染设备的渲染器的 uniform 集缓存管理器。提供一种创建 uniform 集并在后续调"
+"用中重用它的方法(只要该 uniform 集存在)。当依赖的对象被释放时,该 uniform 集"
+"将自动被清理。"
-msgid "Makes subsequent actions with the same name be merged into one."
-msgstr "使具有相同名称的后续动作合并为一个。"
+msgid ""
+"Creates/returns a cached uniform set based on the provided uniforms for a "
+"given shader."
+msgstr "根据给定着色器提供的 uniform 创建/返回缓存的 uniform 集。"
msgid ""
"Universal Plug and Play (UPnP) functions for network device discovery, "
@@ -136189,216 +136832,6 @@ msgstr "内存分配错误。"
msgid "The most important data type in Godot."
msgstr "Godot 中最重要的数据类型。"
-msgid ""
-"In computer programming, a Variant class is a class that is designed to store "
-"a variety of other types. Dynamic programming languages like PHP, Lua, "
-"JavaScript and GDScript like to use them to store variables' data on the "
-"backend. With these Variants, properties are able to change value types "
-"freely.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var foo = 2 # foo is dynamically an integer\n"
-"foo = \"Now foo is a string!\"\n"
-"foo = RefCounted.new() # foo is an Object\n"
-"var bar: int = 2 # bar is a statically typed integer.\n"
-"# bar = \"Uh oh! I can't make static variables become a different type!\"\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// C# is statically typed. Once a variable has a type it cannot be changed. "
-"You can use the `var` keyword to let the compiler infer the type "
-"automatically.\n"
-"var foo = 2; // Foo is a 32-bit integer (int). Be cautious, integers in "
-"GDScript are 64-bit and the direct C# equivalent is `long`.\n"
-"// foo = \"foo was and will always be an integer. It cannot be turned into a "
-"string!\";\n"
-"var boo = \"Boo is a string!\";\n"
-"var ref = new RefCounted(); // var is especially useful when used together "
-"with a constructor.\n"
-"\n"
-"// Godot also provides a Variant type that works like a union of all the "
-"Variant-compatible types.\n"
-"Variant fooVar = 2; // fooVar is dynamically an integer (stored as a `long` "
-"in the Variant type).\n"
-"fooVar = \"Now fooVar is a string!\";\n"
-"fooVar = new RefCounted(); // fooVar is a GodotObject.\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"Godot tracks all scripting API variables within Variants. Without even "
-"realizing it, you use Variants all the time. When a particular language "
-"enforces its own rules for keeping data typed, then that language is applying "
-"its own custom logic over the base Variant scripting API.\n"
-"- GDScript automatically wrap values in them. It keeps all data in plain "
-"Variants by default and then optionally enforces custom static typing rules "
-"on variable types.\n"
-"- C# is statically typed, but uses its own implementation of the Variant type "
-"in place of Godot's [Variant] class when it needs to represent a dynamic "
-"value. C# Variant can be assigned any compatible type implicitly but "
-"converting requires an explicit cast.\n"
-"The global [method @GlobalScope.typeof] function returns the enumerated value "
-"of the Variant type stored in the current variable (see [enum Variant."
-"Type]).\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var foo = 2\n"
-"match typeof(foo):\n"
-" TYPE_NIL:\n"
-" print(\"foo is null\")\n"
-" TYPE_INTEGER:\n"
-" print(\"foo is an integer\")\n"
-" TYPE_OBJECT:\n"
-" # Note that Objects are their own special category.\n"
-" # To get the name of the underlying Object type, you need the "
-"`get_class()` method.\n"
-" print(\"foo is a(n) %s\" % foo.get_class()) # inject the class name "
-"into a formatted string.\n"
-" # Note also that there is not yet any way to get a script's "
-"`class_name` string easily.\n"
-" # To fetch that value, you can use ProjectSettings."
-"get_global_class_list().\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"Variant foo = 2;\n"
-"switch (foo.VariantType)\n"
-"{\n"
-" case Variant.Type.Nil:\n"
-" GD.Print(\"foo is null\");\n"
-" break;\n"
-" case Variant.Type.Int:\n"
-" GD.Print(\"foo is an integer\");\n"
-" break;\n"
-" case Variant.Type.Object:\n"
-" // Note that Objects are their own special category.\n"
-" // You can convert a Variant to a GodotObject and use reflection to "
-"get its name.\n"
-" GD.Print($\"foo is a(n) {foo.AsGodotObject().GetType().Name}\");\n"
-" break;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"A Variant takes up only 20 bytes and can store almost any engine datatype "
-"inside of it. Variants are rarely used to hold information for long periods "
-"of time. Instead, they are used mainly for communication, editing, "
-"serialization and moving data around.\n"
-"Godot has specifically invested in making its Variant class as flexible as "
-"possible; so much so that it is used for a multitude of operations to "
-"facilitate communication between all of Godot's systems.\n"
-"A Variant:\n"
-"- Can store almost any datatype.\n"
-"- Can perform operations between many variants. GDScript uses Variant as its "
-"atomic/native datatype.\n"
-"- Can be hashed, so it can be compared quickly to other variants.\n"
-"- Can be used to convert safely between datatypes.\n"
-"- Can be used to abstract calling methods and their arguments. Godot exports "
-"all its functions through variants.\n"
-"- Can be used to defer calls or move data between threads.\n"
-"- Can be serialized as binary and stored to disk, or transferred via "
-"network.\n"
-"- Can be serialized to text and use it for printing values and editable "
-"settings.\n"
-"- Can work as an exported property, so the editor can edit it universally.\n"
-"- Can be used for dictionaries, arrays, parsers, etc.\n"
-"[b]Containers (Array and Dictionary):[/b] Both are implemented using "
-"variants. A [Dictionary] can match any datatype used as key to any other "
-"datatype. An [Array] just holds an array of Variants. Of course, a Variant "
-"can also hold a [Dictionary] and an [Array] inside, making it even more "
-"flexible.\n"
-"Modifications to a container will modify all references to it. A [Mutex] "
-"should be created to lock it if multi-threaded access is desired."
-msgstr ""
-"在计算机编程中,Variant(变体)类是用来存储各种其他类型的类。像 PHP、 Lua、 "
-"JavaScript 和 GDScript 这样的动态编程语言喜欢用它们在后端存储变量数据。使用 "
-"Variant,属性可以自由地更改值类型。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var foo = 2 # foo 是动态类型的整数\n"
-"foo = \"现在 foo 是字符串!\"\n"
-"foo = RefCounted.new() # foo 是 Object\n"
-"var bar: int = 2 # bar 是静态类型的整数。\n"
-"# bar = \"诶呀!我没法让静态类型的变量变成其他类型!\"\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// C# 是静态类型的。变量设置类型后无法改变。你可以用 `var` 关键字让编译器自动"
-"推断类型。\n"
-"var foo = 2; // foo 是 32 位整数(int)。请注意,GDScript 中的整数是 64 位的,"
-"在 C# 中与之等价的是 `long`。\n"
-"// foo = \"foo 过去、现在、将来都是整数,没法变成字符串!\";\n"
-"var boo = \"boo 是字符串!\";\n"
-"var ref = new RefCounted(); // var 非常适合与构造函数配合使用。\n"
-"\n"
-"// Godot 也提供了 Variant 类,类似于一个与所有 Variant 兼容类型的联合体。\n"
-"Variant fooVar = 2; // fooVar 是动态类型的整数(在 Variant 类型中存储为 "
-"`long`)。\n"
-"fooVar = \"现在 fooVar 是字符串!\";\n"
-"fooVar = new RefCounted(); // fooVar 是 GodotObject。\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"Godot 在 Variant 中跟踪所有脚本 API 变量。你一直在无意中使用 Variant。某种语言"
-"为保持数据类型而执行自己的规则时,那么就是该语言在基础 Variant 脚本 API 上应用"
-"了自定义的逻辑。\n"
-"- GDScript 会自动将数值进行包装。默认情况下会将所有数据保存在普通的 Variant "
-"中,也可以选择对变量类型执行自定义的静态类型规则。\n"
-"- C# 是静态类型的,但是当它需要表示动态值时,就会在需要 Godot 的 Variant 类的"
-"地方使用它自己实现的 [Variant] 类型。C# Variant 可以用任意兼容类型隐式赋值,但"
-"反之则需要显式类型转换。\n"
-"全局函数 [method @GlobalScope.typeof] 返回的是枚举类型的值,表示当前变量中所存"
-"储的 Variant 类型(见 [enum Variant.Type])。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var foo = 2\n"
-"match typeof(foo):\n"
-" TYPE_NIL:\n"
-" print(\"foo 为 null\")\n"
-" TYPE_INTEGER:\n"
-" print(\"foo 为整数\")\n"
-" TYPE_OBJECT:\n"
-" # 请注意,Object 有自己的特殊分类。\n"
-" # 要获取实际的 Object 类型名称,你需要使用 `get_class()` 方法。\n"
-" print(\"foo is a(n) %s\" % foo.get_class()) # 将类名注入格式字符串"
-"中。\n"
-" # 另外请注意,目前没有比较方便的方法来获取脚本的 `class_name` 字符"
-"串。\n"
-" # 如果要获取,你可以使用 ProjectSettings.get_global_class_list()。\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"Variant foo = 2;\n"
-"switch (foo.VariantType)\n"
-"{\n"
-" case Variant.Type.Nil:\n"
-" GD.Print(\"foo 为 null\");\n"
-" break;\n"
-" case Variant.Type.Int:\n"
-" GD.Print(\"foo 为整数\");\n"
-" break;\n"
-" case Variant.Type.Object:\n"
-" // 请注意,Object 有自己的特殊分类。\n"
-" // 可以将 Variant 转换为 GodotObject,通过反射获取名称。\n"
-" GD.Print($\"foo is a(n) {foo.AsGodotObject().GetType().Name}\");\n"
-" break;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"Variant 只占 20 个字节,可以在其中存储几乎所有的引擎数据类型。Variant 很少用于"
-"长期保存信息,主要还是用于通信、编辑、序列化和移动数据。\n"
-"Godot 特别致力于使其 Variant 类尽可能灵活;以使它可被用于各种操作,促进 Godot "
-"所有系统之间的联系。\n"
-"Variant:\n"
-"- 可以存储几乎任何数据类型。\n"
-"- 可以在许多 Variant 之间执行操作。GDScript 使用 Variant 作为其原子/原生数据类"
-"型。\n"
-"- 可以被哈希,所以可以快速与其他 Variant 进行比较。\n"
-"- 可以用于数据类型之间的安全转换。\n"
-"- 可以用来抽象调用方法和它们的参数。Godot 通过 Variant 导出所有函数。\n"
-"- 可以用来推迟调用或在线程之间移动数据。\n"
-"- 可以序列化为二进制并存储到磁盘,或通过网络传输。\n"
-"- 可以序列化为文本,用于打印数值和可编辑设置项。\n"
-"- 可以作为一个导出的属性工作,所以编辑器可以通用地进行编辑。\n"
-"- 可以用于字典、数组、解析器等。\n"
-"[b]容器(数组和字典):[/b]它们都是用 Variant 来实现的。[Dictionary] 可以将任"
-"何作为键的数据类型匹配到到任何其他数据类型。[Array] 就是持有 Variant 的数组。"
-"当然,Variant 也可以在里面再容纳 [Dictionary] 和 [Array],使其更加灵活。\n"
-"对容器的修改会修改所有对它的引用。如果需要多线程访问,应该创建 [Mutex] 来对它"
-"进行锁定。"
-
msgid "Variant class introduction"
msgstr "Variant 类简介"
@@ -136413,6 +136846,9 @@ msgstr ""
"[BoxContainer] 的变体,只会将子控件纵向排列。子控件的最小尺寸发生变化时会自动"
"进行重新排列。"
+msgid "A 2D vector using floating-point coordinates."
+msgstr "使用浮点数坐标的 2D 向量。"
+
msgid ""
"A 2-element structure that can be used to represent 2D coordinates or any "
"other pair of numeric values.\n"
@@ -136523,10 +136959,6 @@ msgstr ""
"control_1]、[param control_2]、终点 [param end] 定义。"
msgid ""
-"Returns a new vector \"bounced off\" from a plane defined by the given normal."
-msgstr "返回从平面上“反弹”的向量,该平面由给定的法线定义。"
-
-msgid ""
"Returns a new vector with all components rounded up (towards positive "
"infinity)."
msgstr "返回一个新向量,所有的分量都是向上舍入(正无穷大方向)。"
@@ -136540,22 +136972,6 @@ msgstr ""
"和 [param max] 之间。"
msgid ""
-"Returns the 2D analog of the cross product for this vector and [param with].\n"
-"This is the signed area of the parallelogram formed by the two vectors. If "
-"the second vector is clockwise from the first vector, then the cross product "
-"is the positive area. If counter-clockwise, the cross product is the negative "
-"area.\n"
-"[b]Note:[/b] Cross product is not defined in 2D mathematically. This method "
-"embeds the 2D vectors in the XY plane of 3D space and uses their cross "
-"product's Z component as the analog."
-msgstr ""
-"返回该向量和 [param with] 的 2D 类比叉积。\n"
-"这是由两个向量所形成的平行四边形的有符号面积。如果第二个向量是从第一个向量的顺"
-"时针方向出发的,则叉积为正面积。如果是逆时针方向,则叉积为负面积。\n"
-"[b]注意:[/b]数学中没有定义二维空间的叉乘。此方法是将 2D 向量嵌入到 3D 空间的 "
-"XY 平面中,并使用它们的叉积的 Z 分量作为类比。"
-
-msgid ""
"Performs a cubic interpolation between this vector and [param b] using [param "
"pre_a] and [param post_b] as handles, and returns the result at position "
"[param weight]. [param weight] is on the range of 0.0 to 1.0, representing "
@@ -136747,9 +137163,16 @@ msgstr ""
"算后组成的向量。"
msgid ""
-"Returns the result of reflecting the vector from a line defined by the given "
-"direction vector [param n]."
-msgstr "返回经过直线反射后的向量,该直线由给定的方向向量 [param n] 定义。"
+"Returns a new vector resulting from projecting this vector onto the given "
+"vector [param b]. The resulting new vector is parallel to [param b]. See also "
+"[method slide].\n"
+"[b]Note:[/b] If the vector [param b] is a zero vector, the components of the "
+"resulting new vector will be [constant @GDScript.NAN]."
+msgstr ""
+"返回将该向量投影到给定的 [param b] 向量上所得到的新向量。得到的新向量与 "
+"[param b] 平行。另见 [method slide]。\n"
+"[b]注意:[/b]如果 [param b] 向量为零向量,得到的新向量的分量均为 [constant "
+"@GDScript.NAN]。"
msgid ""
"Returns the result of rotating this vector by [param angle] (in radians). See "
@@ -136788,6 +137211,19 @@ msgstr ""
"为零的向量的特殊情况,这个方法的行为与 [method lerp] 一致。"
msgid ""
+"Returns a new vector resulting from sliding this vector along a line with "
+"normal [param n]. The resulting new vector is perpendicular to [param n], and "
+"is equivalent to this vector minus its projection on [param n]. See also "
+"[method project].\n"
+"[b]Note:[/b] The vector [param n] must be normalized. See also [method "
+"normalized]."
+msgstr ""
+"返回将该向量沿着法线为 [param n] 的直线滑动所得到的新向量。得到的新向量与 "
+"[param n] 垂直,等价于将该向量减去在 [param n] 上的投影。另见 [method "
+"project]。\n"
+"[b]注意:[/b]向量 [param n] 必须为归一化的向量。另见 [method normalized]。"
+
+msgid ""
"Returns a new vector with each component snapped to the nearest multiple of "
"the corresponding component in [param step]. This can also be used to round "
"the components to an arbitrary number of decimals."
@@ -137259,6 +137695,9 @@ msgstr ""
"返回该 [Vector2i] 的负值。和写 [code]Vector2i(-v.x, -v.y)[/code] 是一样的。该"
"操作在保持相同幅度的同时,翻转向量的方向。"
+msgid "A 3D vector using floating-point coordinates."
+msgstr "使用浮点数坐标的 3D 向量。"
+
msgid ""
"A 3-element structure that can be used to represent 3D coordinates or any "
"other triplet of numeric values.\n"
@@ -137298,13 +137737,6 @@ msgid "Returns the unsigned minimum angle to the given vector, in radians."
msgstr "返回与给定向量的无符号最小角度,单位为弧度。"
msgid ""
-"Returns the vector \"bounced off\" from a plane defined by the given normal."
-msgstr "返回从由给定法线定义的平面上“反弹”的向量。"
-
-msgid "Returns the cross product of this vector and [param with]."
-msgstr "返回该向量与 [param with] 的叉积。"
-
-msgid ""
"Returns the inverse of the vector. This is the same as [code]Vector3(1.0 / v."
"x, 1.0 / v.y, 1.0 / v.z)[/code]."
msgstr ""
@@ -137352,11 +137784,6 @@ msgid "Returns the outer product with [param with]."
msgstr "返回与 [param with] 的外积。"
msgid ""
-"Returns the result of reflecting the vector from a plane defined by the given "
-"normal [param n]."
-msgstr "返回经过平面反射后的向量,该平面由给定的法线 [param n] 定义。"
-
-msgid ""
"Returns the result of rotating this vector around a given axis by [param "
"angle] (in radians). The axis must be a normalized vector. See also [method "
"@GlobalScope.deg_to_rad]."
@@ -137373,6 +137800,19 @@ msgstr ""
"时针方向时符号为正,在顺时针方向时符号为负。"
msgid ""
+"Returns a new vector resulting from sliding this vector along a plane with "
+"normal [param n]. The resulting new vector is perpendicular to [param n], and "
+"is equivalent to this vector minus its projection on [param n]. See also "
+"[method project].\n"
+"[b]Note:[/b] The vector [param n] must be normalized. See also [method "
+"normalized]."
+msgstr ""
+"返回将该向量沿着法线为 [param n] 的平面滑动所得到的新向量。得到的新向量与 "
+"[param n] 垂直,等价于将该向量减去在 [param n] 上的投影。另见 [method "
+"project]。\n"
+"[b]注意:[/b]向量 [param n] 必须为归一化的向量。另见 [method normalized]。"
+
+msgid ""
"The vector's Z component. Also accessible by using the index position [code]"
"[2][/code]."
msgstr "向量的 Z 分量。也可以通过使用索引位置 [code][2][/code] 访问。"
@@ -137843,6 +138283,9 @@ msgstr ""
"返回该 [Vector3i] 的负值。和写 [code]Vector3i(-v.x, -v.y, -v.z)[/code] 是一样"
"的。该操作在保持相同幅度的同时,翻转向量的方向。"
+msgid "A 4D vector using floating-point coordinates."
+msgstr "使用浮点数坐标的 4D 向量。"
+
msgid ""
"A 4-element structure that can be used to represent 4D coordinates or any "
"other quadruplet of numeric values.\n"
@@ -138088,6 +138531,25 @@ msgid "A 4D vector using integer coordinates."
msgstr "使用整数坐标的 4D 向量。"
msgid ""
+"A 4-element structure that can be used to represent 4D grid coordinates or "
+"any other quadruplet of integers.\n"
+"It uses integer coordinates and is therefore preferable to [Vector4] when "
+"exact precision is required. Note that the values are limited to 32 bits, and "
+"unlike [Vector4] this cannot be configured with an engine build option. Use "
+"[int] or [PackedInt64Array] if 64-bit values are needed.\n"
+"[b]Note:[/b] In a boolean context, a Vector4i will evaluate to [code]false[/"
+"code] if it's equal to [code]Vector4i(0, 0, 0, 0)[/code]. Otherwise, a "
+"Vector4i will always evaluate to [code]true[/code]."
+msgstr ""
+"包含四个元素的结构体,可用于代表 4D 坐标或任何整数的四元组。\n"
+"使用整数坐标,因此需要绝对精确时应比 [Vector4] 优先使用。请注意,取值范围有 "
+"32 位的限制,与 [Vector4] 不同,这个类型的精度无法使用引擎的构建参数进行配置。"
+"如果需要 64 位的值,请使用 [int] 或 [PackedInt64Array]。\n"
+"[b]注意:[/b]在布尔语境中,如果 Vector4i 等于 [code]Vector4i(0, 0, 0, 0)[/"
+"code] 则求值结果为 [code]false[/code]。否则 Vector4i 的求值结果始终为 "
+"[code]true[/code]。"
+
+msgid ""
"Constructs a default-initialized [Vector4i] with all components set to "
"[code]0[/code]."
msgstr "构造默认初始化的 [Vector4i],所有分量都为 [code]0[/code]。"
@@ -138815,6 +139277,28 @@ msgid ""
msgstr "视口的抽象基类。对绘图以及与游戏世界的交互进行了封装。"
msgid ""
+"A [Viewport] creates a different view into the screen, or a sub-view inside "
+"another viewport. Child 2D nodes will display on it, and child Camera3D 3D "
+"nodes will render on it too.\n"
+"Optionally, a viewport can have its own 2D or 3D world, so it doesn't share "
+"what it draws with other viewports.\n"
+"Viewports can also choose to be audio listeners, so they generate positional "
+"audio depending on a 2D or 3D camera child of it.\n"
+"Also, viewports can be assigned to different screens in case the devices have "
+"multiple screens.\n"
+"Finally, viewports can also behave as render targets, in which case they will "
+"not be visible unless the associated texture is used to draw."
+msgstr ""
+"[Viewport] 在屏幕中创建不同的视图,或在另一个视口内创建子视图。子 2D 节点将显"
+"示在其上,子 Camera3D 3D 节点也将在其上渲染。\n"
+"视口也可以拥有自己的 2D 或 3D 世界,这样就不会与其他视口共享绘制的内容。\n"
+"视口也可以选择作为音频监听器,这样就可以根据 2D 或 3D 相机子节点生成位置音"
+"频。\n"
+"另外,在设备有多个屏幕的情况下,可以将视口分配给不同的屏幕。\n"
+"最后,视口也可以充当渲染目标,在这种情况下,除非使用与其相关联的纹理进行绘制,"
+"否则它们将不可见。"
+
+msgid ""
"Returns the first valid [World2D] for this viewport, searching the [member "
"world_2d] property of itself and any Viewport ancestor."
msgstr ""
@@ -138857,6 +139341,11 @@ msgid ""
msgstr "返回该 [Viewport] 中鼠标的位置,使用该 [Viewport] 的坐标系。"
msgid ""
+"Returns the positional shadow atlas quadrant subdivision of the specified "
+"quadrant."
+msgstr "返回指定象限的位置阴影图集象限细分。"
+
+msgid ""
"Returns rendering statistics of the given type. See [enum RenderInfoType] and "
"[enum RenderInfo] for options."
msgstr ""
@@ -138907,6 +139396,18 @@ msgid ""
msgstr ""
"返回这个视口中聚焦的 [Control]。如果没有聚焦任何 [Control] 则返回 null。"
+msgid ""
+"Returns the [Control] that the mouse is currently hovering over in this "
+"viewport. If no [Control] has the cursor, returns null.\n"
+"Typically the leaf [Control] node or deepest level of the subtree which "
+"claims hover. This is very useful when used together with [method Node."
+"is_ancestor_of] to find if the mouse is within a control tree."
+msgstr ""
+"返回当前鼠标在该视口中悬停的 [Control]。如果鼠标没有对应的 [Control] 则返回 "
+"null。\n"
+"获取到悬停的通常是末端的 [Control] 节点或子树中最深的一级。与 [method Node."
+"is_ancestor_of] 配合的时候非常有用,可以查到鼠标是否位于某个控件树中。"
+
msgid "Returns [code]true[/code] if the drag operation is successful."
msgstr "如果拖拽操作成功,则返回 [code]true[/code]。"
@@ -138996,6 +139497,9 @@ msgstr ""
"辅助方法,会调用当前聚焦 [Control] 的 [code]set_text()[/code] 方法,前提是该控"
"件上定义了这个方法(例如聚焦 Control 为 [Button] 或 [LineEdit])。"
+msgid "Use [method push_input] instead."
+msgstr "请改用 [method push_input]。"
+
msgid ""
"Triggers the given [param event] in this [Viewport]. This can be used to pass "
"an [InputEvent] between viewports, or to locally apply inputs that were sent "
@@ -139225,6 +139729,21 @@ msgstr ""
"取可能都不相同。"
msgid ""
+"If [code]true[/code], the input_event signal will only be sent to one physics "
+"object in the mouse picking process. If you want to get the top object only, "
+"you must also enable [member physics_object_picking_sort].\n"
+"If [code]false[/code], an input_event signal will be sent to all physics "
+"objects in the mouse picking process.\n"
+"This applies to 2D CanvasItem object picking only."
+msgstr ""
+"如果为 [code]true[/code],则鼠标拾取的过程中只会将 input_event 信号发送给一个"
+"物理对象。如果你只希望获取最顶层的对象,就必须同时启用 [member "
+"physics_object_picking_sort]。\n"
+"如果为 [code]false[/code],则鼠标拾取的过程中会将 input_event 信号发送给所有物"
+"理对象。\n"
+"仅适用于 2D CanvasItem 对象的拾取。"
+
+msgid ""
"If [code]true[/code], objects receive mouse picking events sorted primarily "
"by their [member CanvasItem.z_index] and secondarily by their position in the "
"scene tree. If [code]false[/code], the order is undetermined.\n"
@@ -139377,33 +139896,6 @@ msgstr ""
"带,因为抖动图案会使无损压缩的屏幕截图变大。"
msgid ""
-"If [code]true[/code], 2D rendering will use an high dynamic range (HDR) "
-"format framebuffer matching the bit depth of the 3D framebuffer. When using "
-"the Forward+ renderer this will be a [code]RGBA16[/code] framebuffer, while "
-"when using the Mobile renderer it will be a [code]RGB10_A2[/code] "
-"framebuffer. Additionally, 2D rendering will take place in linear color space "
-"and will be converted to sRGB space immediately before blitting to the screen "
-"(if the Viewport is attached to the screen). Practically speaking, this means "
-"that the end result of the Viewport will not be clamped into the [code]0-1[/"
-"code] range and can be used in 3D rendering without color space adjustments. "
-"This allows 2D rendering to take advantage of effects requiring high dynamic "
-"range (e.g. 2D glow) as well as substantially improves the appearance of "
-"effects requiring highly detailed gradients.\n"
-"[b]Note:[/b] This setting will have no effect when using the GL Compatibility "
-"renderer as the GL Compatibility renderer always renders in low dynamic range "
-"for performance reasons."
-msgstr ""
-"如果为 [code]true[/code],则 2D 渲染会使用高动态范围格式的帧缓冲,与 3D 帧缓冲"
-"的位深度一致。使用 Forward+ 渲染器时为 [code]RGBA16[/code] 帧缓冲,而使用 "
-"Mobile 渲染器时为 [code]RGB10_A2[/code] 帧缓冲。另外,2D 渲染是发生在线性色彩"
-"空间的,会在传输至屏幕前转换至 sRGB 空间(如果 Viewport 与屏幕进行了关联)。这"
-"意味着在实际情况下,Viewport 的最终效果不会被限制在 [code]0-1[/code] 的范围"
-"内,无需色彩空间调整就能够用于 3D 渲染。这样 2D 渲染就能够利用到需要高动态范围"
-"的效果(例如 2D 辉光),并且能够大幅提升需要大量细节内容的效果。\n"
-"[b]注意:[/b]使用 GL Compatibility 渲染器时无效,因为 GL Compatibility 渲染器"
-"出于性能的原因始终使用低动态范围。"
-
-msgid ""
"If [code]true[/code], [OccluderInstance3D] nodes will be usable for occlusion "
"culling in 3D for this viewport. For the root viewport, [member "
"ProjectSettings.rendering/occlusion_culling/use_occlusion_culling] must be "
@@ -139464,6 +139956,14 @@ msgid "The custom [World3D] which can be used as 3D environment source."
msgstr "自定义的 [World3D],可以作为 3D 环境源。"
msgid ""
+"Emitted when a Control node grabs keyboard focus.\n"
+"[b]Note:[/b] A Control node losing focus doesn't cause this signal to be "
+"emitted."
+msgstr ""
+"当控件节点获取键盘焦点时触发。\n"
+"[b]注意:[/b]控件节点失去焦点不会导致触发该信号。"
+
+msgid ""
"Emitted when the size of the viewport is changed, whether by resizing of "
"window, or some other means."
msgstr ""
@@ -139585,9 +140085,6 @@ msgstr ""
"对象通过加法混合显示为半透明,因此可以看到它们在彼此之上绘制的位置。更高的过度"
"绘制意味着在绘制隐藏在其他像素后面的像素时浪费了性能。"
-msgid "Objects are displayed in wireframe style."
-msgstr "对象以线框风格显示。"
-
msgid ""
"Draws the shadow atlas that stores shadows from [DirectionalLight3D]s in the "
"upper left quadrant of the [Viewport]."
@@ -139620,7 +140117,7 @@ msgid ""
"red, green, blue, and yellow."
msgstr ""
"为场景中的 [DirectionalLight3D] 的每个 PSSM 分割着色不同的颜色,以便可以看到分"
-"割的位置。按顺序,它们将被着色为红色、绿色、蓝色、和黄色。"
+"割的位置。按顺序,它们将被着色为红色、绿色、蓝色和黄色。"
msgid ""
"Draws the decal atlas used by [Decal]s and light projector textures in the "
@@ -139632,24 +140129,6 @@ msgid ""
"applied."
msgstr "在应用后处理之前绘制场景的内部分辨率缓冲区。"
-msgid "Max value for [enum DefaultCanvasItemTextureFilter] enum."
-msgstr "[enum DefaultCanvasItemTextureFilter] 枚举的最大值。"
-
-msgid "Max value for [enum DefaultCanvasItemTextureRepeat] enum."
-msgstr "[enum DefaultCanvasItemTextureRepeat] 枚举的最大值。"
-
-msgid "VRS is disabled."
-msgstr "VRS 已禁用。"
-
-msgid ""
-"VRS uses a texture. Note, for stereoscopic use a texture atlas with a texture "
-"for each view."
-msgstr ""
-"VRS 使用一个纹理。请注意,对于立体视觉,请为每个视图使用带有纹理的纹理图集。"
-
-msgid "VRS texture is supplied by the primary [XRInterface]."
-msgstr "VRS 纹理由主 [XRInterface] 提供。"
-
msgid "Represents the size of the [enum VRSMode] enum."
msgstr "代表 [enum VRSMode] 枚举的大小。"
@@ -139657,36 +140136,6 @@ msgid "Provides the content of a [Viewport] as a dynamic texture."
msgstr "以动态纹理的形式提供 [Viewport] 的内容。"
msgid ""
-"Provides the content of a [Viewport] as a dynamic [Texture2D]. This can be "
-"used to mix controls, 2D game objects, and 3D game objects in the same "
-"scene.\n"
-"To create a [ViewportTexture] in code, use the [method Viewport.get_texture] "
-"method on the target viewport.\n"
-"[b]Note:[/b] A [ViewportTexture] is always local to its scene (see [member "
-"Resource.resource_local_to_scene]). If the scene root is not ready, it may "
-"return incorrect data (see [signal Node.ready])."
-msgstr ""
-"以动态 [Texture2D] 的形式提供 [Viewport] 的内容。可用于在同一场景中混合控件、"
-"2D 游戏对象和 3D 游戏对象。\n"
-"要在代码中创建 [ViewportTexture],请在目标视口上使用 [method Viewport."
-"get_texture] 方法。\n"
-"[b]注意:[/b][ViewportTexture] 始终是局部于其场景的(请参阅 [member Resource."
-"resource_local_to_scene])。如果该场景根没有准备好,它可能会返回不正确的数据"
-"(参见 [signal Node.ready])。"
-
-msgid ""
-"The path to the [Viewport] node to display. This is relative to the scene "
-"root, not to the node that uses the texture.\n"
-"[b]Note:[/b] In the editor, this path is automatically updated when the "
-"target viewport or one of its ancestors is renamed or moved. At runtime, the "
-"path may not be able to automatically update due to the inability to "
-"determine the scene root."
-msgstr ""
-"要显示的 [Viewport] 节点的路径。相对于场景的根节点,而不是使用纹理的节点。\n"
-"[b]注意:[/b]在编辑器中,目标视口或其祖级节点发生重命名或移动时会自动更新这个"
-"路径。在运行时,该路径可能无法自动更新,因为无法确定场景的根节点。"
-
-msgid ""
"A rectangular region of 2D space that, when visible on screen, enables a "
"target node."
msgstr "二维空间的矩形区块,当在屏幕上可见时,启用目标节点。"
@@ -139720,6 +140169,18 @@ msgstr ""
"确定如何启用目标节点。对应于 [enum Node.ProcessMode]。当该节点被禁用时,它始终"
"使用 [constant Node.PROCESS_MODE_DISABLED]。"
+msgid ""
+"The path to the target node, relative to the [VisibleOnScreenEnabler2D]. The "
+"target node is cached; it's only assigned when setting this property (if the "
+"[VisibleOnScreenEnabler2D] is inside the scene tree) and every time the "
+"[VisibleOnScreenEnabler2D] enters the scene tree. If the path is empty, no "
+"node will be affected. If the path is invalid, an error is also generated."
+msgstr ""
+"目标节点的路径,相对于 [VisibleOnScreenEnabler2D]。目标节点会被缓存;只有在设"
+"置这个属性时([VisibleOnScreenEnabler2D] 位于场景树中),以及 "
+"[VisibleOnScreenEnabler2D] 进入场景树时会进行赋值。如果路径为空,则不会影响任"
+"何节点。如果路径无效,则还会生成错误。"
+
msgid "Corresponds to [constant Node.PROCESS_MODE_INHERIT]."
msgstr "对应 [constant Node.PROCESS_MODE_INHERIT]。"
@@ -139757,6 +140218,18 @@ msgstr ""
"则它也不会起作用。"
msgid ""
+"The path to the target node, relative to the [VisibleOnScreenEnabler3D]. The "
+"target node is cached; it's only assigned when setting this property (if the "
+"[VisibleOnScreenEnabler3D] is inside the scene tree) and every time the "
+"[VisibleOnScreenEnabler3D] enters the scene tree. If the path is empty, no "
+"node will be affected. If the path is invalid, an error is also generated."
+msgstr ""
+"目标节点的路径,相对于 [VisibleOnScreenEnabler3D]。目标节点会被缓存;只有在设"
+"置这个属性时([VisibleOnScreenEnabler3D] 位于场景树中),以及 "
+"[VisibleOnScreenEnabler3D] 进入场景树时会进行赋值。如果路径为空,则不会影响任"
+"何节点。如果路径无效,则还会生成错误。"
+
+msgid ""
"A rectangular region of 2D space that detects whether it is visible on screen."
msgstr "2D 空间的矩形区域,用于检测其在屏幕上是否可见。"
@@ -140129,6 +140602,12 @@ msgstr "Varying 的类型为 [Transform2D]。"
msgid "Represents the size of the [enum VaryingType] enum."
msgstr "代表 [enum VaryingType] 枚举的大小。"
+msgid "Indicates an invalid [VisualShader] node."
+msgstr "表示无效的 [VisualShader] 节点。"
+
+msgid "Indicates an output node of [VisualShader]."
+msgstr "表示 [VisualShader] 的输出节点。"
+
msgid "Base class for [VisualShader] nodes. Not related to scene nodes."
msgstr "[VisualShader] 节点的基类。与场景节点无关。"
@@ -140570,22 +141049,6 @@ msgstr "在可视化着色器图中使用的 [Color] 参数。"
msgid "Translated to [code]uniform vec4[/code] in the shader language."
msgstr "翻译为着色器语言中的 [code]uniform vec4[/code]。"
-msgid "A comment node to be placed on visual shader graph."
-msgstr "放置在可视化着色器图上的注释节点。"
-
-msgid ""
-"A resizable rectangular area with changeable [member title] and [member "
-"description] used for better organizing of other visual shader nodes."
-msgstr ""
-"可调整大小的矩形区域,标题 [member title] 和描述 [member description] 均可更"
-"改,可用于更好地组织其他可视化着色器节点。"
-
-msgid "An additional description which placed below the title."
-msgstr "放置在标题下方的额外说明。"
-
-msgid "A title of the node."
-msgstr "节点的标题。"
-
msgid "A comparison function for common types within the visual shader graph."
msgstr "可视化着色器图内常见类型的比较函数。"
@@ -141648,6 +142111,28 @@ msgstr ""
"使用一个[String]格式的以冒号分隔的列表来定义所有输出端口: [code]id,type,name;"
"[/code] ,参阅[method add_output_port]。"
+msgid ""
+"Outputs a 3D vector based on the result of a floating-point comparison within "
+"the visual shader graph."
+msgstr "根据可视化着色器图中浮点比较的结果输出 3D 向量。"
+
+msgid ""
+"This visual shader node has six input ports:\n"
+"- Port [b]1[/b] and [b]2[/b] provide the two floating-point numbers [code]a[/"
+"code] and [code]b[/code] that will be compared.\n"
+"- Port [b]3[/b] is the tolerance, which allows similar floating-point numbers "
+"to be considered equal.\n"
+"- Ports [b]4[/b], [b]5[/b], and [b]6[/b] are the possible outputs, returned "
+"if [code]a == b[/code], [code]a > b[/code], or [code]a < b[/code] "
+"respectively."
+msgstr ""
+"这个可视化着色器节点有六个输入端口:\n"
+"- 端口 [b]1[/b] 和端口 [b]2[/b] 提供的是需要比较的两个浮点数 [code]a[/code] "
+"和 [code]b[/code]。\n"
+"- 端口 [b]3[/b] 是公差,能够将相似的浮点数认定为相等。\n"
+"- 端口 [b]4[/b]、[b]5[/b]、[b]6[/b] 是可能的输出,分别是 [code]a == b[/code]、"
+"[code]a > b[/code]、[code]a < b[/code] 时的返回值。"
+
msgid "Represents the input shader parameter within the visual shader graph."
msgstr "在可视化着色器图中,代表输入着色器参数。"
@@ -141671,8 +142156,8 @@ msgstr ""
"input_name] 等于 [code]\"albedo\"[/code],则返回 [code]\"ALBEDO\"[/code]。"
msgid ""
-"One of the several input constants in lower-case style like: "
-"\"vertex\" ([code]VERTEX[/code]) or \"point_size\" ([code]POINT_SIZE[/code])."
+"One of the several input constants in lower-case style like: \"vertex\" "
+"([code]VERTEX[/code]) or \"point_size\" ([code]POINT_SIZE[/code])."
msgstr ""
"小写风格的输入常量之一,例如:\"vertex\"([code]VERTEX[/code])或 "
"\"point_size\"([code]POINT_SIZE[/code])。"
@@ -141833,6 +142318,12 @@ msgid "Comparison with [code]INF[/code] (Infinity)."
msgstr "与 [code]INF[/code](无穷大)比较。"
msgid ""
+"Comparison with [code]NaN[/code] (Not a Number; indicates invalid numeric "
+"results, such as division by zero)."
+msgstr ""
+"与 [code]NaN[/code] 比较(不是一个数字;表示无效的数字结果,如除以 0)。"
+
+msgid ""
"A visual shader node that returns the depth value of the DEPTH_TEXTURE node "
"in a linear space."
msgstr "返回 DEPTH_TEXTURE 节点线性空间深度值的可视化着色器节点。"
@@ -142556,6 +143047,14 @@ msgid ""
"Composes a [Transform3D] from four [Vector3]s within the visual shader graph."
msgstr "在可视化着色器图中,将四个 [Vector3] 合成为 [Transform3D]。"
+msgid ""
+"Creates a 4×4 transform matrix using four vectors of type [code]vec3[/code]. "
+"Each vector is one row in the matrix and the last column is a [code]vec4(0, "
+"0, 0, 1)[/code]."
+msgstr ""
+"使用四个类型为 [code]vec3[/code] 的向量创建一个 4×4 变换矩阵。每个向量是矩阵中"
+"的一行,最后一列是一个 [code]vec4(0, 0, 0, 1)[/code]。"
+
msgid "A [Transform3D] constant for use within the visual shader graph."
msgstr "[Transform3D] 常量,在可视化着色器图中使用。"
@@ -142570,6 +143069,11 @@ msgid ""
"graph."
msgstr "在可视化着色器图中,将 [Transform3D] 分解为四个 [Vector3]。"
+msgid ""
+"Takes a 4×4 transform matrix and decomposes it into four [code]vec3[/code] "
+"values, one from each row of the matrix."
+msgstr "获取一个4×4的变换矩阵,并将其分解为四个[code]vec3[/code]值,每行一个。"
+
msgid "Computes a [Transform3D] function within the visual shader graph."
msgstr "在可视化着色器图中,计算 [Transform3D] 函数。"
@@ -142588,6 +143092,9 @@ msgstr "对 [Transform3D] 矩阵执行转置运算。"
msgid "A [Transform3D] operator to be used within the visual shader graph."
msgstr "在可视化着色器图中使用的 [Transform3D] 运算符。"
+msgid "Applies [member operator] to two transform (4×4 matrices) inputs."
+msgstr "对两个变换(4×4 矩阵)输入应用 [member operator]。"
+
msgid ""
"The type of the operation to be performed on the transforms. See [enum "
"Operator] for options."
@@ -142637,6 +143144,11 @@ msgid ""
msgstr "在可视化着色器图中,将 [Transform3D] 与 [Vector3] 相乘。"
msgid ""
+"A multiplication operation on a transform (4×4 matrix) and a vector, with "
+"support for different multiplication operators."
+msgstr "对一个变换(4×4 矩阵)和一个向量进行乘法运算,支持不同的乘法运算符。"
+
+msgid ""
"The multiplication type to be performed. See [enum Operator] for options."
msgstr "要执行的乘法类型。参阅 [enum Operator] 的选项。"
@@ -143796,6 +144308,11 @@ msgstr ""
"是否完成。"
msgid ""
+"Returns the signaling state on the local end of the connection while "
+"connecting or reconnecting to another peer."
+msgstr "连接或重新连接到另一个对等体时,返回连接本地端的信令状态。"
+
+msgid ""
"Re-initialize this peer connection, closing any previously active connection, "
"and going back to state [constant STATE_NEW]. A dictionary of [param "
"configuration] options can be passed to configure the peer connection.\n"
@@ -144607,36 +145124,6 @@ msgstr ""
"url]。"
msgid ""
-"Gets an [XRPositionalTracker] for the given [param input_source_id].\n"
-"In the context of WebXR, an input source can be an advanced VR controller "
-"like the Oculus Touch or Index controllers, or even a tap on the screen, a "
-"spoken voice command or a button press on the device itself. When a non-"
-"traditional input source is used, interpret the position and orientation of "
-"the [XRPositionalTracker] as a ray pointing at the object the user wishes to "
-"interact with.\n"
-"Use this method to get information about the input source that triggered one "
-"of these signals:\n"
-"- [signal selectstart]\n"
-"- [signal select]\n"
-"- [signal selectend]\n"
-"- [signal squeezestart]\n"
-"- [signal squeeze]\n"
-"- [signal squeezestart]"
-msgstr ""
-"获取给定 [param input_source_id] 的 [XRPositionalTracker]。\n"
-"在 WebXR 上下文中,输入源可以是类似 Oculus Touch 和 Index 控制器的高级 VR 控制"
-"器,甚至也可以是屏幕上的点击、语音命令或按下设备本身的按钮。当使用非传统输入源"
-"时,会将 [XRPositionalTracker] 的位置和方向解释为指向用户希望与之交互的对象的"
-"射线。\n"
-"可以使用此方法获取有关触发以下信号之一的输入源的信息:\n"
-"- [signal selectstart]\n"
-"- [signal select]\n"
-"- [signal selectend]\n"
-"- [signal squeezestart]\n"
-"- [signal squeeze]\n"
-"- [signal squeezestart]"
-
-msgid ""
"Returns [code]true[/code] if there is an active input source with the given "
"[param input_source_id]."
msgstr ""
@@ -144666,6 +145153,17 @@ msgstr ""
"[signal display_refresh_rate_changed] 信号后才会生效。"
msgid ""
+"A comma-separated list of features that were successfully enabled by [method "
+"XRInterface.initialize] when setting up the WebXR session.\n"
+"This may include features requested by setting [member required_features] and "
+"[member optional_features]."
+msgstr ""
+"设置 WebXR 会话时通过 [method XRInterface.initialize] 成功启用的功能的逗号分隔"
+"列表。\n"
+"这可能包括通过设置 [member required_features] 和 [member optional_features] 请"
+"求的功能。"
+
+msgid ""
"A comma-seperated list of optional features used by [method XRInterface."
"initialize] when setting up the WebXR session.\n"
"If a user's browser or device doesn't support one of the given features, "
@@ -144962,6 +145460,17 @@ msgid ""
"Requests an update of the [Window] size to fit underlying [Control] nodes."
msgstr "请求更新 [Window] 大小以适应底层 [Control] 节点。"
+msgid ""
+"Returns the combined minimum size from the child [Control] nodes of the "
+"window. Use [method child_controls_changed] to update it when child nodes "
+"have changed.\n"
+"The value returned by this method can be overridden with [method "
+"_get_contents_minimum_size]."
+msgstr ""
+"返回该窗口子 [Control] 节点合并最小大小。请在子节点发生改变时使用 [method "
+"child_controls_changed] 进行更新。\n"
+"这个方法的返回值可以使用 [method _get_contents_minimum_size] 覆盖。"
+
msgid "Returns [code]true[/code] if the [param flag] is set."
msgstr "如果设置了标志 [param flag],则返回 [code]true[/code]。"
@@ -145151,6 +145660,9 @@ msgid ""
msgstr ""
"在当前屏幕里居中原生窗口,如果时嵌入式窗口则是在嵌入器 [Viewport] 里居中。"
+msgid "Use [method Window.grab_focus] instead."
+msgstr "请改用 [method Window.grab_focus]。"
+
msgid ""
"Shows the [Window] and makes it transient (see [member transient]). If [param "
"rect] is provided, it will be set as the [Window]'s size. Fails if called on "
@@ -145581,6 +146093,22 @@ msgstr ""
"要等到再次显示才会生效。"
msgid ""
+"If [code]true[/code], the [Window]'s background can be transparent. This is "
+"best used with embedded windows.\n"
+"[b]Note:[/b] Transparency support is implemented on Linux, macOS and Windows, "
+"but availability might vary depending on GPU driver, display manager, and "
+"compositor capabilities.\n"
+"[b]Note:[/b] This property has no effect if [member ProjectSettings.display/"
+"window/per_pixel_transparency/allowed] is set to [code]false[/code]."
+msgstr ""
+"如果为 [code]true[/code],则 [Window] 的背景可以是透明的。最好用在嵌入式窗口"
+"中。\n"
+"[b]注意:[/b]透明度支持已在 Linux、macOS 和 Windows 上实现,但可用性可能因 "
+"GPU 驱动程序、显示管理器和合成器的能力而异。\n"
+"[b]注意:[/b]如果 [member ProjectSettings.display/window/"
+"per_pixel_transparency/allowed] 被设置为 [code]false[/code],则这个属性无效。"
+
+msgid ""
"If [code]true[/code], the [Window] can't be focused nor interacted with. It "
"can still be visible."
msgstr ""
@@ -146063,39 +146591,6 @@ msgstr ""
"单例可能对性能有负面影响。"
msgid ""
-"Adds [param action] as a group task to be executed by the worker threads. The "
-"[Callable] will be called a number of times based on [param elements], with "
-"the first thread calling it with the value [code]0[/code] as a parameter, and "
-"each consecutive execution incrementing this value by 1 until it reaches "
-"[code]element - 1[/code].\n"
-"The number of threads the task is distributed to is defined by [param "
-"tasks_needed], where the default value [code]-1[/code] means it is "
-"distributed to all worker threads. [param high_priority] determines if the "
-"task has a high priority or a low priority (default). You can optionally "
-"provide a [param description] to help with debugging.\n"
-"Returns a group task ID that can be used by other methods."
-msgstr ""
-"将 [param action] 添加为分组任务,能够被多个工作线程执行。该 [Callable] 的调用"
-"次数由 [param elements] 决定,第一个调用的线程使用 [code]0[/code] 作为参数,后"
-"续执行时会将其加 1,直到变为 [code]element - 1[/code]。\n"
-"任务分布的线程数由 [param tasks_needed] 定义,默认值 [code]-1[/code] 表示分布"
-"到所有工作线程。[param high_priority] 决定的是任务具有高优先级还是低优先级(默"
-"认)。你还可以选择提供 [param description] 作为描述信息,方便调试。\n"
-"返回分组任务 ID,可用于其他方法。"
-
-msgid ""
-"Adds [param action] as a task to be executed by a worker thread. [param "
-"high_priority] determines if the task has a high priority or a low priority "
-"(default). You can optionally provide a [param description] to help with "
-"debugging.\n"
-"Returns a task ID that can be used by other methods."
-msgstr ""
-"将 [param action] 添加为分组任务,能够被单个工作线程执行。[param "
-"high_priority] 决定的是任务具有高优先级还是低优先级(默认)。你还可以选择提供 "
-"[param description] 作为描述信息,方便调试。\n"
-"返回任务 ID,可用于其他方法。"
-
-msgid ""
"Returns how many times the [Callable] of the group task with the given ID has "
"already been executed by the worker threads.\n"
"[b]Note:[/b] If a thread has started executing the [Callable] but is yet to "
@@ -146105,18 +146600,35 @@ msgstr ""
"[b]注意:[/b]线程已经开始执行 [Callable] 但尚未完成的情况不计算在内。"
msgid ""
-"Returns [code]true[/code] if the group task with the given ID is completed."
-msgstr "如果具有给定 ID 的分组任务已经完成,则返回 [code]true[/code]。"
-
-msgid "Returns [code]true[/code] if the task with the given ID is completed."
-msgstr "如果具有给定 ID 的任务已经完成,则返回 [code]true[/code]。"
-
-msgid ""
"Pauses the thread that calls this method until the group task with the given "
"ID is completed."
msgstr "在具有给定 ID 的分组任务完成前暂停调用这个方法的线程。"
msgid ""
+"Pauses the thread that calls this method until the task with the given ID is "
+"completed.\n"
+"Returns [constant @GlobalScope.OK] if the task could be successfully "
+"awaited.\n"
+"Returns [constant @GlobalScope.ERR_INVALID_PARAMETER] if a task with the "
+"passed ID does not exist (maybe because it was already awaited and disposed "
+"of).\n"
+"Returns [constant @GlobalScope.ERR_BUSY] if the call is made from another "
+"running task and, due to task scheduling, there's potential for deadlocking "
+"(e.g., the task to await may be at a lower level in the call stack and "
+"therefore can't progress). This is an advanced situation that should only "
+"matter when some tasks depend on others (in the current implementation, the "
+"tricky case is a task trying to wait on an older one)."
+msgstr ""
+"暂停调用该方法的线程,直到给定 ID 对应的任务完成。\n"
+"如果能够成功等待任务,则返回 [constant @GlobalScope.OK]。\n"
+"如果不存在与传入 ID 对应的任务(可能已被等待或处理),则返回 [constant "
+"@GlobalScope.ERR_INVALID_PARAMETER]。\n"
+"如果其他正在执行的任务调用了该方法,并且由于任务调度的原因,存在死锁的可能性"
+"(例如,要等待的任务可能位于调用堆栈中的较低级别,因此不能继续),则返回 "
+"[constant @GlobalScope.ERR_BUSY]。这是比较高级的情况,只有任务之间存在依赖关系"
+"(在当前实现中,棘手的情况是尝试等待较旧任务的任务)时才会出现。"
+
+msgid ""
"A resource that holds all components of a 2D world, such as a canvas and a "
"physics space."
msgstr "一种保存了所有 2D 世界组件的资源,例如画布和物理运算空间。"
@@ -146276,6 +146788,9 @@ msgstr ""
"(例如 SSAO、DOF、色调映射)、以及如何绘制背景(例如纯色、天空盒)。通常,添加"
"这些是为了提高场景的真实感/色彩平衡。"
+msgid "The default [Compositor] resource to use if none set on the [Camera3D]."
+msgstr "[Camera3D] 上未设置时要使用的默认 [Compositor] 资源。"
+
msgid ""
"The [Environment] resource used by this [WorldEnvironment], defining the "
"default properties."
@@ -146318,91 +146833,6 @@ msgid "Provides a low-level interface for creating parsers for XML files."
msgstr "为创建 XML 文件解析器提供低阶接口。"
msgid ""
-"Provides a low-level interface for creating parsers for [url=https://en."
-"wikipedia.org/wiki/XML]XML[/url] files. This class can serve as base to make "
-"custom XML parsers.\n"
-"To parse XML, you must open a file with the [method open] method or a buffer "
-"with the [method open_buffer] method. Then, the [method read] method must be "
-"called to parse the next nodes. Most of the methods take into consideration "
-"the currently parsed node.\n"
-"Here is an example of using [XMLParser] to parse a SVG file (which is based "
-"on XML), printing each element and its attributes as a dictionary:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var parser = XMLParser.new()\n"
-"parser.open(\"path/to/file.svg\")\n"
-"while parser.read() != ERR_FILE_EOF:\n"
-" if parser.get_node_type() == XMLParser.NODE_ELEMENT:\n"
-" var node_name = parser.get_node_name()\n"
-" var attributes_dict = {}\n"
-" for idx in range(parser.get_attribute_count()):\n"
-" attributes_dict[parser.get_attribute_name(idx)] = parser."
-"get_attribute_value(idx)\n"
-" print(\"The \", node_name, \" element has the following attributes: "
-"\", attributes_dict)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var parser = new XmlParser();\n"
-"parser.Open(\"path/to/file.svg\");\n"
-"while (parser.Read() != Error.FileEof)\n"
-"{\n"
-" if (parser.GetNodeType() == XmlParser.NodeType.Element)\n"
-" {\n"
-" var nodeName = parser.GetNodeName();\n"
-" var attributesDict = new Godot.Collections.Dictionary();\n"
-" for (int idx = 0; idx < parser.GetAttributeCount(); idx++)\n"
-" {\n"
-" attributesDict[parser.GetAttributeName(idx)] = parser."
-"GetAttributeValue(idx);\n"
-" }\n"
-" GD.Print($\"The {nodeName} element has the following attributes: "
-"{attributesDict}\");\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"为创建 [url=https://zh.wikipedia.org/wiki/XML]XML[/url] 文件解析器提供低阶接"
-"口。制作自定义 XML 解析器时,可以将这个类作为基础。\n"
-"要解析 XML,你必须使用 [method open] 方法打开文件,或者使用 [method "
-"open_buffer] 方法打开缓冲区。然后必须使用 [method read] 方法解析后续节点。大多"
-"数方法使用的是当前解析节点。\n"
-"以下是使用 [XMLParser] 解析 SVG 文件(基于 XML)的粒子,会输出所有的元素,以字"
-"典的形式输出对应的属性:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var parser = XMLParser.new()\n"
-"parser.open(\"path/to/file.svg\")\n"
-"while parser.read() != ERR_FILE_EOF:\n"
-" if parser.get_node_type() == XMLParser.NODE_ELEMENT:\n"
-" var node_name = parser.get_node_name()\n"
-" var attributes_dict = {}\n"
-" for idx in range(parser.get_attribute_count()):\n"
-" attributes_dict[parser.get_attribute_name(idx)] = parser."
-"get_attribute_value(idx)\n"
-" print(\"元素 \", node_name, \" 包含的属性有:\", attributes_dict)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var parser = new XmlParser();\n"
-"parser.Open(\"path/to/file.svg\");\n"
-"while (parser.Read() != Error.FileEof)\n"
-"{\n"
-" if (parser.GetNodeType() == XmlParser.NodeType.Element)\n"
-" {\n"
-" var nodeName = parser.GetNodeName();\n"
-" var attributesDict = new Godot.Collections.Dictionary();\n"
-" for (int idx = 0; idx < parser.GetAttributeCount(); idx++)\n"
-" {\n"
-" attributesDict[parser.GetAttributeName(idx)] = parser."
-"GetAttributeValue(idx);\n"
-" }\n"
-" GD.Print($\"元素 {nodeName} 包含的属性有:{attributesDict}\");\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Returns the number of attributes in the currently parsed element.\n"
"[b]Note:[/b] If this method is used while the currently parsed node is not "
"[constant NODE_ELEMENT] or [constant NODE_ELEMENT_END], this count will not "
@@ -146447,14 +146877,6 @@ msgid ""
msgstr "返回文本节点的内容。如果当前解析节点是其他类型,则会引发错误。"
msgid ""
-"Returns the name of an element node. This method will raise an error if the "
-"currently parsed node is not of [constant NODE_ELEMENT] or [constant "
-"NODE_ELEMENT_END] type."
-msgstr ""
-"返回元素节点的名称。如果当前解析节点既不是 [constant NODE_ELEMENT] 类型又不是 "
-"[constant NODE_ELEMENT_END] 类型,则会引发错误。"
-
-msgid ""
"Returns the byte offset of the currently parsed node since the beginning of "
"the file or buffer. This is usually equivalent to the number of characters "
"before the read position."
@@ -146535,6 +146957,30 @@ msgstr "未知节点类型。"
msgid "An anchor point in AR space."
msgstr "AR 空间中的锚点。"
+msgid ""
+"The [XRAnchor3D] point is an [XRNode3D] that maps a real world location "
+"identified by the AR platform to a position within the game world. For "
+"example, as long as plane detection in ARKit is on, ARKit will identify and "
+"update the position of planes (tables, floors, etc.) and create anchors for "
+"them.\n"
+"This node is mapped to one of the anchors through its unique ID. When you "
+"receive a signal that a new anchor is available, you should add this node to "
+"your scene for that anchor. You can predefine nodes and set the ID; the nodes "
+"will simply remain on 0,0,0 until a plane is recognized.\n"
+"Keep in mind that, as long as plane detection is enabled, the size, placing "
+"and orientation of an anchor will be updated as the detection logic learns "
+"more about the real world out there especially if only part of the surface is "
+"in view."
+msgstr ""
+"[XRAnchor3D] 点是一个 [XRNode3D],它将由 AR 平台识别的真实世界位置映射到游戏世"
+"界中的某个位置。例如,只要 ARKit 中的平面检测处于开启状态,ARKit 就会识别和更"
+"新平面(桌子、地板等)的位置,并为它们创建锚点。\n"
+"该节点通过其唯一 ID 映射到其中一个锚点。当收到新锚点可用的信号时,应该将该节点"
+"添加到该锚点的场景中。可以预定义节点并设置ID;节点将简单地保持在 0,0,0 上,直"
+"到识别出一个平面。\n"
+"请记住,只要启用了平面检测,锚点的大小、位置和方向都会随着检测逻辑了解更多关于"
+"真实世界的信息而更新,尤其是在只有部分表面在视野内时。"
+
msgid "XR documentation index"
msgstr "XR 文档索引"
@@ -146549,6 +146995,336 @@ msgstr ""
"返回检测到的平面的估计尺寸。比如当锚点与现实世界中的一张桌子有关时,这就是该桌"
"子表面的估计尺寸。"
+msgid "A node for driving body meshes from [XRBodyTracker] data."
+msgstr "用于从 [XRBodyTracker] 数据驱动身体网格的节点。"
+
+msgid ""
+"The name of the [XRBodyTracker] registered with [XRServer] to obtain the body "
+"tracking data from."
+msgstr "注册到 [XRServer] 的 [XRBodyTracker] 的名称,可从中获取身体跟踪数据。"
+
+msgid "Specifies the body parts to update."
+msgstr "指定要更新的身体部位。"
+
+msgid "Specifies the type of updates to perform on the bones."
+msgstr "指定要在骨骼上执行的更新类型。"
+
+msgid "The skeleton's upper body joints are updated."
+msgstr "骨架的上半身关节已更新。"
+
+msgid "The skeleton's lower body joints are updated."
+msgstr "骨架的下半身关节已更新。"
+
+msgid "The skeleton's hand joints are updated."
+msgstr "骨架的手部关节已更新。"
+
+msgid ""
+"The skeleton's bones are fully updated (both position and rotation) to match "
+"the tracked bones."
+msgstr "骨架的骨骼完全更新(位置和旋转)以匹配跟踪的骨骼。"
+
+msgid ""
+"The skeleton's bones are only rotated to align with the tracked bones, "
+"preserving bone length."
+msgstr "骨架的骨骼仅旋转以与跟踪的骨骼对齐,从而保留骨骼长度。"
+
+msgid "Represents the size of the [enum BoneUpdate] enum."
+msgstr "代表 [enum BoneUpdate] 枚举的大小。"
+
+msgid "A tracked body in XR."
+msgstr "XR 中跟踪的身体。"
+
+msgid ""
+"A body tracking system will create an instance of this object and add it to "
+"the [XRServer]. This tracking system will then obtain skeleton data, convert "
+"it to the Godot Humanoid skeleton and store this data on the [XRBodyTracker] "
+"object.\n"
+"Use [XRBodyModifier3D] to animate a body mesh using body tracking data."
+msgstr ""
+"身体跟踪系统将创建该对象的实例并将其添加到 [XRServer]。然后,该跟踪系统将获取"
+"骨架数据,将其转换为 Godot 类人型骨架,并将该数据存储在 [XRBodyTracker] 对象"
+"上。\n"
+"使用 [XRBodyModifier3D] 通过身体跟踪数据来动画化身体网格。"
+
+msgid ""
+"Returns flags about the validity of the tracking data for the given body "
+"joint (see [enum XRBodyTracker.JointFlags])."
+msgstr ""
+"返回有关给定身体关节的跟踪数据的有效性的标志(请参阅 [enum XRBodyTracker."
+"JointFlags])。"
+
+msgid "Returns the transform for the given body joint."
+msgstr "返回给定身体关节的变换。"
+
+msgid ""
+"Sets flags about the validity of the tracking data for the given body joint."
+msgstr "设置有关给定身体关节的跟踪数据的有效性的标志。"
+
+msgid "Sets the transform for the given body joint."
+msgstr "设置给定身体关节的变换。"
+
+msgid "The type of body tracking data captured."
+msgstr "捕获的身体跟踪数据的类型。"
+
+msgid "If [code]true[/code], the body tracking data is valid."
+msgstr "如果为 [code]true[/code],则身体跟踪数据有效。"
+
+msgid "Upper body tracking supported."
+msgstr "支持上半身跟踪。"
+
+msgid "Lower body tracking supported."
+msgstr "支持下半身跟踪。"
+
+msgid "Hand tracking supported."
+msgstr "支持手部跟踪。"
+
+msgid "Root joint."
+msgstr "根关节。"
+
+msgid "Hips joint."
+msgstr "髋关节。"
+
+msgid "Spine joint."
+msgstr "脊柱关节。"
+
+msgid "Chest joint."
+msgstr "胸关节。"
+
+msgid "Upper chest joint."
+msgstr "上胸关节。"
+
+msgid "Neck joint."
+msgstr "颈关节。"
+
+msgid "Head joint."
+msgstr "头关节。"
+
+msgid "Head tip joint."
+msgstr "头部尖端关节。"
+
+msgid "Left shoulder joint."
+msgstr "左肩关节。"
+
+msgid "Left upper arm joint."
+msgstr "左上臂关节。"
+
+msgid "Left lower arm joint."
+msgstr "左下臂关节。"
+
+msgid "Right shoulder joint."
+msgstr "右肩关节。"
+
+msgid "Right upper arm joint."
+msgstr "右上臂关节。"
+
+msgid "Right lower arm joint."
+msgstr "右下臂关节。"
+
+msgid "Left upper leg joint."
+msgstr "左大腿关节。"
+
+msgid "Left lower leg joint."
+msgstr "左小腿关节。"
+
+msgid "Left foot joint."
+msgstr "左脚关节。"
+
+msgid "Left toes joint."
+msgstr "左脚脚趾关节。"
+
+msgid "Right upper leg joint."
+msgstr "右大腿关节。"
+
+msgid "Right lower leg joint."
+msgstr "右小腿关节。"
+
+msgid "Right foot joint."
+msgstr "右脚关节。"
+
+msgid "Right toes joint."
+msgstr "右脚脚趾关节。"
+
+msgid "Left hand joint."
+msgstr "左手关节。"
+
+msgid "Left palm joint."
+msgstr "左掌关节。"
+
+msgid "Left wrist joint."
+msgstr "左腕关节。"
+
+msgid "Left thumb metacarpal joint."
+msgstr "左大拇指掌骨关节。"
+
+msgid "Left thumb phalanx proximal joint."
+msgstr "左大拇指指骨近端关节。"
+
+msgid "Left thumb phalanx distal joint."
+msgstr "左大拇指指骨远端关节。"
+
+msgid "Left thumb tip joint."
+msgstr "左大拇指指尖关节。"
+
+msgid "Left index finger metacarpal joint."
+msgstr "左食指掌骨关节。"
+
+msgid "Left index finger phalanx proximal joint."
+msgstr "左食指指骨近端关节。"
+
+msgid "Left index finger phalanx intermediate joint."
+msgstr "左食指指骨中间关节。"
+
+msgid "Left index finger phalanx distal joint."
+msgstr "左食指指骨远端关节。"
+
+msgid "Left index finger tip joint."
+msgstr "左食指指尖关节。"
+
+msgid "Left middle finger metacarpal joint."
+msgstr "左中指掌骨关节。"
+
+msgid "Left middle finger phalanx proximal joint."
+msgstr "左中指指骨近端关节。"
+
+msgid "Left middle finger phalanx intermediate joint."
+msgstr "左中指指骨中间关节。"
+
+msgid "Left middle finger phalanx distal joint."
+msgstr "左中指指骨远端关节。"
+
+msgid "Left middle finger tip joint."
+msgstr "左中指指尖关节。"
+
+msgid "Left ring finger metacarpal joint."
+msgstr "左无名指掌骨关节。"
+
+msgid "Left ring finger phalanx proximal joint."
+msgstr "左无名指指骨近端关节。"
+
+msgid "Left ring finger phalanx intermediate joint."
+msgstr "左无名指指骨中间关节。"
+
+msgid "Left ring finger phalanx distal joint."
+msgstr "左无名指指骨远端关节。"
+
+msgid "Left ring finger tip joint."
+msgstr "左无名指指尖关节。"
+
+msgid "Left pinky finger metacarpal joint."
+msgstr "左小指掌骨关节。"
+
+msgid "Left pinky finger phalanx proximal joint."
+msgstr "左小指指骨近端关节。"
+
+msgid "Left pinky finger phalanx intermediate joint."
+msgstr "左小指指骨中间关节。"
+
+msgid "Left pinky finger phalanx distal joint."
+msgstr "左小指指骨远端关节。"
+
+msgid "Left pinky finger tip joint."
+msgstr "左小指指尖关节。"
+
+msgid "Right hand joint."
+msgstr "右手关节。"
+
+msgid "Right palm joint."
+msgstr "右掌关节。"
+
+msgid "Right wrist joint."
+msgstr "右腕关节。"
+
+msgid "Right thumb metacarpal joint."
+msgstr "右大拇指掌骨关节。"
+
+msgid "Right thumb phalanx proximal joint."
+msgstr "右大拇指指骨近端关节。"
+
+msgid "Right thumb phalanx distal joint."
+msgstr "右大拇指指骨远端关节。"
+
+msgid "Right thumb tip joint."
+msgstr "右大拇指指尖关节。"
+
+msgid "Right index finger metacarpal joint."
+msgstr "右食指掌骨关节。"
+
+msgid "Right index finger phalanx proximal joint."
+msgstr "右食指指骨近端关节。"
+
+msgid "Right index finger phalanx intermediate joint."
+msgstr "右食指指骨中间关节。"
+
+msgid "Right index finger phalanx distal joint."
+msgstr "右食指指骨远端关节。"
+
+msgid "Right index finger tip joint."
+msgstr "右食指指尖关节。"
+
+msgid "Right middle finger metacarpal joint."
+msgstr "右中指掌骨关节。"
+
+msgid "Right middle finger phalanx proximal joint."
+msgstr "右中指指骨近端关节。"
+
+msgid "Right middle finger phalanx intermediate joint."
+msgstr "右中指指骨中间关节。"
+
+msgid "Right middle finger phalanx distal joint."
+msgstr "右中指指骨远端关节。"
+
+msgid "Right middle finger tip joint."
+msgstr "右中指指尖关节。"
+
+msgid "Right ring finger metacarpal joint."
+msgstr "右无名指掌骨关节。"
+
+msgid "Right ring finger phalanx proximal joint."
+msgstr "右无名指指骨近端关节。"
+
+msgid "Right ring finger phalanx intermediate joint."
+msgstr "右无名指指骨中间关节。"
+
+msgid "Right ring finger phalanx distal joint."
+msgstr "右无名指指骨远端关节。"
+
+msgid "Right ring finger tip joint."
+msgstr "右无名指指尖关节。"
+
+msgid "Right pinky finger metacarpal joint."
+msgstr "右小指掌骨关节。"
+
+msgid "Right pinky finger phalanx proximal joint."
+msgstr "右小指指骨近端关节。"
+
+msgid "Right pinky finger phalanx intermediate joint."
+msgstr "右小指指骨中间关节。"
+
+msgid "Right pinky finger phalanx distal joint."
+msgstr "右小指指骨远端关节。"
+
+msgid "Right pinky finger tip joint."
+msgstr "右小指指尖关节。"
+
+msgid "Represents the size of the [enum Joint] enum."
+msgstr "代表 [enum Joint] 枚举的大小。"
+
+msgid "The joint's orientation data is valid."
+msgstr "该关节的方向数据有效。"
+
+msgid ""
+"The joint's orientation is actively tracked. May not be set if tracking has "
+"been temporarily lost."
+msgstr "关节的方向是主动跟踪的。如果跟踪暂时丢失,则可能无法设置。"
+
+msgid "The joint's position data is valid."
+msgstr "该关节的位置数据有效。"
+
+msgid ""
+"The joint's position is actively tracked. May not be set if tracking has been "
+"temporarily lost."
+msgstr "关节的位置是主动跟踪的。如果跟踪暂时丢失,则可能无法设置。"
+
msgid ""
"A camera node with a few overrules for AR/VR applied, such as location "
"tracking."
@@ -146644,12 +147420,66 @@ msgstr "当该控制器上的触发器或类似输入更改值时发出。"
msgid "Emitted when a thumbstick or thumbpad on this controller is moved."
msgstr "当该控制器上的拇指杆或拇指板被移动时发出。"
+msgid "A node for driving standard face meshes from [XRFaceTracker] weights."
+msgstr "用于从 [XRFaceTracker] 权重驱动标准面部网格的节点。"
+
+msgid ""
+"This node applies weights from a [XRFaceTracker] to a mesh with supporting "
+"face blend shapes.\n"
+"The [url=https://docs.vrcft.io/docs/tutorial-avatars/tutorial-avatars-extras/"
+"unified-blendshapes]Unified Expressions[/url] blend shapes are supported, as "
+"well as ARKit and SRanipal blend shapes.\n"
+"The node attempts to identify blend shapes based on name matching. Blend "
+"shapes should match the names listed in the [url=https://docs.vrcft.io/docs/"
+"tutorial-avatars/tutorial-avatars-extras/compatibility/overview]Unified "
+"Expressions Compatibility[/url] chart."
+msgstr ""
+"该节点将 [XRFaceTracker] 的权重应用于具有支持面部混合形状的网格。\n"
+"支持[url=https://docs.vrcft.io/docs/tutorial-avatars/tutorial-avatars-extras/"
+"unified-blendshapes]统一表情[/url]混合形状,以及 ARKit 和 SRanipal 混合形"
+"状。\n"
+"该节点尝试根据名称匹配来识别混合形状。混合形状应与[url=https://docs.vrcft.io/"
+"docs/tutorial-avatars/tutorial-avatars-extras/compatibility/overview]统一表情"
+"兼容性[/url]图表中列出的名称匹配。"
+
msgid "The [XRFaceTracker] path."
msgstr "[XRFaceTracker] 路径。"
msgid "The [NodePath] of the face [MeshInstance3D]."
msgstr "面部 [MeshInstance3D] 的 [NodePath]。"
+msgid "A tracked face."
+msgstr "追踪的面部。"
+
+msgid ""
+"An instance of this object represents a tracked face and its corresponding "
+"blend shapes. The blend shapes come from the [url=https://docs.vrcft.io/docs/"
+"tutorial-avatars/tutorial-avatars-extras/unified-blendshapes]Unified "
+"Expressions[/url] standard, and contain extended details and visuals for each "
+"blend shape. Additionally the [url=https://docs.vrcft.io/docs/tutorial-"
+"avatars/tutorial-avatars-extras/compatibility/overview]Tracking Standard "
+"Comparison[/url] page documents the relationship between Unified Expressions "
+"and other standards.\n"
+"As face trackers are turned on they are registered with the [XRServer]."
+msgstr ""
+"该对象的实例表示跟踪的面部及其相应的混合形状。混合形状来自[url=https://docs."
+"vrcft.io/docs/tutorial-avatars/tutorial-avatars-extras/unified-blendshapes]统"
+"一表情[/url]标准,并包含每个混合形状的扩展细节和视觉效果。此外,[url=https://"
+"docs.vrcft.io/docs/tutorial-avatars/tutorial-avatars-extras/compatibility/"
+"overview]跟踪标准比较[/url]页面记录了统一表情和其他标准之间的关系。\n"
+"当面部跟踪器打开时,它们会在 [XRServer] 中注册。"
+
+msgid "Returns the requested face blend shape weight."
+msgstr "返回请求的面部混合形状权重。"
+
+msgid "Sets a face blend shape weight."
+msgstr "设置面部混合形状权重。"
+
+msgid ""
+"The array of face blend shape weights with indices corresponding to the [enum "
+"BlendShapeEntry] enum."
+msgstr "面部混合形状权重数组,其索引对应于 [enum BlendShapeEntry] 枚举。"
+
msgid "Right eye looks outwards."
msgstr "右眼向外看。"
@@ -146675,10 +147505,10 @@ msgid "Left eye looks downwards."
msgstr "左眼向下看。"
msgid "Closes the right eyelid."
-msgstr "闭右眼。"
+msgstr "闭上右眼睑。"
msgid "Closes the left eyelid."
-msgstr "闭左眼。"
+msgstr "闭上左眼睑。"
msgid "Squeezes the right eye socket muscles."
msgstr "收缩右眼眶肌肉。"
@@ -146687,10 +147517,10 @@ msgid "Squeezes the left eye socket muscles."
msgstr "收缩左眼眶肌肉。"
msgid "Right eyelid widens beyond relaxed."
-msgstr "右眼皮拉宽,超过放松位置。"
+msgstr "右眼睑睁大得超出了放松范围。"
msgid "Left eyelid widens beyond relaxed."
-msgstr "左眼皮拉宽,超过放松位置。"
+msgstr "左眼睑睁大得超出了放松范围。"
msgid "Dilates the right eye pupil."
msgstr "扩张右瞳孔。"
@@ -146705,10 +147535,10 @@ msgid "Constricts the left eye pupil."
msgstr "收缩左瞳孔。"
msgid "Right eyebrow pinches in."
-msgstr "收缩右眉毛。"
+msgstr "右眉毛向内收缩。"
msgid "Left eyebrow pinches in."
-msgstr "收缩左眉毛。"
+msgstr "左眉毛向内收缩。"
msgid "Outer right eyebrow pulls down."
msgstr "右眉毛外侧下拉。"
@@ -146759,22 +147589,94 @@ msgid "Puffs the left side cheek."
msgstr "鼓起左侧面颊。"
msgid "Sucks in the right side cheek."
-msgstr "吸起右侧面颊。"
+msgstr "吸进右侧脸颊。"
msgid "Sucks in the left side cheek."
-msgstr "吸起左侧面颊。"
+msgstr "吸进左侧面颊。"
+
+msgid "Opens jawbone."
+msgstr "张开颌骨。"
+
+msgid "Closes the mouth."
+msgstr "闭上嘴巴。"
msgid "Pushes jawbone right."
-msgstr "下颚骨右移。"
+msgstr "下颌骨右移。"
msgid "Pushes jawbone left."
-msgstr "下颚骨左移。"
+msgstr "下颌骨左移。"
msgid "Pushes jawbone forward."
-msgstr "下颚骨前移。"
+msgstr "下颌骨前移。"
msgid "Pushes jawbone backward."
-msgstr "下颚骨后移。"
+msgstr "下颌骨后移。"
+
+msgid "Flexes jaw muscles."
+msgstr "弯曲下颌肌肉。"
+
+msgid "Raises the jawbone."
+msgstr "抬高下颌骨。"
+
+msgid "Upper right lip part tucks in the mouth."
+msgstr "右上唇部分塞入嘴中。"
+
+msgid "Upper left lip part tucks in the mouth."
+msgstr "左上唇部分塞入嘴中。"
+
+msgid "Lower right lip part tucks in the mouth."
+msgstr "右下唇部分塞入嘴中。"
+
+msgid "Lower left lip part tucks in the mouth."
+msgstr "左下唇部分塞入嘴中。"
+
+msgid "Right lip corner folds into the mouth."
+msgstr "右唇角折入嘴中。"
+
+msgid "Left lip corner folds into the mouth."
+msgstr "左唇角折入嘴中。"
+
+msgid "Upper right lip part pushes into a funnel."
+msgstr "右上唇部分推成漏斗状。"
+
+msgid "Upper left lip part pushes into a funnel."
+msgstr "左上唇部分推成漏斗状。"
+
+msgid "Lower right lip part pushes into a funnel."
+msgstr "右下唇部分推成漏斗状。"
+
+msgid "Lower left lip part pushes into a funnel."
+msgstr "左下唇部分推成漏斗状。"
+
+msgid "Upper right lip part pushes outwards."
+msgstr "右上唇部分向外推。"
+
+msgid "Upper left lip part pushes outwards."
+msgstr "左上唇部分向外推。"
+
+msgid "Lower right lip part pushes outwards."
+msgstr "右下唇部分向外推。"
+
+msgid "Lower left lip part pushes outwards."
+msgstr "左下唇部分向外推。"
+
+msgid "Upper right part of the lip pulls up."
+msgstr "右上唇部分向上拉。"
+
+msgid "Upper left part of the lip pulls up."
+msgstr "左上唇部分向上拉。"
+
+msgid "Lower right part of the lip pulls up."
+msgstr "右下唇部分向上拉。"
+
+msgid "Lower left part of the lip pulls up."
+msgstr "左下唇部分向上拉。"
+
+msgid "Upper right lip part pushes in the cheek."
+msgstr "右上唇部分推入脸颊。"
+
+msgid "Upper left lip part pushes in the cheek."
+msgstr "左上唇部分推入脸颊。"
msgid "Moves upper lip right."
msgstr "上嘴唇向右移。"
@@ -146788,8 +147690,53 @@ msgstr "下嘴唇向右移。"
msgid "Moves lower lip left."
msgstr "下嘴唇向左移。"
+msgid "Right lip corner pulls diagonally up and out."
+msgstr "右唇角斜向上拉出。"
+
+msgid "Left lip corner pulls diagonally up and out."
+msgstr "左唇角斜向上拉出。"
+
+msgid "Right corner lip slants up."
+msgstr "右唇角上翘。"
+
+msgid "Left corner lip slants up."
+msgstr "左唇角上翘。"
+
+msgid "Right corner lip pulls down."
+msgstr "右唇角向下拉。"
+
+msgid "Left corner lip pulls down."
+msgstr "左唇角向下拉。"
+
+msgid "Mouth corner lip pulls out and down."
+msgstr "嘴角唇部向外拉并向下。"
+
+msgid "Right lip corner is pushed backwards."
+msgstr "右唇角向后推。"
+
+msgid "Left lip corner is pushed backwards."
+msgstr "左唇角向后推。"
+
+msgid "Raises and slightly pushes out the upper mouth."
+msgstr "上额抬起并稍微向外推出。"
+
+msgid "Raises and slightly pushes out the lower mouth."
+msgstr "下额抬起并稍微向外推出。"
+
+msgid "Right side lips press and flatten together vertically."
+msgstr "右侧嘴唇垂直压扁。"
+
+msgid "Left side lips press and flatten together vertically."
+msgstr "左侧嘴唇垂直压扁。"
+
+msgid "Right side lips squeeze together horizontally."
+msgstr "右侧嘴唇水平挤压在一起。"
+
+msgid "Left side lips squeeze together horizontally."
+msgstr "左侧嘴唇水平挤压在一起。"
+
msgid "Tongue visibly sticks out of the mouth."
-msgstr "舌头从嘴里伸出来,能够被人看到。"
+msgstr "舌头明显伸出嘴外。"
msgid "Tongue points upwards."
msgstr "舌尖朝上。"
@@ -146803,6 +147750,39 @@ msgstr "舌尖朝右。"
msgid "Tongue points left."
msgstr "舌尖朝左。"
+msgid "Sides of the tongue funnel, creating a roll."
+msgstr "舌头两侧呈漏斗形,形成卷曲。"
+
+msgid "Tongue arches up then down inside the mouth."
+msgstr "舌头在口腔内向上弯曲,然后向下弯曲。"
+
+msgid "Tongue arches down then up inside the mouth."
+msgstr "舌头在口腔内向下弯曲,然后向上弯曲。"
+
+msgid "Tongue squishes together and thickens."
+msgstr "舌头挤压在一起并变厚。"
+
+msgid "Tongue flattens and thins out."
+msgstr "舌头变平并且变薄。"
+
+msgid "Tongue tip rotates clockwise, with the rest following gradually."
+msgstr "舌尖顺时针旋转,其余部分逐渐跟随。"
+
+msgid "Tongue tip rotates counter-clockwise, with the rest following gradually."
+msgstr "舌尖逆时针旋转,其余部分逐渐跟随。"
+
+msgid "Inner mouth throat closes."
+msgstr "口腔内喉咙闭合。"
+
+msgid "The Adam's apple visibly swallows."
+msgstr "喉结明显吞咽。"
+
+msgid "Right side neck visibly flexes."
+msgstr "右侧颈部明显弯曲。"
+
+msgid "Left side neck visibly flexes."
+msgstr "左侧颈部明显弯曲。"
+
msgid "Closes both eye lids."
msgstr "闭上双眼。"
@@ -146818,6 +147798,15 @@ msgstr "扩张双瞳。"
msgid "Constricts both pupils."
msgstr "收缩双瞳。"
+msgid "Pulls the right eyebrow down and in."
+msgstr "将右眉向下拉并向内拉。"
+
+msgid "Pulls the left eyebrow down and in."
+msgstr "将左眉向下拉并向内拉。"
+
+msgid "Pulls both eyebrows down and in."
+msgstr "将双眉向下拉并向内拉。"
+
msgid "Right brow appears worried."
msgstr "右眉作发愁状。"
@@ -146827,6 +147816,57 @@ msgstr "左眉作发愁状。"
msgid "Both brows appear worried."
msgstr "双眉作发愁状。"
+msgid "Entire face sneers."
+msgstr "满脸冷笑。"
+
+msgid "Both nose canals dilate."
+msgstr "两侧鼻腔扩张。"
+
+msgid "Both nose canals constrict."
+msgstr "两侧鼻腔收缩。"
+
+msgid "Puffs both cheeks."
+msgstr "鼓起双颊。"
+
+msgid "Sucks in both cheeks."
+msgstr "吸进双颊。"
+
+msgid "Raises both cheeks."
+msgstr "抬起双颊。"
+
+msgid "Tucks in the upper lips."
+msgstr "收拢上唇。"
+
+msgid "Tucks in the lower lips."
+msgstr "收拢下唇。"
+
+msgid "Tucks in both lips."
+msgstr "收拢双唇。"
+
+msgid "Funnels in the upper lips."
+msgstr "上唇呈漏斗状。"
+
+msgid "Funnels in the lower lips."
+msgstr "下唇呈漏斗状。"
+
+msgid "Funnels in both lips."
+msgstr "双唇呈漏斗状。"
+
+msgid "Upper lip part pushes outwards."
+msgstr "上唇部分向外推。"
+
+msgid "Lower lip part pushes outwards."
+msgstr "下唇部分向外推。"
+
+msgid "Lips push outwards."
+msgstr "双唇向外推。"
+
+msgid "Raises the upper lips."
+msgstr "抬起上唇。"
+
+msgid "Lowers the lower lips."
+msgstr "降低下唇。"
+
msgid "Mouth opens, revealing teeth."
msgstr "张嘴,露出牙齿。"
@@ -146854,9 +147894,195 @@ msgstr "嘴巴左侧作悲伤状。"
msgid "Mouth expresses sadness."
msgstr "嘴巴作悲伤状。"
+msgid "Mouth stretches."
+msgstr "嘴巴伸长。"
+
+msgid "Lip corners dimple."
+msgstr "唇角有酒窝。"
+
+msgid "Mouth tightens."
+msgstr "嘴巴收紧。"
+
+msgid "Mouth presses together."
+msgstr "嘴巴紧贴在一起。"
+
msgid "Represents the size of the [enum BlendShapeEntry] enum."
msgstr "代表 [enum BlendShapeEntry] 枚举的大小。"
+msgid "A node for driving hand meshes from [XRHandTracker] data."
+msgstr "用于从 [XRHandTracker] 数据驱动手部网格的节点。"
+
+msgid ""
+"The name of the [XRHandTracker] registered with [XRServer] to obtain the hand "
+"tracking data from."
+msgstr "向 [XRServer] 注册的 [XRHandTracker] 的名称,可以从中获取手部跟踪数据。"
+
+msgid "A tracked hand in XR."
+msgstr "XR 中追踪的手。"
+
+msgid ""
+"A hand tracking system will create an instance of this object and add it to "
+"the [XRServer]. This tracking system will then obtain skeleton data, convert "
+"it to the Godot Humanoid hand skeleton and store this data on the "
+"[XRHandTracker] object.\n"
+"Use [XRHandModifier3D] to animate a hand mesh using hand tracking data."
+msgstr ""
+"手部跟踪系统将创建该对象的实例并将其添加到 [XRServer]。然后,该跟踪系统将获取"
+"骨骼数据,将其转换为 Godot 人形手部骨骼,并将该数据存储在 [XRHandTracker] 对象"
+"上。\n"
+"使用 [XRHandModifier3D] 通过手部跟踪数据动画化手部网格。"
+
+msgid "Returns the angular velocity for the given hand joint."
+msgstr "返回给定手部关节的角速度。"
+
+msgid ""
+"Returns flags about the validity of the tracking data for the given hand "
+"joint (see [enum XRHandTracker.HandJointFlags])."
+msgstr ""
+"返回有关给定手部关节的跟踪数据的有效性的标志(请参阅 [enum XRHandTracker."
+"HandJointFlags])。"
+
+msgid "Returns the linear velocity for the given hand joint."
+msgstr "返回给定手部关节的线速度。"
+
+msgid "Returns the radius of the given hand joint."
+msgstr "返回给定手部关节的半径。"
+
+msgid "Returns the transform for the given hand joint."
+msgstr "返回给定手部关节的变换。"
+
+msgid "Sets the angular velocity for the given hand joint."
+msgstr "设置给定手部关节的角速度。"
+
+msgid ""
+"Sets flags about the validity of the tracking data for the given hand joint."
+msgstr "设置有关给定手部关节的跟踪数据的有效性的标志。"
+
+msgid "Sets the linear velocity for the given hand joint."
+msgstr "设置给定手部关节的线速度。"
+
+msgid "Sets the radius of the given hand joint."
+msgstr "设置给定手部关节的半径。"
+
+msgid "Sets the transform for the given hand joint."
+msgstr "设置给定手部关节的变换。"
+
+msgid "The source of the hand tracking data."
+msgstr "手部追踪数据的来源。"
+
+msgid "If [code]true[/code], the hand tracking data is valid."
+msgstr "如果为 [code]true[/code],则手部追踪数据有效。"
+
+msgid "The source of hand tracking data is unknown."
+msgstr "手部追踪数据的来源未知。"
+
+msgid ""
+"The source of hand tracking data is unobstructed, meaning that an accurate "
+"method of hand tracking is used. These include optical hand tracking, data "
+"gloves, etc."
+msgstr ""
+"手部追踪数据来源畅通,这意味着使用了准确的手部追踪方法。其中包括光学手部追踪、"
+"数据手套等。"
+
+msgid ""
+"The source of hand tracking data is a controller, meaning that joint "
+"positions are inferred from controller inputs."
+msgstr "手部跟踪数据的来源是控制器,这意味着关节位置是根据控制器输入推断的。"
+
+msgid "Represents the size of the [enum HandTrackingSource] enum."
+msgstr "代表 [enum HandTrackingSource] 枚举的大小。"
+
+msgid "Thumb phalanx proximal joint."
+msgstr "大拇指指骨近端关节。"
+
+msgid "Thumb phalanx distal joint."
+msgstr "大拇指指骨远端关节。"
+
+msgid "Index finger metacarpal joint."
+msgstr "食指掌骨关节。"
+
+msgid "Index finger phalanx proximal joint."
+msgstr "食指指骨近端关节。"
+
+msgid "Index finger phalanx intermediate joint."
+msgstr "食指指骨中间关节。"
+
+msgid "Index finger phalanx distal joint."
+msgstr "食指指骨远端关节。"
+
+msgid "Index finger tip joint."
+msgstr "食指指尖关节。"
+
+msgid "Middle finger metacarpal joint."
+msgstr "中指掌骨关节。"
+
+msgid "Middle finger phalanx proximal joint."
+msgstr "中指指骨近端关节。"
+
+msgid "Middle finger phalanx intermediate joint."
+msgstr "中指指骨中间关节。"
+
+msgid "Middle finger phalanx distal joint."
+msgstr "中指指骨远端关节。"
+
+msgid "Middle finger tip joint."
+msgstr "中指指尖关节。"
+
+msgid "Ring finger metacarpal joint."
+msgstr "无名指掌骨关节。"
+
+msgid "Ring finger phalanx proximal joint."
+msgstr "无名指指骨近端关节。"
+
+msgid "Ring finger phalanx intermediate joint."
+msgstr "无名指指骨中间关节。"
+
+msgid "Ring finger phalanx distal joint."
+msgstr "无名指指骨远端关节。"
+
+msgid "Ring finger tip joint."
+msgstr "无名指指尖关节。"
+
+msgid "Pinky finger metacarpal joint."
+msgstr "小指掌骨关节。"
+
+msgid "Pinky finger phalanx proximal joint."
+msgstr "小指指骨近端关节。"
+
+msgid "Pinky finger phalanx intermediate joint."
+msgstr "小指指骨中间关节。"
+
+msgid "Pinky finger phalanx distal joint."
+msgstr "小指指骨远端关节。"
+
+msgid "Pinky finger tip joint."
+msgstr "小指指尖关节。"
+
+msgid "Represents the size of the [enum HandJoint] enum."
+msgstr "代表 [enum HandJoint] 枚举的大小。"
+
+msgid "The hand joint's orientation data is valid."
+msgstr "手部关节的方向数据有效。"
+
+msgid ""
+"The hand joint's orientation is actively tracked. May not be set if tracking "
+"has been temporarily lost."
+msgstr "手部关节的方向是主动跟踪的。如果跟踪暂时丢失,则可能无法设置。"
+
+msgid "The hand joint's position data is valid."
+msgstr "手部关节的位置数据有效。"
+
+msgid ""
+"The hand joint's position is actively tracked. May not be set if tracking has "
+"been temporarily lost."
+msgstr "手部关节的位置是主动跟踪的。如果跟踪暂时丢失,则可能无法设置。"
+
+msgid "The hand joint's linear velocity data is valid."
+msgstr "手部关节的线速度数据有效。"
+
+msgid "The hand joint's angular velocity data is valid."
+msgstr "手部关节的角速度数据有效。"
+
msgid "Base class for an XR interface implementation."
msgstr "XR 接口实现的基类。"
@@ -146880,14 +148106,33 @@ msgid ""
"background, this method returns the feed ID in the [CameraServer] for this "
"interface."
msgstr ""
-"如果这是一个需要显示相机画面作为背景的 AR 界面,此方法返回该界面的 "
-"[CameraServer] 中的画面 ID。"
+"如果该 AR 接口要求将相机画面作为背景显示,那么该方法就会返回该接口 "
+"[CameraServer] 的画面 ID。"
msgid ""
"Returns a combination of [enum Capabilities] flags providing information "
"about the capabilities of this interface."
msgstr "返回 [enum Capabilities] 标签的组合,提供关于这个接口功能的信息。"
+msgid ""
+"Returns the name of this interface ([code]\"OpenXR\"[/code], "
+"[code]\"OpenVR\"[/code], [code]\"OpenHMD\"[/code], [code]\"ARKit\"[/code], "
+"etc.)."
+msgstr ""
+"返回该接口的名称([code]\"OpenXR\"[/code]、[code]\"OpenVR\"[/code]、"
+"[code]\"OpenHMD\"[/code]、[code]\"ARKit\"[/code] 等)。"
+
+msgid ""
+"Returns an array of vectors that represent the physical play area mapped to "
+"the virtual space around the [XROrigin3D] point. The points form a convex "
+"polygon that can be used to react to or visualize the play area. This returns "
+"an empty array if this feature is not supported or if the information is not "
+"yet available."
+msgstr ""
+"返回一个向量数组,表示映射到 [XROrigin3D] 点周围的虚拟空间的物理游玩区域。这些"
+"点形成一个凸多边形,可被用于对游玩区域做出反应或可视化。如果该功能不受支持或信"
+"息尚不可用,则返回一个空数组。"
+
msgid "Returns the projection matrix for a view/eye."
msgstr "返回视图/眼睛的投影矩阵。"
@@ -146973,6 +148218,40 @@ msgid "Returns [code]true[/code] if this interface has been initialized."
msgstr "如果这个接口已初始化,则返回 [code]true[/code]。"
msgid ""
+"Check if [member environment_blend_mode] is [constant XRInterface."
+"XR_ENV_BLEND_MODE_ALPHA_BLEND], instead."
+msgstr ""
+"改为检查 [member environment_blend_mode] 是否为 [constant XRInterface."
+"XR_ENV_BLEND_MODE_ALPHA_BLEND]。"
+
+msgid "Returns [code]true[/code] if passthrough is enabled."
+msgstr "如果已启用穿透,则返回 [code]true[/code]。"
+
+msgid ""
+"Check that [constant XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND] is supported "
+"using [method get_supported_environment_blend_modes], instead."
+msgstr ""
+"改为使用 [method get_supported_environment_blend_modes] 检查是否支持 "
+"[constant XRInterface.XR_ENV_BLEND_MODE_ALPHA_BLEND]。"
+
+msgid "Returns [code]true[/code] if this interface supports passthrough."
+msgstr "如果该接口支持穿透,则返回 [code]true[/code]。"
+
+msgid ""
+"Sets the active play area mode, will return [code]false[/code] if the mode "
+"can't be used with this interface.\n"
+"[b]Note:[/b] Changing this after the interface has already been initialized "
+"can be jarring for the player, so it's recommended to recenter on the HMD "
+"with [method XRServer.center_on_hmd] (if switching to [constant XRInterface."
+"XR_PLAY_AREA_STAGE]) or make the switch during a scene change."
+msgstr ""
+"设置活动的游玩区域模式,如果该模式不能与该接口一起使用,将返回 [code]false[/"
+"code]。\n"
+"[b]注意:[/b]在接口初始化后更改该设置可能会让玩家感到不舒服,因此建议使用 "
+"[method XRServer.center_on_hmd] 在 HMD 上重新居中(如果切换到 [constant "
+"XRInterface.XR_PLAY_AREA_STAGE])或在场景改变时进行切换。"
+
+msgid ""
"Set the [member environment_blend_mode] to [constant XRInterface."
"XR_ENV_BLEND_MODE_ALPHA_BLEND], instead."
msgstr ""
@@ -147009,7 +148288,7 @@ msgid ""
"[param tracker_name] is optional and can be used to direct the pulse to a "
"specific device provided that device is bound to this haptic."
msgstr ""
-"在与该界面相关联的设备上触发一次触觉脉冲。\n"
+"在与该接口相关联的设备上触发一次触觉脉冲。\n"
"[param action_name] 是该脉冲的动作名称。\n"
"[param tracker_name] 是可选的,可用于将脉冲引导至特定设备,前提是该设备被绑定"
"到此触觉。"
@@ -147175,6 +148454,11 @@ msgstr "返回接受渲染结果的深度纹理(如果适用)。"
msgid "Returns the name of this interface."
msgstr "返回该接口的名称。"
+msgid ""
+"Returns a [PackedVector3Array] that represents the play areas boundaries (if "
+"applicable)."
+msgstr "返回表示游戏区域边界的 [PackedVector3Array](如果适用)。"
+
msgid "Returns the play area mode that sets up our play area."
msgstr "返回设置游戏区域的模式。"
@@ -147355,6 +148639,31 @@ msgid "The origin point in AR/VR."
msgstr "AR/VR 的原点。"
msgid ""
+"This is a special node within the AR/VR system that maps the physical "
+"location of the center of our tracking space to the virtual location within "
+"our game world.\n"
+"Multiple origin points can be added to the scene tree, but only one can used "
+"at a time. All the [XRCamera3D], [XRController3D], and [XRAnchor3D] nodes "
+"should be direct children of this node for spatial tracking to work "
+"correctly.\n"
+"It is the position of this node that you update when your character needs to "
+"move through your game world while we're not moving in the real world. "
+"Movement in the real world is always in relation to this origin point.\n"
+"For example, if your character is driving a car, the [XROrigin3D] node should "
+"be a child node of this car. Or, if you're implementing a teleport system to "
+"move your character, you should change the position of this node."
+msgstr ""
+"这是 AR/VR 系统中的一个特殊节点,会将我们跟踪空间中心的物理位置映射到游戏世界"
+"中的虚拟位置。\n"
+"场景树中可以添加多个原点,但一次只能使用一个。所有 [XRCamera3D]、"
+"[XRController3D] 和 [XRAnchor3D] 节点都应该是该节点的直接子节点,以便空间跟踪"
+"正常工作。\n"
+"当你的角色需要在游戏世界中移动而不在现实世界中移动时,就要更新此节点的位置。现"
+"实世界中的运动始终是相对于这个原点的。\n"
+"例如,如果你的角色正在驾驶汽车,则 [XROrigin3D] 节点应该是这辆车的子节点。或"
+"者,如果要实现通过传送系统来移动角色,则应该更改此节点的位置。"
+
+msgid ""
"If [code]true[/code], this origin node is currently being used by the "
"[XRServer]. Only one origin point can be used at a time."
msgstr ""
@@ -147445,30 +148754,13 @@ msgstr ""
"追踪信息可能不准确或是估计而来的。例如,对于内向外型追踪,这表示的是控制器可能"
"被(部分)遮挡。"
+msgid "Tracking information is considered accurate and up to date."
+msgstr "追踪信息被认为是准确且最新的。"
+
msgid "A tracked object."
msgstr "追踪对象。"
msgid ""
-"An instance of this object represents a device that is tracked, such as a "
-"controller or anchor point. HMDs aren't represented here as they are handled "
-"internally.\n"
-"As controllers are turned on and the [XRInterface] detects them, instances of "
-"this object are automatically added to this list of active tracking objects "
-"accessible through the [XRServer].\n"
-"The [XRController3D] and [XRAnchor3D] both consume objects of this type and "
-"should be used in your project. The positional trackers are just under-the-"
-"hood objects that make this all work. These are mostly exposed so that "
-"GDExtension-based interfaces can interact with them."
-msgstr ""
-"此对象的一个实例,表示一个被追踪的设备,例如一个控制器或锚点。HMD 没有在此处表"
-"示,因为它们是在内部处理的。\n"
-"当控制器被打开,并且 [XRInterface] 检测到它们时,此对象的实例会自动被添加到可"
-"通过 [XRServer] 访问的活动追踪对象列表中。\n"
-"[XRController3D] 和 [XRAnchor3D] 都使用这种类型的对象,并且应该在你的项目中使"
-"用。位置追踪器只是使这一切正常工作的底层对象。这些大部分都是公开的,以便基于 "
-"GDExtension 的接口,可以与它们交互。"
-
-msgid ""
"Returns an input for this tracker. It can return a boolean, float or "
"[Vector2] value depending on whether the input is a button, trigger or "
"thumbstick/thumbpad."
@@ -147508,34 +148800,13 @@ msgstr ""
"设置给定姿势的变换、线速度、角速度和追踪置信度。此方法由一个 [XRInterface] 实"
"现调用,不应直接使用。"
-msgid "The description of this tracker."
-msgstr "此追踪器的描述。"
-
msgid "Defines which hand this tracker relates to."
msgstr "定义此追踪器与哪只手相关。"
msgid ""
-"The unique name of this tracker. The trackers that are available differ "
-"between various XR runtimes and can often be configured by the user. Godot "
-"maintains a number of reserved names that it expects the [XRInterface] to "
-"implement if applicable:\n"
-"- [code]left_hand[/code] identifies the controller held in the players left "
-"hand\n"
-"- [code]right_hand[/code] identifies the controller held in the players right "
-"hand"
-msgstr ""
-"此追踪器的唯一名称。可用的追踪器因各种 XR 运行时而异,并且通常可以由用户配置。"
-"Godot 维护了一些保留名称,如果可应用,它希望 [XRInterface] 来实现:\n"
-"- [code]left_hand[/code] 标识玩家左手握持的控制器\n"
-"- [code]right_hand[/code] 标识玩家右手握持的控制器"
-
-msgid ""
"The profile associated with this tracker, interface dependent but will "
"indicate the type of controller being tracked."
-msgstr "与此追踪器关联的配置,取决于界面,但将指示被追踪的控制器类型。"
-
-msgid "The type of tracker."
-msgstr "该追踪器的类型。"
+msgstr "与此追踪器关联的配置,取决于接口,但将指示被追踪的控制器类型。"
msgid ""
"Emitted when a button on this tracker is pressed. Note that many XR runtimes "
@@ -147574,25 +148845,17 @@ msgid "This tracker is the right hand controller."
msgstr "此跟踪器是右手控制器。"
msgid "Server for AR and VR features."
-msgstr "用于 AR 和 VR 功能的服务。"
+msgstr "用于 AR 和 VR 功能的服务器。"
msgid ""
"The AR/VR server is the heart of our Advanced and Virtual Reality solution "
"and handles all the processing."
msgstr "AR/VR 服务器是我们“高级虚拟现实”解决方案的核心,负责执行所有处理。"
-msgid "Registers a new [XRFaceTracker] that tracks the blend shapes of a face."
-msgstr "注册一个新的 [XRFaceTracker],用于跟踪面部的混合形状。"
-
msgid "Registers an [XRInterface] object."
msgstr "注册一个 [XRInterface] 对象。"
msgid ""
-"Registers a new [XRPositionalTracker] that tracks a spatial location in real "
-"space."
-msgstr "注册一个新的 [XRPositionalTracker],用于跟踪现实空间中的一个空间位置。"
-
-msgid ""
"This is an important function to understand correctly. AR and VR platforms "
"all handle positioning slightly differently.\n"
"For platforms that do not offer spatial tracking, our origin point (0, 0, 0) "
@@ -147625,6 +148888,11 @@ msgstr ""
"按钮一小段时间,或者当实现传送机制时。"
msgid ""
+"Clears the reference frame that was set by previous calls to [method "
+"center_on_hmd]."
+msgstr "清除之前调用 [method center_on_hmd] 设置的参考帧。"
+
+msgid ""
"Finds an interface by its [param name]. For example, if your project uses "
"capabilities of an AR/VR platform, you can find the interface for that "
"platform by name and initialize it."
@@ -147632,18 +148900,8 @@ msgstr ""
"通过名称 [param name] 查找接口。例如,如果你的项目使用 AR/VR 平台的功能,你可"
"以通过名称找到该平台的接口并初始化。"
-msgid "Returns the [XRFaceTracker] with the given tracker name."
-msgstr "返回给定跟踪器名称的 [XRFaceTracker]。"
-
-msgid ""
-"Returns a dictionary of the registered face trackers. Each element of the "
-"dictionary is a tracker name mapping to the [XRFaceTracker] instance."
-msgstr ""
-"返回已注册面部跟踪器的字典。每个元素都是跟踪器的名称,映射到 [XRFaceTracker] "
-"实例。"
-
msgid "Returns the primary interface's transformation."
-msgstr "返回主界面的变换。"
+msgstr "返回主接口的变换。"
msgid ""
"Returns the interface registered at the given [param idx] index in the list "
@@ -147657,13 +148915,13 @@ msgid ""
"try to initialize each interface and use the first one that returns "
"[code]true[/code]."
msgstr ""
-"返回当前在AR/VR服务上注册的界面数量。如果你的项目支持多个AR/VR平台,你可以查看"
-"可用的界面,并向用户展示一个选择,或者简单地尝试初始化每个界面,并使用第一个返"
-"回 [code]true[/code]的界面。"
+"返回当前在 AR/VR 服务器上注册的接口数量。如果你的项目支持多个AR/VR平台,你可以"
+"查看可用的接口,并向用户展示一个选择,或者简单地尝试初始化每个接口,并使用第一"
+"个返回 [code]true[/code] 的接口。"
msgid ""
"Returns a list of available interfaces the ID and name of each interface."
-msgstr "返回可用界面的列表,每个界面的ID和名称。"
+msgstr "返回可用接口的列表,每个接口的 ID 和名称。"
msgid ""
"Returns the reference frame transform. Mostly used internally and exposed for "
@@ -147676,15 +148934,9 @@ msgstr "返回具有给定 [param tracker_name] 的位置追踪器。"
msgid "Returns a dictionary of trackers for [param tracker_types]."
msgstr "返回 [param tracker_types] 的追踪器字典。"
-msgid "Removes a registered [XRFaceTracker]."
-msgstr "删除已注册的[XRFaceTracker]。"
-
msgid "Removes this [param interface]."
msgstr "移除该 [param interface]。"
-msgid "Removes this positional [param tracker]."
-msgstr "移除该位置 [param tracker]。"
-
msgid "The primary [XRInterface] currently bound to the [XRServer]."
msgstr "当前绑定到 [XRServer] 的主 [XRInterface]。"
@@ -147706,15 +148958,6 @@ msgstr ""
"游戏世界相对于现实世界的缩放。默认情况下,大多数 AR/VR 平台假定 1 个游戏世界单"
"位等于现实世界的 1 米。"
-msgid "Emitted when a new face tracker is added."
-msgstr "添加新的面部跟踪器时发出。"
-
-msgid "Emitted when a face tracker is removed."
-msgstr "移除面部跟踪器时发出。"
-
-msgid "Emitted when an existing face tracker is updated."
-msgstr "更新已有面部跟踪器时发出。"
-
msgid ""
"Emitted when a new tracker has been added. If you don't use a fixed number of "
"controllers or if you're using [XRAnchor3D]s for an AR solution, it is "
@@ -147787,6 +149030,12 @@ msgid ""
"gets centered."
msgstr "不重置 HMD 的方向,只让玩家的位置居中。"
+msgid "The description of this tracker."
+msgstr "此追踪器的描述。"
+
+msgid "The type of tracker."
+msgstr "该追踪器的类型。"
+
msgid "Allows the creation of zip files."
msgstr "允许创建 zip 文件。"
diff --git a/doc/translations/zh_TW.po b/doc/translations/zh_TW.po
index f1699712bf..638f8c86fd 100644
--- a/doc/translations/zh_TW.po
+++ b/doc/translations/zh_TW.po
@@ -247,48 +247,6 @@ msgstr ""
"請使用 [method Color.is_equal_approx] 進行比較,避免浮點數精度誤差。"
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 and speed < 20) # 你還可以在單次檢查中合併兩個條件陳述式\n"
-"assert(speed < 20, \"限速為 20\") # 顯示消息。\n"
-"[/codeblock]"
-
-msgid ""
"Returns a single character (as a [String]) of the given Unicode code point "
"(which is compatible with ASCII code).\n"
"[codeblock]\n"
@@ -312,294 +270,6 @@ msgstr ""
"Object 實例。在反序列化時可能很有用。"
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 ""
-"返回一個表示目前呼叫堆疊的字典陣列。另請參閱 [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"
-"從 [code]_ready()[/code] 開始,[code]bar()[/code] 將列印:\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]注意:[/b]只有在運作的實例連接到除錯伺服器(即編輯器實例)後,該函式才有"
-"效。[method get_stack] 不適用於以發行模式匯出的專案;或者在未連接到除錯伺服器"
-"的情況下,以除錯模式匯出的專案。\n"
-"[b]注意:[/b]不支援從 [Thread] 呼叫此函式。這樣做將返回一個空陣列。"
-
-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 ""
-"返回傳入的 [param instance] 轉換為的字典。可用於序列化。\n"
-"[b]注意:[/b]不能用於序列化附加了內建腳本的物件,或在內建腳本中分配的對象。\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"
-"輸出:\n"
-"[codeblock]\n"
-"[@subpath, @path, foo]\n"
-"[, res://test.gd, bar]\n"
-"[/codeblock]"
-
-msgid ""
-"Returns [code]true[/code] if [param value] is an instance of [param type]. "
-"The [param type] value must be one of the following:\n"
-"- A constant from the [enum Variant.Type] enumeration, for example [constant "
-"TYPE_INT].\n"
-"- An [Object]-derived class which exists in [ClassDB], for example [Node].\n"
-"- A [Script] (you can use any class, including inner one).\n"
-"Unlike the right operand of the [code]is[/code] operator, [param type] can be "
-"a non-constant value. The [code]is[/code] operator supports more features "
-"(such as typed arrays) and is more performant. Use the operator instead of "
-"this method if you do not need dynamic type checking.\n"
-"Examples:\n"
-"[codeblock]\n"
-"print(is_instance_of(a, TYPE_INT))\n"
-"print(is_instance_of(a, Node))\n"
-"print(is_instance_of(a, MyClass))\n"
-"print(is_instance_of(a, MyClass.InnerClass))\n"
-"[/codeblock]\n"
-"[b]Note:[/b] If [param value] and/or [param type] are freed objects (see "
-"[method @GlobalScope.is_instance_valid]), or [param type] is not one of the "
-"above options, this method will raise a runtime error.\n"
-"See also [method @GlobalScope.typeof], [method type_exists], [method Array."
-"is_same_typed] (and other [Array] methods)."
-msgstr ""
-"如果 [param value] 為 [param type] 型別的實例,則返回 [code]true[/code]。"
-"[param type] 的值必須為下列值之一:\n"
-"- [enum Variant.Type] 列舉常數,例如 [constant TYPE_INT]。\n"
-"- [ClassDB] 中存在的衍生自 [Object] 的類,例如 [Node]。\n"
-"- [Script](可以用任何類,包括內部類)。\n"
-"[param type] 可以不是常數,這一點與 [code]is[/code] 的右運算元不同。[code]is[/"
-"code] 運算子支援的功能更多(例如型別化陣列),性能也更高。如果你不需要動態型別"
-"檢查,請使用該運算子,不要使用此方法。\n"
-"範例:\n"
-"[codeblock]\n"
-"print(is_instance_of(a, TYPE_INT))\n"
-"print(is_instance_of(a, Node))\n"
-"print(is_instance_of(a, MyClass))\n"
-"print(is_instance_of(a, MyClass.InnerClass))\n"
-"[/codeblock]\n"
-"[b]注意:[/b]如果 [param value] 和/或 [param type] 為已釋放的對象(見 [method "
-"@GlobalScope.is_instance_valid]),或者 [param type] 不是以上選項之一,則此方"
-"法會報執行階段錯誤。\n"
-"另見 [method @GlobalScope.typeof]、[method type_exists]、[method Array."
-"is_same_typed](以及其他 [Array] 方法)。"
-
-msgid ""
-"Returns a [Resource] from the filesystem located at [param path]. During run-"
-"time, the resource is loaded when the script is being parsed. This function "
-"effectively acts as a reference to that resource. Note that this function "
-"requires [param path] to be a constant [String]. If you want to load a "
-"resource from a dynamic/variable path, use [method load].\n"
-"[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource "
-"in the Assets Panel and choosing \"Copy Path\", or by dragging the file from "
-"the FileSystem dock into the current script.\n"
-"[codeblock]\n"
-"# Create instance of a scene.\n"
-"var diamond = preload(\"res://diamond.tscn\").instantiate()\n"
-"[/codeblock]"
-msgstr ""
-"返回一個位於檔案系統絕對路徑[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"
-"The output in the console may look like the following:\n"
-"[codeblock]\n"
-"Test print\n"
-"At: res://test.gd:15:_process()\n"
-"[/codeblock]\n"
-"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing so "
-"will instead print the thread ID."
-msgstr ""
-"與 [method @GlobalScope.print] 類似,但在打開除錯器運作時還會包含目前堆疊影"
-"格。\n"
-"控制台中的輸出應該是類似這樣的:\n"
-"[codeblock]\n"
-"Test print\n"
-"At: res://test.gd:15:_process()\n"
-"[/codeblock]\n"
-"[b]注意:[/b]不支援從 [Thread] 中呼叫此方法。呼叫時會輸出執行緒 ID。"
-
-msgid ""
-"Prints a stack trace at the current code location. See also [method "
-"get_stack].\n"
-"The output in the console may look like the following:\n"
-"[codeblock]\n"
-"Frame 0 - res://test.gd:16 in function '_process'\n"
-"[/codeblock]\n"
-"[b]Note:[/b] This function only works if the running instance is connected to "
-"a debugging server (i.e. an editor instance). [method print_stack] will not "
-"work in projects exported in release mode, or in projects exported in debug "
-"mode if not connected to a debugging server.\n"
-"[b]Note:[/b] Calling this function from a [Thread] is not supported. Doing so "
-"will instead print the thread ID."
-msgstr ""
-"輸出目前程式碼位置的堆疊追蹤。另請參閱 [method get_stack]。\n"
-"控制台中的輸出是類似這樣的:\n"
-"[codeblock]\n"
-"Frame 0 - res://test.gd:16 in function '_process'\n"
-"[/codeblock]\n"
-"[b]注意:[/b]只有在運作的實例連接到除錯伺服器(即編輯器實例)後,該函式才有"
-"效。[method print_stack] 不適用於以發行模式匯出的專案;或者在未連接到除錯服務"
-"器的情況下,以除錯模式匯出的專案。\n"
-"[b]注意:[/b]不支援從 [Thread] 呼叫此函式。這樣做將改為列印執行緒 ID。"
-
-msgid ""
-"Returns an array with the given range. [method range] can be called in three "
-"ways:\n"
-"[code]range(n: int)[/code]: Starts from 0, increases by steps of 1, and stops "
-"[i]before[/i] [code]n[/code]. The argument [code]n[/code] is [b]exclusive[/"
-"b].\n"
-"[code]range(b: int, n: int)[/code]: Starts from [code]b[/code], increases by "
-"steps of 1, and stops [i]before[/i] [code]n[/code]. The arguments [code]b[/"
-"code] and [code]n[/code] are [b]inclusive[/b] and [b]exclusive[/b], "
-"respectively.\n"
-"[code]range(b: int, n: int, s: int)[/code]: Starts from [code]b[/code], "
-"increases/decreases by steps of [code]s[/code], and stops [i]before[/i] "
-"[code]n[/code]. The arguments [code]b[/code] and [code]n[/code] are "
-"[b]inclusive[/b] and [b]exclusive[/b], respectively. The argument [code]s[/"
-"code] [b]can[/b] be negative, but not [code]0[/code]. If [code]s[/code] is "
-"[code]0[/code], an error message is printed.\n"
-"[method range] converts all arguments to [int] before processing.\n"
-"[b]Note:[/b] Returns an empty array if no value meets the value constraint (e."
-"g. [code]range(2, 5, -1)[/code] or [code]range(5, 5, 1)[/code]).\n"
-"Examples:\n"
-"[codeblock]\n"
-"print(range(4)) # Prints [0, 1, 2, 3]\n"
-"print(range(2, 5)) # Prints [2, 3, 4]\n"
-"print(range(0, 6, 2)) # Prints [0, 2, 4]\n"
-"print(range(4, 1, -1)) # Prints [4, 3, 2]\n"
-"[/codeblock]\n"
-"To iterate over an [Array] backwards, use:\n"
-"[codeblock]\n"
-"var array = [3, 6, 9]\n"
-"for i in range(array.size() - 1, -1, -1):\n"
-" print(array[i])\n"
-"[/codeblock]\n"
-"Output:\n"
-"[codeblock]\n"
-"9\n"
-"6\n"
-"3\n"
-"[/codeblock]\n"
-"To iterate over [float], convert them in the loop.\n"
-"[codeblock]\n"
-"for i in range (3, 0, -1):\n"
-" print(i / 10.0)\n"
-"[/codeblock]\n"
-"Output:\n"
-"[codeblock]\n"
-"0.3\n"
-"0.2\n"
-"0.1\n"
-"[/codeblock]"
-msgstr ""
-"返回具有給定範圍的陣列。[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"
-"[method range] 會先將所有參數轉換為 [int] 再進行處理。\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"
-"print(range(2, 5)) # 輸出 [2, 3, 4]\n"
-"print(range(0, 6, 2)) # 輸出 [0, 2, 4]\n"
-"print(range(4, 1, -1)) # 輸出 [4, 3, 2]\n"
-"[/codeblock]\n"
-"要反向走訪 [Array],請使用:\n"
-"[codeblock]\n"
-"var array = [3, 6, 9]\n"
-"for i in range(array.size() - 1, -1, -1):\n"
-" print(array[i])\n"
-"[/codeblock]\n"
-"輸出:\n"
-"[codeblock]\n"
-"9\n"
-"6\n"
-"3\n"
-"[/codeblock]\n"
-"要走訪 [float],請在迴圈中進行轉換。\n"
-"[codeblock]\n"
-"for i in range (3, 0, -1):\n"
-" print(i / 10.0)\n"
-"[/codeblock]\n"
-"輸出:\n"
-"[codeblock]\n"
-"0.3\n"
-"0.2\n"
-"0.1\n"
-"[/codeblock]"
-
-msgid ""
"Returns [code]true[/code] if the given [Object]-derived class exists in "
"[ClassDB]. Note that [Variant] data types are not registered in [ClassDB].\n"
"[codeblock]\n"
@@ -695,324 +365,6 @@ msgstr ""
"[annotation @export_subgroup]。"
msgid ""
-"Export a [Color] property without allowing its transparency ([member Color."
-"a]) to be edited.\n"
-"See also [constant PROPERTY_HINT_COLOR_NO_ALPHA].\n"
-"[codeblock]\n"
-"@export_color_no_alpha var dye_color: Color\n"
-"[/codeblock]"
-msgstr ""
-"匯出一個 [Color] 屬性,不允許編輯其透明度 ([member Color.a])。\n"
-"另請參閱 [constant PROPERTY_HINT_COLOR_NO_ALPHA] 。\n"
-"[codeblock]\n"
-"@export_color_no_alpha var dye_color: Color\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as a path to a directory. The path will be limited "
-"to the project folder and its subfolders. See [annotation @export_global_dir] "
-"to allow picking from the entire filesystem.\n"
-"See also [constant PROPERTY_HINT_DIR].\n"
-"[codeblock]\n"
-"@export_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-msgstr ""
-"將 [String] 屬性作為目錄路徑匯出。該路徑僅限於專案檔案夾及其子資料夾。要允許在"
-"整個檔案系統中進行選擇,見 [annotation @export_global_dir]。\n"
-"另見 [constant PROPERTY_HINT_DIR]。\n"
-"[codeblock]\n"
-"@export_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-
-msgid ""
-"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_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"
-"If you want to set an initial value, you must specify it explicitly:\n"
-"[codeblock]\n"
-"@export_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = "
-"\"Rebecca\"\n"
-"[/codeblock]\n"
-"If you want to use named GDScript enums, then use [annotation @export] "
-"instead:\n"
-"[codeblock]\n"
-"enum CharacterName {REBECCA, MARY, LEAH}\n"
-"@export var character_name: CharacterName\n"
-"[/codeblock]"
-msgstr ""
-"將 [int] 或 [String] 匯出為列舉選項列表。如果屬性為 [int],則保存的是值的索"
-"引,與值的順序一致。你可以通過冒號新增明確的值。如果屬性為 [String],則保存的"
-"是值。\n"
-"另見 [constant PROPERTY_HINT_ENUM]。\n"
-"[codeblock]\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_enum(\"Rebecca\", \"Mary\", \"Leah\") var character_name: String = "
-"\"Rebecca\"\n"
-"[/codeblock]\n"
-"如果想要使用 GDScript 列舉,請改用 [annotation @export]:\n"
-"[codeblock]\n"
-"enum CharacterName {REBECCA, MARY, LEAH}\n"
-"@export var character_name: CharacterName\n"
-"[/codeblock]"
-
-msgid ""
-"Export a floating-point property with an easing editor widget. Additional "
-"hints can be provided to adjust the behavior of the widget. "
-"[code]\"attenuation\"[/code] flips the curve, which makes it more intuitive "
-"for editing attenuation properties. [code]\"positive_only\"[/code] limits "
-"values to only be greater than or equal to zero.\n"
-"See also [constant PROPERTY_HINT_EXP_EASING].\n"
-"[codeblock]\n"
-"@export_exp_easing var transition_speed\n"
-"@export_exp_easing(\"attenuation\") var fading_attenuation\n"
-"@export_exp_easing(\"positive_only\") var effect_power\n"
-"[/codeblock]"
-msgstr ""
-"使用緩動編輯器小元件匯出浮點屬性。可以提供額外的提示來調整小元件的行為。"
-"[code]\"attenuation\"[/code] 翻轉曲線,使編輯衰減屬性更加直觀。"
-"[code]\"positive_only\"[/code] 將值限制為僅大於或等於零。\n"
-"另請參見 [constant PROPERTY_HINT_EXP_EASING]。\n"
-"[codeblock]\n"
-"@export_exp_easing var transition_speed\n"
-"@export_exp_easing(\"attenuation\") var fading_attenuation\n"
-"@export_exp_easing(\"positive_only\") var effect_power\n"
-"[/codeblock]"
-
-msgid ""
-"Export 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"
-"[codeblock]\n"
-"@export_file var sound_effect_path: String\n"
-"@export_file(\"*.txt\") var notes_path: String\n"
-"[/codeblock]"
-msgstr ""
-"將 [String] 屬性匯出為檔路徑。該路徑僅限於專案檔案夾及其子資料夾。若要允許從整"
-"個檔案系統中進行選擇,請參閱 [annotation @export_global_file]。\n"
-"如果提供了 [param filter],則只有配對的檔可供選擇。\n"
-"另請參見 [constant PROPERTY_HINT_FILE]。\n"
-"[codeblock]\n"
-"@export_file var sound_effect_file: String\n"
-"@export_file(\"*.txt\") var notes_file: String\n"
-"[/codeblock]"
-
-msgid ""
-"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_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 ""
-"將整數屬性匯出為位元旗標欄位。能夠在單個屬性中保存若干“勾選”或者說 "
-"[code]true[/code] 值,可以很方便地在屬性面板面板中進行選擇。\n"
-"另見 [constant PROPERTY_HINT_FLAGS]。\n"
-"[codeblock]\n"
-"@export_flags(\"Fire\", \"Water\", \"Earth\", \"Wind\") var spell_elements = "
-"0\n"
-"[/codeblock]\n"
-"你可以通過冒號來新增明確的值:\n"
-"[codeblock]\n"
-"@export_flags(\"Self:4\", \"Allies:8\", \"Foes:16\") var spell_targets = 0\n"
-"[/codeblock]\n"
-"你還可以對旗標進行組合:\n"
-"[codeblock]\n"
-"@export_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 ""
-"Export an integer property as a bit flag field for 2D navigation layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_navigation/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_2d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"將整數屬性匯出為 2D 導覽層的位元旗標欄位。屬性面板停靠面板中的小元件,將使用"
-"在 [member ProjectSettings.layer_names/2d_navigation/layer_1] 中定義的層名"
-"稱。\n"
-"另請參見 [constant PROPERTY_HINT_LAYERS_2D_NAVIGATION]。\n"
-"[codeblock]\n"
-"@export_flags_2d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D physics layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_physics/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_2d_physics var physics_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"將整數屬性匯出為 2D 實體層的位元旗標欄位。屬性面板停靠面板中的小工具,將使用"
-"在 [member ProjectSettings.layer_names/2d_physics/layer_1] 中定義的層名稱。\n"
-"另請參見 [constant PROPERTY_HINT_LAYERS_2D_PHYSICS]。\n"
-"[codeblock]\n"
-"@export_flags_2d_physics var physics_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 2D render layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/2d_render/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_2D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_2d_render var render_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"將整數屬性匯出為 2D 算繪層的位元旗標欄位。屬性面板停靠面板中的小工具將使用在 "
-"[member ProjectSettings.layer_names/2d_render/layer_1] 中定義的層名稱。\n"
-"另請參見 [constant PROPERTY_HINT_LAYERS_2D_RENDER]。\n"
-"[codeblock]\n"
-"@export_flags_2d_render var render_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D navigation layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_navigation/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_NAVIGATION].\n"
-"[codeblock]\n"
-"@export_flags_3d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"將整數屬性匯出為 3D 導覽層的位元旗標欄位。屬性面板停靠面板中的小工具將使用在 "
-"[member ProjectSettings.layer_names/3d_navigation/layer_1] 中定義的層名稱。\n"
-"另請參見 [constant PROPERTY_HINT_LAYERS_3D_NAVIGATION]。\n"
-"[codeblock]\n"
-"@export_flags_3d_navigation var navigation_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D physics layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_physics/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_PHYSICS].\n"
-"[codeblock]\n"
-"@export_flags_3d_physics var physics_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"將整數屬性匯出為 3D 實體層的位元旗標欄位。屬性面板停靠面板中的小工具將使用在 "
-"[member ProjectSettings.layer_names/3d_physics/layer_1] 中定義的層名稱。\n"
-"另請參見 [constant PROPERTY_HINT_LAYERS_3D_PHYSICS]。\n"
-"[codeblock]\n"
-"@export_flags_3d_physics var physics_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for 3D render layers. The "
-"widget in the Inspector dock will use the layer names defined in [member "
-"ProjectSettings.layer_names/3d_render/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_3D_RENDER].\n"
-"[codeblock]\n"
-"@export_flags_3d_render var render_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"將整數屬性匯出為 3D 算繪層的位元旗標欄位。屬性面板停靠面板中的小工具將使用在 "
-"[member ProjectSettings.layer_names/3d_render/layer_1] 中定義的層名稱。\n"
-"另請參見 [constant PROPERTY_HINT_LAYERS_3D_RENDER]。\n"
-"[codeblock]\n"
-"@export_flags_3d_render var render_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export an integer property as a bit flag field for navigation avoidance "
-"layers. The widget in the Inspector dock will use the layer names defined in "
-"[member ProjectSettings.layer_names/avoidance/layer_1].\n"
-"See also [constant PROPERTY_HINT_LAYERS_AVOIDANCE].\n"
-"[codeblock]\n"
-"@export_flags_avoidance var avoidance_layers: int\n"
-"[/codeblock]"
-msgstr ""
-"將整數屬性匯出為導覽避障層的位元旗標欄位。屬性面板停靠面板中的小工具,將使用"
-"在 [member ProjectSettings.layer_names/avoidance/layer_1] 中定義的層名稱。\n"
-"另請參見 [constant PROPERTY_HINT_LAYERS_AVOIDANCE]。\n"
-"[codeblock]\n"
-"@export_flags_avoidance var avoidance_layers: int\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as an absolute 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_path: String\n"
-"[/codeblock]"
-msgstr ""
-"將 [String] 屬性匯出為目錄路徑。該路徑可以從整個檔案系統中選擇。請參閱 "
-"[annotation @export_dir] 以將其限制為專案檔案夾及其子資料夾。\n"
-"另請參見 [constant PROPERTY_HINT_GLOBAL_DIR]。\n"
-"[codeblock]\n"
-"@export_global_dir var sprite_folder_path: String\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [String] property as an absolute 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_path: String\n"
-"@export_global_file(\"*.txt\") var notes_path: 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_path: String\n"
-"@export_global_file(\"*.txt\") var notes_path: 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 "
@@ -1061,54 +413,6 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Export a [String] property with a large [TextEdit] widget instead of a "
-"[LineEdit]. This adds support for multiline content and makes it easier to "
-"edit large amount of text stored in the property.\n"
-"See also [constant PROPERTY_HINT_MULTILINE_TEXT].\n"
-"[codeblock]\n"
-"@export_multiline var character_biography\n"
-"[/codeblock]"
-msgstr ""
-"用一個大的 [TextEdit] 元件而不是 [LineEdit] 匯出一個 [String] 屬性。這增加了對"
-"多行內容的支援,使其更容易編輯儲存在屬性中的大量文字。\n"
-"參見 [constant PROPERTY_HINT_MULTILINE_TEXT]。\n"
-"[codeblock]\n"
-"@export_multiline var character_biography\n"
-"[/codeblock]"
-
-msgid ""
-"Export a [NodePath] property with a filter for allowed node types.\n"
-"See also [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES].\n"
-"[codeblock]\n"
-"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n"
-"[/codeblock]\n"
-"[b]Note:[/b] The type must be a native class or a globally registered script "
-"(using the [code]class_name[/code] keyword) that inherits [Node]."
-msgstr ""
-"匯出具有篩檢程式,並允許節點型別為 [NodePath] 的屬性。\n"
-"參見 [constant PROPERTY_HINT_NODE_PATH_VALID_TYPES]。\n"
-"[codeblock]\n"
-"@export_node_path(\"Button\", \"TouchScreenButton\") var some_button\n"
-"[/codeblock]\n"
-"[b]注意:[/b] 型別必須是本地類或全域註冊的腳本(使用[code][class_name][/code]關"
-"鍵字)且繼承自 [Node] 。"
-
-msgid ""
-"Export a [String] property with a placeholder text displayed in the editor "
-"widget when no value is present.\n"
-"See also [constant PROPERTY_HINT_PLACEHOLDER_TEXT].\n"
-"[codeblock]\n"
-"@export_placeholder(\"Name in lowercase\") var character_id: String\n"
-"[/codeblock]"
-msgstr ""
-"匯出一個帶有一個預留位置文字的 [String] 屬性,當沒有值時,編輯器小元件中會顯示"
-"該預留位置文字。\n"
-"另請參見 [constant PROPERTY_HINT_PLACEHOLDER_TEXT]。\n"
-"[codeblock]\n"
-"@export_placeholder(\"Name in lowercase\") var character_id: String\n"
-"[/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 "
@@ -1235,14 +539,6 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Make a script with static variables to not persist after all references are "
-"lost. If the script is loaded again the static variables will revert to their "
-"default values."
-msgstr ""
-"使具有靜態變數的腳本在所有引用丟失之後不會持久化。當該腳本再次載入時,這些靜態"
-"變數將恢復為預設值。"
-
-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"
@@ -1655,41 +951,6 @@ msgstr ""
"[/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/4.1/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"
@@ -1757,48 +1018,6 @@ msgstr ""
"對於整數取餘運算,請使用 [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"
@@ -1958,63 +1177,6 @@ msgid ""
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 是數值型別\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 是參考型別\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"
-"[Variant] 數值型別有:[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"
-"[Variant] 參考型別有:[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 "
@@ -2179,18 +1341,6 @@ msgstr ""
"nan[/code]。"
msgid ""
-"Returns the maximum of the given numeric values. This function can take any "
-"number of arguments.\n"
-"[codeblock]\n"
-"max(1, 7, 3, -6, 5) # Returns 7\n"
-"[/codeblock]"
-msgstr ""
-"返回給定值的最大值。這個函式可以接受任意數量的參數。\n"
-"[codeblock]\n"
-"max(1, 7, 3, -6, 5) # 返回 7\n"
-"[/codeblock]"
-
-msgid ""
"Returns the maximum of two [float] values.\n"
"[codeblock]\n"
"maxf(3.6, 24) # Returns 24.0\n"
@@ -2217,18 +1367,6 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Returns the minimum of the given numeric values. This function can take any "
-"number of arguments.\n"
-"[codeblock]\n"
-"min(1, 7, 3, -6, 5) # Returns -6\n"
-"[/codeblock]"
-msgstr ""
-"返回給定數值中的最小值。這個函式可以接受任意數量的參數。\n"
-"[codeblock]\n"
-"min(1, 7, 3, -6, 5) # 返回 -6\n"
-"[/codeblock]"
-
-msgid ""
"Returns the minimum of two [float] values.\n"
"[codeblock]\n"
"minf(3.6, 24) # Returns 3.6\n"
@@ -2340,44 +1478,6 @@ msgstr ""
"[/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 ""
"Returns the result of [param base] raised to the power of [param exp].\n"
"In GDScript, this is the equivalent of the [code]**[/code] operator.\n"
"[codeblock]\n"
@@ -2457,42 +1557,6 @@ msgstr ""
"[/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"
@@ -2728,18 +1792,6 @@ msgstr ""
"對於需要多個範圍的複雜用例,請考慮改用 [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 ""
"Rotates [param from] toward [param to] by the [param delta] amount. Will not "
"go past [param to].\n"
"Similar to [method move_toward], but interpolates correctly when the angles "
@@ -3081,51 +2133,6 @@ msgstr ""
"[/codeblock]"
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]\n"
-"[b]Note:[/b] Converting [Signal] or [Callable] is not supported and will "
-"result in an empty value for these types, regardless of their data."
-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]\n"
-"[b]注意:[/b]不支援轉換 [Signal] 和 [Callable],這些型別無論有什麼資料,轉換後"
-"都是空值。"
-
-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 "
@@ -5595,9 +4602,6 @@ msgstr ""
msgid "3D Physics Tests Demo"
msgstr "3D 物理測試演示"
-msgid "Third Person Shooter Demo"
-msgstr "第三人稱射擊演示"
-
msgid "3D Voxel Demo"
msgstr "3D 體素演示"
@@ -6504,17 +5508,6 @@ msgstr ""
"返回包含 [param animation] 的 [AnimationLibrary] 的鍵;如果找不到,則返回一個"
"空的 [StringName]。"
-msgid ""
-"Returns the first [AnimationLibrary] with key [param name] or [code]null[/"
-"code] if not found.\n"
-"To get the [AnimationPlayer]'s global animation library, use "
-"[code]get_animation_library(\"\")[/code]."
-msgstr ""
-"返回第一個鍵為 [param name] 的 [AnimationLibrary],如果沒有找到則返回 "
-"[code]null[/code]。\n"
-"要獲得 [AnimationPlayer] 的全域動畫庫,請使用 "
-"[code]get_animation_library(\"\")[/code]。"
-
msgid "Returns the list of stored library keys."
msgstr "返回儲存庫的鍵名列表。"
@@ -6833,20 +5826,6 @@ 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 "Removes the [AnimationLibrary] associated with the key [param name]."
msgstr "移除與鍵 [param name] 關聯的 [AnimationLibrary]。"
@@ -6971,13 +5950,6 @@ msgstr ""
"除。"
msgid ""
-"Editor only. Notifies when the property have been updated to update dummy "
-"[AnimationPlayer] in animation player editor."
-msgstr ""
-"僅限編輯器。更新屬性以更新動畫播放器編輯器中的虛擬[AnimationPlayer] 時發出通"
-"知。"
-
-msgid ""
"Process animation during physics frames (see [constant Node."
"NOTIFICATION_INTERNAL_PHYSICS_PROCESS]). This is especially useful when "
"animating physics bodies."
@@ -7010,18 +5982,6 @@ msgstr "在動畫中達到時立即進行方法呼叫。"
msgid "Base class for [AnimationTree] nodes. Not related to scene nodes."
msgstr "[AnimationTree] 節點的基底類別。與場景節點無關。"
-msgid ""
-"Base resource for [AnimationTree] nodes. In general, it's not used directly, "
-"but you can create custom ones with custom blending formulas.\n"
-"Inherit this when creating animation nodes mainly for use in "
-"[AnimationNodeBlendTree], otherwise [AnimationRootNode] should be used "
-"instead."
-msgstr ""
-"[AnimationTree] 節點的基礎資源。通常不會直接使用,但你可以使用自訂混合公式建立"
-"自訂節點。\n"
-"建立動畫節點時繼承這個類主要是用在 [AnimationNodeBlendTree] 中,否則應改用 "
-"[AnimationRootNode]。"
-
msgid "Using AnimationTree"
msgstr "使用 AnimationTree"
@@ -7075,25 +6035,6 @@ msgstr ""
"唯讀。參數是動畫節點的自訂本機存放區,資源可以在多個樹中重用。"
msgid ""
-"When inheriting from [AnimationRootNode], implement this virtual method to "
-"run some code when this animation 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 animation node. This is only useful for animation nodes "
"created for use in an [AnimationNodeBlendTree]. If the addition fails, "
"returns [code]false[/code]."
@@ -7760,22 +6701,6 @@ msgid ""
"transition will be linear."
msgstr "確定如何緩動動畫之間的淡入淡出。如果為空,過渡將是線性的。"
-msgid ""
-"The fade-in duration. For example, setting this to [code]1.0[/code] for a 5 "
-"second length animation will produce a cross-fade that starts at 0 second and "
-"ends at 1 second during the animation."
-msgstr ""
-"淡入持續時間。例如,將此屬性設定為 [code]1.0[/code],對於 5 秒長的動畫,將在動"
-"畫期間產生從 0 秒開始到 1 秒結束的交叉淡入淡出。"
-
-msgid ""
-"The fade-out duration. For example, setting this to [code]1.0[/code] for a 5 "
-"second length animation will produce a cross-fade that starts at 4 second and "
-"ends at 5 second during the animation."
-msgstr ""
-"淡出持續時間。例如,將此屬性設定為 [code]1.0[/code],對於 5 秒長的動畫,將產生"
-"從 4 秒開始到 5 秒結束的交叉淡入淡出。"
-
msgid "The blend type."
msgstr "混合型別。"
@@ -8138,9 +7063,6 @@ msgid ""
"Ease curve for better control over cross-fade between this state and the next."
msgstr "緩動曲線可以更好地控制此狀態和下一個狀態之間的交叉淡入淡出。"
-msgid "The time to cross-fade between this state and the next."
-msgstr "這個狀態和下一個狀態之間的交叉漸變時間。"
-
msgid "Emitted when [member advance_condition] is changed."
msgstr "變更 [member advance_condition] 時發出。"
@@ -8206,11 +7128,6 @@ msgid "AnimationTree"
msgstr "動畫樹"
msgid ""
-"Base class for [AnimationNode]s with more than two input ports that must be "
-"synchronized."
-msgstr "帶有兩個以上輸入埠的 [AnimationNode] 基底類別,必須對這兩個埠進行同步。"
-
-msgid ""
"An animation node used to combine, mix, or blend two or more animations "
"together while keeping them synchronized within an [AnimationTree]."
msgstr ""
@@ -8392,10 +7309,6 @@ msgstr ""
msgid "The number of enabled input ports for this animation node."
msgstr "這個動畫節點啟用的輸入埠的數量。"
-msgid ""
-"Cross-fading time (in seconds) between each animation connected to the inputs."
-msgstr "連接到輸入的每個動畫之間的交叉漸變時間(秒)。"
-
msgid "A node used for animation playback."
msgstr "用於播放動畫的節點。"
@@ -9004,9 +7917,6 @@ msgid ""
"exiting it."
msgstr "3D 空間中的一個區域,能夠偵測到其他 [CollisionObject3D] 的進入或退出。"
-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 "
@@ -9171,23 +8081,6 @@ msgstr ""
"[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 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 "
@@ -9306,97 +8199,9 @@ msgstr ""
msgid "A built-in data structure that holds a sequence of elements."
msgstr "一種內建資料結構,包含一系列元素。"
-msgid ""
-"An array data structure that can contain a sequence of elements of any type. "
-"Elements are accessed by a numerical index starting at 0. Negative indices "
-"are used to count from the back (-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] Arrays are always passed by reference. To get a copy of an array "
-"that can be modified independently of the original array, use [method "
-"duplicate].\n"
-"[b]Note:[/b] Erasing elements while iterating over arrays is [b]not[/b] "
-"supported and will result in unpredictable behavior."
-msgstr ""
-"通用陣列,可以包含任意型別的多個元素,可以通過從 0 開始的數位索引進行存取。負"
-"數索引可以用來從後面數起,就像在 Python 中一樣(-1 是最後一個元素、-2 是倒數第"
-"二,以此類推)。\n"
-"[b]範例:[/b]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var array = [\"One\", 2, 3, \"Four\"]\n"
-"print(array[0]) # One。\n"
-"print(array[2]) # 3。\n"
-"print(array[-1]) # Four。\n"
-"array[2] = \"Three\"\n"
-"print(array[-2]) # Three。\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var array = new Godot.Collections.Array{\"One\", 2, 3, \"Four\"};\n"
-"GD.Print(array[0]); // One。\n"
-"GD.Print(array[2]); // 3。\n"
-"GD.Print(array[array.Count - 1]); // Four。\n"
-"array[2] = \"Three\";\n"
-"GD.Print(array[array.Count - 2]); // Three。\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"可以使用 [code]+[/code] 運算子連接陣列:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var array1 = [\"One\", 2]\n"
-"var array2 = [3, \"Four\"]\n"
-"print(array1 + array2) # [\"One\", 2, 3, \"Four\"]\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// C# 陣列無法進行陣列串聯,但 Godot.Collections.Array 可以。\n"
-"var array1 = new Godot.Collections.Array{\"One\", 2};\n"
-"var array2 = new Godot.Collections.Array{3, \"Four\"};\n"
-"GD.Print(array1 + array2); // Prints [One, 2, 3, Four]\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]陣列總是通過引用來傳遞。要獲得一個可以獨立於原始陣列而被修改的數"
-"組的副本,請使用 [method duplicate]。\n"
-"[b]注意:[/b][b]不[/b]支援在走訪陣列時擦除元素,這將導致不可預知的行為。"
-
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]."
@@ -9585,40 +8390,6 @@ msgstr ""
"的,當從編輯器運作時,按索引存取將暫停專案的執行。"
msgid ""
-"Finds the index of an existing value (or the insertion index that maintains "
-"sorting order, if the value is not yet present in the array) using binary "
-"search. Optionally, a [param before] specifier can be passed. If [code]false[/"
-"code], the returned index comes after all existing entries of the value in "
-"the array.\n"
-"[b]Note:[/b] Calling [method bsearch] on an unsorted array results in "
-"unexpected behavior."
-msgstr ""
-"使用二進法搜尋已有值的索引(如果該值尚未存在於陣列中,則為保持排序順序的插入索"
-"引)。傳遞 [param before] 說明符是可選的。如果該參數為 [code]false[/code],則"
-"返回的索引位於陣列中該值的所有已有的條目之後。\n"
-"[b]注意:[/b]在未排序的陣列上呼叫 [method bsearch] 會產生預料之外的行為。"
-
-msgid ""
-"Finds the index of an existing value (or the insertion index that maintains "
-"sorting order, if the value is not yet present in the array) using binary "
-"search and a custom comparison method. Optionally, a [param before] specifier "
-"can be passed. If [code]false[/code], the returned index comes after all "
-"existing entries of the value in the array. The custom method receives two "
-"arguments (an element from the array and the value searched for) and must "
-"return [code]true[/code] if the first argument is less than the second, and "
-"return [code]false[/code] otherwise.\n"
-"[b]Note:[/b] Calling [method bsearch_custom] on an unsorted array results in "
-"unexpected behavior."
-msgstr ""
-"使用二分法和自訂比較方法搜尋已有值的索引(如果該值尚未存在於陣列中,則為保持排"
-"序順序的插入索引)。傳遞 [param before] 說明符是可選的。如果該參數為 "
-"[code]false[/code],則返回的索引位於陣列中該值的所有已有條目之後。自訂方法接收"
-"兩個參數(陣列中的一個元素和搜索到的值),如果第一個參數小於第二個參數,則必須"
-"返回 [code]true[/code],否則返回 [code]false[/code] .\n"
-"[b]注意:[/b]在未排序的陣列上呼叫 [method bsearch_custom] 會產生預料之外的行"
-"為。"
-
-msgid ""
"Clears the array. This is equivalent to using [method resize] with a size of "
"[code]0[/code]."
msgstr "清空陣列。相當於呼叫 [method resize] 時指定大小為 [code]0[/code]。"
@@ -9746,19 +8517,6 @@ msgstr ""
"從編輯器運作時按索引存取將暫停專案執行。"
msgid ""
-"Returns the [enum Variant.Type] constant for a typed array. If the [Array] is "
-"not typed, returns [constant TYPE_NIL]."
-msgstr ""
-"返回型別化陣列的 [enum Variant.Type] 常數。如果該 [Array] 不是型別化的,則返"
-"回 [constant TYPE_NIL]。"
-
-msgid "Returns a class name of a typed [Array] of type [constant TYPE_OBJECT]."
-msgstr "返回型別為 [constant TYPE_OBJECT] 的 型別化 [Array] 的類別名稱。"
-
-msgid "Returns the script associated with a typed array tied to a class name."
-msgstr "返回與此型別化陣列綁定的類別名稱關聯的腳本。"
-
-msgid ""
"Returns [code]true[/code] if the array contains the given value.\n"
"[codeblocks]\n"
"[gdscript]\n"
@@ -10470,71 +9228,6 @@ msgstr ""
"為混合形狀新增名稱,該形狀將用 [method add_surface_from_arrays] 新增。必須在新"
"增面之前呼叫。"
-msgid ""
-"Creates a new surface. [method Mesh.get_surface_count] will become the "
-"[code]surf_idx[/code] for this new surface.\n"
-"Surfaces are created to be rendered using a [param primitive], which may be "
-"any of the values defined in [enum Mesh.PrimitiveType].\n"
-"The [param arrays] argument is an array of arrays. Each of the [constant Mesh."
-"ARRAY_MAX] elements contains an array with some of the mesh data for this "
-"surface as described by the corresponding member of [enum Mesh.ArrayType] or "
-"[code]null[/code] if it is not used by the surface. For example, "
-"[code]arrays[0][/code] is the array of vertices. That first vertex sub-array "
-"is always required; the others are optional. Adding an index array puts this "
-"surface into \"index mode\" where the vertex and other arrays become the "
-"sources of data and the index array defines the vertex order. All sub-arrays "
-"must have the same length as the vertex array (or be an exact multiple of the "
-"vertex array's length, when multiple elements of a sub-array correspond to a "
-"single vertex) or be empty, except for [constant Mesh.ARRAY_INDEX] if it is "
-"used.\n"
-"The [param blend_shapes] argument is an array of vertex data for each blend "
-"shape. Each element is an array of the same structure as [param arrays], but "
-"[constant Mesh.ARRAY_VERTEX], [constant Mesh.ARRAY_NORMAL], and [constant "
-"Mesh.ARRAY_TANGENT] are set if and only if they are set in [param arrays] and "
-"all other entries are [code]null[/code].\n"
-"The [param lods] argument is a dictionary with [float] keys and "
-"[PackedInt32Array] values. Each entry in the dictionary represents a LOD "
-"level of the surface, where the value is the [constant Mesh.ARRAY_INDEX] "
-"array to use for the LOD level and the key is roughly proportional to the "
-"distance at which the LOD stats being used. I.e., increasing the key of a LOD "
-"also increases the distance that the objects has to be from the camera before "
-"the LOD is used.\n"
-"The [param flags] argument is the bitwise or of, as required: One value of "
-"[enum Mesh.ArrayCustomFormat] left shifted by "
-"[code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code] for each custom channel in use, "
-"[constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE], [constant Mesh."
-"ARRAY_FLAG_USE_8_BONE_WEIGHTS], or [constant Mesh."
-"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY].\n"
-"[b]Note:[/b] When using indices, it is recommended to only use points, lines, "
-"or triangles."
-msgstr ""
-"建立一個新的表面。[method Mesh.get_surface_count] 將成為這個新表面的 "
-"[code]surf_idx[/code]。\n"
-"建立表面以使用 [param primitive] 進行算繪,它可以是 [enum Mesh.PrimitiveType] "
-"中定義的任何值。\n"
-"[param arrays] 參數是陣列的陣列。每個 [constant Mesh.ARRAY_MAX] 元素都包含一個"
-"陣列,其中包含此表面的一些網格資料,如 [enum Mesh.ArrayType] 的相應成員所描述"
-"的一樣;如果它未被使用,則為 [code]null[/code]。例如,[code]arrays[0][/code] "
-"是頂點陣列。始終需要第一個頂點子陣列;其他的是可選的。新增索引陣列會將此表面置"
-"於“索引模式”,其中頂點和其他陣列成為資料來源,索引陣列定義頂點順序。所有子陣列"
-"的長度必須與頂點陣列的長度相同(或者是頂點陣列長度的精確倍數,當子數組的多個元"
-"素對應於單個頂點時);或者為空,如果使用了 [constant Mesh.ARRAY_INDEX ] 則除"
-"外。\n"
-"[param blend_shapes] 參數是每個混合形狀的頂點資料陣列。 每個元素都是與 [param "
-"arrays] 具有相同結構的陣列,但是 [constant Mesh.ARRAY_VERTEX]、[constant Mesh."
-"ARRAY_NORMAL] 和 [constant Mesh.ARRAY_TANGENT] 這些條目,當且僅當在 [param "
-"arrays] 被設定且所有其他條目都是 [code]null[/code] 時,會被設置。\n"
-"[param lods] 參數是一個帶有 [float] 鍵和 [PackedInt32Array] 值的字典。字典中的"
-"每個條目代表了表面的一個 LOD 級別,其中值是用於 LOD 級別的 [constant Mesh."
-"ARRAY_INDEX] 陣列,鍵大致與使用 LOD 統計資訊的距離成正比。即,增加 LOD 的關鍵"
-"點也會增加在使用 LOD 之前物件必須與相機的距離。\n"
-"[param flags] 參數是根據需要按位元或的:[enum Mesh.ArrayCustomFormat] 的一個值"
-"左移 [code]ARRAY_FORMAT_CUSTOMn_SHIFT[/code],用於每個正在使用的自訂通道,"
-"[constant Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE]、[constant Mesh."
-"ARRAY_FLAG_USE_8_BONE_WEIGHTS]、或 [constant Mesh."
-"ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY]。\n"
-"[b]注意:[/b]使用索引時,建議只使用點、線或三角形。"
-
msgid "Removes all blend shapes from this [ArrayMesh]."
msgstr "移除此 [ArrayMesh] 的所有混合形狀。"
@@ -10911,77 +9604,6 @@ msgstr ""
"點最近的位置。"
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 the capacity of the structure backing the points, useful in "
"conjunction with [method reserve_space]."
msgstr ""
@@ -11051,18 +9673,6 @@ 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] 相關聯的點的位置。"
@@ -11247,75 +9857,6 @@ msgstr ""
"定點最近的位置。"
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 an array with the IDs of the points that form the connection with the "
"given point.\n"
"[codeblocks]\n"
@@ -11372,18 +9913,6 @@ msgstr ""
"[/codeblocks]"
msgid ""
-"Returns an array with the points that are in the path found by AStar3D "
-"between the given points. The array is ordered from the starting point to the "
-"ending point of the path.\n"
-"[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it "
-"will return an empty [PackedVector3Array] and will print an error message."
-msgstr ""
-"返回一個陣列,其中包含 AStar3D 在給定點之間找到的路徑中的點。陣列從路徑的起點"
-"到終點進行排序。\n"
-"[b]注意:[/b]這種方法不是執行緒安全的。如果從 [Thread] 呼叫,它將返回一個空的 "
-"[PackedVector3Array],並列印一條錯誤消息。"
-
-msgid ""
"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."
@@ -11483,14 +10012,6 @@ msgstr ""
"[b]注意:[/b]呼叫該函式後不需要呼叫 [method update]。"
msgid ""
-"Returns an array with the IDs of the points that form the path found by "
-"AStar2D between the given points. The array is ordered from the starting "
-"point to the ending point of the path."
-msgstr ""
-"返回一個陣列,其中包含形成 AStar2D 在給定點之間找到的路徑的點的 ID。該陣列從路"
-"徑的起點到終點排序。"
-
-msgid ""
"Indicates that the grid parameters were changed and [method update] needs to "
"be called."
msgstr "表示網格參數發生改變,需要呼叫 [method update]。"
@@ -11757,9 +10278,6 @@ msgstr ""
msgid "Audio buses"
msgstr "音訊匯流排"
-msgid "Audio Mic Record Demo"
-msgstr "音訊麥克風錄音演示"
-
msgid "Adds an amplifying audio effect to an audio bus."
msgstr "向音訊匯流排新增一個放大的音訊效果。"
@@ -12495,12 +11013,6 @@ msgstr ""
"這種音訊效果不影響聲音輸出,但可以用於即時音訊視覺化。\n"
"使用程式生成聲音請參閱 [AudioStreamGenerator]。"
-msgid "Audio Spectrum Demo"
-msgstr "音頻頻譜演示"
-
-msgid "Godot 3.2 will get new audio features"
-msgstr "Godot 3.2 將獲得新的音訊功能"
-
msgid ""
"The length of the buffer to keep (in seconds). Higher values keep data around "
"for longer, but require more memory."
@@ -12893,6 +11405,9 @@ msgid ""
"generated audio in real-time."
msgstr "此類旨在與 [AudioStreamGenerator] 一起使用以即時播放生成的音訊。"
+msgid "Godot 3.2 will get new audio features"
+msgstr "Godot 3.2 將獲得新的音訊功能"
+
msgid ""
"Returns [code]true[/code] if a buffer of the size [param amount] can be "
"pushed to the audio sample data buffer without overflowing it, [code]false[/"
@@ -12949,6 +11464,9 @@ msgstr ""
"[code]true[/code] 音訊輸入才能正常工作。另請參閱該設定的說明,瞭解與許可權和操"
"作系統隱私設定相關的注意事項。"
+msgid "Audio Mic Record Demo"
+msgstr "音訊麥克風錄音演示"
+
msgid "MP3 audio stream driver."
msgstr "MP3 音訊流驅動程式。"
@@ -13129,95 +11647,6 @@ msgid ""
"playback."
msgstr "無法為播放分配一個流時由 [method play_stream] 返回。"
-msgid "Plays back audio non-positionally."
-msgstr "播放音訊,不考慮所處位置。"
-
-msgid ""
-"Plays an audio stream non-positionally.\n"
-"To play audio positionally, use [AudioStreamPlayer2D] or "
-"[AudioStreamPlayer3D] instead of [AudioStreamPlayer]."
-msgstr ""
-"以非位置方式支援播放音訊流。\n"
-"要在位置上播放音訊,請使用 [AudioStreamPlayer2D] 或 [AudioStreamPlayer3D] 而不"
-"是 [AudioStreamPlayer]。"
-
-msgid "Returns the position in the [AudioStream] in seconds."
-msgstr "返回 [AudioStream] 中的位置,單位為秒。"
-
-msgid ""
-"Returns the [AudioStreamPlayback] object associated with this "
-"[AudioStreamPlayer]."
-msgstr "返回與此 [AudioStreamPlayer] 關聯的 [AudioStreamPlayback] 對象。"
-
-msgid ""
-"Returns whether the [AudioStreamPlayer] can return the [AudioStreamPlayback] "
-"object or not."
-msgstr "返回該 [AudioStreamPlayer] 是否能夠返回 [AudioStreamPlayback] 物件。"
-
-msgid "Plays the audio from the given [param from_position], in seconds."
-msgstr "從給定的位置 [param from_position] 播放音訊,以秒為單位。"
-
-msgid "Sets the position from which audio will be played, in seconds."
-msgstr "設定音訊的播放位置,以秒為單位。"
-
-msgid "Stops the audio."
-msgstr "停止音訊。"
-
-msgid "If [code]true[/code], audio plays when added to scene tree."
-msgstr "如果為 [code]true[/code],在新增到場景樹時將播放音訊。"
-
-msgid ""
-"Bus on which this audio is playing.\n"
-"[b]Note:[/b] When setting this property, keep in mind that no validation is "
-"performed to see if the given name matches an existing bus. This is because "
-"audio bus layouts might be loaded after this property is set. If this given "
-"name can't be resolved at runtime, it will fall back to [code]\"Master\"[/"
-"code]."
-msgstr ""
-"這個音訊在哪個匯流排上播放。\n"
-"[b]注意:[/b]設定這個屬性時,請記住它並不會對給定的名稱是否與現有匯流排配對進"
-"行校驗。這是因為音訊匯流排佈局可以在設定這個屬性後再載入。如果這個給定的名稱在"
-"運行時無法解析,就會退回到 [code]\"Master\"[/code]。"
-
-msgid ""
-"The maximum number of sounds this node can play at the same time. Playing "
-"additional sounds after this value is reached will cut off the oldest sounds."
-msgstr ""
-"該節點可以同時播放的最大聲音數。達到此值後,播放額外的聲音將切斷最舊的聲音。"
-
-msgid ""
-"If the audio configuration has more than two speakers, this sets the target "
-"channels. See [enum MixTarget] constants."
-msgstr ""
-"如果音訊配置有兩個以上的揚聲器,則設定目標通道。見 [enum MixTarget] 常數。"
-
-msgid ""
-"The pitch and the tempo of the audio, as a multiplier of the audio sample's "
-"sample rate."
-msgstr "音訊的音高和節奏,作為音訊樣本的取樣速率的倍數。"
-
-msgid "If [code]true[/code], audio is playing."
-msgstr "如果為 [code]true[/code],則播放音訊。"
-
-msgid "The [AudioStream] object to be played."
-msgstr "要播放的 [AudioStream] 對象。"
-
-msgid ""
-"If [code]true[/code], the playback is paused. You can resume it by setting "
-"[member stream_paused] to [code]false[/code]."
-msgstr ""
-"如果為 [code]true[/code],則播放會暫停。你可以通過將 [member stream_paused] 設"
-"定為 [code]false[/code]來恢復它。"
-
-msgid "Volume of sound, in dB."
-msgstr "音量,單位為 dB。"
-
-msgid "Emitted when the audio stops playing."
-msgstr "當音訊停止播放時發出。"
-
-msgid "The audio will be played only on the first channel."
-msgstr "音訊將只在第一個聲道中播放。"
-
msgid "The audio will be played on all surround channels."
msgstr "音訊將在所有環繞聲聲道中播放。"
@@ -13257,12 +11686,23 @@ msgid ""
msgstr "返回與該 [AudioStreamPlayer2D] 相關聯的 [AudioStreamPlayback] 對象。"
msgid ""
+"Returns whether the [AudioStreamPlayer] can return the [AudioStreamPlayback] "
+"object or not."
+msgstr "返回該 [AudioStreamPlayer] 是否能夠返回 [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 "Sets the position from which audio will be played, in seconds."
+msgstr "設定音訊的播放位置,以秒為單位。"
+
+msgid "Stops the audio."
+msgstr "停止音訊。"
+
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 "
@@ -13277,10 +11717,32 @@ msgstr ""
msgid "The volume is attenuated over distance with this as an exponent."
msgstr "以該屬性為指數,將音量隨著距離的增加而衰減。"
+msgid "If [code]true[/code], audio plays when added to scene tree."
+msgstr "如果為 [code]true[/code],在新增到場景樹時將播放音訊。"
+
+msgid ""
+"Bus on which this audio is playing.\n"
+"[b]Note:[/b] When setting this property, keep in mind that no validation is "
+"performed to see if the given name matches an existing bus. This is because "
+"audio bus layouts might be loaded after this property is set. If this given "
+"name can't be resolved at runtime, it will fall back to [code]\"Master\"[/"
+"code]."
+msgstr ""
+"這個音訊在哪個匯流排上播放。\n"
+"[b]注意:[/b]設定這個屬性時,請記住它並不會對給定的名稱是否與現有匯流排配對進"
+"行校驗。這是因為音訊匯流排佈局可以在設定這個屬性後再載入。如果這個給定的名稱在"
+"運行時無法解析,就會退回到 [code]\"Master\"[/code]。"
+
msgid "Maximum distance from which audio is still hearable."
msgstr "音訊仍可聽到的最大距離。"
msgid ""
+"The maximum number of sounds this node can play at the same time. Playing "
+"additional sounds after this value is reached will cut off the oldest sounds."
+msgstr ""
+"該節點可以同時播放的最大聲音數。達到此值後,播放額外的聲音將切斷最舊的聲音。"
+
+msgid ""
"Scales the panning strength for this node by multiplying the base [member "
"ProjectSettings.audio/general/2d_panning_strength] with this factor. Higher "
"values will pan audio from left to right more dramatically than lower values."
@@ -13290,15 +11752,33 @@ msgstr ""
"音訊。"
msgid ""
+"The pitch and the tempo of the audio, as a multiplier of the audio sample's "
+"sample rate."
+msgstr "音訊的音高和節奏,作為音訊樣本的取樣速率的倍數。"
+
+msgid ""
"If [code]true[/code], audio is playing or is queued to be played (see [method "
"play])."
msgstr ""
"如果為 [code]true[/code],則音訊正在播放,或者已加入播放佇列(見 [method "
"play])。"
+msgid "The [AudioStream] object to be played."
+msgstr "要播放的 [AudioStream] 對象。"
+
+msgid ""
+"If [code]true[/code], the playback is paused. You can resume it by setting "
+"[member stream_paused] to [code]false[/code]."
+msgstr ""
+"如果為 [code]true[/code],則播放會暫停。你可以通過將 [member stream_paused] 設"
+"定為 [code]false[/code]來恢復它。"
+
msgid "Base volume before attenuation."
msgstr "衰減前的基礎音量。"
+msgid "Emitted when the audio stops playing."
+msgstr "當音訊停止播放時發出。"
+
msgid "Plays positional sound in 3D space."
msgstr "在 3D 空間中播放與位置相關的聲音。"
@@ -13602,17 +12082,6 @@ msgstr ""
"瞭解程式化音訊生成。"
msgid ""
-"Saves the AudioStreamWAV as a WAV file to [param path]. Samples with IMA "
-"ADPCM format can't be saved.\n"
-"[b]Note:[/b] A [code].wav[/code] extension is automatically appended to "
-"[param path] if it is missing."
-msgstr ""
-"將 AudioStreamWAV 作為 WAV 檔保存到 [param path]。無法保存 IMA ADPCM 格式的樣"
-"本。\n"
-"[b]注意:[/b]如果缺少 [code].wav[/code] 副檔名,則會自動將其追加到 [param "
-"path]。"
-
-msgid ""
"Contains the audio data in bytes.\n"
"[b]Note:[/b] This property expects signed PCM8 data. To convert unsigned PCM8 "
"to signed PCM8, subtract 128 from each byte."
@@ -15467,9 +13936,6 @@ msgstr "使用 3D 變換"
msgid "Matrix Transform Demo"
msgstr "矩陣變換演示"
-msgid "2.5D Demo"
-msgstr "2.5D 演示"
-
msgid "Constructs a [Basis] as a copy of the given [Basis]."
msgstr "建構給定 [Basis] 的副本。"
@@ -15681,16 +14147,6 @@ msgstr ""
"點用作 [Skeleton3D]。"
msgid ""
-"A function that is called automatically when the [Skeleton3D] the "
-"BoneAttachment3D node is using has a bone that has changed its pose. This "
-"function is where the BoneAttachment3D node updates its position so it is "
-"correctly bound when it is [i]not[/i] set to override the bone pose."
-msgstr ""
-"當該 BoneAttachment3D 節點正在使用的 [Skeleton3D] 中有骨骼已改變其姿勢時,自動"
-"呼叫的函式。該函式是 BoneAttachment3D 節點更新其位置的地方,以便在[i]未[/i]設"
-"定為覆蓋骨骼姿勢時正確綁定。"
-
-msgid ""
"Sets the [NodePath] to the external skeleton that the BoneAttachment3D node "
"should use. See [method set_use_external_skeleton] to enable the external "
"[Skeleton3D] node."
@@ -15715,16 +14171,6 @@ msgid "The name of the attached bone."
msgstr "所附著骨骼的名稱。"
msgid ""
-"Whether the BoneAttachment3D node will override the bone pose of the bone it "
-"is attached to. When set to [code]true[/code], the BoneAttachment3D node can "
-"change the pose of the bone. When set to [code]false[/code], the "
-"BoneAttachment3D will always be set to the bone's transform."
-msgstr ""
-"BoneAttachment3D 節點是否將覆蓋它所附著到的骨骼的骨骼姿勢。當設定為 "
-"[code]true[/code] 時,BoneAttachment3D 節點可以改變骨骼的姿勢。當設定為 "
-"[code]false[/code] 時,BoneAttachment3D 將始終被設定為骨骼的變換。"
-
-msgid ""
"Describes a mapping of bone names for retargeting [Skeleton3D] into common "
"names defined by a [SkeletonProfile]."
msgstr ""
@@ -16147,9 +14593,6 @@ msgstr ""
"[b]注意:[/b]按鈕不處理觸摸輸入,因此不支援多點觸控,因為類比滑鼠在給定時間只"
"能按下一個按鈕。請用 [TouchScreenButton] 製作觸發遊戲移動或動作的按鈕。"
-msgid "OS Test Demo"
-msgstr "作業系統測試演示"
-
msgid ""
"Text alignment policy for the button's text, use one of the [enum "
"HorizontalAlignment] constants."
@@ -16628,9 +15071,6 @@ msgstr ""
msgid "2D Isometric Demo"
msgstr "2D 等軸演示"
-msgid "2D HDR Demo"
-msgstr "2D HDR 演示"
-
msgid "Aligns the camera to the tracked node."
msgstr "將相機與追蹤的節點對齊。"
@@ -17688,19 +16128,6 @@ msgstr "相機安裝在了裝置後部。"
msgid "Server keeping track of different cameras accessible in Godot."
msgstr "追蹤 Godot 中可存取的不同攝像頭的伺服器。"
-msgid ""
-"The [CameraServer] keeps track of different cameras accessible in Godot. "
-"These are external cameras such as webcams or the cameras on your phone.\n"
-"It is notably used to provide AR modules with a video feed from the camera.\n"
-"[b]Note:[/b] This class is currently only implemented on macOS and iOS. On "
-"other platforms, no [CameraFeed]s will be available."
-msgstr ""
-"[CameraServer] 記錄了 Godot 中可存取的不同相機。此處的相機指外部相機,例如網路"
-"攝像頭或手機上的攝像頭。\n"
-"主要用於為 AR 模組提供來自相機的影片源。\n"
-"[b]注意:[/b]這個類目前只在 macOS 和 iOS 上實作。在其他平臺上沒有可用的 "
-"[CameraFeed]。"
-
msgid "Adds the camera [param feed] to the camera server."
msgstr "將相機源 [param feed] 新增到相機伺服器中。"
@@ -17867,42 +16294,6 @@ msgstr ""
msgid "Abstract base class for everything in 2D space."
msgstr "2D 空間中所有物件的抽象基底類別。"
-msgid ""
-"Abstract base class for everything in 2D space. Canvas items are laid out in "
-"a tree; children inherit and extend their parent's transform. [CanvasItem] is "
-"extended by [Control] for GUI-related nodes, and by [Node2D] for 2D game "
-"objects.\n"
-"Any [CanvasItem] can draw. For this, [method queue_redraw] is called by the "
-"engine, then [constant NOTIFICATION_DRAW] will be received on idle time to "
-"request a redraw. Because of this, canvas items don't need to be redrawn on "
-"every frame, improving the performance significantly. Several functions for "
-"drawing on the [CanvasItem] are provided (see [code]draw_*[/code] functions). "
-"However, they can only be used inside [method _draw], its corresponding "
-"[method Object._notification] or methods connected to the [signal draw] "
-"signal.\n"
-"Canvas items are drawn in tree order on their canvas layer. By default, "
-"children are on top of their parents, so a root [CanvasItem] will be drawn "
-"behind everything. This behavior can be changed on a per-item basis.\n"
-"A [CanvasItem] can be hidden, which will also hide its children. By adjusting "
-"various other properties of a [CanvasItem], you can also modulate its color "
-"(via [member modulate] or [member self_modulate]), change its Z-index, blend "
-"mode, and more."
-msgstr ""
-"2D 空間中所有物件的抽象基底類別。畫布專案(Canvas Item)以樹狀排列;子節點繼承"
-"並擴充其父節點的變換。[CanvasItem] 由 [Control] 擴充為 GUI 相關的節點,由 "
-"[Node2D] 擴充為 2D 遊戲物件。\n"
-"任何 [CanvasItem] 都可以進行繪圖。繪圖時,引擎會呼叫 [method queue_redraw],然"
-"後節點就會在空閒時接收到請求重繪的 [constant NOTIFICATION_DRAW]。因此畫布項目"
-"不需要每一影格都重繪,顯著提升了性能。這個類還提供了幾個用於在 [CanvasItem] 上"
-"繪圖的函式(見 [code]draw_*[/code] 函式)。不過這些函式都只能在 [method "
-"_draw] 及其對應的 [method Object._notification] 或連接到 [signal draw] 的方法"
-"內使用。\n"
-"畫布專案是按樹狀順序繪製的。預設情況下,子專案位於父專案的上方,因此根 "
-"[CanvasItem] 將被畫在所有專案的後面。這種行為可以針對單個畫布專案進行更改。\n"
-"[CanvasItem] 可以隱藏,隱藏時也會隱藏其子專案。通過調整畫布專案的各種其它屬"
-"性,你還可以調變它的顏色(通過 [member modulate] 或 [member self_modulate])、"
-"更改 Z 索引、混合模式等。"
-
msgid "Viewport and canvas transforms"
msgstr "Viewport 和畫布變換"
@@ -17934,13 +16325,6 @@ 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 colored polygon of any number of points, convex or concave. Unlike "
"[method draw_polygon], a single color must be specified for the whole polygon."
msgstr ""
@@ -18514,23 +16898,6 @@ msgstr ""
"將是 2 + 3 = 5。"
msgid ""
-"Z index. Controls the order in which the nodes render. A node with a higher Z "
-"index will display in front of others. Must be between [constant "
-"RenderingServer.CANVAS_ITEM_Z_MIN] and [constant RenderingServer."
-"CANVAS_ITEM_Z_MAX] (inclusive).\n"
-"[b]Note:[/b] Changing the Z index of a [Control] only affects the drawing "
-"order, not the order in which input events are handled. This can be useful to "
-"implement certain UI animations, e.g. a menu where hovered items are scaled "
-"and should overlap others."
-msgstr ""
-"Z 索引。控制節點的算繪順序。具有較高 Z 索引的節點將顯示在其他節點的前面。必須"
-"在 [constant RenderingServer.CANVAS_ITEM_Z_MIN] 和 [constant RenderingServer."
-"CANVAS_ITEM_Z_MAX]之間(包含)。\n"
-"[b]注意:[/b]改變 [Control] 的 Z 索引只影響繪圖順序,不影響處理輸入事件的順"
-"序。可用於實作某些 UI 動畫,例如對處於懸停狀態的功能表專案進行縮放,此時會與其"
-"他內容重疊。"
-
-msgid ""
"Emitted when the [CanvasItem] must redraw, [i]after[/i] the related [constant "
"NOTIFICATION_DRAW] notification, and [i]before[/i] [method _draw] is called.\n"
"[b]Note:[/b] Deferred connections do not allow drawing through the "
@@ -19016,14 +17383,6 @@ msgstr ""
"[code]true[/code] 時這個函式什麼都不做。"
msgid ""
-"Returns the surface normal of the floor at the last collision point. Only "
-"valid after calling [method move_and_slide] and when [method is_on_floor] "
-"returns [code]true[/code]."
-msgstr ""
-"返回最近一次碰撞點的地面法線。只有在呼叫了 [method move_and_slide] 並且 "
-"[method is_on_floor] 返回值為 [code]true[/code] 時才有效。"
-
-msgid ""
"Returns the last motion applied to the [CharacterBody2D] during the last call "
"to [method move_and_slide]. The movement can be split into multiple motions "
"when sliding occurs, and this method return the last one, which is useful to "
@@ -19110,14 +17469,6 @@ msgstr ""
"返回最近一次呼叫 [method move_and_slide] 時,該物體發生碰撞並改變方向的次數。"
msgid ""
-"Returns the surface normal of the wall at the last collision point. Only "
-"valid after calling [method move_and_slide] and when [method is_on_wall] "
-"returns [code]true[/code]."
-msgstr ""
-"返回最近一次碰撞點的牆面法線。只有在呼叫了 [method move_and_slide] 並且 "
-"[method is_on_wall] 返回值為 [code]true[/code] 時才有效。"
-
-msgid ""
"Returns [code]true[/code] if the body collided with the ceiling on the last "
"call of [method move_and_slide]. Otherwise, returns [code]false[/code]. The "
"[member up_direction] and [member floor_max_angle] are used to determine "
@@ -19908,13 +18259,6 @@ msgstr ""
"正確顯示原始程式碼。"
msgid ""
-"Override this method to define how the selected entry should be inserted. If "
-"[param replace] is true, any existing text should be replaced."
-msgstr ""
-"覆蓋此方法以定義所選條目應如何插入。如果 [param replace] 為真,任何現有的文字"
-"都應該被替換。"
-
-msgid ""
"Override this method to define what items in [param candidates] should be "
"displayed.\n"
"Both [param candidates] and the return is a [Array] of [Dictionary], see "
@@ -19925,13 +18269,6 @@ msgstr ""
"[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."
@@ -20163,16 +18500,6 @@ 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 "設定目前選定的補全選項。"
@@ -20903,21 +19230,6 @@ 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 ""
"Called when the mouse pointer enters any of this object's shapes. Requires "
"[member input_ray_pickable] to be [code]true[/code] and at least one [member "
"collision_layer] bit to be set. Note that moving between different shapes "
@@ -20991,16 +19303,6 @@ msgstr ""
"輸入事件。"
msgid ""
-"Emitted when the object receives an unhandled [InputEvent]. [param position] "
-"is the location in world space of the mouse pointer on the surface of the "
-"shape with index [param shape_idx] and [param normal] is the normal vector of "
-"the surface at that point."
-msgstr ""
-"當物件收到未處理的 [InputEvent] 時發出。[param position] 是滑鼠指標在索引為 "
-"[param shape_idx] 的形狀表面上的世界空間位置,[param normal] 是表面在該點的法"
-"向量。"
-
-msgid ""
"Emitted when the mouse pointer enters any of this object's shapes. Requires "
"[member input_ray_pickable] to be [code]true[/code] and at least one [member "
"collision_layer] bit to be set.\n"
@@ -21060,21 +19362,6 @@ msgstr ""
msgid "A node that provides a polygon shape to a [CollisionObject2D] parent."
msgstr "向 [CollisionObject2D] 父級提供多邊形形狀的節點。"
-msgid ""
-"A node that provides a thickened polygon shape (a prism) to a "
-"[CollisionObject2D] parent and allows to edit it. The polygon can be concave "
-"or convex. This can give a detection shape to an [Area2D] or turn "
-"[PhysicsBody2D] into a solid object.\n"
-"[b]Warning:[/b] A non-uniformly scaled [CollisionShape2D] will likely not "
-"behave as expected. Make sure to keep its scale the same on all axes and "
-"adjust its shape resource instead."
-msgstr ""
-"向 [CollisionObject2D] 父級提供加厚多邊形形狀(角柱體)的節點,能夠為這個形狀"
-"提供編輯的方法。該多邊形可以是凹多邊形,也可以是凸多邊形。能夠為 [Area2D] 提供"
-"偵測形狀,也能夠將 [PhysicsBody2D] 變為實體。\n"
-"[b]警告:[/b]非均勻縮放的 [CollisionObject2D] 應該無法按預期工作。請確保它在所"
-"有軸上的縮放是一致的,可以用對形狀資源的調整來代替非均勻縮放。"
-
msgid "Collision build mode. Use one of the [enum BuildMode] constants."
msgstr "碰撞建構模式。使用 [enum BuildMode] 常數之一。"
@@ -21237,9 +19524,6 @@ msgstr "以 RGBA 格式表示的顏色。"
msgid "2D GD Paint Demo"
msgstr "2D GD 畫圖演示"
-msgid "Tween Demo"
-msgstr "Tween 演示"
-
msgid "GUI Drag And Drop Demo"
msgstr "GUI 拖放演示"
@@ -21460,12 +19744,6 @@ msgstr ""
"[/codeblocks]"
msgid ""
-"Decodes a [Color] from a RGBE9995 format integer. See [constant Image."
-"FORMAT_RGBE9995]."
-msgstr ""
-"從 RGBE9995 格式的整數解碼 [Color]。見 [constant Image.FORMAT_RGBE9995]。"
-
-msgid ""
"Creates a [Color] from the given string, which can be either an HTML color "
"code or a named color (case-insensitive). Returns [param default] if the "
"color cannot be inferred from the string."
@@ -22994,204 +21272,6 @@ msgstr "代表 [enum Param] 列舉的大小。"
msgid "Helper class to handle INI-style files."
msgstr "用於處理 INI 樣式檔的輔助類。"
-msgid ""
-"This helper class can be used to store [Variant] values on the filesystem "
-"using INI-style formatting. The stored values are identified by a section and "
-"a key:\n"
-"[codeblock]\n"
-"[section]\n"
-"some_key=42\n"
-"string_example=\"Hello World3D!\"\n"
-"a_vector=Vector3(1, 0, 2)\n"
-"[/codeblock]\n"
-"The stored data can be saved to or parsed from a file, though ConfigFile "
-"objects can also be used directly without accessing the filesystem.\n"
-"The following example shows how to create a simple [ConfigFile] and save it "
-"on disc:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# Create new ConfigFile object.\n"
-"var config = ConfigFile.new()\n"
-"\n"
-"# Store some values.\n"
-"config.set_value(\"Player1\", \"player_name\", \"Steve\")\n"
-"config.set_value(\"Player1\", \"best_score\", 10)\n"
-"config.set_value(\"Player2\", \"player_name\", \"V3geta\")\n"
-"config.set_value(\"Player2\", \"best_score\", 9001)\n"
-"\n"
-"# Save it to a file (overwrite if already exists).\n"
-"config.save(\"user://scores.cfg\")\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// Create new ConfigFile object.\n"
-"var config = new ConfigFile();\n"
-"\n"
-"// Store some values.\n"
-"config.SetValue(\"Player1\", \"player_name\", \"Steve\");\n"
-"config.SetValue(\"Player1\", \"best_score\", 10);\n"
-"config.SetValue(\"Player2\", \"player_name\", \"V3geta\");\n"
-"config.SetValue(\"Player2\", \"best_score\", 9001);\n"
-"\n"
-"// Save it to a file (overwrite if already exists).\n"
-"config.Save(\"user://scores.cfg\");\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"This example shows how the above file could be loaded:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var score_data = {}\n"
-"var config = ConfigFile.new()\n"
-"\n"
-"# Load data from a file.\n"
-"var err = config.load(\"user://scores.cfg\")\n"
-"\n"
-"# If the file didn't load, ignore it.\n"
-"if err != OK:\n"
-" return\n"
-"\n"
-"# Iterate over all sections.\n"
-"for player in config.get_sections():\n"
-" # Fetch the data for each section.\n"
-" var player_name = config.get_value(player, \"player_name\")\n"
-" var player_score = config.get_value(player, \"best_score\")\n"
-" score_data[player_name] = player_score\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var score_data = new Godot.Collections.Dictionary();\n"
-"var config = new ConfigFile();\n"
-"\n"
-"// Load data from a file.\n"
-"Error err = config.Load(\"user://scores.cfg\");\n"
-"\n"
-"// If the file didn't load, ignore it.\n"
-"if (err != Error.Ok)\n"
-"{\n"
-" return;\n"
-"}\n"
-"\n"
-"// Iterate over all sections.\n"
-"foreach (String player in config.GetSections())\n"
-"{\n"
-" // Fetch the data for each section.\n"
-" var player_name = (String)config.GetValue(player, \"player_name\");\n"
-" var player_score = (int)config.GetValue(player, \"best_score\");\n"
-" score_data[player_name] = player_score;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"Any operation that mutates the ConfigFile such as [method set_value], [method "
-"clear], or [method erase_section], only changes what is loaded in memory. If "
-"you want to write the change to a file, you have to save the changes with "
-"[method save], [method save_encrypted], or [method save_encrypted_pass].\n"
-"Keep in mind that section and property names can't contain spaces. Anything "
-"after a space will be ignored on save and on load.\n"
-"ConfigFiles can also contain manually written comment lines starting with a "
-"semicolon ([code];[/code]). Those lines will be ignored when parsing the "
-"file. Note that comments will be lost when saving the ConfigFile. This can "
-"still be useful for dedicated server configuration files, which are typically "
-"never overwritten without explicit user action.\n"
-"[b]Note:[/b] The file extension given to a ConfigFile does not have any "
-"impact on its formatting or behavior. By convention, the [code].cfg[/code] "
-"extension is used here, but any other extension such as [code].ini[/code] is "
-"also valid. Since neither [code].cfg[/code] nor [code].ini[/code] are "
-"standardized, Godot's ConfigFile formatting may differ from files written by "
-"other programs."
-msgstr ""
-"該輔助類可用於使用 INI 樣式格式在檔案系統上儲存 [Variant] 值。儲存的值由一個小"
-"節和一個鍵標識:\n"
-"[codeblock]\n"
-"[section]\n"
-"some_key=42\n"
-"string_example=\"Hello World3D!\"\n"
-"a_vector=Vector3(1, 0, 2)\n"
-"[/codeblock]\n"
-"儲存的資料可以被保存到檔中或從檔中解析出來,儘管 ConfigFile 物件也可以直接使用"
-"而無需存取檔案系統。\n"
-"以下範例顯示了如何建立一個簡單的 [ConfigFile] 並將其保存在磁片上:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# 建立新的 ConfigFile 物件。\n"
-"var config = ConfigFile.new()\n"
-"\n"
-"# 儲存一些值。\n"
-"config.set_value(\"Player1\", \"player_name\", \"Steve\")\n"
-"config.set_value(\"Player1\", \"best_score\", 10)\n"
-"config.set_value(\"Player2\", \"player_name\", \"V3geta\")\n"
-"config.set_value(\"Player2\", \"best_score\", 9001)\n"
-"\n"
-"# 將其保存到檔中(如果已存在則覆蓋)。\n"
-"config.save(\"user://scores.cfg\")\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// 建立新的 ConfigFile 物件。\n"
-"var config = new ConfigFile();\n"
-"\n"
-"// 儲存一些值。\n"
-"config.SetValue(\"Player1\", \"player_name\", \"Steve\");\n"
-"config.SetValue(\"Player1\", \"best_score\", 10);\n"
-"config.SetValue(\"Player2\", \"player_name\", \"V3geta\");\n"
-"config.SetValue(\"Player2\", \"best_score\", 9001);\n"
-"\n"
-"// 將其保存到檔中(如果已存在則覆蓋)。\n"
-"config.Save(\"user://scores.cfg\");\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"該範例展示了如何載入上面的檔案:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var score_data = {}\n"
-"var config = ConfigFile.new()\n"
-"\n"
-"# 從檔載入資料。\n"
-"var err = config.load(\"user://scores.cfg\")\n"
-"\n"
-"# 如果檔沒有載入,忽略它。\n"
-"if err != OK:\n"
-" return\n"
-"\n"
-"# 反覆運算所有小節。\n"
-"for player in config.get_sections():\n"
-" # 獲取每個小節的資料。\n"
-" var player_name = config.get_value(player, \"player_name\")\n"
-" var player_score = config.get_value(player, \"best_score\")\n"
-" score_data[player_name] = player_score\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var score_data = new Godot.Collections.Dictionary();\n"
-"var config = new ConfigFile();\n"
-"\n"
-"// 從檔載入資料。\n"
-"Error err = config.Load(\"user://scores.cfg\");\n"
-"\n"
-"// 如果檔沒有載入,忽略它。\n"
-"if (err != Error.Ok)\n"
-"{\n"
-" return;\n"
-"}\n"
-"\n"
-"// 反覆運算所有小節。\n"
-"foreach (String player in config.GetSections())\n"
-"{\n"
-" // 獲取每個小節的資料。\n"
-" var player_name = (String)config.GetValue(player, \"player_name\");\n"
-" var player_score = (int)config.GetValue(player, \"best_score\");\n"
-" score_data[player_name] = player_score;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"任何改變 ConfigFile 的操作,例如 [method set_value]、[method clear]、或 "
-"[method erase_section],只會改變載入到記憶體中的內容。如果要將更改寫入檔,則必"
-"須使用 [method save]、[method save_encrypted]、或 [method "
-"save_encrypted_pass] 保存更改。\n"
-"請記住,小節和屬性名稱不能包含空格。保存和載入時將忽略空格後的任何內容。\n"
-"ConfigFiles 還可以包含以分號([code];[/code])開頭的手動編寫的注釋行。解析文件"
-"時將忽略這些行。請注意,保存 ConfigFile 時注釋將丟失。注釋對於專用伺服器配置檔"
-"仍然很有用,如果沒有明確的使用者操作,這些檔通常永遠不會被覆蓋。\n"
-"[b]注意:[/b]為 ConfigFile 指定的檔副檔名對其格式或行為沒有任何影響。按照慣"
-"例,此處使用 [code].cfg[/code] 副檔名,但 [code].ini[/code] 等任何其他副檔名也"
-"有效。由於 [code].cfg[/code] 和 [code].ini[/code] 都不是標準化的格式,Godot "
-"的 ConfigFile 格式可能與其他程式編寫的檔不同。"
-
msgid "Removes the entire contents of the config."
msgstr "移除配置的全部內容。"
@@ -24891,16 +22971,6 @@ msgstr ""
"會接收輸入。"
msgid ""
-"The minimum size of the node's bounding rectangle. If you set it to a value "
-"greater than (0, 0), the node's bounding rectangle will always have at least "
-"this size, even if its content is smaller. If it's set to (0, 0), the node "
-"sizes automatically to fit its content, be it a texture or child nodes."
-msgstr ""
-"節點的邊界矩形的最小尺寸。如果你將它設定為大於 (0,0) 的值,節點的邊界矩形將始"
-"終至少有這個大小,即使它的內容更小。如果設定為 (0,0),節點的大小會自動適應其"
-"內容,無論是紋理還是子節點。"
-
-msgid ""
"The focus access mode for the control (None, Click or All). Only one Control "
"can be focused at the same time, and it will receive keyboard, gamepad, and "
"mouse signals."
@@ -25337,26 +23407,6 @@ msgstr "當節點獲得焦點時發送。"
msgid "Sent when the node loses focus."
msgstr "當節點失去焦點時發送。"
-msgid ""
-"Sent when the node needs to refresh its theme items. This happens in one of "
-"the following cases:\n"
-"- The [member theme] property is changed on this node or any of its "
-"ancestors.\n"
-"- The [member theme_type_variation] property is changed on this node.\n"
-"- One of the node's theme property overrides is changed.\n"
-"- The node enters the scene tree.\n"
-"[b]Note:[/b] As an optimization, this notification won't be sent from changes "
-"that occur while this node is outside of the scene tree. Instead, all of the "
-"theme item updates can be applied at once when the node enters the scene tree."
-msgstr ""
-"當節點需要更新其主題專案時發送。這發生在以下情況之一:\n"
-"- 在該節點或其任何祖先節點上的 [member theme] 屬性被更改。\n"
-"- 該節點上的 [member theme_type_variation] 屬性被更改。\n"
-"- 該節點的一個主題屬性覆蓋被更改。\n"
-"- 該節點進入場景樹。\n"
-"[b]注意:[/b]作為一種優化,當該節點在場景樹之外時,發生的更改不會發送該通知。"
-"相反,所有的主題項更新可以在該節點進入場景樹時一次性套用。"
-
msgid "Sent when control layout direction is changed."
msgstr "當控制項的佈局方向改變時發送。"
@@ -26877,58 +24927,6 @@ msgstr ""
"[CryptoKey]。"
msgid ""
-"Generates a self-signed [X509Certificate] from the given [CryptoKey] and "
-"[param issuer_name]. The certificate validity will be defined by [param "
-"not_before] and [param not_after] (first valid date and last valid date). The "
-"[param issuer_name] must contain at least \"CN=\" (common name, i.e. the "
-"domain name), \"O=\" (organization, i.e. your company name), \"C=\" (country, "
-"i.e. 2 lettered ISO-3166 code of the country the organization is based in).\n"
-"A small example to generate an RSA key and a X509 self-signed certificate.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var crypto = Crypto.new()\n"
-"# Generate 4096 bits RSA key.\n"
-"var key = crypto.generate_rsa(4096)\n"
-"# Generate self-signed certificate using the given key.\n"
-"var cert = crypto.generate_self_signed_certificate(key, \"CN=example.com,O=A "
-"Game Company,C=IT\")\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var crypto = new Crypto();\n"
-"// Generate 4096 bits RSA key.\n"
-"CryptoKey key = crypto.GenerateRsa(4096);\n"
-"// Generate self-signed certificate using the given key.\n"
-"X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "
-"\"CN=mydomain.com,O=My Game Company,C=IT\");\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"根據給定的 [CryptoKey] 和 [param issuer_name] 生成自簽章的 [X509Certificate]。"
-"憑證有效性將由 [param not_before] 和 [param not_after](第一個有效日期和最後一"
-"個有效日期)定義。[param issuer_name] 必須至少包含“CN=”(通用名稱,即功能變數"
-"名稱)、“O=”(組織,即你的公司名稱)、“C=”(國家,即 2 個字母的該組織所在的國"
-"家/地區的 ISO-3166 程式碼)。\n"
-"生成 RSA 金鑰和 X509 自簽章憑證的小範例。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var crypto = Crypto.new()\n"
-"# 生成 4096 比特 RSA 金鑰。\n"
-"var key = crypto.generate_rsa(4096)\n"
-"# 使用給定的金鑰生成自簽章憑證。\n"
-"var cert = crypto.generate_self_signed_certificate(key, \"CN=example.com,O=A "
-"Game Company,C=IT\")\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var crypto = new Crypto();\n"
-"// 生成 4096 比特 RSA 金鑰。\n"
-"CryptoKey key = crypto.GenerateRsa(4096);\n"
-"// 使用給定的金鑰生成自簽章憑證。\n"
-"X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "
-"\"CN=mydomain.com,O=My Game Company,C=IT\");\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Generates an [url=https://en.wikipedia.org/wiki/HMAC]HMAC[/url] digest of "
"[param msg] using [param key]. The [param hash_type] parameter is the hashing "
"algorithm that is used for the inner and outer hashes.\n"
@@ -29774,26 +27772,6 @@ msgstr ""
"另見 [method cursor_get_shape] 和 [method cursor_set_custom_image]。"
msgid ""
-"Shows a text input dialog which uses the operating system's native look-and-"
-"feel. [param callback] will be called with a [String] argument equal to the "
-"text field's contents when the dialog is closed for any reason.\n"
-"[b]Note:[/b] This method is implemented only on macOS."
-msgstr ""
-"顯示文字輸入對話方塊,這個對話方塊的外觀和行為與作業系統原生對話方塊一致。無論"
-"該對話框因為什麼原因而關閉,都會使用文字欄位的內容作為 [String] 參數來呼叫 "
-"[param callback]。\n"
-"[b]注意:[/b]該方法僅在 macOS 上實作。"
-
-msgid ""
-"Shows a text dialog which uses the operating system's native look-and-feel. "
-"[param callback] will be called when the dialog is closed for any reason.\n"
-"[b]Note:[/b] This method is implemented only on macOS."
-msgstr ""
-"顯示文字對話方塊,這個對話方塊的外觀和行為與作業系統原生對話方塊一致。無論該對"
-"話方塊因為什麼原因而關閉,都會使用呼叫 [param callback]。\n"
-"[b]注意:[/b]該方法僅在 macOS 上實作。"
-
-msgid ""
"Allows the [param process_id] PID to steal focus from this window. In other "
"words, this disables the operating system's focus stealing protection for the "
"specified PID.\n"
@@ -29872,33 +27850,6 @@ msgstr ""
"響。"
msgid ""
-"Returns the ID of the window at the specified screen [param position] (in "
-"pixels). On multi-monitor setups, the screen position is relative to the "
-"virtual desktop area. On multi-monitor setups with different screen "
-"resolutions or orientations, the origin may be located outside any display "
-"like this:\n"
-"[codeblock]\n"
-"* (0, 0) +-------+\n"
-" | |\n"
-"+-------------+ | |\n"
-"| | | |\n"
-"| | | |\n"
-"+-------------+ +-------+\n"
-"[/codeblock]"
-msgstr ""
-"返回位於指定螢幕位置 [param position] 的視窗 ID(單位為圖元)。使用多個監視器"
-"時,螢幕位置是相對於虛擬桌面區域的位置。如果多監視器中使用了不同的螢幕解析度或"
-"朝向,原點有可能位於所有顯示器之外,類似於:\n"
-"[codeblock]\n"
-"* (0, 0) +-------+\n"
-" | |\n"
-"+-------------+ | |\n"
-"| | | |\n"
-"| | | |\n"
-"+-------------+ +-------+\n"
-"[/codeblock]"
-
-msgid ""
"Returns the list of Godot window IDs belonging to this process.\n"
"[b]Note:[/b] Native dialogs are not included in this list."
msgstr ""
@@ -29944,26 +27895,6 @@ msgstr ""
"[b]注意:[/b]該方法僅在 macOS 上實作。"
msgid ""
-"Returns the index of the item with the specified [param tag]. Index is "
-"automatically assigned to each item by the engine. Index can not be set "
-"manually.\n"
-"[b]Note:[/b] This method is implemented only on macOS."
-msgstr ""
-"返回標籤為指定的 [param tag] 的功能表專案的索引。引擎會自動為每個功能表專案賦"
-"予索引。索引無法手動設定。\n"
-"[b]注意:[/b]該方法僅在 macOS 上實作。"
-
-msgid ""
-"Returns the index of the item with the specified [param text]. Index is "
-"automatically assigned to each item by the engine. Index can not be set "
-"manually.\n"
-"[b]Note:[/b] This method is implemented only on macOS."
-msgstr ""
-"返回文字為指定的 [param text] 的功能表專案的索引。引擎會自動為每個功能表專案賦"
-"予索引。索引無法手動設定。\n"
-"[b]注意:[/b]該方法僅在 macOS 上實作。"
-
-msgid ""
"Returns the callback of the item accelerator at index [param idx].\n"
"[b]Note:[/b] This method is implemented only on macOS."
msgstr ""
@@ -30396,31 +28327,6 @@ msgstr ""
"orientation] 未設定為 [constant SCREEN_SENSOR],則該方法無效。"
msgid ""
-"Sets the window icon (usually displayed in the top-left corner) with an "
-"[Image]. To use icons in the operating system's native format, use [method "
-"set_native_icon] instead."
-msgstr ""
-"使用 [Image] 設定視窗圖示(通常顯示在左上角)。要使用作業系統的原生格式設定圖"
-"標,請改用 [method set_native_icon]。"
-
-msgid ""
-"Sets the window icon (usually displayed in the top-left corner) in the "
-"operating system's [i]native[/i] format. The file at [param filename] must be "
-"in [code].ico[/code] format on Windows or [code].icns[/code] on macOS. By "
-"using specially crafted [code].ico[/code] or [code].icns[/code] icons, "
-"[method set_native_icon] allows specifying different icons depending on the "
-"size the icon is displayed at. This size is determined by the operating "
-"system and user preferences (including the display scale factor). To use "
-"icons in other formats, use [method set_icon] instead."
-msgstr ""
-"使用作業系統的[i]原生[/i]格式設定視窗圖示(通常顯示在左上角)。位於 [param "
-"filename] 的檔在 Windows 上必須為 [code].ico[/code] 格式,在 macOS 上必須為 "
-"[code].icns[/code] 格式。使用特製的 [code].ico[/code] 或 [code].icns[/code] 圖"
-"示,就能夠讓 [method set_native_icon] 指定以不同尺寸顯示圖示時顯示不同的圖示。"
-"大小由作業系統和使用者首選項決定(包括顯示器縮放係數)。要使用其他格式的圖示,"
-"請改用 [method set_icon]。"
-
-msgid ""
"Returns current active tablet driver name.\n"
"[b]Note:[/b] This method is implemented only on Windows."
msgstr ""
@@ -30663,39 +28569,6 @@ msgstr ""
"window_id] 的 [method window_set_ime_active] 為 [code]true[/code] 時有效。"
msgid ""
-"Sets the maximum size of the window specified by [param window_id] in pixels. "
-"Normally, the user will not be able to drag the window to make it smaller "
-"than the specified size. See also [method window_get_max_size].\n"
-"[b]Note:[/b] It's recommended to change this value using [member Window."
-"max_size] instead.\n"
-"[b]Note:[/b] Using third-party tools, it is possible for users to disable "
-"window geometry restrictions and therefore bypass this limit."
-msgstr ""
-"設定由 [param window_id] 指定的視窗的最大大小(單位為圖元)。通常,使用者將無"
-"法拖動視窗使其小於指定大小。另見 [method window_get_max_size]。\n"
-"[b]注意:[/b]建議改用 [member Window.max_size] 更改此值。\n"
-"[b]注意:[/b]使用協力廠商工具,使用者可以禁用視窗幾何限制,從而繞過此限制。"
-
-msgid ""
-"Sets the minimum size for the given window to [param min_size] (in pixels). "
-"Normally, the user will not be able to drag the window to make it larger than "
-"the specified size. See also [method window_get_min_size].\n"
-"[b]Note:[/b] It's recommended to change this value using [member Window."
-"min_size] instead.\n"
-"[b]Note:[/b] By default, the main window has a minimum size of "
-"[code]Vector2i(64, 64)[/code]. This prevents issues that can arise when the "
-"window is resized to a near-zero size.\n"
-"[b]Note:[/b] Using third-party tools, it is possible for users to disable "
-"window geometry restrictions and therefore bypass this limit."
-msgstr ""
-"將給定視窗的最小大小設定為 [param min_size](單位為圖元)。通常,使用者將無法"
-"拖動視窗使其大於指定大小。另見 [method window_get_min_size]。\n"
-"[b]注意:[/b]建議改用 [member Window.min_size] 來更改此值。\n"
-"[b]注意:[/b]預設情況下,主視窗的最小大小為 [code]Vector2i(64, 64)[/code]。這"
-"可以防止將視窗調整為接近零的大小時可能出現的問題。\n"
-"[b]注意:[/b]使用協力廠商工具,使用者可以禁用視窗幾何限制,從而繞過此限制。"
-
-msgid ""
"Sets window mode for the given window to [param mode]. See [enum WindowMode] "
"for possible values and how each mode behaves.\n"
"[b]Note:[/b] Setting the window to full screen forcibly sets the borderless "
@@ -31274,315 +29147,6 @@ msgid "Helper class to implement a DTLS server."
msgstr "實作 DTLS 伺服器的輔助類。"
msgid ""
-"This class is used to store the state of a DTLS server. Upon [method setup] "
-"it converts connected [PacketPeerUDP] to [PacketPeerDTLS] accepting them via "
-"[method take_connection] as DTLS clients. Under the hood, this class is used "
-"to store the DTLS state and cookies of the server. The reason of why the "
-"state and cookies are needed is outside of the scope of this documentation.\n"
-"Below a small example of how to use it:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# server_node.gd\n"
-"extends Node\n"
-"\n"
-"var dtls := DTLSServer.new()\n"
-"var server := UDPServer.new()\n"
-"var peers = []\n"
-"\n"
-"func _ready():\n"
-" server.listen(4242)\n"
-" var key = load(\"key.key\") # Your private key.\n"
-" var cert = load(\"cert.crt\") # Your X509 certificate.\n"
-" dtls.setup(key, cert)\n"
-"\n"
-"func _process(delta):\n"
-" while server.is_connection_available():\n"
-" var peer: PacketPeerUDP = server.take_connection()\n"
-" var dtls_peer: PacketPeerDTLS = dtls.take_connection(peer)\n"
-" if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:\n"
-" continue # It is normal that 50% of the connections fails due to "
-"cookie exchange.\n"
-" print(\"Peer connected!\")\n"
-" peers.append(dtls_peer)\n"
-"\n"
-" for p in peers:\n"
-" p.poll() # Must poll to update the state.\n"
-" if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
-" while p.get_available_packet_count() > 0:\n"
-" print(\"Received message from client: %s\" % p.get_packet()."
-"get_string_from_utf8())\n"
-" p.put_packet(\"Hello DTLS client\".to_utf8_buffer())\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// ServerNode.cs\n"
-"using Godot;\n"
-"\n"
-"public partial class ServerNode : Node\n"
-"{\n"
-" private DtlsServer _dtls = new DtlsServer();\n"
-" private UdpServer _server = new UdpServer();\n"
-" private Godot.Collections.Array<PacketPeerDTLS> _peers = new Godot."
-"Collections.Array<PacketPeerDTLS>();\n"
-"\n"
-" public override void _Ready()\n"
-" {\n"
-" _server.Listen(4242);\n"
-" var key = GD.Load<CryptoKey>(\"key.key\"); // Your private key.\n"
-" var cert = GD.Load<X509Certificate>(\"cert.crt\"); // Your X509 "
-"certificate.\n"
-" _dtls.Setup(key, cert);\n"
-" }\n"
-"\n"
-" public override void _Process(double delta)\n"
-" {\n"
-" while (Server.IsConnectionAvailable())\n"
-" {\n"
-" PacketPeerUDP peer = _server.TakeConnection();\n"
-" PacketPeerDTLS dtlsPeer = _dtls.TakeConnection(peer);\n"
-" if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking)\n"
-" {\n"
-" continue; // It is normal that 50% of the connections fails "
-"due to cookie exchange.\n"
-" }\n"
-" GD.Print(\"Peer connected!\");\n"
-" _peers.Add(dtlsPeer);\n"
-" }\n"
-"\n"
-" foreach (var p in _peers)\n"
-" {\n"
-" p.Poll(); // Must poll to update the state.\n"
-" if (p.GetStatus() == PacketPeerDtls.Status.Connected)\n"
-" {\n"
-" while (p.GetAvailablePacketCount() > 0)\n"
-" {\n"
-" GD.Print($\"Received Message From Client: {p.GetPacket()."
-"GetStringFromUtf8()}\");\n"
-" p.PutPacket(\"Hello DTLS Client\".ToUtf8Buffer());\n"
-" }\n"
-" }\n"
-" }\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# client_node.gd\n"
-"extends Node\n"
-"\n"
-"var dtls := PacketPeerDTLS.new()\n"
-"var udp := PacketPeerUDP.new()\n"
-"var connected = false\n"
-"\n"
-"func _ready():\n"
-" udp.connect_to_host(\"127.0.0.1\", 4242)\n"
-" dtls.connect_to_peer(udp, false) # Use true in production for certificate "
-"validation!\n"
-"\n"
-"func _process(delta):\n"
-" dtls.poll()\n"
-" if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
-" if !connected:\n"
-" # Try to contact server\n"
-" dtls.put_packet(\"The answer is... 42!\".to_utf8_buffer())\n"
-" while dtls.get_available_packet_count() > 0:\n"
-" print(\"Connected: %s\" % dtls.get_packet()."
-"get_string_from_utf8())\n"
-" connected = true\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// ClientNode.cs\n"
-"using Godot;\n"
-"using System.Text;\n"
-"\n"
-"public partial class ClientNode : Node\n"
-"{\n"
-" private PacketPeerDtls _dtls = new PacketPeerDtls();\n"
-" private PacketPeerUdp _udp = new PacketPeerUdp();\n"
-" private bool _connected = false;\n"
-"\n"
-" public override void _Ready()\n"
-" {\n"
-" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n"
-" _dtls.ConnectToPeer(_udp, validateCerts: false); // Use true in "
-"production for certificate validation!\n"
-" }\n"
-"\n"
-" public override void _Process(double delta)\n"
-" {\n"
-" _dtls.Poll();\n"
-" if (_dtls.GetStatus() == PacketPeerDtls.Status.Connected)\n"
-" {\n"
-" if (!_connected)\n"
-" {\n"
-" // Try to contact server\n"
-" _dtls.PutPacket(\"The Answer Is..42!\".ToUtf8Buffer());\n"
-" }\n"
-" while (_dtls.GetAvailablePacketCount() > 0)\n"
-" {\n"
-" GD.Print($\"Connected: {_dtls.GetPacket()."
-"GetStringFromUtf8()}\");\n"
-" _connected = true;\n"
-" }\n"
-" }\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"該類用於儲存 DTLS 伺服器的狀態。在 [method setup] 之後,它將連接的 "
-"[PacketPeerUDP] 轉換為 [PacketPeerDTLS],通過 [method take_connection] 接受它"
-"們作為 DTLS 使用者端。在底層,這個類用於儲存伺服器的 DTLS 狀態和 cookie。為什"
-"麼需要狀態和 cookie 的原因不在本文件的範圍內。\n"
-"下面是一個如何使用它的小例子:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# server_node.gd\n"
-"extends Node\n"
-"\n"
-"var dtls := DTLSServer.new()\n"
-"var server := UDPServer.new()\n"
-"var peers = []\n"
-"\n"
-"func _ready():\n"
-" server.listen(4242)\n"
-" var key = load(\"key.key\") # 你的私密金鑰。\n"
-" var cert = load(\"cert.crt\") # 你的 X509 憑證。\n"
-" dtls.setup(key, cert)\n"
-"\n"
-"func _process(delta):\n"
-" while server.is_connection_available():\n"
-" var peer: PacketPeerUDP = server.take_connection()\n"
-" var dtls_peer: PacketPeerDTLS = dtls.take_connection(peer)\n"
-" if dtls_peer.get_status() != PacketPeerDTLS.STATUS_HANDSHAKING:\n"
-" continue # 由於 cookie 交換,50% 的連接會失敗,這是正常現象。\n"
-" print(\"對等體已連接!\")\n"
-" peers.append(dtls_peer)\n"
-"\n"
-" for p in peers:\n"
-" p.poll() # 必須輪詢以更新狀態。\n"
-" if p.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
-" while p.get_available_packet_count() > 0:\n"
-" print(\"從使用者端收到消息:%s\" % p.get_packet()."
-"get_string_from_utf8())\n"
-" p.put_packet(\"你好 DTLS 使用者端\".to_utf8_buffer())\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// ServerNode.cs\n"
-"using Godot;\n"
-"\n"
-"public partial class ServerNode : Node\n"
-"{\n"
-" private DtlsServer _dtls = new DtlsServer();\n"
-" private UdpServer _server = new UdpServer();\n"
-" private Godot.Collections.Array<PacketPeerDTLS> _peers = new Godot."
-"Collections.Array<PacketPeerDTLS>();\n"
-"\n"
-" public override void _Ready()\n"
-" {\n"
-" _server.Listen(4242);\n"
-" var key = GD.Load<CryptoKey>(\"key.key\"); // 你的私密金鑰。\n"
-" var cert = GD.Load<X509Certificate>(\"cert.crt\"); // 你的 X509 證"
-"書。\n"
-" _dtls.Setup(key, cert);\n"
-" }\n"
-"\n"
-" public override void _Process(double delta)\n"
-" {\n"
-" while (Server.IsConnectionAvailable())\n"
-" {\n"
-" PacketPeerUDP peer = _server.TakeConnection();\n"
-" PacketPeerDTLS dtlsPeer = _dtls.TakeConnection(peer);\n"
-" if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking)\n"
-" {\n"
-" continue; // 由於 cookie 交換,50% 的連接會失敗,這是正常現"
-"象。\n"
-" }\n"
-" GD.Print(\"對等體已連接!\");\n"
-" _peers.Add(dtlsPeer);\n"
-" }\n"
-"\n"
-" foreach (var p in _peers)\n"
-" {\n"
-" p.Poll(); // 必須輪詢以更新狀態。\n"
-" if (p.GetStatus() == PacketPeerDtls.Status.Connected)\n"
-" {\n"
-" while (p.GetAvailablePacketCount() > 0)\n"
-" {\n"
-" GD.Print($\"從使用者端收到消息:{p.GetPacket()."
-"GetStringFromUtf8()}\");\n"
-" p.PutPacket(\"你好 DTLS 使用者端\".ToUtf8Buffer());\n"
-" }\n"
-" }\n"
-" }\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# client_node.gd\n"
-"extends Node\n"
-"\n"
-"var dtls := PacketPeerDTLS.new()\n"
-"var udp := PacketPeerUDP.new()\n"
-"var connected = false\n"
-"\n"
-"func _ready():\n"
-" udp.connect_to_host(\"127.0.0.1\", 4242)\n"
-" dtls.connect_to_peer(udp, false) # 生產環境中請使用 true 進行憑證校驗!\n"
-"\n"
-"func _process(delta):\n"
-" dtls.poll()\n"
-" if dtls.get_status() == PacketPeerDTLS.STATUS_CONNECTED:\n"
-" if !connected:\n"
-" # 嘗試聯繫伺服器\n"
-" dtls.put_packet(\"回應是… 42!\".to_utf8_buffer())\n"
-" while dtls.get_available_packet_count() > 0:\n"
-" print(\"已連接:%s\" % dtls.get_packet().get_string_from_utf8())\n"
-" connected = true\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// ClientNode.cs\n"
-"using Godot;\n"
-"using System.Text;\n"
-"\n"
-"public partial class ClientNode : Node\n"
-"{\n"
-" private PacketPeerDtls _dtls = new PacketPeerDtls();\n"
-" private PacketPeerUdp _udp = new PacketPeerUdp();\n"
-" private bool _connected = false;\n"
-"\n"
-" public override void _Ready()\n"
-" {\n"
-" _udp.ConnectToHost(\"127.0.0.1\", 4242);\n"
-" _dtls.ConnectToPeer(_udp, validateCerts: false); // 生產環境中請使用 "
-"true 進行憑證校驗!\n"
-" }\n"
-"\n"
-" public override void _Process(double delta)\n"
-" {\n"
-" _dtls.Poll();\n"
-" if (_dtls.GetStatus() == PacketPeerDtls.Status.Connected)\n"
-" {\n"
-" if (!_connected)\n"
-" {\n"
-" // 嘗試聯繫伺服器\n"
-" _dtls.PutPacket(\"回應是… 42!\".ToUtf8Buffer());\n"
-" }\n"
-" while (_dtls.GetAvailablePacketCount() > 0)\n"
-" {\n"
-" GD.Print($\"已連接:{_dtls.GetPacket()."
-"GetStringFromUtf8()}\");\n"
-" _connected = true;\n"
-" }\n"
-" }\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Setup the DTLS server to use the given [param server_options]. See [method "
"TLSOptions.server]."
msgstr ""
@@ -31937,22 +29501,6 @@ msgstr ""
"adding-licensing#impl-Obfuscator]Obfuscator[/url] 的隨機位元組陣列。"
msgid ""
-"If [code]true[/code], project resources are stored in the separate APK "
-"expansion file, instead APK.\n"
-"[b]Note:[/b] APK expansion should be enabled to use PCK encryption."
-msgstr ""
-"如果為 [code]true[/code],則專案資源被儲存在單獨的 APK 擴充檔中,而不是 "
-"APK。\n"
-"[b]注意:[/b]APK 擴充應被啟用才能使用 PCK 加密。"
-
-msgid ""
-"Base64 encoded RSA public key for your publisher account, available from the "
-"profile page on the \"Play Console\"."
-msgstr ""
-"你的發行者帳戶的 Base64 編碼的 RSA 公開金鑰,可從“Play 管理中心”的個人資料頁面"
-"獲取。"
-
-msgid ""
"If [code]true[/code], [code]arm64[/code] binaries are included into exported "
"project."
msgstr ""
@@ -31976,20 +29524,6 @@ msgid ""
msgstr ""
"如果為 [code]true[/code],[code]x86_64[/code] 二進位檔案將包含在匯出的專案中。"
-msgid ""
-"A list of additional command line arguments, exported project will receive "
-"when started."
-msgstr "附加命令列參數的列表,匯出的專案將在啟動時收到該列表。"
-
-msgid "Export format for Gradle build."
-msgstr "Gradle 建構的匯出格式。"
-
-msgid "Minimal Android SDK version for Gradle build."
-msgstr "Gradle 建構的最低 Android SDK 版本。"
-
-msgid "Target Android SDK version for Gradle build."
-msgstr "Gradle 建構的目標 Android SDK 版本。"
-
msgid "If [code]true[/code], Gradle build is used instead of pre-built APK."
msgstr "如果為 [code]true[/code],則使用 Gradle 建構而不是預建構的 APK。"
@@ -32059,12 +29593,6 @@ msgstr ""
"發行金鑰庫檔的使用者名。\n"
"可以使用環境變數 [code]GODOT_ANDROID_KEYSTORE_RELEASE_USER[/code] 覆蓋。"
-msgid "Background layer of the application adaptive icon file."
-msgstr "套用程式自我調整圖示檔的背景圖層。"
-
-msgid "Foreground layer of the application adaptive icon file."
-msgstr "套用程式自我調整圖示檔的前景圖層。"
-
msgid ""
"Application icon file. If left empty, it will fallback to [member "
"ProjectSettings.application/config/icon]."
@@ -32072,27 +29600,10 @@ msgstr ""
"套用程式圖示檔。如果留空,它將退回到 [member ProjectSettings.application/"
"config/icon]。"
-msgid "Application category for the Play Store."
-msgstr "Play 商店的套用程式類別。"
-
-msgid ""
-"If [code]true[/code], task initiated by main activity will be excluded from "
-"the list of recently used applications."
-msgstr ""
-"如果為 [code]true[/code],則主 Activity 啟動的工作將從最近使用的套用程式列表中"
-"排除。"
-
msgid "Name of the application."
msgstr "套用程式的名稱。"
msgid ""
-"If [code]true[/code], when the user uninstalls an app, a prompt to keep the "
-"app's data will be shown."
-msgstr ""
-"如果為 [code]true[/code],當使用者解除安裝套用程式時,將顯示保留套用程式資料的"
-"提示。"
-
-msgid ""
"If [code]true[/code], the user will be able to set this app as the system "
"launcher in Android preferences."
msgstr "如果為 [code]true[/code],則編輯器會在運作遊戲專案時清空“輸出”面板。"
@@ -34075,6 +31586,9 @@ msgstr "建構套用程式可執行檔所使用的 Xcode 版本。"
msgid "Base class for the desktop platform exporter (Windows and Linux/BSD)."
msgstr "桌面平臺匯出器的基底類別(Windows 與 Linux/BSD)。"
+msgid "Exporting for Windows"
+msgstr "為 Windows 匯出"
+
msgid "Exporter for the Web."
msgstr "Web 匯出器。"
@@ -34087,9 +31601,6 @@ msgstr "網頁文件索引"
msgid "Exporter for Windows."
msgstr "Windows 匯出器。"
-msgid "Exporting for Windows"
-msgstr "為 Windows 匯出"
-
msgid ""
"Company that produced the application. Required. See [url=https://learn."
"microsoft.com/en-us/windows/win32/menurc/stringfileinfo-block]StringFileInfo[/"
@@ -36537,65 +34048,6 @@ msgid "File paths in Godot projects"
msgstr "Godot 專案中的檔路徑"
msgid ""
-"Returns the absolute path to the user's cache folder. This folder should be "
-"used for temporary data that can be removed safely whenever the editor is "
-"closed (such as generated resource thumbnails).\n"
-"[b]Default paths per platform:[/b]\n"
-"[codeblock]\n"
-"- Windows: %LOCALAPPDATA%\\Godot\\\n"
-"- macOS: ~/Library/Caches/Godot/\n"
-"- Linux: ~/.cache/godot/\n"
-"[/codeblock]"
-msgstr ""
-"返回使用者快取檔案夾的絕對路徑。該資料夾應該用於臨時資料,關閉編輯器時應該能夠"
-"安全地移除這些資料(例如生成的資源預覽圖)。\n"
-"[b]各平臺的預設路徑:[/b]\n"
-"[codeblock]\n"
-"- Windows: %LOCALAPPDATA%\\Godot\\\n"
-"- macOS: ~/Library/Caches/Godot/\n"
-"- Linux: ~/.cache/godot/\n"
-"[/codeblock]"
-
-msgid ""
-"Returns the absolute path to the user's configuration folder. This folder "
-"should be used for [i]persistent[/i] user configuration files.\n"
-"[b]Default paths per platform:[/b]\n"
-"[codeblock]\n"
-"- Windows: %APPDATA%\\Godot\\ (same as `get_data_dir()`)\n"
-"- macOS: ~/Library/Application Support/Godot/ (same as `get_data_dir()`)\n"
-"- Linux: ~/.config/godot/\n"
-"[/codeblock]"
-msgstr ""
-"返回使用者設定檔夾的絕對路徑。該資料夾應該用於[i]持久化[/i]的使用者設定檔。\n"
-"[b]各平臺的預設路徑:[/b]\n"
-"[codeblock]\n"
-"- Windows: %APPDATA%\\Godot\\ (同 `get_data_dir()`)\n"
-"- macOS: ~/Library/Application Support/Godot/ (同 `get_data_dir()`)\n"
-"- Linux: ~/.config/godot/\n"
-"[/codeblock]"
-
-msgid ""
-"Returns the absolute path to the user's data folder. This folder should be "
-"used for [i]persistent[/i] user data files such as installed export "
-"templates.\n"
-"[b]Default paths per platform:[/b]\n"
-"[codeblock]\n"
-"- Windows: %APPDATA%\\Godot\\ (same as "
-"`get_config_dir()`)\n"
-"- macOS: ~/Library/Application Support/Godot/ (same as `get_config_dir()`)\n"
-"- Linux: ~/.local/share/godot/\n"
-"[/codeblock]"
-msgstr ""
-"返回使用者資料檔案夾的絕對路徑。該資料夾應該用於[i]持久化[/i]的使用者資料檔"
-"案,例如已安裝的匯出範本。\n"
-"[b]各平臺的預設路徑:[/b]\n"
-"[codeblock]\n"
-"- Windows:%APPDATA%\\Godot\\ (同 `get_config_dir()` )\n"
-"- macOS:~/Library/Application Support/Godot/ (同 `get_config_dir()` )\n"
-"- Linux:~/.local/share/godot/\n"
-"[/codeblock]"
-
-msgid ""
"Returns the project-specific editor settings path. Projects all have a unique "
"subdirectory inside the settings path where project-specific editor settings "
"are saved."
@@ -37277,19 +34729,6 @@ msgstr ""
"控制項,並使用 [method Node.queue_free] 將其釋放。"
msgid ""
-"Adds the control to a specific dock slot (see [enum DockSlot] for options).\n"
-"If the dock is repositioned and as long as the plugin is active, the editor "
-"will save the dock position on further sessions.\n"
-"When your plugin is deactivated, make sure to remove your custom control with "
-"[method remove_control_from_docks] and free it with [method Node.queue_free]."
-msgstr ""
-"將控制項新增到特定的停靠面板(有關選項,請參閱 [enum DockSlot])。\n"
-"如果重新放置了停靠面板,並且只要該外掛程式處於活動狀態,編輯器就會在以後的會話"
-"中保存停靠面板的位置。\n"
-"停用外掛程式後,請確保使用 [method remove_control_from_docks] 移除自訂控制項,"
-"並使用 [method Node.queue_free] 將其釋放。"
-
-msgid ""
"Adds a custom type, which will appear in the list of nodes or resources. An "
"icon can be optionally passed.\n"
"When a given node or resource is selected, the base type will be instantiated "
@@ -42985,14 +40424,6 @@ msgid ""
msgstr "色調對應的預設曝光。值越高,圖像越亮。另見 [member tonemap_white]。"
msgid ""
-"The tonemapping mode to use. Tonemapping is the process that \"converts\" HDR "
-"values to be suitable for rendering on a LDR display. (Godot doesn't support "
-"rendering on HDR displays yet.)"
-msgstr ""
-"要使用的色調對應模式。色調對應是對 HDR 值進行“轉換”的過程,轉換後的值適合在 "
-"LDR 顯示器上算繪。(Godot 尚不支援在 HDR 顯示器上進行算繪。)"
-
-msgid ""
"The white reference value for tonemapping (also called \"whitepoint\"). "
"Higher values can make highlights look less blown out, and will also slightly "
"darken the whole scene as a result. Only effective if the [member "
@@ -43714,103 +41145,6 @@ msgid "Provides methods for file reading and writing operations."
msgstr "提供用於檔讀寫操作的方法。"
msgid ""
-"This class can be used to permanently store data in the user device's file "
-"system and to read from it. This is useful for store game save data or player "
-"configuration files.\n"
-"Here's a sample on how to write and read from a file:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func save(content):\n"
-" var file = FileAccess.open(\"user://save_game.dat\", FileAccess.WRITE)\n"
-" file.store_string(content)\n"
-"\n"
-"func load():\n"
-" var file = FileAccess.open(\"user://save_game.dat\", FileAccess.READ)\n"
-" var content = file.get_as_text()\n"
-" return content\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public void Save(string content)\n"
-"{\n"
-" using var file = FileAccess.Open(\"user://save_game.dat\", FileAccess."
-"ModeFlags.Write);\n"
-" file.StoreString(content);\n"
-"}\n"
-"\n"
-"public string Load()\n"
-"{\n"
-" using var file = FileAccess.Open(\"user://save_game.dat\", FileAccess."
-"ModeFlags.Read);\n"
-" string content = file.GetAsText();\n"
-" return content;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"In the example above, the file will be saved in the user data folder as "
-"specified in the [url=$DOCS_URL/tutorials/io/data_paths.html]Data paths[/url] "
-"documentation.\n"
-"[FileAccess] will close when it's freed, which happens when it goes out of "
-"scope or when it gets assigned with [code]null[/code]. [method close] can be "
-"used to close it before then explicitly. In C# the reference must be disposed "
-"manually, which can be done with the [code]using[/code] statement or by "
-"calling the [code]Dispose[/code] method directly.\n"
-"[b]Note:[/b] To access project resources once exported, it is recommended to "
-"use [ResourceLoader] instead of [FileAccess], as some files are converted to "
-"engine-specific formats and their original source files might not be present "
-"in the exported PCK package.\n"
-"[b]Note:[/b] Files are automatically closed only if the process exits "
-"\"normally\" (such as by clicking the window manager's close button or "
-"pressing [b]Alt + F4[/b]). If you stop the project execution by pressing "
-"[b]F8[/b] while the project is running, the file won't be closed as the game "
-"process will be killed. You can work around this by calling [method flush] at "
-"regular intervals."
-msgstr ""
-"這個類可以用於在使用者裝置的檔案系統中永久儲存資料,也可以從中讀取資料。適用於"
-"儲存遊戲存檔資料或玩家設定檔。\n"
-"下面是一個關於如何寫入和讀取檔的範例:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func save(content):\n"
-" var file = FileAccess.open(\"user://save_game.dat\", FileAccess.WRITE)\n"
-" file.store_string(content)\n"
-"\n"
-"func load():\n"
-" var file = FileAccess.open(\"user://save_game.dat\", FileAccess.READ)\n"
-" var content = file.get_as_text()\n"
-" return content\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public void Save(string content)\n"
-"{\n"
-" using var file = FileAccess.Open(\"user://save_game.dat\", FileAccess."
-"ModeFlags.Write);\n"
-" file.StoreString(content);\n"
-"}\n"
-"\n"
-"public string Load()\n"
-"{\n"
-" using var file = FileAccess.Open(\"user://save_game.dat\", FileAccess."
-"ModeFlags.Read);\n"
-" string content = file.GetAsText();\n"
-" return content;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"在上面的例子中,檔將被保存在[url=$DOCS_URL/tutorials/io/data_paths.html]數據路"
-"徑[/url]檔中指定的使用者資料檔案夾中。\n"
-"[FileAccess] 會在釋放時關閉,超出作用於、賦值為 [code]null[/code] 等情況都會導"
-"致釋放。可以使用 [method close] 在此之前明確的關閉。在 C# 中,引用必須手動釋"
-"放,可以通過 [code]using[/code] 敘述或直接呼叫 [code]Dispose[/code] 方法來完"
-"成。\n"
-"[b]注意:[/b]要在匯出後存取專案資源,建議使用 [ResourceLoader] 而不是 "
-"[FileAccess],因為有些檔已被轉換為特定於引擎的格式,並且它們的原始原始檔案可能"
-"並不存在於匯出的 PCK 包中。\n"
-"[b]注意:[/b]只有當程序“正常”退出時(例如通過按一下視窗管理器的關閉按鈕或按 "
-"[b]Alt + F4[/b]),檔才會自動關閉。如果在專案運作時按 [b]F8[/b] 停止專案執行,"
-"則不會關閉檔,因為遊戲程序將被殺死。可以通過定期呼叫 [method flush] 來解決這個"
-"問題。"
-
-msgid ""
"Closes the currently opened file and prevents subsequent read/write "
"operations. Use [method flush] to persist the data to disk without closing "
"the file.\n"
@@ -43934,42 +41268,6 @@ msgstr ""
msgid "Returns next [param length] bytes of the file as a [PackedByteArray]."
msgstr "將檔中接下來的 [param length] 個位元組作為 [PackedByteArray] 返回。"
-msgid ""
-"Returns the next value of the file in CSV (Comma-Separated Values) format. "
-"You can pass a different delimiter [param delim] to use other than the "
-"default [code]\",\"[/code] (comma). This delimiter must be one-character "
-"long, and cannot be a double quotation mark.\n"
-"Text is interpreted as being UTF-8 encoded. Text values must be enclosed in "
-"double quotes if they include the delimiter character. Double quotes within a "
-"text value can be escaped by doubling their occurrence.\n"
-"For example, the following CSV lines are valid and will be properly parsed as "
-"two strings each:\n"
-"[codeblock]\n"
-"Alice,\"Hello, Bob!\"\n"
-"Bob,Alice! What a surprise!\n"
-"Alice,\"I thought you'd reply with \"\"Hello, world\"\".\"\n"
-"[/codeblock]\n"
-"Note how the second line can omit the enclosing quotes as it does not include "
-"the delimiter. However it [i]could[/i] very well use quotes, it was only "
-"written without for demonstration purposes. The third line must use "
-"[code]\"\"[/code] for each quotation mark that needs to be interpreted as "
-"such instead of the end of a text value."
-msgstr ""
-"以 CSV(逗號分隔值)格式返回呼函式的下一個值。可以傳遞不同的分隔符號 [param "
-"delim],以使用預設 [code]\",\"[/code](逗號)以外的其他分隔符號。這個分隔符號"
-"必須為一個字元長,且不能是雙引號。\n"
-"文字被解析為 UTF-8 編碼。如果文字值包含分隔符號,則它們必須用雙引號引起來。文"
-"字值中的雙引號可以通過將它們的出現次數加倍來轉義。\n"
-"例如,以下 CSV 行是有效的,每行將被正確解析為兩個字串:\n"
-"[codeblock]\n"
-"Alice,\"Hello, Bob!\"\n"
-"Bob,Alice! What a surprise!\n"
-"Alice,\"I thought you'd reply with \"\"Hello, world\"\".\"\n"
-"[/codeblock]\n"
-"請注意第二行如何省略封閉的引號,因為它不包含分隔符號。然而它[i]可以[/i]很好地"
-"使用引號,它只是為了演示目的而沒有編寫。第三行必須為每個需要被解析為引號而不是"
-"文字值的末尾而使用 [code]\"\"[/code]。"
-
msgid "Returns the next 64 bits from the file as a floating-point number."
msgstr "將檔中接下來的 64 位作為浮點數返回。"
@@ -43994,13 +41292,6 @@ msgid "Returns the size of the file in bytes."
msgstr "返回該檔的大小,單位為位元組。"
msgid ""
-"Returns the next line of the file as a [String].\n"
-"Text is interpreted as being UTF-8 encoded."
-msgstr ""
-"將檔中的下一行作為 [String] 字串返回。\n"
-"將按照 UTF-8 編碼解析文字。"
-
-msgid ""
"Returns an MD5 String representing the file at the given path or an empty "
"[String] on failure."
msgstr "返回一個給定路徑檔的 MD5 字串,如果失敗則返回一個空的 [String]。"
@@ -44040,11 +41331,6 @@ msgid "Returns the next bits from the file as a floating-point number."
msgstr "將檔中接下來的若干位以浮點數形式返回。"
msgid ""
-"Returns a SHA-256 [String] representing the file at the given path or an "
-"empty [String] on failure."
-msgstr "返回一個給定路徑的檔的 SHA-256 字串,如果失敗則返回一個空的 [String]。"
-
-msgid ""
"Returns file UNIX permissions.\n"
"[b]Note:[/b] This method is implemented on iOS, Linux/BSD, and macOS."
msgstr ""
@@ -44363,23 +41649,10 @@ msgid ""
msgstr "打開檔進行讀取操作。游標位於檔案的開頭。"
msgid ""
-"Opens the file for write operations. The file is created if it does not "
-"exist, and truncated if it does."
-msgstr "打開檔進行寫操作。如果檔不存在,則建立該檔,如果存在則截斷。"
-
-msgid ""
"Opens the file for read and write operations. Does not truncate the file. The "
"cursor is positioned at the beginning of the file."
msgstr "打開檔用於讀寫操作。不截斷檔案。游標位於檔案的開頭。"
-msgid ""
-"Opens the file for read and write operations. The file is created if it does "
-"not exist, and truncated if it does. The cursor is positioned at the "
-"beginning of the file."
-msgstr ""
-"打開檔進行讀寫操作。如果檔不存在,則建立該檔,如果存在則截斷。游標位於檔案的開"
-"頭。"
-
msgid "Uses the [url=https://fastlz.org/]FastLZ[/url] compression method."
msgstr "使用 [url=https://fastlz.org/]FastLZ[/url] 壓縮方法。"
@@ -45511,15 +42784,6 @@ msgstr ""
msgid "Removes all font cache entries."
msgstr "移除所有字形快取條目。"
-msgid ""
-"Removes all rendered glyphs information from the cache entry.\n"
-"[b]Note:[/b] This function will not remove textures associated with the "
-"glyphs, use [method remove_texture] to remove them manually."
-msgstr ""
-"從字形快取條目中,移除所有算繪的字形資訊。\n"
-"[b]注意:[/b]該函式不會移除與字形相關的紋理,請使用 [method remove_texture] 手"
-"動移除它們。"
-
msgid "Removes all kerning overrides."
msgstr "移除所有字距調整覆蓋。"
@@ -45773,11 +43037,6 @@ msgid "Sets array containing glyph packing data."
msgstr "設定包含字形打包資料的陣列。"
msgid ""
-"Sets 2D transform, applied to the font outlines, can be used for slanting, "
-"flipping and rotating glyphs."
-msgstr "設定套用於字形輪廓的 2D 變換,可用於傾斜、翻轉和旋轉字形。"
-
-msgid ""
"Sets variation coordinates for the specified font cache entry. See [method "
"Font.get_supported_variation_list] for more info."
msgstr ""
@@ -47055,31 +44314,6 @@ msgstr ""
"質。"
msgid ""
-"The transparency applied to the whole geometry (as a multiplier of the "
-"materials' existing transparency). [code]0.0[/code] is fully opaque, while "
-"[code]1.0[/code] is fully transparent. Values greater than [code]0.0[/code] "
-"(exclusive) will force the geometry's materials to go through the transparent "
-"pipeline, which is slower to render and can exhibit rendering issues due to "
-"incorrect transparency sorting. However, unlike using a transparent material, "
-"setting [member transparency] to a value greater than [code]0.0[/code] "
-"(exclusive) will [i]not[/i] disable shadow rendering.\n"
-"In spatial shaders, [code]1.0 - transparency[/code] is set as the default "
-"value of the [code]ALPHA[/code] built-in.\n"
-"[b]Note:[/b] [member transparency] is clamped between [code]0.0[/code] and "
-"[code]1.0[/code], so this property cannot be used to make transparent "
-"materials more opaque than they originally are."
-msgstr ""
-"套用於整個幾何體的透明度(作為材質現有透明度的乘數)。[code]0.0[/code] 是完全"
-"不透明的,而 [code]1.0[/code] 是完全透明的。大於 [code]0.0[/code](不含)的值"
-"將強制幾何體的材質通過透明管道,這會導致算繪速度變慢,並且可能會因不正確的透明"
-"度排序而出現算繪問題。但是,與使用透明材質不同的是,將 [member transparency] "
-"設定為大於 [code]0.0[/code](不含)的值並[i]不會[/i]禁用陰影算繪。\n"
-"在空間著色器中,[code]1.0 - transparency[/code] 被設定為內建 [code]ALPHA[/"
-"code] 的預設值。\n"
-"[b]注意:[/b][member transparency] 被鉗制在 [code]0.0[/code] 和 [code]1.0[/"
-"code] 之間,所以這個屬性不能被用來使透明材質變得比原來更加不透明。"
-
-msgid ""
"Starting distance from which the GeometryInstance3D will be visible, taking "
"[member visibility_range_begin_margin] into account as well. The default "
"value of 0 is used to disable the range check."
@@ -47172,19 +44406,6 @@ msgstr ""
"換句話說,實際的網格將不可見,只有網格投影可見。"
msgid ""
-"Disabled global illumination mode. Use for dynamic objects that do not "
-"contribute to global illumination (such as characters). When using [VoxelGI] "
-"and SDFGI, the geometry will [i]receive[/i] indirect lighting and reflections "
-"but the geometry will not be considered in GI baking. When using "
-"[LightmapGI], the object will receive indirect lighting using lightmap probes "
-"instead of using the baked lightmap texture."
-msgstr ""
-"禁用全域照明模式。用於對全域照明沒有貢獻的動態物件(例如角色)。使用 "
-"[VoxelGI] 和 SDFGI 時,幾何體將[i]接收[/i]間接照明和反射,但在 GI 烘焙中不會考"
-"慮幾何體。使用 [LightmapGI] 時,物件將使用光照貼圖探查接收間接光照,而不是使用"
-"烘焙的光照貼圖紋理。"
-
-msgid ""
"Baked global illumination mode. Use for static objects that contribute to "
"global illumination (such as level geometry). This GI mode is effective when "
"using [VoxelGI], SDFGI and [LightmapGI]."
@@ -47192,16 +44413,6 @@ msgstr ""
"烘焙全域照明模式。用於有助於全域照明的靜態物件(例如關卡幾何體)。該 GI 模式在"
"使用 [VoxelGI]、SDFGI 和 [LightmapGI] 時有效。"
-msgid ""
-"Dynamic global illumination mode. Use for dynamic objects that contribute to "
-"global illumination. This GI mode is only effective when using [VoxelGI], but "
-"it has a higher performance impact than [constant GI_MODE_STATIC]. When using "
-"other GI methods, this will act the same as [constant GI_MODE_DISABLED]."
-msgstr ""
-"動態全域照明模式。用於有助於全域照明的動態物件。這種 GI 模式只有在使用 "
-"[VoxelGI] 時才有效,但它對性能的影響,比 [constant GI_MODE_STATIC] 更高。當使"
-"用其他 GI 方法時,它的作用與 [constant GI_MODE_DISABLED] 相同。"
-
msgid "The standard texel density for lightmapping with [LightmapGI]."
msgstr "使用 [LightmapGI] 進行光照貼圖的標準紋素密度。"
@@ -47244,29 +44455,6 @@ msgstr ""
"息,請參閱 [member visibility_range_begin] 和 [member Node3D."
"visibility_parent]。"
-msgid ""
-"Will fade-out itself when reaching the limits of its own visibility range. "
-"This is slower than [constant VISIBILITY_RANGE_FADE_DISABLED], but it can "
-"provide smoother transitions. The fading range is determined by [member "
-"visibility_range_begin_margin] and [member visibility_range_end_margin]."
-msgstr ""
-"當達到自身可見範圍的極限時,會自行淡出。這比 [constant "
-"VISIBILITY_RANGE_FADE_DISABLED] 慢,但它可以提供更平滑的過渡。淡出範圍由 "
-"[member visibility_range_begin_margin] 和 [member "
-"visibility_range_end_margin] 決定。"
-
-msgid ""
-"Will fade-in its visibility dependencies (see [member Node3D."
-"visibility_parent]) when reaching the limits of its own visibility range. "
-"This is slower than [constant VISIBILITY_RANGE_FADE_DISABLED], but it can "
-"provide smoother transitions. The fading range is determined by [member "
-"visibility_range_begin_margin] and [member visibility_range_end_margin]."
-msgstr ""
-"當達到其自身可見性範圍的限制時,將淡入其可見性依賴項(參見 [member Node3D."
-"visibility_parent])。這比 [constant VISIBILITY_RANGE_FADE_DISABLED] 慢,但它"
-"可以提供更平滑的過渡。淡出範圍由 [member visibility_range_begin_margin] 和 "
-"[member visibility_range_end_margin] 決定。"
-
msgid "Represents a GLTF camera."
msgstr "代表 GLTF 相機。"
@@ -47949,11 +45137,6 @@ msgid "OMI_physics_body GLTF extension"
msgstr "OMI_physics_body GLTF 擴充"
msgid ""
-"Create a new GLTFPhysicsBody instance from the given Godot "
-"[CollisionObject3D] node."
-msgstr "從給定的 Godot [CollisionObject3D] 節點新建 GLTFPhysicsBody 實例。"
-
-msgid ""
"Converts this GLTFPhysicsBody instance into a Godot [CollisionObject3D] node."
msgstr "將這個 GLTFPhysicsBody 實例轉換為 Godot [CollisionObject3D] 節點。"
@@ -48002,11 +45185,6 @@ msgid ""
msgstr "通過解析給定的 [Dictionary] 新建 GLTFPhysicsShape 實例。"
msgid ""
-"Create a new GLTFPhysicsShape instance from the given Godot "
-"[CollisionShape3D] node."
-msgstr "根據給定的 Godot [CollisionShape3D] 節點新建 GLTFPhysicsShape 實例。"
-
-msgid ""
"Converts this GLTFPhysicsShape instance into a Godot [CollisionShape3D] node."
msgstr "將這個 GLTFPhysicsShape 實例轉換為 Godot [CollisionShape3D] 節點。"
@@ -48536,9 +45714,6 @@ msgstr ""
"設定該節點的屬性以配對給定的 [GPUParticles2D] 節點,該給定節點已分配了一個 "
"[ParticleProcessMaterial]。"
-msgid "Restarts all the existing particles."
-msgstr "重新啟動所有現有的粒子。"
-
msgid ""
"Enables particle interpolation, which makes the particle movement smoother "
"when their [member fixed_fps] is lower than the screen refresh rate."
@@ -48612,17 +45787,6 @@ msgstr ""
"如果當節點進入/退出螢幕時粒子突然出現/消失,則增長矩形。[Rect2] 可以通過程式碼"
"或使用 [b]Particles → Generate Visibility Rect[/b] 編輯器工具生成。"
-msgid ""
-"Emitted when all active particles have finished processing. When [member "
-"one_shot] is disabled, particles will process continuously, so this is never "
-"emitted.\n"
-"[b]Note:[/b] Due to the particles being computed on the GPU there might be a "
-"delay before the signal gets emitted."
-msgstr ""
-"當所有活動粒子完成處理時發出。當 [member one_shot] 停用時,粒子將連續處理,因"
-"此永遠不會發出。\n"
-"[b]注意:[/b] 由於粒子是在 GPU 上計算的,因此在發出訊號之前可能會有延遲。"
-
msgid "Particle starts at the specified position."
msgstr "粒子在指定位置開始。"
@@ -48659,9 +45823,6 @@ msgstr ""
msgid "Returns the [Mesh] that is drawn at index [param pass]."
msgstr "返回在索引 [param pass] 處繪製的 [Mesh] 。"
-msgid "Restarts the particle emission, clearing existing particles."
-msgstr "重新發射粒子,清除現有的粒子。"
-
msgid "Sets the [Mesh] that is drawn at index [param pass]."
msgstr "設定在索引 [param pass] 處繪製的 [Mesh] 。"
@@ -49326,18 +46487,6 @@ msgid "Sets the offset for the gradient color at index [param point]."
msgstr "設定漸變色在索引 [param point] 處的偏移。"
msgid ""
-"Gradient's colors returned as a [PackedColorArray].\n"
-"[b]Note:[/b] This property returns a copy, modifying the return value does "
-"not update the gradient. To update the gradient use [method set_color] method "
-"(for updating colors individually) or assign to this property directly (for "
-"bulk-updating all colors at once)."
-msgstr ""
-"[PackedColorArray] 形式的漸變色顏色。\n"
-"[b]注意:[/b]這個屬性返回的是副本,修改返回值並不會對漸變色進行更新。要更新漸"
-"變色,請使用 [method set_color] 方法(單獨更新顏色)或直接為這個屬性賦值(一次"
-"性更新所有顏色)。"
-
-msgid ""
"The color space used to interpolate between points of the gradient. It does "
"not affect the returned colors, which will always be in sRGB space. See [enum "
"ColorSpace] for available modes.\n"
@@ -49356,18 +46505,6 @@ msgstr ""
"用於在漸變點之間進行插值的演算法。可用的模式見 [enum InterpolationMode]。"
msgid ""
-"Gradient's offsets returned as a [PackedFloat32Array].\n"
-"[b]Note:[/b] This property returns a copy, modifying the return value does "
-"not update the gradient. To update the gradient use [method set_offset] "
-"method (for updating offsets individually) or assign to this property "
-"directly (for bulk-updating all offsets at once)."
-msgstr ""
-"[PackedFloat32Array] 形式的漸變色偏移。\n"
-"[b]注意:[/b]這個屬性返回的是副本,修改返回值並不會對漸變色進行更新。要更新漸"
-"變色,請使用 [method set_offset] 方法(單獨更新偏移)或直接為這個屬性賦值(一"
-"次性更新所有偏移)。"
-
-msgid ""
"Constant interpolation, color changes abruptly at each point and stays "
"uniform between. This might cause visible aliasing when used for a gradient "
"texture in some cases."
@@ -49907,14 +47044,6 @@ msgstr ""
"to_node] [GraphNode] 的 [param to_port] 之間的連接時發出。"
msgid ""
-"Emitted when a popup is requested. Happens on right-clicking in the "
-"GraphEdit. [param position] is the position of the mouse pointer when the "
-"signal is sent."
-msgstr ""
-"當請求快顯視窗時發出。在 GraphEdit 中右鍵點擊時發生。[param position]為該訊號"
-"被發出時滑鼠指標的位置。"
-
-msgid ""
"Emitted when the scroll offset is changed by the user. It will not be emitted "
"when changed in code."
msgstr ""
@@ -49990,15 +47119,6 @@ msgstr ""
"GraphNode 的偏移量,相對於 [GraphEdit] 的滾動偏移量。\n"
"[b]注意:[/b]不能直接使用位置偏移,因為 [GraphEdit] 是一個 [Container]。"
-msgid ""
-"If [code]true[/code], the user can resize the GraphElement.\n"
-"[b]Note:[/b] Dragging the handle will only emit the [signal resize_request] "
-"signal, the GraphElement needs to be resized manually."
-msgstr ""
-"如果為 [code]true[/code],使用者可以調整 GraphNode 的大小。\n"
-"[b]注意:[/b]拖動手柄只會發出 [signal resize_request] 訊號,GraphNode 需要手動"
-"調整大小。"
-
msgid "If [code]true[/code], the user can select the GraphElement."
msgstr "如果為 [code]true[/code],則使用者能夠選中該 GraphNode。"
@@ -50038,6 +47158,9 @@ msgid ""
"The icon used for the resizer, visible when [member resizable] is enabled."
msgstr "用於調整大小的圖示,在 [member resizable] 被啟用時可見。"
+msgid "The color modulation applied to the resizer icon."
+msgstr "套用於調整尺寸大小圖示的顏色調變。"
+
msgid "A container with connection ports, representing a node in a [GraphEdit]."
msgstr "帶有連接埠的容器,代表 [GraphEdit] 中的一個節點。"
@@ -50253,9 +47376,6 @@ msgstr "顯示在 GraphNode 標題列中的文字。"
msgid "Emitted when any GraphNode's slot is updated."
msgstr "當任何圖形節點的插槽更新時發出。"
-msgid "The color modulation applied to the resizer icon."
-msgstr "套用於調整尺寸大小圖示的顏色調變。"
-
msgid "Horizontal offset for the ports."
msgstr "埠的水平偏移量。"
@@ -50565,124 +47685,9 @@ msgid ""
"Provides functionality for computing cryptographic hashes chunk by chunk."
msgstr "提供分段計算加密雜湊的功能。"
-msgid ""
-"The HashingContext class provides an interface for computing cryptographic "
-"hashes over multiple iterations. Useful for computing hashes of big files (so "
-"you don't have to load them all in memory), network streams, and data streams "
-"in general (so you don't have to hold buffers).\n"
-"The [enum HashType] enum shows the supported hashing algorithms.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"const CHUNK_SIZE = 1024\n"
-"\n"
-"func hash_file(path):\n"
-" # Check that file exists.\n"
-" if not FileAccess.file_exists(path):\n"
-" return\n"
-" # Start a SHA-256 context.\n"
-" var ctx = HashingContext.new()\n"
-" ctx.start(HashingContext.HASH_SHA256)\n"
-" # Open the file to hash.\n"
-" var file = FileAccess.open(path, FileAccess.READ)\n"
-" # Update the context after reading each chunk.\n"
-" while not file.eof_reached():\n"
-" ctx.update(file.get_buffer(CHUNK_SIZE))\n"
-" # Get the computed hash.\n"
-" var res = ctx.finish()\n"
-" # Print the result as hex string and array.\n"
-" printt(res.hex_encode(), Array(res))\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public const int ChunkSize = 1024;\n"
-"\n"
-"public void HashFile(string path)\n"
-"{\n"
-" // Check that file exists.\n"
-" if (!FileAccess.FileExists(path))\n"
-" {\n"
-" return;\n"
-" }\n"
-" // Start a SHA-256 context.\n"
-" var ctx = new HashingContext();\n"
-" ctx.Start(HashingContext.HashType.Sha256);\n"
-" // Open the file to hash.\n"
-" using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);\n"
-" // Update the context after reading each chunk.\n"
-" while (!file.EofReached())\n"
-" {\n"
-" ctx.Update(file.GetBuffer(ChunkSize));\n"
-" }\n"
-" // Get the computed hash.\n"
-" byte[] res = ctx.Finish();\n"
-" // Print the result as hex string and array.\n"
-" GD.PrintT(res.HexEncode(), (Variant)res);\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"HashingContext 類提供了一個介面,用於在多次反覆運算中計算加密雜湊值。常用於計"
-"算大檔(不必全部載入到記憶體中)、網路流和一般資料流程(不必持有緩衝區)的雜湊"
-"值。\n"
-"[enum HashType] 列舉顯示了支援的雜湊演算法。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"const CHUNK_SIZE = 1024\n"
-"\n"
-"func hash_file(path):\n"
-" # 檢查檔是否存在。\n"
-" if not FileAccess.file_exists(path):\n"
-" return\n"
-" # 啟動一個 SHA-256 本文。\n"
-" var ctx = HashingContext.new()\n"
-" ctx.start(HashingContext.HASH_SHA256)\n"
-" # 打開檔進行雜湊處理。\n"
-" var file = FileAccess.open(path, FileAccess.READ)\n"
-" # 讀取每個塊後更新本文。\n"
-" while not file.eof_reached():\n"
-" ctx.update(file.get_buffer(CHUNK_SIZE))\n"
-" # 獲取計算的雜湊值。\n"
-" var res = ctx.finish()\n"
-" # 將結果列印為十六進位字串和陣列。\n"
-" printt(res.hex_encode(), Array(res))\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public const int ChunkSize = 1024;\n"
-"\n"
-"public void HashFile(string path)\n"
-"{\n"
-" // 檢查檔是否存在。\n"
-" if (!FileAccess.FileExists(path))\n"
-" {\n"
-" return;\n"
-" }\n"
-" // 啟動一個 SHA-256 本文。\n"
-" var ctx = new HashingContext();\n"
-" ctx.Start(HashingContext.HashType.Sha256);\n"
-" // 打開檔進行雜湊處理。\n"
-" using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);\n"
-" // 讀取每個塊後更新本文。\n"
-" while (!file.EofReached())\n"
-" {\n"
-" ctx.Update(file.GetBuffer(ChunkSize));\n"
-" }\n"
-" // 獲取計算的雜湊值。\n"
-" byte[] res = ctx.Finish();\n"
-" // 將結果列印為十六進位字串和陣列。\n"
-" GD.PrintT(res.HexEncode(), (Variant)res);\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
msgid "Closes the current context, and return the computed hash."
msgstr "關閉目前本文,並返回計算出的雜湊值。"
-msgid ""
-"Starts a new hash computation of the given [param type] (e.g. [constant "
-"HASH_SHA256] to start computation of a SHA-256)."
-msgstr ""
-"開始對給定型別 [param type] 的雜湊計算(例如 [constant HASH_SHA256] 會開始計"
-"算 SHA-256)。"
-
msgid "Updates the computation with the given [param chunk] of data."
msgstr "使用給定的資料塊 [param chunk] 更新計算。"
@@ -50710,21 +47715,6 @@ msgid "A 3D height map shape used for physics collision."
msgstr "3D 高度圖形狀,用於物理碰撞。"
msgid ""
-"A 3D heightmap shape, intended for use in physics. Usually used to provide a "
-"shape for a [CollisionShape3D]. This is useful for terrain, but it is limited "
-"as overhangs (such as caves) cannot be stored. Holes in a [HeightMapShape3D] "
-"are created by assigning very low values to points in the desired area.\n"
-"[b]Performance:[/b] [HeightMapShape3D] is faster to check collisions against "
-"than [ConcavePolygonShape3D], but it is significantly slower than primitive "
-"shapes like [BoxShape3D]."
-msgstr ""
-"3D 高度圖形狀,旨在用於物理。常用於為 [CollisionShape3D] 提供形狀。可用於地"
-"形,但是有無法儲存懸垂部分(如洞窟)的限制。[HeightMapShape3D] 中建立洞的方法"
-"是為所需區域分配極低的值。\n"
-"[b]性能:[/b]對 [HeightMapShape3D] 的碰撞偵測比 [ConcavePolygonShape3D] 快,但"
-"與 [BoxShape3D] 等圖元形狀相比顯著要慢。"
-
-msgid ""
"Number of vertices in the depth of the height map. Changing this will resize "
"the [member map_data]."
msgstr "高度圖深度中的頂點數。更改該項將調整 [member map_data] 的大小。"
@@ -51205,72 +48195,6 @@ msgid "Reads one chunk from the response."
msgstr "從回應中讀取一塊資料。"
msgid ""
-"Sends a request to the connected host.\n"
-"The URL parameter is usually just the part after the host, so for "
-"[code]https://somehost.com/index.php[/code], it is [code]/index.php[/code]. "
-"When sending requests to an HTTP proxy server, it should be an absolute URL. "
-"For [constant HTTPClient.METHOD_OPTIONS] requests, [code]*[/code] is also "
-"allowed. For [constant HTTPClient.METHOD_CONNECT] requests, it should be the "
-"authority component ([code]host:port[/code]).\n"
-"Headers are HTTP request headers. For available HTTP methods, see [enum "
-"Method].\n"
-"To create a POST request with query strings to push to the server, do:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var fields = {\"username\" : \"user\", \"password\" : \"pass\"}\n"
-"var query_string = http_client.query_string_from_dict(fields)\n"
-"var headers = [\"Content-Type: application/x-www-form-urlencoded\", \"Content-"
-"Length: \" + str(query_string.length())]\n"
-"var result = http_client.request(http_client.METHOD_POST, \"/index.php\", "
-"headers, query_string)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var fields = new Godot.Collections.Dictionary { { \"username\", \"user\" }, "
-"{ \"password\", \"pass\" } };\n"
-"string queryString = new HTTPClient().QueryStringFromDict(fields);\n"
-"string[] headers = { \"Content-Type: application/x-www-form-urlencoded\", $"
-"\"Content-Length: {queryString.Length}\" };\n"
-"var result = new HTTPClient().Request(HTTPClient.Method.Post, \"index.php\", "
-"headers, queryString);\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Note:[/b] The [param body] parameter is ignored if [param method] is "
-"[constant HTTPClient.METHOD_GET]. This is because GET methods can't contain "
-"request data. As a workaround, you can pass request data as a query string in "
-"the URL. See [method String.uri_encode] for an example."
-msgstr ""
-"向連接的伺服器發送請求。\n"
-"URL 參數通常只是主機名稱後面的部分,所以對於 [code]https://somehost.com/index."
-"php[/code] 來說就是 [code]/index.php[/code]。當向 HTTP 代理伺服器發送請求時,"
-"它應該是一個絕對 URL。對於 [constant HTTPClient.METHOD_OPTIONS] 請求,"
-"[code]*[/code] 也是允許的。對於 [constant HTTPClient.METHOD_CONNECT] 請求,它"
-"應該是許可權組件 ([code]host:port[/code])。\n"
-"Headers 參數是 HTTP 請求的報頭。有關可用的 HTTP 方法,請參閱 [enum Method]。\n"
-"要建立帶有查詢字串的 POST 請求以推送到伺服器,請執行以下操作:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var fields = {\"username\" : \"user\", \"password\" : \"pass\"}\n"
-"var query_string = http_client.query_string_from_dict(fields)\n"
-"var headers = [\"Content-Type: application/x-www-form-urlencoded\", \"Content-"
-"Length: \" + str(query_string.length())]\n"
-"var result = http_client.request(http_client.METHOD_POST, \"/index.php\", "
-"headers, query_string)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var fields = new Godot.Collections.Dictionary { { \"username\", \"user\" }, "
-"{ \"password\", \"pass\" } };\n"
-"string queryString = new HTTPClient().QueryStringFromDict(fields);\n"
-"string[] headers = { \"Content-Type: application/x-www-form-urlencoded\", $"
-"\"Content-Length: {queryString.Length}\" };\n"
-"var result = new HTTPClient().Request(HTTPClient.Method.Post, \"index.php\", "
-"headers, queryString);\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]如果 [param method] 是 [constant HTTPClient.METHOD_GET],則忽略 "
-"[param body] 參數。這是因為 GET 方法不能包含請求資料。解決方法是,可以將請求資"
-"料作為 URL 中的查詢字串傳遞。有關範例,請參見 [method String.uri_encode]。"
-
-msgid ""
"Sends a raw request to the connected host.\n"
"The URL parameter is usually just the part after the host, so for "
"[code]https://somehost.com/index.php[/code], it is [code]/index.php[/code]. "
@@ -51924,334 +48848,6 @@ msgstr ""
msgid "A node with the ability to send HTTP(S) requests."
msgstr "具有發送 HTTP(S) 請求能力的節點。"
-msgid ""
-"A node with the ability to send HTTP requests. Uses [HTTPClient] internally.\n"
-"Can be used to make HTTP requests, i.e. download or upload files or web "
-"content via HTTP.\n"
-"[b]Warning:[/b] See the notes and warnings on [HTTPClient] for limitations, "
-"especially regarding TLS security.\n"
-"[b]Note:[/b] When exporting to Android, make sure to enable the "
-"[code]INTERNET[/code] permission in the Android export preset before "
-"exporting the project or using one-click deploy. Otherwise, network "
-"communication of any kind will be blocked by Android.\n"
-"[b]Example of contacting a REST API and printing one of its returned fields:[/"
-"b]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" # Create an HTTP request node and connect its completion signal.\n"
-" var http_request = HTTPRequest.new()\n"
-" add_child(http_request)\n"
-" http_request.request_completed.connect(self._http_request_completed)\n"
-"\n"
-" # Perform a GET request. The URL below returns JSON as of writing.\n"
-" var error = http_request.request(\"https://httpbin.org/get\")\n"
-" if error != OK:\n"
-" push_error(\"An error occurred in the HTTP request.\")\n"
-"\n"
-" # Perform a POST request. The URL below returns JSON as of writing.\n"
-" # Note: Don't make simultaneous requests using a single HTTPRequest "
-"node.\n"
-" # The snippet below is provided for reference only.\n"
-" var body = JSON.new().stringify({\"name\": \"Godette\"})\n"
-" error = http_request.request(\"https://httpbin.org/post\", [], HTTPClient."
-"METHOD_POST, body)\n"
-" if error != OK:\n"
-" push_error(\"An error occurred in the HTTP request.\")\n"
-"\n"
-"# Called when the HTTP request is completed.\n"
-"func _http_request_completed(result, response_code, headers, body):\n"
-" var json = JSON.new()\n"
-" json.parse(body.get_string_from_utf8())\n"
-" var response = json.get_data()\n"
-"\n"
-" # Will print the user agent string used by the HTTPRequest node (as "
-"recognized by httpbin.org).\n"
-" print(response.headers[\"User-Agent\"])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" // Create an HTTP request node and connect its completion signal.\n"
-" var httpRequest = new HTTPRequest();\n"
-" AddChild(httpRequest);\n"
-" httpRequest.RequestCompleted += HttpRequestCompleted;\n"
-"\n"
-" // Perform a GET request. The URL below returns JSON as of writing.\n"
-" Error error = httpRequest.Request(\"https://httpbin.org/get\");\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"An error occurred in the HTTP request.\");\n"
-" }\n"
-"\n"
-" // Perform a POST request. The URL below returns JSON as of writing.\n"
-" // Note: Don't make simultaneous requests using a single HTTPRequest "
-"node.\n"
-" // The snippet below is provided for reference only.\n"
-" string body = new Json().Stringify(new Godot.Collections.Dictionary\n"
-" {\n"
-" { \"name\", \"Godette\" }\n"
-" });\n"
-" error = httpRequest.Request(\"https://httpbin.org/post\", null, "
-"HTTPClient.Method.Post, body);\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"An error occurred in the HTTP request.\");\n"
-" }\n"
-"}\n"
-"\n"
-"// Called when the HTTP request is completed.\n"
-"private void HttpRequestCompleted(long result, long responseCode, string[] "
-"headers, byte[] body)\n"
-"{\n"
-" var json = new Json();\n"
-" json.Parse(body.GetStringFromUtf8());\n"
-" var response = json.GetData().AsGodotDictionary();\n"
-"\n"
-" // Will print the user agent string used by the HTTPRequest node (as "
-"recognized by httpbin.org).\n"
-" GD.Print((response[\"headers\"].AsGodotDictionary())[\"User-Agent\"]);\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Example of loading and displaying an image using HTTPRequest:[/b]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" # Create an HTTP request node and connect its completion signal.\n"
-" var http_request = HTTPRequest.new()\n"
-" add_child(http_request)\n"
-" http_request.request_completed.connect(self._http_request_completed)\n"
-"\n"
-" # Perform the HTTP request. The URL below returns a PNG image as of "
-"writing.\n"
-" var error = http_request.request(\"https://via.placeholder.com/512\")\n"
-" if error != OK:\n"
-" push_error(\"An error occurred in the HTTP request.\")\n"
-"\n"
-"# Called when the HTTP request is completed.\n"
-"func _http_request_completed(result, response_code, headers, body):\n"
-" if result != HTTPRequest.RESULT_SUCCESS:\n"
-" push_error(\"Image couldn't be downloaded. Try a different image.\")\n"
-"\n"
-" var image = Image.new()\n"
-" var error = image.load_png_from_buffer(body)\n"
-" if error != OK:\n"
-" push_error(\"Couldn't load the image.\")\n"
-"\n"
-" var texture = ImageTexture.create_from_image(image)\n"
-"\n"
-" # Display the image in a TextureRect node.\n"
-" var texture_rect = TextureRect.new()\n"
-" add_child(texture_rect)\n"
-" texture_rect.texture = texture\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" // Create an HTTP request node and connect its completion signal.\n"
-" var httpRequest = new HTTPRequest();\n"
-" AddChild(httpRequest);\n"
-" httpRequest.RequestCompleted += HttpRequestCompleted;\n"
-"\n"
-" // Perform the HTTP request. The URL below returns a PNG image as of "
-"writing.\n"
-" Error error = httpRequest.Request(\"https://via.placeholder.com/512\");\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"An error occurred in the HTTP request.\");\n"
-" }\n"
-"}\n"
-"\n"
-"// Called when the HTTP request is completed.\n"
-"private void HttpRequestCompleted(long result, long responseCode, string[] "
-"headers, byte[] body)\n"
-"{\n"
-" if (result != (long)HTTPRequest.Result.Success)\n"
-" {\n"
-" GD.PushError(\"Image couldn't be downloaded. Try a different image."
-"\");\n"
-" }\n"
-" var image = new Image();\n"
-" Error error = image.LoadPngFromBuffer(body);\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"Couldn't load the image.\");\n"
-" }\n"
-"\n"
-" var texture = ImageTexture.CreateFromImage(image);\n"
-"\n"
-" // Display the image in a TextureRect node.\n"
-" var textureRect = new TextureRect();\n"
-" AddChild(textureRect);\n"
-" textureRect.Texture = texture;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Gzipped response bodies[/b]: HTTPRequest will automatically handle "
-"decompression of response bodies. A [code]Accept-Encoding[/code] header will "
-"be automatically added to each of your requests, unless one is already "
-"specified. Any response with a [code]Content-Encoding: gzip[/code] header "
-"will automatically be decompressed and delivered to you as uncompressed bytes."
-msgstr ""
-"一種具有發送 HTTP 請求能力的節點。內部使用 [HTTPClient]。\n"
-"可用於發出 HTTP 請求,即通過 HTTP 下載或上傳檔或網路內容。\n"
-"[b]警告:[/b]請參閱 [HTTPClient] 中的注釋和警告以瞭解限制,尤其是有關 TLS 安全"
-"性的限制。\n"
-"[b]注意:[/b]匯出到 Android 時,在匯出專案或使用一鍵部署前,請確保在 Android "
-"匯出預設中啟用 [code]INTERNET[/code] 許可權。否則,任何型別的網路通信都將被 "
-"Android 阻止。\n"
-"[b]聯繫 REST API 並列印其返回欄位之一的範例:[/b]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" # 建立一個 HTTP 請求節點並連接其完成訊號。\n"
-" var http_request = HTTPRequest.new()\n"
-" add_child(http_request)\n"
-" http_request.request_completed.connect(self._http_request_completed)\n"
-"\n"
-" # 執行一個 GET 請求。以下 URL 會將寫入作為 JSON 返回。\n"
-" var error = http_request.request(\"https://httpbin.org/get\")\n"
-" if error != OK:\n"
-" push_error(\"在HTTP請求中發生了一個錯誤。\")\n"
-"\n"
-" # 執行一個 POST 請求。 以下 URL 會將寫入作為 JSON 返回。\n"
-" # 注意:不要使用單個 HTTPRequest 節點同時發出請求。\n"
-" # 下面的程式碼片段僅供參考。\n"
-" var body = JSON.new().stringify({\"name\": \"Godette\"})\n"
-" error = http_request.request(\"https://httpbin.org/post\", [], HTTPClient."
-"METHOD_POST, body)\n"
-" if error != OK:\n"
-" push_error(\"在HTTP請求中發生了一個錯誤。\")\n"
-"\n"
-"# 當 HTTP 請求完成時呼叫。\n"
-"func _http_request_completed(result, response_code, headers, body):\n"
-" var json = JSON.new()\n"
-" json.parse(body.get_string_from_utf8())\n"
-" var response = json.get_data()\n"
-"\n"
-" # 將列印 HTTPRequest 節點使用的使用者代理字串(由 httpbin.org 識別)。\n"
-" print(response.headers[\"User-Agent\"])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" // 建立一個 HTTP 請求節點並連接其完成訊號。\n"
-" var httpRequest = new HTTPRequest();\n"
-" AddChild(httpRequest);\n"
-" httpRequest.RequestCompleted += HttpRequestCompleted;\n"
-"\n"
-" // 執行一個 GET 請求。以下 URL 會將寫入作為 JSON 返回。\n"
-" Error error = httpRequest.Request(\"https://httpbin.org/get\");\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"在HTTP請求中發生了一個錯誤。\");\n"
-" }\n"
-"\n"
-" // 執行一個 POST 請求。 以下 URL 會將寫入作為 JSON 返回。\n"
-" // 注意:不要使用單個 HTTPRequest 節點同時發出請求。\n"
-" // 下面的程式碼片段僅供參考。\n"
-" string body = new Json().Stringify(new Godot.Collections.Dictionary\n"
-" {\n"
-" { \"name\", \"Godette\" }\n"
-" });\n"
-" error = httpRequest.Request(\"https://httpbin.org/post\", null, "
-"HTTPClient.Method.Post, body);\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"在HTTP請求中發生了一個錯誤。\");\n"
-" }\n"
-"}\n"
-"\n"
-"// 當 HTTP 請求完成時呼叫。\n"
-"private void HttpRequestCompleted(long result, long responseCode, string[] "
-"headers, byte[] body)\n"
-"{\n"
-" var json = new Json();\n"
-" json.Parse(body.GetStringFromUtf8());\n"
-" var response = json.GetData().AsGodotDictionary();\n"
-"\n"
-" // 將列印 HTTPRequest 節點使用的使用者代理字串(由 httpbin.org 識別)。\n"
-" GD.Print((response[\"headers\"].AsGodotDictionary())[\"User-Agent\"]);\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]使用 HTTPRequest 載入和顯示圖像的範例:[/b]\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"func _ready():\n"
-" # 建立一個 HTTP 請求節點並連接其完成訊號。\n"
-" var http_request = HTTPRequest.new()\n"
-" add_child(http_request)\n"
-" http_request.request_completed.connect(self._http_request_completed)\n"
-"\n"
-" # 執行一個 HTTP 請求。下面的 URL 將寫入作為一個 PNG 圖像返回。\n"
-" var error = http_request.request(\"https://via.placeholder.com/512\")\n"
-" if error != OK:\n"
-" push_error(\"在HTTP請求中發生了一個錯誤。\")\n"
-"\n"
-"# 當 HTTP 請求完成時呼叫。\n"
-"func _http_request_completed(result, response_code, headers, body):\n"
-" if result != HTTPRequest.RESULT_SUCCESS:\n"
-" push_error(\"無法下載圖像。嘗試一個不同的圖像。\")\n"
-"\n"
-" var image = Image.new()\n"
-" var error = image.load_png_from_buffer(body)\n"
-" if error != OK:\n"
-" push_error(\"無法載入圖像。\")\n"
-"\n"
-" var texture = ImageTexture.create_from_image(image)\n"
-"\n"
-" # 在 TextureRect 節點中顯示圖像。\n"
-" var texture_rect = TextureRect.new()\n"
-" add_child(texture_rect)\n"
-" texture_rect.texture = texture\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"public override void _Ready()\n"
-"{\n"
-" // 建立一個 HTTP 請求節點並連接其完成訊號。\n"
-" var httpRequest = new HTTPRequest();\n"
-" AddChild(httpRequest);\n"
-" httpRequest.RequestCompleted += HttpRequestCompleted;\n"
-"\n"
-" // 執行一個 HTTP 請求。下面的 URL 將寫入作為一個 PNG 圖像返回。\n"
-" Error error = httpRequest.Request(\"https://via.placeholder.com/512\");\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"在HTTP請求中發生了一個錯誤。\");\n"
-" }\n"
-"}\n"
-"\n"
-"// 當 HTTP 請求完成時呼叫。\n"
-"private void HttpRequestCompleted(long result, long responseCode, string[] "
-"headers, byte[] body)\n"
-"{\n"
-" if (result != (long)HTTPRequest.Result.Success)\n"
-" {\n"
-" GD.PushError(\"無法下載圖像。嘗試一個不同的圖像。\");\n"
-" }\n"
-" var image = new Image();\n"
-" Error error = image.LoadPngFromBuffer(body);\n"
-" if (error != Error.Ok)\n"
-" {\n"
-" GD.PushError(\"無法載入圖像。\");\n"
-" }\n"
-"\n"
-" var texture = ImageTexture.CreateFromImage(image);\n"
-"\n"
-" // 在 TextureRect 節點中顯示圖像。\n"
-" var textureRect = new TextureRect();\n"
-" AddChild(textureRect);\n"
-" textureRect.Texture = texture;\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Gzipped 回應體[/b]:HTTPRequest 將自動處理回應體的解壓縮。除非已經指定了一"
-"個,否則 [code]Accept-Encoding[/code] 報頭將自動新增到你的每個請求中。任何帶"
-"有 [code]Content-Encoding: gzip[/code] 報頭的回應都將自動解壓,並作為未壓縮的"
-"位元組傳送給你。"
-
msgid "Making HTTP requests"
msgstr "發出 HTTP 請求"
@@ -52715,17 +49311,6 @@ msgstr ""
"於啟用狀態,但可以使用 [code]module_svg_enabled=no[/code] SCons 選項在建置時停"
"用它。"
-msgid ""
-"Loads an image from the string contents of a SVG file ([b].svg[/b]).\n"
-"[b]Note:[/b] This method is only available in engine builds with the SVG "
-"module enabled. By default, the SVG module is enabled, but it can be disabled "
-"at build-time using the [code]module_svg_enabled=no[/code] SCons option."
-msgstr ""
-"從 SVG 檔案 ([b].svg[/b]) 的字串內容載入映像。\n"
-"[b]注意:[/b]此方法僅在啟用了 SVG 模組的引擎版本中可用。預設情況下,SVG 模組處"
-"於啟用狀態,但可以使用 [code]module_svg_enabled=no[/code] SCons 選項在建置時停"
-"用它。"
-
msgid "Loads an image from the binary contents of a WebP file."
msgstr "從 WebP 檔的二進位內容載入圖像。"
@@ -53858,18 +50443,6 @@ msgid ""
msgstr "返回給定索引(參見 [enum JoyAxis])處的遊戲手柄軸的目前值。"
msgid ""
-"Returns a SDL2-compatible device GUID on platforms that use gamepad "
-"remapping, e.g. [code]030000004c050000c405000000010000[/code]. Returns "
-"[code]\"Default Gamepad\"[/code] otherwise. Godot uses the [url=https://"
-"github.com/gabomdq/SDL_GameControllerDB]SDL2 game controller database[/url] "
-"to determine gamepad names and mappings based on this GUID."
-msgstr ""
-"如果平臺使用遊戲手柄重對應,則返回裝置的 GUID,與 SDL2 相容,例如 "
-"[code]030000004c050000c405000000010000[/code]。否則返回 [code]\"Default "
-"Gamepad\"[/code]。Godot 會根據這個 GUI 使用 [url=https://github.com/gabomdq/"
-"SDL_GameControllerDB]SDL2 遊戲控制器資料庫[/url]來確定遊戲手柄的名稱和對應。"
-
-msgid ""
"Returns a dictionary with extra platform-specific information about the "
"device, e.g. the raw gamepad name from the OS or the Steam Input index.\n"
"On Windows the dictionary contains the following fields:\n"
@@ -54146,26 +50719,6 @@ msgid ""
msgstr "停止使用 [method start_joy_vibration] 啟動的遊戲手柄的振動。"
msgid ""
-"Vibrate the handheld device for the specified duration in milliseconds.\n"
-"[b]Note:[/b] This method is implemented on Android, iOS, and Web. It has no "
-"effect on other platforms.\n"
-"[b]Note:[/b] For Android, [method vibrate_handheld] requires enabling the "
-"[code]VIBRATE[/code] permission in the export preset. Otherwise, [method "
-"vibrate_handheld] will have no effect.\n"
-"[b]Note:[/b] For iOS, specifying the duration is only supported in iOS 13 and "
-"later.\n"
-"[b]Note:[/b] Some web browsers such as Safari and Firefox for Android do not "
-"support [method vibrate_handheld]."
-msgstr ""
-"使手持裝置振動指定的持續時間,單位為毫秒。\n"
-"[b]注意:[/b]該方法在 Android、iOS 和 Web 上實作。它對其他平臺沒有影響。\n"
-"[b]注意:[/b]對於 Android,[method vibrate_handheld] 需要在匯出預設中啟用 "
-"[code]VIBRATE[/code] 許可權。否則,[method vibrate_handheld] 將無效。\n"
-"[b]注意:[/b]對於 iOS,僅 iOS 13 及更高版本支援指定持續時間。\n"
-"[b]注意:[/b]某些網路流覽器,如 Safari 和 Android 版的 Firefox 不支援 [method "
-"vibrate_handheld]。"
-
-msgid ""
"Sets the mouse position to the specified vector, provided in pixels and "
"relative to an origin at the upper left corner of the currently focused "
"Window Manager game window.\n"
@@ -54452,16 +51005,6 @@ msgstr ""
"[InputEventScreenTouch]、[InputEventScreenDrag]、[InputEventMagnifyGesture]、"
"和 [InputEventPanGesture] 型別的事件相關。"
-msgid ""
-"The event's device ID.\n"
-"[b]Note:[/b] This device ID will always be [code]-1[/code] for emulated mouse "
-"input from a touchscreen. This can be used to distinguish emulated mouse "
-"input from physical mouse input."
-msgstr ""
-"該事件的裝置 ID。\n"
-"[b]注意:[/b]對於來自觸控式螢幕的類比滑鼠輸入,該裝置 ID 將總是 [code]-1[/"
-"code]。可用於區分類比滑鼠輸入和物理滑鼠輸入。"
-
msgid "An input event type for actions."
msgstr "動作的輸入事件型別。"
@@ -54666,59 +51209,6 @@ msgstr ""
"鍵。"
msgid ""
-"Represents the localized label printed on the key in the current keyboard "
-"layout, which corresponds to one of the [enum Key] constants or any valid "
-"Unicode character.\n"
-"For keyboard layouts with a single label on the key, it is equivalent to "
-"[member keycode].\n"
-"To get a human-readable representation of the [InputEventKey], use [code]OS."
-"get_keycode_string(event.key_label)[/code] where [code]event[/code] is the "
-"[InputEventKey].\n"
-"[codeblock]\n"
-" +-----+ +-----+\n"
-" | Q | | Q | - \"Q\" - keycode\n"
-" | Й | | ض | - \"Й\" and \"ض\" - key_label\n"
-" +-----+ +-----+\n"
-"[/codeblock]"
-msgstr ""
-"表示目前鍵盤配置中印在鍵上的當地語系化標籤,對應於 [enum Key] 常數之一或任何有"
-"效的 Unicode 字元。\n"
-"對於鍵上只有一個標籤的鍵盤配置,它等同於 [member keycode]。\n"
-"要獲得 [InputEventKey] 的人類可讀表示,請使用 [code]OS."
-"get_keycode_string(event.key_label)[/code],其中 [code]event[/code] 是 "
-"[InputEventKey]。\n"
-"[codeblock]\n"
-" +-----+ +-----+\n"
-" | Q | | Q | - \"Q\" - keycode\n"
-" | Й | | ض | - \"Й\" and \"ض\" - key_label\n"
-" +-----+ +-----+\n"
-"[/codeblock]"
-
-msgid ""
-"Latin label printed on the key in the current keyboard layout, which "
-"corresponds to one of the [enum Key] constants.\n"
-"To get a human-readable representation of the [InputEventKey], use [code]OS."
-"get_keycode_string(event.keycode)[/code] where [code]event[/code] is the "
-"[InputEventKey].\n"
-"[codeblock]\n"
-" +-----+ +-----+\n"
-" | Q | | Q | - \"Q\" - keycode\n"
-" | Й | | ض | - \"Й\" and \"ض\" - key_label\n"
-" +-----+ +-----+\n"
-"[/codeblock]"
-msgstr ""
-"目前鍵盤配置中鍵上列印的拉丁標籤,對應於 [enum Key] 常數之一。\n"
-"要獲得 [InputEventKey] 的人類可讀表示,請使用 [code]OS."
-"get_keycode_string(event.keycode)[/code],其中 [code]event[/code] 是 "
-"[InputEventKey]。\n"
-"[codeblock]\n"
-" +-----+ +-----+\n"
-" | Q | | Q | - \"Q\" - 鍵碼\n"
-" | Й | | ض | - \"Й\" 和 \"ض\" - key_label\n"
-" +-----+ +-----+\n"
-"[/codeblock]"
-
-msgid ""
"If [code]true[/code], the key's state is pressed. If [code]false[/code], the "
"key's state is released."
msgstr ""
@@ -54885,9 +51375,6 @@ msgstr "多次拖動事件中的拖動事件索引。"
msgid "Returns [code]true[/code] when using the eraser end of a stylus pen."
msgstr "正在使用手寫筆的橡皮端時,會返回 [code]true[/code]。"
-msgid "The drag position."
-msgstr "拖拽的位置。"
-
msgid "Represents a screen touch event."
msgstr "代表螢幕觸摸事件。"
@@ -54908,9 +51395,6 @@ msgid ""
"The touch index in the case of a multi-touch event. One index = one finger."
msgstr "在多點觸摸事件中的觸摸指數。一個索引 = 一個手指。"
-msgid "The touch position, in screen (global) coordinates."
-msgstr "觸摸位置,使用螢幕(全域)座標。"
-
msgid ""
"If [code]true[/code], the touch's state is pressed. If [code]false[/code], "
"the touch's state is released."
@@ -61054,13 +57538,6 @@ msgstr ""
"ID。"
msgid ""
-"Returns the sender's peer ID for the RPC currently being executed.\n"
-"[b]Note:[/b] If not inside an RPC this method will return 0."
-msgstr ""
-"返回目前正在執行的 RPC 的發送方的對等體 ID。\n"
-"[b]注意:[/b]如果不在 RPC 內,這個方法將返回 0。"
-
-msgid ""
"Returns the unique peer ID of this MultiplayerAPI's [member multiplayer_peer]."
msgstr "返回這個 MultiplayerAPI 的 [member multiplayer_peer] 唯一對等體 ID。"
@@ -61286,9 +57763,6 @@ msgstr ""
"Android 匯出預設中啟用了 [code]INTERNET[/code] 許可權。否則,任何型別的網路通"
"信都會被安卓阻止。"
-msgid "WebRTC Signaling Demo"
-msgstr "WebRTC 訊號演示"
-
msgid ""
"Immediately close the multiplayer peer returning to the state [constant "
"CONNECTION_DISCONNECTED]. Connected peers will be dropped without emitting "
@@ -62517,9 +58991,6 @@ msgstr ""
msgid "Using NavigationMeshes"
msgstr "使用 NavigationMesh"
-msgid "3D Navmesh Demo"
-msgstr "3D 導覽網格演示"
-
msgid ""
"Adds a polygon using the indices of the vertices you get when calling [method "
"get_vertices]."
@@ -62886,35 +59357,6 @@ msgstr ""
"設定解析得到的源幾何體資料頂點。頂點需要與正確的索引相配對。\n"
"[b]警告:[/b]資料不正確會導致相關協力廠商庫在烘焙過程中當機。"
-msgid ""
-"2D Obstacle used in navigation to constrain avoidance controlled agents "
-"outside or inside an area."
-msgstr ""
-"用於導覽的 2D 障礙物,能夠將啟用了避障處理的代理約束在某個區域之外或之內。"
-
-msgid ""
-"2D Obstacle used in navigation to constrain avoidance controlled agents "
-"outside or inside an area. The obstacle needs a navigation map and outline "
-"vertices defined to work correctly.\n"
-"If the obstacle's vertices are winded in clockwise order, avoidance agents "
-"will be pushed in by the obstacle, otherwise, avoidance agents will be pushed "
-"out. Outlines must not cross or overlap.\n"
-"Obstacles are [b]not[/b] a replacement for a (re)baked navigation mesh. "
-"Obstacles [b]don't[/b] change the resulting path from the pathfinding, "
-"obstacles only affect the navigation avoidance agent movement by altering the "
-"suggested velocity of the avoidance agent.\n"
-"Obstacles using vertices can warp to a new position but should not moved "
-"every frame as each move requires a rebuild of the avoidance map."
-msgstr ""
-"導覽中使用的 2D 障礙物,能夠將由避障控制的代理約束在某個區域之外或之內。障礙物"
-"定義導覽地圖和輪廓頂點後才能正常工作。\n"
-"如果障礙物的頂點使用順時針順序纏繞,則避障代理會被推入障礙物,否則避障代理就會"
-"被推出障礙物。輪廓必須不存在交叉和重疊。\n"
-"障礙物[b]不是[/b](重新)烘焙導覽網格的替代品。障礙物[b]不會[/b]改變尋路的結"
-"果,障礙物只會修改避障代理的推薦速度,從而影響導覽避障代理的移動。\n"
-"使用頂點的障礙物可以傳送至新位置,但不應該每一影格都移動,因為每次移動都需要重"
-"新建構避障地圖。"
-
msgid "Using NavigationObstacles"
msgstr "使用 NavigationObstacle"
@@ -62977,35 +59419,6 @@ msgstr ""
"理向內推,否則就會向外推。輪廓不能交叉或重疊。如果這些頂點直接跳到了新的位置,"
"那麼其他代理可能無法預測這種行為,導致被困在障礙物內。"
-msgid ""
-"3D Obstacle used in navigation to constrain avoidance controlled agents "
-"outside or inside an area."
-msgstr ""
-"用於導覽的 3D 障礙物,能夠將啟用了避障處理的代理約束在某個區域之外或之內。"
-
-msgid ""
-"3D Obstacle used in navigation to constrain avoidance controlled agents "
-"outside or inside an area. The obstacle needs a navigation map and outline "
-"vertices defined to work correctly.\n"
-"If the obstacle's vertices are winded in clockwise order, avoidance agents "
-"will be pushed in by the obstacle, otherwise, avoidance agents will be pushed "
-"out. Outlines must not cross or overlap.\n"
-"Obstacles are [b]not[/b] a replacement for a (re)baked navigation mesh. "
-"Obstacles [b]don't[/b] change the resulting path from the pathfinding, "
-"obstacles only affect the navigation avoidance agent movement by altering the "
-"suggested velocity of the avoidance agent.\n"
-"Obstacles using vertices can warp to a new position but should not moved "
-"every frame as each move requires a rebuild of the avoidance map."
-msgstr ""
-"導覽中使用的 3D 障礙物,能夠將由避障控制的代理約束在某個區域之外或之內。障礙物"
-"定義導覽地圖和輪廓頂點後才能正常工作。\n"
-"如果障礙物的頂點使用順時針順序纏繞,則避障代理會被推入障礙物,否則避障代理就會"
-"被推出障礙物。輪廓必須不存在交叉和重疊。\n"
-"障礙物[b]不是[/b](重新)烘焙導覽網格的替代品。障礙物[b]不會[/b]改變尋路的結"
-"果,障礙物只會修改避障代理的推薦速度,從而影響導覽避障代理的移動。\n"
-"使用頂點的障礙物可以傳送至新位置,但不應該每一影格都移動,因為每次移動都需要重"
-"新建構避障地圖。"
-
msgid "Returns the [RID] of this obstacle on the [NavigationServer3D]."
msgstr "返回這個障礙物在 [NavigationServer3D] 上的 [RID]。"
@@ -63264,9 +59677,6 @@ msgstr ""
"[/csharp]\n"
"[/codeblocks]"
-msgid "2D Navigation Demo"
-msgstr "2D 導覽演示"
-
msgid ""
"Appends a [PackedVector2Array] that contains the vertices of an outline to "
"the internal array that contains all the outlines."
@@ -63474,9 +59884,6 @@ msgstr ""
"覽地圖,因此僅需要此函式來覆寫預設地圖。 “,““,“,“錯誤的”,””,”,”\n"
"doc/classes/NavigationRegion2D.xml\""
-msgid "A bitfield determining all avoidance layers for the avoidance constrain."
-msgstr "位域,確定避障約束的所有避障層。"
-
msgid "Determines if the [NavigationRegion2D] is enabled or disabled."
msgstr "決定該 [NavigationRegion2D] 是啟用還是禁用。"
@@ -64592,36 +60999,6 @@ msgstr ""
"是“孤兒”)。"
msgid ""
-"Called when an [InputEventKey] or [InputEventShortcut] hasn't been consumed "
-"by [method _input] or any GUI [Control] item. It is called before [method "
-"_unhandled_key_input] and [method _unhandled_input]. The input event "
-"propagates up through the node tree until a node consumes it.\n"
-"It is only called if shortcut processing is enabled, which is done "
-"automatically if this method is overridden, and can be toggled with [method "
-"set_process_shortcut_input].\n"
-"To consume the input event and stop it propagating further to other nodes, "
-"[method Viewport.set_input_as_handled] can be called.\n"
-"This method can be used to handle shortcuts. For generic GUI events, use "
-"[method _input] instead. Gameplay events should usually be handled with "
-"either [method _unhandled_input] or [method _unhandled_key_input].\n"
-"[b]Note:[/b] This method is only called if the node is present in the scene "
-"tree (i.e. if it's not orphan)."
-msgstr ""
-"當一個 [InputEventKey] 或 [InputEventShortcut],尚未被 [method _input] 或任何 "
-"GUI [Control] 項使用時呼叫。這是在 [method _unhandled_key_input] 和 [method "
-"_unhandled_input] 之前呼叫的。輸入事件通過節點樹向上傳播,直到一個節點消耗"
-"它。\n"
-"它僅在啟用快捷鍵處理時呼叫,如果此方法被覆蓋,則會自動呼叫,並且可以使用 "
-"[method set_process_shortcut_input] 進行開關。\n"
-"要消耗輸入事件,並阻止它進一步傳播到其他節點,可以呼叫 [method Viewport."
-"set_input_as_handled]。\n"
-"此方法可用於處理快捷鍵。如果是常規的 GUI 事件,請改用 [method _input]。遊戲事"
-"件通常應該使用 [method _unhandled_input] 或 [method _unhandled_key_input] 處"
-"理。\n"
-"[b]注意:[/b]僅當該節點存在於場景樹中(即它不是一個孤兒節點)時,此方法才會被"
-"呼叫。"
-
-msgid ""
"Called when an [InputEvent] hasn't been consumed by [method _input] or any "
"GUI [Control] item. It is called after [method _shortcut_input] and after "
"[method _unhandled_key_input]. The input event propagates up through the node "
@@ -65010,11 +61387,6 @@ msgid "Adds the [param offset] vector to the node's global position."
msgstr "將偏移向量 [param offset] 新增到該節點的全域位置。"
msgid ""
-"Rotates the node so it points towards the [param point], which is expected to "
-"use global coordinates."
-msgstr "旋轉該節點,使其指向 [param point],該點應使用全域座標。"
-
-msgid ""
"Applies a local translation on the node's X axis based on the [method Node."
"_process]'s [param delta]. If [param scaled] is [code]false[/code], "
"normalizes the movement."
@@ -65452,9 +61824,6 @@ msgstr "旋轉量以 [Basis] 的形式編輯。此模式下無法單獨編輯 [m
msgid "A pre-parsed scene tree path."
msgstr "預先解析的場景樹路徑。"
-msgid "2D Role Playing Game Demo"
-msgstr "2D 角色扮演遊戲演示"
-
msgid "Constructs an empty [NodePath]."
msgstr "建構空的 [NodePath]。"
@@ -65910,62 +62279,6 @@ msgstr ""
"[/codeblock]"
msgid ""
-"Adds a user-defined [param signal]. Optional arguments for the signal can be "
-"added as an [Array] of dictionaries, each defining a [code]name[/code] "
-"[String] and a [code]type[/code] [int] (see [enum Variant.Type]). See also "
-"[method has_user_signal].\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"add_user_signal(\"hurt\", [\n"
-" { \"name\": \"damage\", \"type\": TYPE_INT },\n"
-" { \"name\": \"source\", \"type\": TYPE_OBJECT }\n"
-"])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"AddUserSignal(\"Hurt\", new Godot.Collections.Array()\n"
-"{\n"
-" new Godot.Collections.Dictionary()\n"
-" {\n"
-" { \"name\", \"damage\" },\n"
-" { \"type\", (int)Variant.Type.Int }\n"
-" },\n"
-" new Godot.Collections.Dictionary()\n"
-" {\n"
-" { \"name\", \"source\" },\n"
-" { \"type\", (int)Variant.Type.Object }\n"
-" }\n"
-"});\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"新增使用者定義的訊號 [param signal]。訊號的參數是可選的,以字典的 [Array] 形式"
-"新增,字典中定義名稱 [code]name[/code] [String],型別 [code]type[/code] [int]"
-"(見 [enum Variant.Type])。另見 [method has_user_signal]。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"add_user_signal(\"hurt\", [\n"
-" { \"name\": \"damage\", \"type\": TYPE_INT },\n"
-" { \"name\": \"source\", \"type\": TYPE_OBJECT }\n"
-"])\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"AddUserSignal(\"Hurt\", new Godot.Collections.Array()\n"
-"{\n"
-" new Godot.Collections.Dictionary()\n"
-" {\n"
-" { \"name\", \"damage\" },\n"
-" { \"type\", (int)Variant.Type.Int }\n"
-" },\n"
-" new Godot.Collections.Dictionary()\n"
-" {\n"
-" { \"name\", \"source\" },\n"
-" { \"type\", (int)Variant.Type.Object }\n"
-" }\n"
-"});\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Calls the [param method] on the object and returns the result. This method "
"supports a variable number of arguments, so parameters can be passed as a "
"comma separated list.\n"
@@ -66114,44 +62427,6 @@ msgstr ""
"查引用時將返回 [code]false[/code]。"
msgid ""
-"Returns the [Variant] value of the given [param property]. If the [param "
-"property] does not exist, this method returns [code]null[/code].\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var node = Node2D.new()\n"
-"node.rotation = 1.5\n"
-"var a = node.get(\"rotation\") # a is 1.5\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var node = new Node2D();\n"
-"node.Rotation = 1.5f;\n"
-"var a = node.Get(\"rotation\"); // a is 1.5\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Note:[/b] In C#, [param property] must be in snake_case when referring to "
-"built-in Godot properties. Prefer using the names exposed in the "
-"[code]PropertyName[/code] class to avoid allocating a new [StringName] on "
-"each call."
-msgstr ""
-"返回給定 [param property] 的 [Variant] 值。如果 [param property] 不存在,則該"
-"方法返回 [code]null[/code]。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var node = Node2D.new()\n"
-"node.rotation = 1.5\n"
-"var a = node.get(\"rotation\") # a 為 1.5\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var node = new Node2D();\n"
-"node.Rotation = 1.5f;\n"
-"var a = node.Get(\"rotation\"); // a 為 1.5\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]在 C# 中,在引用 Godot 內建屬性時,[param property] 必須是 "
-"snake_case。最好使用 [code]PropertyName[/code] 類中公開的名稱,以避免在每次調"
-"用時分配一個新的 [StringName]。"
-
-msgid ""
"Returns the object's built-in class name, as a [String]. See also [method "
"is_class].\n"
"[b]Note:[/b] This method ignores [code]class_name[/code] declarations. If "
@@ -66371,13 +62646,6 @@ msgstr ""
"新分配一個 [StringName]。"
msgid ""
-"Returns [code]true[/code] if the given user-defined [param signal] name "
-"exists. Only signals added with [method add_user_signal] are included."
-msgstr ""
-"如果存在給定的使用者定義訊號名稱 [param signal],則返回 [code]true[/code]。僅"
-"包含通過 [method add_user_signal] 新增的訊號。"
-
-msgid ""
"Returns [code]true[/code] if the object is blocking its signals from being "
"emitted. See [method set_block_signals]."
msgstr ""
@@ -66553,44 +62821,6 @@ msgstr ""
"找到,但是不應該進行編輯。"
msgid ""
-"Assigns [param value] to the given [param property]. If the property does not "
-"exist or the given [param value]'s type doesn't match, nothing happens.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var node = Node2D.new()\n"
-"node.set(\"global_scale\", Vector2(8, 2.5))\n"
-"print(node.global_scale) # Prints (8, 2.5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var node = new Node2D();\n"
-"node.Set(\"global_scale\", new Vector2(8, 2.5));\n"
-"GD.Print(node.GlobalScale); // Prints Vector2(8, 2.5)\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Note:[/b] In C#, [param property] must be in snake_case when referring to "
-"built-in Godot properties. Prefer using the names exposed in the "
-"[code]PropertyName[/code] class to avoid allocating a new [StringName] on "
-"each call."
-msgstr ""
-"將給定屬性 [param property] 的值分配為 [param value]。如果該屬性不存在,或者給"
-"定 [param value] 的型別不配對,則不會發生任何事情。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var node = Node2D.new()\n"
-"node.set(\"global_scale\", Vector2(8, 2.5))\n"
-"print(node.global_scale) # 輸出 (8, 2.5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var node = new Node2D();\n"
-"node.Set(\"global_scale\", new Vector2(8, 2.5));\n"
-"GD.Print(node.GlobalScale); // 輸出 Vector2(8, 2.5)\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]在 C# 中引用內建 Godot 屬性時 [param property] 必須為 snake_case "
-"蛇形大小寫。請優先使用 [code]PropertyName[/code] 類中暴露的名稱,避免每次呼叫"
-"都重新分配一個 [StringName]。"
-
-msgid ""
"If set to [code]true[/code], the object becomes unable to emit signals. As "
"such, [method emit_signal] and signal connections will not work, until it is "
"set to [code]false[/code]."
@@ -66599,65 +62829,6 @@ msgstr ""
"emit_signal] 和訊號連接將不起作用,直到該屬性被設定為 [code]false[/code]。"
msgid ""
-"Assigns [param value] to the given [param property], at the end of the "
-"current frame. This is equivalent to calling [method set] through [method "
-"call_deferred].\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var node = Node2D.new()\n"
-"add_child(node)\n"
-"\n"
-"node.rotation = 45.0\n"
-"node.set_deferred(\"rotation\", 90.0)\n"
-"print(node.rotation) # Prints 45.0\n"
-"\n"
-"await get_tree().process_frame\n"
-"print(node.rotation) # Prints 90.0\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var node = new Node2D();\n"
-"node.Rotation = 45f;\n"
-"node.SetDeferred(\"rotation\", 90f);\n"
-"GD.Print(node.Rotation); // Prints 45.0\n"
-"\n"
-"await ToSignal(GetTree(), SceneTree.SignalName.ProcessFrame);\n"
-"GD.Print(node.Rotation); // Prints 90.0\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]Note:[/b] In C#, [param property] must be in snake_case when referring to "
-"built-in Godot properties. Prefer using the names exposed in the "
-"[code]PropertyName[/code] class to avoid allocating a new [StringName] on "
-"each call."
-msgstr ""
-"在目前影格的末尾,將給定屬性 [param property] 的值分配為 [param value]。等價於"
-"通過 [method call_deferred] 呼叫 [method set]。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var node = Node2D.new()\n"
-"add_child(node)\n"
-"\n"
-"node.rotation = 45.0\n"
-"node.set_deferred(\"rotation\", 90.0)\n"
-"print(node.rotation) # 輸出 45.0\n"
-"\n"
-"await get_tree().process_frame\n"
-"print(node.rotation) # 輸出 90.0\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var node = new Node2D();\n"
-"node.Rotation = 45f;\n"
-"node.SetDeferred(\"rotation\", 90f);\n"
-"GD.Print(node.Rotation); // 輸出 45.0\n"
-"\n"
-"await ToSignal(GetTree(), SceneTree.SignalName.ProcessFrame);\n"
-"GD.Print(node.Rotation); // 輸出 90.0\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"[b]注意:[/b]在 C# 中引用內建 Godot 屬性時 [param property] 必須為 snake_case "
-"蛇形大小寫。請優先使用 [code]PropertyName[/code] 類中暴露的名稱,避免每次呼叫"
-"都重新分配一個 [StringName]。"
-
-msgid ""
"Assigns a new [param value] to the property identified by the [param "
"property_path]. The path should be a [NodePath] relative to this object, and "
"can use the colon character ([code]:[/code]) to access nested properties.\n"
@@ -66753,24 +62924,6 @@ msgstr ""
"返回表示物件的 [String]。預設為 [code]\"<ClassName#RID>\"[/code]。覆蓋 "
"[method _to_string] 以自訂物件的字串表示形式。"
-msgid ""
-"Translates a [param message], using the translation catalogs configured in "
-"the Project Settings. Further [param context] can be specified to help with "
-"the translation.\n"
-"If [method can_translate_messages] is [code]false[/code], or no translation "
-"is available, this method returns the [param message] without changes. See "
-"[method set_message_translation].\n"
-"For detailed examples, see [url=$DOCS_URL/tutorials/i18n/"
-"internationalizing_games.html]Internationalizing games[/url]."
-msgstr ""
-"使用專案設定中配置的翻譯目錄,翻譯一個 [param message]。可以進一步指定 [param "
-"context] 來幫助翻譯。\n"
-"如果 [method can_translate_messages] 為 [code]false[/code],或者沒有翻譯可用,"
-"則該方法將返回 [param message] 而不做任何更改。請參閱 [method "
-"set_message_translation]。\n"
-"有關詳細範例,請參閱[url=$DOCS_URL/tutorials/i18n/internationalizing_games."
-"html]《國際化遊戲》[/url]。"
-
msgid "Emitted when [method notify_property_list_changed] is called."
msgstr "呼叫 [method notify_property_list_changed] 時發出。"
@@ -66980,14 +63133,6 @@ msgstr ""
msgid "The culling mode to use."
msgstr "要使用的剔除模式。"
-msgid ""
-"A [Vector2] array with the index for polygon's vertices positions.\n"
-"[b]Note:[/b] The returned value is a copy of the underlying array, rather "
-"than a reference."
-msgstr ""
-"帶有多邊形頂點位置索引的 [Vector2] 陣列。\n"
-"[b]注意:[/b]返回值是基礎陣列的副本,而不是引用。"
-
msgid "Culling is disabled. See [member cull_mode]."
msgstr "禁用剔除。見 [member cull_mode]。"
@@ -67297,9 +63442,6 @@ msgstr ""
"[b]注意:[/b] [code]openxr/util.h[/code] 包含用於取得OpenXR 函式的實用宏,例如"
"[code]GDEXTENSION_INIT_XR_FUNC_V(xrCreateAction)[/code]。"
-msgid "Returns the timing for the next frame."
-msgstr "返回參數的正弦值。"
-
msgid ""
"Returns the play space, which is an [url=https://registry.khronos.org/OpenXR/"
"specs/1.0/man/html/XrSpace.html]XrSpace[/url] cast to an integer."
@@ -68222,18 +64364,6 @@ msgstr ""
msgid "A packed array of bytes."
msgstr "位元組緊縮陣列。"
-msgid ""
-"An array specifically designed to hold bytes. Packs data tightly, so it saves "
-"memory for large array sizes.\n"
-"[PackedByteArray] also provides methods to encode/decode various types to/"
-"from bytes. The way values are encoded is an implementation detail and "
-"shouldn't be relied upon when interacting with external apps."
-msgstr ""
-"專門設計用於存放位元組的陣列。資料是緊密存放的,因此能夠在陣列較大時節省內"
-"存。\n"
-"[PackedByteArray] 還提供了在許多型別和位元組之間進行編碼/解碼的方法。這些值的"
-"編碼方式屬於實作細節,與外部套用程式互動時不應依賴這種編碼。"
-
msgid "Constructs an empty [PackedByteArray]."
msgstr "建構空的 [PackedByteArray]。"
@@ -68249,6 +64379,20 @@ msgid "Appends a [PackedByteArray] at the end of this array."
msgstr "在該陣列的末尾追加一個 [PackedByteArray]。"
msgid ""
+"Finds the index of an existing value (or the insertion index that maintains "
+"sorting order, if the value is not yet present in the array) using binary "
+"search. Optionally, a [param before] specifier can be passed. If [code]false[/"
+"code], the returned index comes after all existing entries of the value in "
+"the array.\n"
+"[b]Note:[/b] Calling [method bsearch] on an unsorted array results in "
+"unexpected behavior."
+msgstr ""
+"使用二進法搜尋已有值的索引(如果該值尚未存在於陣列中,則為保持排序順序的插入索"
+"引)。傳遞 [param before] 說明符是可選的。如果該參數為 [code]false[/code],則"
+"返回的索引位於陣列中該值的所有已有的條目之後。\n"
+"[b]注意:[/b]在未排序的陣列上呼叫 [method bsearch] 會產生預料之外的行為。"
+
+msgid ""
"Returns a new [PackedByteArray] with the data compressed. Set the compression "
"mode using one of [enum FileAccess.CompressionMode]'s constants."
msgstr ""
@@ -68630,13 +64774,6 @@ msgstr ""
msgid "A packed array of [Color]s."
msgstr "[Color] 緊縮陣列。"
-msgid ""
-"An array specifically designed to hold [Color]. Packs data tightly, so it "
-"saves memory for large array sizes."
-msgstr ""
-"專門設計用於存放 [Color] 的陣列。資料是緊密存放的,因此能夠在陣列較大時節省內"
-"存。"
-
msgid "Constructs an empty [PackedColorArray]."
msgstr "建構空的 [PackedColorArray]。"
@@ -68842,15 +64979,6 @@ msgstr ""
msgid "A packed array of 32-bit floating-point values."
msgstr "32 位元浮點數緊縮陣列。"
-msgid ""
-"An array specifically designed to hold 32-bit floating-point values (float). "
-"Packs data tightly, so it saves memory for large array sizes.\n"
-"If you need to pack 64-bit floats tightly, see [PackedFloat64Array]."
-msgstr ""
-"專門設計用於存放 32 位浮點值(float)的陣列。資料是緊密存放的,因此能夠在陣列"
-"較大時節省記憶體。\n"
-"如果你需要緊密存放 64 位浮點數,請參閱 [PackedFloat64Array]。"
-
msgid "Constructs an empty [PackedFloat32Array]."
msgstr "建構空的 [PackedFloat32Array]。"
@@ -68998,17 +65126,6 @@ msgstr ""
msgid "A packed array of 64-bit floating-point values."
msgstr "64 位元浮點數緊縮陣列。"
-msgid ""
-"An array specifically designed to hold 64-bit floating-point values (double). "
-"Packs data tightly, so it saves memory for large array sizes.\n"
-"If you only need to pack 32-bit floats tightly, see [PackedFloat32Array] for "
-"a more memory-friendly alternative."
-msgstr ""
-"專門設計用於存放 64 位浮點值(double)的陣列。資料是緊密存放的,因此能夠在數組"
-"較大時節省記憶體。\n"
-"如果你只需要緊密存放 32 位浮點數,請參閱 [PackedFloat32Array],是對記憶體更友"
-"好的選擇。"
-
msgid "Constructs an empty [PackedFloat64Array]."
msgstr "建構空的 [PackedFloat64Array]。"
@@ -69078,22 +65195,6 @@ msgstr ""
msgid "A packed array of 32-bit integers."
msgstr "32 位元整數緊縮陣列。"
-msgid ""
-"An array specifically designed to hold 32-bit integer values. Packs data "
-"tightly, so it saves memory for large array sizes.\n"
-"[b]Note:[/b] This type stores signed 32-bit integers, which means it can take "
-"values in the interval [code][-2^31, 2^31 - 1][/code], i.e. [code]"
-"[-2147483648, 2147483647][/code]. Exceeding those bounds will wrap around. In "
-"comparison, [int] uses signed 64-bit integers which can hold much larger "
-"values. If you need to pack 64-bit integers tightly, see [PackedInt64Array]."
-msgstr ""
-"專門設計用於存放 32 位元整數值的陣列。資料是緊密存放的,因此能夠在陣列較大時節"
-"省記憶體。\n"
-"[b]注意:[/b]該型別儲存的是 32 位元有符號整數,也就是說它可以取區間 [code]"
-"[-2^31, 2^31 - 1][/code] 內的值,即 [code][-2147483648, 2147483647][/code]。超"
-"過這些界限將環繞往復。相比之下,[int] 使用帶符號的 64 位元整數,可以容納更大的"
-"值。如果你需要緊密存放 64 位元整數,請參閱 [PackedInt64Array]。"
-
msgid "Constructs an empty [PackedInt32Array]."
msgstr "建構空的 [PackedInt32Array]。"
@@ -69174,22 +65275,6 @@ msgstr ""
msgid "A packed array of 64-bit integers."
msgstr "64 位元整數緊縮陣列。"
-msgid ""
-"An array specifically designed to hold 64-bit integer values. Packs data "
-"tightly, so it saves memory for large array sizes.\n"
-"[b]Note:[/b] This type stores signed 64-bit integers, which means it can take "
-"values in the interval [code][-2^63, 2^63 - 1][/code], i.e. [code]"
-"[-9223372036854775808, 9223372036854775807][/code]. Exceeding those bounds "
-"will wrap around. If you only need to pack 32-bit integers tightly, see "
-"[PackedInt32Array] for a more memory-friendly alternative."
-msgstr ""
-"專門設計用於存放 64 位元整數值的陣列。資料是緊密存放的,因此能夠在陣列較大時節"
-"省記憶體。\n"
-"[b]注意:[/b]該型別儲存的是 64 位元有符號整數,也就是說它可以取區間 [code]"
-"[-2^63, 2^63 - 1][/code] 內的值,即 [code][-9223372036854775808, "
-"9223372036854775807][/code]。超過這些界限將環繞往復。如果你只需要緊密存放 32 "
-"位元整數,請參閱 [PackedInt32Array],是對記憶體更友好的選擇。"
-
msgid "Constructs an empty [PackedInt64Array]."
msgstr "建構空的 [PackedInt64Array]。"
@@ -69263,11 +65348,6 @@ msgstr ""
"產生實體該場景的節點架構。觸發子場景的產生實體。在根節點上觸發 [constant Node."
"NOTIFICATION_SCENE_INSTANTIATED] 通知。"
-msgid ""
-"Pack will ignore any sub-nodes not owned by given node. See [member Node."
-"owner]."
-msgstr "包將忽略不屬於給定節點的任何子節點。請參閱 [member Node.owner]。"
-
msgid "If passed to [method instantiate], blocks edits to the scene state."
msgstr "如果傳遞給 [method instantiate],則會阻止對場景狀態的編輯。"
@@ -69300,25 +65380,6 @@ msgstr ""
msgid "A packed array of [String]s."
msgstr "[String] 緊縮陣列。"
-msgid ""
-"An array specifically designed to hold [String]s. Packs data tightly, so it "
-"saves memory for large array sizes.\n"
-"If you want to join the strings in the array, use [method String.join].\n"
-"[codeblock]\n"
-"var string_array = PackedStringArray([\"hello\", \"world\"])\n"
-"var string = \" \".join(string_array)\n"
-"print(string) # \"hello world\"\n"
-"[/codeblock]"
-msgstr ""
-"專門設計用於存放 [String] 的陣列。資料是緊密存放的,因此能夠在陣列較大時節省記"
-"憶體。\n"
-"如果要連接陣列中的字串,請使用 [method String.join]。\n"
-"[codeblock]\n"
-"var string_array = PackedStringArray([\"hello\", \"world\"])\n"
-"var string = \" \".join(string_array)\n"
-"print(string) # \"hello world\"\n"
-"[/codeblock]"
-
msgid "Constructs an empty [PackedStringArray]."
msgstr "建構空的 [PackedStringArray]。"
@@ -69388,16 +65449,6 @@ msgstr ""
msgid "A packed array of [Vector2]s."
msgstr "[Vector2] 緊縮陣列。"
-msgid ""
-"An array specifically designed to hold [Vector2]. Packs data tightly, so it "
-"saves memory for large array sizes."
-msgstr ""
-"專門設計用於存放 [Vector2] 的陣列。資料是緊密存放的,因此能夠在陣列較大時節省"
-"記憶體。"
-
-msgid "2D Navigation Astar Demo"
-msgstr "2D 導覽 Astar 演示"
-
msgid "Constructs an empty [PackedVector2Array]."
msgstr "建構空的 [PackedVector2Array]。"
@@ -69552,13 +65603,6 @@ msgstr ""
msgid "A packed array of [Vector3]s."
msgstr "[Vector3] 緊縮陣列。"
-msgid ""
-"An array specifically designed to hold [Vector3]. Packs data tightly, so it "
-"saves memory for large array sizes."
-msgstr ""
-"專門設計用於存放 [Vector3] 的陣列。資料是緊密存放的,因此能夠在陣列較大時節省"
-"記憶體。"
-
msgid "Constructs an empty [PackedVector3Array]."
msgstr "建構空的 [PackedVector3Array]。"
@@ -69893,76 +65937,6 @@ msgstr ""
"[b]注意:[/b]在向廣播地址(例如:[code]255.255.255.255[/code])發送封包之前,"
"必須啟用 [method set_broadcast_enabled]。"
-msgid ""
-"Waits for a packet to arrive on the bound address. See [method bind].\n"
-"[b]Note:[/b] [method wait] can't be interrupted once it has been called. This "
-"can be worked around by allowing the other party to send a specific \"death "
-"pill\" packet like this:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"socket = PacketPeerUDP.new()\n"
-"# Server\n"
-"socket.set_dest_address(\"127.0.0.1\", 789)\n"
-"socket.put_packet(\"Time to stop\".to_ascii_buffer())\n"
-"\n"
-"# Client\n"
-"while socket.wait() == OK:\n"
-" var data = socket.get_packet().get_string_from_ascii()\n"
-" if data == \"Time to stop\":\n"
-" return\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var socket = new PacketPeerUDP();\n"
-"// Server\n"
-"socket.SetDestAddress(\"127.0.0.1\", 789);\n"
-"socket.PutPacket(\"Time to stop\".ToAsciiBuffer());\n"
-"\n"
-"// Client\n"
-"while (socket.Wait() == OK)\n"
-"{\n"
-" string data = socket.GetPacket().GetStringFromASCII();\n"
-" if (data == \"Time to stop\")\n"
-" {\n"
-" return;\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"等待封包到達綁定的位址。見 [method bind]。\n"
-"[b]注意:[/b][method wait] 一旦被呼叫就無法中斷。解決方法是讓對方發送一個特定"
-"的“毒藥”封包,如下所示:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"socket = PacketPeerUDP.new()\n"
-"# 服務端\n"
-"socket.set_dest_address(\"127.0.0.1\", 789)\n"
-"socket.put_packet(\"Time to stop\".to_ascii_buffer())\n"
-"\n"
-"# 使用者端\n"
-"while socket.wait() == OK:\n"
-" var data = socket.get_packet().get_string_from_ascii()\n"
-" if data == \"Time to stop\":\n"
-" return\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var socket = new PacketPeerUDP();\n"
-"// 服務端\n"
-"socket.SetDestAddress(\"127.0.0.1\", 789);\n"
-"socket.PutPacket(\"Time to stop\".ToAsciiBuffer());\n"
-"\n"
-"// 使用者端\n"
-"while (socket.Wait() == OK)\n"
-"{\n"
-" string data = socket.GetPacket().GetStringFromASCII();\n"
-" if (data == \"Time to stop\")\n"
-" {\n"
-" return;\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
msgid "A GUI control that displays a [StyleBox]."
msgstr "顯示 [StyleBox] 的 GUI 控制項。"
@@ -69971,12 +65945,6 @@ msgid ""
"[PanelContainer]."
msgstr "[Panel] 是一種顯示 [StyleBox] 的 GUI 控制項。另見 [PanelContainer]。"
-msgid "2D Finite State Machine Demo"
-msgstr "2D 有限狀態機演示"
-
-msgid "3D Inverse Kinematics Demo"
-msgstr "3D 逆運動學演示"
-
msgid "The [StyleBox] of this control."
msgstr "該控制項的 [StyleBox]。"
@@ -70773,45 +66741,6 @@ msgid "Creates packages that can be loaded into a running project."
msgstr "建立可以載入到正在運作的專案中的包。"
msgid ""
-"The [PCKPacker] is used to create packages that can be loaded into a running "
-"project using [method ProjectSettings.load_resource_pack].\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var packer = PCKPacker.new()\n"
-"packer.pck_start(\"test.pck\")\n"
-"packer.add_file(\"res://text.txt\", \"text.txt\")\n"
-"packer.flush()\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var packer = new PCKPacker();\n"
-"packer.PckStart(\"test.pck\");\n"
-"packer.AddFile(\"res://text.txt\", \"text.txt\");\n"
-"packer.Flush();\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"The above [PCKPacker] creates package [code]test.pck[/code], then adds a file "
-"named [code]text.txt[/code] at the root of the package."
-msgstr ""
-"[PCKPacker] 可以建立打包檔,專案運作時可以使用 [method ProjectSettings."
-"load_resource_pack] 來載入打包檔。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var packer = PCKPacker.new()\n"
-"packer.pck_start(\"test.pck\")\n"
-"packer.add_file(\"res://text.txt\", \"text.txt\")\n"
-"packer.flush()\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var packer = new PCKPacker();\n"
-"packer.PckStart(\"test.pck\");\n"
-"packer.AddFile(\"res://text.txt\", \"text.txt\");\n"
-"packer.Flush();\n"
-"[/csharp]\n"
-"[/codeblocks]\n"
-"上面的例子中,[PCKPacker] 建立了打包檔案 [code]test.pck[/code],但後將名為 "
-"[code]text.txt[/code] 的檔新增到了包的根目錄。"
-
-msgid ""
"Adds the [param source_path] file to the current PCK package at the [param "
"pck_path] internal path (should start with [code]res://[/code])."
msgstr ""
@@ -71330,17 +67259,6 @@ msgstr ""
"體。"
msgid ""
-"Called during physics processing, allowing you to read and safely modify the "
-"simulation state for the object. By default, it works in addition to the "
-"usual physics behavior, but the [member custom_integrator] property allows "
-"you to disable the default behavior and do fully custom force integration for "
-"a body."
-msgstr ""
-"在物理處理過程中被呼叫,允許你讀取並安全地修改物件的類比狀態。預設情況下,它會"
-"和通常的物理行為一起生效,但是你可以通過 [member custom_integrator] 屬性禁用預"
-"設行為,為物體施加完全自訂的合力。"
-
-msgid ""
"Damps the body's rotation. By default, the body will use the [b]Default "
"Angular Damp[/b] in [b]Project > Project Settings > Physics > 3d[/b] or any "
"value override set by an [Area3D] the body is in. Depending on [member "
@@ -71376,16 +67294,6 @@ msgstr ""
"與模擬。"
msgid ""
-"If [code]true[/code], internal force integration will be disabled (like "
-"gravity or air friction) for this body. Other than collision response, the "
-"body will only move as determined by the [method _integrate_forces] function, "
-"if defined."
-msgstr ""
-"如果為 [code]true[/code],則該物體的內力積分將被禁用(如重力或空氣摩擦)。除了"
-"碰撞回應之外,物體將僅根據 [method _integrate_forces] 函式確定的方式移動(如果"
-"已定義)。"
-
-msgid ""
"The body's friction, from [code]0[/code] (frictionless) to [code]1[/code] "
"(max friction)."
msgstr ""
@@ -71455,6 +67363,32 @@ msgid ""
msgstr "在這種模式下,物體的阻尼值將替換掉區域中設定的任何值或預設值。"
msgid ""
+"Adds a collision exception to the physical bone.\n"
+"Works just like the [RigidBody3D] node."
+msgstr ""
+"向物理骨骼新增一個碰撞例外。\n"
+"就像 [RigidBody3D] 節點一樣工作。"
+
+msgid ""
+"Removes a collision exception to the physical bone.\n"
+"Works just like the [RigidBody3D] node."
+msgstr ""
+"移除物理骨骼的一個碰撞例外。\n"
+"就像 [RigidBody3D] 節點一樣工作。"
+
+msgid ""
+"Tells the [PhysicalBone3D] nodes in the Skeleton to start simulating and "
+"reacting to the physics world.\n"
+"Optionally, a list of bone names can be passed-in, allowing only the passed-"
+"in bones to be simulated."
+msgstr ""
+"讓 Skeleton 中的 [PhysicalBone3D] 節點開始模擬類比,對物理世界做出反應。\n"
+"可以傳入骨骼名稱列表,只對傳入的骨骼進行模擬模擬。"
+
+msgid "Tells the [PhysicalBone3D] nodes in the Skeleton to stop simulating."
+msgstr "讓 Skeleton 中的 [PhysicalBone3D] 節點停止模擬模擬。"
+
+msgid ""
"A material that defines a sky for a [Sky] resource by a set of physical "
"properties."
msgstr "透過一組物理屬性定義 [Sky] 資源的天空的材質。"
@@ -71931,9 +67865,6 @@ msgid ""
"translation and rotation."
msgstr "返回給定相對位置的物體速度,包括平移和旋轉。"
-msgid "Calls the built-in force integration code."
-msgstr "呼叫內建的力集成程式碼。"
-
msgid ""
"Sets the body's total constant positional forces applied during each physics "
"update.\n"
@@ -72753,16 +68684,6 @@ msgstr ""
"回來。"
msgid ""
-"Creates a 2D area object in the physics server, and returns the [RID] that "
-"identifies it. Use [method area_add_shape] to add shapes to it, use [method "
-"area_set_transform] to set its transform, and use [method area_set_space] to "
-"add the area to a space."
-msgstr ""
-"在物理服務中建立一個 2D 區域物件,並返回標識它的 [RID]。使用 [method "
-"area_add_shape] 為其新增形狀,使用 [method area_set_transform] 設定其變換,並"
-"使用 [method area_set_space] 將區域新增到一個空間。"
-
-msgid ""
"Returns the [code]ObjectID[/code] of the canvas attached to the area. Use "
"[method @GlobalScope.instance_from_id] to retrieve a [CanvasLayer] from a "
"nonzero [code]ObjectID[/code]."
@@ -73071,16 +68992,6 @@ msgstr ""
"增回來。"
msgid ""
-"Creates a 2D body object in the physics server, and returns the [RID] that "
-"identifies it. Use [method body_add_shape] to add shapes to it, use [method "
-"body_set_state] to set its transform, and use [method body_set_space] to add "
-"the body to a space."
-msgstr ""
-"在物理服務中建立一個 2D 物體物件,並返回標識它的 [RID]。可使用 [method "
-"body_add_shape] 為其新增形狀,使用 [method body_set_state] 設定其變換,以及使"
-"用 [method body_set_space] 將實體新增到一個空間。"
-
-msgid ""
"Returns the [code]ObjectID[/code] of the canvas attached to the body. Use "
"[method @GlobalScope.instance_from_id] to retrieve a [CanvasLayer] from a "
"nonzero [code]ObjectID[/code]."
@@ -73169,13 +69080,6 @@ msgid ""
msgstr "返回該實體給定狀態的值。有關可用狀態的列表,請參閱 [enum BodyState]。"
msgid ""
-"Returns [code]true[/code] if the body uses a callback function to calculate "
-"its own physics (see [method body_set_force_integration_callback])."
-msgstr ""
-"如果實體使用回呼函式來計算自己的物理運算(請參閱 [method "
-"body_set_force_integration_callback]),則返回 [code]true[/code]。"
-
-msgid ""
"Removes [param excepted_body] from the body's list of collision exceptions, "
"so that collisions with it are no longer ignored."
msgstr ""
@@ -73254,23 +69158,6 @@ msgstr ""
"並在發生碰撞時糾正它的運動。"
msgid ""
-"Sets the function used to calculate physics for the body, if that body allows "
-"it (see [method body_set_omit_force_integration]).\n"
-"The force integration function takes the following two parameters:\n"
-"1. a [PhysicsDirectBodyState2D] [code]state[/code]: used to retrieve and "
-"modify the body's state,\n"
-"2. a [Variant] [param userdata]: optional user data.\n"
-"[b]Note:[/b] This callback is currently not called in Godot Physics."
-msgstr ""
-"如果該實體允許的話,設定用於計算實體物理的函式(參見 [method "
-"body_set_omit_force_integration])。\n"
-"該力的積分函式採用以下兩個參數:\n"
-"1. 一個 [PhysicsDirectBodyState2D] [code]state[/code]:用於檢索和修改實體的狀"
-"態,\n"
-"2. 一個 [Variant] [param userdata]:可選的使用者資料。\n"
-"[b]注意:[/b]該回呼函式目前在 Godot 物理中不會被呼叫。"
-
-msgid ""
"Sets the maximum number of contacts that the body can report. If [param "
"amount] is greater than zero, then the body will keep track of at most this "
"many contacts with other bodies."
@@ -73283,13 +69170,6 @@ msgid ""
msgstr "設定該實體的模式。有關可用模式的列表,請參閱 [enum BodyMode]。"
msgid ""
-"Sets whether the body uses a callback function to calculate its own physics "
-"(see [method body_set_force_integration_callback])."
-msgstr ""
-"設定一個物體是否使用回呼函式來計算它自己的物理(參見 [method "
-"body_set_force_integration_callback])。"
-
-msgid ""
"Sets the value of the given body parameter. See [enum BodyParameter] for the "
"list of available parameters."
msgstr "設定給定實體參數的值。有關可用參數列表,請參閱 [enum BodyParameter]。"
@@ -74249,9 +70129,6 @@ msgid ""
"be reassigned later."
msgstr "從一個區域移除所有形狀。它不會刪除形狀,因此它們可以稍後重新分配。"
-msgid "Creates an [Area3D]."
-msgstr "建立 [Area3D]。"
-
msgid "Returns the physics layer or layers an area belongs to."
msgstr "返回該區域所屬的實體層。"
@@ -74464,13 +70341,6 @@ msgid ""
msgstr "如果為 [code]true[/code],則啟用連續碰撞偵測模式。"
msgid ""
-"Returns whether a body uses a callback function to calculate its own physics "
-"(see [method body_set_force_integration_callback])."
-msgstr ""
-"返回一個物體是否使用回呼函式來計算它自己的物理值(見 [method "
-"body_set_force_integration_callback])。"
-
-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."
@@ -74545,13 +70415,6 @@ msgid "Sets the body mode, from one of the [enum BodyMode] constants."
msgstr "從 [enum BodyMode] 常數之一設定主體模式。"
msgid ""
-"Sets whether a body uses a callback function to calculate its own physics "
-"(see [method body_set_force_integration_callback])."
-msgstr ""
-"設定一個物體是否使用回呼函式來計算它自己的物理(見 [method "
-"body_set_force_integration_callback])。"
-
-msgid ""
"Sets a body parameter. A list of available parameters is on the [enum "
"BodyParameter] constants."
msgstr "設定物體參數。可用參數列表位於 [enum BodyParameter] 常數上。"
@@ -74602,24 +70465,6 @@ msgstr ""
"PhysicsServer3D 建立的對象,則會向控制台發送錯誤。"
msgid ""
-"Gets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants)."
-msgstr "獲取 generic_6_DOF_joit 旗標(見 [enum G6DOFJointAxisFlag] 常數)。"
-
-msgid ""
-"Gets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] "
-"constants)."
-msgstr "獲取 generic_6_DOF_joint 參數(見 [enum G6DOFJointAxisParam] 常數)。"
-
-msgid ""
-"Sets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants)."
-msgstr "設定 generic_6_DOF_joint 旗標(見 [enum G6DOFJointAxisFlag] 常數)。"
-
-msgid ""
-"Sets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] "
-"constants)."
-msgstr "設定 generic_6_DOF_joint 參數(見 [enum G6DOFJointAxisParam] 常數)。"
-
-msgid ""
"Returns information about the current state of the 3D physics engine. See "
"[enum ProcessInfo] for a list of available states."
msgstr ""
@@ -74999,9 +70844,6 @@ msgstr "常數,用於設定/獲取區域的角度阻尼係數。"
msgid "Constant to set/get the priority (order of processing) of an area."
msgstr "常數,用於設定/獲取區域的優先順序(處理順序)。"
-msgid "Constant to set/get the magnitude of area-specific wind force."
-msgstr "常數,用於設定/獲取特定區域風力大小。"
-
msgid ""
"Constant to set/get the 3D vector that specifies the origin from which an "
"area-specific wind blows."
@@ -76191,15 +72033,6 @@ msgid "The offset applied to each vertex."
msgstr "套用於每個頂點的位置偏移量。"
msgid ""
-"The polygon's list of vertices. The final point will be connected to the "
-"first.\n"
-"[b]Note:[/b] This returns a copy of the [PackedVector2Array] rather than a "
-"reference."
-msgstr ""
-"多邊形的頂點列表。最後一點將連接到第一個點。\n"
-"[b]注意:[/b]返回的是 [PackedVector2Array] 的副本,不是引用。"
-
-msgid ""
"The list of polygons, in case more than one is being represented. Every "
"individual polygon is stored as a [PackedInt32Array] where each [int] is an "
"index to a point in [member polygon]. If empty, this property will be "
@@ -76269,9 +72102,6 @@ msgstr ""
msgid "Emitted when the popup is hidden."
msgstr "當該快顯視窗被隱藏時發出。"
-msgid "Default [StyleBox] for the [Popup]."
-msgstr "該 [Button] 的預設 [StyleBox]。"
-
msgid "A modal window used to display a list of options."
msgstr "用於顯示選項列表的模態視窗。"
@@ -77552,11 +73382,11 @@ msgid ""
"[b]Overriding:[/b] Any project setting can be overridden by creating a file "
"named [code]override.cfg[/code] in the project's root directory. This can "
"also be used in exported projects by placing this file in the same directory "
-"as the project binary. Overriding will still take the base project "
-"settings' [url=$DOCS_URL/tutorials/export/feature_tags.html]feature tags[/"
-"url] in account. Therefore, make sure to [i]also[/i] override the setting "
-"with the desired feature tags if you want them to override base project "
-"settings on all platforms and configurations."
+"as the project binary. Overriding will still take the base project settings' "
+"[url=$DOCS_URL/tutorials/export/feature_tags.html]feature tags[/url] in "
+"account. Therefore, make sure to [i]also[/i] override the setting with the "
+"desired feature tags if you want them to override base project settings on "
+"all platforms and configurations."
msgstr ""
"儲存可以從任何地方存取的變數。請使用 [method get_setting]、[method "
"set_setting]、[method has_setting] 存取。儲存在 [code]project.godot[/code] 中"
@@ -77925,18 +73755,6 @@ msgstr ""
"長寬比)。如果為 [code]false[/code],引擎將保持其預設圖元大小。"
msgid ""
-"Path to an image used as the boot splash. If left empty, the default Godot "
-"Engine splash will be displayed instead.\n"
-"[b]Note:[/b] Only effective if [member application/boot_splash/show_image] is "
-"[code]true[/code].\n"
-"[b]Note:[/b] The only supported format is PNG. Using another image format "
-"will result in an error."
-msgstr ""
-"圖像的路徑,會作為啟動畫面使用。留空時將使用預設的 Godot 引擎啟動畫面。\n"
-"[b]注意:[/b]僅在 [member application/boot_splash/show_image] 為 [code]true[/"
-"code] 時有效。"
-
-msgid ""
"Minimum boot splash display time (in milliseconds). It is not recommended to "
"set too high values for this setting."
msgstr "啟動畫面的最小顯示時間(單位為毫秒)。不建議設定為過高的值。"
@@ -78179,16 +73997,6 @@ msgstr ""
"僅在重新開機套用程式時才會套用此設定的更改。"
msgid ""
-"If [code]true[/code], enables low-processor usage mode. This setting only "
-"works on desktop platforms. The screen is not redrawn if nothing changes "
-"visually. This is meant for writing applications and editors, but is pretty "
-"useless (and can hurt performance) in most games."
-msgstr ""
-"如果為 [code]true[/code],則啟用低處理器使用模式。此設定僅適用於桌面平臺。如果"
-"視覺上沒有任何變化,螢幕不會被重繪。這是為了編寫套用程式和編輯器,但在大多數遊"
-"戲中這是非常無用的(並可能損害性能)。"
-
-msgid ""
"Amount of sleeping between frames when the low-processor usage mode is "
"enabled (in microseconds). Higher values will result in lower CPU usage."
msgstr ""
@@ -78445,13 +74253,6 @@ msgstr ""
msgid ""
"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
-"error respectively when deprecated keywords are used."
-msgstr ""
-"設為 [code]warn[/code] 或 [code]error[/code] 時,會在使用已啟用的關鍵字時對應"
-"產生警告或錯誤。"
-
-msgid ""
-"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
"error respectively when an empty file is parsed."
msgstr ""
"設為 [code]warn[/code] 或 [code]error[/code] 時,會在解析空檔時對應產生警告或"
@@ -78696,13 +74497,6 @@ msgstr ""
msgid ""
"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
-"error respectively when performing an unsafe cast."
-msgstr ""
-"設定為 [code]warn[/code] 或 [code]error[/code] 時,當執行不安全的轉換時,會分"
-"別產生一個警告或一個錯誤。"
-
-msgid ""
-"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
"error respectively when calling a method whose presence is not guaranteed at "
"compile-time in the class."
msgstr ""
@@ -78749,13 +74543,6 @@ msgstr ""
msgid ""
"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
-"error respectively when a signal is declared but never emitted."
-msgstr ""
-"設定為 [code]warn[/code] 或 [code]error[/code] 時,當一個訊號被宣告但從未發出"
-"時,會分別產生一個警告或一個錯誤。"
-
-msgid ""
-"When set to [code]warn[/code] or [code]error[/code], produces a warning or an "
"error respectively when a local variable is unused."
msgstr ""
"設定為 [code]warn[/code] 或 [code]error[/code] 時,當一個區域變數未被使用時,"
@@ -79098,13 +74885,6 @@ msgstr ""
"程式不會接管。適用於桌面和移動平臺。"
msgid ""
-"Editor-only override for [member display/window/energy_saving/"
-"keep_screen_on]. Does not affect exported projects in debug or release mode."
-msgstr ""
-"[member display/window/energy_saving/keep_screen_on] 的編輯器覆蓋項。不影響調"
-"試模式和發行模式下匯出的專案。"
-
-msgid ""
"The default screen orientation to use on mobile devices. See [enum "
"DisplayServer.ScreenOrientation] for possible values.\n"
"[b]Note:[/b] When set to a portrait orientation, this project setting does "
@@ -79497,46 +75277,11 @@ msgstr ""
"[/code]、[code]{signal_name}[/code]。"
msgid ""
-"When creating node names automatically, set the type of casing in this "
-"project. This is mostly an editor setting."
-msgstr ""
-"當自動建立節點名稱時,在這個專案中設定大小寫的型別。這主要是編輯器設定。"
-
-msgid ""
"What to use to separate node name from number. This is mostly an editor "
"setting."
msgstr "用什麼來分隔節點名稱和編號。這主要是一個編輯器的設定。"
msgid ""
-"When generating file names from scene root node, set the type of casing in "
-"this project. This is mostly an editor setting."
-msgstr ""
-"根據場景根節點生成檔案名時,設定這個專案中的大小寫型別。主要是編輯器設定。"
-
-msgid ""
-"The command-line arguments to append to Godot's own command line when running "
-"the project. This doesn't affect the editor itself.\n"
-"It is possible to make another executable run Godot by using the "
-"[code]%command%[/code] placeholder. The placeholder will be replaced with "
-"Godot's own command line. Program-specific arguments should be placed "
-"[i]before[/i] the placeholder, whereas Godot-specific arguments should be "
-"placed [i]after[/i] the placeholder.\n"
-"For example, this can be used to force the project to run on the dedicated "
-"GPU in a NVIDIA Optimus system on Linux:\n"
-"[codeblock]\n"
-"prime-run %command%\n"
-"[/codeblock]"
-msgstr ""
-"運作專案時附加到 Godot 自己的命令列的命令列參數。這不會影響編輯器本身。\n"
-"可以使用 [code]%command%[/code] 預留位置使另一個可執行檔運作 Godot。預留位置將"
-"替換為 Godot 自己的命令列。程式特定的參數應該放在[i]預留位置之前[/i],而 "
-"Godot 特定參數應該放在[i]預留位置之後[/i]。\n"
-"例如,這可用於強制專案在 Linux 上的 NVIDIA Optimus 系統中的專用 GPU 上運行:\n"
-"[codeblock]\n"
-"prime-run %command%\n"
-"[/codeblock]"
-
-msgid ""
"Text-based file extensions to include in the script editor's \"Find in "
"Files\" feature. You can add e.g. [code]tscn[/code] if you wish to also parse "
"your scene files, especially if you use built-in scripts which are serialized "
@@ -83584,9 +79329,6 @@ msgstr ""
"[PlaneMesh] 是等價的,區別是 [member PlaneMesh.orientation] 預設為 [constant "
"PlaneMesh.FACE_Z]。"
-msgid "2D in 3D Demo"
-msgstr "3D 中的 2D 演示"
-
msgid "Flat plane shape for use with occlusion culling in [OccluderInstance3D]."
msgstr "用於 [OccluderInstance3D] 遮擋剔除的扁平平面形狀。"
@@ -83900,22 +79642,6 @@ msgstr ""
"(即 [method is_colliding] 返回 [code]false[/code])。"
msgid ""
-"Returns the shape ID of the first object that the ray intersects, or [code]0[/"
-"code] if no object is intersecting the ray (i.e. [method is_colliding] "
-"returns [code]false[/code])."
-msgstr ""
-"返回射線相交的第一個物件的形狀 ID,如果沒有物件與射線相交,則返回 [code]0[/"
-"code](即 [method is_colliding] 返回 [code]false[/code])。"
-
-msgid ""
-"Returns the normal of the intersecting object's shape at the collision point, "
-"or [code]Vector2(0, 0)[/code] if the ray starts inside the shape and [member "
-"hit_from_inside] is [code]true[/code]."
-msgstr ""
-"返回相交物件的形狀在碰撞點處的法線,如果射線從該形狀內部發出並且 [member "
-"hit_from_inside] 為 [code]true[/code],則為 [code]Vector2(0, 0)[/code]。"
-
-msgid ""
"Returns whether any object is intersecting with the ray's vector (considering "
"the vector length)."
msgstr "返回是否有任何物件與射線的向量相交(考慮向量長度)。"
@@ -83984,14 +79710,6 @@ msgstr ""
"hit_from_inside] 為 [code]true[/code],則為 [code]Vector2(0, 0)[/code]。"
msgid ""
-"Returns the normal of the intersecting object's shape at the collision point, "
-"or [code]Vector3(0, 0, 0)[/code] if the ray starts inside the shape and "
-"[member hit_from_inside] is [code]true[/code]."
-msgstr ""
-"返回相交對象形狀在碰撞點處的法線;或者如果射線從形狀內部開始並且 [member "
-"hit_from_inside] 為 [code]true[/code],則返回 [code]Vector3(0, 0, 0)[/code]。"
-
-msgid ""
"Removes a collision exception so the ray does report collisions with the "
"specified [CollisionObject3D] node."
msgstr ""
@@ -84969,40 +80687,6 @@ msgid ""
msgstr "如果該 [Rect2i] 完全包含另一個,則返回 [code]true[/code]。"
msgid ""
-"Returns a copy of this rectangle expanded to align the edges with the given "
-"[param to] point, if necessary.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var rect = Rect2(0, 0, 5, 2)\n"
-"\n"
-"rect = rect.expand(Vector2(10, 0)) # rect is Rect2(0, 0, 10, 2)\n"
-"rect = rect.expand(Vector2(-5, 5)) # rect is Rect2(-5, 0, 10, 5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var rect = new Rect2(0, 0, 5, 2);\n"
-"\n"
-"rect = rect.Expand(new Vector2(10, 0)); // rect is Rect2(0, 0, 10, 2)\n"
-"rect = rect.Expand(new Vector2(-5, 5)); // rect is Rect2(-5, 0, 10, 5)\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"返回該 [Rect2i] 的副本,該副本擴充至包含給定點。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# 位置 (-3, 2),大小 (1, 1)\n"
-"var rect = Rect2i(Vector2i(-3, 2), Vector2i(1, 1))\n"
-"# 位置 (-3, -1),大小 (3, 4),所以我們同時適配 rect 和 Vector2i(0, -1)\n"
-"var rect2 = rect.expand(Vector2i(0, -1))\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// 位置 (-3, 2),大小 (1, 1)\n"
-"var rect = new Rect2I(new Vector2I(-3, 2), new Vector2I(1, 1));\n"
-"// 位置 (-3, -1),大小 (3, 4),所以我們同時適配 rect 和 Vector2i(0, -1)\n"
-"var rect2 = rect.Expand(new Vector2I(0, -1));\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Returns the rectangle's area. This is equivalent to [code]size.x * size.y[/"
"code]. See also [method has_area]."
msgstr "返回該 [Rect2] 的面積。另請參閱 [method has_area]。"
@@ -85270,40 +80954,6 @@ msgid ""
msgstr "如果該 [Rect2i] 完全包含另一個,則返回 [code]true[/code]。"
msgid ""
-"Returns a copy of this rectangle expanded to align the edges with the given "
-"[param to] point, if necessary.\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var rect = Rect2i(0, 0, 5, 2)\n"
-"\n"
-"rect = rect.expand(Vector2i(10, 0)) # rect is Rect2i(0, 0, 10, 2)\n"
-"rect = rect.expand(Vector2i(-5, 5)) # rect is Rect2i(-5, 0, 10, 5)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var rect = new Rect2I(0, 0, 5, 2);\n"
-"\n"
-"rect = rect.Expand(new Vector2I(10, 0)); // rect is Rect2I(0, 0, 10, 2)\n"
-"rect = rect.Expand(new Vector2I(-5, 5)); // rect is Rect2I(-5, 0, 10, 5)\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"返回該 [Rect2i] 的副本,該副本擴充至包含給定點。\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"# 位置 (-3, 2),大小 (1, 1)\n"
-"var rect = Rect2i(Vector2i(-3, 2), Vector2i(1, 1))\n"
-"# 位置 (-3, -1),大小 (3, 4),所以我們同時適配 rect 和 Vector2i(0, -1)\n"
-"var rect2 = rect.expand(Vector2i(0, -1))\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"// 位置 (-3, 2),大小 (1, 1)\n"
-"var rect = new Rect2I(new Vector2I(-3, 2), new Vector2I(1, 1));\n"
-"// 位置 (-3, -1),大小 (3, 4),所以我們同時適配 rect 和 Vector2i(0, -1)\n"
-"var rect2 = rect.Expand(new Vector2I(0, -1));\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Returns the center point of the rectangle. This is the same as [code]position "
"+ (size / 2)[/code].\n"
"[b]Note:[/b] If the [member size] is odd, the result will be rounded towards "
@@ -89958,39 +85608,6 @@ msgstr ""
"use_jitter] 可用於抖動模糊過程中採集的樣本,以隱藏偽影,代價是看起來更模糊。"
msgid ""
-"Sets the exposure values that will be used by the renderers. The "
-"normalization amount is used to bake a given Exposure Value (EV) into "
-"rendering calculations to reduce the dynamic range of the scene.\n"
-"The normalization factor can be calculated from exposure value (EV100) as "
-"follows:\n"
-"[codeblock]\n"
-"func get_exposure_normalization(float ev100):\n"
-" \t\t\t return 1.0 / (pow(2.0, ev100) * 1.2)\n"
-"[/codeblock]\n"
-"The exposure value can be calculated from aperture (in f-stops), shutter "
-"speed (in seconds), and sensitivity (in ISO) as follows:\n"
-"[codeblock]\n"
-"func get_exposure(float aperture, float shutter_speed, float sensitivity):\n"
-" return log2((aperture * aperture) / shutterSpeed * (100.0 / "
-"sensitivity))\n"
-"[/codeblock]"
-msgstr ""
-"設定算繪器所使用的曝光值。正規化量用於將給定的曝光值(Exposure Value,EV)烘焙"
-"進算繪計算,從而降低場景的動態範圍。\n"
-"可以用如下方法根據曝光值(EV100)來計算正規化係數:\n"
-"[codeblock]\n"
-"func get_exposure_normalization(float ev100):\n"
-" \t\t\t return 1.0 / (pow(2.0, ev100) * 1.2)\n"
-"[/codeblock]\n"
-"可以使用如下方法根據光圈(單位為 F 值)、快門速度(單位為秒)、感光度(單位為 "
-"ISO)來計算曝光值:\n"
-"[codeblock]\n"
-"func get_exposure(float aperture, float shutter_speed, float sensitivity):\n"
-" return log2((aperture * aperture) / shutterSpeed * (100.0 / "
-"sensitivity))\n"
-"[/codeblock]"
-
-msgid ""
"Creates a 3D camera and adds it to the RenderingServer. It can be accessed "
"with the RID that is returned. This RID will be used in all [code]camera_*[/"
"code] RenderingServer functions.\n"
@@ -91477,11 +87094,6 @@ msgstr ""
"set_surface_override_material]。"
msgid ""
-"Sets the world space transform of the instance. Equivalent to [member Node3D."
-"transform]."
-msgstr "設定該實例的世界空間變換。相當於 [member Node3D.transform]。"
-
-msgid ""
"Sets the visibility parent for the given instance. Equivalent to [member "
"Node3D.visibility_parent]."
msgstr "設定給定實例的可見性父級。相當於 [member Node3D.visibility_parent]。"
@@ -91846,57 +87458,6 @@ msgstr ""
"MultiMesh.set_instance_transform_2d]。"
msgid ""
-"Set the entire data to use for drawing the [param multimesh] at once to "
-"[param buffer] (such as instance transforms and colors). [param buffer]'s "
-"size must match the number of instances multiplied by the per-instance data "
-"size (which depends on the enabled MultiMesh fields). Otherwise, an error "
-"message is printed and nothing is rendered. See also [method "
-"multimesh_get_buffer].\n"
-"The per-instance data size and expected data order is:\n"
-"[codeblock]\n"
-"2D:\n"
-" - Position: 8 floats (8 floats for Transform2D)\n"
-" - Position + Vertex color: 12 floats (8 floats for Transform2D, 4 floats "
-"for Color)\n"
-" - Position + Custom data: 12 floats (8 floats for Transform2D, 4 floats of "
-"custom data)\n"
-" - Position + Vertex color + Custom data: 16 floats (8 floats for "
-"Transform2D, 4 floats for Color, 4 floats of custom data)\n"
-"3D:\n"
-" - Position: 12 floats (12 floats for Transform3D)\n"
-" - Position + Vertex color: 16 floats (12 floats for Transform3D, 4 floats "
-"for Color)\n"
-" - Position + Custom data: 16 floats (12 floats for Transform3D, 4 floats of "
-"custom data)\n"
-" - Position + Vertex color + Custom data: 20 floats (12 floats for "
-"Transform3D, 4 floats for Color, 4 floats of custom data)\n"
-"[/codeblock]"
-msgstr ""
-"將用於繪製 [param multimesh] 的全部資料立即寫入 [param buffer](例如實例的變換"
-"和顏色)。[param buffer] 的大小必須與實例數和單實例資料大小的乘積配對(後者取"
-"決於啟用的 MultiMesh 欄位)。否則,會輸出錯誤資訊,不算繪任何東西。另見 "
-"[method multimesh_get_buffer]。\n"
-"單實例資料大小與預期的資料順序如下:\n"
-"[codeblock]\n"
-"2D:\n"
-" - 位置:8 個 float(Transform2D 占 8 個 float)\n"
-" - 位置 + 頂點顏色:12 個 float(Transform2D 占 8 個 float、顏色占 4 個 "
-"float)\n"
-" - 位置 + 自訂資料:12 個 float(Transform2D 占 8 個 float、自訂資料占 4 個 "
-"float)\n"
-" - 位置 + 頂點顏色 + 自訂資料:16 個 float(Transform2D 占 8 個 float、顏色"
-"占 4 個 float、自訂資料占 4 個 float)\n"
-"3D:\n"
-" - 位置:12 個 float(Transform3D 占 12 個 float)\n"
-" - 位置 + 頂點顏色:16 個 float(Transform3D 占 12 個 float、顏色占 4 個 "
-"float)\n"
-" - 位置 + 自訂資料:16 個 float(Transform3D 占 12 個 float、自訂資料占 4 個 "
-"float)\n"
-" - 位置 + 頂點顏色 + 自訂資料:20 個 float(Transform3D 占 12 個 float、顏色"
-"占 4 個 float、自訂資料占 4 個 float)\n"
-"[/codeblock]"
-
-msgid ""
"Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh."
"mesh]."
msgstr "設定 Multimesh 所要繪製的網格。相當於 [member MultiMesh.mesh]。"
@@ -92838,11 +88399,11 @@ msgstr ""
msgid ""
"Returns the CPU time taken to render the last frame in milliseconds. This "
-"[i]only[/i] includes time spent in rendering-related operations; "
-"scripts' [code]_process[/code] functions and other engine subsystems are not "
-"included in this readout. To get a complete readout of CPU time spent to "
-"render the scene, sum the render times of all viewports that are drawn every "
-"frame plus [method get_frame_setup_time_cpu]. Unlike [method Engine."
+"[i]only[/i] includes time spent in rendering-related operations; scripts' "
+"[code]_process[/code] functions and other engine subsystems are not included "
+"in this readout. To get a complete readout of CPU time spent to render the "
+"scene, sum the render times of all viewports that are drawn every frame plus "
+"[method get_frame_setup_time_cpu]. Unlike [method Engine."
"get_frames_per_second], this method will accurately reflect CPU utilization "
"even if framerate is capped via V-Sync or [member Engine.max_fps]. See also "
"[method viewport_get_measured_render_time_gpu].\n"
@@ -93241,35 +88802,6 @@ msgstr ""
"ProjectSettings.rendering/anti_aliasing/quality/use_debanding]。"
msgid ""
-"If [code]true[/code], 2D rendering will use a high dynamic range (HDR) format "
-"framebuffer matching the bit depth of the 3D framebuffer. When using the "
-"Forward+ renderer this will be a [code]RGBA16[/code] framebuffer, while when "
-"using the Mobile renderer it will be a [code]RGB10_A2[/code] framebuffer. "
-"Additionally, 2D rendering will take place in linear color space and will be "
-"converted to sRGB space immediately before blitting to the screen (if the "
-"Viewport is attached to the screen). Practically speaking, this means that "
-"the end result of the Viewport will not be clamped into the [code]0-1[/code] "
-"range and can be used in 3D rendering without color space adjustments. This "
-"allows 2D rendering to take advantage of effects requiring high dynamic range "
-"(e.g. 2D glow) as well as substantially improves the appearance of effects "
-"requiring highly detailed gradients. This setting has the same effect as "
-"[member Viewport.use_hdr_2d].\n"
-"[b]Note:[/b] This setting will have no effect when using the GL Compatibility "
-"renderer as the GL Compatibility renderer always renders in low dynamic range "
-"for performance reasons."
-msgstr ""
-"如果[code]true[/code],2D 算繪將使用與3D 影格緩衝區的位元深度配對的高動態範圍"
-"(HDR) 格式影格緩衝區。使用Forward+ 算繪器時,這將是[code]RGBA16[/code] 影格緩"
-"衝區,而使用移動算繪器時,它將是[code]RGB10_A2[/code] 影格緩衝區。此外,2D 算"
-"繪將在線性顏色空間中進行,並將轉換為sRGB 空間緊接在blitting 到螢幕之前(如果"
-"Viewport 附加到螢幕)。實際上,這表示Viewport 的最終結果不會被限制在"
-"[code]0-1[/code] 範圍內,並且可以使用在 3D 算繪中無需調整色彩空間。這允許 2D "
-"算繪利用需要高動態範圍的效果(例如 2D 發光),並顯著改善需要高度詳細漸變的效果"
-"的外觀。此設定與 [member Viewport.use_hdr_2d]。\n"
-"[b]注意:[/b] 使用GL 相容性算繪器時,此設定無效,因為出於效能原因,GL 相容性算"
-"繪器始終在低動態範圍內算繪。"
-
-msgid ""
"If [code]true[/code], enables occlusion culling on the specified viewport. "
"Equivalent to [member ProjectSettings.rendering/occlusion_culling/"
"use_occlusion_culling]."
@@ -94527,9 +90059,6 @@ msgstr ""
"可變速率著色使用紋理。請注意,對於立體視覺,請使用為每個視圖提供紋理的紋理圖"
"集。"
-msgid "Variable rate shading texture is supplied by the primary [XRInterface]."
-msgstr "可變速率著色紋理由主 [XRInterface] 提供。"
-
msgid "Represents the size of the [enum ViewportVRSMode] enum."
msgstr "代表 [enum ViewportVRSMode] 列舉的大小。"
@@ -95795,8 +91324,8 @@ msgid ""
"\"disabled\" (bit is [code]false[/code]).\n"
"[b]Alpha:[/b] Pixels whose alpha value is greater than the [member threshold] "
"will be considered as \"enabled\" (bit is [code]true[/code]). If the pixel is "
-"lower than or equal to the threshold, it will be considered as "
-"\"disabled\" (bit is [code]false[/code])."
+"lower than or equal to the threshold, it will be considered as \"disabled\" "
+"(bit is [code]false[/code])."
msgstr ""
"用於產生點陣圖的資料來源。\n"
"[b]黑白:[/b] HSV 值大於[member threshold]的像素將被視為「已啟用」(位元為"
@@ -95845,32 +91374,6 @@ msgstr ""
msgid "Imports comma-separated values"
msgstr "匯入 CSV"
-msgid ""
-"Comma-separated values are a plain text table storage format. The format's "
-"simplicity makes it easy to edit in any text editor or spreadsheet software. "
-"This makes it a common choice for game localization.\n"
-"[b]Example CSV file:[/b]\n"
-"[codeblock]\n"
-"keys,en,es,ja\n"
-"GREET,\"Hello, friend!\",\"Hola, amigo!\",こんにちは\n"
-"ASK,How are you?,Cómo está?,元気ですか\n"
-"BYE,Goodbye,Adiós,さようなら\n"
-"QUOTE,\"\"\"Hello\"\" said the man.\",\"\"\"Hola\"\" dijo el hombre.\",「こん"
-"にちは」男は言いました\n"
-"[/codeblock]"
-msgstr ""
-"逗號分隔值是一種純文字表格儲存格式。此格式的簡單性使其可以輕鬆地在任何文字編輯"
-"器或電子表格軟體中進行編輯。這使其成為遊戲本地化的常見選擇。\n"
-"[b]範例 CSV 檔案:[/b]\n"
-"[codeblock]\n"
-"keys,en,es,ja\n"
-"GREET,\"Hello, friend!\",\"Hola, amigo!\",こんにちは\n"
-"ASK,How are you?,Cómo está?,元気ですか\n"
-"BYE,Goodbye,Adiós,さようなら\n"
-"QUOTE,\"\"\"Hello\"\" said the man.\",\"\"\"Hola\"\" dijo el hombre.\",「こん"
-"にちは」男は言いました\n"
-"[/codeblock]"
-
msgid "Importing translations"
msgstr "匯入翻譯"
@@ -96299,27 +91802,6 @@ msgstr ""
"控制立方體貼圖紋理的內部佈局方式。使用高解析度立方體貼圖時,[b]2×3[/b] 和 "
"[b]3×2[/b]與[b]1×6[/b] 和[b]6×1[/b] 相比,較不容易超出硬體紋理大小限制。"
-msgid "Imports a MP3 audio file for playback."
-msgstr "匯入 MP3 音訊檔案播放。"
-
-msgid ""
-"MP3 is a lossy audio format, with worse audio quality compared to "
-"[ResourceImporterOggVorbis] at a given bitrate.\n"
-"In most cases, it's recommended to use Ogg Vorbis over MP3. However, if "
-"you're using a MP3 sound source with no higher quality source available, then "
-"it's recommended to use the MP3 file directly to avoid double lossy "
-"compression.\n"
-"MP3 requires more CPU to decode than [ResourceImporterWAV]. If you need to "
-"play a lot of simultaneous sounds, it's recommended to use WAV for those "
-"sounds instead, especially if targeting low-end devices."
-msgstr ""
-"MP3 是一種有損音訊格式,在給定位元速率下,與 [ResourceImporterOggVorbis] 相"
-"比,音訊品質較差。\n"
-"在大多數情況下,建議使用 Ogg Vorbis 而不是 MP3。但是,如果您使用的 MP3 音源沒"
-"有更高品質的音源,則建議直接使用 MP3 檔案以避免雙重有損壓縮。\n"
-"MP3 比 [ResourceImporterWAV] 需要更多的 CPU 來解碼。如果您需要同時播放大量聲"
-"音,建議對這些聲音使用 WAV,特別是針對低端裝置。"
-
msgid "Importing audio samples"
msgstr "匯入音訊樣本"
@@ -96448,24 +91930,6 @@ msgid "Imports an Ogg Vorbis audio file for playback."
msgstr "匯入 Ogg Vorbis 音訊檔案播放。"
msgid ""
-"Ogg Vorbis is a lossy audio format, with better audio quality compared to "
-"[ResourceImporterMP3] at a given bitrate.\n"
-"In most cases, it's recommended to use Ogg Vorbis over MP3. However, if "
-"you're using a MP3 sound source with no higher quality source available, then "
-"it's recommended to use the MP3 file directly to avoid double lossy "
-"compression.\n"
-"Ogg Vorbis requires more CPU to decode than [ResourceImporterWAV]. If you "
-"need to play a lot of simultaneous sounds, it's recommended to use WAV for "
-"those sounds instead, especially if targeting low-end devices."
-msgstr ""
-"Ogg Vorbis 是一種有損音訊格式,在給定位元率下與 [ResourceImporterMP3] 相比具有"
-"更好的音訊品質。\n"
-"在大多數情況下,建議使用 Ogg Vorbis 而不是 MP3。但是,如果您使用的 MP3 音源沒"
-"有更高品質的音源,則建議直接使用 MP3 檔案以避免雙重有損壓縮。\n"
-"Ogg Vorbis 比 [ResourceImporterWAV] 需要更多的 CPU 來解碼。如果您需要同時播放"
-"大量聲音,建議對這些聲音使用 WAV,特別是針對低端裝置。"
-
-msgid ""
"This method loads audio data from a PackedByteArray buffer into an "
"AudioStreamOggVorbis object."
msgstr ""
@@ -96961,18 +92425,6 @@ msgstr ""
"上也是如此。"
msgid ""
-"The compression mode to use on import.\n"
-"[b]Disabled:[/b] Imports audio data without any compression. This results in "
-"the highest possible quality.\n"
-"[b]RAM (Ima-ADPCM):[/b] Performs fast lossy compression on import. Low CPU "
-"cost, but quality is noticeably decreased compared to Ogg Vorbis or even MP3."
-msgstr ""
-"匯入時所使用的壓縮模式。\n"
-"[b]停用:[/b] 匯入不進行任何壓縮的音訊資料。這會帶來盡可能高的品質。\n"
-"[b]RAM (Ima-ADPCM):[/b] 在匯入時執行快速有損壓縮。 CPU 成本低,但與 Ogg "
-"Vorbis 甚至 MP3 相比,品質明顯下降。"
-
-msgid ""
"The begin loop point to use when [member edit/loop_mode] is [b]Forward[/b], "
"[b]Ping-Pong[/b] or [b]Backward[/b]. This is set in seconds after the "
"beginning of the audio file."
@@ -97150,47 +92602,6 @@ msgstr ""
"Resource.take_over_path] 來覆蓋快取資源。"
msgid ""
-"Loads a resource at the given [param path], caching the result for further "
-"access.\n"
-"The registered [ResourceFormatLoader]s are queried sequentially to find the "
-"first one which can handle the file's extension, and then attempt loading. If "
-"loading fails, the remaining ResourceFormatLoaders are also attempted.\n"
-"An optional [param type_hint] can be used to further specify the [Resource] "
-"type that should be handled by the [ResourceFormatLoader]. Anything that "
-"inherits from [Resource] can be used as a type hint, for example [Image].\n"
-"The [param cache_mode] property defines whether and how the cache should be "
-"used or updated when loading the resource. See [enum CacheMode] for details.\n"
-"Returns an empty resource if no [ResourceFormatLoader] could handle the "
-"file.\n"
-"GDScript has a simplified [method @GDScript.load] built-in method which can "
-"be used in most situations, leaving the use of [ResourceLoader] for more "
-"advanced scenarios.\n"
-"[b]Note:[/b] If [member ProjectSettings.editor/export/"
-"convert_text_resources_to_binary] is [code]true[/code], [method @GDScript."
-"load] will not be able to read converted files in an exported project. If you "
-"rely on run-time loading of files present within the PCK, set [member "
-"ProjectSettings.editor/export/convert_text_resources_to_binary] to "
-"[code]false[/code]."
-msgstr ""
-"在給定的 [param path] 中載入資源,並將結果快取以供進一步存取。\n"
-"按順序查詢註冊的 [ResourceFormatLoader],以找到可以處理檔副檔名的第一個 "
-"[ResourceFormatLoader],然後嘗試載入。如果載入失敗,則還會嘗試其餘的 "
-"[ResourceFormatLoader]。\n"
-"可選的 [param type_hint] 可用於進一步指定 [ResourceFormatLoader] 應處理的 "
-"[Resource] 型別。任何繼承自 [Resource] 的東西都可以用作型別提示,例如 "
-"[Image]。\n"
-"[param cache_mode] 屬性定義在載入資源時是否以及如何使用或更新快取。詳情見 "
-"[enum CacheMode]。\n"
-"如果沒有 [ResourceFormatLoader] 可以處理該檔,則返回空資源。\n"
-"GDScript 具有一個簡化的 [method @GDScript.load] 內建方法,可在大多數情況下使"
-"用,而 [ResourceLoader] 供更高級的情況使用。\n"
-"[b]注意:[/b]如果 [member ProjectSettings.editor/export/"
-"convert_text_resources_to_binary] 為 [code]true[/code],則 [method @GDScript."
-"load] 無法在匯出後的專案中讀取已轉換的檔。如果你需要在運作時載入存在於 PCK 中"
-"的檔案,請將 [member ProjectSettings.editor/export/"
-"convert_text_resources_to_binary] 設定為 [code]false[/code]。"
-
-msgid ""
"Returns the resource loaded by [method load_threaded_request].\n"
"If this is called before the loading thread is done (i.e. [method "
"load_threaded_get_status] is not [constant THREAD_LOAD_LOADED]), the calling "
@@ -97523,9 +92934,6 @@ msgid ""
"and basic formatting."
msgstr "用於顯示文字的控制項,文字中能夠包含不同的字形樣式、圖片以及基礎格式。"
-msgid "GUI Rich Text/BBcode Demo"
-msgstr "GUI 富文字/BBcode 演示"
-
msgid ""
"Adds an image's opening and closing tags to the tag stack, optionally "
"providing a [param width] and [param height] to resize the image, a [param "
@@ -97816,16 +93224,6 @@ msgid ""
"features."
msgstr "語言程式碼,用於文字塑形演算法,如果留空則使用目前區域設定。"
-msgid ""
-"Removes a paragraph of content from the label. Returns [code]true[/code] if "
-"the paragraph exists.\n"
-"The [param paragraph] argument is the index of the paragraph to remove, it "
-"can take values in the interval [code][0, get_paragraph_count() - 1][/code]."
-msgstr ""
-"從標籤中移除一段內容。如果該段落存在,則返回 [code]true[/code]。\n"
-"[param paragraph] 參數是要移除的段落的索引,它可以在 [code][0, "
-"get_paragraph_count() - 1][/code] 區間內取值。"
-
msgid "Scrolls the window's top line to match [param line]."
msgstr "滾動視窗,讓第一行與 [param line] 配對。"
@@ -98180,19 +93578,6 @@ msgid "Instancing Demo"
msgstr "產生實體演示"
msgid ""
-"Allows you to read and safely modify the simulation state for the object. Use "
-"this instead of [method Node._physics_process] if you need to directly change "
-"the body's [code]position[/code] or other physics properties. By default, it "
-"works in addition to the usual physics behavior, but [member "
-"custom_integrator] allows you to disable the default behavior and write "
-"custom force integration for a body."
-msgstr ""
-"允許你讀取並安全地修改物件的類比狀態。如果你需要直接改變物體的 "
-"[code]position[/code] 或其他物理屬性,請使用它代替 [method Node."
-"_physics_process]。預設情況下,它是在通常的物理行為之外工作的,但是 [member "
-"custom_integrator] 允許你禁用預設行為並為一個物體編寫自訂的合力。"
-
-msgid ""
"Applies a rotational force without affecting position. A force is time "
"dependent and meant to be applied every physics update.\n"
"[b]Note:[/b] [member inertia] is required for this to work. To have [member "
@@ -98337,14 +93722,6 @@ msgstr ""
"少。可以使用光線投射和形狀投射方法。有關詳細資訊,請參閱 [enum CCDMode]。"
msgid ""
-"If [code]true[/code], internal force integration is disabled for this body. "
-"Aside from collision response, the body will only move as determined by the "
-"[method _integrate_forces] function."
-msgstr ""
-"如果為 [code]true[/code],則禁用該物體的內力積分。除了碰撞回應,物體只會按照 "
-"[method _integrate_forces] 函式確定的方式移動。"
-
-msgid ""
"If [code]true[/code], the body is frozen. Gravity and forces are not applied "
"anymore.\n"
"See [member freeze_mode] to set the body's behavior when frozen.\n"
@@ -100521,13 +95898,6 @@ msgstr ""
"數,即形狀可以在不觸發碰撞的情況下移動多遠。"
msgid ""
-"The fraction from the [ShapeCast2D]'s origin to its [member target_position] "
-"(between 0 and 1) of how far the shape must move to trigger a collision."
-msgstr ""
-"從 [ShapeCast2D] 的原點到其 [member target_position](介於 0 和 1 之間)的分"
-"數,即形狀必須移動多遠才能觸發碰撞。"
-
-msgid ""
"Returns the collided [Object] of one of the multiple collisions at [param "
"index], or [code]null[/code] if no object is intersecting the shape (i.e. "
"[method is_colliding] returns [code]false[/code])."
@@ -100660,13 +96030,6 @@ msgstr ""
"數,即形狀可以在不觸發碰撞的情況下移動多遠。"
msgid ""
-"The fraction from the [ShapeCast3D]'s origin to its [member target_position] "
-"(between 0 and 1) of how far the shape must move to trigger a collision."
-msgstr ""
-"從 [ShapeCast3D] 的原點到其 [member target_position](介於 0 和 1 之間)的分"
-"數,即形狀必須移動多遠才能觸發碰撞。"
-
-msgid ""
"Removes a collision exception so the shape does report collisions with the "
"specified [CollisionObject3D] node."
msgstr "移除碰撞例外,讓該形狀彙報與指定 [CollisionObject3D] 節點的碰撞。"
@@ -101000,14 +96363,6 @@ msgstr "返回骨架中骨骼的數量。"
msgid ""
"Returns the overall transform of the specified bone, with respect to the "
-"skeleton. Being relative to the skeleton frame, this is not the actual "
-"\"global\" transform of the bone."
-msgstr ""
-"返回指定骨骼的整體變換,相對於骨架。由於是相對於骨架的,這不是該骨骼的實際“全"
-"局”變換。"
-
-msgid ""
-"Returns the overall transform of the specified bone, with respect to the "
"skeleton, but without any global pose overrides. Being relative to the "
"skeleton frame, this is not the actual \"global\" transform of the bone."
msgstr ""
@@ -101032,9 +96387,6 @@ msgstr ""
"返回 [param bone_idx] 處的骨骼的父級骨骼索引。如果為 -1,則該骨骼沒有父級。\n"
"[b]注意:[/b]返回的父骨骼索引總是小於 [param bone_idx]。"
-msgid "Returns the pose transform of the specified bone."
-msgstr "返回指定骨骼的姿勢變換。"
-
msgid "Returns the rest transform for a bone [param bone_idx]."
msgstr "返回骨骼 [param bone_idx] 的放鬆變換。"
@@ -101064,32 +96416,6 @@ msgstr "返回位於 [param bone_idx] 的骨骼是否啟用了骨骼姿勢。"
msgid "Returns all bones in the skeleton to their rest poses."
msgstr "將骨架中的所有骨骼都恢復到放鬆姿勢。"
-msgid ""
-"Adds a collision exception to the physical bone.\n"
-"Works just like the [RigidBody3D] node."
-msgstr ""
-"向物理骨骼新增一個碰撞例外。\n"
-"就像 [RigidBody3D] 節點一樣工作。"
-
-msgid ""
-"Removes a collision exception to the physical bone.\n"
-"Works just like the [RigidBody3D] node."
-msgstr ""
-"移除物理骨骼的一個碰撞例外。\n"
-"就像 [RigidBody3D] 節點一樣工作。"
-
-msgid ""
-"Tells the [PhysicalBone3D] nodes in the Skeleton to start simulating and "
-"reacting to the physics world.\n"
-"Optionally, a list of bone names can be passed-in, allowing only the passed-"
-"in bones to be simulated."
-msgstr ""
-"讓 Skeleton 中的 [PhysicalBone3D] 節點開始模擬類比,對物理世界做出反應。\n"
-"可以傳入骨骼名稱列表,只對傳入的骨骼進行模擬模擬。"
-
-msgid "Tells the [PhysicalBone3D] nodes in the Skeleton to stop simulating."
-msgstr "讓 Skeleton 中的 [PhysicalBone3D] 節點停止模擬模擬。"
-
msgid "Binds the given Skin to the Skeleton."
msgstr "將給定的 Skin 綁定到 Skeleton。"
@@ -101195,18 +96521,6 @@ msgstr ""
"clear_bones_global_pose_override] 來移除所有骨骼上的現有覆蓋。"
msgid ""
-"Interpolation value for how much the IK results are applied to the current "
-"skeleton bone chain. A value of [code]1.0[/code] will overwrite all skeleton "
-"bone transforms completely while a value of [code]0.0[/code] will visually "
-"disable the SkeletonIK. A value at or below [code]0.01[/code] also calls "
-"[method Skeleton3D.clear_bones_global_pose_override]."
-msgstr ""
-"IK 效果被套用於目前骨架骨骼鏈的程度的插值。[code]1.0[/code] 的值將完全覆蓋所有"
-"骨架骨骼變換,而 [code]0.0[/code] 的值將在視覺上禁用 SkeletonIK。等於或低於 "
-"[code]0.01[/code] 的值也會呼叫 [method Skeleton3D."
-"clear_bones_global_pose_override]。"
-
-msgid ""
"Secondary target position (first is [member target] property or [member "
"target_node]) for the IK chain. Use magnet position (pole target) to control "
"the bending of the IK chain. Only works if the bone chain has more than 2 "
@@ -102531,18 +97845,6 @@ msgstr ""
msgid "A deformable 3D physics mesh."
msgstr "可形變的 3D 物理網格。"
-msgid ""
-"A deformable 3D physics mesh. Used to create elastic or deformable objects "
-"such as cloth, rubber, or other flexible materials.\n"
-"[b]Note:[/b] There are many known bugs in [SoftBody3D]. Therefore, it's not "
-"recommended to use them for things that can affect gameplay (such as "
-"trampolines)."
-msgstr ""
-"可形變的 3D 物理網格。用於建立彈性或可形變的物件,例如布料、橡膠或其他柔性材"
-"質。\n"
-"[b]注意:[/b][SoftBody3D] 中有許多已知的問題。因此,不建議用於可能影響遊戲玩法"
-"的東西上(例如蹦床)。"
-
msgid "SoftBody"
msgstr "SoftBody"
@@ -103971,30 +99273,6 @@ msgstr ""
"序列。"
msgid ""
-"Performs a case-sensitive comparison to another string. Returns [code]-1[/"
-"code] if less than, [code]1[/code] if greater than, or [code]0[/code] if "
-"equal. \"Less than\" and \"greater than\" are determined by the [url=https://"
-"en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] of "
-"each string, which roughly matches the alphabetical order.\n"
-"With different string lengths, returns [code]1[/code] if this string is "
-"longer than the [param to] string, or [code]-1[/code] if shorter. Note that "
-"the length of empty strings is [i]always[/i] [code]0[/code].\n"
-"To get a [bool] result from a string comparison, use the [code]==[/code] "
-"operator instead. See also [method nocasecmp_to], [method naturalcasecmp_to], "
-"and [method naturalnocasecmp_to]."
-msgstr ""
-"與另一個字串進行比較,區分大小寫。小於時返回 [code]-1[/code]、大於時返回 "
-"[code]1[/code]、等於時返回 [code]0[/code]。“小於”和“大於”比較的是字串中的 "
-"[url=https://zh.wikipedia.org/wiki/"
-"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 碼位[/url],大致與字母表順"
-"序一致。\n"
-"如果字串長度不同,這個字串比 [param to] 字串長時返回 [code]1[/code],短時返回 "
-"[code]-1[/code]。請注意空字串的長度[i]始終[/i]為 [code]0[/code]。\n"
-"如果想在比較字串時獲得 [bool] 返回值,請改用 [code]==[/code] 運算子。另見 "
-"[method nocasecmp_to]、[method naturalcasecmp_to] 和 [method "
-"naturalnocasecmp_to]。"
-
-msgid ""
"Returns a single Unicode character from the decimal [param char]. You may use "
"[url=https://unicodelookup.com/]unicodelookup.com[/url] or [url=https://www."
"unicode.org/charts/]unicode.org[/url] as points of reference.\n"
@@ -104142,67 +99420,6 @@ msgstr ""
"尾。"
msgid ""
-"Formats the string by replacing all occurrences of [param placeholder] with "
-"the elements of [param values].\n"
-"[param values] can be a [Dictionary] or an [Array]. Any underscores in [param "
-"placeholder] will be replaced with the corresponding keys in advance. Array "
-"elements use their index as keys.\n"
-"[codeblock]\n"
-"# Prints \"Waiting for Godot is a play by Samuel Beckett, and Godot Engine is "
-"named after it.\"\n"
-"var use_array_values = \"Waiting for {0} is a play by {1}, and {0} Engine is "
-"named after it.\"\n"
-"print(use_array_values.format([\"Godot\", \"Samuel Beckett\"]))\n"
-"\n"
-"# Prints \"User 42 is Godot.\"\n"
-"print(\"User {id} is {name}.\".format({\"id\": 42, \"name\": \"Godot\"}))\n"
-"[/codeblock]\n"
-"Some additional handling is performed when [param values] is an [Array]. If "
-"[param placeholder] does not contain an underscore, the elements of the "
-"[param values] array will be used to replace one occurrence of the "
-"placeholder in order; If an element of [param values] is another 2-element "
-"array, it'll be interpreted as a key-value pair.\n"
-"[codeblock]\n"
-"# Prints \"User 42 is Godot.\"\n"
-"print(\"User {} is {}.\".format([42, \"Godot\"], \"{}\"))\n"
-"print(\"User {id} is {name}.\".format([[\"id\", 42], [\"name\", "
-"\"Godot\"]]))\n"
-"[/codeblock]\n"
-"See also the [url=$DOCS_URL/tutorials/scripting/gdscript/"
-"gdscript_format_string.html]GDScript format string[/url] tutorial.\n"
-"[b]Note:[/b] In C#, it's recommended to [url=https://learn.microsoft.com/en-"
-"us/dotnet/csharp/language-reference/tokens/interpolated]interpolate strings "
-"with \"$\"[/url], instead."
-msgstr ""
-"通過將所有出現的 [param placeholder] 替換為 [param values] 的元素來格式化字元"
-"串。\n"
-"[param values] 可以是 [Dictionary] 或 [Array]。[param placeholder] 中的任何下"
-"劃線將被預先被替換為對應的鍵。陣列元素使用它們的索引作為鍵。\n"
-"[codeblock]\n"
-"# 輸出:Waiting for Godot 是 Samuel Beckett 的戲劇,Godot 引擎由此得名。\n"
-"var use_array_values = \"Waiting for {0} 是 {1} 的戲劇,{0} 引擎由此得名。\"\n"
-"print(use_array_values.format([\"Godot\", \"Samuel Beckett\"]))\n"
-"\n"
-"# 輸出:第 42 號使用者是 Godot。\n"
-"print(\"第 {id} 號使用者是 {name}。\".format({\"id\": 42, \"name\": "
-"\"Godot\"}))\n"
-"[/codeblock]\n"
-"當 [param values] 是 [Array] 時還會執行一些額外的處理。 如果 [param "
-"placeholder] 不包含底線,則 [param values] 陣列的元素將用於按順序替換出現的預"
-"留位置;如果 [param values] 的元素是另一個 2 元素陣列,則它將被解釋為鍵值"
-"對。\n"
-"[codeblock]\n"
-"# 輸出:第 42 號使用者是 Godot。\n"
-"print(\"第 {} 號使用者是 {}。\".format([42, \"Godot\"], \"{}\"))\n"
-"print(\"第 {id} 號使用者是 {name}。\".format([[\"id\", 42], [\"name\", "
-"\"Godot\"]]))\n"
-"[/codeblock]\n"
-"另請參閱 [url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_format_string."
-"html]GDScript 格式化字串[/url]教學。\n"
-"[b]注意:[/b]在 C# 中推薦改為[url=https://learn.microsoft.com/en-us/dotnet/"
-"csharp/language-reference/tokens/interpolated]使用“$”插入字串[/url]。"
-
-msgid ""
"If the string is a valid file path, returns the base directory name.\n"
"[codeblock]\n"
"var dir_path = \"/path/to/file.txt\".get_base_dir() # dir_path is \"/path/"
@@ -104715,97 +99932,6 @@ msgstr ""
"[String]。"
msgid ""
-"Performs a [b]case-sensitive[/b], [i]natural order[/i] comparison to another "
-"string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, "
-"or [code]0[/code] if equal. \"Less than\" or \"greater than\" are determined "
-"by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode "
-"code points[/url] of each string, which roughly matches the alphabetical "
-"order.\n"
-"When used for sorting, natural order comparison orders sequences of numbers "
-"by the combined value of each digit as is often expected, instead of the "
-"single digit's value. A sorted sequence of numbered strings will be [code]"
-"[\"1\", \"2\", \"3\", ...][/code], not [code][\"1\", \"10\", \"2\", "
-"\"3\", ...][/code].\n"
-"With different string lengths, returns [code]1[/code] if this string is "
-"longer than the [param to] string, or [code]-1[/code] if shorter. Note that "
-"the length of empty strings is [i]always[/i] [code]0[/code].\n"
-"To get a [bool] result from a string comparison, use the [code]==[/code] "
-"operator instead. See also [method naturalnocasecmp_to], [method "
-"nocasecmp_to], and [method casecmp_to]."
-msgstr ""
-"與另一個字串進行[b]不區分大小寫[/b]的[i]自然順序[/i]比較。小於時返回 "
-"[code]-1[/code]、大於時返回 [code]1[/code]、等於時返回 [code]0[/code]。“小"
-"於”和“大於”比較的是字串中的 [url=https://zh.wikipedia.org/wiki/"
-"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 碼位[/url],大致與字母表順"
-"序一致。內部實作時,會將小寫字元轉換為大寫後進行比較。\n"
-"使用自然順序進行排序時,會和常見預期一樣將連續的數位進行組合,而不是一個個數字"
-"進行比較。排序後的數列為 [code][\"1\", \"2\", \"3\", ...][/code] 而不是 [code]"
-"[\"1\", \"10\", \"2\", \"3\", ...][/code]。\n"
-"如果字串長度不同,這個字串比 [param to] 字串長時返回 [code]1[/code],短時返回 "
-"[code]-1[/code]。請注意空字串的長度[i]始終[/i]為 [code]0[/code]。\n"
-"如果想在比較字串時獲得 [bool] 返回值,請改用 [code]==[/code] 運算子。另見 "
-"[method naturalnocasecmp_to]、[method nocasecmp_to] 和 [method casecmp_to]。"
-
-msgid ""
-"Performs a [b]case-insensitive[/b], [i]natural order[/i] comparison to "
-"another string. Returns [code]-1[/code] if less than, [code]1[/code] if "
-"greater than, or [code]0[/code] if equal. \"Less than\" or \"greater than\" "
-"are determined by the [url=https://en.wikipedia.org/wiki/"
-"List_of_Unicode_characters]Unicode code points[/url] of each string, which "
-"roughly matches the alphabetical order. Internally, lowercase characters are "
-"converted to uppercase for the comparison.\n"
-"When used for sorting, natural order comparison orders sequences of numbers "
-"by the combined value of each digit as is often expected, instead of the "
-"single digit's value. A sorted sequence of numbered strings will be [code]"
-"[\"1\", \"2\", \"3\", ...][/code], not [code][\"1\", \"10\", \"2\", "
-"\"3\", ...][/code].\n"
-"With different string lengths, returns [code]1[/code] if this string is "
-"longer than the [param to] string, or [code]-1[/code] if shorter. Note that "
-"the length of empty strings is [i]always[/i] [code]0[/code].\n"
-"To get a [bool] result from a string comparison, use the [code]==[/code] "
-"operator instead. See also [method naturalcasecmp_to], [method nocasecmp_to], "
-"and [method casecmp_to]."
-msgstr ""
-"與另一個字串進行[b]不區分大小寫[/b]的[i]自然順序[/i]比較。小於時返回 "
-"[code]-1[/code]、大於時返回 [code]1[/code]、等於時返回 [code]0[/code]。“小"
-"於”和“大於”比較的是字串中的 [url=https://zh.wikipedia.org/wiki/"
-"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 碼位[/url],大致與字母表順"
-"序一致。內部實作時,會將小寫字元轉換為大寫後進行比較。\n"
-"使用自然順序進行排序時,會和常見預期一樣將連續的數位進行組合,而不是一個個數字"
-"進行比較。排序後的數列為 [code][\"1\", \"2\", \"3\", ...][/code] 而不是 [code]"
-"[\"1\", \"10\", \"2\", \"3\", ...][/code]。\n"
-"如果字串長度不同,這個字串比 [param to] 字串長時返回 [code]1[/code],短時返回 "
-"[code]-1[/code]。請注意空字串的長度[i]始終[/i]為 [code]0[/code]。\n"
-"如果想在比較字串時獲得 [bool] 返回值,請改用 [code]==[/code] 運算子。另見 "
-"[method naturalcasecmp_to]、[method nocasecmp_to] 和 [method casecmp_to]。"
-
-msgid ""
-"Performs a [b]case-insensitive[/b] comparison to another string. Returns "
-"[code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/"
-"code] if equal. \"Less than\" or \"greater than\" are determined by the "
-"[url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code "
-"points[/url] of each string, which roughly matches the alphabetical order. "
-"Internally, lowercase characters are converted to uppercase for the "
-"comparison.\n"
-"With different string lengths, returns [code]1[/code] if this string is "
-"longer than the [param to] string, or [code]-1[/code] if shorter. Note that "
-"the length of empty strings is [i]always[/i] [code]0[/code].\n"
-"To get a [bool] result from a string comparison, use the [code]==[/code] "
-"operator instead. See also [method casecmp_to], [method naturalcasecmp_to], "
-"and [method naturalnocasecmp_to]."
-msgstr ""
-"與另一個字串進行[b]不區分大小寫[/b]的比較。小於時返回 [code]-1[/code]、大於時"
-"返回 [code]1[/code]、等於時返回 [code]0[/code]。“小於”和“大於”比較的是字元串中"
-"的 [url=https://zh.wikipedia.org/wiki/"
-"Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8]Unicode 碼位[/url],大致與字母表順"
-"序一致。內部實作時,會將小寫字元轉換為大寫後進行比較。\n"
-"如果字串長度不同,這個字串比 [param to] 字串長時返回 [code]1[/code],短時返回 "
-"[code]-1[/code]。請注意空字串的長度[i]始終[/i]為 [code]0[/code]。\n"
-"如果想在比較字串時獲得 [bool] 返回值,請改用 [code]==[/code] 運算子。另見 "
-"[method casecmp_to]、[method naturalcasecmp_to] 和 [method "
-"naturalnocasecmp_to]。"
-
-msgid ""
"Converts a [float] to a string representation of a decimal number, with the "
"number of decimal places specified in [param decimals].\n"
"If [param decimals] is [code]-1[/code] as by default, the string "
@@ -104922,9 +100048,6 @@ msgstr ""
"將該字串中出現的所有 [param what] 都替換為給定的 [param forwhat],[b]大小寫不"
"敏感[/b]。"
-msgid "Returns the copy of this string in reverse order."
-msgstr "返回給定頂點的顏色。"
-
msgid ""
"Returns the index of the [b]last[/b] occurrence of [param what] in this "
"string, or [code]-1[/code] if there are none. The search's start can be "
@@ -105546,6 +100669,67 @@ msgstr ""
"[code]StringName(\"example\")[/code] 與 [code]&\"example\"[/code] 等價。"
msgid ""
+"Formats the string by replacing all occurrences of [param placeholder] with "
+"the elements of [param values].\n"
+"[param values] can be a [Dictionary] or an [Array]. Any underscores in [param "
+"placeholder] will be replaced with the corresponding keys in advance. Array "
+"elements use their index as keys.\n"
+"[codeblock]\n"
+"# Prints \"Waiting for Godot is a play by Samuel Beckett, and Godot Engine is "
+"named after it.\"\n"
+"var use_array_values = \"Waiting for {0} is a play by {1}, and {0} Engine is "
+"named after it.\"\n"
+"print(use_array_values.format([\"Godot\", \"Samuel Beckett\"]))\n"
+"\n"
+"# Prints \"User 42 is Godot.\"\n"
+"print(\"User {id} is {name}.\".format({\"id\": 42, \"name\": \"Godot\"}))\n"
+"[/codeblock]\n"
+"Some additional handling is performed when [param values] is an [Array]. If "
+"[param placeholder] does not contain an underscore, the elements of the "
+"[param values] array will be used to replace one occurrence of the "
+"placeholder in order; If an element of [param values] is another 2-element "
+"array, it'll be interpreted as a key-value pair.\n"
+"[codeblock]\n"
+"# Prints \"User 42 is Godot.\"\n"
+"print(\"User {} is {}.\".format([42, \"Godot\"], \"{}\"))\n"
+"print(\"User {id} is {name}.\".format([[\"id\", 42], [\"name\", "
+"\"Godot\"]]))\n"
+"[/codeblock]\n"
+"See also the [url=$DOCS_URL/tutorials/scripting/gdscript/"
+"gdscript_format_string.html]GDScript format string[/url] tutorial.\n"
+"[b]Note:[/b] In C#, it's recommended to [url=https://learn.microsoft.com/en-"
+"us/dotnet/csharp/language-reference/tokens/interpolated]interpolate strings "
+"with \"$\"[/url], instead."
+msgstr ""
+"通過將所有出現的 [param placeholder] 替換為 [param values] 的元素來格式化字元"
+"串。\n"
+"[param values] 可以是 [Dictionary] 或 [Array]。[param placeholder] 中的任何下"
+"劃線將被預先被替換為對應的鍵。陣列元素使用它們的索引作為鍵。\n"
+"[codeblock]\n"
+"# 輸出:Waiting for Godot 是 Samuel Beckett 的戲劇,Godot 引擎由此得名。\n"
+"var use_array_values = \"Waiting for {0} 是 {1} 的戲劇,{0} 引擎由此得名。\"\n"
+"print(use_array_values.format([\"Godot\", \"Samuel Beckett\"]))\n"
+"\n"
+"# 輸出:第 42 號使用者是 Godot。\n"
+"print(\"第 {id} 號使用者是 {name}。\".format({\"id\": 42, \"name\": "
+"\"Godot\"}))\n"
+"[/codeblock]\n"
+"當 [param values] 是 [Array] 時還會執行一些額外的處理。 如果 [param "
+"placeholder] 不包含底線,則 [param values] 陣列的元素將用於按順序替換出現的預"
+"留位置;如果 [param values] 的元素是另一個 2 元素陣列,則它將被解釋為鍵值"
+"對。\n"
+"[codeblock]\n"
+"# 輸出:第 42 號使用者是 Godot。\n"
+"print(\"第 {} 號使用者是 {}。\".format([42, \"Godot\"], \"{}\"))\n"
+"print(\"第 {id} 號使用者是 {name}。\".format([[\"id\", 42], [\"name\", "
+"\"Godot\"]]))\n"
+"[/codeblock]\n"
+"另請參閱 [url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_format_string."
+"html]GDScript 格式化字串[/url]教學。\n"
+"[b]注意:[/b]在 C# 中推薦改為[url=https://learn.microsoft.com/en-us/dotnet/"
+"csharp/language-reference/tokens/interpolated]使用“$”插入字串[/url]。"
+
+msgid ""
"Splits the string using a [param delimiter] and returns the substring at "
"index [param slice]. Returns an empty string if the [param slice] does not "
"exist.\n"
@@ -105925,42 +101109,6 @@ msgstr ""
msgid "A customizable [StyleBox] that doesn't use a texture."
msgstr "不使用紋理的自訂 [StyleBox]。"
-msgid ""
-"By configuring various properties of this style box, you can achieve many "
-"common looks without the need of a texture. This includes optionally rounded "
-"borders, antialiasing, shadows, and skew.\n"
-"Setting corner radius to high values is allowed. As soon as corners overlap, "
-"the stylebox will switch to a relative system.\n"
-"[b]Example:[/b]\n"
-"[codeblock]\n"
-"height = 30\n"
-"corner_radius_top_left = 50\n"
-"corner_radius_bottom_left = 100\n"
-"[/codeblock]\n"
-"The relative system now would take the 1:2 ratio of the two left corners to "
-"calculate the actual corner width. Both corners added will [b]never[/b] be "
-"more than the height. Result:\n"
-"[codeblock]\n"
-"corner_radius_top_left: 10\n"
-"corner_radius_bottom_left: 20\n"
-"[/codeblock]"
-msgstr ""
-"通過配置這個樣式盒的各種屬性,你可以不使用紋理實作許多常見外觀,包括可選的圓角"
-"邊框、抗鋸齒、陰影、偏斜等。\n"
-"允許將圓角半徑設定為較高的值。兩角重疊時,樣式盒將切換到相對系統。\n"
-"[b]範例:[/b]\n"
-"[codeblock]\n"
-"height = 30\n"
-"corner_radius_top_left = 50\n"
-"corner_radius_bottom_left = 100\n"
-"[/codeblock]\n"
-"相對系統現在將採用兩個左角的 1:2 比率來計算實際角寬度。新增的兩個角[b]永遠[/b]"
-"不會超過高度。結果:\n"
-"[codeblock]\n"
-"corner_radius_top_left: 10\n"
-"corner_radius_bottom_left: 20\n"
-"[/codeblock]"
-
msgid "Returns the specified [enum Side]'s border width."
msgstr "返回指定邊 [enum Side] 的邊框寬度。"
@@ -106380,18 +101528,12 @@ msgstr ""
msgid "Using Viewports"
msgstr "使用視口"
-msgid "3D in 2D Demo"
-msgstr "2D 中的 3D 演示"
-
msgid "Screen Capture Demo"
msgstr "螢幕捕捉演示"
msgid "Dynamic Split Screen Demo"
msgstr "動態分屏演示"
-msgid "3D Viewport Scaling Demo"
-msgstr "3D Viewport 縮放演示"
-
msgid ""
"The clear mode when the sub-viewport is used as a render target.\n"
"[b]Note:[/b] This property is intended for 2D usage."
@@ -106616,14 +101758,6 @@ msgstr ""
"[b]修訂說明:[/b][param flags] 的記錄可能值,它在 4.0 中發生了變化。可能是 "
"[enum Mesh.ArrayFormat] 的一些組合。"
-msgid ""
-"Commits the data to the same format used by [method ArrayMesh."
-"add_surface_from_arrays]. This way you can further process the mesh data "
-"using the [ArrayMesh] API."
-msgstr ""
-"將資料提交給[method ArrayMesh.add_surface_from_arrays]使用的相同格式。這樣你就"
-"可以使用[ArrayMesh]的API介面進一步處理網格資料。"
-
msgid "Creates a vertex array from an existing [Mesh]."
msgstr "從現有的網格 [Mesh] 建立一個頂點陣列。"
@@ -107669,27 +102803,6 @@ msgid "A multiline text editor."
msgstr "多行文字編輯器。"
msgid ""
-"A multiline text editor. It also has limited facilities for editing code, "
-"such as syntax highlighting support. For more advanced facilities for editing "
-"code, see [CodeEdit].\n"
-"[b]Note:[/b] Most viewport, caret and edit methods contain a "
-"[code]caret_index[/code] argument for [member caret_multiple] support. The "
-"argument should be one of the following: [code]-1[/code] for all carets, "
-"[code]0[/code] for the main caret, or greater than [code]0[/code] for "
-"secondary carets.\n"
-"[b]Note:[/b] When holding down [kbd]Alt[/kbd], the vertical scroll wheel will "
-"scroll 5 times as fast as it would normally do. This also works in the Godot "
-"script editor."
-msgstr ""
-"多行文字編輯器。它還有少量用於編輯程式碼的功能,例如語法高亮支援。更多針對編輯"
-"程式碼的高階功能見 [CodeEdit]。\n"
-"[b]注意:[/b]大多數視口、游標和編輯方法都包含 [code]caret_index[/code] 參數以"
-"支援 [member caret_multiple]。該參數應為以下之一:[code]-1[/code] 用於所有光"
-"標,[code]0[/code] 用於主游標,大於 [code]0[/code] 用於輔助游標。\n"
-"[b]注意:[/b]當按住 [kbd]Alt[/kbd] 時,垂直滾輪的滾動速度將是正常速度的 5 倍。"
-"這也適用於 Godot 腳本編輯器。"
-
-msgid ""
"Override this method to define what happens when the user presses the "
"backspace key."
msgstr "覆蓋此方法可以定義使用者按下倒退鍵時應該發生什麼。"
@@ -107731,13 +102844,6 @@ msgstr ""
"code]。"
msgid ""
-"Adds an additional caret above or below every caret. If [param below] is true "
-"the new caret will be added below and above otherwise."
-msgstr ""
-"在每個游標上方或下方新增一個額外的游標。如果 [param below] 為 true,則會在下方"
-"新增新游標,否則為上方。"
-
-msgid ""
"Register a new gutter to this [TextEdit]. Use [param at] to have a specific "
"gutter order. A value of [code]-1[/code] appends the gutter to the right."
msgstr ""
@@ -107751,13 +102857,6 @@ msgstr ""
"選中目前所選內容下一次出現的位置並新增文字游標。如果沒有活動的選中內容,則選中"
"目前游標所處的單詞。"
-msgid ""
-"Reposition the carets affected by the edit. This assumes edits are applied in "
-"edit order, see [method get_caret_index_edit_order]."
-msgstr ""
-"重新定位受編輯影響的文字游標。這個操作假定編輯是按照編輯順序套用的,見 "
-"[method get_caret_index_edit_order]。"
-
msgid "Adjust the viewport so the caret is visible."
msgstr "調整視口,讓游標可見。"
@@ -108084,18 +103183,12 @@ msgstr ""
msgid "Returns the original start column of the selection."
msgstr "返回選區的原始起始列。"
-msgid "Returns the selection begin line."
-msgstr "返回選擇開始行。"
-
msgid "Returns the original start line of the selection."
msgstr "返回選區的原始起始行。"
msgid "Returns the current selection mode."
msgstr "返回目前的選區模式。"
-msgid "Returns the selection end line."
-msgstr "返回選擇結束行。"
-
msgid "Returns the [TextEdit]'s' tab size."
msgstr "返回該 [TextEdit] 的定位字元大小。"
@@ -108141,11 +103234,6 @@ msgstr "在游標位置插入指定的文字。"
msgid "Returns [code]true[/code] if the caret is visible on the screen."
msgstr "如果游標在螢幕上可見,則返回 [code]true[/code]。"
-msgid ""
-"Returns [code]true[/code] if the user is dragging their mouse for scrolling "
-"or selecting."
-msgstr "如果使用者拖動滑鼠進行滾動或選擇,則返回 [code]true[/code]。"
-
msgid "Returns whether the gutter is clickable."
msgstr "返回該邊欄是否可點擊。"
@@ -108177,16 +103265,6 @@ msgid ""
msgstr ""
"合併從 [param from_line] 到 [param to_line] 的邊欄。只會複製可覆蓋的邊欄。"
-msgid ""
-"Merges any overlapping carets. Will favor the newest caret, or the caret with "
-"a selection.\n"
-"[b]Note:[/b] This is not called when a caret changes position but after "
-"certain actions, so it is possible to get into a state where carets overlap."
-msgstr ""
-"合併重疊的文字游標。會保留最新的游標,或者存在選中內容的游標。\n"
-"[b]注意:[/b]游標改變位置後不會進行呼叫,而是在某些動作之後呼叫,所以進入游標"
-"重疊的狀態是可能的。"
-
msgid "Paste at the current location. Can be overridden with [method _paste]."
msgstr "貼上到目前位置。可以用 [method _paste] 覆蓋。"
@@ -108210,14 +103288,6 @@ msgid "Removes all additional carets."
msgstr "移除所有額外的游標。"
msgid ""
-"Removes text between the given positions.\n"
-"[b]Note:[/b] This does not adjust the caret or selection, which as a result "
-"it can end up in an invalid position."
-msgstr ""
-"移除給定位置之間的文字。\n"
-"[b]注意:[/b]文字游標和選區不會進行調整,因此可能最終處於無效位置。"
-
-msgid ""
"Perform a search inside the text. Search flags can be specified in the [enum "
"SearchFlags] enum.\n"
"In the returned vector, [code]x[/code] is the column, [code]y[/code] is the "
@@ -108266,13 +103336,6 @@ msgstr ""
"[/codeblocks]"
msgid ""
-"Perform selection, from line/column to line/column.\n"
-"If [member selecting_enabled] is [code]false[/code], no selection will occur."
-msgstr ""
-"執行選擇,從行/列到行/列。\n"
-"如果 [member selecting_enabled] 為 [code]false[/code],則不會發生選擇。"
-
-msgid ""
"Select all the text.\n"
"If [member selecting_enabled] is [code]false[/code], no selection will occur."
msgstr ""
@@ -108296,23 +103359,6 @@ msgstr ""
"merge_overlapping_carets]。"
msgid ""
-"Moves the caret to the specified [param line] index.\n"
-"If [param adjust_viewport] is [code]true[/code], the viewport will center at "
-"the caret position after the move occurs.\n"
-"If [param can_be_hidden] is [code]true[/code], the specified [param line] can "
-"be hidden.\n"
-"[b]Note:[/b] If supporting multiple carets this will not check for any "
-"overlap. See [method merge_overlapping_carets]."
-msgstr ""
-"將游標移動到指定的 [param line] 索引。\n"
-"如果 [param adjust_viewport] 為 [code]true[/code],則視口將在移動發生後以游標"
-"位置為中心。\n"
-"如果 [param can_be_hidden] 為 [code]true[/code],則可以隱藏指定的 [param "
-"line]。\n"
-"[b]注意:[/b]如果支援多個游標,則不會檢查任何重疊。見 [method "
-"merge_overlapping_carets]。"
-
-msgid ""
"Sets the gutter as clickable. This will change the mouse cursor to a pointing "
"hand when hovering over the gutter."
msgstr "將邊欄設定為可點擊。當滑鼠在邊欄上懸停時,會將滑鼠游標變為指點的手形。"
@@ -108329,9 +103375,6 @@ msgstr "設定該邊欄為可覆寫。見 [method merge_gutters]。"
msgid "Set the width of the gutter."
msgstr "設定該邊欄的寬度。"
-msgid "Sets the text for a specific line."
-msgstr "設定特定行的文字。"
-
msgid ""
"Positions the [param wrap_index] of [param line] at the center of the "
"viewport."
@@ -108410,9 +103453,6 @@ msgstr ""
"text_edit_idle_detect_sec] 或者在 [method start_action] 和 [method "
"end_action] 之外呼叫可撤銷的操作都會導致動作的終止。"
-msgid "Swaps the two lines."
-msgstr "交換兩行。"
-
msgid "Tag the current version as saved."
msgstr "將目前版本標記為已保存。"
@@ -108515,9 +103555,6 @@ msgstr "[TextEdit] 的字串值。"
msgid "Sets the line wrapping mode to use."
msgstr "設定要使用的換行模式。"
-msgid "Emitted when the caret changes position."
-msgstr "游標改變位置時發出。"
-
msgid "Emitted when a gutter is added."
msgstr "新增邊欄時發出。"
@@ -108994,35 +104031,10 @@ msgstr ""
"新建空的字形快取條目資源。要釋放生成的資源,請使用 [method free_rid] 方法。"
msgid ""
-"Creates new buffer for complex text layout, with the given [param direction] "
-"and [param orientation]. To free the resulting buffer, use [method free_rid] "
-"method.\n"
-"[b]Note:[/b] Direction is ignored if server does not support [constant "
-"FEATURE_BIDI_LAYOUT] feature (supported by [TextServerAdvanced]).\n"
-"[b]Note:[/b] Orientation is ignored if server does not support [constant "
-"FEATURE_VERTICAL_LAYOUT] feature (supported by [TextServerAdvanced])."
-msgstr ""
-"使用給定的方向 [param direction] 和朝向 [param orientation] 新建緩衝區,用於複"
-"雜排版。要釋放生成的緩衝區,請使用 [method free_rid]方法。\n"
-"[b]注意:[/b]如果伺服器不支援 [constant FEATURE_BIDI_LAYOUT] 功能,則會忽略方"
-"向([TextServerAdvanced] 支援)。\n"
-"[b]注意:[/b]如果伺服器不支援 [constant FEATURE_VERTICAL_LAYOUT] 功能,則會忽"
-"略朝向([TextServerAdvanced] 支援)。"
-
-msgid ""
"Draws box displaying character hexadecimal code. Used for replacing missing "
"characters."
msgstr "繪製顯示字元十六進位碼的框。用於替換缺失的字元。"
-msgid ""
-"Removes all rendered glyphs information from the cache entry.\n"
-"[b]Note:[/b] This function will not remove textures associated with the "
-"glyphs, use [method font_remove_texture] to remove them manually."
-msgstr ""
-"從快取條目中移除所有的算繪字形資訊。\n"
-"[b]注意:[/b]該函式不會移除與字形關聯的紋理,請使用 [method "
-"font_remove_texture] 手動移除。"
-
msgid "Removes all font sizes from the cache entry."
msgstr "從快取條目中移除所有的字形大小。"
@@ -109335,16 +104347,6 @@ msgid "Sets font cache texture image data."
msgstr "設定字形的快取紋理圖像資料。"
msgid ""
-"Sets 2D transform, applied to the font outlines, can be used for slanting, "
-"flipping and rotating glyphs.\n"
-"For example, to simulate italic typeface by slanting, apply the following "
-"transform [code]Transform2D(1.0, slant, 0.0, 1.0, 0.0, 0.0)[/code]."
-msgstr ""
-"設定套用於字形輪廓的 2D 變換,可用於傾斜、翻轉和旋轉字形。\n"
-"例如,要通過傾斜來類比斜體字形,請套用以下變換 [code]Transform2D(1.0, slant, "
-"0.0, 1.0, 0.0, 0.0)[/code]。"
-
-msgid ""
"Sets variation coordinates for the specified font cache entry. See [method "
"font_supported_variation_list] for more info."
msgstr ""
@@ -109466,10 +104468,6 @@ msgstr ""
"何作用。"
msgid ""
-"Converts readable feature, variation, script or language name to OpenType tag."
-msgstr "將功能、變體、文字、語言的可讀名稱轉換為 OpenType 標記。"
-
-msgid ""
"Converts [param number] from the numeral systems used in [param language] to "
"Western Arabic (0..9)."
msgstr ""
@@ -109504,11 +104502,6 @@ msgstr ""
msgid "Returns text span metadata."
msgstr "返回文字區間的中繼資料。"
-msgid ""
-"Changes text span font, font size and OpenType features, without changing the "
-"text."
-msgstr "在不更改文字的情況下,更改文字區間的字形、字形大小和 OpenType 功能。"
-
msgid "Adds text span and font to draw it to the text buffer."
msgstr "新增文字區間和字形,將其繪製到文字緩衝中。"
@@ -109823,10 +104816,6 @@ msgstr ""
"從字串中剝離變音符號。\n"
"[b]注意:[/b]得到的字串可能比原來的更長,也可能更短。"
-msgid ""
-"Converts OpenType tag to readable feature, variation, script or language name."
-msgstr "將 OpenType 標籤轉換為可讀的功能、變體、文字或語言的名稱。"
-
msgid "Font glyphs are rasterized as 1-bit bitmaps."
msgstr "字形字形柵格化為 1 位的點陣圖。"
@@ -111987,10 +106976,6 @@ msgid ""
msgstr "返回自訂資料層的自訂資料值,自訂資料層用索引 [param layer_id] 指定。"
msgid ""
-"Returns the tile's terrain bit for the given [param peering_bit] direction."
-msgstr "返回該圖塊給定 [param peering_bit] 方向的地形位。"
-
-msgid ""
"Returns whether one-way collisions are enabled for the polygon at index "
"[param polygon_index] for TileSet physics layer with index [param layer_id]."
msgstr ""
@@ -112056,9 +107041,6 @@ msgid ""
"Sets the occluder for the TileSet occlusion layer with index [param layer_id]."
msgstr "設定索引為 [param layer_id] 的 TileSet 遮擋層的遮擋器。"
-msgid "Sets the tile's terrain bit for the given [param peering_bit] direction."
-msgstr "設定該圖塊給定 [param peering_bit] 方向的地形位。"
-
msgid ""
"If [code]true[/code], the tile will have its texture flipped horizontally."
msgstr "如果為 [code]true[/code],則該圖塊的紋理會被水平翻轉。"
@@ -112177,74 +107159,6 @@ msgid "Clears cells that do not exist in the tileset."
msgstr "清除圖塊集中不存在的儲存格。"
msgid ""
-"Returns the tile alternative ID of the cell on layer [param layer] at [param "
-"coords]. If [param use_proxies] is [code]false[/code], ignores the "
-"[TileSet]'s tile proxies, returning the raw alternative identifier. See "
-"[method TileSet.map_tile_proxy].\n"
-"If [param layer] is negative, the layers are accessed from the last one."
-msgstr ""
-"返回 [param layer] 層中位於座標 [param coords] 儲存格的圖塊備選 ID。如果 "
-"[param use_proxies] 為 [code]false[/code],則會忽略該 [TileSet] 的圖塊代理,返"
-"回原始的備選識別字。見 [method TileSet.map_tile_proxy]。"
-
-msgid ""
-"Returns the tile atlas coordinates ID of the cell on layer [param layer] at "
-"coordinates [param coords]. If [param use_proxies] is [code]false[/code], "
-"ignores the [TileSet]'s tile proxies, returning the raw alternative "
-"identifier. See [method TileSet.map_tile_proxy].\n"
-"If [param layer] is negative, the layers are accessed from the last one."
-msgstr ""
-"返回 [param layer] 層中位於座標 [param coords] 儲存格的圖塊合集座標 ID。如果 "
-"[param use_proxies] 為 [code]false[/code],則會忽略該 [TileSet] 的圖塊代理,返"
-"回原始的備選識別字。見 [method TileSet.map_tile_proxy]。"
-
-msgid ""
-"Returns the tile source ID of the cell on layer [param layer] at coordinates "
-"[param coords]. Returns [code]-1[/code] if the cell does not exist.\n"
-"If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile "
-"proxies, returning the raw alternative identifier. See [method TileSet."
-"map_tile_proxy].\n"
-"If [param layer] is negative, the layers are accessed from the last one."
-msgstr ""
-"返回 [param layer] 層中位於座標 [param coords] 儲存格的圖塊源 ID。如果該單元格"
-"不存在,則返回 [code]-1[/code]。\n"
-"如果 [param use_proxies] 為 [code]false[/code],則會忽略該 [TileSet] 的圖塊代"
-"理,返回原始的備選識別字。見 [method TileSet.map_tile_proxy]。"
-
-msgid ""
-"Returns the [TileData] object associated with the given cell, or [code]null[/"
-"code] if the cell does not exist or is not a [TileSetAtlasSource].\n"
-"If [param layer] is negative, the layers are accessed from the last one.\n"
-"If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile "
-"proxies, returning the raw alternative identifier. See [method TileSet."
-"map_tile_proxy].\n"
-"[codeblock]\n"
-"func get_clicked_tile_power():\n"
-" var clicked_cell = tile_map.local_to_map(tile_map."
-"get_local_mouse_position())\n"
-" var data = tile_map.get_cell_tile_data(0, clicked_cell)\n"
-" if data:\n"
-" return data.get_custom_data(\"power\")\n"
-" else:\n"
-" return 0\n"
-"[/codeblock]"
-msgstr ""
-"返回與給定儲存格關聯的 [TileData] 對象,如果儲存格不存在或者不是 "
-"[TileSetAtlasSource] 則返回 [code]null[/code]。\n"
-"如果 [param use_proxies] 為 [code]false[/code],則會忽略 [TileSet] 的圖塊代"
-"理,返回原始的備選識別字。見 [method TileSet.map_tile_proxy]。\n"
-"[codeblock]\n"
-"func get_clicked_tile_power():\n"
-" var clicked_cell = tile_map.local_to_map(tile_map."
-"get_local_mouse_position())\n"
-" var data = tile_map.get_cell_tile_data(0, clicked_cell)\n"
-" if data:\n"
-" return data.get_custom_data(\"power\")\n"
-" else:\n"
-" return 0\n"
-"[/codeblock]"
-
-msgid ""
"Returns the coordinates of the tile for given physics body RID. Such RID can "
"be retrieved from [method KinematicCollision2D.get_collider_rid], when "
"colliding with a tile."
@@ -113548,27 +108462,6 @@ msgid "Represents the size of the [enum TileAnimationMode] enum."
msgstr "代表 [enum CollisionMode] 列舉的大小。"
msgid ""
-"Represents cell's horizontal flip flag. Should be used directly with "
-"[TileMap] to flip placed tiles by altering their alternative IDs.\n"
-"[codeblock]\n"
-"var alternate_id = $TileMap.get_cell_alternative_tile(0, Vector2i(2, 2))\n"
-"if not alternate_id & TileSetAtlasSource.TRANSFORM_FLIP_H:\n"
-" # If tile is not already flipped, flip it.\n"
-" $TileMap.set_cell(0, Vector2i(2, 2), source_id, atlas_coords, "
-"alternate_id | TileSetAtlasSource.TRANSFORM_FLIP_H)\n"
-"[/codeblock]"
-msgstr ""
-"表示儲存格的水平翻轉旗標。應直接與 [TileMap] 一起使用,透過變更其替代 ID 來翻"
-"轉放置的圖塊。\n"
-"[codeblock]\n"
-"var alternate_id = $TileMap.get_cell_alternative_tile(0, Vector2i(2, 2))\n"
-"if not alternate_id & TileSetAtlasSource.TRANSFORM_FLIP_H:\n"
-" # If tile is not already flipped, flip it.\n"
-" $TileMap.set_cell(0, Vector2i(2, 2), source_id, atlas_coords, "
-"alternate_id | TileSetAtlasSource.TRANSFORM_FLIP_H)\n"
-"[/codeblock]"
-
-msgid ""
"Represents cell's vertical flip flag. See [constant TRANSFORM_FLIP_H] for "
"usage."
msgstr "表示儲存格的垂直翻轉旗標。用法請參閱 [constant TRANSFORM_FLIP_H]。"
@@ -113721,43 +108614,6 @@ msgid "A singleton for working with time data."
msgstr "用於處理時間資料的單例。"
msgid ""
-"The Time singleton allows converting time between various formats and also "
-"getting time information from the system.\n"
-"This class conforms with as many of the ISO 8601 standards as possible. All "
-"dates follow the Proleptic Gregorian calendar. As such, the day before "
-"[code]1582-10-15[/code] is [code]1582-10-14[/code], not [code]1582-10-04[/"
-"code]. The year before 1 AD (aka 1 BC) is number [code]0[/code], with the "
-"year before that (2 BC) being [code]-1[/code], etc.\n"
-"Conversion methods assume \"the same timezone\", and do not handle timezone "
-"conversions or DST automatically. Leap seconds are also not handled, they "
-"must be done manually if desired. Suffixes such as \"Z\" are not handled, you "
-"need to strip them away manually.\n"
-"When getting time information from the system, the time can either be in the "
-"local timezone or UTC depending on the [code]utc[/code] parameter. However, "
-"the [method get_unix_time_from_system] method always returns the time in "
-"UTC.\n"
-"[b]Important:[/b] The [code]_from_system[/code] methods use the system clock "
-"that the user can manually set. [b]Never use[/b] this method for precise time "
-"calculation since its results are subject to automatic adjustments by the "
-"user or the operating system. [b]Always use[/b] [method get_ticks_usec] or "
-"[method get_ticks_msec] for precise time calculation instead, since they are "
-"guaranteed to be monotonic (i.e. never decrease)."
-msgstr ""
-"Time 單例可以轉換各種不同格式的時間,也可以從系統獲取時間資訊。\n"
-"這個類盡可能多地符合了 ISO 8601 標準。所有日期都遵循“外推格裡曆”。因此 "
-"[code]1582-10-15[/code] 的前一天是 [code]1582-10-14[/code],而不是 "
-"[code]1582-10-04[/code]。西元 1 年的前一年(即西元前 1 年)是數字 [code]0[/"
-"code],再往前的一年(西元前 2 年)是 [code]-1[/code],以此類推。\n"
-"轉換方法假設“時區相同”,不會自動處理時區或 DST(夏令時)的轉換。不會對閏秒進行"
-"處理,如果需要必須手動處理。“Z”等後綴也沒有處理,你需要進行手動剝除。\n"
-"從系統獲取時間資訊時,時間可能是本地時間或 UTC 時間,取決於 [code]utc[/code] "
-"參數。不過 [method get_unix_time_from_system] 方法返回的始終是 UTC 時間。\n"
-"[b]重要:[/b][code]_from_system[/code] 系列方法使用的是系統始終,使用者可以自"
-"行設定。[b]千萬不要[/b]使用該方法進行精確的時間計算,因為計算結果可能受到使用"
-"者或作業系統的自動調整的影響。精確時間的計算[b]請始終使用[/b] [method "
-"get_ticks_usec] 或 [method get_ticks_msec],可以保證單調性(即不會變小)。"
-
-msgid ""
"Returns the current date as a dictionary of keys: [code]year[/code], "
"[code]month[/code], [code]day[/code], and [code]weekday[/code].\n"
"The returned values are in the system's local time when [param utc] is "
@@ -113952,18 +108808,6 @@ msgstr ""
"記的時區與給定的日期時間字串相同。\n"
"[b]注意:[/b]時間字串中的小數會被靜默忽略。"
-msgid ""
-"Returns the current Unix timestamp in seconds based on the system time in "
-"UTC. This method is implemented by the operating system and always returns "
-"the time in UTC.\n"
-"[b]Note:[/b] Unlike other methods that use integer timestamps, this method "
-"returns the timestamp as a [float] for sub-second precision."
-msgstr ""
-"返回目前的 Unix 時間戳記,以秒為單位,基於 UTC 系統時間。本方法由作業系統實"
-"作,返回的時間總是 UTC 的。\n"
-"[b]注意:[/b]與其他使用整數時間戳記的方法不同,這個方法返回的是 [float] 型別的"
-"時間戳記,可以表示比秒更高的精度。"
-
msgid "The month of January, represented numerically as [code]01[/code]."
msgstr "一月份,使用數字 [code]01[/code] 表示。"
@@ -115239,18 +110083,6 @@ msgstr ""
"專案儲存格所允許的最大圖示寬度。這是在圖示預設大小的基礎上的限制,在 [method "
"TreeItem.set_icon_max_width] 所設定的值之前生效。高度會根據圖示的長寬比調整。"
-msgid "The inner bottom margin of an item."
-msgstr "專案文字輪廓的色調。"
-
-msgid "The inner left margin of an item."
-msgstr "專案文字輪廓的色調。"
-
-msgid "The inner right margin of an item."
-msgstr "圓環的內半徑。"
-
-msgid "The inner top margin of an item."
-msgstr "設定表格的儲存格內邊距。"
-
msgid ""
"The horizontal margin at the start of an item. This is used when folding is "
"enabled for the item."
@@ -117245,30 +112077,6 @@ msgid ""
"the action is committed."
msgstr "註冊 [param property],會在提交動作時將其值更改為 [param value]。"
-msgid ""
-"Register a reference for \"do\" that will be erased if the \"do\" history is "
-"lost. This is useful mostly for new nodes created for the \"do\" call. Do not "
-"use for resources.\n"
-"[codeblock]\n"
-"var node = Node2D.new()\n"
-"undo_redo.create_action(\"Add node\")\n"
-"undo_redo.add_do_method(add_child.bind(node))\n"
-"undo_redo.add_do_reference(node)\n"
-"undo_redo.add_undo_method(remove_child.bind(node))\n"
-"undo_redo.commit_action()\n"
-"[/codeblock]"
-msgstr ""
-"為“do”(執行)註冊引用,丟棄該“do”歷史時會擦除該引用。主要可用於“do”呼叫新建的"
-"節點。請勿用於資源。\n"
-"[codeblock]\n"
-"var node = Node2D.new()\n"
-"undo_redo.create_action(\"新增節點\")\n"
-"undo_redo.add_do_method(add_child.bind(node))\n"
-"undo_redo.add_do_reference(node)\n"
-"undo_redo.add_undo_method(remove_child.bind(node))\n"
-"undo_redo.commit_action()\n"
-"[/codeblock]"
-
msgid "Register a [Callable] that will be called when the action is undone."
msgstr "註冊 [Callable],會在撤銷動作時呼叫。"
@@ -117278,30 +112086,6 @@ msgid ""
msgstr "註冊 [param property],會在撤銷動作時將其值更改為 [param value]。"
msgid ""
-"Register a reference for \"undo\" that will be erased if the \"undo\" history "
-"is lost. This is useful mostly for nodes removed with the \"do\" call (not "
-"the \"undo\" call!).\n"
-"[codeblock]\n"
-"var node = $Node2D\n"
-"undo_redo.create_action(\"Remove node\")\n"
-"undo_redo.add_do_method(remove_child.bind(node))\n"
-"undo_redo.add_undo_method(add_child.bind(node))\n"
-"undo_redo.add_undo_reference(node)\n"
-"undo_redo.commit_action()\n"
-"[/codeblock]"
-msgstr ""
-"為“undo”(撤銷)註冊引用,丟棄該“undo”歷史時會擦除該引用。主要可用於“do”呼叫移"
-"除的節點(不是“undo”呼叫)。\n"
-"[codeblock]\n"
-"var node = $Node2D\n"
-"undo_redo.create_action(\"移除節點\")\n"
-"undo_redo.add_do_method(remove_child.bind(node))\n"
-"undo_redo.add_undo_method(add_child.bind(node))\n"
-"undo_redo.add_undo_reference(node)\n"
-"undo_redo.commit_action()\n"
-"[/codeblock]"
-
-msgid ""
"Clear the undo/redo history and associated references.\n"
"Passing [code]false[/code] to [param increase_version] will prevent the "
"version number from increasing when the history is cleared."
@@ -117400,17 +112184,6 @@ msgid "Makes \"do\"/\"undo\" operations stay in separate actions."
msgstr "使“do”/“undo”操作保持在單獨的動作中。"
msgid ""
-"Makes so that the action's \"undo\" operations are from the first action "
-"created and the \"do\" operations are from the last subsequent action with "
-"the same name."
-msgstr ""
-"使得動作的“撤銷”操作來自建立的第一個動作,“執行”操作來自最後一個具有相同名稱的"
-"後續動作。"
-
-msgid "Makes subsequent actions with the same name be merged into one."
-msgstr "使具有相同名稱的後續動作合併為一個。"
-
-msgid ""
"Universal Plug and Play (UPnP) functions for network device discovery, "
"querying and port forwarding."
msgstr "通用隨插即用(UPnP)功能,用於網路裝置的發現、查詢及埠對應。"
@@ -118038,10 +112811,6 @@ msgstr ""
"control_1]、[param control_2]、終點 [param end] 定義。"
msgid ""
-"Returns a new vector \"bounced off\" from a plane defined by the given normal."
-msgstr "返回從平面上“反彈”的向量,該平面由給定的法線定義。"
-
-msgid ""
"Returns a new vector with all components rounded up (towards positive "
"infinity)."
msgstr "返回一個新向量,所有的分量都是向上四捨五入(正無窮大方向)。"
@@ -118055,22 +112824,6 @@ msgstr ""
"和 [param max] 之間。"
msgid ""
-"Returns the 2D analog of the cross product for this vector and [param with].\n"
-"This is the signed area of the parallelogram formed by the two vectors. If "
-"the second vector is clockwise from the first vector, then the cross product "
-"is the positive area. If counter-clockwise, the cross product is the negative "
-"area.\n"
-"[b]Note:[/b] Cross product is not defined in 2D mathematically. This method "
-"embeds the 2D vectors in the XY plane of 3D space and uses their cross "
-"product's Z component as the analog."
-msgstr ""
-"返回該向量和 [param with] 的 2D 類比外積。\n"
-"這是由兩個向量所形成的平行四邊形的有符號面積。如果第二個向量是從第一個向量的順"
-"時針方向出發的,則外積為正面積。如果是逆時針方向,則外積為負面積。\n"
-"[b]注意:[/b]數學中沒有定義二維空間的叉乘。此方法是將 2D 向量嵌入到 3D 空間的 "
-"XY 平面中,並使用它們的外積的 Z 分量作為類比。"
-
-msgid ""
"Performs a cubic interpolation between this vector and [param b] using [param "
"pre_a] and [param post_b] as handles, and returns the result at position "
"[param weight]. [param weight] is on the range of 0.0 to 1.0, representing "
@@ -118249,11 +113002,6 @@ msgstr ""
"算後組成的向量。"
msgid ""
-"Returns the result of reflecting the vector from a line defined by the given "
-"direction vector [param n]."
-msgstr "返回經過直線反射後的向量,該直線由給定的方向向量 [param n] 定義。"
-
-msgid ""
"Returns the result of rotating this vector by [param angle] (in radians). See "
"also [method @GlobalScope.deg_to_rad]."
msgstr ""
@@ -118782,13 +113530,6 @@ msgid "Returns the unsigned minimum angle to the given vector, in radians."
msgstr "返回與給定向量的無符號最小角度,單位為弧度。"
msgid ""
-"Returns the vector \"bounced off\" from a plane defined by the given normal."
-msgstr "返回從由給定法線定義的平面上“反彈”的向量。"
-
-msgid "Returns the cross product of this vector and [param with]."
-msgstr "返回該向量與 [param with] 的外積。"
-
-msgid ""
"Returns the inverse of the vector. This is the same as [code]Vector3(1.0 / v."
"x, 1.0 / v.y, 1.0 / v.z)[/code]."
msgstr ""
@@ -118836,11 +113577,6 @@ msgid "Returns the outer product with [param with]."
msgstr "返回與 [param with] 的外積。"
msgid ""
-"Returns the result of reflecting the vector from a plane defined by the given "
-"normal [param n]."
-msgstr "返回經過平面反射後的向量,該平面由給定的法線 [param n] 定義。"
-
-msgid ""
"Returns the result of rotating this vector around a given axis by [param "
"angle] (in radians). The axis must be a normalized vector. See also [method "
"@GlobalScope.deg_to_rad]."
@@ -120750,34 +115486,6 @@ msgstr ""
"帶,因為抖動圖案會使無失真壓縮的螢幕截圖變大。"
msgid ""
-"If [code]true[/code], 2D rendering will use an high dynamic range (HDR) "
-"format framebuffer matching the bit depth of the 3D framebuffer. When using "
-"the Forward+ renderer this will be a [code]RGBA16[/code] framebuffer, while "
-"when using the Mobile renderer it will be a [code]RGB10_A2[/code] "
-"framebuffer. Additionally, 2D rendering will take place in linear color space "
-"and will be converted to sRGB space immediately before blitting to the screen "
-"(if the Viewport is attached to the screen). Practically speaking, this means "
-"that the end result of the Viewport will not be clamped into the [code]0-1[/"
-"code] range and can be used in 3D rendering without color space adjustments. "
-"This allows 2D rendering to take advantage of effects requiring high dynamic "
-"range (e.g. 2D glow) as well as substantially improves the appearance of "
-"effects requiring highly detailed gradients.\n"
-"[b]Note:[/b] This setting will have no effect when using the GL Compatibility "
-"renderer as the GL Compatibility renderer always renders in low dynamic range "
-"for performance reasons."
-msgstr ""
-"如果[code]true[/code],2D 算繪將使用與3D 影格緩衝區的位元深度相符的高動態範圍"
-"(HDR) 格式影格緩衝區。使用Forward+ 算繪器時,這將是[code]RGBA16[/code] 影格緩"
-"衝區,而使用移動算繪器時,它將是[code]RGB10_A2[/code] 影格緩衝區。此外,2D 算"
-"繪將在線性顏色空間中進行,並將轉換為sRGB 空間緊接在blitting 到螢幕之前(如果"
-"Viewport 附加到螢幕)。實際上,這表示Viewport 的最終結果不會被限制在"
-"[code]0-1[/code] 範圍內,並且可以使用3D 算繪無需色彩空間調整。這使得 2D 算繪能"
-"夠利用需要高動態範圍的效果(例如 2D 發光),並顯著改善需要高度詳細漸變的效果的"
-"外觀。\n"
-"[b]注意:[/b] 使用GL 相容性算繪器時,此設定無效,因為出於效能原因,GL 相容性算"
-"繪器始終在低動態範圍內算繪。"
-
-msgid ""
"If [code]true[/code], [OccluderInstance3D] nodes will be usable for occlusion "
"culling in 3D for this viewport. For the root viewport, [member "
"ProjectSettings.rendering/occlusion_culling/use_occlusion_culling] must be "
@@ -120957,9 +115665,6 @@ msgstr ""
"物件通過加法混合顯示為半透明,因此可以看到它們在彼此之上繪製的位置。更高的過度"
"繪製意味著在繪製隱藏在其他圖元後面的圖元時浪費了性能。"
-msgid "Objects are displayed in wireframe style."
-msgstr "物件以線框風格顯示。"
-
msgid ""
"Draws the shadow atlas that stores shadows from [DirectionalLight3D]s in the "
"upper left quadrant of the [Viewport]."
@@ -121004,61 +115709,12 @@ msgid ""
"applied."
msgstr "在應用後處理之前繪製場景的內部解析度緩衝區。"
-msgid "Max value for [enum DefaultCanvasItemTextureFilter] enum."
-msgstr "[enum DefaultCanvasItemTextureFilter] 列舉的最大值。"
-
-msgid "Max value for [enum DefaultCanvasItemTextureRepeat] enum."
-msgstr "[enum DefaultCanvasItemTextureRepeat] 列舉的最大值。"
-
-msgid "VRS is disabled."
-msgstr "VRS 已禁用。"
-
-msgid ""
-"VRS uses a texture. Note, for stereoscopic use a texture atlas with a texture "
-"for each view."
-msgstr ""
-"VRS 使用一個紋理。請注意,對於立體視覺,請為每個視圖使用帶有紋理的紋理合集。"
-
-msgid "VRS texture is supplied by the primary [XRInterface]."
-msgstr "VRS 紋理由主 [XRInterface] 提供。"
-
msgid "Represents the size of the [enum VRSMode] enum."
msgstr "代表 [enum VRSMode] 列舉的大小。"
msgid "Provides the content of a [Viewport] as a dynamic texture."
msgstr "以動態紋理的形式提供 [Viewport] 的內容。"
-msgid ""
-"Provides the content of a [Viewport] as a dynamic [Texture2D]. This can be "
-"used to mix controls, 2D game objects, and 3D game objects in the same "
-"scene.\n"
-"To create a [ViewportTexture] in code, use the [method Viewport.get_texture] "
-"method on the target viewport.\n"
-"[b]Note:[/b] A [ViewportTexture] is always local to its scene (see [member "
-"Resource.resource_local_to_scene]). If the scene root is not ready, it may "
-"return incorrect data (see [signal Node.ready])."
-msgstr ""
-"以動態 [Texture2D] 的形式提供 [Viewport] 的內容。可用於在同一場景中混合控制"
-"項、2D 遊戲物件和 3D 遊戲對象。\n"
-"要在程式碼中建立 [ViewportTexture],請在目標視口上使用 [method Viewport."
-"get_texture] 方法。\n"
-"[b]注意:[/b]當局部於場景時,該紋理使用 [method Resource."
-"setup_local_to_scene] 在局部視口中設定代理紋理和旗標。局部於場景的 "
-"[ViewportTexture] 在場景根節點就緒前返回的是不正確的資料(見 [signal Node."
-"ready])。"
-
-msgid ""
-"The path to the [Viewport] node to display. This is relative to the scene "
-"root, not to the node that uses the texture.\n"
-"[b]Note:[/b] In the editor, this path is automatically updated when the "
-"target viewport or one of its ancestors is renamed or moved. At runtime, the "
-"path may not be able to automatically update due to the inability to "
-"determine the scene root."
-msgstr ""
-"要顯示的 [Viewport] 節點的路徑。相對於場景的根節點,而不是使用紋理的節點。\n"
-"[b]注意:[/b]在編輯器中,目標視口或其祖級節點發生重命名或移動時會自動更新這個"
-"路徑。在運作時,該路徑可能無法自動更新,因為無法確定場景的根節點。"
-
msgid "Corresponds to [constant Node.PROCESS_MODE_INHERIT]."
msgstr "對應 [constant Node.PROCESS_MODE_INHERIT]。"
@@ -121752,22 +116408,6 @@ msgstr "在視覺化著色器圖中使用的 [Color] 參數。"
msgid "Translated to [code]uniform vec4[/code] in the shader language."
msgstr "翻譯為著色器語言中的 [code]uniform vec4[/code]。"
-msgid "A comment node to be placed on visual shader graph."
-msgstr "放置在視覺化著色器圖上的注釋節點。"
-
-msgid ""
-"A resizable rectangular area with changeable [member title] and [member "
-"description] used for better organizing of other visual shader nodes."
-msgstr ""
-"可調整大小的矩形區域,標題 [member title] 和描述 [member description] 均可更"
-"改,可用於更好地組織其他視覺化著色器節點。"
-
-msgid "An additional description which placed below the title."
-msgstr "放置在標題下方的額外說明。"
-
-msgid "A title of the node."
-msgstr "節點的標題。"
-
msgid "A comparison function for common types within the visual shader graph."
msgstr "視覺化著色器圖內常見型別的比較函式。"
@@ -122849,8 +117489,8 @@ msgstr ""
"input_name] 等於 [code]\"albedo\"[/code],則返回 [code]\"ALBEDO\"[/code]。"
msgid ""
-"One of the several input constants in lower-case style like: "
-"\"vertex\" ([code]VERTEX[/code]) or \"point_size\" ([code]POINT_SIZE[/code])."
+"One of the several input constants in lower-case style like: \"vertex\" "
+"([code]VERTEX[/code]) or \"point_size\" ([code]POINT_SIZE[/code])."
msgstr ""
"小寫風格的輸入常數之一,例如:\"vertex\"([code]VERTEX[/code])或 "
"\"point_size\"([code]POINT_SIZE[/code])。"
@@ -125730,36 +120370,6 @@ msgstr ""
"url]。"
msgid ""
-"Gets an [XRPositionalTracker] for the given [param input_source_id].\n"
-"In the context of WebXR, an input source can be an advanced VR controller "
-"like the Oculus Touch or Index controllers, or even a tap on the screen, a "
-"spoken voice command or a button press on the device itself. When a non-"
-"traditional input source is used, interpret the position and orientation of "
-"the [XRPositionalTracker] as a ray pointing at the object the user wishes to "
-"interact with.\n"
-"Use this method to get information about the input source that triggered one "
-"of these signals:\n"
-"- [signal selectstart]\n"
-"- [signal select]\n"
-"- [signal selectend]\n"
-"- [signal squeezestart]\n"
-"- [signal squeeze]\n"
-"- [signal squeezestart]"
-msgstr ""
-"獲取給定 [param input_source_id] 的 [XRPositionalTracker]。\n"
-"在 WebXR 本文中,輸入源可以是類似 Oculus Touch 和 Index 控制器的高級 VR 控制"
-"器,甚至也可以是螢幕上的點擊、語音命令或按下裝置本身的按鈕。當使用非傳統輸入源"
-"時,會將 [XRPositionalTracker] 的位置和方向解釋為指向使用者希望與之互動的對象"
-"的射線。\n"
-"可以使用此方法獲取有關觸發以下訊號之一的輸入源的資訊:\n"
-"- [signal selectstart]\n"
-"- [signal select]\n"
-"- [signal selectend]\n"
-"- [signal squeezestart]\n"
-"- [signal squeeze]\n"
-"- [signal squeezestart]"
-
-msgid ""
"Returns [code]true[/code] if there is an active input source with the given "
"[param input_source_id]."
msgstr ""
@@ -127168,39 +121778,6 @@ msgstr ""
"個單例可能對性能有負面影響。"
msgid ""
-"Adds [param action] as a group task to be executed by the worker threads. The "
-"[Callable] will be called a number of times based on [param elements], with "
-"the first thread calling it with the value [code]0[/code] as a parameter, and "
-"each consecutive execution incrementing this value by 1 until it reaches "
-"[code]element - 1[/code].\n"
-"The number of threads the task is distributed to is defined by [param "
-"tasks_needed], where the default value [code]-1[/code] means it is "
-"distributed to all worker threads. [param high_priority] determines if the "
-"task has a high priority or a low priority (default). You can optionally "
-"provide a [param description] to help with debugging.\n"
-"Returns a group task ID that can be used by other methods."
-msgstr ""
-"將 [param action] 新增為群組工作,能夠被多個工作執行緒執行。該 [Callable] 的調"
-"用次數由 [param elements] 決定,第一個呼叫的執行緒使用 [code]0[/code] 作為參"
-"數,後續執行時會將其加 1,直到變為 [code]element - 1[/code]。\n"
-"工作分佈的執行緒數由 [param tasks_needed] 定義,預設值 [code]-1[/code] 表示分"
-"佈到所有工作執行緒。[param high_priority] 決定的是工作具有高優先順序還是低優先"
-"順序(預設)。你還可以選擇提供 [param description] 作為描述資訊,方便除錯。\n"
-"返回群組工作 ID,可用於其他方法。"
-
-msgid ""
-"Adds [param action] as a task to be executed by a worker thread. [param "
-"high_priority] determines if the task has a high priority or a low priority "
-"(default). You can optionally provide a [param description] to help with "
-"debugging.\n"
-"Returns a task ID that can be used by other methods."
-msgstr ""
-"將 [param action] 新增為群組工作,能夠被單個工作執行緒執行。[param "
-"high_priority] 決定的是工作具有高優先順序還是低優先順序(預設)。你還可以選擇"
-"提供 [param description] 作為描述資訊,方便除錯。\n"
-"返回工作 ID,可用於其他方法。"
-
-msgid ""
"Returns how many times the [Callable] of the group task with the given ID has "
"already been executed by the worker threads.\n"
"[b]Note:[/b] If a thread has started executing the [Callable] but is yet to "
@@ -127210,13 +121787,6 @@ msgstr ""
"[b]注意:[/b]執行緒已經開始執行 [Callable] 但尚未完成的情況不計算在內。"
msgid ""
-"Returns [code]true[/code] if the group task with the given ID is completed."
-msgstr "如果具有給定 ID 的群組工作已經完成,則返回 [code]true[/code]。"
-
-msgid "Returns [code]true[/code] if the task with the given ID is completed."
-msgstr "如果具有給定 ID 的工作已經完成,則返回 [code]true[/code]。"
-
-msgid ""
"Pauses the thread that calls this method until the group task with the given "
"ID is completed."
msgstr "在具有給定 ID 的群組工作完成前暫停呼叫這個方法的執行緒。"
@@ -127415,91 +121985,6 @@ msgid "Provides a low-level interface for creating parsers for XML files."
msgstr "為建立 XML 檔解析器提供低階介面。"
msgid ""
-"Provides a low-level interface for creating parsers for [url=https://en."
-"wikipedia.org/wiki/XML]XML[/url] files. This class can serve as base to make "
-"custom XML parsers.\n"
-"To parse XML, you must open a file with the [method open] method or a buffer "
-"with the [method open_buffer] method. Then, the [method read] method must be "
-"called to parse the next nodes. Most of the methods take into consideration "
-"the currently parsed node.\n"
-"Here is an example of using [XMLParser] to parse a SVG file (which is based "
-"on XML), printing each element and its attributes as a dictionary:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var parser = XMLParser.new()\n"
-"parser.open(\"path/to/file.svg\")\n"
-"while parser.read() != ERR_FILE_EOF:\n"
-" if parser.get_node_type() == XMLParser.NODE_ELEMENT:\n"
-" var node_name = parser.get_node_name()\n"
-" var attributes_dict = {}\n"
-" for idx in range(parser.get_attribute_count()):\n"
-" attributes_dict[parser.get_attribute_name(idx)] = parser."
-"get_attribute_value(idx)\n"
-" print(\"The \", node_name, \" element has the following attributes: "
-"\", attributes_dict)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var parser = new XmlParser();\n"
-"parser.Open(\"path/to/file.svg\");\n"
-"while (parser.Read() != Error.FileEof)\n"
-"{\n"
-" if (parser.GetNodeType() == XmlParser.NodeType.Element)\n"
-" {\n"
-" var nodeName = parser.GetNodeName();\n"
-" var attributesDict = new Godot.Collections.Dictionary();\n"
-" for (int idx = 0; idx < parser.GetAttributeCount(); idx++)\n"
-" {\n"
-" attributesDict[parser.GetAttributeName(idx)] = parser."
-"GetAttributeValue(idx);\n"
-" }\n"
-" GD.Print($\"The {nodeName} element has the following attributes: "
-"{attributesDict}\");\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-msgstr ""
-"為建立 [url=https://zh.wikipedia.org/wiki/XML]XML[/url] 檔解析器提供低階介面。"
-"製作自訂 XML 解析器時,可以將這個類作為基礎。\n"
-"要解析 XML,你必須使用 [method open] 方法打開檔,或者使用 [method "
-"open_buffer] 方法打開緩衝區。然後必須使用 [method read] 方法解析後續節點。大多"
-"數方法使用的是目前解析節點。\n"
-"以下是使用 [XMLParser] 解析 SVG 檔(基於 XML)的粒子,會輸出所有的元素,以字典"
-"的形式輸出對應的屬性:\n"
-"[codeblocks]\n"
-"[gdscript]\n"
-"var parser = XMLParser.new()\n"
-"parser.open(\"path/to/file.svg\")\n"
-"while parser.read() != ERR_FILE_EOF:\n"
-" if parser.get_node_type() == XMLParser.NODE_ELEMENT:\n"
-" var node_name = parser.get_node_name()\n"
-" var attributes_dict = {}\n"
-" for idx in range(parser.get_attribute_count()):\n"
-" attributes_dict[parser.get_attribute_name(idx)] = parser."
-"get_attribute_value(idx)\n"
-" print(\"元素 \", node_name, \" 包含的屬性有:\", attributes_dict)\n"
-"[/gdscript]\n"
-"[csharp]\n"
-"var parser = new XmlParser();\n"
-"parser.Open(\"path/to/file.svg\");\n"
-"while (parser.Read() != Error.FileEof)\n"
-"{\n"
-" if (parser.GetNodeType() == XmlParser.NodeType.Element)\n"
-" {\n"
-" var nodeName = parser.GetNodeName();\n"
-" var attributesDict = new Godot.Collections.Dictionary();\n"
-" for (int idx = 0; idx < parser.GetAttributeCount(); idx++)\n"
-" {\n"
-" attributesDict[parser.GetAttributeName(idx)] = parser."
-"GetAttributeValue(idx);\n"
-" }\n"
-" GD.Print($\"元素 {nodeName} 包含的屬性有:{attributesDict}\");\n"
-" }\n"
-"}\n"
-"[/csharp]\n"
-"[/codeblocks]"
-
-msgid ""
"Returns the number of attributes in the currently parsed element.\n"
"[b]Note:[/b] If this method is used while the currently parsed node is not "
"[constant NODE_ELEMENT] or [constant NODE_ELEMENT_END], this count will not "
@@ -127544,14 +122029,6 @@ msgid ""
msgstr "返回文字節點的內容。如果目前解析節點是其他型別,則會引發錯誤。"
msgid ""
-"Returns the name of an element node. This method will raise an error if the "
-"currently parsed node is not of [constant NODE_ELEMENT] or [constant "
-"NODE_ELEMENT_END] type."
-msgstr ""
-"返回元素節點的名稱。如果目前解析節點既不是 [constant NODE_ELEMENT] 型別又不是 "
-"[constant NODE_ELEMENT_END] 型別,則會引發錯誤。"
-
-msgid ""
"Returns the byte offset of the currently parsed node since the beginning of "
"the file or buffer. This is usually equivalent to the number of characters "
"before the read position."
@@ -128293,26 +122770,6 @@ msgid "A tracked object."
msgstr "追蹤對象。"
msgid ""
-"An instance of this object represents a device that is tracked, such as a "
-"controller or anchor point. HMDs aren't represented here as they are handled "
-"internally.\n"
-"As controllers are turned on and the [XRInterface] detects them, instances of "
-"this object are automatically added to this list of active tracking objects "
-"accessible through the [XRServer].\n"
-"The [XRController3D] and [XRAnchor3D] both consume objects of this type and "
-"should be used in your project. The positional trackers are just under-the-"
-"hood objects that make this all work. These are mostly exposed so that "
-"GDExtension-based interfaces can interact with them."
-msgstr ""
-"此物件的一個實例,表示一個被追蹤的裝置,例如一個控制器或錨點。HMD 沒有在此處表"
-"示,因為它們是在內部處理的。\n"
-"當控制器被打開,並且 [XRInterface] 偵測到它們時,此物件的實例會自動被新增到可"
-"通過 [XRServer] 存取的活動追蹤物件列表中。\n"
-"[XRController3D] 和 [XRAnchor3D] 都使用這種型別的物件,並且應該在你的專案中使"
-"用。位置追蹤器只是使這一切正常工作的底層物件。這些大部分都是公開的,以便基於 "
-"GDExtension 的介面,可以與它們互動。"
-
-msgid ""
"Returns an input for this tracker. It can return a boolean, float or "
"[Vector2] value depending on whether the input is a button, trigger or "
"thumbstick/thumbpad."
@@ -128344,35 +122801,14 @@ msgstr ""
"設定給定姿勢的變換、線速度、角速度和追蹤置信度。此方法由一個 [XRInterface] 實"
"現呼叫,不應直接使用。"
-msgid "The description of this tracker."
-msgstr "此追蹤器的描述。"
-
msgid "Defines which hand this tracker relates to."
msgstr "定義此追蹤器與哪只手相關。"
msgid ""
-"The unique name of this tracker. The trackers that are available differ "
-"between various XR runtimes and can often be configured by the user. Godot "
-"maintains a number of reserved names that it expects the [XRInterface] to "
-"implement if applicable:\n"
-"- [code]left_hand[/code] identifies the controller held in the players left "
-"hand\n"
-"- [code]right_hand[/code] identifies the controller held in the players right "
-"hand"
-msgstr ""
-"此追蹤器的唯一名稱。可用的追蹤器因各種 XR 運作時而異,並且通常可以由使用者配"
-"置。Godot 維護了一些保留名稱,如果可套用,它希望 [XRInterface] 來實作:\n"
-"- [code]left_hand[/code] 標識玩家左手握持的控制器\n"
-"- [code]right_hand[/code] 標識玩家右手握持的控制器"
-
-msgid ""
"The profile associated with this tracker, interface dependent but will "
"indicate the type of controller being tracked."
msgstr "與此追蹤器關聯的配置,取決於介面,但將指示被追蹤的控制器型別。"
-msgid "The type of tracker."
-msgstr "該追蹤器的型別。"
-
msgid ""
"Emitted when a button on this tracker is pressed. Note that many XR runtimes "
"allow other inputs to be mapped to buttons."
@@ -128421,11 +122857,6 @@ msgid "Registers an [XRInterface] object."
msgstr "註冊一個 [XRInterface] 物件。"
msgid ""
-"Registers a new [XRPositionalTracker] that tracks a spatial location in real "
-"space."
-msgstr "註冊一個新的 [XRPositionalTracker],用於追蹤現實空間中的一個空間位置。"
-
-msgid ""
"This is an important function to understand correctly. AR and VR platforms "
"all handle positioning slightly differently.\n"
"For platforms that do not offer spatial tracking, our origin point (0, 0, 0) "
@@ -128503,9 +122934,6 @@ msgstr "返回 [param tracker_types] 的追蹤器字典。"
msgid "Removes this [param interface]."
msgstr "移除該 [param interface]。"
-msgid "Removes this positional [param tracker]."
-msgstr "移除該位置 [param tracker]。"
-
msgid "The primary [XRInterface] currently bound to the [XRServer]."
msgstr "目前綁定到 [XRServer] 的主 [XRInterface]。"
@@ -128592,6 +123020,12 @@ msgid ""
"gets centered."
msgstr "不重設 HMD 的方向,只讓玩家的位置居中。"
+msgid "The description of this tracker."
+msgstr "此追蹤器的描述。"
+
+msgid "The type of tracker."
+msgstr "該追蹤器的型別。"
+
msgid "Allows the creation of zip files."
msgstr "允許建立 zip 檔。"