# Godot Engine Documentation in Italian # Copyright (C) 2014-2019, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) # This file is distributed under the same license as the Godot Engine package. # # Alessandro Zoppi , 2019. # Alessio Corridori , 2018. # Andrea Brunato , 2018. # cento , 2018. # Christian Biffi , 2019. # Daniele Tolomelli , 2018. # Dario D'Ambra , 2018. # Davide Cristini , 2018. # Davide Giuliano , 2019. # Davide Wayan Mores , 2018. # Giacomo Bella , 2018-2019. # Giuseppe Guerra , 2019. # Hairic95 , 2019. # Luana Pau , 2018. # Luca meremma , 2019. # Marabese Fabio , 2019. # Marco Galli , 2019. # Marco Melorio , 2019. # Marco , 2019. # Mario Rossi , 2018-2019. # MassiminoilTrace , 2019. # Matteo , 2018-2019. # Micila Micillotto , 2019. # Mirko Soppelsa , 2019. # Myself , 2018. # Nicolas Bonet , 2018. # Omar Ruggero Manca , 2019. # Red Pill , 2018. # RHC , 2019. # salahzar stenvaag , 2019. # Salvo Permiracolo , 2018. # Samuele Zolfanelli , 2018-2019. # spesknight , 2018. # Ste d f , 2018. # Stefano Merazzi , 2019. # xxssmaoxx , 2018. # msgid "" msgstr "" "Project-Id-Version: Godot Engine latest\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot-docs-l10n\n" "POT-Creation-Date: 2019-07-25 10:21+0200\n" "PO-Revision-Date: 2019-07-25 07:20+0000\n" "Last-Translator: Mirko Soppelsa \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.8-dev\n" #: ../../docs/index.rst:2 msgid "Godot Docs – *master* branch" msgstr "Documentazione di Godot - versione *master*" #: ../../docs/index.rst:6 msgid "" "Godot's documentation is available in various languages and versions. Expand " "the \"Read the Docs\" panel at the bottom of the sidebar to see the list." msgstr "" "La documentazione di Godot è disponibile in diverse lingue e versioni. " "Espandi il pannello \"Read the Docs\" in fondo alla barra laterale per " "vedere la lista." #: ../../docs/index.rst:10 msgid "" "This is the documentation for the development (master) branch. Looking for " "the documentation of the current **stable** branch? `Have a look here " "`_." msgstr "" "Questa è la documentazione per la versione non stabile (master). Stai " "cercando la documentazione per la versione corrente **stabile**? `Dai " "un'occhiata qui: `_." #: ../../docs/index.rst:16 msgid "" "This documentation is translated from the `original English one `_ by community members on `Weblate `_." msgstr "" "Questa documentazione è tradotta da `quella originale in inglese `_ dai membri della community su `Weblate " "`_." #: ../../docs/index.rst:20 msgid "" "Depending on the translation effort's completion level, you may find " "paragraphs or whole pages which are still in English. You can help the " "community by providing new translations or reviewing existing ones on " "Weblate." msgstr "" "A seconda del livello di di completezza raggiunta nella traduzione, potresti " "trovare alcuni paragrafi o intere pagine ancora in inglese. Puoi aiutare la " "comunità fornendo nuove traduzione o controllando quelle esistenti su " "Weblate." #: ../../docs/index.rst:25 msgid "" "For the time being, localized translations are only available for the " "\"latest\" (development) branch, but should be suitable to learn how to use " "stable Godot releases nevertheless." msgstr "" "Al momento, le traduzioni localizzate sono disponibili solo per il ramo " "\"latest\" (development), ma dovrebbero essere adatte per imparare come " "usare le versioni stabili di Godot." #: ../../docs/index.rst:29 msgid "" "Welcome to the official documentation of Godot Engine, the free and open " "source community-driven 2D and 3D game engine! If you are new to this " "documentation, we recommend that you read the :ref:`introduction page " "` to get an overview of what this documentation has to " "offer." msgstr "" "Benvenuto nella documentazione ufficiale di Godot Engine, il motore di gioco " "2D e 3D gratuito e open source gestito dalla community! Se è la prima volta " "che utilizzi questa documentazione, ti raccomandiamo di leggere la :ref:" "`pagina di introduzione ` per avere una panoramica di cosa " "questa documentazione ha da offrirti." #: ../../docs/index.rst:34 msgid "" "The table of contents below and in the sidebar should let you easily access " "the documentation for your topic of interest. You can also use the search " "function in the top left corner." msgstr "" "La tabella dei contenuti qui sotto e nella barra laterale ti dovrebbero " "consentire un accesso facile alla documentazione degli argomenti che ti " "interessano. Puoi usare anche la funzione di ricerca nell'angolo in alto a " "sinistra." #: ../../docs/index.rst:38 msgid "" "Godot Engine is an open source project developed by a community of " "volunteers. The documentation team can always use your feedback and help to " "improve the tutorials and class reference. If you don't understand " "something, or cannot find what you are looking for in the docs, help us make " "the documentation better by letting us know!" msgstr "" "Godot Engine è un progetto open source sviluppato da una comunità di " "volontari. Il team della documentazione può utilizzare sempre i tuoi " "feedback ed il tuo aiuto per migliorare i tutorial ed i riferimenti alle " "classi. Se non comprendi qualcosa o non riesci a trovare quello che stai " "cercando in questi documenti, aiutaci a migliorare la documentazione " "facendocelo sapere!" #: ../../docs/index.rst:45 msgid "" "Submit an issue or pull request on the `GitHub repository `_, help us `translate the documentation " "`_ into your language, or " "talk to us on either the ``#documentation`` channel on `Discord `_, or the ``#godotengine-doc`` channel on `irc.freenode." "net `_!" msgstr "" "Invia segnalazioni di problemi o pull request del `repository di GitHub " "`_, aiutaci a `tradurre la " "documentazione `_ nella tua " "lingua, o rimani in contatto con noi sia sul canale della " "``#documentazione`` su `Discord `_, o sul canale " "``#godotengine-doc`` su `irc.freenode.net `_!" #: ../../docs/index.rst:63 msgid "weblate_widget" msgstr "" #: ../../docs/index.rst:66 msgid "" "The main documentation for the site is organized into the following sections:" msgstr "" "La documentazione principale per il sito è organizzato nelle seguenti " "sezioni:" #: ../../docs/index.rst:68 msgid "General" msgstr "Informazioni Generali" #: ../../docs/index.rst:76 msgid "Getting started" msgstr "Per iniziare" #: ../../docs/index.rst:87 msgid "Tutorials" msgstr "Tutorial" #: ../../docs/index.rst:117 msgid "Development" msgstr "Sviluppo" #: ../../docs/index.rst:127 msgid "Community" msgstr "Comunità" #: ../../docs/about/index.rst:2 #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:7 #: ../../docs/tutorials/inputs/mouse_and_input_coordinates.rst:7 #: ../../docs/development/cpp/variant_class.rst:7 msgid "About" msgstr "Riguardo a" #: ../../docs/about/introduction.rst:4 #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:7 #: ../../docs/getting_started/step_by_step/instancing.rst:7 #: ../../docs/getting_started/step_by_step/scripting.rst:7 #: ../../docs/getting_started/step_by_step/signals.rst:7 #: ../../docs/getting_started/step_by_step/animations.rst:7 #: ../../docs/getting_started/step_by_step/filesystem.rst:7 #: ../../docs/getting_started/step_by_step/scene_tree.rst:7 #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:7 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:7 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:4 #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:7 #: ../../docs/getting_started/workflow/export/feature_tags.rst:7 #: ../../docs/getting_started/workflow/best_practices/introduction_best_practices.rst:4 #: ../../docs/tutorials/2d/2d_transforms.rst:7 #: ../../docs/tutorials/2d/using_tilemaps.rst:7 #: ../../docs/tutorials/2d/2d_movement.rst:7 #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:7 #: ../../docs/tutorials/2d/2d_meshes.rst:7 #: ../../docs/tutorials/2d/2d_sprite_animation.rst:7 #: ../../docs/tutorials/3d/using_transforms.rst:7 #: ../../docs/tutorials/3d/3d_performance_and_limitations.rst:7 #: ../../docs/tutorials/3d/spatial_material.rst:7 #: ../../docs/tutorials/3d/lights_and_shadows.rst:7 #: ../../docs/tutorials/3d/reflection_probes.rst:7 #: ../../docs/tutorials/3d/gi_probes.rst:7 #: ../../docs/tutorials/3d/baked_lightmaps.rst:7 #: ../../docs/tutorials/3d/high_dynamic_range.rst:7 #: ../../docs/tutorials/3d/using_gridmaps.rst:7 #: ../../docs/tutorials/3d/using_multi_mesh_instance.rst:7 #: ../../docs/tutorials/audio/audio_buses.rst:7 #: ../../docs/tutorials/audio/audio_streams.rst:7 #: ../../docs/tutorials/audio/sync_with_audio.rst:7 #: ../../docs/tutorials/physics/using_kinematic_body_2d.rst:7 #: ../../docs/tutorials/physics/ray-casting.rst:7 #: ../../docs/tutorials/physics/ragdoll_system.rst:7 #: ../../docs/tutorials/physics/kinematic_character_2d.rst:7 #: ../../docs/tutorials/math/vector_math.rst:7 #: ../../docs/tutorials/math/matrices_and_transforms.rst:7 #: ../../docs/tutorials/animation/2d_skeletons.rst:7 #: ../../docs/tutorials/animation/animation_tree.rst:7 #: ../../docs/tutorials/inputs/input_examples.rst:7 #: ../../docs/tutorials/io/saving_games.rst:7 #: ../../docs/tutorials/i18n/internationalizing_games.rst:7 #: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:7 #: ../../docs/tutorials/viewports/viewports.rst:7 #: ../../docs/tutorials/viewports/using_viewport_as_texture.rst:7 #: ../../docs/tutorials/viewports/custom_postprocessing.rst:7 #: ../../docs/tutorials/shading/shading_reference/shaders.rst:7 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:7 #: ../../docs/tutorials/shading/your_first_shader/what_are_shaders.rst:7 #: ../../docs/tutorials/shading/your_first_shader/your_first_canvasitem_shader.rst:7 #: ../../docs/tutorials/shading/shader_materials.rst:7 #: ../../docs/tutorials/shading/screen-reading_shaders.rst:7 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:7 #: ../../docs/tutorials/shading/advanced_postprocessing.rst:7 #: ../../docs/tutorials/networking/ssl_certificates.rst:7 #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:7 #: ../../docs/tutorials/vr/vr_starter_tutorial.rst:7 #: ../../docs/tutorials/plugins/editor/import_plugins.rst:7 #: ../../docs/tutorials/plugins/editor/spatial_gizmos.rst:7 #: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:7 #: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:7 #: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:7 #: ../../docs/tutorials/plugins/android/android_plugin.rst:7 #: ../../docs/tutorials/misc/binary_serialization_api.rst:7 #: ../../docs/tutorials/debug/overview_of_debugging_tools.rst:7 #: ../../docs/development/cpp/custom_resource_format_loaders.rst:7 #: ../../docs/development/cpp/custom_audiostreams.rst:7 #: ../../docs/development/cpp/custom_godot_servers.rst:7 msgid "Introduction" msgstr "Introduzione" #: ../../docs/about/introduction.rst:11 msgid "" "Welcome to the official documentation of Godot Engine, the free and open " "source community-driven 2D and 3D game engine! Behind this mouthful, you " "will find a powerful yet user-friendly tool that you can use to develop any " "kind of game, for any platform and with no usage restriction whatsoever." msgstr "" "Benvenuto sulla documentazione ufficiale di Godot Engine, il motore di gioco " "2D e 3D gratuito, open source e sostenuto dalla community. Scoprirai uno " "strumento potente ma anche user-friendly che potrai utilizzare per " "sviluppare ogni tipo di gioco, per qualunque piattaforma senza alcun tipo di " "limitazione." #: ../../docs/about/introduction.rst:16 msgid "" "This page gives a broad presentation of the engine and of the contents of " "this documentation, so that you know where to start if you are a beginner or " "where to look if you need info on a specific feature." msgstr "" "Questa pagina ha lo scopo di dare una panoramica del motore di gioco e dei " "contenuti della documentazione, in modo da indicarti come iniziare se sei un " "principiante o dove trovare informazioni su una specifica funzionalità." #: ../../docs/about/introduction.rst:21 msgid "Before you start" msgstr "" #: ../../docs/about/introduction.rst:23 msgid "" "The :ref:`Tutorials and resources ` page lists " "video tutorials contributed by the community. If you prefer video to text, " "those may be worth a look." msgstr "" #: ../../docs/about/introduction.rst:27 msgid "" "In case you have trouble with one of the tutorials or your project, you can " "find help on the various :ref:`Community channels `, " "especially the Godot Discord community, Q&A, and IRC." msgstr "" #: ../../docs/about/introduction.rst:32 msgid "About Godot Engine" msgstr "Riguardo a Godot Engine" #: ../../docs/about/introduction.rst:34 msgid "" "A game engine is a complex tool, and it is therefore difficult to present " "Godot in a few words. Here's a quick synopsis, which you are free to reuse " "if you need a quick writeup about Godot Engine." msgstr "" "Un motore di gioco è uno strumento complesso, per cui è difficile presentare " "Godot in poche parole. In ogni caso qui c'è una presentazione, che sei " "libero di utilizzare come una breve descrizione di Godot Engine." #: ../../docs/about/introduction.rst:38 msgid "" "Godot Engine is a feature-packed, cross-platform game engine to create 2D " "and 3D games from a unified interface. It provides a comprehensive set of " "common tools, so users can focus on making games without having to reinvent " "the wheel. Games can be exported in one click to a number of platforms, " "including the major desktop platforms (Linux, macOS, Windows) as well as " "mobile (Android, iOS) and web-based (HTML5) platforms." msgstr "" "Godot Engine è un motore di gioco ricco di funzionalità, multi piattaforma, " "per creare giochi 2D e 3D da un'unica interfaccia. Godot offre un ampio set " "di strumenti base, in modo da permettere agli utenti di focalizzarsi sullo " "sviluppo dei giochi senza sforzarsi nello studio. I giochi possono essere " "esportati in un click su numerose piattaforme di gioco, inclusi i sistemi " "desktop (Linux, macOS, Windows), mobili (Android, iOS) e web (HTML5)." #: ../../docs/about/introduction.rst:45 msgid "" "Godot is completely free and open source under the permissive MIT license. " "No strings attached, no royalties, nothing. Users' games are theirs, down to " "the last line of engine code. Godot's development is fully independent and " "community-driven, empowering users to help shape their engine to match their " "expectations. It is supported by the `Software Freedom Conservancy `_ not-for-profit." msgstr "" "Godot è completamente gratuito e open source sotto la permissiva licenza " "MIT. Nessuna clausola annessa, nessuna royalty, niente. I giochi degli " "utenti sono di loro proprietà, fino all'ultima riga di codice del motore. Lo " "sviluppo di Godot è completamente indipendente e guidato dalla community, " "dando agli utenti la possibilità di aiutare a dare forma al motore di gioco " "in modo che sia sempre all'altezza delle loro aspettative. Godot è " "supportato dall'organizzazione no-profit `Software Freedom Conservancy " "`_ ." #: ../../docs/about/introduction.rst:52 msgid "" "For a more in-depth view of the engine, you are encouraged to read this " "documentation further, especially the :ref:`Step by step ` tutorial." msgstr "" "Per un'occhiata più approfondita al motore, siete incoraggiati a leggere " "ulteriormente questa documentazione, in particolar modo il tutorial :ref:" "`Step by step ` ." #: ../../docs/about/introduction.rst:57 msgid "About the documentation" msgstr "Riguardo la documentazione" #: ../../docs/about/introduction.rst:59 msgid "" "This documentation is continuously written, corrected, edited, and revamped " "by members of the Godot Engine community. It is edited via text files in the " "`reStructuredText `_ markup " "language and then compiled into a static website/offline document using the " "open source `Sphinx `_ and `ReadTheDocs `_ tools." msgstr "" "Questa documentazione è continuamente scritta, corretta, modificata e " "migliorata dai membri della community di Godot Engine. Viene modificata via " "file testuali basati sul linguaggio di markup `reStructuredText `_ e poi viene compilata in un documento " "web statico/offline utilizzando i programmi open source `Sphinx `_ e `ReadTheDocs `_." #: ../../docs/about/introduction.rst:66 msgid "" "You can contribute to Godot's documentation by opening issue tickets or " "sending patches via pull requests on its GitHub `source repository `_, or translating it into your language " "on `Hosted Weblate `_." msgstr "" "È possibile contribuire alla documentazione su Godot attraverso l'apertura " "di un issue o inviando le patch attraverso pull request sul `repository " "presente su GitHub `_ oppure " "traducendo nel proprio linguaggio su `Hosted Weblate `_." #: ../../docs/about/introduction.rst:72 msgid "" "All the contents are under the permissive Creative Commons Attribution 3.0 " "(`CC-BY 3.0 `_) license, with " "attribution to \"Juan Linietsky, Ariel Manzur and the Godot Engine community" "\"." msgstr "" "Tutti i contenuti sono coperti dalla licenza Creative Commons Attribution " "3.0 (`CC-BY 3.0 `_), con " "attribuzione \"Juan Linietsky, Ariel Manzur and the Godot Engine community\"." #: ../../docs/about/introduction.rst:77 msgid "Organization of the documentation" msgstr "Struttura della documentazione" #: ../../docs/about/introduction.rst:79 msgid "" "This documentation is organised in five sections with an impressively " "unbalanced distribution of contents – but the way it is split up should be " "relatively intuitive:" msgstr "" "La documentazione è organizzata in cinque sezioni con una distribuzione di " "contenuti sbilanciata in maniera impressionante – ma il modo in cui è " "organizzata dovrebbe essere abbastanza intuitivo:" #: ../../docs/about/introduction.rst:83 msgid "" "The :ref:`sec-general` section contains this introduction as well as " "information about the engine, its history, its licensing, authors, etc. It " "also contains the :ref:`doc_faq`." msgstr "" "La sezione :ref:`sec-general` contiene questa introduzione così come " "informazioni sul sistema, la sua storia, la licenza applicata, gli autori, " "eccetera. La sezione contiene anche le :ref:`doc_faq`." #: ../../docs/about/introduction.rst:86 msgid "" "The :ref:`sec-learn` section is the main *raison d'être* of this " "documentation, as it contains all the necessary information on using the " "engine to make games. It starts with the :ref:`Step by step ` tutorial which should be the entry point for all new users." msgstr "" "La sezione :ref:`sec-learn` è la principale ragione per l'esistenza di " "questa documentazione visto che contiene tutte le informazioni necessarie su " "come utilizzare il motore per creare videogiochi. Inizia con il tutorial :" "ref:`Step by step ` che dovrebbe essere il punto di " "inizio per tutti i nuovi utenti." #: ../../docs/about/introduction.rst:91 msgid "" "The :ref:`sec-tutorials` section can be read as needed, in any order. It " "contains feature-specific tutorials and documentation." msgstr "" "La sezione :ref:`sec-tutorials` può essere letta in caso di necessità ed in " "ogni ordine. Questa sezione contiene vari tutorial e documentazione " "orientati verso specifiche funzionalità del sistema." #: ../../docs/about/introduction.rst:93 msgid "" "The :ref:`sec-devel` section is intended for advanced users and contributors " "to the engine development, with information on compiling the engine, " "developing C++ modules or editor plugins." msgstr "" "La sezione :ref:`sec-devel` è orientata ad utenti avanzati e sviluppatori " "che vogliano contribuire allo sviluppo di Godot; contiene informazioni su " "come compilare Godot Engine, come sviluppare moduli in C++ o plugin per " "l'editor." #: ../../docs/about/introduction.rst:96 msgid "" "The :ref:`sec-community` section gives information related to contributing " "to engine development and the life of its community, e.g. how to report " "bugs, help with the documentation, etc. It also points to various community " "channels like IRC and Discord and contains a list of recommended third-party " "tutorials outside of this documentation." msgstr "" "La sezione :ref:`sec-community` contiene informazioni su come contribuire " "allo sviluppo del motore di gioco e sulla vita della community, per esempio: " "come segnalare bug, aiutare con la documentazione, eccetera. Contiene " "inoltre riferimenti ai vari canali di comunicazione tra cui IRC e Discord e " "una lista di tutorial raccomandati, creati da terze parti, esterni a questa " "documentazione." #: ../../docs/about/introduction.rst:101 msgid "" "Finally, the :ref:`sec-class-ref` is the documentation of the Godot API, " "which is also available directly within the engine's script editor. It is " "generated automatically from a file in the main source repository, therefore " "the generated files of the documentation are not meant to be modified. See :" "ref:`doc_updating_the_class_reference` for details." msgstr "" "Infine la sezione :ref:`sec-class-ref` contiene la documentazione della " "Godot API, disponibile anche direttamente all'interno dell'editor. Questa " "documentazione è generata automaticamente da un file all'interno del " "repository principale, i file generati automaticamente non sono pertanto " "destinati ad essere modificati direttamente. Vedere la sezione :ref:" "`doc_updating_the_class_reference` per ulteriori informazioni." #: ../../docs/about/introduction.rst:107 msgid "" "In addition to this documentation you may also want to take a look at the " "various `Godot demo projects `_." msgstr "" "In aggiunta a questa documentazione potresti voler dare un'occhiata ai vari " "`progetti demo di Godot `_." #: ../../docs/about/introduction.rst:110 msgid "Have fun reading and making games with Godot Engine!" msgstr "Divertiti durante la lettura e nel creare giochi con Godot Engine!" #: ../../docs/about/faq.rst:4 #: ../../docs/tutorials/assetlib/what_is_assetlib.rst:29 msgid "Frequently asked questions" msgstr "Domande frequenti" #: ../../docs/about/faq.rst:7 msgid "" "What can I do with Godot? How much does it cost? What are the license terms?" msgstr "" "Cosa posso fare con Godot? Quanto costa? Quali sono le condizioni di licenza?" #: ../../docs/about/faq.rst:9 msgid "" "Godot is `Free and Open-Source Software `_ available under the `OSI-approved `_ MIT license. This means it is free as in " "\"free speech\" as well as in \"free beer.\"" msgstr "" "Godot è un software Libre/Open Source disponibile sotto la `licenza MIT " "approvata dall'OSI `_" #: ../../docs/about/faq.rst:11 msgid "In short:" msgstr "Ricapitolando:" #: ../../docs/about/faq.rst:13 msgid "" "You are free to download and use Godot for any purpose, personal, non-" "profit, commercial, or otherwise." msgstr "" "Sei libero di scaricare e utilizzare Godot per qualsiasi scopo: personale, " "non-profit, commerciale o altro." #: ../../docs/about/faq.rst:14 msgid "" "You are free to modify, distribute, redistribute, and remix Godot to your " "heart's content, for any reason, both non-commercially and commercially." msgstr "" "Sei libero di modificare e ridistribuire Godot secondo i tuoi gusti, per " "qualsiasi scopo, sia commerciali che non." #: ../../docs/about/faq.rst:16 msgid "" "All the contents of this accompanying documentation are published under the " "permissive Creative Commons Attribution 3.0 (`CC-BY 3.0 `_) license, with attribution to \"Juan " "Linietsky, Ariel Manzur and the Godot Engine community.\"" msgstr "" "Tutti i contenuti della documentazione sono coperti dalla licenza permissiva " "Creative Commons Attribution 3.0 (`CC-BY 3.0 `_), con attribuzione a \"Juan Linietsky, Ariel Manzur and " "the Godot Engine community\"" #: ../../docs/about/faq.rst:20 msgid "" "Logos and icons are generally under the same Creative Commons license. Note " "that some third-party libraries included with Godot's source code may have " "different licenses." msgstr "" "Loghi e icone sono in linea generale coperti dalla stessa licenza Creative " "Commons. Alcune librerie di terze parti incluse con il codice sorgente di " "Godot possono però essere coperte da diverse licenze." #: ../../docs/about/faq.rst:24 msgid "" "For full details, look at the `COPYRIGHT.txt `_ as well as the `LICENSE.txt `_ and `LOGO_LICENSE." "txt `_ " "files in the Godot repository." msgstr "" "Per maggiori dettagli, guarda i file `COPYRIGHT.txt `_, `LICENSE.txt `_ e `LOGO_LICENSE.txt " "`_ nella " "repository di Godot." #: ../../docs/about/faq.rst:28 msgid "" "Also, see `the license page on the Godot website `_." msgstr "" "Consultare anche 'la pagina sulla licenza presente nel sito web di Godot " "`_." #: ../../docs/about/faq.rst:31 msgid "Which platforms are supported by Godot?" msgstr "Quali piattaforme sono supportate da Godot?" #: ../../docs/about/faq.rst:33 msgid "**For the editor:**" msgstr "**Per l'editor:**" #: ../../docs/about/faq.rst:35 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:39 #: ../../docs/tutorials/misc/jitter_stutter.rst:53 msgid "Windows" msgstr "Windows" #: ../../docs/about/faq.rst:36 ../../docs/about/faq.rst:42 #: ../../docs/tutorials/misc/jitter_stutter.rst:78 msgid "macOS" msgstr "macOS" #: ../../docs/about/faq.rst:37 ../../docs/about/faq.rst:43 msgid "X11 (Linux, \\*BSD)" msgstr "X11 (Linux, \\*BSD)" #: ../../docs/about/faq.rst:39 msgid "**For exporting your games:**" msgstr "**Per esportare i vostri giochi:**" #: ../../docs/about/faq.rst:41 msgid "Windows (and UWP)" msgstr "Windows (e UWP)" #: ../../docs/about/faq.rst:44 #: ../../docs/getting_started/step_by_step/exporting.rst:186 #: ../../docs/tutorials/misc/jitter_stutter.rst:84 msgid "Android" msgstr "Android" #: ../../docs/about/faq.rst:45 #: ../../docs/getting_started/step_by_step/exporting.rst:238 #: ../../docs/tutorials/misc/jitter_stutter.rst:90 msgid "iOS" msgstr "iOS" #: ../../docs/about/faq.rst:46 msgid "Web" msgstr "Web" #: ../../docs/about/faq.rst:48 msgid "" "Both 32- and 64-bit binaries are supported where it makes sense, with 64 " "being the default." msgstr "" "I binari a 32 e 64 bit sono entrambi supportati qualora abbia senso, con la " "versione a 64 bit di default." #: ../../docs/about/faq.rst:51 msgid "" "Some users also report building and using Godot successfully on ARM-based " "systems with Linux, like the Raspberry Pi." msgstr "" "Alcuni utenti hanno riportato di aver compilato e usato Godot con successo " "su sistemi ARM-based con Linux, come il Raspberry Pi." #: ../../docs/about/faq.rst:54 msgid "" "Additionally, there is some unofficial third-party work being done on " "building for some consoles. However, none of this is included in the default " "build scripts or export templates at this time." msgstr "" "Ci sono inoltre lavori fatti da terzi che permettono a Godot di funzionare " "su alcune console. Nulla di tutto questo però è incluso di default negli " "script di compilazione o nei template per l'export." #: ../../docs/about/faq.rst:58 msgid "" "For more on this, see the sections on :ref:`exporting ` and :ref:`compiling Godot yourself `." msgstr "" "Per avere maggiori informazioni a questo riguardo fare riferimento alle " "sezioni :ref:`exporting `e :ref:`compiling Godot " "yourself `." #: ../../docs/about/faq.rst:62 msgid "Which programming languages are supported in Godot?" msgstr "Quali sono i linguaggi sono supportati in Godot?" #: ../../docs/about/faq.rst:64 msgid "" "The officially supported languages for Godot are GDScript, Visual Scripting, " "C#, and C++. See the subcategories for each language in the :ref:`scripting " "` section." msgstr "" "I linguaggi supportati ufficialmente per Godot sono GDScript, Visual " "Scripting, C# e C++. Vedere le sottocategorie per ogni linguaggio nella " "sezione :ref:`scripting `." #: ../../docs/about/faq.rst:68 msgid "" "If you are just starting out with either Godot or game development in " "general, GDScript is the recommended language to learn and use since it is " "native to Godot. While scripting languages tend to be less performant than " "lower-level languages in the long run, for prototyping, developing Minimum " "Viable Products (MVPs), and focusing on Time-To-Market (TTM), GDScript will " "provide a fast, friendly, and capable way of developing your games." msgstr "" "Se si sta appena iniziando con Godot o lo sviluppo di giochi in generale, " "GDScript è il linguaggio consigliato da imparare e utilizzare dal momento " "che è nativo di Godot. Mentre i linguaggi di scripting tendono ad essere " "meno performanti di quelli di livello inferiore nel lungo periodo, per la " "prototipazione, lo sviluppo di prodotti a basso costo (MVP), e " "concentrandosi sul time-to-market (TTM), GDScript fornirà un modo veloce, " "facile e funzionale di sviluppare i vostri giochi." #: ../../docs/about/faq.rst:75 msgid "" "Note that C# support is still relatively new, and as such, you may encounter " "some issues along the way. Our friendly and hard-working development " "community is always ready to tackle new problems as they arise, but since " "this is an open-source project, we recommend that you first do some due " "diligence yourself. Searching through discussions on `open issues `_ is a great way to start your " "troubleshooting." msgstr "" "Si noti che il supporto C# è ancora relativamente nuovo, e come tale, si " "possono incontrare alcuni problemi. La nostra comunità di sviluppo " "amichevole e laboriosa è sempre pronta ad affrontare i nuovi problemi che si " "presentano, ma poiché questo è un progetto open-source, si consiglia di fare " "prima un po' di dovuta diligenza. La ricerca tra le discussioni sui problemi " "aperti `_ è un ottimo modo per " "iniziare la risoluzione dei problemi." #: ../../docs/about/faq.rst:82 msgid "" "As for new languages, support is possible via third parties using the " "GDNative / NativeScript / PluginScript facilities. (See the question about " "plugins below.) Work is currently underway, for example, on unofficial " "bindings for Godot to `Python `_ " "and `Nim `_." msgstr "" "Per quanto riguarda nuovi linguaggi, il supporto è possibile tramite terze " "parti utilizzando i servizi GDNative / NativeScript / PluginScript. (Vedere " "domanda sui plugin qui sotto.) Attualmente sono in corso lavori, ad esempio, " "su binding non ufficiali per usare Godot con `Python `_ o con `Nim `_." #: ../../docs/about/faq.rst:88 msgid "What is GDScript and why should I use it?" msgstr "Che cos'è il GDScript e perché dovrei usarlo?" #: ../../docs/about/faq.rst:90 msgid "" "GDScript is Godot's integrated scripting language. It was built from the " "ground up to maximize Godot's potential in the least amount of code, " "affording both novice and expert developers alike to capitalize on Godot's " "strengths as fast as possible. If you've ever written anything in a language " "like Python before then you'll feel right at home. For examples, history, " "and a complete overview of the power GDScript offers you, check out the :ref:" "`GDScript scripting guide `." msgstr "" "GDScript è il linguaggio di script integrato di Godot. E' stato costruito da " "zero per massimizzare il potenziale di Godot nella minor quantità di codice, " "offrendo sia ai principianti che agli sviluppatori esperti di sfruttare al " "meglio i punti di forza di Godot. Se avete già scritto qualcosa in un " "linguaggio come Python allora vi sentirete subito a vostro agio. Per esempi, " "evoluzione e una panoramica completa delle capacità che GDScript offre, " "potete leggere `GDScript scripting guide `_." #: ../../docs/about/faq.rst:97 msgid "" "There are several reasons to use GDScript--especially when you are " "prototyping, in alpha/beta stages of your project, or are not creating the " "next AAA title--but the most salient reason is the overall **reduction of " "complexity.**" msgstr "" "Ci sono diverse ragioni per usare GDScript, specialmente quando si sta " "prototipando, in stadi alfa/beta del progetto, o non si sta creando il " "prossimo titolo AAA, ma la ragione più saliente è la generale ** riduzione " "della complessità.**" #: ../../docs/about/faq.rst:101 msgid "" "The original intent of creating a tightly integrated, custom scripting " "language for Godot was two-fold: first, it reduces the amount of time " "necessary to get up and running with Godot, giving developers a rapid way of " "exposing themselves to the engine with a focus on productivity; second, it " "reduces the overall burden of maintenance, attenuates the dimensionality of " "issues, and allows the developers of the engine to focus on squashing bugs " "and improving features related to the engine core--rather than spending a " "lot of time trying to get a small set of incremental features working across " "a large set of languages." msgstr "" "L'intento originale di creare un linguaggio di scripting strettamente " "integrato e personalizzato per Godot era duplice: in primo luogo, riduceva " "la quantità di tempo necessaria per mettersi in funzione con Godot, dando " "agli sviluppatori un modo rapido di esporsi al motore con un focus sulla " "produttività; in secondo luogo, riduce l'onere complessivo della " "manutenzione, attenua la dimensione dei problemi, e permette agli " "sviluppatori del motore di concentrarsi sulla correzione dei bug e " "migliorare le funzionalità relative al motore, piuttosto che spendere molto " "tempo cercando di ottenere un piccolo insieme di nuove caratteristiche " "lavorando su un grande insieme di linguaggi." #: ../../docs/about/faq.rst:109 msgid "" "Since Godot is an open-source project, it was imperative from the start to " "prioritize a more integrated and seamless experience over attracting " "additional users by supporting more familiar programming languages--" "especially when supporting those more familiar languages would result in a " "worse experience. We understand if you would rather use another language in " "Godot (see the list of supported options above). That being said, if you " "haven't given GDScript a try, try it for **three days**. Just like Godot, " "once you see how powerful it is and rapid your development becomes, we think " "GDScript will grow on you." msgstr "" "Essendo Godot un progetto Open Source, era imperativo sin dall'inizio dare " "prioritá ad una esperienza il piú possibile integrata e fluida piuttosto che " "cercare di attirare piú utenti supportando i linguaggi di programmazione piú " "famosi, specialmente quando il supporto a tali linguaggi risulterebbe in " "un'esperienza peggiore. Capiamo se volete utilizzare un altro linguaggio in " "Godot (vedere la lista delle opzioni supportate sopra). Detto questo, se non " "avete ancora provato GDScript, provatelo per **tre giorni**. Esattamente " "come per Godot, una volta che avrete constatato quanto potente é, e quanto " "velocizza lo sviluppo, pensiamo che GDScript vi piacerá sempre di piú." #: ../../docs/about/faq.rst:118 msgid "" "More information about getting comfortable with GDScript or dynamically " "typed languages can be found in the :ref:`doc_gdscript_more_efficiently` " "tutorial." msgstr "" "Ulteriori informazioni su come prendere mano con GDScript o altri linguaggi " "tipizzati dinamicamente possono essere trovate nel tutorial :ref:" "`doc_gdscript_more_efficiently`." #: ../../docs/about/faq.rst:122 msgid "What were the motivations behind creating GDScript?" msgstr "Perché creare GDScript?" #: ../../docs/about/faq.rst:124 msgid "" "The main reasons for creating a custom scripting language for Godot were:" msgstr "" "Le ragioni principali per creare un linguaggio di scripting ideato per Godot " "sono state:" #: ../../docs/about/faq.rst:126 msgid "" "Poor thread support in most script VMs, and Godot uses threads (Lua, Python, " "Squirrel, JS, AS, etc.)." msgstr "" "Cattivo supporto ai thread nella maggior parte delle VM degli altri " "linguaggi, e Godot usa thread (Lua, Python, Squirrel, JS, AS, ecc.)." #: ../../docs/about/faq.rst:128 msgid "" "Poor class-extending support in most script VMs, and adapting to the way " "Godot works is highly inefficient (Lua, Python, JS)." msgstr "" "Non esiste un buon supporto per l'estensione delle classi nella maggior " "parte delle VM degli altri linguaggi, e adattarle al funzionamento di Godot " "è altamente inefficiente (Lua, Python, JS)." #: ../../docs/about/faq.rst:130 msgid "" "Many existing languages have horrible interfaces for binding to C++, " "resulting in large amount of code, bugs, bottlenecks, and general " "inefficiency (Lua, Python, Squirrel, JS, etc.) We wanted to focus on a great " "engine, not a great amount of integrations." msgstr "" "L'interfaccia per il binding con C++ è orrible, e risulta in una quantità " "enorme di codice, bug, colli di bottiglia e inefficienze in generale (Lua, " "Python, Squirrel, JS, ecc.)." #: ../../docs/about/faq.rst:133 msgid "" "No native vector types (vector3, matrix4, etc.), resulting in highly reduced " "performance when using custom types (Lua, Python, Squirrel, JS, AS, etc.)." msgstr "" "Nessun tipo nativo per vettori (vector3, matrix4, ecc.), che risulta in " "performance ridotte quando si usano tipi personalizzati (Lua, Python, " "Squirrel, JS, AS, ecc.)." #: ../../docs/about/faq.rst:136 msgid "" "Garbage collector results in stalls or unnecessarily large memory usage " "(Lua, Python, JS, AS, etc.)." msgstr "" "Il garbage collector produce blocchi o un uso della memoria inutilmente alto " "(Lua, Python, JS, AS, ecc.)." #: ../../docs/about/faq.rst:138 msgid "" "Difficulty to integrate with the code editor for providing code completion, " "live editing, etc. (all of them). This is well supported by GDScript." msgstr "" "Difficoltà nell'integrazione con il codice dell'editor per fornire code " "completion, live editing e tutte le altre funzionalità. GDScript ha un " "ottimo supporto per questo." #: ../../docs/about/faq.rst:142 msgid "GDScript was designed to curtail the issues above and more." msgstr "" "GDScript è stato progettato per ridurre i problemi di cui sopra e altri " "ancora." #: ../../docs/about/faq.rst:145 msgid "What type of 3D model formats does Godot support?" msgstr "Che tipi di formati per i modelli 3D supporta Godot?" #: ../../docs/about/faq.rst:147 msgid "" "Godot supports Collada via the `OpenCollada `_ exporter (Maya, 3DSMax)." msgstr "" "Godot supporta Collada tramite `OpenCollada `_ exporter (Maya, 3DSMax)." #: ../../docs/about/faq.rst:149 msgid "" "If you are using Blender, take a look at our own `Better Collada Exporter " "`_." msgstr "" "Se stai usando Blender, dai un'occhiata al nostro `Better Collada Exporter " "`_." #: ../../docs/about/faq.rst:151 msgid "As of Godot 3.0, glTF is supported." msgstr "A partire da Godot 3.0 é supportato il formato glTF." #: ../../docs/about/faq.rst:153 msgid "" "FBX SDK has a `restrictive license `_, that is incompatible with the `open license " "`_ provided by Godot. That being said, " "FBX support could still be provided by third parties as a plugin. (See " "Plugins question below.)" msgstr "" "FBX SDK ha una `licenza molto restrittiva `_, che non è compatibile con la `open license " "`_ di Godot. Detto questo, il supporto " "per FBX è ancora previsto da compagnie di terze parti come plugin. (Vedi la " "domanda sui Plugin sotto.)" #: ../../docs/about/faq.rst:159 msgid "" "Will [insert closed SDK such as FMOD, GameWorks, etc.] be supported in Godot?" msgstr "" "Sarà [inserire SDK proprietari come FMOD, Gameworks, ecc] supportato in " "Godot?" #: ../../docs/about/faq.rst:161 msgid "" "The aim of Godot is to create a free and open-source MIT-licensed engine " "that is modular and extendable. There are no plans for the core engine " "development community to support any third-party, closed-source/proprietary " "SDKs, as integrating with these would go against Godot's ethos." msgstr "" "Godot ha l'obiettivo di creare una motore per videogiochi libero, open " "source, modulare ed estensibile. Non é previsto, da parte della comunitá di " "sviluppo del motore, il supporto per SDK di terze parti, a codice chiuso o " "proprietari in quanto integrarli andrebbe contro lo spitito di Godot." #: ../../docs/about/faq.rst:166 msgid "" "That said, because Godot is open-source and modular, nothing prevents you or " "anyone else interested in adding those libraries as a module and shipping " "your game with them--as either open- or closed-source." msgstr "" "Detto questo, essendo Godot open source e modulare, niente impedisce a te, o " "a chiunque altro sia interessato, di aggiungere queste librerie come moduli " "e rilasciare il tuo gioco usandole, sia come progetto open source che closed " "source." #: ../../docs/about/faq.rst:170 msgid "" "To see how support for your SDK of choice could still be provided, look at " "the Plugins question below." msgstr "" "Per vedere come possa essere fornito il supporto per il SDK scelto, vedere " "la domanda sui Plugins poco sopra." #: ../../docs/about/faq.rst:173 msgid "" "If you know of a third-party SDK that is not supported by Godot but that " "offers free and open-source integration, consider starting the integration " "work yourself. Godot is not owned by one person; it belongs to the " "community, and it grows along with ambitious community contributors like you." msgstr "" "Se conosci un SDK di terze parti che non é attualmente supportato da Godot " "ma che offre un'integrazione open source, puoi considerare di iniziare a " "lavorare sull'integrazione. Godot non é un progetto di proprietá di una " "persona, appartiene alla comunitá e cresce attraverso il lavoro di ambiziosi " "contributori come te." #: ../../docs/about/faq.rst:179 msgid "" "How should assets be created to handle multiple resolutions and aspect " "ratios?" msgstr "" "Come dovrebbero essere create le risorse per gestire risoluzioni grafiche " "multiple e diversi formati di schermo?" #: ../../docs/about/faq.rst:181 msgid "" "This question pops up often and it's probably thanks to the misunderstanding " "created by Apple when they originally doubled the resolution of their " "devices. It made people think that having the same assets in different " "resolutions was a good idea, so many continued towards that path. That " "originally worked to a point and only for Apple devices, but then several " "Android and Apple devices with different resolutions and aspect ratios were " "created, with a very wide range of sizes and DPIs." msgstr "" "Questa domanda viene posta spesso, probabilmente grazie ad un'incomprensione " "creata da Apple quando hanno duplicato la risoluzione dei propri device per " "la prima volta: è stato fatto credere alle persone che avere le proprie " "risorse in diverse risoluzioni fosse una buona idea e tanti hanno continuato " "su questa linea. Questa soluzione all'inizio funzionò, fino a un certo punto " "e solo per i devices di Apple, poi però vennero creati molti devices, sia " "Android che Apple, con una grande varietà di dimensioni e DPI." #: ../../docs/about/faq.rst:189 msgid "" "The most common and proper way to achieve this is to, instead, use a single " "base resolution for the game and only handle different screen aspect ratios. " "This is mostly needed for 2D, as in 3D it's just a matter of Camera XFov or " "YFov." msgstr "" "Il modo più comune e corretto per ottenere questo è invece, usare una " "singola risoluzione di base per il gioco e gestire solamente le differenti " "proporzioni dello schermo. Questo è sopratutto necessario per il 2D, poiché " "nel 3D è solo una questione di Camera XFov o YFov." #: ../../docs/about/faq.rst:193 msgid "" "Choose a single base resolution for your game. Even if there are devices " "that go up to 2K and devices that go down to 400p, regular hardware scaling " "in your device will take care of this at little or no performance cost. Most " "common choices are either near 1080p (1920x1080) or 720p (1280x720). Keep in " "mind the higher the resolution, the larger your assets, the more memory they " "will take and the longer the time it will take for loading." msgstr "" "Scegli una singola risoluzione di base per il tuo gioco. Anche se ci sono " "dispositivi che vanno fino a 2K e dispositivi che hanno solo 400p, il " "normale ridimensionamento attraverso l'hardware del tuo dispositivo si " "prenderà cura di ciò ad un costo pressoché impercettibile. Le scelte più " "comuni sono solitamente 1080p (1920x1080) oppure 720p (1280x720). Tieni a " "mente che all'aumentare della risoluzione, aumenteranno la dimensione dei " "tuoi asset, la memoria da loro richiesta e il tempo necessario per il " "caricamento." #: ../../docs/about/faq.rst:201 msgid "" "Use the stretch options in Godot; 2D stretching while keeping aspect ratios " "works best. Check the :ref:`doc_multiple_resolutions` tutorial on how to " "achieve this." msgstr "" "Utilizza le opzioni di adattamento in Godot; l'allungamento 2D con il " "mantenimento dell'aspetto da i migliori risultati. Controlla il :ref:" "`doc_multiple_resolutions` tutorial su come ottenere questo risultato." #: ../../docs/about/faq.rst:205 msgid "" "Determine a minimum resolution and then decide if you want your game to " "stretch vertically or horizontally for different aspect ratios, or if there " "is one aspect ratio and you want black bars to appear instead. This is also " "explained in :ref:`doc_multiple_resolutions`." msgstr "" "Determina una risoluzione minima e quindi decidi se vuoi che il tuo gioco si " "adatti verticalmente o orizzontalmente per i diversi aspect ratio, o se ce " "n'è una minima e vuoi invece che appaiano delle barre nere. Questo è anche " "spiegato nello step precedente: :ref:`doc_multiple_resolutions` ." #: ../../docs/about/faq.rst:210 msgid "" "For user interfaces, use the :ref:`anchoring ` to " "determine where controls should stay and move. If UIs are more complex, " "consider learning about Containers." msgstr "" "Per le interfacce utente, usa :ref:`anchoring ` in " "modo da decidere dove i controlli dovrebbero essere e muoversi. Se la UI è " "più complessa, considera i Containers." #: ../../docs/about/faq.rst:214 msgid "And that's it! Your game should work in multiple resolutions." msgstr "Ecco qui! Il tuo gioco dovrebbe funzionare su risoluzioni multiple." #: ../../docs/about/faq.rst:216 msgid "" "If there is a desire to make your game also work on ancient devices with " "tiny screens (fewer than 300 pixels in width), you can use the export option " "to shrink images, and set that build to be used for certain screen sizes in " "the App Store or Google Play." msgstr "" "Se davvero desideri che il tuo gioco funzioni anche su vecchi device con " "piccoli schermi (meno di 300 pixel in larghezza), puoi usare l'opzione di " "esportazione per ridurre la dimensione delle immagini, e impostarla per " "essere usata con schermi di determinate dimesioni nell'App Store o in Google " "Play." #: ../../docs/about/faq.rst:222 msgid "How can I extend Godot?" msgstr "Come posso estendere Godot?" #: ../../docs/about/faq.rst:224 msgid "" "For extending Godot, like creating Godot Editor plugins or adding support " "for additional languages, take a look at :ref:`EditorPlugins " "` and tool scripts." msgstr "" "Per estendere Godot, ad esempio creando plugin per Godot Editor o " "aggiungere supporto per ulteriori linguaggi fai riferimento a :ref:" "`EditorPlugins ` e ai tool script." #: ../../docs/about/faq.rst:228 msgid "Also, see the official blog posts on these topics:" msgstr "Vedere anche i post ufficiali sul blog su questi argomenti:" #: ../../docs/about/faq.rst:230 msgid "" "`A look at the GDNative architecture `_" msgstr "" "`Uno sguardo sull'architettura GDNative `_" #: ../../docs/about/faq.rst:231 msgid "`GDNative is here! `_" msgstr "`GDNative è qua! `_" #: ../../docs/about/faq.rst:233 msgid "" "You can also take a look at the GDScript implementation, the Godot modules, " "as well as the `unofficial Python support `_ for Godot. This would be a good starting point to see how " "another third-party library integrates with Godot." msgstr "" "Puoi anche dare un'occhiata all'implementazione di GDScript, ai moduli di " "Godot e al `supporto non ufficiale per Python `_ per Godot. Questo é un buon punto di inizio per capire come " "librerie di terze parti si integrano in Godot." #: ../../docs/about/faq.rst:239 msgid "I would like to contribute! How can I get started?" msgstr "Vorrei contribuire! Come posso iniziare?" #: ../../docs/about/faq.rst:241 msgid "" "Awesome! As an open-source project, Godot thrives off of the innovation and " "ambition of developers like you." msgstr "" "Stupendo! Essendo un progetto open source, Godot prospera attraverso " "l'innovazione e l'ambizione di sviluppatori come te." #: ../../docs/about/faq.rst:244 msgid "" "The first place to get started is in the `issues `_. Find an issue that resonates with you, then " "proceed to the `How to Contribute `_ guide to learn how to " "fork, modify, and submit a Pull Request (PR) with your changes." msgstr "" "Il primo posto da cui iniziare é la sezione `issues `_. Trova una issue che trovi particolarmente " "adatta a te, poi procedi alla guida `Come Contribuire `_ " "per imparare come fare fork, modifiche e inoltrare una Pull Request (PR) con " "le tue modifiche." #: ../../docs/about/faq.rst:249 msgid "I have a great idea for Godot. How can I share it?" msgstr "Ho una grande idea per Godot. Come posso condividerla?" #: ../../docs/about/faq.rst:251 msgid "" "It might be tempting to want to bring ideas to Godot, like ones that result " "in massive core changes, some sort of mimicry of what another game engine " "does, or alternative workflows that you'd like built into the editor. These " "are great and we are thankful to have such motivated people want to " "contribute, but Godot's focus is and always will be the core functionality " "as outlined in the `Roadmap `_, `squashing bugs and addressing issues `_, and conversations between Godot " "community members." msgstr "" "Potrebbe essere una grande tentazione portare nuove idee in Godot, per " "esempio alcune che potrebbero risultare in grossi cambiamenti nelle " "funzionalitá di base del motore, replicare funzionalitá di altri motori, o " "aggiungere workflow alternativi che vorresti avere nell'editor. Questo é " "fantastico e siamo grati di avere persone motivate che abbiano voglia di " "contribuire, ma l'attenzione maggiore del team di sviluppo di Godot é e sará " "sempre rivolta alle funzionalitá di base come delineato nella `Roadmap " "`_, " "`risolvere bug e altri problemi `_, e la conversazione con tra i membri della comunitá di Godot." #: ../../docs/about/faq.rst:260 msgid "" "Most developers in the Godot community will be more interested to learn " "about things like:" msgstr "" "La maggior parte degli sviluppatori nella comunitá di Godot saranno più " "interessati ad apprendere cose tipo:" #: ../../docs/about/faq.rst:263 msgid "" "Your experience using the software and the problems you have (we care about " "this much more than ideas on how to improve it)." msgstr "" "La tua esperienza nell'utilizzo del software ed i problemi che hai (ci " "preoccupiamo di questo molto di più che di nuove idee su come migliorarlo)." #: ../../docs/about/faq.rst:265 msgid "" "The features you would like to see implemented because you need them for " "your project." msgstr "" "Le funzionalità che ti piacerebbe vedere implementate perchè ne hai bisogno " "per il tuo progetto." #: ../../docs/about/faq.rst:267 msgid "" "The concepts that were difficult to understand while learning the software." msgstr "" "I concetti che erano difficili da comprendere durante l'apprendimento del " "software." #: ../../docs/about/faq.rst:268 msgid "The parts of your workflow you would like to see optimized." msgstr "Le parti del tuo processo di lavoro che vorresti vedere ottimizzate." #: ../../docs/about/faq.rst:269 msgid "" "Parts where you missed clear tutorials or where the documentation wasn't " "clear." msgstr "" "Le parti per le quali non riuscivi a trovare dei tutorial soddisfacenti o in " "cui la documentazione non era chiara." #: ../../docs/about/faq.rst:271 msgid "" "Please don't feel like your ideas for Godot are unwelcome. Instead, try to " "reformulate them as a problem first, so developers and the community have a " "functional foundation to ground your ideas on." msgstr "" "Non credere che le tue idee per Godot non siano ben accette. Prova piuttosto " "a riformularle come problemi, per prima cosa, in modo che gli sviluppatori e " "la community abbiano delle fondamenta su cui basare le tue idee." #: ../../docs/about/faq.rst:275 msgid "" "A good way to approach sharing your ideas and problems with the community is " "as a set of user stories. Explain what you are trying to do, what behavior " "you expect to happen, and then what behavior actually happened. Framing " "problems and ideas this way will help the whole community stay focused on " "improving developer experiences as a whole." msgstr "" "Un buon modo per iniziare a codividere le tue idee e problemi con la " "comunitá é attraverso un insieme di situazioni di utilizzo. Spiega cosa stai " "cercando di fare, quale comportamento ti aspetti e quale comportamento ha " "effettivamente riscontrato. Inquadrare problemi e idee in questo modo aiuta " "l'intera comunitá a concentrarsi sul migliorare l'esperienza degli " "sviluppatori in modo organico." #: ../../docs/about/faq.rst:281 msgid "" "Bonus points for bringing screenshots, concrete numbers, test cases, or " "example projects (if applicable)." msgstr "" "Meglio ancora se provvedi screenshot, numeri concreti, casi d'uso o progetti " "come esempio (se possibile)." #: ../../docs/about/faq.rst:285 msgid "How can I support Godot development or contribute?" msgstr "Come posso supportare lo sviluppo di Godot o contribuire?" #: ../../docs/about/faq.rst:287 msgid "See :ref:`doc_ways_to_contribute`." msgstr "Dai un'occhiata a :ref:`doc_ways_to_contribute`." #: ../../docs/about/faq.rst:290 msgid "Who is working on Godot? How can I contact you?" msgstr "Chi lavora a Godot? Come posso contattarti?" #: ../../docs/about/faq.rst:292 msgid "" "See the corresponding page on the `Godot website `_." msgstr "" "Visita la pagina corrispondente sul `sito di Godot `_." #: ../../docs/about/docs_changelog.rst:4 msgid "Documentation changelog" msgstr "Changelog documentazione" #: ../../docs/about/docs_changelog.rst:6 msgid "" "The documentation is continually being improved. The release of version 3.1 " "includes many new tutorials, many fixes and updates for old tutorials, and " "many updates to the class reference. Below is a list of new tutorials added " "since version 3.0." msgstr "" "La documentazione viene continuamente migliorata. Il rilascio della versione " "3.1 include molti nuovi tutorial, molte correzioni e aggiornamenti per i " "vecchi tutorial e molti aggiornamenti per il riferimento delle classi. Di " "seguito è riportato un elenco di nuovi tutorial aggiunto dalla versione 3.0." #: ../../docs/about/docs_changelog.rst:10 msgid "" "This document only contains new tutorials so not all changes are reflected, " "many tutorials have been substantially updated but are not reflected in this " "document." msgstr "" "Questo documento contiene solo nuovi tutorial e non tutti i cambiamenti, " "molti tutorial sono stati sostanzialmente aggiornati ma non vengono " "riportate in questo documento." #: ../../docs/about/docs_changelog.rst:14 #, fuzzy msgid "New tutorials since version 3.1" msgstr "Nuovi tutorial dalla versione 3.0" #: ../../docs/about/docs_changelog.rst:17 #: ../../docs/about/docs_changelog.rst:103 #: ../../docs/getting_started/workflow/index.rst:2 msgid "Project workflow" msgstr "Flusso di lavoro del progetto" #: ../../docs/about/docs_changelog.rst:19 msgid ":ref:`doc_android_custom_build`" msgstr "" #: ../../docs/about/docs_changelog.rst:22 #: ../../docs/about/docs_changelog.rst:118 ../../docs/tutorials/2d/index.rst:2 msgid "2D" msgstr "2D" #: ../../docs/about/docs_changelog.rst:24 #, fuzzy msgid ":ref:`doc_2d_sprite_animation`" msgstr ":ref:`Organizzazione della scena `" #: ../../docs/about/docs_changelog.rst:27 #: ../../docs/tutorials/audio/index.rst:2 msgid "Audio" msgstr "Audio" #: ../../docs/about/docs_changelog.rst:29 #, fuzzy msgid ":ref:`doc_sync_with_audio`" msgstr ":ref:`Shaders `" #: ../../docs/about/docs_changelog.rst:32 ../../docs/tutorials/math/index.rst:2 msgid "Math" msgstr "" #: ../../docs/about/docs_changelog.rst:34 #, fuzzy msgid ":ref:`doc_beziers_and_curves`" msgstr ":ref:`Shaders `" #: ../../docs/about/docs_changelog.rst:35 #, fuzzy msgid ":ref:`doc_interpolation`" msgstr ":ref:`Exporting `" #: ../../docs/about/docs_changelog.rst:38 #: ../../docs/tutorials/inputs/index.rst:2 msgid "Inputs" msgstr "" #: ../../docs/about/docs_changelog.rst:40 #, fuzzy msgid ":ref:`doc_input_examples`" msgstr ":ref:`Signals `" #: ../../docs/about/docs_changelog.rst:43 ../../docs/tutorials/i18n/index.rst:2 msgid "Internationalization" msgstr "" #: ../../docs/about/docs_changelog.rst:45 msgid ":ref:`doc_localization_using_gettext`" msgstr "" #: ../../docs/about/docs_changelog.rst:48 #: ../../docs/about/docs_changelog.rst:154 #: ../../docs/tutorials/shading/index.rst:2 msgid "Shading" msgstr "Shading" #: ../../docs/about/docs_changelog.rst:54 msgid "Your First Shader Series:" msgstr "La tua prima serie di Shader:" #: ../../docs/about/docs_changelog.rst:51 #, fuzzy msgid ":ref:`doc_what_are_shaders`" msgstr ":ref:`Cosa sono le classi Godot `" #: ../../docs/about/docs_changelog.rst:52 #, fuzzy msgid ":ref:`doc_your_first_canvasitem_shader`" msgstr ":ref:`Shader CanvasItem `" #: ../../docs/about/docs_changelog.rst:53 #, fuzzy msgid ":ref:`doc_your_first_spatial_shader`" msgstr "Il tuo primo gioco" #: ../../docs/about/docs_changelog.rst:54 msgid ":ref:`doc_your_second_spatial_shader`" msgstr "" #: ../../docs/about/docs_changelog.rst:57 #: ../../docs/tutorials/networking/index.rst:2 msgid "Networking" msgstr "" #: ../../docs/about/docs_changelog.rst:59 #, fuzzy msgid ":ref:`doc_webrtc`" msgstr ":ref:`Exporting `" #: ../../docs/about/docs_changelog.rst:62 #: ../../docs/about/docs_changelog.rst:173 #: ../../docs/tutorials/plugins/index.rst:2 msgid "Plugins" msgstr "Plugins" #: ../../docs/about/docs_changelog.rst:64 #, fuzzy msgid ":ref:`doc_android_plugin`" msgstr "Android" #: ../../docs/about/docs_changelog.rst:65 #, fuzzy msgid ":ref:`doc_inspector_plugins`" msgstr "Android" #: ../../docs/about/docs_changelog.rst:68 #: ../../docs/about/docs_changelog.rst:184 #: ../../docs/tutorials/threads/index.rst:2 msgid "Multi-threading" msgstr "Il Multi-threading" #: ../../docs/about/docs_changelog.rst:70 #, fuzzy msgid ":ref:`doc_using_multiple_threads`" msgstr ":ref:`Signals `" #: ../../docs/about/docs_changelog.rst:73 #: ../../docs/about/docs_changelog.rst:189 #: ../../docs/tutorials/content/index.rst:2 msgid "Creating content" msgstr "Creazione di contenuti" #: ../../docs/about/docs_changelog.rst:75 #, fuzzy msgid ":ref:`doc_procedural_geometry`" msgstr ":ref:`Shaders `" #: ../../docs/about/docs_changelog.rst:78 #: ../../docs/tutorials/optimization/index.rst:2 msgid "Optimization" msgstr "Ottimizzazione" #: ../../docs/about/docs_changelog.rst:80 #, fuzzy msgid ":ref:`doc_using_multimesh`" msgstr ":ref:`Signals `" #: ../../docs/about/docs_changelog.rst:81 #, fuzzy msgid ":ref:`doc_using_servers`" msgstr ":ref:`Shaders `" #: ../../docs/about/docs_changelog.rst:84 #: ../../docs/tutorials/legal/index.rst:2 msgid "Legal" msgstr "Legale" #: ../../docs/about/docs_changelog.rst:86 msgid ":ref:`doc_complying_with_licenses`" msgstr "" #: ../../docs/about/docs_changelog.rst:89 msgid "New tutorials since version 3.0" msgstr "Nuovi tutorial dalla versione 3.0" #: ../../docs/about/docs_changelog.rst:92 #: ../../docs/getting_started/step_by_step/index.rst:2 #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:108 msgid "Step by step" msgstr "Passo passo" #: ../../docs/about/docs_changelog.rst:94 #, fuzzy msgid ":ref:`doc_signals`" msgstr ":ref:`Signals `" #: ../../docs/about/docs_changelog.rst:95 #, fuzzy msgid ":ref:`doc_exporting`" msgstr ":ref:`Exporting `" #: ../../docs/about/docs_changelog.rst:98 #: ../../docs/getting_started/step_by_step/scripting.rst:4 #: ../../docs/getting_started/scripting/index.rst:2 #: ../../docs/tutorials/networking/http_request_class.rst:22 msgid "Scripting" msgstr "Scripting" #: ../../docs/about/docs_changelog.rst:100 #, fuzzy msgid ":ref:`doc_gdscript_static_typing`" msgstr ":ref:`Tipizzazione forte di GDscript `" #: ../../docs/about/docs_changelog.rst:115 msgid "Best Practices:" msgstr "Migliori prassi:" #: ../../docs/about/docs_changelog.rst:106 #, fuzzy msgid ":ref:`doc_introduction_best_practices`" msgstr ":ref:`Introduzione `" #: ../../docs/about/docs_changelog.rst:107 #, fuzzy msgid ":ref:`doc_what_are_godot_classes`" msgstr ":ref:`Cosa sono le classi Godot `" #: ../../docs/about/docs_changelog.rst:108 #, fuzzy msgid ":ref:`doc_scene_organization`" msgstr ":ref:`Organizzazione della scena `" #: ../../docs/about/docs_changelog.rst:109 #, fuzzy msgid ":ref:`doc_scenes_versus_scripts`" msgstr ":ref:`Scene contro script `" #: ../../docs/about/docs_changelog.rst:110 #, fuzzy msgid ":ref:`doc_autoloads_versus_internal_nodes`" msgstr "" ":ref:`Autoloads versus nodi interni `" #: ../../docs/about/docs_changelog.rst:111 #, fuzzy msgid ":ref:`doc_node_alternatives`" msgstr ":ref:`Alternative ai nodi `" #: ../../docs/about/docs_changelog.rst:112 #, fuzzy msgid ":ref:`doc_godot_interfaces`" msgstr ":ref:` Interfacce di Godot `" #: ../../docs/about/docs_changelog.rst:113 #, fuzzy msgid ":ref:`doc_godot_notifications`" msgstr ":ref:`Notifiche di Godot `" #: ../../docs/about/docs_changelog.rst:114 #, fuzzy msgid ":ref:`doc_data_preferences`" msgstr ":ref:`Preferenze sui dati `" #: ../../docs/about/docs_changelog.rst:115 #, fuzzy msgid ":ref:`doc_logic_preferences`" msgstr ":ref:`Preferenze logiche `" #: ../../docs/about/docs_changelog.rst:120 #, fuzzy msgid ":ref:`doc_2d_lights_and_shadows`" msgstr ":ref:`Luci e ombre 2D `" #: ../../docs/about/docs_changelog.rst:121 #, fuzzy msgid ":ref:`doc_2d_meshes`" msgstr ":ref:`Meshes 2D `" #: ../../docs/about/docs_changelog.rst:124 ../../docs/tutorials/3d/index.rst:2 msgid "3D" msgstr "3D" #: ../../docs/about/docs_changelog.rst:126 #, fuzzy msgid ":ref:`doc_csg_tools`" msgstr ":ref:`CSG `" #: ../../docs/about/docs_changelog.rst:127 #, fuzzy msgid ":ref:`doc_animating_thousands_of_fish`" msgstr "" ":ref:`Animazione di migliaia di pesci con MultiMesh " "`" #: ../../docs/about/docs_changelog.rst:128 #, fuzzy msgid ":ref:`doc_controlling_thousands_of_fish`" msgstr "" ":ref:`Controllare migliaia di pesci con Particles " "`" #: ../../docs/about/docs_changelog.rst:131 #: ../../docs/tutorials/physics/index.rst:2 msgid "Physics" msgstr "Fisica" #: ../../docs/about/docs_changelog.rst:133 #, fuzzy msgid ":ref:`doc_ragdoll_system`" msgstr ":ref:`Sistema di ragdoll `" #: ../../docs/about/docs_changelog.rst:134 #, fuzzy msgid ":ref:`doc_soft_body`" msgstr ":ref:`Softbody `" #: ../../docs/about/docs_changelog.rst:137 #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:2 #: ../../docs/tutorials/animation/index.rst:2 #: ../../docs/development/file_formats/tscn.rst:375 msgid "Animation" msgstr "Animazione" #: ../../docs/about/docs_changelog.rst:139 #, fuzzy msgid ":ref:`doc_2d_skeletons`" msgstr ":ref:`Scheletri 2D `" #: ../../docs/about/docs_changelog.rst:140 #, fuzzy msgid ":ref:`doc_animation_tree`" msgstr ":ref:`AnimationTree `" #: ../../docs/about/docs_changelog.rst:143 ../../docs/tutorials/gui/index.rst:2 msgid "GUI" msgstr "GUI" #: ../../docs/about/docs_changelog.rst:145 #, fuzzy msgid ":ref:`doc_gui_containers`" msgstr ":ref:` Interfacce di Godot `" #: ../../docs/about/docs_changelog.rst:148 #: ../../docs/tutorials/viewports/index.rst:2 #: ../../docs/tutorials/viewports/viewports.rst:4 msgid "Viewports" msgstr "Viewports" #: ../../docs/about/docs_changelog.rst:150 #, fuzzy msgid ":ref:`doc_viewport_as_texture`" msgstr "" ":ref:`Utilizzare una Viewport come una texture `" #: ../../docs/about/docs_changelog.rst:151 #, fuzzy msgid ":ref:`doc_custom_postprocessing`" msgstr ":ref:`Post-process personalizzato `" #: ../../docs/about/docs_changelog.rst:156 #, fuzzy msgid ":ref:`doc_intro_to_shaders_water_workshop`" msgstr "" ":ref:`Introduzione agli shaders: acqua 2D e 3D (7 video tutorial in inglese) " "`" #: ../../docs/about/docs_changelog.rst:157 #, fuzzy msgid ":ref:`doc_migrating_to_godot_shader_language`" msgstr "" ":ref:`Migrare al linguaggio di shading di Godot " "`" #: ../../docs/about/docs_changelog.rst:158 #, fuzzy msgid ":ref:`doc_advanced_postprocessing`" msgstr ":ref:`Post-process avanzato `" #: ../../docs/about/docs_changelog.rst:165 msgid "Shading Reference:" msgstr "Riferimenti allo Shading:" #: ../../docs/about/docs_changelog.rst:161 #, fuzzy msgid ":ref:`doc_shaders`" msgstr ":ref:`Shaders `" #: ../../docs/about/docs_changelog.rst:162 #, fuzzy msgid ":ref:`doc_shading_language`" msgstr ":ref:`Linguaggio di shading `" #: ../../docs/about/docs_changelog.rst:163 #, fuzzy msgid ":ref:`doc_spatial_shader`" msgstr ":ref:`Shaders `" #: ../../docs/about/docs_changelog.rst:164 #, fuzzy msgid ":ref:`doc_canvas_item_shader`" msgstr ":ref:`Shader CanvasItem `" #: ../../docs/about/docs_changelog.rst:165 #, fuzzy msgid ":ref:`doc_particle_shader`" msgstr ":ref:`Shaders `" #: ../../docs/about/docs_changelog.rst:168 ../../docs/tutorials/vr/index.rst:2 msgid "VR" msgstr "VR" #: ../../docs/about/docs_changelog.rst:170 msgid ":ref:`doc_vr_starter_tutorial`" msgstr "" #: ../../docs/about/docs_changelog.rst:175 #, fuzzy msgid ":ref:`doc_making_main_screen_plugins`" msgstr "Creare un nuovo progetto" #: ../../docs/about/docs_changelog.rst:176 msgid ":ref:`doc_spatial_gizmo_plugins`" msgstr "" #: ../../docs/about/docs_changelog.rst:179 #: ../../docs/tutorials/platform/index.rst:2 msgid "Platform-specific" msgstr "Piattaforma specifica" #: ../../docs/about/docs_changelog.rst:181 #, fuzzy msgid ":ref:`doc_customizing_html5_shell`" msgstr ":ref:`CSG `" #: ../../docs/about/docs_changelog.rst:186 msgid ":ref:`doc_thread_safe_apis`" msgstr "" #: ../../docs/about/docs_changelog.rst:191 #, fuzzy msgid ":ref:`doc_making_trees`" msgstr ":ref:`AnimationTree `" #: ../../docs/about/docs_changelog.rst:194 #: ../../docs/tutorials/misc/index.rst:2 msgid "Miscellaneous" msgstr "Varie" #: ../../docs/about/docs_changelog.rst:196 msgid ":ref:`doc_jitter_stutter`" msgstr "" #: ../../docs/about/docs_changelog.rst:197 msgid ":ref:`doc_running_code_in_the_editor`" msgstr "" #: ../../docs/about/docs_changelog.rst:198 msgid ":ref:`doc_change_scenes_manually`" msgstr "" #: ../../docs/about/docs_changelog.rst:199 msgid ":ref:`doc_gles2_gles3_differences`" msgstr "" #: ../../docs/about/docs_changelog.rst:202 #: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:231 #: ../../docs/development/compiling/index.rst:2 #: ../../docs/development/compiling/compiling_for_windows.rst:72 #: ../../docs/development/compiling/compiling_for_x11.rst:79 #: ../../docs/development/compiling/compiling_for_osx.rst:23 #: ../../docs/development/compiling/compiling_for_ios.rst:19 #: ../../docs/development/compiling/compiling_for_uwp.rst:24 msgid "Compiling" msgstr "Compilazione" #: ../../docs/about/docs_changelog.rst:204 msgid ":ref:`doc_optimizing_for_size`" msgstr "" #: ../../docs/about/docs_changelog.rst:205 msgid ":ref:`doc_compiling_with_script_encryption_key`" msgstr "" #: ../../docs/about/docs_changelog.rst:208 #: ../../docs/development/cpp/index.rst:2 msgid "Engine development" msgstr "Sviluppo del motore" #: ../../docs/about/docs_changelog.rst:210 msgid ":ref:`doc_binding_to_external_libraries`" msgstr "" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:4 msgid "Introduction to Godot’s editor" msgstr "Introduzione all'editor di Godot" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:6 msgid "" "This tutorial will run you through Godot’s interface. We’re going to look at " "the **Project Manager, docks, workspaces** and everything you need to know " "to get started with the engine." msgstr "" "Questo tutorial vi guiderà attraverso l'interfaccia di Godot. Vedremo le " "schermate di **Gestione Progetti, docks, spazi di lavoro** e tutto quello " "che c'è da sapere per iniziare a usare Godot." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:11 msgid "Project manager" msgstr "Gestore di Progetto" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:13 msgid "" "When you launch Godot, the first window you’ll see is the Project Manager. " "It lets you create, remove, import or play game projects." msgstr "" "Quando lanci Godot, la prima finestra che vedi è il gestore di progetto. Ti " "permette di creare, eliminare, importare o eseguire i progetti." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:16 #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:49 #: ../../docs/tutorials/assetlib/using_assetlib.rst:16 #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:22 msgid "|image0|" msgstr "|image0|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:18 msgid "" "In the top-right corner you’ll find a drop-down menu to change the editor’s " "language." msgstr "" "Nell'angolo in alto a destra vedrai un menù a tendina per cambiare la lingua " "dell'editor." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:21 #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:57 #: ../../docs/tutorials/assetlib/using_assetlib.rst:48 msgid "|image1|" msgstr "|image1|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:23 msgid "" "From the **Templates** tab you can download open source project templates " "and demos to help you get started faster." msgstr "" "Dalla scheda **Templates** puoi scaricare i modelli di progetto open source " "e i progetti dimostrativi per riuscire ad iniziare più in fretta." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:26 #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:71 #: ../../docs/tutorials/assetlib/using_assetlib.rst:58 msgid "|image2|" msgstr "|image2|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:29 msgid "Create or import a project" msgstr "Creare o importare un progetto" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:31 msgid "" "To create a new project, click the ``New Project`` button on the right. Give " "it a name and choose an empty folder on your computer to save it." msgstr "" "Per iniziare un nuovo progetto, clicca il bottone ``Nuovo Progetto`` sulla " "destra. Dagli un nome e scegli una cartella vuota nel tuo computer per " "salvarlo." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:34 #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:91 #: ../../docs/tutorials/assetlib/using_assetlib.rst:83 msgid "|image3|" msgstr "|image3|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:36 msgid "" "Click the Browse button to open Godot’s file browser and pick a location or " "type the folder’s path in the Project Path field." msgstr "" "Fare clic sul pulsante Sfoglia per aprire il browser dei file di Godot e " "scegliere una posizione o digitare il percorso della cartella nel campo " "Percorso del progetto." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:39 #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:102 #: ../../docs/tutorials/assetlib/using_assetlib.rst:88 msgid "|image4|" msgstr "|image4|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:41 msgid "" "When you see the green tick on the right, it means the engine detects an " "empty folder and you may click ``Create``. Godot will create the project for " "you and open it in the editor." msgstr "" "Quando si vede il segno di spunta verde sulla destra, significa che il " "motore rileva una cartella vuota e si può fare clic su \"Crea\". Godot " "creerà il progetto per voi e lo aprirà nell'editor." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:45 msgid "" "The next time you’ll open Godot, you’ll see your new project in the list. " "Double click on it to open it in the editor." msgstr "" "La prossima volta che aprirai Godot, vedrai il nuovo progetto nella lista. " "Un doppio click sul progetto lo aprirà nell'editor." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:48 #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:154 #: ../../docs/tutorials/assetlib/using_assetlib.rst:92 msgid "|image5|" msgstr "|image5|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:50 msgid "" "You can import existing projects in a similar way, using the Import button. " "Locate the folder that contains the project or the ``project.godot`` file to " "import and edit it." msgstr "" "Si possono importare progetti esistenti in maniera simile, utilizzando il " "bottone Importa. Trova la cartella che contiene il progetto o il file " "``project.godot`` per importarlo e modificarlo." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:54 #: ../../docs/tutorials/assetlib/using_assetlib.rst:113 msgid "|image7|" msgstr "|image7|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:56 msgid "When the folder path is correct, you'll see a green checkmark." msgstr "" "Se il percorso della cartella è corretto vedrai un segno di spunta verde." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:58 #: ../../docs/tutorials/assetlib/using_assetlib.rst:121 msgid "|image8|" msgstr "|image8|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:61 msgid "Your first look at Godot’s editor" msgstr "Una prima occhiata all'editor di Godot" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:63 msgid "" "Welcome to Godot! With your project open, you should see the editor’s " "interface with the 3D viewport active. You can change the current workspace " "at the top of the interface. Click on 2D to switch to the 2D workspace." msgstr "" "Benvenuti in Godot! Con il progetto aperto dovreste vedere l'interfaccia " "dell'editor con il l'area di lavoro 3D attiva. In alto nell'interfaccia è " "possibile cambiare lo spazio di lavoro. Facendo click su 2D si passerà allo " "spazio di lavoro 2D." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:68 #: ../../docs/tutorials/assetlib/using_assetlib.rst:142 msgid "|image9|" msgstr "|image9|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:70 msgid "Now you should see this interface, with empty docks on the right side." msgstr "" "Ora dovresti vedere questa interfaccia, con i pannelli vuoti nel lato di " "destra." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:72 #: ../../docs/tutorials/assetlib/using_assetlib.rst:148 msgid "|image10|" msgstr "|image10|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:74 msgid "" "At the top, from left to right, you can see the **main menus**, the " "**workspaces**, and the **playtest buttons**." msgstr "" "In alto, da sinistra a destra, è possibile visualizzare i **menu " "principali**, le **aree di lavoro**, e i **pulsanti playtest**." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:77 msgid "" "On the left side, you have the **FileSystem dock**, where you’ll manage your " "project files and assets." msgstr "" "Sul lato sinistro troverai il **FileSystem dock**, dove potrai gestire i " "file e le risorse del tuo progetto." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:80 #: ../../docs/tutorials/assetlib/using_assetlib.rst:153 msgid "|image11|" msgstr "|image11|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:82 msgid "" "On the right side, you’ll find the **Scene dock**, which lists the active " "scene’s content and the **Inspector** in the bottom right corner." msgstr "" "Sulla destra ci sarà il pannello **Scena**, che conterrà tutti i contenuti " "attivi nella scena ed il pannello **Inspector**, nell'angolo in basso a " "destra." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:85 #: ../../docs/tutorials/assetlib/using_assetlib.rst:161 msgid "|image12|" msgstr "|image12|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:87 msgid "" "In the center, you have the **Toolbar** at the top, where you’ll find tools " "to move, scale or lock your scene’s objects. It changes as you jump to " "different workspaces." msgstr "" "Al centro, in alto, si troverà la **Toolbar**, dove si potranno trovare gli " "strumenti per muovere, ridimensionare o bloccare gli oggetti nella scena. La " "**Toolbar** cambia le sue funzioni quando si passa tra i differenti spazi di " "lavoro." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:91 #: ../../docs/tutorials/assetlib/using_assetlib.rst:168 msgid "|image13|" msgstr "|image13|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:93 msgid "" "The **Bottom Panel** is the host for the debug console, the animation " "editor, the audio mixer… They are wide and can take precious space. That’s " "why they’re folded by default." msgstr "" "Il pannello in basso è dedicato al debug , all'editor per le animazioni e il " "mixer audio...Visto che occupano molto spazio, vengono mantenuti chiusi di " "default." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:97 #: ../../docs/tutorials/assetlib/using_assetlib.rst:115 msgid "|image14|" msgstr "|image14|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:100 msgid "The workspaces" msgstr "Spazi di lavoro" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:102 msgid "" "You can see four workspace buttons at the top: 2D, 3D, Script and AssetLib." msgstr "" "Nella parte superiore sono visibili quattro pulsanti dell'area di lavoro: " "2D, 3D, Script e AssetLib." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:105 msgid "" "You’ll use the **2D workspace** for all types of games. In addition to 2D " "games, the 2D workspace is where you'll build your interfaces. Press F1 to " "access it." msgstr "" "Userete l'area di lavoro **2D** per tutti i tipi di giochi. Oltre ai giochi " "2D, è qui che potrete creare le vostre interfacce. Premere F1 per accedervi." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:108 msgid "|image15|" msgstr "|image15|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:110 msgid "" "In the **3D workspace**, you can work with meshes, lights, and design levels " "for 3D games. Press F2 to access it." msgstr "" "Nell'area di lavoro **3D** è possibile lavorare con mesh, luci e livelli di " "progettazione per giochi 3D. Premere F2 per accedervi." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:113 msgid "|image16|" msgstr "|image16|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:115 msgid "" "Notice the text [perspective] under the toolbar, it is a button that opens a " "list of options related to the 3D viewport." msgstr "" "Notare il testo [prospettiva] sotto la barra degli strumenti, è un pulsante " "che apre un elenco di opzioni relative alla finestra di viewport 3D." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:117 msgid "|image20|" msgstr "|image20|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:119 msgid "" "Read :ref:`doc_introduction_to_3d` for more detail about **3D workspace**." msgstr "" "Leggi :ref:`doc_introduction_to_3d` per più dettagli riguardo l'area di " "lavoro **3D**." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:121 msgid "" "The **Script** workspace is a complete code editor with a debugger, rich " "auto-completion, and built-in code reference. Press F3 to access it, and F4 " "to search the reference." msgstr "" "L'area di lavoro **Script** è un editor di codice completo con un debugger, " "un ricco auto-completamento e un codice di riferimento integrato. Premere F3 " "per accedervi e F4 per cercare nella documentazione." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:125 msgid "|image17|" msgstr "|image17|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:127 msgid "" "Finally the **AssetLib** is a library of Free add-ons, scripts and assets to " "use in your projects." msgstr "" "Infine, la **AssetLib** è una libreria di componenti aggiuntivi, script e " "risorse gratuiti da utilizzare nei progetti." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:131 msgid "Modify the interface" msgstr "Modificare l'interfaccia" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:133 msgid "" "Godot’s interface lives in a single window. You cannot split it across " "multiple screens although you can work with an external code editor like " "Atom or Visual Studio for instance." msgstr "" "L'interfaccia di Godot vive in una sola finestra. Non è possibile dividerlo " "in più schermate, anche se è possibile lavorare con un editor di codice " "esterno come Atom o Visual Studio, per esempio." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:138 msgid "Move and resize docks" msgstr "Spostare e ridimensionare i pannelli" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:140 msgid "" "Click and drag on the edge of any dock or panel to resize it horizontally or " "vertically." msgstr "" "Fare clic e trascinare sul bordo di qualsiasi pannello per ridimensionarlo " "orizzontalmente o verticalmente." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:143 msgid "|image18|" msgstr "|image18|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:145 msgid "" "Click the three-dotted icon at the top of any dock to change its location." msgstr "" "Fare clic sull'icona a tre punti nella parte superiore di qualsiasi dock per " "modificarne la posizione." #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:148 msgid "|image19|" msgstr "|image19|" #: ../../docs/getting_started/step_by_step/intro_to_the_editor_interface.rst:150 msgid "" "Go to the ``Editor`` menu and ``Editor Settings`` to fine-tune the look and " "feel of the editor." msgstr "" "Andare al menu ``Editor`` e ``Editor Settings`` per ottimizzare l'aspetto " "dell'editor." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:4 msgid "Scenes and nodes" msgstr "Scene e nodi" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:11 msgid "" "Imagine for a second that you are not a game developer anymore. Instead, " "you're a chef! Change your hipster outfit for a toque and a double breasted " "jacket. Now, instead of making games, you create new and delicious recipes " "for your guests." msgstr "" "Immagina per un attimo di non essere più uno sviluppatore di giochi. Invece, " "sei un cuoco! Cambia il tuo abito hipster con un cappello bianco ed un " "grembiule. Ora, invece di fare giochi, crei nuove e deliziose ricette per i " "tuoi ospiti." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:16 msgid "" "So, how does a chef create a recipe? Recipes are divided into two sections: " "the first is the ingredients and the second is the instructions to prepare " "it. This way, anyone can follow the recipe and savor your magnificent " "creation." msgstr "" "Allora, come fa uno chef a creare una ricetta? Le ricette sono divise in due " "sezioni: la prima sono gli ingredienti e la seconda le istruzioni per la " "loro preparazione. In questo modo, chiunque può seguire la ricetta e " "assaporare la tua magnifica creazione." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:21 msgid "" "Making games in Godot feels pretty much the same way. Using the engine feels " "like being in a kitchen. In this kitchen, *nodes* are like a refrigerator " "full of fresh ingredients with which to cook." msgstr "" "Creare giochi con Godot é praticamente la stessa cosa. Usare il motore é " "come stare in una cucina. In questa cucina i *nodi* sono come un frigorifero " "pieno di ingredienti freschi con cui cucinare." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:25 msgid "" "There are many types of nodes. Some show images, others play sound, other " "nodes display 3D models, etc. There are dozens of them." msgstr "" "Ci sono diversi tipi di nodi. Alcuni mostrano immagini, altri riproducono " "suoni, altri ancora mostrano modelli 3D, ecc. Sono a dozzine." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:29 #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:90 #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:46 #: ../../docs/development/file_formats/tscn.rst:26 msgid "Nodes" msgstr "Nodi" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:31 msgid "" "But let's start with the basics. Nodes are fundamental building blocks for " "creating a game. As mentioned above, a node can perform a variety of " "specialized functions. However, any given node always has the following " "attributes:" msgstr "" "Ma iniziamo con le basi. I nodi sono i blocchi fondamentali per creare un " "gioco. Come detto poco fa un nodo puó avere una varietá di funzioni " "specializzate. In ogni caso, tutti i nodi hanno sempre i seguenti attributi:" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:35 msgid "It has a name." msgstr "Ha un nome." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:36 msgid "It has editable properties." msgstr "Ha delle proprietá modificabili." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:37 msgid "It can receive a callback to process every frame." msgstr "" "Può ricevere una chiamata a funzione (callback) per eseguire delle azioni " "ogni frame." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:38 msgid "It can be extended (to have more functions)." msgstr "Può essere esteso (in modo da dargli più funzionalità)." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:39 msgid "It can be added to another node as a child." msgstr "Può essere aggiunto ad altri nodi come figlio." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:43 msgid "" "The last one is important. Nodes can have other nodes as children. When " "arranged in this way, the nodes become a **tree**." msgstr "" "L'ultimo attributo é importante. I nodi posso avere altri nodi come figli. " "Quando sono organizzati in questo modo, i nodi diventano un **albero**." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:46 msgid "" "In Godot, the ability to arrange nodes in this way creates a powerful tool " "for organizing projects. Since different nodes have different functions, " "combining them allows for the creation of more complex functions." msgstr "" "In Godot, la possibilitá di disporre i nodi in questa maniera diventa uno " "strumento molto potente per organizzare i progetti. Siccome diversi nodi " "hanno differenti funzioni, combinarli permette la creazione di funzionalitá " "complesse." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:50 msgid "" "Don't worry if this doesn't click yet. We will continue to explore this over " "the next few sections. The most important fact to remember for now is that " "nodes exist and can be arranged this way." msgstr "" "Non preoccuparti se ancora non é immediato, continueremo ad esplorare questa " "meccanica nelle prossime sezioni. Il fatto piú importante da ricordare per " "ora é che i nodi esistono e possono essere disposti in questa maniera." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:55 #: ../../docs/tutorials/plugins/editor/making_main_screen_plugins.rst:75 msgid "Scenes" msgstr "Scene" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:59 msgid "" "Now that the concept of nodes has been defined, the next logical step is to " "explain what a Scene is." msgstr "" "Adesso che il concetto di nodo è chiaro, il prossimo passo logico è spiegare " "cosa è una Scena." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:62 msgid "" "A scene is composed of a group of nodes organized hierarchically (in tree " "fashion). Furthermore, a scene:" msgstr "" "Una scena é composta da un gruppo di nodi organizzato in maniera gerarchica " "(a mo' di albero). Ampliando, una scena:" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:65 msgid "always has one root node." msgstr "ha sempre un nodo radice (root)." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:66 msgid "can be saved to disk and loaded back." msgstr "puó essere salvata su disco e ri-caricata." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:67 msgid "can be *instanced* (more on that later)." msgstr "puó essere *instanziata* (maggiori dettagli piú avanti)." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:69 msgid "" "Running a game means running a scene. A project can contain several scenes, " "but for the game to start, one of them must be selected as the main scene." msgstr "" "Eseguire un gioco significa eseguire una scena. Un progetto puó contentere " "varie scene, ma per far partire il gioco una di queste deve essere " "selezionata come scena principale." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:72 msgid "" "Basically, the Godot editor is a **scene editor**. It has plenty of tools " "for editing 2D and 3D scenes as well as user interfaces, but the editor is " "based on the concept of editing a scene and the nodes that compose it." msgstr "" "Fondamentalmente, l'editor di Godot é un **editor di scene**. Contiene molti " "strumenti per modificare scene 2D e 3D cosí come interfacce utente, ma " "l'editor é basato sul concetto di manipolare una scena e i nodi che la " "compongono." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:77 msgid "Creating a new project" msgstr "Creare un nuovo progetto" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:79 msgid "" "Let's make these abstract concepts more concrete with an example. Following " "a long tradition in tutorials, we'll start with a \"Hello World\" project. " "This will introduce us to using the editor." msgstr "" "Rendiamo questi concetti concreti attraverso un esempio. Seguendo una lunga " "tradizione dei tutorial, inizieremo con un progetto \"Hello World\". Questo " "ci introdurrá all'uso dell'editor." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:83 msgid "" "If you run the Godot executable outside of a project, the Project Manager " "appears. This helps developers manage their projects." msgstr "" "Se avvii Godot al di fuori di un progetto apparirà il Gestore di Progetti. " "Questa finestra aiuta gli sviluppatori a gestire i propri progetti." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:88 msgid "" "To create a new project, click the \"New Project\" option. Choose and create " "a path for the project and specify the project name \"New Project\":" msgstr "" "Per creare un nuovo progetto, fai click sul bottone \"Nuovo Progetto\". " "Scegli e crea una cartella per il progetto e inserisci come nome del " "progetto \"Nuovo Progetto\":" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:94 #: ../../docs/getting_started/editor/external_editor.rst:32 #: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:43 #: ../../docs/development/compiling/compiling_with_mono.rst:182 msgid "Editor" msgstr "Editor" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:96 msgid "" "Once you've created the \"New Project\", then open it. This will open the " "Godot editor:" msgstr "" "Una volta che hai creato il \"Nuovo Progetto\", aprilo. Si aprirá l'editor " "di Godot:" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:101 msgid "" "As mentioned before, making games in Godot feels like being in a kitchen, so " "let's open the refrigerator and add some fresh nodes to the project. We'll " "begin with a \"Hello World\" message that we'll put on the screen." msgstr "" "Come detto prima, creare giochi con Godot é come essere in una cucina, per " "cui apriamo il nostro frigo e aggiungiamo alcuni nodi freschi al nostro " "progetto. Inizieremo con un messaggio \"Hello World\" che mostriamo sullo " "schermo." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:106 msgid "" "To do this, press the \"New Node\" button (which looks like a plus symbol):" msgstr "" "Per fare questo, premi il bottone \"Nuovo Nodo\" (quello che sembra un piú):" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:110 msgid "" "This will open the Create Node dialog, showing the long list of nodes that " "can be created:" msgstr "" "Questo aprirá la finestra pop-up Crea nodo con all'interno una lista dei " "nodi che possono essere creati:" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:115 msgid "" "From there, select the \"Label\" node first. Searching for it is probably " "the fastest way:" msgstr "" "Dalla lista seleziona il nodo \"Label\" per prima cosa. Utilizzare la una " "ricerca é probabilmente il modo piú veloce:" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:120 msgid "And finally, create the Label! A lot happens when Create is pressed:" msgstr "" "E infine, crea la Label. Molte cose accadono quando si preme il tasto Crea:" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:124 msgid "" "First of all, the scene changes to the 2D editor (because Label is a 2D Node " "type), and the Label appears, selected, at the top left corner of the " "viewport." msgstr "" "Prima di tutto la scena cambia sull'editor 2D (perché Label é un nodo 2D), " "quindi la Label appare, selezionata, nell'angolo in alto a sinistra " "dell'area di visualizzazione." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:127 msgid "" "The node appears in the scene tree editor (box in the top right corner), and " "the label properties appear in the Inspector (box in the bottom right " "corner)." msgstr "" "Il nodo appare nell'albero della scena (box nell'angolo in alto a destra), e " "le proprietá della Label appaiono nell'Inspector (box in basso a destra)." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:131 msgid "" "The next step will be to change the \"Text\" Property of the label. Let's " "change it to \"Hello World\":" msgstr "" "Il prossimo passo sará quello di cambiare la proprietá \"Text\" della Label. " "Cambiamolo in \"Hello World\":" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:136 msgid "" "Ok, everything's ready to run the scene! Press the PLAY SCENE Button on the " "top bar (or hit F6):" msgstr "" "Ok, tutto é pronto per eseguire la scena! Premi il tasto ESEGUI SCENA nella " "barra in cima (o premi F6):" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:141 msgid "Aaaand... Oops." msgstr "Eee... Oops." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:145 msgid "" "Scenes need to be saved to be run, so save the scene to something like Hello." "tscn in Scene -> Save:" msgstr "" "Le scene devono essere salvate per essere eseguite, quindi salva la scena " "con un nome come Hello.tscn in Scena -> Salva Scena:" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:150 msgid "" "And here's when something funny happens. The file dialog is a special file " "dialog, and only allows you to save inside the project. The project root is " "\"res://\" which means \"resource path\". This means that files can only be " "saved inside the project. For the future, when doing file operations in " "Godot, remember that \"res://\" is the resource path, and no matter the " "platform or install location, it is the way to locate where resource files " "are from inside the game." msgstr "" "E qua é dove qualcosa di particolare accade. La finestra che mostra i file é " "una finestra particolare e permette di salvare soltanto all'interno del " "progetto. La base o radice del progetto é \"res://\" che significa " "\"cartella delle risorse\". Questo vuol dire che i file possono essere " "salvati solo all'interno del progetto. In futuro, quando farai operazioni in " "Godot, ricorda che \"res://\" é la cartella delle risorse indipendentemente " "dalla piattaforma o da dove Godot é installato, questo é il modo per trovare " "le varie risorse dall'interno del gioco." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:158 msgid "" "After saving the scene and pressing run scene again, the \"Hello World\" " "demo should finally execute:" msgstr "" "Dopo aver salvato la scena ed aver premuto esegui scena di nuovo, il demo " "\"Hello World\" dovrebbe finalmente partire:" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:163 msgid "Success!" msgstr "Successo!" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:167 msgid "" "If this doesn't immediately work and you have a hiDPI display on at least " "one of your monitors, go to **Project → Project Settings → Display → " "Window** then enable **Allow Hidpi** under **Dpi**." msgstr "" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:175 msgid "Configuring the project" msgstr "Configurare il progetto" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:177 msgid "" "Ok, it's time to configure the project. Right now, the only way to run " "something is to execute the current scene. Projects, however, may have " "several scenes, so one of them must be set as the main scene. This is the " "scene that will be loaded any time the project is run." msgstr "" "Ok, é tempo di configurare il progetto. Per ora, l'unico modo per eseguire " "qualcosa é eseguire la scena corrente. I progetti, peró, possono avere molte " "scene, per cui una di loro deve essere configurata come scena principale. " "Questa scena é quella che verrá caricata ogni volta che il progetto sará " "eseguito." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:182 msgid "" "These settings are all stored in a project.godot file, which is a plaintext " "file in win.ini format (for easy editing). There are dozens of settings that " "you can change in this file to alter how a project executes. To simplify " "this process, Godot provides a project settings dialog, which acts as a sort " "of frontend to editing a project.godot file." msgstr "" "Questi parametri sono tutti memorizzati all'interno del file project.godot, " "che é un file di testo nel formato win.ini (per facilitá di modifica). Ci " "sono dozzine di parametri che puoi cambiare in questo file per modificare " "l'esecuzione del progetto. Per semplificare questo processo, Godot mette a " "disposizione una finestra \"Impostazioni Progetto\" che fa da interfaccia " "per la modifica del file project.godot." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:188 msgid "To access that dialog, select Project -> Project Settings. Try it now." msgstr "" "Per accedere a questa finestra, seleziona il menú Progetto -> Impostazioni " "Progetto. Provalo ora." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:190 msgid "" "Once the window opens, let's select a main scene. Locate the `Application/" "Run/Main Scene` property and click on it to select 'Hello.tscn'." msgstr "" "Una volta che la finestra si apre, seleziona la scena principale. Trova la " "proprietá `Application/Run/Main Scene` e clicca per selezionare 'Hello.tscn'." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:195 msgid "" "Now, with this change, when you press the regular Play button (or F5), this " "scene will run, no matter which scene is actively being edited." msgstr "" "Ora, con questa modifica, quando premi il bottone Play (o F5), questa scena " "verrá eseguita, indipendentemente da quale sia la scena attiva nell'editor." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:198 msgid "" "The project settings dialog provides a lot of options that can be saved to a " "project.godot file and shows their default values. If you change a value, a " "tick is marked to the left of its name. This means that the property will be " "saved to the project.godot file and remembered." msgstr "" "La finestra Impostazioni Progetto contiene molte opzioni che possono essere " "salvate su un file project.godot e i valori predefiniti. Se cambi uno di " "questi valori un simbolo di spunta compare alla sinistra del nome e " "significa che quella proprietá verrá salvata nel file project.godot e " "ricordata." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:203 msgid "" "As a side note, it is also possible to add custom configuration options and " "read them in at run-time using the :ref:`ProjectSettings " "` singleton." msgstr "" "Inoltre è anche possibile aggiungere opzioni personalizzate e leggerle " "durante l'esecuzione (il run-time), usando il singleton :ref:" "`ProjectSettings `." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:207 msgid "To be continued..." msgstr "Continua..." #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:209 msgid "" "This tutorial talked about \"scenes and nodes\", but so far there has been " "only *one* scene and *one* node! Don't worry, the next tutorial will expand " "on that..." msgstr "" "Questo tutorial parla di \"scene e nodi\", ma finora ci sono stati solo " "*una* scena e *un* nodo! Non preoccuparti, il prossimo tutorial spiegherá " "piú approfonditamente questo argomento..." #: ../../docs/getting_started/step_by_step/instancing.rst:4 msgid "Instancing" msgstr "Instanziare" #: ../../docs/getting_started/step_by_step/instancing.rst:9 msgid "" "Creating a single scene and adding nodes into it might work for small " "projects, but as a project grows in size and complexity, the number of nodes " "can quickly become unmanageable. To address this, Godot allows a project to " "be separated into any number of scenes. This provides you with a powerful " "tool that helps you organize the different components of your game." msgstr "" "Creare una singola scena e aggiungere nodi a questa puó funzionare per " "piccoli progetti ma, quando il progetto diventa piú grande e complesso, il " "numero di nodi puó diventare rapidamente ingestibile. Per risolvere questo " "problema Godot permette che un progetto sia separato in un qualsiasi numero " "di scene in modo da avere uno strumento che ti aiuti adn organizzare le " "diverse componenti di un gioco." #: ../../docs/getting_started/step_by_step/instancing.rst:15 msgid "" "In :ref:`doc_scenes_and_nodes` you learned that a scene is a collection of " "nodes organized in a tree structure, with a single node as the tree root." msgstr "" "In :ref:`doc_scenes_and_nodes` hai imparato che una scena é una collezione " "di nodi organizzata in una struttura ad albero, con un singolo nodo come " "radice." #: ../../docs/getting_started/step_by_step/instancing.rst:20 msgid "" "You can create as many scenes as you like and save them to disk. Scenes " "saved in this manner are called \"Packed Scenes\" and have a ``.tscn`` " "filename extension." msgstr "" "Puoi creare quante scene vuoi e salvarle su disco. Le scene salvate in " "questa maniera sono chiamate \"Packed Scenes\" e hanno estensione ``.tscn``." #: ../../docs/getting_started/step_by_step/instancing.rst:26 msgid "" "Once a scene has been saved, it can be instanced into another scene as if it " "were any other node." msgstr "" "Una volta che una scena é stata salvata puó successivamente essere " "istanziata all'interno di un'altra scena esattamente come qualunque altro " "nodo." #: ../../docs/getting_started/step_by_step/instancing.rst:31 msgid "In the above picture, Scene B was added to Scene A as an instance." msgstr "" "Nell'immagine sopra, la Scena B é stata aggiunta alla Scena A come istanza." #: ../../docs/getting_started/step_by_step/instancing.rst:34 msgid "Instancing by example" msgstr "Instanziazione per esempi" #: ../../docs/getting_started/step_by_step/instancing.rst:36 msgid "" "To learn how instancing works, let's start by downloading a sample project: :" "download:`instancing.zip `." msgstr "" "Per capire come funziona l'instanziazione, iniziamo scaricando un progetto " "di esempio: :download:`instancing.zip `." #: ../../docs/getting_started/step_by_step/instancing.rst:39 msgid "" "Unzip this project anywhere you like. Then open Godot and add this project " "to the project manager using the 'Import' button:" msgstr "" "Decomprimi questo progetto ovunque tu voglia, quindi apri Godot e aggiungilo " "al Gestore di Progetti utilizzando il bottone 'Importa':" #: ../../docs/getting_started/step_by_step/instancing.rst:44 msgid "" "Browse to the folder you extracted and open the \"project.godot\" file you " "can find inside it. After doing this, the new project will appear on the " "list of projects. Edit the project by pressing the 'Edit' button." msgstr "" "Naviga fino alla cartella in cui hai estratto l'archivio e apri il file " "project.godot che trovi all'interno, a questo punto il progetto apparirá " "nella lista dei progetti. Modifica il progetto premendo sul bottone " "'Modifica'." #: ../../docs/getting_started/step_by_step/instancing.rst:48 msgid "" "This project contains two scenes: \"Ball.tscn\" and \"Main.tscn\". The ball " "scene uses a :ref:`RigidBody2D ` to provide physics " "behavior while the main scene has a set of obstacles for the ball to collide " "with (using :ref:`StaticBody2D `)." msgstr "" "Questo progetto contiene due scene: \"Ball.tscn\" e \"Main.tscn\". La scena " "``Ball`` usa un :ref:`RigidBody2D ` per simulare un " "comportamento fisicamente corretto, mentre la scena principale contiene un " "insieme di ostacoli su cul la palla possa collidere (utilizzando :ref:" "`StaticBody2D `)." #: ../../docs/getting_started/step_by_step/instancing.rst:57 msgid "Open the ``Main`` scene, and then select the root node:" msgstr "Apri la scena ``Main`` e seleziona il nodo radice:" #: ../../docs/getting_started/step_by_step/instancing.rst:61 msgid "" "We want to add an instance of the ``Ball`` scene as a child of ``Main``. " "Click the \"link\"-shaped button (its hover-text says \"Instance a scene " "file as a Node.\") and select the ``Ball.tscn`` file." msgstr "" "Quello che vogliamo é aggiungere un'istanza della scena ``Ball`` come figlia " "di ``Main``, fai click sulla bottone a forma di catena (il testo in " "sovrimpressione dice \"Istanzia un file scena come nodo.\") e seleziona il " "file ``Ball.tscn``." #: ../../docs/getting_started/step_by_step/instancing.rst:67 msgid "" "The ball will be placed at the top-left corner of the screen area (this is " "``(0, 0)`` in screen coordinates). Click and drag the ball somewhere near " "the top-center of the scene:" msgstr "" "La palla sará piazzata nell'angolo in alto a sinistra dell'area di schermo " "(questa é la posizione ``(0, 0)`` in coordinate sullo schermo). Fai click e " "trascina la palla in una posizione in alto e centrale della scena:" #: ../../docs/getting_started/step_by_step/instancing.rst:73 msgid "Press \"Play\" and watch the ball fall to the bottom of the screen:" msgstr "Premi \"Play\" e guarda la palla cadere verso il fondo dello schermo:" #: ../../docs/getting_started/step_by_step/instancing.rst:78 msgid "Multiple instances" msgstr "Istanze multiple" #: ../../docs/getting_started/step_by_step/instancing.rst:80 msgid "" "You can add as many instances as you like to a scene, either by using the " "\"Instance\" button again, or by clicking on the ball instance and pressing " "\"Duplicate\" (Ctrl-D):" msgstr "" "Puoi aggiungere quante istanze vuoi in una scena, sia premendo sul bottone " "\"Istanzia\" di nuovo o facendo click sull'istanza della palla e premendo il " "\"Duplica\" (Ctrl+D):" #: ../../docs/getting_started/step_by_step/instancing.rst:86 msgid "Run the scene again and all of the balls will fall." msgstr "Esegui la scena di nuovo e tutte le palle cadranno." #: ../../docs/getting_started/step_by_step/instancing.rst:91 msgid "Editing instances" msgstr "Modificare le istanze" #: ../../docs/getting_started/step_by_step/instancing.rst:93 msgid "" "Open the ``Ball`` scene and add a ``PhysicsMaterial`` by clicking on the " "down arrow and selecting \"New PhysicsMaterial\"." msgstr "" "Apri la scena ``Ball`` ed aggiungi un ``PhysicsMaterial`` cliccando sulla " "freccia verso il basso e selezionando \"New PhysicsMaterial\"." #: ../../docs/getting_started/step_by_step/instancing.rst:98 msgid "" "Then, expand the material by clicking on it, and set the ``Bounce`` property " "to ``1``." msgstr "" "Poi, espandi il materiale cliccando su di esso, ed imposta la proprietà " "``Bounce`` ad ``1``." #: ../../docs/getting_started/step_by_step/instancing.rst:103 msgid "" "Press \"Play\" and notice that all of the instanced balls are now much more " "bouncy. Because the instanced balls are based on the saved scene, changes to " "that scene will affect all instances." msgstr "" "Premi ''Play'' e ti renderai conto che tutte quelle sfere instanziate adesso " "rimbalzano di più. Questo perché le sfere instanziate si basano sulla scena " "salvata, e le modifiche a quella scena affliggeranno tutte le sue istanze." #: ../../docs/getting_started/step_by_step/instancing.rst:107 #, fuzzy msgid "" "You can also adjust individual instances. Set the bounce value back to ``0`` " "and then in the ``Main`` scene, select one of the instanced balls. Resources " "like ``PhysicsMaterial`` are shared between instances by default, so we need " "to make it unique. Click on the down arrow and select \"Make Unique\". Set " "its ``Bounce`` to ``1`` and press \"Play\"." msgstr "" "Puoi anche modificare istanze individuali. Riporta il valore di ``Bounce`` a " "0.5, poi nella scena ``Main``, seleziona una della palle istanziate e " "modifica il suo valore ``Bounce`` a ``1`` e premi \"Play\"." #: ../../docs/getting_started/step_by_step/instancing.rst:115 msgid "" "Notice that a grey \"revert\" button appears next to the adjusted property. " "When this button is present, it means you modified a property in the " "instanced scene to override its value in the saved scene. Even if that " "property is modified in the original scene, the custom value will remain. " "Pressing the revert button will restore the property to the value in the " "saved scene." msgstr "" "Nota che compare un bottone \"Annulla\" in grigio a fianco alla proprietá " "modificata. Quando questo bottone é presente significa che é stato " "modificato un valore che va a sovrascrivere il valore della scena salvata. " "Il valore personalizzato nell'istanza rimane anche se il valore di quella " "proprietá viene modificato nella scena originale. Premendo il bottone di " "annulla riporterá il valore a quello salvato nella scena originaria." #: ../../docs/getting_started/step_by_step/instancing.rst:123 #: ../../docs/getting_started/step_by_step/signals.rst:208 #: ../../docs/getting_started/workflow/best_practices/scenes_versus_scripts.rst:151 #: ../../docs/tutorials/shading/your_first_shader/your_first_canvasitem_shader.rst:214 msgid "Conclusion" msgstr "Conclusione" #: ../../docs/getting_started/step_by_step/instancing.rst:125 msgid "" "Instancing can be useful when you want to create many copies of the same " "object. It is also possible to create instances in code by using GDScript, " "see :ref:`doc_instancing_continued`." msgstr "" "Creare un'istanza può essere utile quando vuoi creare più copie dello stesso " "oggetto. C'è anche la possibilità di creare istanze dal codice usando " "GDScript, vedi :ref:`doc_scripting_continued`." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:4 msgid "Instancing (continued)" msgstr "Instanziazione (continua)" #: ../../docs/getting_started/step_by_step/instancing_continued.rst:7 msgid "Recap" msgstr "Ricapitolando" #: ../../docs/getting_started/step_by_step/instancing_continued.rst:9 msgid "Instancing has many handy uses. At a glance, with instancing you have:" msgstr "" "Istanziare ha molti usi. A prima vista, attraverso l'istanziazione si ha:" #: ../../docs/getting_started/step_by_step/instancing_continued.rst:11 msgid "The ability to subdivide scenes and make them easier to manage." msgstr "L'abilitá di suddividere le scene e renderle piú facili da gestire." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:12 msgid "A tool to manage and edit multiple node instances at once." msgstr "" "Uno strumento per gestire e modificare multiple istanze di Nodi alla volta." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:13 msgid "" "A way to organize and embed complex game flows or even UIs (in Godot, UI " "Elements are nodes, too)." msgstr "" "Un modo per organizzare e integrare logiche di gioco complesse o anche UI " "(in Godot anche gli elementi dell'UI sono nodi)." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:17 msgid "Design language" msgstr "Linguaggio di design" #: ../../docs/getting_started/step_by_step/instancing_continued.rst:19 msgid "" "But the greatest strength that comes with instancing scenes is that it works " "as an excellent design language. This distinguishes Godot from all the other " "engines out there. Godot was designed from the ground up around this concept." msgstr "" "Il grande vantaggio che proviene dall'instanziazione delle scene é che " "funziona come un eccellente linguaggio per il design. Questo è ciò che " "distingue Godot da tutti gli altri motori esistenti. Godot é stato " "progettato con l'idea di questo concetto." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:24 msgid "" "When making games with Godot, the recommended approach is to dismiss most " "common design patterns, such as MVC or Entity-Relationship diagrams, and " "instead think about your scenes in a more natural way. Start by imagining " "the visible elements in your game, the ones that can be named not just by a " "programmer, but by anyone." msgstr "" "Quando si creano giochi con Godot, l'approccio raccomandato é quello di " "mettere da parte i design pattern piú comuni come MVC o il modello E-R per " "concentrarsi su un design piú naturale per le proprie scene. Inizia " "immaginando gli elementi visibili nel tuo gioco, quelli che possono essere " "nominati non solo da un programmatore ma da ognuno." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:30 msgid "For example, here's how a simple shooter game could be imagined:" msgstr "Per esempio, ecco come un semplice sparatutto puó essere immaginato:" #: ../../docs/getting_started/step_by_step/instancing_continued.rst:34 msgid "" "You can come up with a diagram like this for almost any kind of game. Write " "down the parts of the game that you can visualize, and then add arrows to " "represent ownership of one component by another." msgstr "" "È possibile creare un diagramma come questo per quasi tutti i tipi di gioco. " "Scrivi le parti del gioco che puoi visualizzare, poi aggiungi frecce per " "rappresentare la proprietà di un componente da un altro." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:38 msgid "" "Once you have a diagram like this, the recommended process for making a game " "is to create a scene for each element listed in the diagram. You'll use " "instancing (either by code or directly in the editor) for the ownership " "relationships." msgstr "" "Una volta che si dispone di un diagramma come questo il processo consigliato " "per la creazione di un gioco è quello di creare una scena per ogni elemento " "elencato nel diagramma. Si userà l'istanziazione (tramite codice o " "direttamente nell'editor) per i rapporti di proprietà." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:42 msgid "" "A lot of time spent in programming games (or software in general) is on " "designing an architecture and fitting game components to that architecture. " "Designing based on scenes replaces that approach and makes development much " "faster and more straightforward, allowing you to concentrate on the game " "logic itself. Because most game components map directly to a scene, using a " "design based on scene instantiation means little other architectural code is " "needed." msgstr "" "Molto tempo speso nella programmazione dei giochi (o del software in " "generale) è dedicato alla progettazione di un'architettura e all'adattamento " "dei componenti di gioco a tale architettura. La progettazione basata su " "scene sostituisce questo approccio e rende lo sviluppo molto più veloce e " "semplice, permettendoti di concentrarti sulla logica del gioco stesso. " "Poiché la maggior parte dei componenti di gioco sono mappati direttamente su " "una scena, l'utilizzo di un'istanziazione basata sulle scene significa che " "serve poco codice aggiuntivo." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:48 msgid "" "Let's take a look at one more, somewhat more complex, example of an open-" "world type game with lots of assets and nested elements:" msgstr "" "Diamo un'occhiata a un altro esempio, un po' più complesso, di un gioco di " "tipo open-world con molte risorse ed elementi annidati:" #: ../../docs/getting_started/step_by_step/instancing_continued.rst:53 msgid "" "Take a look at the room element. Let's say we started there. We could make a " "couple of different room scenes, with different arrangements of furniture " "(also scenes) in them. Later, we could make a house scene, connecting rooms " "to make up its interior." msgstr "" "Dai un'occhiata all'elemento \"stanza\". Diciamo che siamo partiti da lì. " "Potremmo creare un paio di scene \"stanza\", con diverse disposizioni di " "arredamento (o di altre scene) in esse. Più tardi, potremmo creare scena " "\"casa\", collegando altre stanze per formare i suoi interni." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:58 msgid "" "Then, we could make a citadel scene, which is made out of many instanced " "houses. Then, we could start working on the world map terrain, adding the " "citadel onto it." msgstr "" "Poi, potremmo creare una stanza \"cittadella\", che è formata da diverse " "istanze di case. Dopo, potremmo iniziare a lavorare alla conformazione del " "mondo di gioco, aggiungendo la cittadella al suo interno." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:62 msgid "" "Later, we could create scenes that represent guards (and other NPCs) and add " "them to the citadel as well. As a result, they would be indirectly added to " "the overall game world." msgstr "" "Poi, potremmo creare scene rappresentanti guardie (ed altri NPC) ed " "aggiungere anch'essi alla cittadella. Così, saranno indirettamente aggiunti " "al complessivo mondo di gioco." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:66 msgid "" "With Godot, it's easy to iterate on your game like this, as all you need to " "do is create and instance more scenes. Furthermore, the editor UI is " "designed to be user friendly for programmers and non-programmers alike. A " "typical team development process can involve 2D or 3D artists, level " "designers, game designers, and animators, all working with the editor " "interface." msgstr "" "Grazie a Godot, è semplice creare giochi come questo, tutto ciò che devi " "fare è creare ed instanziare più scene. Inoltre, l'interfaccia grafica " "dell'editor è studiata per essere di facile utilizzo sia per programmatori " "che per non programmatori. Un tipico processo produttivo può coinvolgere " "artisti 2D o 3D, level designer, game designer, animatori, che lavorano " "tutti con l'interfaccia dell'editor." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:73 msgid "Information overload!" msgstr "Sovraccarico di informazioni!" #: ../../docs/getting_started/step_by_step/instancing_continued.rst:75 msgid "" "This has been a lot of high level information dropped on you all at once. " "However, the important part of this tutorial was to create an awareness of " "how scenes and instancing are used in real projects." msgstr "" "Ti abbiamo dato troppe informazioni tutte d'un colpo. In ogni caso, la parte " "fondamentale di questo tutorial era quella di creare consapevolezza sulle " "modalità con cui scene e istanze sono usati in progetti reali." #: ../../docs/getting_started/step_by_step/instancing_continued.rst:79 msgid "" "Everything discussed here will become second nature to you once you start " "making games and putting these concepts into practice. For now, don't worry " "about it too much, and go on to the next tutorial!" msgstr "" "Tutto ciò detto qui diventerà istintivo una volta che avrai iniziato a " "creare giochi, e a mettere in pratica questi concetti. Per adesso non " "pensarci troppo, e prosegui con il prossimo tutorial!" #: ../../docs/getting_started/step_by_step/scripting.rst:9 msgid "" "Before Godot 3.0, the only choice for scripting a game was to use :ref:" "`GDScript`. Nowadays, Godot has four (yes, four!) official " "languages and the ability to add extra scripting languages dynamically!" msgstr "" "Prima di Godot 3.0, l'unico modo per scriptare un gioco era usare il :ref:" "`GDScript`. Oggi, Godot ha quattro (esatto, quattro!) " "linguaggi di programmazione ufficiali, e la possibilità di aggiungerne altri " "dinamicamente!" #: ../../docs/getting_started/step_by_step/scripting.rst:13 msgid "" "This is great, mostly due to the large amount of flexibility provided, but " "it also makes our work supporting languages more difficult." msgstr "" "Questo è fantastico, soprattutto a causa della grande flessibilità fornita, " "ma rende anche il nostro lavoro per supportare i linguaggi più complicato." #: ../../docs/getting_started/step_by_step/scripting.rst:16 msgid "" "The \"main\" languages in Godot, though, are GDScript and VisualScript. The " "main reason to choose them is their level of integration with Godot, as this " "makes the experience smoother; both have slick editor integration, while C# " "and C++ need to be edited in a separate IDE. If you are a big fan of " "statically typed languages, go with C# and C++ instead." msgstr "" "I linguaggi \"principali\" in Godot, comunque, sono GDScript e VisualScript. " "Il motivo principale per sceglierli è il loro livello di integrazione con " "Godot, in quanto ciò rende l'esperienza più fluida: entrambi hanno una " "brillante integrazione con l'editor, mentre C# e C++ hanno bisogno di un IDE " "esterno. Se sei un sostenitore dei linguaggi staticamente tipati, prosegui " "con C# e C++." #: ../../docs/getting_started/step_by_step/scripting.rst:22 #: ../../docs/getting_started/scripting/gdscript/index.rst:2 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:30 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:59 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:188 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:203 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:215 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:226 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:234 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:249 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:261 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:321 msgid "GDScript" msgstr "GDScript" #: ../../docs/getting_started/step_by_step/scripting.rst:24 msgid "" ":ref:`GDScript` is, as mentioned above, the main language used " "in Godot. Using it has some positive points compared to other languages due " "to its high integration with Godot:" msgstr "" "Il :ref:`GDScript` è, come menzionato sopra, il linguaggio " "principalmente usato in Godot. Utilizzarlo ha alcuni vantaggi rispetto ad " "altri linguaggi, data la sua forte integrazione con Godot:" #: ../../docs/getting_started/step_by_step/scripting.rst:28 msgid "" "It's simple, elegant, and designed to be familiar for users of other " "languages such as Lua, Python, Squirrel, etc." msgstr "" "È semplice, elegante, e studiato per essere familiare agli utilizzatori di " "altri linguaggi come Lua, Python, Squirrel, ecc." #: ../../docs/getting_started/step_by_step/scripting.rst:29 msgid "Loads and compiles blazingly fast." msgstr "Viene caricato e compilato alla velocità della luce." #: ../../docs/getting_started/step_by_step/scripting.rst:30 msgid "" "The editor integration is a pleasure to work with, with code completion for " "nodes, signals, and many other items pertaining to the scene being edited." msgstr "" "È un piacere lavorare con la sua integrazione nell'editor, con completazione " "del codice per i nodi, segnali, e molti altri elementi appartenenti alla " "scena che sta venendo editata." #: ../../docs/getting_started/step_by_step/scripting.rst:31 msgid "" "Has vector types built-in (such as Vectors, transforms, etc.), making it " "efficient for heavy use of linear algebra." msgstr "" "Ha i tipi per i vettori integrati (come i Vector, Transform, ecc), in modo " "da rendere efficiente l'uso intensivo dell'algebra lineare." #: ../../docs/getting_started/step_by_step/scripting.rst:32 msgid "" "Supports multiple threads as efficiently as statically typed languages - one " "of the limitations that made us avoid VMs such as Lua, Squirrel, etc." msgstr "" "Supporta thread multipli efficientemente quanto i linguaggi staticamente " "tipati - una delle limitazioni che ci ha fatto evitare l'uso di VM come Lua, " "Squirrel, ecc." #: ../../docs/getting_started/step_by_step/scripting.rst:33 msgid "" "Uses no garbage collector, so it trades a small bit of automation (most " "objects are reference counted anyway), by determinism." msgstr "" "Non utilizza un gargabe collector, quindi baratta una piccola parte di " "automazione (la maggior parte degli oggetti sono a riferimenti contati in " "ogni caso), per il determinismo." #: ../../docs/getting_started/step_by_step/scripting.rst:34 msgid "" "Its dynamic nature makes it easy to optimize sections of code in C++ (via " "GDNative) if more performance is required, all without recompiling the " "engine." msgstr "" "La sua natura dinamica rende semplice ottimizzare sezioni di codice in C++ " "(attraverso GDNative) se sono richieste performance più elevate, il tutto " "senza ricompilare il motore di gioco." #: ../../docs/getting_started/step_by_step/scripting.rst:36 msgid "" "If you're undecided and have experience with programming, especially " "dynamically typed languages, go for GDScript!" msgstr "" "Se sei incerto e hai esperienza nella programmazione, specialmente con i " "linguaggi dinamici, GDScript è la scelta giusta!" #: ../../docs/getting_started/step_by_step/scripting.rst:40 #: ../../docs/getting_started/scripting/visual_script/index.rst:2 msgid "VisualScript" msgstr "VisualScript" #: ../../docs/getting_started/step_by_step/scripting.rst:42 msgid "" "Beginning with 3.0, Godot offers :ref:`Visual " "Scripting`. This is a typical implementation of a " "\"blocks and connections\" language, but adapted to how Godot works." msgstr "" "A partire dalla versione 3.0, Godot offre il :ref:`Visual " "Scripting`. È una tipica implementazione di un " "linguaggio a \"blocchi e connessioni\", ma adattato a come funziona Godot." #: ../../docs/getting_started/step_by_step/scripting.rst:46 msgid "" "Visual scripting is a great tool for non-programmers, or even for " "experienced developers who want to make parts of the code more accessible to " "others, like game designers or artists." msgstr "" "Lo scripting visuale è un grande strumento per chi non è un programmatore, o " "anche per programmatori con esperienza che vogliono rendere alcune parti di " "codice più accessibilli agli altri, come a game designer o a artisti." #: ../../docs/getting_started/step_by_step/scripting.rst:50 msgid "" "It can also be used by programmers to build state machines or custom visual " "node workflows - for example, a dialogue system." msgstr "" "Può anche essere usato dai programmatori per creare macchine di stato o " "diagrammi di nodi personalizzati - un sistema per i dialoghi, ad esempio." #: ../../docs/getting_started/step_by_step/scripting.rst:55 msgid ".NET / C#" msgstr ".NET / C#" #: ../../docs/getting_started/step_by_step/scripting.rst:57 msgid "" "As Microsoft's C# is a favorite amongst game developers, we have added " "official support for it. C# is a mature language with tons of code written " "for it, and support was added thanks to a generous donation from Microsoft." msgstr "" "Dato che il C# di Microsoft è una preferenza per molti sviluppatori di " "videogiochi, abbiamo aggiunto il suo supporto ufficiale. Il C# è un " "linguaggio maturo con un'enorme quantità di codice già scritto, e il suo " "supporto è stato aggiunto grazie a una generosa donazione da Microsoft." #: ../../docs/getting_started/step_by_step/scripting.rst:62 msgid "" "It has an excellent tradeoff between performance and ease of use, although " "one must be aware of its garbage collector." msgstr "" "Fornisce un eccellente bilanciamento tra performance e semplicità " "d'utilizzo, sebbene sia necessario essere consapevoli della presenza di un " "garbage collector." #: ../../docs/getting_started/step_by_step/scripting.rst:65 msgid "" "Since Godot uses the `Mono `_ .NET runtime, in " "theory any third-party .NET library or framework can be used for scripting " "in Godot, as well as any Common Language Infrastructure-compliant " "programming language, such as F#, Boo or ClojureCLR. In practice however, C# " "is the only officially supported .NET option." msgstr "" "Dato che Godot utilizza il runtime `Mono `_ .NET, " "teoricamente ogni libreria o framework .NET di terze parti può essere usata " "per scriptare in Godot, così come ogni altro linguaggio conforme " "infrastruttura del linguaggio comune, come F#, Boo o ClojureCLR. In pratica, " "però, il C# è l'unica opzione .NET supportata ufficialmente." #: ../../docs/getting_started/step_by_step/scripting.rst:71 msgid "GDNative / C++" msgstr "GDNative / C++" #: ../../docs/getting_started/step_by_step/scripting.rst:73 msgid "" "Finally, one of our brightest additions for the 3.0 release: GDNative allows " "scripting in C++ without needing to recompile (or even restart) Godot." msgstr "" "Infine, una delle nostre aggiunte più brillanti per la versione 3.0: " "GDNative permette di scriptare in C++ senza il bisogno di ricompilare (o " "anche solo di riavviare) Godot." #: ../../docs/getting_started/step_by_step/scripting.rst:77 msgid "" "Any C++ version can be used, and mixing compiler brands and versions for the " "generated shared libraries works perfectly, thanks to our use of an internal " "C API Bridge." msgstr "" "Qualsiasi versione di C++ può essere usata, e mescolare diversi compilatori " "e versioni di questi per le librerie generate funziona perfettamente, grazie " "all'utilizzo interno di un API bridge in C." #: ../../docs/getting_started/step_by_step/scripting.rst:81 msgid "" "This language is the best choice for performance and does not need to be " "used throughout an entire game, as other parts can be written in GDScript or " "Visual Script. However the API is clear and easy to use as it resembles, " "mostly, Godot's actual C++ API." msgstr "" "Questo linguaggio è il migliore in quanto a performance e non deve essere " "per forza utilizzato in tutto il gioco, in quanto altre parti possono essere " "scritte in GDScript o Visual Script. In ogni caso l'API è chiara e semplice " "da usare in quanto somiglia, per lo più, all'effettiva API C++ di Godot." #: ../../docs/getting_started/step_by_step/scripting.rst:86 msgid "" "More languages can be made available through the GDNative interface, but " "keep in mind we don't have official support for them." msgstr "" "Altri linguaggi possono essere resi disponibili attraverso l'interfaccia di " "GDNative, ma tieni a mente che non avranno supporto ufficiale." #: ../../docs/getting_started/step_by_step/scripting.rst:90 msgid "Scripting a scene" msgstr "Scripting di una scena" #: ../../docs/getting_started/step_by_step/scripting.rst:92 msgid "" "For the rest of this tutorial we'll set up a GUI scene consisting of a " "button and a label, where pressing the button will update the label. This " "will demonstrate:" msgstr "" "Per il resto di questo tutorial, creeremo un'interfaccia grafica (GUI), " "costituita da un pulsante e da un'etichetta, dove premendo il primo si " "aggiornerà il contenuto della seconda. Questo dimostrerà:" #: ../../docs/getting_started/step_by_step/scripting.rst:96 msgid "Writing a script and attaching it to a node." msgstr "Scrivere uno script e allegarlo a un nodo." #: ../../docs/getting_started/step_by_step/scripting.rst:97 msgid "Hooking up UI elements via signals." msgstr "" "Connettere gli elementi dell'interfaccia utente (UI) attraverso i segnali." #: ../../docs/getting_started/step_by_step/scripting.rst:98 msgid "Writing a script that can access other nodes in the scene." msgstr "Scrivere uno script che può accedere agli altri nodi della scena." #: ../../docs/getting_started/step_by_step/scripting.rst:100 msgid "" "Before continuing, please make sure to read the :ref:" "`GDScript` reference. It's a language designed to be simple, " "and the reference is short, so it will not take more than a few minutes to " "get an overview of the concepts." msgstr "" "Prima di continuare, assicurati di aver letto il riferimento sul manuale " "del :ref:'GDScript'. Si tratta di un linguaggio progettato per " "essere semplice, ed il riferimento è breve, quindi non ci vorranno più di " "pochi minuti per ottenere una panoramica dei concetti." #: ../../docs/getting_started/step_by_step/scripting.rst:105 #: ../../docs/tutorials/physics/kinematic_character_2d.rst:79 #: ../../docs/tutorials/animation/introduction_2d.rst:112 msgid "Scene setup" msgstr "Impostazione della scena" #: ../../docs/getting_started/step_by_step/scripting.rst:107 msgid "" "Use the \"Add Child Node\" dialogue accessed from the Scene tab (or by " "pressing ``Ctrl+A``) to create a hierarchy with the following nodes:" msgstr "" "Clicca su \"Aggiungi Nodo Figlio\" accedendo dal menu Scena (o premendo " "``Ctrl+A``) per creare una gerarchia con i seguenti nodi:" #: ../../docs/getting_started/step_by_step/scripting.rst:110 msgid "Panel" msgstr "Pannello" #: ../../docs/getting_started/step_by_step/scripting.rst:112 #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:144 msgid "Label" msgstr "Etichetta" #: ../../docs/getting_started/step_by_step/scripting.rst:113 msgid "Button" msgstr "Pulsante" #: ../../docs/getting_started/step_by_step/scripting.rst:115 msgid "The scene tree should look like this:" msgstr "L'albero della scena dovrebbe essere simile a questo:" #: ../../docs/getting_started/step_by_step/scripting.rst:119 msgid "" "Use the 2D editor to position and resize the Button and Label so that they " "look like the image below. You can set the text from the Inspector tab." msgstr "" "Usa l'editor 2d per posizionare e ridimensionare il Pulsante e l'Etichetta " "così che possano assomigliare all'immagine qui sotto. Puoi impostare il " "testo dalla tab Inspector." #: ../../docs/getting_started/step_by_step/scripting.rst:124 msgid "Finally, save the scene with a name such as ``sayhello.tscn``." msgstr "Infine, salva la scena con un nome come ``sayhello.tscn``." #: ../../docs/getting_started/step_by_step/scripting.rst:129 msgid "Adding a script" msgstr "Aggiungi uno script" #: ../../docs/getting_started/step_by_step/scripting.rst:131 msgid "" "Right click on the Panel node, then select \"Attach Script\" from the " "context menu:" msgstr "" "Clicca con il tasto destro sul nodo Pannello, quindi seleziona \"Attacca " "Script\" dal menù contestuale:" #: ../../docs/getting_started/step_by_step/scripting.rst:136 msgid "" "The script creation dialog will pop up. This dialog allows you to set the " "script's language, class name, and other relevant options." msgstr "" "Apparirà la finestra di creazione dello script. Questa finestra ti " "permetterà di impostare il linguaggio dello script, il nome della classe e " "altre opzioni pertinenti." #: ../../docs/getting_started/step_by_step/scripting.rst:139 msgid "" "In GDScript, the file itself represents the class, so the class name field " "is not editable." msgstr "" "Usando GDScript, il file stesso rappresenta la classe, quindi il campo del " "nome della classe non è modificabile." #: ../../docs/getting_started/step_by_step/scripting.rst:142 msgid "" "The node we're attaching the script to is a panel, so the Inherits field " "will automatically be filled in with \"Panel\". This is what we want, as the " "script's goal is to extend the functionality of our panel node." msgstr "" "Il nodo al quale stiamo attaccando lo script è un pannello, quindi il campo " "Eredita si riempirà automaticamente con \"Pannello\". Questo è quello che " "vogliamo, dato che l'obiettivo dello script è quello di estendere le " "funzionalità del nostro nodo." #: ../../docs/getting_started/step_by_step/scripting.rst:146 msgid "Finally, enter a path name for the script and select Create:" msgstr "Infine, inserisci un percorso per lo script e seleziona Crea:" #: ../../docs/getting_started/step_by_step/scripting.rst:150 msgid "" "The script will then be created and added to the node. You can see this as " "an \"Open script\" icon next to the node in the Scene tab, as well as in the " "script property under Inspector:" msgstr "" "Lo script verrà quindi creato e aggiunto al nodo. Puoi vederlo rappresentato " "come un'icona \"Apri Script\" affianco al nodo nella tab \"Scene\", così " "come nelle proprietà dello script in Inspector:" #: ../../docs/getting_started/step_by_step/scripting.rst:156 msgid "" "To edit the script, select either of these buttons, both of which are " "highlighted in the above image. This will bring you to the script editor, " "where a default template will be included:" msgstr "" "Per modificare lo script, seleziona uno dei pulsanti evidenziati " "nell'immagine qua sopra. Questo ti porterà all'Editor dello Script, che " "includerà un modello predefinito:" #: ../../docs/getting_started/step_by_step/scripting.rst:161 msgid "" "There's not much there. The ``_ready()`` function is called when the node, " "and all its children, enters the active scene. **Note:** ``_ready()`` is not " "the constructor; the constructor is instead ``_init()``." msgstr "" "Non c'è molto qui. La funzione ``_ready()`` è chiamata quando il nodo, e " "tutti i suoi figli, entrano nella scena attiva. **Nota:** ``_ready()`` non è " "il costruttore; il costruttore è invece ``_init()``." #: ../../docs/getting_started/step_by_step/scripting.rst:166 msgid "The role of the script" msgstr "Il ruolo dello script" #: ../../docs/getting_started/step_by_step/scripting.rst:168 msgid "" "A script adds behavior to a node. It is used to control how the node " "functions as well as how it interacts with other nodes: children, parent, " "siblings, and so on. The local scope of the script is the node. In other " "words, the script inherits the functions provided by that node." msgstr "" "Uno script aggiunge un comportamento ad un nodo. E' usato per controllare " "come il nodo funziona e anche come interagisce con gli altri nodi: figli, " "genitore, fratelli, e così via. Il campo di azione (scope) locale dello " "script è il nodo. In altre parole, lo script eredita le funzioni fornite da " "quel nodo." #: ../../docs/getting_started/step_by_step/scripting.rst:179 msgid "Handling a signal" msgstr "Gestire un segnale" #: ../../docs/getting_started/step_by_step/scripting.rst:181 msgid "" "Signals are \"emitted\" when some specific kind of action happens, and they " "can be connected to any function of any script instance. Signals are used " "mostly in GUI nodes, although other nodes have them too, and you can even " "define custom signals in your own scripts." msgstr "" "I segnali sono \"emessi\" quando avviene qualche tipo specifico di azione, e " "possono essere associati ad ogni funzione di ogni script istanziato. I " "segnali sono usati per lo più per i nodi di interfaccia utente (GUI), " "sebbene possano essere usati anche per altri nodi e potete persino definire " "dei segnali personalizzati nei vostri script." #: ../../docs/getting_started/step_by_step/scripting.rst:186 msgid "" "In this step, we'll connect the \"pressed\" signal to a custom function. " "Forming connections is the first part and defining the custom function is " "the second part. For the first part, Godot provides two ways to create " "connections: through a visual interface the editor provides or through code." msgstr "" "In questo pass, connettiamo il segnale \"pressed\" a una funzione " "personalizzati. Formare connessioni è la prima parte e la definizione della " "funzione personalizzata è la seconda parte. Per la prima parte, Godot " "fornisce due modi per creare connessioni: attraverso una interfaccia visuale " "fornita dall'editor o attraverso il codice." #: ../../docs/getting_started/step_by_step/scripting.rst:191 msgid "" "While we will use the code method for the remainder of this tutorial series, " "let's cover how the editor interface works for future reference." msgstr "" "Mentre useremo il metodo del codice per il resto di questa serie di " "tutorial, parliamo di come funziona l'interfaccia dell'editor per " "riferimenti futuri." #: ../../docs/getting_started/step_by_step/scripting.rst:194 msgid "" "Select the Button node in the scene tree and then select the \"Node\" tab. " "Next, make sure that you have \"Signals\" selected." msgstr "" "Seleziona il nodo Button nella Scene Tree e seleziona a quel punto " "l'etichetta \"Node\". Successivamente assicurati di aver selezionato " "\"Signals\"." #: ../../docs/getting_started/step_by_step/scripting.rst:199 msgid "" "If you then select \"pressed()\" under \"BaseButton\" and click the " "\"Connect...\" button in the bottom right, you'll open up the connection " "creation dialogue." msgstr "" "Se poi selezioni \"pressed()\" sotto \"BaseButton\" e premi il bottone " "\"Connect...\" in basso a destra, aprirai la finestra per la creazione delle " "connessioni." #: ../../docs/getting_started/step_by_step/scripting.rst:204 msgid "" "In the bottom-left are the key things you need to create a connection: a " "node which implements the method you want to trigger (represented here as a " "NodePath) and the name of the method to trigger." msgstr "" "In basso a sinistra ci sono gli elementi chiave necessari per creare una " "connessione: un nodo che implementa il metodo che vuoi attivare (qui " "rappresentato con un NodePath) e il nome del metodo da attivare." #: ../../docs/getting_started/step_by_step/scripting.rst:208 msgid "" "The top-left section displays a list of your scene's nodes with the emitting " "node's name highlighted in red. Select the \"Panel\" node here. When you " "select a node, the NodePath at the bottom will automatically update to point " "to a relative path from the emitting node to the selected node." msgstr "" "La sezione in alto a sinistra ci mostra una lista di tutti i nodi della " "scena con il nome del nodo emittente evidenziato in rosso. Seleziona il nodo " "\"Panel\" da qui. Quando selezioni un nodo, la sezione NodePath sul fondo " "della schermata si aggiornerà automaticamente per puntare una path relativa " "dal nodo emittente al nodo selezionato." #: ../../docs/getting_started/step_by_step/scripting.rst:213 msgid "" "By default, the method name will contain the emitting node's name (\"Button" "\" in this case), resulting in \"_on_[EmitterNode]_[signal_name]\". If you " "do have the \"Make Function\" check button checked, then the editor will " "generate the function for you before setting up the connection." msgstr "" "Per default, il nome del metodo conterrà il nome del nodo emittente (\"Button" "\", in questo caso), risultando in \"_on_[EmitterNode]_[signal_name]\". Se " "hai il tasto a due vie \"Make function\" su attivato, allora l'editor " "genererà la funzione per te, prima di impostare la connessione col nodo " "selezionato." #: ../../docs/getting_started/step_by_step/scripting.rst:218 msgid "" "And that concludes the guide on how to use the visual interface. However, " "this is a scripting tutorial, so for the sake of learning, let's dive into " "the manual process!" msgstr "" "E questo conclude la guida su come usare l'interfaccia grafica. Comunque, " "questo è un tutorial sulla codifica, quindi, per l'amore dell'imparare, " "approfondiamo il processo manuale!" #: ../../docs/getting_started/step_by_step/scripting.rst:222 msgid "" "To accomplish this, we will introduce a function that is probably the most " "used by Godot programmers: :ref:`Node.get_node() " "`. This function uses paths to fetch nodes " "anywhere in the scene, relative to the node that owns the script." msgstr "" "Per fare questo, introdurremo una funzione, probabilmente la più utilizzata " "dai programmatori di Godot: :ref:`Node.get_node() " "`. Questa funzione utilizza i percorsi per " "prendere nodi da qualsiasi posto nella scena, relativa al nodo proprietario " "dello script." #: ../../docs/getting_started/step_by_step/scripting.rst:227 msgid "" "For the sake of convenience, delete everything underneath ``extends Panel``. " "You will fill out the rest of the script manually." msgstr "" "Per convenienza, cancella tutto quanto sotto ``extends Panel``. Riepirai il " "resto dello script manualmente." #: ../../docs/getting_started/step_by_step/scripting.rst:230 msgid "" "Because the Button and Label are siblings under the Panel where the script " "is attached, you can fetch the Button by typing the following underneath the " "``_ready()`` function:" msgstr "" "Perché il Button e Label sono entrambi figli di Panel, dove lo script si " "trova, puoi prendere il Button scrivendo il seguente sotto la funzione " "``_ready()``:" #: ../../docs/getting_started/step_by_step/scripting.rst:247 msgid "Next, write a function which will be called when the button is pressed:" msgstr "" "Poi, scrivi una funzione che sarà chiamata quando il bottone sarà premuto:" #: ../../docs/getting_started/step_by_step/scripting.rst:262 msgid "" "Finally, connect the button's \"pressed\" signal to ``_ready()`` by using :" "ref:`Object.connect() `." msgstr "" "Finalmente, connetti il segnale \"pressed\" del bottone a ``_ready()``, " "usando :ref:`Object.connect() `." #: ../../docs/getting_started/step_by_step/scripting.rst:278 msgid "The final script should look like this:" msgstr "Lo script finito dovrebbe essere così:" #: ../../docs/getting_started/step_by_step/scripting.rst:311 msgid "" "Run the scene and press the button. You should get the following result:" msgstr "" "Esegui la scena e premi il pulsante. Dovresti avere il seguente risultato:" #: ../../docs/getting_started/step_by_step/scripting.rst:315 msgid "Why, hello there! Congratulations on scripting your first scene." msgstr "Hey! Congratulazioni nel codificare la tua prima scena." #: ../../docs/getting_started/step_by_step/scripting.rst:319 msgid "" "A common misunderstanding regarding this tutorial is how ``get_node(path)`` " "works. For a given node, ``get_node(path)`` searches its immediate children. " "In the above code, this means that Button must be a child of Panel. If " "Button were instead a child of Label, the code to obtain it would be:" msgstr "" "Una comune incomprensione riguardante questo tutorial è come " "``get_node(path)`` funzioni. Per un nodo dato, ``get_node(path)`` ricerca il " "proprio figlio immediato. Nel codice soprastante, questo significa che " "Button deve essere un figlio di Panel. Se Button invece fosse stato figlio " "di Label, il codice ottenuto sarebbe stato così:" #: ../../docs/getting_started/step_by_step/scripting.rst:337 msgid "Also, remember that nodes are referenced by name, not by type." msgstr "" "Inoltre, ricorda che i nodi sono ottenibili dal loro nome, non dal loro tipo." #: ../../docs/getting_started/step_by_step/scripting.rst:341 msgid "" "The right-hand panel of the connect dialogue is for binding specific values " "to the connected function's parameters. You can add and remove values of " "different types." msgstr "" "Il pannello di destra, nella finestra di connessione, serve per associare " "valori specifici ai parametri della funzione collegata. È possibile " "aggiungere e rimuovere valori di diversi tipi." #: ../../docs/getting_started/step_by_step/scripting.rst:345 msgid "" "The code approach also enables this with a 4th ``Array`` parameter that is " "empty by default. Feel free to read up on the ``Object.connect`` method for " "more information." msgstr "" "L'approccio attraverso il codice permette inoltre l'utilizzo di un quarto " "parametro di tipo ``Array``che di default è vuoto. Sentiti libero di " "leggere il metodo `` Object.connect`` per maggiori informazioni." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:4 msgid "Scripting (continued)" msgstr "Scripting (continuazione)" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:7 msgid "Processing" msgstr "Elaborazione" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:9 msgid "" "Several actions in Godot are triggered by callbacks or virtual functions, so " "there is no need to write code that runs all the time." msgstr "" "Molte azioni in Godot sono eseguite tramite callback di funzioni virtuali, " "non c'è necessità di scrivere codice che viene eseguito in ogni momento." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:12 msgid "" "However, it is still common to need a script to be processed on every frame. " "There are two types of processing: idle processing and physics processing." msgstr "" "In ogni caso, è comune che ci sia la necessità di eseguire uno script ad " "ogni frame. Ci sono due tipi di esecuzioni: durante il processo di " "inattività e durante il processo fisico." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:16 msgid "" "Idle processing is activated when the method :ref:`Node._process() " "` is found in a script. It can be turned off and " "on with the :ref:`Node.set_process() ` " "function." msgstr "" "Il processo d'inattività si attiva quando il metodo :ref:`Node._process() " "` viene trovato nello script. Può essere " "attivato o fermato con la funzione :ref:`Node.set_process() " "`." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:20 msgid "This method will be called every time a frame is drawn:" msgstr "Questo metodo verrà chiamato ogni volta che viene disegnato un frame:" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:36 msgid "" "It's important to bear in mind that the frequency with which ``_process()`` " "will be called depends on how many frames per second (FPS) your application " "is running at. This rate can vary over time and devices." msgstr "" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:40 msgid "" "To help manage this variability the ``delta`` parameter contains the time " "elapsed in seconds, as a floating point, since the previous call to " "``_process()``." msgstr "" "Per aiutare a gestire questa variabilità, il parametro ``delta`` contiene il " "tempo passato in secondi, come floating point, dalla precedente chiamata di " "``_process()``." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:43 msgid "" "This parameter can be used to make sure things always take the same amount " "of time, regardless of the game's FPS." msgstr "" "Questo parametro può essere usato per essere sicuri che gli oggetti abbiano " "la stessa quantità di tempo, incurante degli FPS del gioco." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:46 msgid "" "For example, movement is often multiplied with a time delta to make movement " "speed both constant and independent from the frame rate." msgstr "" "Per esempio, i movimenti sono spesso moltiplicati al tempo DELTA per rendere " "la velocità di movimento sia costante che indipendente dal frame rate." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:49 msgid "" "Physics processing with ``_physics_process()`` is similar, but it should be " "used for processes that must happen before each physics step, such as " "controlling a character. It always runs before a physics step and it is " "called at fixed time intervals: 60 times per second by default. You can " "change the interval from the Project Settings, under Physics -> Common -> " "Physics Fps." msgstr "" "Il processo fisico con `` _physics_process () `` è simile, ma dovrebbe " "essere usato per processi che devono accadere prima di ogni step fisico, " "come controllare un personaggio. Viene sempre eseguito prima di un step " "fisico e viene chiamato a intervalli regolari: 60 volte al secondo di " "default. Puoi cambiare l'intervallo da Project Settings, sotto Physics -> " "Common -> Physics Fps." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:55 msgid "" "The function ``_process()``, however, is not synced with physics. Its frame " "rate is not constant and is dependent on hardware and game optimization. Its " "execution is done after the physics step on single-threaded games." msgstr "" "La funzione ``_process()``, però, non è sincronizzata con la fisica. I " "frame rateo non è costante ed esso dipende dall'hardware e dalla " "ottimizzazione del gioco. L'esecuzione avviene dopo i processi della fisica " "nei giochi a thread singolo." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:58 msgid "" "A simple way to see the ``_process()`` function at work is to create a scene " "with a single Label node, with the following script:" msgstr "" "Un semplice modo per vedere la funzione ``_process()`` al lavoro è creando " "una scena con un singolo nodo Etichetta, con il seguente script:" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:85 msgid "Which will show a counter increasing each frame." msgstr "Il quale mostrerà un contatore che incrementa ad ogni frame." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:88 msgid "Groups" msgstr "Gruppi" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:90 msgid "" "Groups in Godot work like tags you might have come across in other software. " "A node can be added to as many groups as desired. This is a useful feature " "for organizing large scenes. There are two ways to add nodes to groups. The " "first is from the UI, using the Groups button under the Node panel:" msgstr "" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:97 msgid "" "And the second way is from code. The following script would add the current " "node to the ``enemies`` group as soon as it appeared in the scene tree." msgstr "" "ed il secondo modo è dal codice. Il seguente Script voule aggiungere al nodo " "corrente appartenente al gruppo \"enemies\" non appena esso appare " "nell'altero della scena." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:115 msgid "" "This way, if the player is discovered sneaking into a secret base, all " "enemies can be notified about its alarm sounding by using :ref:`SceneTree." "call_group() `:" msgstr "" "In questa maniera, se il giocatore è scoperto ad entrare furtivamente " "all'interno di una base nemica, tutti i nemici possono essere notificati del " "suono dell'allarme usando :ref:`SceneTree.call_group() " "`:" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:132 msgid "" "The above code calls the function ``player_was_discovered`` on every member " "of the group ``enemies``." msgstr "" "Il codice qua sopra chiama la funzione ``player_was_discovered`` su ogni " "membro del gruppo ``enemies``." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:135 msgid "" "It is also possible to get the full list of ``enemies`` nodes by calling :" "ref:`SceneTree.get_nodes_in_group() " "`:" msgstr "" "È anche possibile acquisire la lista completa di nodi ``enemies`` chiamando :" "ref:`SceneTree.get_nodes_in_group() " "`:" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:148 msgid "" "The :ref:`SceneTree ` class provides many useful methods, " "like interacting with scenes, their node hierarchy and groups of nodes. It " "allows you to easily switch scenes or reload them, to quit the game or pause " "and unpause it. It even comes with interesting signals. So check it out if " "you have some time!" msgstr "" "La classe :ref:`SceneTree ` fornisce molte funzioni utili, " "come l'integrazione con le scene, la gerarchia dei loro nodi ed anche un " "gruppo di nodi. Essa permette di spostare facilmente le scene, oppure di " "ricaricarle, o anche di chiudere il gioco, metterlo in pausa o rimuoverlo " "dalla pausa. Può anche venire usato con segnali di interesse. Quindi, se hai " "tempo, prova a dargli una occhiata!" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:156 #: ../../docs/tutorials/gui/custom_gui_controls.rst:157 msgid "Notifications" msgstr "Notifiche" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:158 msgid "" "Godot has a system of notifications. These are usually not needed for " "scripting, as it's too low-level and virtual functions are provided for most " "of them. It's just good to know they exist. For example, you may add an :ref:" "`Object._notification() ` function in " "your script:" msgstr "" "Godot ha un suo sistema di notifiche. Solitamente non sono necessarie per lo " "scripting, siccome è a basso livello e vengono fornite le funzioni " "virtuali.\n" "È comunque buono sapere che esistono. Per esempio, tu potresti aggiungere la " "funzione :ref:`Object._notification() ` " "al tuo script:" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:193 msgid "" "The documentation of each class in the :ref:`Class Reference ` shows the notifications it can receive. However, in most cases " "GDScript provides simpler overrideable functions." msgstr "" "La documentazione di ogni classe presente in :ref:`Class Reference ` mostra le notifiche che possono ricevere. Però, in molti casi " "GDScript fornisce funzioni più semplici e ignorabili." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:198 msgid "Overrideable functions" msgstr "Funzioni sovrascrivibili" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:200 msgid "" "Such overrideable functions, which are described as follows, can be applied " "to nodes:" msgstr "" "Tali funzioni sovrascrivibili, le quali sono descritte di seguito, possono " "essere applicate ai nodi:" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:272 msgid "" "As mentioned before, it's better to use these functions instead of the " "notification system." msgstr "" "Come menzionato precedentemente, è meglio usare queste funzioni anziché il " "sistema di notifiche." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:276 msgid "Creating nodes" msgstr "Creare nodi" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:278 msgid "" "To create a node from code, call the ``.new()`` method, like for any other " "class-based datatype. For example:" msgstr "" "Per creare un nodo nel codice, usare il metodo ``.new()``, come per ogni " "altro class-based datatype. Per esempio:" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:302 msgid "" "To delete a node, be it inside or outside the scene, ``free()`` must be used:" msgstr "" "Per eliminare un nodo, che sia dentro o fuori la scena, deve essere usato " "``free()``:" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:318 msgid "" "When a node is freed, it also frees all its child nodes. Because of this, " "manually deleting nodes is much simpler than it appears. Free the base node " "and everything else in the subtree goes away with it." msgstr "" "Quando un nodo viene liberato, vengono liberati anche i suoi nodi figli. Per " "questo motivo, eliminare manualmente i nodi è più semplice di quanto sembri. " "Libera il nodo base ed ogni suo sotto-nodo lo seguerà." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:322 msgid "" "A situation might occur where we want to delete a node that is currently " "\"blocked\", because it is emitting a signal or calling a function. This " "will crash the game. Running Godot with the debugger will often catch this " "case and warn you about it." msgstr "" "Potrebbe verificarsi una situazione in cui noi vogliamo eliminare un nodo " "che è attualmente \"bloccato\", perchè sta emettendo un segnale o chiamando " "una funzione. Questo causerà il crash del gioco. Il debugger di Godot " "scoverà spesso queste situazioni e ti avvertirà." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:327 msgid "" "The safest way to delete a node is by using :ref:`Node.queue_free() " "`. This erases the node safely during idle." msgstr "" "Il modo più sicuro per eliminare un nodo è usando :ref:`Node.queue_free() " "`. Questo cancella i nodi in modo sicuro " "quando non vengono usati." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:345 msgid "Instancing scenes" msgstr "Istanziare scene" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:347 msgid "" "Instancing a scene from code is done in two steps. The first one is to load " "the scene from your hard drive:" msgstr "" "Istanziare una scena da codice viene fatto in due passaggi. Il primo è " "caricare la scena dal tuo hard drive:" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:360 msgid "" "Preloading it can be more convenient, as it happens at parse time (GDScript " "only):" msgstr "" "Il precaricamento può essere più conveniente, siccome accade nella fase di " "analisi (solo GDScript):" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:368 msgid "" "But ``scene`` is not yet a node. It's packed in a special resource called :" "ref:`PackedScene `. To create the actual node, the " "function :ref:`PackedScene.instance() ` " "must be called. This will return the tree of nodes that can be added to the " "active scene:" msgstr "" "Ma ``scene`` non è ancora un nodo. È impacchettato in una risorsa speciale " "chiamata :ref:`PackedScene `. Per creare il nodo, bisogna " "chiamare la funzione :ref:`PackedScene.instance() " "`. Questo ritorna l'albero di nodi che " "possono essere aggiunti alla scena attiva:" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:386 msgid "" "The advantage of this two-step process is that a packed scene may be kept " "loaded and ready to use so that you can create as many instances as desired. " "This is especially useful to quickly instance several enemies, bullets, and " "other entities in the active scene." msgstr "" "Il vantaggio di questo processo diviso in due passaggi è che la PackedScene " "potrebbe essere caricata e pronta all'uso così che tu possa creare quante " "istanze desideri. È molto utile per istanziare velocemente un grande numero " "di nemici, proiettili e altre entità nella scena attiva." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:394 msgid "Register scripts as classes" msgstr "Registra script come classi" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:396 msgid "" "Godot has a \"Script Class\" feature to register individual scripts with the " "Editor. By default, you can only access unnamed scripts by loading the file " "directly." msgstr "" "Godot ha una funzione \"Script Class\" per registrare singoli script con " "l'editor. Di default, puoi accedere agli script senza nome solo caricando " "direttamente il file." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:400 msgid "" "You can name a script and register it as a type in the editor with the " "``class_name`` keyword followed by the class's name. You may add a comma and " "an optional path to an image to use as an icon. You will then find your new " "type in the Node or Resource creation dialog." msgstr "" "Puoi nominare uno script e registrarlo come un tipo nell'editor con la " "parola chiave ``class_name`` seguita dal nome della classe. Puoi aggiungere " "una virgola ed opzionalmente un percorso ad un'immagine da usare come icona. " "Potrai ora trovare il tuo nuovo tipo nella finestra di creazione di nodi o " "risorse." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:422 msgid "In Godot 3.1:" msgstr "In Godot 3.1:" #: ../../docs/getting_started/step_by_step/scripting_continued.rst:424 msgid "" "Only GDScript and NativeScript, i.e., C++ and other GDNative-powered " "languages, can register scripts." msgstr "" "Solo GDScript e NativeScript, cioè, C++ e altri linguaggi ramificati da " "GDNative, possono registrare gli script." #: ../../docs/getting_started/step_by_step/scripting_continued.rst:425 msgid "Only GDScript creates global variables for each named script." msgstr "Solo GDScript crea variabili globali per ogni script nominato." #: ../../docs/getting_started/step_by_step/signals.rst:4 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1469 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:196 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:164 #: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:689 #: ../../docs/development/cpp/object_class.rst:211 msgid "Signals" msgstr "Segnali" #: ../../docs/getting_started/step_by_step/signals.rst:9 msgid "" "Signals are Godot's version of the *observer* pattern. They allow a node to " "send out a message that other nodes can listen for and respond to. For " "example, rather than continuously checking a button to see if it's being " "pressed, the button can emit a signal when it's pressed." msgstr "" "I segnali sono la versione di Godot degli *observer* pattern. Consentono ad " "un nodo di inviare un messaggio che un altro nodo può ascoltare e " "rispondere. Per esempio, piuttosto che controllare in continuazione un " "bottone per verificare se è premuto, il bottone può emettere un segnale " "quando è premuto." #: ../../docs/getting_started/step_by_step/signals.rst:14 msgid "" "You can read more about the observer pattern here: http://" "gameprogrammingpatterns.com/observer.html" msgstr "" "Puoi scoprire di più relativamente agli observer pattern qui: http://" "gameprogrammingpatterns.com/observer.html" #: ../../docs/getting_started/step_by_step/signals.rst:16 msgid "" "Signals are a way to *decouple* your game objects, which leads to better " "organized and more manageable code. Instead of forcing game objects to " "expect other objects to always be present, they can instead emit signals " "that all interested objects can subscribe to and respond to." msgstr "" "I segnali sono un modo per disaccoppiare i tuoi oggetti di gioco, il che " "comporta un codice meglio organizzato e più gestibile. Al posto di forzare " "gli oggetti di gioco ad aspettarsi che altri oggetti siano sempre presenti, " "possono invece emettere segnali che tutti gli oggetti interessati possono " "ascoltare e rispondere." #: ../../docs/getting_started/step_by_step/signals.rst:21 msgid "" "Below you can see some examples of how you can use signals in your own " "projects." msgstr "" "Sotto puoi vedere alcuni esempi di come puoi usare i segnali nei tuoi " "progetti." #: ../../docs/getting_started/step_by_step/signals.rst:24 msgid "Timer example" msgstr "Esempio di Timer" #: ../../docs/getting_started/step_by_step/signals.rst:26 msgid "" "To see how signals work, let's try using a :ref:`Timer ` node. " "Create a new scene with a Node and two children: a Timer and a :ref:`Sprite " "`. In the Scene dock, rename Node to TimerExample." msgstr "" "Per vedere come funzionano i segnali, proviamo ad usare un nodo :ref:`Timer " "`. Creiamo una nuova scena con un Node e due figli: un Timer e " "un nodo :ref:`Sprite `. Nel pannello della scena, rinomina " "Node con TimerExample." #: ../../docs/getting_started/step_by_step/signals.rst:30 msgid "" "For the Sprite's texture, you can use the Godot icon, or any other image you " "like. Do so by selecting ``Load`` in the Sprite's Texture attribute drop-" "down menu. Attach a script to the root node, but don't add any code to it " "yet." msgstr "" "Per la texture dello Sprite, puoi usare l'icona di Godot, o qualsiasi altra " "immagine ti piaccia. Puoi farlo selezionando ``Load`` tra gli attibuti nel " "menu a tendina della Texture del nodo Sprite. Attacca uno script al nodo " "radice, ma non aggiungere nessun codice per ora." #: ../../docs/getting_started/step_by_step/signals.rst:34 msgid "Your scene tree should look like this:" msgstr "Il tuo albero di scena dovrebbe essere simile a questo:" #: ../../docs/getting_started/step_by_step/signals.rst:38 msgid "" "In the Timer node's properties, check the \"On\" box next to *Autostart*. " "This will cause the timer to start automatically when you run the scene. You " "can leave the *Wait Time* at 1 second." msgstr "" "Nelle proprietà del nodo Timer, spunta la casella \"On\" vicino a " "*Autostart*. Questo farà in modo che il timer parta automaticamente quando " "viene avviata la scena. Puoi lasciare *Wait Time* impostato ad un secondo." #: ../../docs/getting_started/step_by_step/signals.rst:42 msgid "" "Next to the \"Inspector\" tab is a tab labeled \"Node\". Click on this tab " "and you'll see all of the signals that the selected node can emit. In the " "case of the Timer node, the one we're concerned with is \"timeout\". This " "signal is emitted whenever the Timer reaches ``0``." msgstr "" "Vicino alla tab \"Inspector\" ne è presente una chiamata \"Node\". Clicca " "questa tab e vedrai tutti i segnali che il nodo selezionato può emettere. " "Nel caso del nodo Timer, quello che c'interessa è \"timeout\". Questo " "segnale viene emesso ogni volta il Timer raggiunge ``0``." #: ../../docs/getting_started/step_by_step/signals.rst:49 msgid "" "Click on the \"timeout()\" signal and click \"Connect...\". You'll see the " "following window, where you can define how you want to connect the signal:" msgstr "" "Clicca sul segnale \"timeout()\" e poi clicca \"Connect...\". Vedrai la " "finestra seguente, dove puoi definire come connettere il segnale:" #: ../../docs/getting_started/step_by_step/signals.rst:54 msgid "" "On the left side, you'll see the nodes in your scene and can select the node " "that you want to \"listen\" for the signal. Note that the Timer node is red " "- this is *not* an error, but is a visual indication that it's the node that " "is emitting the signal. Select the root node." msgstr "" "Nella parte sinistra, vedrai i nodi presenti nella scena e potrai " "selezionare quale vuoi che \"ascolti\" per il segnale. Nota che il nodo " "Timer è evidenziato in rosso - questo non è un errore, ma è un indicazione " "visiva che indica quale nodo stia emettendo il segnale. Seleziona il nodo " "base." #: ../../docs/getting_started/step_by_step/signals.rst:59 msgid "" "The target node *must* have a script attached or you'll receive an error " "message." msgstr "" "Il nodo target *deve* avere uno script attaccato altrimenti riceverai un " "messaggio di errore." #: ../../docs/getting_started/step_by_step/signals.rst:62 msgid "" "On the bottom of the window is a field labeled \"Method In Node\". This is " "the name of the function in the target node's script that you want to use. " "By default, Godot will create this function using the naming convention " "``_on__`` but you can change it if you wish." msgstr "" "Nella parte bassa della finestra c'è un campo di testo \"Metodo nel nodo\". " "Questo è il nome della funzione che vuoi usare nello script del nodo target. " "Di default, Godot creerà questa funzione usando le convenzioni " "``_on__`` ma puoi cambiarlo se vuoi." #: ../../docs/getting_started/step_by_step/signals.rst:67 msgid "" "Click \"Connect\" and you'll see that the function has been created in the " "script:" msgstr "" "Clicca \"Connetti\" e vedrai che la funzione è stata creata nello script:" #: ../../docs/getting_started/step_by_step/signals.rst:87 msgid "" "Now we can replace the placeholder code with whatever code we want to run " "when the signal is received. Let's make the Sprite blink:" msgstr "" "Ora possiamo sostituire il codice segnaposto con qualsiasi codice vogliamo " "eseguire quando il segnale viene ricevuto. Facciamo \"lampeggiare\" lo " "sprite:" #: ../../docs/getting_started/step_by_step/signals.rst:111 msgid "" "Run the scene and you'll see the Sprite blinking on and off every second. " "You can change the Timer's *Wait Time* property to alter this." msgstr "" "Esegui la scena e vedrai lo Sprite che lampeggia ogni secondo. Puoi cambiare " "il *Tempo di Attesa* del Timer nelle proprietà per alterare questa " "funzionalità." #: ../../docs/getting_started/step_by_step/signals.rst:115 msgid "Connecting signals in code" msgstr "Collegamento di segnali nel codice" #: ../../docs/getting_started/step_by_step/signals.rst:117 msgid "" "You can also make the signal connection in code rather than with the editor. " "This is usually necessary when you're instancing nodes via code and so you " "can't use the editor to make the connection." msgstr "" "Puoi anche connettere i segnali da codice invece che dall'editor. Questo è " "di solito necessario quando stai instanziando nodi da codice e quindi non " "puoi usare l'editor per fare la connessione." #: ../../docs/getting_started/step_by_step/signals.rst:121 msgid "" "First, disconnect the signal by selecting the connection in the Timer's " "\"Node\" tab and clicking disconnect." msgstr "" "Per prima cosa, sconnetti il segnale selezionando la connessione nella tab " "\"Node\" del nodo timer e fai click su sconnetti." #: ../../docs/getting_started/step_by_step/signals.rst:126 msgid "" "To make the connection in code, we can use the ``connect`` function. We'll " "put it in ``_ready()`` so that the connection will be made on run. The " "syntax of the function is ``.connect(, " ", )``. Here is the code for our Timer " "connection:" msgstr "" "Per creare la connessione da codice, possiamo utilizzare la funzione " "``connect``. La inseriremo in ``_ready()`` cosi che la connessione venga " "creata durante l'esecuzione. La sintassi della funzione è ``." "connect(, , )``. Qui c'è il " "codice per la connessione del nostro Timer:" #: ../../docs/getting_started/step_by_step/signals.rst:159 msgid "Custom signals" msgstr "Segnali personalizzati" #: ../../docs/getting_started/step_by_step/signals.rst:161 msgid "You can also declare your own custom signals in Godot:" msgstr "Puoi anche dichiarare i tuoi segnali personalizzati in Godot:" #: ../../docs/getting_started/step_by_step/signals.rst:179 msgid "" "Once declared, your custom signals will appear in the Inspector and can be " "connected in the same way as a node's built-in signals." msgstr "" "Una volta dichiarati, i tuoi segnali personalizzati appariranno " "nell'Ispettore e potranno essere connessi nello stesso modo di un segnale " "pre-costruito." #: ../../docs/getting_started/step_by_step/signals.rst:182 msgid "To emit a signal via code, use the ``emit_signal`` function:" msgstr "Per emettere un segnale da codice, usa la funzione ``emit_signal``:" #: ../../docs/getting_started/step_by_step/signals.rst:210 msgid "" "Many of Godot's built-in node types provide signals you can use to detect " "events. For example, an :ref:`Area2D ` representing a coin " "emits a ``body_entered`` signal whenever the player's physics body enters " "its collision shape, allowing you to know when the player collected it." msgstr "" "Tanti dei Nodi di Godot forniscono segnali che puoi usare per rilevare " "eventi. Per esempio, un :ref:`Area2D ` che rappresenta una " "moneta emette un segnale ``body_entered`` quando il corpo del giocatore " "entra nella sua collision shape, facendoti capire quando il giocatore l'ha " "raccolta." #: ../../docs/getting_started/step_by_step/signals.rst:215 msgid "" "In the next section, :ref:`doc_your_first_game`, you'll build a complete " "game including several uses of signals to connect different game components." msgstr "" "Nella prossima sezione, :ref:`doc_your_first_game`, creerai un gioco " "completo includendo l'uso di segnali per connettere differenti componenti di " "gioco." #: ../../docs/getting_started/step_by_step/your_first_game.rst:4 msgid "Your first game" msgstr "Il tuo primo gioco" #: ../../docs/getting_started/step_by_step/your_first_game.rst:7 #: ../../docs/getting_started/step_by_step/exporting.rst:7 #: ../../docs/tutorials/animation/introduction_2d.rst:7 #: ../../docs/tutorials/assetlib/using_assetlib.rst:10 msgid "Overview" msgstr "Panoramica" #: ../../docs/getting_started/step_by_step/your_first_game.rst:9 msgid "" "This tutorial will guide you through making your first Godot project. You " "will learn how the Godot editor works, how to structure a project, and how " "to build a 2D game." msgstr "" "Questo tutorial ti guiderà nella creazione del tuo primo progetto in Godot. " "Imparerai come funziona l'editor di Godot, come strutturare un progetto e " "come sviluppare un gioco 2D." #: ../../docs/getting_started/step_by_step/your_first_game.rst:13 msgid "" "This project is an introduction to the Godot engine. It assumes that you " "have some programming experience already. If you're new to programming " "entirely, you should start here: :ref:`doc_scripting`." msgstr "" "Questo progetto è un'introduzione a Godot Engine. Si suppone che tu abbia " "già una minima esperienza di programmazione, altrimenti ti consigliamo di " "iniziare da qui: :ref:`doc_scripting`." #: ../../docs/getting_started/step_by_step/your_first_game.rst:18 msgid "" "The game is called \"Dodge the Creeps!\". Your character must move and avoid " "the enemies for as long as possible. Here is a preview of the final result:" msgstr "" "Il gioco si chiama \"Dodge the Creeps!\". Il tuo personaggio deve muoversi " "ed evitare i nemici per il maggior tempo possibile. Questa è una " "dimostrazione del risultato finale:" #: ../../docs/getting_started/step_by_step/your_first_game.rst:24 msgid "" "**Why 2D?** 3D games are much more complex than 2D ones. You should stick to " "2D until you have a good understanding of the game development process." msgstr "" "**Perchè 2D?** I giochi in 3D sono molto più complessi di quelli 2D. Ti " "consigliamo di continuare a creare giochi 2D fino a quando non avrai una " "buona comprensione del processo di sviluppo di un videogioco." #: ../../docs/getting_started/step_by_step/your_first_game.rst:28 #: ../../docs/getting_started/workflow/project_setup/index.rst:2 #: ../../docs/tutorials/2d/using_tilemaps.rst:21 #: ../../docs/development/cpp/configuring_an_ide.rst:182 msgid "Project setup" msgstr "Impostazione del progetto" #: ../../docs/getting_started/step_by_step/your_first_game.rst:30 msgid "" "Launch Godot and create a new project. Then, download :download:" "`dodge_assets.zip ` - the images and sounds you'll " "be using to make the game. Unzip these files to your project folder." msgstr "" "Avvia Godot e crea un nuovo progetto. Poi scarica le immagini e i suoni che " "verranno usati nella creazione del gioco :download:`dodge_assets.zip `. Estrai i file nella cartella del progetto appena creato." #: ../../docs/getting_started/step_by_step/your_first_game.rst:34 msgid "" "For this tutorial, we will assume you are familiar with the editor. If you " "haven't read :ref:`doc_scenes_and_nodes`, do so now for an explanation of " "setting up a project and using the editor." msgstr "" "Per questo tutorial si da per scontato che tu abbia già familiarità con " "l'editor. Se non hai ancora letto :ref:`doc_scenes_and_nodes`, ti " "consigliamo di farlo subito per ricevere la spiegazione su come preparare un " "progetto ed utilizzare l'editor." #: ../../docs/getting_started/step_by_step/your_first_game.rst:38 msgid "" "This game will use portrait mode, so we need to adjust the size of the game " "window. Click on Project -> Project Settings -> Display -> Window and set " "\"Width\" to ``480`` and \"Height\" to ``720``." msgstr "" "Questo gioco utilizzarà la modalità portrait, quindi abbiamo bisogno di " "modificare la dimensione della finestra di gioco. Clicca su Progetto -> " "Impostazioni del Progetto -> Display -> Finestra ed imposta \"Larghezza\" su " "``480`` e \"Altezza\" su ``720``." #: ../../docs/getting_started/step_by_step/your_first_game.rst:43 msgid "Organizing the project" msgstr "Organizzare il progetto" #: ../../docs/getting_started/step_by_step/your_first_game.rst:45 msgid "" "In this project, we will make 3 independent scenes: ``Player``, ``Mob``, and " "``HUD``, which we will combine into the game's ``Main`` scene. In a larger " "project, it might be useful to make folders to hold the various scenes and " "their scripts, but for this relatively small game, you can save your scenes " "and scripts in the project's root folder, referred to as ``res://``. You " "can see your project folders in the FileSystem Dock in the lower left corner:" msgstr "" "In questo progetto faremo 3 scene indipendenti: ``Player``, ``Mob``, e " "``HUD``, che combineremo nella scena ``Main`` del nostro gioco. In un " "progetto più grande, potrebbe essere utile creare delle cartelle per " "contenere le varie scene e i loro script, ma per questo piccolo gioco puoi " "salvare le tue scene e script nella cartella principale del progetto, " "riferita come ``res://``. Puoi vedere la tua cartella del progetto nella " "FileSystem Dock nell'angolo in basso a sinistra:" #: ../../docs/getting_started/step_by_step/your_first_game.rst:56 msgid "Player scene" msgstr "Scena del Player" #: ../../docs/getting_started/step_by_step/your_first_game.rst:58 msgid "" "The first scene we will make defines the ``Player`` object. One of the " "benefits of creating a separate Player scene is that we can test it " "separately, even before we've created other parts of the game." msgstr "" "La prima scena che faremo andrà a definire l'oggetto ``Player``. Uno dei " "benefici di creare una scena separata per l'oggetto Player è che potremo " "testarla separatamente, anche prima di aver creato le altre parti del gioco." #: ../../docs/getting_started/step_by_step/your_first_game.rst:63 msgid "Node structure" msgstr "Struttura del nodo" #: ../../docs/getting_started/step_by_step/your_first_game.rst:65 msgid "" "To begin, click the \"Add/Create a New Node\" button and add an :ref:`Area2D " "` node to the scene." msgstr "" "Per iniziare, fai click sul tasto \"Aggiungi/Crea un Nuovo Nodo\" e aggiungi " "un nodo :ref:`Area2D ` alla scena." #: ../../docs/getting_started/step_by_step/your_first_game.rst:70 msgid "" "With ``Area2D`` we can detect objects that overlap or run into the player. " "Change its name to ``Player`` by clicking on the node's name. This is the " "scene's root node. We can add additional nodes to the player to add " "functionality." msgstr "" "Con il nodo ``Area2D`` possiamo rilevare gli oggetti che si sovrappongono al " "giocatore. Rinomina il nodo in ``Player`` cliccandoci sopra. Questo è il " "nodo principale della scena. Possiamo aggiungere ulteriori nodi al giocatore " "per aggiungere altre funzionalità." #: ../../docs/getting_started/step_by_step/your_first_game.rst:75 msgid "" "Before we add any children to the ``Player`` node, we want to make sure we " "don't accidentally move or resize them by clicking on them. Select the node " "and click the icon to the right of the lock; its tooltip says \"Makes sure " "the object's children are not selectable.\"" msgstr "" "Prima di aggiungere figli al nodo ``Player``, vogliamo assicurarci di non " "muoverli o ridimensionarli accidentalmente cliccandoci sopra. Seleziona il " "nodo e fai click sull'icona a destra del lucchetto; la descrizione del " "comando dice \"Accerta che i figli dell'oggetto non siano selezionabili.\"" #: ../../docs/getting_started/step_by_step/your_first_game.rst:82 msgid "" "Save the scene. Click Scene -> Save, or press ``Ctrl+S`` on Windows/Linux or " "``Command+S`` on Mac." msgstr "" "Salva la scena. Clicca su Scena -> Salva Scena, oppure premi ``Ctrl+S`` su " "Windows/Linux o ``Command+S`` su Mac." #: ../../docs/getting_started/step_by_step/your_first_game.rst:84 msgid "For this project, we will be following the Godot naming conventions." msgstr "" "Per questo progetto seguiremo le convenzioni di denominazione di Godot." #: ../../docs/getting_started/step_by_step/your_first_game.rst:86 msgid "" "**GDScript**: Classes (nodes) use PascalCase, variables and functions use " "snake_case, and constants use ALL_CAPS (See :ref:`doc_gdscript_styleguide`)." msgstr "" "**GDScript**: Le classi (nodi) usano PascalCase, le variabili e le funzioni " "snake_case e le costanti usano ALL_CAPS (Vedi :ref:" "`doc_gdscript_styleguide`)." #: ../../docs/getting_started/step_by_step/your_first_game.rst:90 msgid "" "**C#**: Classes, export variables and methods use PascalCase, private fields " "use _camelCase, local variables and parameters use camelCase (See :ref:" "`doc_c_sharp_styleguide`). Be careful to type the method names precisely " "when connecting signals." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:97 msgid "Sprite animation" msgstr "Animazione Sprite" #: ../../docs/getting_started/step_by_step/your_first_game.rst:99 #, fuzzy msgid "" "Click on the ``Player`` node and add an :ref:`AnimatedSprite " "` node as a child. The ``AnimatedSprite`` will handle " "the appearance and animations for our player. Notice that there is a warning " "symbol next to the node. An ``AnimatedSprite`` requires a :ref:`SpriteFrames " "` resource, which is a list of the animations it can " "display. To create one, find the ``Frames`` property in the Inspector and " "click \"[empty]\" -> \"New SpriteFrames\". This should automatically open " "the SpriteFrames panel." msgstr "" "Clicca su il nodo ``Player`` e aggiugngi un nodo figlio :ref:`AnimatedSprite " "`. Il nodo ``AnimatedSprite`` si occuperà dell'aspetto " "e delle animazioni del nostro giocatore. Noterete che ci sarà un segnale di " "allarme vicino al nodo. Un ``AnimatedSprite`` richiede una risorsa :ref:" "`SpriteFrames `, la quale è una lista di animazioni che " "possono essere esposte. Per crearne una, cercate la proprietà ``Frames`` " "nell'Inspector e cliccate \"[vuoto]\" -> \"Nuovo SpriteFrames\". Dopodichè, " "sulla stessa proprietà, clicca ```` e poi su \"Apri Editor\" " "per aprire il pannello \"SpriteFrames\":" #: ../../docs/getting_started/step_by_step/your_first_game.rst:110 msgid "" "On the left is a list of animations. Click the \"default\" one and rename it " "to \"right\". Then click the \"Add\" button to create a second animation " "named \"up\". Drag the two images for each animation, named " "``playerGrey_up[1/2]`` and ``playerGrey_walk[1/2]``, into the \"Animation " "Frames\" side of the panel:" msgstr "" "Sulla sinistra c'è una lista di animazioni. Clicca su quella con scritto " "\"default\" e rinominala in \"right\". Ora clicca sul tasto \"Aggiungi\" per " "creare una seconda animazione chiamata \"up\". Trascina le due immagini per " "ogni animazione, chiamate ``playerGrey_up[1/2]`` e ``playerGrey_walk[1/2]``, " "all'interno della sezione \"Frames animazione\" del pannello:" #: ../../docs/getting_started/step_by_step/your_first_game.rst:117 msgid "" "The player images are a bit too large for the game window, so we need to " "scale them down. Click on the ``AnimatedSprite`` node and set the ``Scale`` " "property to ``(0.5, 0.5)``. You can find it in the Inspector under the " "``Node2D`` heading." msgstr "" "Le immagini del giocatore sono un po' troppo grandi per la finestra di " "gioco, quindi dobbiamo rimpicciolirle. Fai clic sul nodo ``AnimatedSprite`` " "e imposta la proprietà ``Scale`` a ``(0.5, 0.5)``. La si può trovare " "all'interno dell' Inspector nella sezione ``Node2D``." #: ../../docs/getting_started/step_by_step/your_first_game.rst:124 msgid "" "Finally, add a :ref:`CollisionShape2D ` as a child " "of ``Player``. This will determine the player's \"hitbox\", or the bounds of " "its collision area. For this character, a ``CapsuleShape2D`` node gives the " "best fit, so next to \"Shape\" in the Inspector, click \"[empty]\"\" -> " "\"New CapsuleShape2D\". Using the two size handles, resize the shape to " "cover the sprite:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:133 msgid "When you're finished, your ``Player`` scene should look like this:" msgstr "" "Quando hai finito, la tua scena ``Player`` dovrebbe essere simile a questa:" #: ../../docs/getting_started/step_by_step/your_first_game.rst:138 msgid "Moving the player" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:140 msgid "" "Now we need to add some functionality that we can't get from a built-in " "node, so we'll add a script. Click the ``Player`` node and click the \"Add " "Script\" button:" msgstr "" "Ora abbiamo bisogno di aggiungere alcune funzionalità che non abbiamo con un " "nodo pre-esistente, quindi aggiungeremo uno script. Clicca il nodo " "``Player`` e clicca il bottone \"Add Script\":" #: ../../docs/getting_started/step_by_step/your_first_game.rst:146 msgid "" "In the script settings window, you can leave the default settings alone. " "Just click \"Create\":" msgstr "" "Nella finestra di impostazioni dello script, puoi lasciare le impostazioni " "di default. Clicca \"Crea\":" #: ../../docs/getting_started/step_by_step/your_first_game.rst:149 msgid "" "If you're creating a C# script or other languages, select the language from " "the `language` drop down menu before hitting create." msgstr "" "Se stai creando uno script C# o in altri linguaggi, scegli il linguaggio dal " "menu a tendina `linguaggio` prima di cliccare crea." #: ../../docs/getting_started/step_by_step/your_first_game.rst:154 msgid "" "If this is your first time encountering GDScript, please read :ref:" "`doc_scripting` before continuing." msgstr "" "Se è la prima volta che ti imbatti in GDScript, leggi :ref:`doc_scripting` " "prima di continuare." #: ../../docs/getting_started/step_by_step/your_first_game.rst:157 msgid "Start by declaring the member variables this object will need:" msgstr "" "Inizia dichiarando le variabili membro che questo oggetto avrà bisogno:" #: ../../docs/getting_started/step_by_step/your_first_game.rst:178 msgid "" "Using the ``export`` keyword on the first variable ``speed`` allows us to " "set its value in the Inspector. This can be handy for values that you want " "to be able to adjust just like a node's built-in properties. Click on the " "``Player`` node and you'll see the property now appears in the \"Script " "Variables\" section of the Inspector. Remember, if you change the value " "here, it will override the value written in the script." msgstr "" "Usando la parola chiave ``export`` sulla prima variabile ``speed`` ci " "permette di impostare il suo valore dall'Ispettore. Questo può essere utile " "per valori che vorresti poter modificare come le proprietà dei nodi. Clicca " "sul nodo ``Player`` e vedrai che la proprietà è ora apparsa nella sezione " "\"Variabili di Script\" dell'ispettore. Ricorda, se cambi il valore qui, si " "sovrascriverà al valore scritto nello script." #: ../../docs/getting_started/step_by_step/your_first_game.rst:185 msgid "" "If you're using C#, you need to (re)build the project assemblies whenever " "you want to see new export variables or signals. This build can be manually " "triggered by clicking the word \"Mono\" at the bottom of the editor window " "to reveal the Mono Panel, then clicking the \"Build Project\" button." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:193 msgid "" "The ``_ready()`` function is called when a node enters the scene tree, which " "is a good time to find the size of the game window:" msgstr "" "La funzione ``_ready()`` viene chiamata quando un nodo entra nello scene " "tree, un momento ideale per andare a ricavare le dimensioni della finestra " "di gioco :" #: ../../docs/getting_started/step_by_step/your_first_game.rst:209 msgid "" "Now we can use the ``_process()`` function to define what the player will " "do. ``_process()`` is called every frame, so we'll use it to update elements " "of our game, which we expect will change often. For the player, we need to " "do the following:" msgstr "" "Ora possiamo usare la funzione ``_process()`` per definire cosa farà il " "player. La funzione ``_process()`` viene chiamata ad ogni frame, quindi la " "useremo per aggiornare gli elementi del nostro gioco che ci aspettiamo che " "cambino spesso. Per il player dobbiamo fare il seguente:" #: ../../docs/getting_started/step_by_step/your_first_game.rst:214 msgid "Check for input." msgstr "Controlla per input." #: ../../docs/getting_started/step_by_step/your_first_game.rst:215 msgid "Move in the given direction." msgstr "Muovi nella direzione assegnata." #: ../../docs/getting_started/step_by_step/your_first_game.rst:216 msgid "Play the appropriate animation." msgstr "Esegui l'animazione appropriata." #: ../../docs/getting_started/step_by_step/your_first_game.rst:218 msgid "" "First, we need to check for input - is the player pressing a key? For this " "game, we have 4 direction inputs to check. Input actions are defined in the " "Project Settings under \"Input Map\". Here, you can define custom events and " "assign different keys, mouse events, or other inputs to them. For this demo, " "we will use the default events that are assigned to the arrow keys on the " "keyboard." msgstr "" "Prima di tutto, dobbiamo controllare per l'input - il giocatore sta premendo " "un pulsante? Per questo gioco abbiamo 4 direzioni di input da controllare. " "Le Azioni di Input sono definire nelle Impostazioni di Progetto sotto " "\"Mappa Input\". Qui puoi definire degli eventi personalizzati ed " "assegnargli pulsanti differenti, eventi del mouse, o altri tipi di input. " "Per questa demo useremo gli eventi default che sono assegnati alle frecce " "direzionali della tastiera." #: ../../docs/getting_started/step_by_step/your_first_game.rst:225 msgid "" "You can detect whether a key is pressed using ``Input.is_action_pressed()``, " "which returns ``true`` if it is pressed or ``false`` if it isn't." msgstr "" "Puoi rilevare quando il giocatore sta premendo un pulsante usando ``Input." "is_action_pressed()``, che ritorna ``true`` se è premuto o ``false`` se non " "lo è." #: ../../docs/getting_started/step_by_step/your_first_game.rst:287 msgid "" "We start by setting the ``velocity`` to ``(0, 0)`` - by default the player " "should not be moving. Then we check each input and add/subtract from the " "``velocity`` to obtain a total direction. For example, if you hold ``right`` " "and ``down`` at the same time, the resulting ``velocity`` vector will be " "``(1, 1)``. In this case, since we're adding a horizontal and a vertical " "movement, the player would move *faster* than if it just moved horizontally." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:294 msgid "" "We can prevent that if we *normalize* the velocity, which means we set its " "*length* to ``1``, and multiply by the desired speed. This means no more " "fast diagonal movement." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:298 msgid "" "If you've never used vector math before, or need a refresher, you can see an " "explanation of vector usage in Godot at :ref:`doc_vector_math`. It's good to " "know but won't be necessary for the rest of this tutorial." msgstr "" "Se non hai mai usato la matematica vettoriale prima d'ora, oppure hai " "bisogno di una rinfrescata, puoi vedere una spiegazione sull'uso dei vettori " "in Godot a v:ref:`doc_vector_math`. È buona cosa da sapere, ma non sarà " "necessario per il resto di questo tutorial." #: ../../docs/getting_started/step_by_step/your_first_game.rst:302 msgid "" "We also check whether the player is moving so we can start or stop the " "AnimatedSprite animation." msgstr "" "Possiamo anche controllare quando il giocatore si sta muovendo così che " "possiamo far partire o fermare l'animazione del nodo AnimatedSprite." #: ../../docs/getting_started/step_by_step/your_first_game.rst:305 msgid "" "In GDScript, ``$`` returns the node at the relative path from the current " "node, or returns ``null`` if the node is not found. Since AnimatedSprite is " "a child of the current node, we can use ``$AnimatedSprite``." msgstr "" "In GDScript, ``$`` ritorna il percorso relativo del nodo che ci serve dal " "nodo corrente, altrimenti ritorna ``null`` se il nodo non è stato trovato. " "Siccome AnimatedSprite è figlio del nodo corrente, possiamo usare ``" "$AnimatedSprite``." #: ../../docs/getting_started/step_by_step/your_first_game.rst:308 msgid "" "``$`` is shorthand for ``get_node()``. So in the code above, ``" "$AnimatedSprite.play()`` is the same as ``get_node(\"AnimatedSprite\")." "play()``." msgstr "" "``$`` è la versione breve per ``get_node()``. Quindi nel codice sopra, ``" "$AnimatedSprite.play()`` è uguale a ``get_node(\"AnimatedSprite\").play()``." #: ../../docs/getting_started/step_by_step/your_first_game.rst:311 msgid "" "Now that we have a movement direction, we can update the player's position " "and use ``clamp()`` to prevent it from leaving the screen by adding the " "following to the bottom of the ``_process`` function:" msgstr "" "Ora che abbiamo una direzione di movimento, possiamo aggiornare la posizione " "del player ed usare ``clamp()`` per impedirgli di uscire dallo schermo " "aggiungendo il codice seguente sul fondo della funzione ``_process()``:" #: ../../docs/getting_started/step_by_step/your_first_game.rst:331 msgid "*Clamping* a value means restricting it to a given range." msgstr "" "Fare il *Clamp* di un valore significa restringerlo in un dato intervallo." #: ../../docs/getting_started/step_by_step/your_first_game.rst:333 msgid "" "Click \"Play Scene\" (``F6``) and confirm you can move the player around the " "screen in all directions. The console output that opens upon playing the " "scene can be closed by clicking ``Output`` (which should be highlighted in " "blue) in the lower left of the Bottom Panel." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:338 msgid "" "If you get an error in the \"Debugger\" panel that refers to a \"null " "instance\", this likely means you spelled the node name wrong. Node names " "are case-sensitive and ``$NodeName`` or ``get_node(\"NodeName\")`` must " "match the name you see in the scene tree." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:343 msgid "Choosing animations" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:345 msgid "" "Now that the player can move, we need to change which animation the " "AnimatedSprite is playing based on direction. We have a \"right\" animation, " "which should be flipped horizontally using the ``flip_h`` property for left " "movement, and an \"up\" animation, which should be flipped vertically with " "``flip_v`` for downward movement. Let's place this code at the end of our " "``_process()`` function:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:379 msgid "" "The boolean assignments in the code above are a common shorthand for " "programmers. Consider this code versus the shortened boolean assignment " "above:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:398 msgid "" "Play the scene again and check that the animations are correct in each of " "the directions. When you're sure the movement is working correctly, add this " "line to ``_ready()``, so the player will be hidden when the game starts:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:413 msgid "Preparing for collisions" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:415 msgid "" "We want ``Player`` to detect when it's hit by an enemy, but we haven't made " "any enemies yet! That's OK, because we're going to use Godot's *signal* " "functionality to make it work." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:419 msgid "Add the following at the top of the script, after ``extends Area2d``:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:433 msgid "" "This defines a custom signal called \"hit\" that we will have our player " "emit (send out) when it collides with an enemy. We will use ``Area2D`` to " "detect the collision. Select the ``Player`` node and click the \"Node\" tab " "next to the Inspector tab to see the list of signals the player can emit:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:440 msgid "" "Notice our custom \"hit\" signal is there as well! Since our enemies are " "going to be ``RigidBody2D`` nodes, we want the ``body_entered( Object " "body )`` signal; this will be emitted when a body contacts the player. Click " "\"Connect..\" and then \"Connect\" again on the \"Connecting Signal\" " "window. We don't need to change any of these settings - Godot will " "automatically create a function in your player's script. This function will " "be called whenever the signal is emitted - it *handles* the signal." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:449 msgid "" "When connecting a signal, instead of having Godot create a function for you, " "you can also give the name of an existing function that you want to link the " "signal to." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:453 msgid "Add this code to the function:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:472 msgid "" "Each time an enemy hits the player, the signal is going to be emitted. We " "need to disable the player's collision so that we don't trigger the ``hit`` " "signal more than once." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:476 msgid "" "Disabling the area's collision shape can cause an error if it happens in the " "middle of the engine's collision processing. Using ``set_deferred()`` allows " "us to have Godot wait to disable the shape until it's safe to do so." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:481 msgid "" "The last piece for our player is to add a function we can call to reset the " "player when starting a new game." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:502 msgid "Enemy scene" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:504 msgid "" "Now it's time to make the enemies our player will have to dodge. Their " "behavior will not be very complex: mobs will spawn randomly at the edges of " "the screen and move in a random direction in a straight line, then despawn " "when they go offscreen." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:509 msgid "" "We will build this into a ``Mob`` scene, which we can then *instance* to " "create any number of independent mobs in the game." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:513 msgid "Node setup" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:515 msgid "Click Scene -> New Scene and we'll create the Mob." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:517 msgid "The Mob scene will use the following nodes:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:519 msgid ":ref:`RigidBody2D ` (named ``Mob``)" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:521 msgid ":ref:`AnimatedSprite `" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:522 msgid ":ref:`CollisionShape2D `" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:523 msgid "" ":ref:`VisibilityNotifier2D ` (named " "``Visibility``)" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:525 msgid "" "Don't forget to set the children so they can't be selected, like you did " "with the Player scene." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:528 msgid "" "In the :ref:`RigidBody2D ` properties, set ``Gravity " "Scale`` to ``0``, so the mob will not fall downward. In addition, under the " "``PhysicsBody2D`` section, click the ``Mask`` property and uncheck the first " "box. This will ensure the mobs do not collide with each other." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:535 msgid "" "Set up the :ref:`AnimatedSprite ` like you did for the " "player. This time, we have 3 animations: ``fly``, ``swim``, and ``walk``. " "Set the ``Playing`` property in the Inspector to \"On\" and adjust the " "\"Speed (FPS)\" setting as shown below. We'll select one of these animations " "randomly so that the mobs will have some variety." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:542 msgid "" "``fly`` should be set to 3 FPS, with ``swim`` and ``walk`` set to 4 FPS." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:544 msgid "" "Like the player images, these mob images need to be scaled down. Set the " "``AnimatedSprite``'s ``Scale`` property to ``(0.75, 0.75)``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:547 msgid "" "As in the ``Player`` scene, add a ``CapsuleShape2D`` for the collision. To " "align the shape with the image, you'll need to set the ``Rotation Degrees`` " "property to ``90`` under ``Node2D``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:552 #, fuzzy msgid "Enemy script" msgstr "Descrizione" #: ../../docs/getting_started/step_by_step/your_first_game.rst:554 msgid "Add a script to the ``Mob`` and add the following member variables:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:580 msgid "" "When we spawn a mob, we'll pick a random value between ``min_speed`` and " "``max_speed`` for how fast each mob will move (it would be boring if they " "were all moving at the same speed). We also have an array containing the " "names of the three animations, which we'll use to select a random one. Make " "sure you've spelled these the same in the script and in the SpriteFrames " "resource." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:586 msgid "" "Now let's look at the rest of the script. In ``_ready()`` we randomly choose " "one of the three animation types:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:605 msgid "" "You must use ``randomize()`` if you want your sequence of \"random\" numbers " "to be different every time you run the scene. We're going to use " "``randomize()`` in our ``Main`` scene, so we won't need it here. ``randi() % " "n`` is the standard way to get a random integer between ``0`` and ``n-1``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:611 msgid "" "The last piece is to make the mobs delete themselves when they leave the " "screen. Connect the ``screen_exited()`` signal of the ``Visibility`` node " "and add this code:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:628 msgid "This completes the `Mob` scene." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:631 msgid "Main scene" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:633 msgid "" "Now it's time to bring it all together. Create a new scene and add a :ref:" "`Node ` named ``Main``. Click the \"Instance\" button and select " "your saved ``Player.tscn``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:639 msgid "See :ref:`doc_instancing` to learn more about instancing." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:641 msgid "" "Now, add the following nodes as children of ``Main``, and name them as shown " "(values are in seconds):" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:644 msgid "" ":ref:`Timer ` (named ``MobTimer``) - to control how often mobs " "spawn" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:645 msgid "" ":ref:`Timer ` (named ``ScoreTimer``) - to increment the score " "every second" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:646 msgid "" ":ref:`Timer ` (named ``StartTimer``) - to give a delay before " "starting" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:647 msgid "" ":ref:`Position2D ` (named ``StartPosition``) - to indicate " "the player's start position" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:649 msgid "" "Set the ``Wait Time`` property of each of the ``Timer`` nodes as follows:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:652 msgid "``MobTimer``: ``0.5``" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:653 msgid "``ScoreTimer``: ``1``" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:654 msgid "``StartTimer``: ``2``" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:656 msgid "" "In addition, set the ``One Shot`` property of ``StartTimer`` to \"On\" and " "set ``Position`` of the ``StartPosition`` node to ``(240, 450)``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:660 msgid "Spawning mobs" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:662 msgid "" "The Main node will be spawning new mobs, and we want them to appear at a " "random location on the edge of the screen. Add a :ref:`Path2D " "` node named ``MobPath`` as a child of ``Main``. When you " "select ``Path2D``, you will see some new buttons at the top of the editor:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:669 msgid "" "Select the middle one (\"Add Point\") and draw the path by clicking to add " "the points at the corners shown. To have the points snap to the grid, make " "sure \"Snap to Grid\" is checked. This option can be found under the " "\"Snapping options\" button to the left of the \"Lock\" button, appearing as " "a series of three vertical dots." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:677 msgid "" "Draw the path in *clockwise* order, or your mobs will spawn pointing " "*outwards* instead of *inwards*!" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:680 msgid "" "After placing point ``4`` in the image, click the \"Close Curve\" button and " "your curve will be complete." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:683 msgid "" "Now that the path is defined, add a :ref:`PathFollow2D ` " "node as a child of ``MobPath`` and name it ``MobSpawnLocation``. This node " "will automatically rotate and follow the path as it moves, so we can use it " "to select a random position and direction along the path." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:689 msgid "Main script" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:691 msgid "" "Add a script to ``Main``. At the top of the script, we use ``export " "(PackedScene)`` to allow us to choose the Mob scene we want to instance." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:731 msgid "" "Drag ``Mob.tscn`` from the \"FileSystem\" panel and drop it in the ``Mob`` " "property under the Script Variables of the ``Main`` node." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:734 msgid "" "Next, click on the Player and connect the ``hit`` signal. We want to make a " "new function named ``game_over``, which will handle what needs to happen " "when a game ends. Type \"game_over\" in the \"Method In Node\" box at the " "bottom of the \"Connecting Signal\" window. Add the following code, as well " "as a ``new_game`` function to set everything up for a new game:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:771 msgid "" "Now connect the ``timeout()`` signal of each of the Timer nodes " "(``StartTimer``, ``ScoreTimer`` ,and ``MobTimer``) to the main script. " "``StartTimer`` will start the other two timers. ``ScoreTimer`` will " "increment the score by 1." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:798 msgid "" "In ``_on_MobTimer_timeout()``, we will create a mob instance, pick a random " "starting location along the ``Path2D``, and set the mob in motion. The " "``PathFollow2D`` node will automatically rotate as it follows the path, so " "we will use that to select the mob's direction as well as its position." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:804 msgid "" "Note that a new instance must be added to the scene using ``add_child()``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:807 msgid "" "Now click on ``MobTimer`` in the scene window then head to inspector window, " "switch to node view then click on ``timeout()`` and connect the signal." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:810 #: ../../docs/tutorials/3d/fps_tutorial/part_two.rst:1071 msgid "Add the following code:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:858 msgid "" "In functions requiring angles, GDScript uses *radians*, not degrees. If " "you're more comfortable working with degrees, you'll need to use the " "``deg2rad()`` and ``rad2deg()`` functions to convert between the two." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:864 msgid "HUD" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:866 msgid "" "The final piece our game needs is a UI: an interface to display things like " "score, a \"game over\" message, and a restart button. Create a new scene, " "and add a :ref:`CanvasLayer ` node named ``HUD``. \"HUD\" " "stands for \"heads-up display\", an informational display that appears as an " "overlay on top of the game view." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:872 msgid "" "The :ref:`CanvasLayer ` node lets us draw our UI elements " "on a layer above the rest of the game, so that the information it displays " "isn't covered up by any game elements like the player or mobs." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:876 msgid "The HUD displays the following information:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:878 msgid "Score, changed by ``ScoreTimer``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:879 msgid "A message, such as \"Game Over\" or \"Get Ready!\"" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:880 msgid "A \"Start\" button to begin the game." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:882 msgid "" "The basic node for UI elements is :ref:`Control `. To create " "our UI, we'll use two types of :ref:`Control ` nodes: :ref:" "`Label ` and :ref:`Button `." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:886 msgid "Create the following as children of the ``HUD`` node:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:888 msgid ":ref:`Label ` named ``ScoreLabel``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:889 msgid ":ref:`Label ` named ``MessageLabel``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:890 msgid ":ref:`Button ` named ``StartButton``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:891 msgid ":ref:`Timer ` named ``MessageTimer``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:893 msgid "" "Click on the ``ScoreLabel`` and type a number into the _Text_ field in the " "Inspector. The default font for ``Control`` nodes is small and doesn't scale " "well. There is a font file included in the game assets called \"Xolonium-" "Regular.ttf\". To use this font, do the following for each of the three " "``Control`` nodes:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:899 msgid "Under \"Custom Fonts\", choose \"New DynamicFont\"" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:903 msgid "" "Click on the \"DynamicFont\" you added, and under \"Font/Font Data\", choose " "\"Load\" and select the \"Xolonium-Regular.ttf\" file. You must also set the " "font's ``Size``. A setting of ``64`` works well." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:909 msgid "" "**Anchors and Margins:** ``Control`` nodes have a position and size, but " "they also have anchors and margins. Anchors define the origin - the " "reference point for the edges of the node. Margins update automatically when " "you move or resize a control node. They represent the distance from the " "control node's edges to its anchor. See :ref:" "`doc_design_interfaces_with_the_control_nodes` for more details." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:916 msgid "" "Arrange the nodes as shown below. Click the \"Anchor\" button to set a " "Control node's anchor:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:921 msgid "" "You can drag the nodes to place them manually, or for more precise " "placement, use the following settings:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:925 msgid "ScoreLabel" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:927 msgid "*Text* : ``0``" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:928 msgid "*Layout* : \"Top Wide\"" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:929 #: ../../docs/getting_started/step_by_step/your_first_game.rst:936 msgid "*Align* : \"Center\"" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:932 msgid "MessageLabel" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:934 msgid "*Text* : ``Dodge the Creeps!``" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:935 msgid "*Layout* : \"HCenter Wide\"" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:939 msgid "StartButton" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:941 msgid "*Text* : ``Start``" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:942 msgid "*Layout* : \"Center Bottom\"" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:943 msgid "*Margin* :" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:945 msgid "Top: ``-200``" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:946 msgid "Bottom: ``-100``" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:948 msgid "Now add this script to ``HUD``:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:967 msgid "" "The ``start_game`` signal tells the ``Main`` node that the button has been " "pressed." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:989 msgid "" "This function is called when we want to display a message temporarily, such " "as \"Get Ready\". On the ``MessageTimer``, set the ``Wait Time`` to ``2`` " "and set the ``One Shot`` property to \"On\"." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1020 msgid "" "This function is called when the player loses. It will show \"Game Over\" " "for 2 seconds, then return to the title screen and, after a brief pause, " "show the \"Start\" button." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1024 msgid "" "When you need to pause for a brief time, an alternative to using a Timer " "node is to use the SceneTree's ``create_timer()`` function. This can be very " "useful to delay, such as in the above code, where we want to wait a little " "bit of time before showing the \"Start\" button." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1042 msgid "This function is called by ``Main`` whenever the score changes." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1044 msgid "" "Connect the ``timeout()`` signal of ``MessageTimer`` and the ``pressed()`` " "signal of ``StartButton``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1071 msgid "Connecting HUD to Main" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1073 msgid "" "Now that we're done creating the ``HUD`` scene, save it and go back to " "``Main``. Instance the ``HUD`` scene in ``Main`` like you did the ``Player`` " "scene, and place it at the bottom of the tree. The full tree should look " "like this, so make sure you didn't miss anything:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1080 msgid "" "Now we need to connect the ``HUD`` functionality to our ``Main`` script. " "This requires a few additions to the ``Main`` scene:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1083 msgid "" "In the Node tab, connect the HUD's ``start_game`` signal to the " "``new_game()`` function." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1086 msgid "" "In ``new_game()``, update the score display and show the \"Get Ready\" " "message:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1101 msgid "In ``game_over()`` we need to call the corresponding ``HUD`` function:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1112 msgid "" "Finally, add this to ``_on_ScoreTimer_timeout()`` to keep the display in " "sync with the changing score:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1124 msgid "" "Now you're ready to play! Click the \"Play the Project\" button. You will be " "asked to select a main scene, so choose ``Main.tscn``." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1128 msgid "Removing old creeps" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1130 msgid "" "If you play until \"Game Over\" and then start a new game the creeps from " "the previous game are still on screen. It would be better if they all " "disappeared at the start of a new game." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1134 msgid "" "We'll use the ``start_game`` signal that's already being emitted by the " "``HUD`` node to remove the remaining creeps. We can't use the editor to " "connect the signal to the mobs in the way we need because there are no " "``Mob`` nodes in the ``Main`` scene tree until we run the game. Instead " "we'll use code." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1139 msgid "" "Start by adding a new function to ``Mob.gd``. ``queue_free()`` will delete " "the current node at the end of the current frame." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1155 msgid "" "Then in ``Main.gd`` add a new line inside the ``_on_MobTimer_timeout()`` " "function, at the end." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1167 msgid "" "This line tells the new Mob node (referenced by the ``mob`` variable) to " "respond to any ``start_game`` signal emitted by the ``HUD`` node by running " "its ``_on_start_game()`` function." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1172 msgid "Finishing up" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1174 msgid "" "We have now completed all the functionality for our game. Below are some " "remaining steps to add a bit more \"juice\" to improve the game experience. " "Feel free to expand the gameplay with your own ideas." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1179 #: ../../docs/tutorials/3d/environment_and_post_processing.rst:59 msgid "Background" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1181 msgid "" "The default gray background is not very appealing, so let's change its " "color. One way to do this is to use a :ref:`ColorRect ` " "node. Make it the first node under ``Main`` so that it will be drawn behind " "the other nodes. ``ColorRect`` only has one property: ``Color``. Choose a " "color you like and drag the size of the ``ColorRect`` so that it covers the " "screen." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1188 msgid "" "You could also add a background image, if you have one, by using a " "``Sprite`` node." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1192 msgid "Sound effects" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1194 msgid "" "Sound and music can be the single most effective way to add appeal to the " "game experience. In your game assets folder, you have two sound files: " "\"House In a Forest Loop.ogg\" for background music, and \"gameover.wav\" " "for when the player loses." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1199 msgid "" "Add two :ref:`AudioStreamPlayer ` nodes as children " "of ``Main``. Name one of them ``Music`` and the other ``DeathSound``. On " "each one, click on the ``Stream`` property, select \"Load\", and choose the " "corresponding audio file." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1204 msgid "" "To play the music, add ``$Music.play()`` in the ``new_game()`` function and " "``$Music.stop()`` in the ``game_over()`` function." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1207 msgid "Finally, add ``$DeathSound.play()`` in the ``game_over()`` function." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1210 msgid "Keyboard Shortcut" msgstr "Scorciatoie da tastiera" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1212 msgid "" "Since the game is played with keyboard controls, it would be convenient if " "we could also start the game by pressing a key on the keyboard. One way to " "do this is using the \"Shortcut\" property of the ``Button`` node." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1216 msgid "" "In the ``HUD`` scene, select the ``StartButton`` and find its _Shortcut_ " "property in the Inspector. Select \"New Shortcut\" and click on the " "\"Shortcut\" item. A second _Shortcut_ property will appear. Select \"New " "InputEventAction\" and click the new \"InputEvent\". Finally, in the " "_Action_ property, type the name \"ui_select\". This is the default input " "event associated with the spacebar." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1224 msgid "" "Now when the start button appears, you can either click it or press the " "spacebar to start the game." msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1228 msgid "Project files" msgstr "File del progetto" #: ../../docs/:1 msgid "You can find a completed version of this project at these locations:" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1231 msgid "https://github.com/kidscancode/Godot3_dodge/releases" msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:1232 msgid "https://github.com/godotengine/godot-demo-projects" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:4 #: ../../docs/getting_started/editor/command_line_tutorial.rst:130 msgid "Exporting" msgstr "Esportazione" #: ../../docs/getting_started/step_by_step/exporting.rst:9 msgid "" "Now that you have a working game, you probably want to share your success " "with others. However, it's not practical to ask your friends to download " "Godot just so they can open your project. Instead, you can *export* your " "project, converting it into a \"package\" that can be run by anyone." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:14 msgid "" "The way you export your game depends on what platform you are targeting. In " "this tutorial, you'll learn how to export the \"Dodge the Creeps\" game for " "a variety of platforms. First, however, we need to make some changes to the " "way the game works." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:19 msgid "" "If you haven't made \"Dodge the Creeps\" yourself yet, please read :ref:" "`doc_your_first_game` before continuing with this tutorial." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:23 msgid "Preparing the project" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:25 msgid "" "In \"Dodge the Creeps\" we used keyboard controls to move the player's " "character. This is fine if your game is being played on a PC platform, but " "on a phone or tablet, you need to support touchscreen input. Because a click " "event can be treated the same as a touch event, we'll convert the game to a " "click-and-move input style." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:31 msgid "" "By default Godot emulates mouse input from touch input. That means if " "anything is coded to happen on a mouse event, touch will trigger it as well. " "If you wish to disable that for whatever reason, or emulate touch from mouse " "input, you can do that in the \"Project Settings\" under *Input Devices* and " "*Pointing*" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:38 msgid "" "Before we change the input method, in the project settings go to *Display*, " "then click on *Window*. In the *Stretch* options, set *Mode* to \"2d\" and " "*Aspect* to \"keep\". This ensures that the game scales consistently on " "different sized screens." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:44 msgid "" "Next, we need to modify the ``Player.gd`` script to change the input method. " "We'll remove the key inputs and make the player move towards a \"target\" " "that's set by the touch (or click) event." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:48 msgid "" "Here is the full script for the player, with comments noting what we've " "changed:" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:123 #: ../../docs/getting_started/workflow/export/exporting_projects.rst:92 #: ../../docs/development/compiling/introduction_to_the_buildsystem.rst:198 #: ../../docs/development/compiling/compiling_with_mono.rst:158 msgid "Export templates" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:125 msgid "" "In order to export, you need to download the *export templates* from the " "http://godotengine.org/download. These templates are optimized versions of " "the engine without the editor pre-compiled for each platform . You can also " "download them in Godot by clicking on *Editor -> Manage Export Templates*:" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:132 msgid "" "In the window that appears, you can click \"Download\" to get the template " "version that matches your version of Godot." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:137 msgid "" "If you upgrade Godot, you must download templates that match the new version " "or your exported projects may not work correctly." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:141 msgid "Export presets" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:143 msgid "" "Next, you can configure the export settings by clicking on *Project -> " "Export*:" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:147 msgid "" "Create a new export preset by clicking \"Add...\" and selecting a platform. " "You can make as many presets as you like with different settings." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:150 msgid "" "At the bottom of the window are two buttons. \"Export PCK/ZIP\" only creates " "a packed version of your project's data. This doesn't include an executable " "so the project can't be run on its own." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:154 msgid "" "The second button, \"Export Project\", creates a complete executable version " "of your game, such as an `.apk` for Android or an `.exe` for Windows." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:157 msgid "" "In the \"Resources\" and \"Features\" tabs, you can customize how the game " "is exported for each platform. We can leave those settings alone for now." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:161 msgid "Exporting by platform" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:163 msgid "" "In this section, we'll walk through the process for each platform, including " "any additional software or requirements you'll need." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:167 msgid "PC (Linux/macOS/Windows)" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:169 msgid "" "Exporting PC platforms works the same across the three supported operating " "systems. Open the export window and click \"Add..\" to create the preset(s) " "you want to make. Then click \"Export Project\" and choose a name and " "destination folder. Choose a location *outside* of your project folder." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:174 msgid "Click \"Save\" and the engine will build the export files." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:176 msgid "" "When exporting for macOS, if you export on a macOS computer, you'll end up " "with a `.dmg` file, while using Linux or Windows produces a `.zip`. In " "either case, the compressed file contains a macOS `.app` that you can double-" "click and run." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:181 msgid "" "On Windows, if you want your exported executable to have a different icon " "than the default one, you need to change it manually. See: :ref:" "`doc_changing_application_icon_for_windows`." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:188 msgid "" "Mobile devices come with a wide variety of capabilities. In most cases, " "Godot's default settings will work, but mobile development is sometimes more " "art than science, and you may need to do some experimenting and searching " "for help in order to get everything working." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:194 msgid "" "Before you can export your project for Android, you must download the " "following software:" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:197 msgid "Android SDK: https://developer.android.com/studio/" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:198 msgid "" "Java JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:200 msgid "" "When you run Android Studio for the first time, click on *Configure -> SDK " "Manager* and install \"Android SDK Platform Tools\". This installs the `adb` " "command-line tool that Godot uses to communicate with your device." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:204 msgid "" "Next, create a debug keystore by running the following command on your " "system's command line:" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:211 msgid "" "Click on *Editor -> Editor Settings* in Godot and select the *Export/" "Android* section. Here, you need to set the paths to the Android SDK " "applications on your system and the location of the keystore you just " "created." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:217 msgid "" "Now you're ready to export. Click on *Project -> Export* and add a preset " "for Android (see above)." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:220 msgid "" "Click the \"Export Project\" button and Godot will build an APK you can " "download on your device. To do this on the command line, use the following:" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:227 msgid "" "Your device may need to be in *developer mode*. Consult your device's " "documentation for details." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:230 msgid "" "If your system supports it, connecting a compatible Android device will " "cause a \"One-click Deploy\" button to appear in Godot's playtest button " "area:" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:235 msgid "" "Clicking this button builds the APK and copies it onto your device in one " "step." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:240 msgid "" "In order to build your game for iOS, you must have a computer running macOS " "with Xcode installed." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:243 msgid "" "Before exporting, there are some settings that you *must* complete for the " "project to export successfully. First, the \"App Store Team Id\", which you " "can find by logging in to your Apple developer account and looking in the " "\"Membership\" section." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:247 msgid "You must also provide icons and splash screen images as shown below:" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:251 msgid "Click \"Export Project\" and select a destination folder." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:253 msgid "" "Once you have successfully exported the project, you'll find the following " "folders and files have been created in your selected location:" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:258 msgid "" "You can now open the project in Xcode and build the project for iOS. Xcode " "build procedure is beyond the scope of this tutorial. See https://help.apple." "com/xcode/mac/current/#/devc8c2a6be1 for more information." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:264 msgid "HTML5 (web)" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:266 msgid "" "Click \"Export Project\" on the HTML5 preset. We don't need to change any of " "the default settings." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:269 msgid "" "When the export is complete, you'll have a folder containing the following " "files:" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:274 msgid "" "Viewing the `.html` file in your browser lets you play the game. However, " "you can't open the file directly, it needs to be served by a web server. If " "you don't have one set up on your computer, you can use Google to find " "suggestions for your specific OS." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:279 msgid "" "Point your browser at the URL where you've placed the html file. You may " "have to wait a few moments while the game loads before you see the start " "screen." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:284 msgid "" "The console window beneath the game tells you if anything goes wrong. You " "can disable it by setting \"Export With Debug\" off when you export the " "project." msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:287 msgid "" "Browser support for WASM is not very widespread. Firefox and Chrome both " "support it, but you may still find some things that don't work. Make sure " "you have updated your browser to the most recent version, and report any " "bugs you find at the `Godot Github repository `_." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:4 msgid "Godot’s design philosophy" msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:6 msgid "Now that you've gotten your hands wet, let's talk about Godot's design." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:8 msgid "" "**Every game engine is different and fits different needs.** Not only do " "they offer a range of features, but the design of each engine is unique. " "This leads to different workflows and different ways to form your games’ " "structures. This all stems from their respective design philosophies." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:13 msgid "" "This page is here to help you understand how Godot works, starting with some " "of its core pillars. It is not a list of available features, nor is it an " "engine comparison. To know if any engine can be a good fit for your project, " "you need to try it out for yourself and understand its design and " "limitations." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:19 msgid "" "Please watch `Discover Godot 3, the Free game engine `_ if you're looking for an overview of the engine's features." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:23 msgid "Object-oriented design and composition" msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:25 msgid "" "Godot embraces object-oriented design at its core with its flexible scene " "system and Node hierarchy. It tries to stay away from strict programming " "patterns to offer an intuitive way to structure your game." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:29 msgid "" "For one, Godot lets you **compose or aggregate** scenes. It's like nested " "prefabs: you can create a BlinkingLight scene and a BrokenLantern scene that " "uses the BlinkingLight. Then, create a city filled with BrokenLanterns. " "Change the BlinkingLight's color, save, and all the BrokenLanterns in the " "city will update instantly." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:36 msgid "On top of that, you can **inherit** from any scene." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:38 msgid "" "A Godot scene could be a Weapon, a Character, an Item, a Door, a Level, part " "of a level… anything you’d like. It works like a class in pure code, except " "you’re free to design it by using the editor, using only the code, or mixing " "and matching the two." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:43 msgid "" "It’s different from prefabs you find in several 3D engines, as you can then " "inherit from and extend those scenes. You may create a Magician that extends " "your Character. Modify the Character in the editor and the Magician will " "update as well. It helps you build your projects so that their structure " "matches the game’s design." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:51 msgid "" "Also note that Godot offers many different types of objects called nodes, " "each with a specific purpose. Nodes are part of a tree and always inherit " "from their parents up to the Node class. Although the engine does feature " "components like collision shapes, they’re the exception, not the norm." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:59 msgid "" "Sprite is a Node2D, a CanvasItem and a Node. It has all the properties and " "features of its three parent classes, like transforms or the ability to draw " "custom shapes and render with a custom shader." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:64 msgid "All-inclusive package" msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:66 msgid "" "Godot tries to provide its own tools to answer most common needs. It has a " "dedicated scripting workspace, an animation editor, a tilemap editor, a " "shader editor, a debugger, a profiler, the ability to hot-reload locally and " "on remote devices, etc." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:73 msgid "" "The goal is to offer a full package to create games and a continuous user " "experience. You can still work with external programs as long as there is an " "import plugin for it. Or you can create one, like the `Tiled Map Importer " "`__." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:78 msgid "" "That is also partly why Godot offers its own programming languages GDscript " "and VisualScript, along with C#. They’re designed for the needs of game " "developers and game designers, and they’re tightly integrated in the engine " "and the editor." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:83 msgid "" "GDscript lets you write simple code using Python-like syntax, yet it detects " "types and offers a static language's quality of auto-completion. It is also " "optimized for gameplay code with built-in types like Vectors and Colors." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:87 msgid "" "Note that with GDNative, you can write high-performance code using compiled " "languages like C, C++, Rust, or Python (using the Cython compiler) without " "recompiling the engine." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:93 msgid "" "*VisualScript is a node-based programming language that integrates well in " "the editor. You can drag and drop nodes or resources into the graph to " "create new code blocks.*" msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:97 msgid "" "Note that the 3D workspace doesn’t feature as many tools as the 2D " "workspace. You’ll need external programs or add-ons to edit terrains, " "animate complex characters, and so on. Godot provides a complete API to " "extend the editor’s functionality using game code. See `The Godot editor is " "a Godot game`_ below." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:104 msgid "" "*A State Machine editor plugin in Godot 2 by kubecz3k. It lets you manage " "states and transitions visually.*" msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:108 msgid "Open source" msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:110 msgid "" "Godot offers a fully open source codebase under the **MIT license**. This " "means all the technologies that ship with it have to be Free (as in freedom) " "as well. For the most part, they’re developed from the ground up by " "contributors." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:115 msgid "" "Anyone can plug in proprietary tools for the needs of their projects — they " "just won’t ship with the engine. This may include Google AdMob, or FMOD. Any " "of these can come as third-party plugins instead." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:120 msgid "" "On the other hand, an open codebase means you can **learn from and extend " "the engine** to your heart’s content. You can also debug games easily, as " "Godot will print errors with a stack trace, even if they come from the " "engine itself." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:126 msgid "" "This **does not affect the work you do with Godot** in any way: there’s no " "strings attached to the engine or anything you make with it." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:130 msgid "Community-driven" msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:132 msgid "" "**Godot is made by its community, for the community, and for all game " "creators out there.** It’s the needs of the users and open discussions that " "drive the core updates. New features from the core developers often focus on " "what will benefit the most users first." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:137 msgid "" "That said, although a handful of core developers work on it full-time, the " "project has over 600 contributors at the time of writing. Benevolent " "programmers work on features they may need themselves, so you’ll see " "improvements in all corners of the engine at the same time in every major " "release." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:144 msgid "The Godot editor is a Godot game" msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:146 msgid "" "The Godot editor runs on the game engine. It uses the engine’s own UI " "system, it can hot-reload code and scenes when you test your projects, or " "run game code in the editor. This means you can **use the same code** and " "scenes for your games, or **build plugins and extend the editor.**" msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:151 msgid "" "This leads to a reliable and flexible UI system, as it powers the editor " "itself. With the ``tool`` keyword, you can run any game code in the editor." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:156 msgid "" "*RPG in a Box is a voxel RPG editor made with Godot 2. It uses Godot’s UI " "tools for its node-based programming system and for the rest of the " "interface.*" msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:160 msgid "" "Put the ``tool`` keyword at the top of any GDScript file and it will run in " "the editor. This lets you import and export plugins, create plugins like " "custom level editors, or create scripts with the same nodes and API you use " "in your projects." msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:166 msgid "Separate 2D and 3D engines" msgstr "" #: ../../docs/getting_started/step_by_step/godot_design_philosophy.rst:168 msgid "" "Godot offers dedicated 2D and 3D rendering engines. As a result, **the base " "unit for 2D scenes is pixels.** Even though the engines are separate, you " "can render 2D in 3D, 3D in 2D, and overlay 2D sprites and interfaces over " "your 3D world." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:4 msgid "Design interfaces with the Control nodes" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:6 msgid "" "Computer displays, mobile phones, and TV screens come in all shapes and " "sizes. To ship a game, you'll need to support different screen ratios and " "resolutions. It can be hard to build responsive interfaces that adapt to all " "platforms. Thankfully, Godot comes with robust tools to design and manage a " "responsive User Interface." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:14 msgid "Godot's editor is made with the engine's UI framework" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:16 msgid "This guide will get you started with UI design. You will learn:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:18 msgid "The five most useful control nodes to build your games' interface" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:19 msgid "How to work with the anchor of UI elements" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:20 msgid "" "How to efficiently place and arrange your user interface using containers" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:22 msgid "" "The five most common containers (at a later time, you can learn more about " "containers in the :ref:`GUI Containers ` documentation " "page)." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:25 msgid "" "To learn how to control the interface and connect it to other scripts, read :" "ref:`Build your first game UI in Godot `." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:28 msgid "" "To design your UI, you'll use the Control nodes. These are the nodes with " "green icons in the editor. There are dozens of them, for creating anything " "from life bars to complex applications. Godot's editor itself is built using " "Control nodes." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:32 msgid "" "Control nodes have unique properties that allow them to work well with one " "another. Other visual nodes, like Node2D and Sprite don't have these " "capabilities. So to make your life easier use Control nodes wherever " "possible when building your UIs." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:36 msgid "All control nodes share the same main properties:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:38 msgid "Anchor" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:39 msgid "Bounding rectangle" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:40 msgid "Focus and focus neighbor" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:41 #: ../../docs/tutorials/gui/gui_containers.rst:38 msgid "Size flags" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:42 msgid "Margin" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:43 msgid "The optional UI theme" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:45 msgid "" "Once you understand the basics of the Control node, it will take you less " "time to learn all the nodes that derive from it." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:50 msgid "The 5 most common UI elements" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:52 msgid "" "Godot ships with dozens of Control nodes. A lot of them are here to help you " "build editor plugins and applications." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:55 msgid "" "For most games, you'll only need five types of UI elements, and a few " "Containers. These five Control nodes are:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:58 msgid "Label: for displaying text" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:59 msgid "" "TextureRect: used mostly for backgrounds, or everything that should be a " "static image" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:61 msgid "" "TextureProgress: for lifebars, loading bars, horizontal, vertical or radial" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:63 msgid "NinePatchRect: for scalable panels" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:64 msgid "TextureButton: to create buttons" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:68 msgid "The 5 most common Control nodes for UI design" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:71 msgid "TextureRect" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:73 msgid "" "**TextureRect** displays a texture or image inside a UI. It seems similar to " "the Sprite node, but it offers multiple scaling modes. Set the Stretch Mode " "property to change its behavior:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:77 msgid "" "``Scale On Expand (compat)`` scales the texture to fit the node's bounding " "rectangle, only if ``expand`` property is ``true``; otherwise, it behaves " "like ``Keep`` mode. Default mode for backwards compatibility." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:80 msgid "``Scale`` scales the texture to fit the node's bounding rectangle." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:81 msgid "``Tile`` makes the texture repeat, but it won't scale." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:82 msgid "" "``Keep`` and ``Keep Centered`` force the texture to remain at its original " "size, in the top left corner or the center of the frame respectively." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:85 msgid "" "``Keep Aspect`` and ``Keep Aspect Centered`` scales the texture but force it " "to remain its original aspect ratio, in the top left corner or the center of " "the frame respectively." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:87 msgid "" "``Keep Aspect Covered`` works just like ``Keep Aspect Centered`` but the " "shorter side fits the bounding rectangle and the other one clips to the " "node's limits." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:90 msgid "" "As with Sprite nodes, you can modulate the TextureRect's color. Click the " "``Modulate`` property and use the color picker." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:95 msgid "TextureRect modulated with a red color" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:98 msgid "TextureButton" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:100 msgid "" "**TextureButton** is like TextureRect, except it has 5 texture slots: one " "for each of the button's states. Most of the time, you'll use the Normal, " "Pressed, and Hover textures. Focused is useful if your interface listens to " "the keyboard's input. The sixth image slot, the Click Mask, lets you define " "the clickable area using a 2-bit, pure black and white image." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:107 msgid "" "In the Base Button section, you'll find a few checkboxes that change how the " "button behaves. When ``Toggle Mode`` is on, the button will toggle between " "active and normal states when you press it. ``Disabled`` makes it disabled " "by default, in which case it will use the ``Disabled`` texture. " "TextureButton shares a few properties with the texture frame: it has a " "``modulate`` property, to change its color, and ``Resize`` and ``Stretch`` " "modes to change its scale behavior." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:117 msgid "TextureButton and its 5 texture slots" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:120 msgid "TextureProgress" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:122 msgid "" "**TextureProgress** layers up to 3 sprites to create a progress bar. The " "Under and Over textures sandwich the Progress one, which displays the bar's " "value." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:126 msgid "" "The ``Mode`` property controls the direction in which the bar grows: " "horizontally, vertically, or radially. If you set it to radial, the " "``Initial Angle`` and ``Fill Degrees`` properties let you limit the range of " "the gauge." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:131 msgid "" "To animate the bar, you'll want to look at the Range section. Set the " "``Min`` and ``Max`` properties to define the range of the gauge. For " "instance, to represent a character's life, you'll want to set ``Min`` to ``0," "`` and ``Max`` to the character's maximum life. Change the ``Value`` " "property to update the bar. If you leave the ``Min`` and ``Max`` values to " "the default of ``0`` and ``100,`` and set the ``Value`` property to ``40``, " "40% of the ``Progress`` texture will show up, and 60% of it will stay hidden." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:141 msgid "TextureProgress bar, two thirds filled" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:146 msgid "" "**Label** prints text to the screen. You'll find all its properties in the " "Label section, in the Inspector. Write the text in the ``Text`` property, " "and check Autowrap if you want it to respect the textbox's size. If Autowrap " "is off, you won't be able to scale the node. You can align the text " "horizontally and vertically with Align and Valign, respectively." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:155 msgid "Picture of a Label" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:158 msgid "NinePatchRect" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:160 msgid "" "**NinePatchRect** takes a texture split in 3 rows and 3 columns. The center " "and the sides tile when you scale the texture, but it never scales the " "corners. It is useful to build panels, dialog boxes and scalable backgrounds " "for your UI." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:167 msgid "NinePatchRect scaled with the min\\_size property" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:170 msgid "There are two workflows to build responsive UIs" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:172 msgid "" "There are two workflows to build scalable and flexible interfaces in Godot:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:174 msgid "" "You have many container nodes at your disposal that scale and place UI " "elements for you. They take control over their children." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:175 msgid "" "On the other side, you have the layout menu. It helps you to anchor, place " "and resize a UI element within its parent." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:177 msgid "" "The two approaches are not always compatible. Because a container controls " "its children, you cannot use the layout menu on them. Each container has a " "specific effect, so you may need to nest several of them to get a working " "interface. With the layout approach you work from the bottom up, on the " "children. As you don't insert extra containers in the scene it can make for " "cleaner hierarchies, but it's harder to arrange items in a row, column, " "grid, etc." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:179 msgid "" "As you create UIs for your games and tools, you'll develop a sense for what " "fits best in each situation." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:183 msgid "Place UI elements precisely with anchors" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:185 msgid "" "Control nodes have a position and size, but they also have anchors and " "margins. Anchors define the origin, or the reference point, for the Left, " "Top, Right and Bottom edges of the node. Change any of the 4 anchors to " "change the reference point of the margins." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:192 msgid "The anchor property" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:195 msgid "How to change the anchor" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:197 msgid "" "Like any properties, you can edit the 4 anchor points in the Inspector, but " "this is not the most convenient way. When you select a control node, the " "layout menu appears above the viewport, in the toolbar. It gives you a list " "of icons to set all 4 anchors with a single click, instead of using the " "inspector's 4 properties. The layout menu will only show up when you select " "a control node." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:206 msgid "The layout menu in the viewport" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:209 msgid "Anchors are relative to the parent container" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:211 msgid "" "Each anchor is a value between 0 and 1. For the left and top anchors, a " "value of 0 means that without any margin, the node's edges will align with " "the left and top edges of its parent. For the right and bottom edges, a " "value of 1 means they'll align with the parent container's right and bottom " "edges. On the other hand, margins represent a distance to the anchor " "position in pixels, while anchors are relative to the parent container's " "size." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:221 msgid "" "Margins are relative to the anchor position, which is relative to the " "anchors. In practice, you'll often let the container update margins for you" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:226 msgid "Margins change with the anchor" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:228 msgid "" "Margins update automatically when you move or resize a control node. They " "represent the distance from the control node's edges to its anchor, which is " "relative to the parent control node or container. That's why your control " "nodes should always be inside a container, as we'll see in a moment. If " "there's no parent, the margins will be relative to the node's own bounding " "Rectangle, set in the Rect section, in the inspector." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:238 msgid "Margins on a CenterContainer set to the \"Full Rect\" anchor" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:240 msgid "" "Try to change the anchors or nest your Control nodes inside Containers: the " "margins will update. You'll rarely need to edit the margins manually. Always " "try to find a container to help you first; Godot comes with nodes to solve " "all the common cases for you. Need to add space between a lifebar and the " "border of the screen? Use the MarginContainer. Want to build a vertical " "menu? Use the VBoxContainer. More on these below." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:249 msgid "Use size tags to change how UI elements fill the available space" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:251 msgid "" "Every control node has Size Flags. They tell containers how the UI elements " "should scale. If you add the \"Fill\" flag to the Horizontal or Vertical " "property, the node's bounding box will take all the space it can, but it'll " "respect its siblings and retain its size. If there are 3 TextureRect nodes " "in an HBoxContainer, with the \"Fill\" flags on both axes, they'll each take " "up to a third of the available space, but no more. The container will take " "over the node and resize it automatically." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:261 msgid "3 UI elements in an HBoxContainer, they align horizontally" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:263 msgid "" "The \"Expand\" flag lets the UI element take all the space it can, and push " "against its siblings. Its bounding rectangle will grow against the edges of " "its parent, or until it's blocked by another UI node." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:269 msgid "" "The same example as above, but the center node has the \"Expand\" size flag" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:272 msgid "" "You'll need some practice to understand the size tags, as their effect can " "change quite a bit depending on how you set up your interface." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:276 msgid "Arrange control nodes automatically with containers" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:278 msgid "" "Containers automatically arrange all children Control nodes including other " "containers in rows, columns, and more. Use them to add padding around your " "interface or center nodes in their bounding rectangles. All built-in " "containers update in the editor, so you can see the effect instantly." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:284 msgid "" "Containers have a few special properties to control how they arrange UI " "elements. To change them, navigate down to the Custom Constants section in " "the Inspector." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:289 msgid "The 5 most useful containers" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:291 msgid "" "If you build tools, you might need all of the containers. But for most " "games, a handful will be enough:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:294 msgid "MarginContainer, to add margins around part of the UI" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:295 msgid "CenterContainer, to center its children in its bounding box" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:296 msgid "" "VboxContainer and HboxContainer, to arrange UI elements in rows or columns" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:298 msgid "GridContainer, to arrange Controls nodes in a grid-like pattern" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:300 msgid "" "CenterContainer centers all its children inside of its bounding rectangle. " "It's one you typically use for title screens, if you want the options to " "stay in the center of the viewport. As it centers everything, you'll often " "want a single container nested inside it. If you use textures and buttons " "instead, they'll stack up." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:308 msgid "" "CenterContainer in action. The life bar centers inside its parent container." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:311 msgid "" "The MarginContainer adds a margin on any side of the child nodes. Add a " "MarginContainer that encompasses the entire viewport to add a separation " "between the edge of the window and the UI. You can set a margin on the top, " "left, right, or bottom side of the container. No need to tick the checkbox: " "click the corresponding value box and type any number. It will activate " "automatically." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:320 msgid "The MarginContainer adds a 40px margin around the Game User Interface" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:322 msgid "" "There are two BoxContainers: VBoxContainer and HBoxContainer. You cannot add " "the BoxContainer node itself, as it is a helper class, but you can use " "vertical and horizontal box containers. They arrange nodes either in rows or " "columns. Use them to line up items in a shop, or to build complex grids with " "rows and columns of different sizes, as you can nest them to your heart's " "content." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:331 msgid "The HBoxContainer horizontally aligns UI elements" msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:333 msgid "" "VBoxContainer automatically arranges its children into a column. It puts " "them one after the other. If you use the separation parameter, it will leave " "a gap between its children. HBoxContainer arranges UI elements in a row. " "It's similar to the VBoxContainer, with an extra ``add_spacer`` method to " "add a spacer control node before its first child or after its last child, " "from a script." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:340 msgid "" "The GridContainer lets you arrange UI elements in a grid-like pattern. You " "can only control the number of columns it has, and it will set the number of " "rows by itself, based on its children's count. If you have nine children and " "three columns, you will have 9÷3 = 3 rows. Add three more children and " "you'll have four rows. In other words, it will create new rows as you add " "more textures and buttons. Like the box containers, it has two properties to " "set the vertical and horizontal separation between the rows and columns " "respectively." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:351 msgid "A GridContainer with 2 columns. It sizes each column automatically." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:353 msgid "" "Godot's UI system is complex, and has a lot more to offer. To learn how to " "design more advanced interfaces, head to the :ref:`GUI section ` of the docs." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:4 msgid "Design a title screen" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:6 msgid "" "In the next two tutorials, you will build two responsive UI (user interface) " "scenes step-by-step using the engine's UI system:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:9 msgid "A main menu" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:10 msgid "A game UI with a health bar, energy bar, bomb and money counters" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:12 msgid "" "You will learn how to design game UIs efficiently, and how to use Godot's " "Control nodes. This page focuses on the visual part: everything you do from " "the editor. To learn how to code a life bar, read :doc:`ui_code_a_life_bar`" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:20 msgid "The GUI you're going to create" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:22 msgid "" "Download the project files: :download:`ui_main_menu_design.zip ` and extract the archive. Import the ``start/`` " "project in Godot to follow this tutorial. The ``end/`` folder contains the " "final result. You'll find all the sprites in the ``start/assets/main_menu`` " "folder." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:33 msgid "How to design your game UI" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:35 msgid "" "To design a good UI, you want to come up with a rough mockup first: a plain " "drawing version that focuses on the placement of your UI components, their " "size, and user interaction. Pen and paper is all you need. You shouldn't use " "fancy and final graphics at this stage. Then, you only need simple " "placeholder sprites and you're good to jump into Godot. You want to make " "sure the players can find their way around the interface using those " "placeholders." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:45 msgid "The UI's rough plan or mockup" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:47 msgid "" "Placeholder doesn't have to mean ugly, but you should keep the graphics " "simple and clean. Avoid special effects, animation, and detailed " "illustration before you have players playtest your UI. Otherwise:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:51 msgid "" "The graphics might skew the players' perception of the experience and you'll " "miss out on valuable feedback" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:53 msgid "If the User Experience doesn't work, you'll have to redo some sprites" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:57 msgid "" "Always try to make the interface work with simple text and boxes first. It's " "easy to replace the textures later. Professional UX designers often work " "with plain outlines and boxes in greyscale. When you take colors and fancy " "visuals away, it's a lot easier to size and place UI elements properly. It " "helps you refine the design foundation you'll build upon." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:64 msgid "There are two ways to design your UI in Godot. You can:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:66 msgid "" "Build it all in a single scene, and eventually save some branches as " "reusable scenes" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:68 msgid "" "Build template scenes for reusable components and create specific components " "that inherit from your base scenes" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:71 msgid "" "We will use the first approach, because the first version of your UI may not " "work as well as you’d like. You’re likely to throw parts away and redesign " "components as you go. When you're sure everything works, it's easy to make " "some parts reusable, as you'll see below." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:78 msgid "" "The files you'll find in Godot. The graphics look cleaner than on the rough " "design, but they're still placeholders" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:82 msgid "Design the main menu" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:84 msgid "" "Before we jump into the editor, we want to plan how we'll nest containers " "based on our mockup image." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:88 #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:280 msgid "Break down the UI mockup" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:90 msgid "Here are my three rules of thumb to find the right containers:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:92 msgid "" "Break down the UI into nested boxes, from the largest that contains " "everything, to the smallest ones, that encompass one widget, like a bar with " "its label, a panel or a button" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:95 msgid "If there's some padding around an area, use a ``MarginContainer``" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:96 msgid "" "If the elements are arranged in rows or columns, use an ``HBoxContainer`` or " "``VBoxContainer``" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:99 msgid "" "These rules are enough to get us started, and work well for simple " "interfaces." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:102 msgid "" "For the main menu, the largest box is the entire game window. There's " "padding between the edges of the window and the first components: this " "should be a ``MarginContainer``. Then, the screen is split into two columns, " "so we'll use an ``HBoxContainer``. In the left column, we'll manage the rows " "with a ``VBoxContainer``. And in the right column, we'll center the " "illustration with a ``CenterContainer``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:111 msgid "Interface building blocks, broken down using the three rules of thumb" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:115 msgid "" "Containers adapt to the window's resolution and width-to-height ratio. " "Although we could place UI elements by hand, containers are faster, more " "precise, and **responsive**." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:120 msgid "Prepare the Main Menu scene" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:122 msgid "" "Let's create the main menu. We'll build it in a single scene. To create an " "empty scene, click on the Scene menu -> New Scene." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:125 msgid "" "We have to add a root node before we can save the scene. Your UI's root " "should be the outermost container or element. In this case it's a " "``MarginContainer``. ``MarginContainer`` is a good starting point for most " "interfaces, as you often need padding around the UI. Press ``Meta+S`` to " "save the scene to the disk. Name it *MainMenu*." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:131 msgid "" "Select the ``MarginContainer`` again, and head to the inspector to define " "the margins' size. Scroll down the ``Control`` class, to the ``Custom " "Constants`` section. Unfold it. Set the margins as such:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:135 msgid "Margin Right: *120*" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:136 msgid "Margin Top: *80*" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:137 msgid "Margin Left: *120*" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:138 msgid "Margin Bottom: *80*" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:140 msgid "" "We want the container to fit the window. In the Viewport, open the " "``Layout`` menu and select the last option, ``Full Rect``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:144 msgid "Add the UI sprites" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:146 msgid "" "Select the ``MarginContainer``, and create the UI elements as " "``TextureRect`` nodes. We need:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:149 msgid "The title, or logo" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:150 msgid "The three text options, as individual nodes" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:151 msgid "The version note" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:152 msgid "And the main menu’s illustration" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:154 msgid "" "Click the ``Add Node`` button or press ``Meta+A`` on your keyboard. Start to " "type ``TextureRect`` to find the corresponding node and press enter. With " "the new node selected, press ``Meta+D`` five times to create five extra " "``TextureRect`` instances." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:159 msgid "" "Click each of the nodes to select it. In the inspector, find the ``Texture`` " "property and click ``[empty]`` -> ``Load``. A file browser opens and lets " "you pick a sprite to load into the texture slot." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:165 msgid "The file browser lets you find and load textures" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:167 msgid "" "Repeat the operation for all ``TextureRect`` nodes. You should have the " "logo, the illustration, the three menu options and the version note, each as " "a separate node. Then, double click on each of the nodes in the Scene tab to " "rename them. Nothing has been placed in containers yet so this should look " "messy." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:175 msgid "The six nodes, with textures loaded" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:179 msgid "" "If you want to support localization in your game, use ``Labels`` for menu " "options instead of ``TextureRect``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:183 msgid "Add containers to place UI elements automatically" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:185 msgid "" "Our main menu has some margin around the edges of the screen. It is split in " "two parts: on the left, you have the logo and the menu options. On the " "right, you have the characters. We can use one of two containers to achieve " "this: ``HSplitContainer`` or ``HBoxContainer``. Split containers split the " "area into two: a left and a right side or a top and a bottom side. They also " "allow the user to resize the left and right areas using an interactive bar. " "On the other hand, ``HBoxContainer`` just splits itself into as many columns " "as it has children. Although you can deactivate the split container's resize " "behaviour, I recommend to favour box containers." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:196 msgid "" "Select the ``MarginContainer`` and add an ``HBoxContainer``. Then, we need " "two containers as children of our ``HBoxContainer``: a ``VBoxContainer`` for " "the menu options on the left, and a ``CenterContainer`` for the illustration " "on the right." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:203 msgid "" "You should have four nested containers, and the TextureRect nodes sitting " "aside from it" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:206 msgid "" "In the node tree, select all the ``TextureRect`` nodes that should go on the " "left side: the logo, the menu options and the version note. Drag and drop " "them into the ``VBoxContainer``. The nodes should position automatically." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:212 msgid "Containers automatically place and resize textures" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:214 msgid "We're left with two problems to solve:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:216 msgid "The characters on the right aren't centered" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:217 msgid "There's no space between the logo and the other UI elements" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:219 msgid "" "To center the characters on the right, first select the ``CenterContainer``. " "Then in the Inspector, scroll down to the ``Size Flags`` category and click " "on the field to the right of the ``Vertical`` property, and check ``Expand`` " "in addition to ``Fill``. Do the same for the ``Horizontal`` property. This " "makes the ``CenterContainer`` expand into all available space while " "respecting its neighbour ``VBoxContainer``. Finally, drag and drop the " "Characters node into the ``CenterContainer``. The Characters element will " "center automatically." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:230 msgid "" "The character node centers inside the right half of the screen as soon as " "you place it inside the CenterContainer" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:233 msgid "" "To space out the menu options and the logo on the left, we'll use one final " "container and its size flags. Select the ``VBoxContainer`` and press ``Meta" "+A`` to add a new node inside it. Add a second ``VBoxContainer`` and name it " "\"MenuOptions\". Select all three menu options, ``Continue``, ``NewGame`` " "and ``Options``, and drag and drop them inside the new ``VBoxContainer``. " "The UI's layout should barely change, if at all." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:243 msgid "" "Place the new container between the other two nodes to retain the UI's layout" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:246 msgid "" "Now we grouped the menu options together, we can tell their container to " "expand to take as much vertical space as possible. Select the " "``MenuOptions`` node. In the Inspector, scroll down to the ``Size Flags`` " "category. Click on the field to the right of the ``Vertical`` property, and " "check ``Expand`` in addition to ``Fill``. The container expands to take all " "the available vertical space. But it respects its neighbors, the ``Logo`` " "and ``Version`` elements." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:254 msgid "" "To center the nodes in the ``VBoxContainer``, scroll to the top of the " "Inspector and change the ``Alignment`` property to ``Center``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:259 msgid "The menu options should center vertically in the UI's left column" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:261 msgid "" "To wrap things up, let's add some separation between the menu options. " "Expand the ``Custom Constants`` category below ``Size Flags``, and click the " "field next to the ``Separation`` parameter. Set it to 30. Once you press " "enter, the ``Separation`` property becomes active and Godot adds 30 pixels " "between menu options." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:269 msgid "The final interface" msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:271 msgid "" "Without a single line of code, we have a precise and responsive main menu." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:274 msgid "" "Congratulations for getting there! You can download the final menu :download:" "`ui_main_menu_design.zip ` to compare with " "your own. In the next tutorial, you'll create a Game User Interface with " "bars and item counters." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:282 msgid "" "A responsive User Interface is all about making sure our UIs scale well on " "all screen types. TV screens and computer displays have different sizes and " "ratios. In Godot, we use containers to control the position and the size of " "UI elements." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:287 msgid "" "The order in which you nest matters. To see if your UI adapts nicely to " "different screen ratios, select the root node, press the Q key to activate " "the Select Mode, select the container and click and drag on one of the " "container's corners to resize it. The UI components should flow inside of it." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:293 msgid "" "You'll notice that although containers move sprites around, they don't scale " "them. This is normal. We want the UI system to handle different screen " "ratios, but we also need the entire game to adapt to different screen " "resolutions. To do this, Godot scales the entire window up and down." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:299 msgid "" "You can change the scale mode in the project settings: click the Project " "menu -> Project Settings. In the window's left column, look for the Display " "category. Click on the Window sub-category. On the right side of the window, " "you'll find a Stretch section. The three settings, Mode, Aspect, and Shrink, " "control the screen size. For more information, see :ref:" "`doc_multiple_resolutions`." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:4 msgid "Design the GUI" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:6 msgid "" "Now that you've nailed the basics, we're going to see how to build a game " "Graphical User Interface (GUI) with reusable UI components: a life bar, an " "energy bar, and bomb and emerald counters. By the end of this tutorial, " "you'll have a game GUI, ready to control with GDscript or VisualScript:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:13 #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:621 msgid "The final result" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:15 msgid "You'll also learn to:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:17 msgid "Create flexible UI components" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:18 msgid "Use scene inheritance" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:19 msgid "Build a complex UI" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:21 msgid "" "Download the project files: :download:`ui_gui_design.zip ` and extract the archive. Import the `start/` project in " "Godot to follow this tutorial. The `end/` folder contains the final result." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:25 msgid "" "You can watch this tutorial as a `video on Youtube `_." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:28 msgid "Breaking down the UI" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:30 msgid "" "Let's break down the final UI and plan the containers we'll use. As in the :" "doc:`ui_main_menu`, it starts with a ``MarginContainer``. Then, we can see " "up to three columns:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:34 msgid "The life and energy counters on the left" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:35 msgid "The life and energy bars" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:36 #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:42 msgid "The bomb and emerald counters on the right" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:38 msgid "" "But the bar's label and the gauge are two parts of the same UI element. If " "we think of them this way, we're left with two columns:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:41 msgid "The life and energy bars on the left" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:44 msgid "" "This makes it easier to nest containers: we have some margins around the " "border of the screen using a ``MarginContainer``, followed by an " "``HBoxContainer`` to manage our two columns. The two bars stack on top of " "one another inside a ``VBoxContainer``. And we'll need a last " "``HBoxContainer`` in the right column to place the bomb and emerald counters " "side-by-side." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:53 msgid "We get a clean UI layout with only 4 containers" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:55 msgid "" "We will need extra containers inside the individual UI components, but this " "gives us the main GUI scene's structure. With this plan in place, we can " "jump into Godot and create our GUI." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:60 msgid "Create the base GUI" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:62 msgid "" "There are two possible approaches to the GUI: we can design elements in " "separate scenes and put them together, or prototype everything in a single " "scene and break it down later. I recommend working with a single scene as " "you can play with your UI's placement and proportions faster this way. Once " "it looks good, you can save entire sections of the node tree as reusable sub-" "scenes. We'll do that in a moment." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:69 msgid "For now, let's start with a few containers." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:71 msgid "" "Create a new scene and add a ``MarginContainer``. Select the node and name " "it ``GUI``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:74 msgid "" "We want our interface to anchor to the top of the screen. Select the ``GUI`` " "node and click the Layout button at the top of the viewport. Select the " "``Top Wide`` option. The ``GUI`` node will anchor to the top edge of its " "parent, the viewport by default. It will resize automatically on the " "vertical axis to make space for its child UI components." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:80 msgid "Save the scene as ``GUI.tscn``. We will put the entire GUI in it." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:82 msgid "" "With the ``MarginContainer`` selected, head to the inspector and scroll down " "to the custom constants section. Unfold it and click the field next to each " "of the ``Margin`` properties. Set them all to ``20`` pixels. Next, add an " "``HBoxContainer`` node. This one will contain our two bars on the left and " "separate them from the two counters on the right." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:88 msgid "" "We want to stack the bars vertically inside the ``HBoxContainer``. Add a " "``VBoxContainer`` as a child of ``HBoxContainer`` and name it ``Bars``. " "Select the parent ``HBoxContainer`` again and this time, add another " "``HBoxContainer`` as a child of it. Call it ``Counters``. With these four " "containers, we have the base for our GUI scene." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:95 msgid "You should have 4 containers that look like this" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:99 msgid "" "We can work this way because we first broke down our UI design and took a " "few moments to think about the containers we'd use. When you follow a " "tutorial like this, it may seem weird. But once you're working on real " "games, you'll see it's an efficient workflow." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:105 msgid "Create the bars' base" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:107 msgid "" "Each bar is split into two sub-elements that align horizontally: the label " "with the health count on the left, and the gauge on the right. Once again, " "the ``HBoxContainer`` is the perfect tool for the job. Select the ``Bars`` " "node and add a new ``HBoxContainer`` inside of it. Name it ``Bar``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:113 msgid "" "The label itself requires at least three nodes: a ``NinePatchRect`` for the " "background, on top of which we'll add a texture on the left, either ``HP`` " "or ``EP``, and a ``Label`` on the right for the value. We can nest " "``Control`` nodes however we want. We could use the ``NinePatchRect`` as a " "parent for the two other elements, as it encompasses them. In general, you " "want to use containers instead, as their role is to help organize UI " "components. We'll need a ``MarginContainer`` later anyway to add some space " "between the life count and the gauge. Select the ``Bar`` and add a " "``MarginContainer``. Name it ``Count``. Inside of it, add three nodes:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:124 msgid "A ``NinePatchRect`` named ``Background``" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:125 msgid "A ``TextureRect`` named ``Title``" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:126 msgid "And a ``Label`` named ``Number``" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:128 msgid "To add the nodes as siblings, always select the ``Count`` node first." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:132 msgid "" "Your scene tree should look like this. We're ready to throw in some textures" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:135 msgid "" "Our scene is still empty. It's time to throw in some textures. To load the " "textures, head to the FileSystem dock to the left of the viewport. Browse " "down to the res://assets/GUI folder." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:141 msgid "You should see a list of textures that we'll use to skin our interface." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:144 msgid "" "Select the ``Background`` in the Scene dock. In the Inspector, you should " "see a ``Texture`` property. In the FileSystem tab, click and drag " "``label_HP_bg.png`` onto the ``Texture`` slot. It stays squashed. The parent " "MarginContainer will force its size down to 0 until we force elements inside " "the container to have a minimum size. Select the ``Background`` node. In the " "Inspector, scroll down to the Rect section. Set ``Min Size`` to (100, 40). " "You should see the ``Background`` resize along with its parent containers." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:153 msgid "" "Next, select the ``Title`` and drag and drop ``label_HP.png`` into its " "``Texture`` slot. Select the ``Number`` node, click the field next to the " "``Text`` property and type ``10``. This way, we can see both nodes in the " "viewport. They should stack up in the top-left corner of their parent " "``MarginContainer``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:161 msgid "If you select both nodes, you should see something like this" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:163 msgid "" "As they have a container as their direct parent, we cannot move them freely: " "the ``Count`` node will always reset their anchors, their size and position. " "Try to move and resize the nodes in the viewport. Then, select any of the " "three textures and press Ctrl Up or Ctrl Down to reorder them in the Scene " "dock. They'll snap back to their previous size and position." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:170 msgid "" "Parent containers control the size, the scale, the margins, and the anchors " "of their direct children. To modify the nodes, you must nest them inside a " "regular Control or another UI element. We'll use the ``Background`` as a " "parent for the ``Title`` and ``Number``. Select both the ``Title`` and " "``Number``, and drag and drop them onto ``Background``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:179 msgid "" "By using the Background node as the two textures' parent, we take control " "away from the Count MarginContainer" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:182 msgid "" "Select the ``Title`` and in the Inspector, change its ``Stretch Mode`` " "property to ``Keep Centered``. Next find the ``Rect`` category in the " "Inspector and change the ``Size`` property to (50, 40) so it only takes the " "left half of the background. Next, select the ``Number`` node. In the " "viewport, click the ``Layout`` menu and click ``Full Rect``. The node will " "resize to fit the ``Background``. Head to the Inspector and change its " "``Align`` property to ``Right``, and the ``VAlign`` property to ``Center``. " "The text should snap to the center of the ``Background``'s right edge. " "Resize the node horizontally, so it takes the right half of the " "``Background`` and there's a bit of padding with the right edge." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:195 msgid "" "Here's how the nodes' bounding boxes should look in the viewport. Keep it " "rough, you don't need to place them too precisely for now." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:199 msgid "Replace the Label's font" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:201 msgid "" "The label's font is too small. We need to replace it. Select the ``Number`` " "node and in the Inspector, scroll down to the ``Control`` class, and find " "the ``Custom Font`` category. Click the field next to the ``Font`` property " "and click on ``New Dynamic Font``. Click on the field again and select Edit." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:207 msgid "" "You will enter the ``Dynamic Font`` resource. Unfold the ``Font`` category " "and click the field next to ``Font Data``. Click the ``Load`` button. In the " "file browser, navigate down to the assets/font folder and double click " "``Comfortaa-Bold.ttf`` to open it. You should see the font update in the " "viewport. Unfold the settings category to change the font size. Set the " "``Size`` property to a higher value, like ``24`` or ``28``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:215 msgid "" "We now need the text's baseline, the number's lower edge, to align with the " "HP texture on the left. To do so, still in the ``DynamicFont`` resource, you " "can tweak the ``Bottom`` property under the ``Extra Spacing`` category. It " "adds some bottom padding to the text. Click the ``Number`` node in the Scene " "tab to go back to the node's properties and change the ``VAlign`` to " "``Bottom``. To adjust the text's baseline, click on the font field under the " "``Custom Font`` category again and tweak the ``Bottom`` property until the " "text aligns with the ``Title`` node. I used a value of ``2`` pixels." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:227 msgid "With a Bottom value of 2 pixels, the Number aligns with the Title" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:229 msgid "" "With this, we finished the hardest part of the GUI. Congratulations! Let's " "move on to the simpler nodes." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:233 msgid "Add the progress bar" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:235 msgid "" "We need one last element to complete our life bar: the gauge itself. Godot " "ships with a ``TextureProgress`` node that has everything we need." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:238 msgid "" "Select the Bar node and add a ``TextureProgress`` inside of it. Name it " "``Gauge``. In the inspector unfold the ``Textures`` section. Head to the " "FileSystem dock and drag and drop the ``lifebar_bg.png`` texture onto the " "``Under`` slot. Do the same with the ``lifebar_fill.png`` image and drop it " "onto the ``Progress`` slot. Under the ``Range`` class in the inspector, " "change the ``Value`` property to ``50`` to see the gauge fill up." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:246 msgid "With only five ``Control`` nodes, our first bar is ready to use." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:250 msgid "" "That's it, our life bar is ready. This last part was quick, wasn't it? " "That's thanks to our robust container setup." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:254 msgid "Design the bomb and emerald counters" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:256 msgid "" "The bomb and emerald counters are like the bar's ``Count`` node. So we'll " "duplicate it and use it as a template." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:259 msgid "" "Under the ``Bar`` node, select ``Count`` and press Ctrl D to duplicate it. " "Drag and drop the new node under the ``Counters`` ``HBoxContainer`` at the " "bottom of the scene tree. You should see it resize automatically. Don't " "worry about this for now, we'll fix the size soon." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:264 msgid "" "Rename the ``Count2`` node to ``Counter``. Unlike the bars, we want the " "number to be on the left, and an icon to sit on the right. The setup is the " "same: we need a background (a ``NinePatchRect``), the title, and the number " "nodes. The ``Title`` node is a ``TextureRect``, so it's what we need to " "display the icon. In the scene tree, select the ``Title`` node, and rename " "it to ``Icon``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:273 msgid "Here's how your node tree should look so far" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:275 msgid "" "With the ``Icon`` node selected, in the inspector, scroll to the top to see " "the ``Texture`` slot. Head to the FileSystem dock on the left and select the " "``bombs_icon.png``. Drag and drop it onto the ``Texture`` slot. In the Scene " "Tab select both the ``Icon`` and the ``Number`` nodes. Click the Layout menu " "in the toolbar at the top of the viewport and select ``Full Rect``. Both " "nodes will update to fit the size of the ``Background``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:285 msgid "The nodes anchor to the entire Background, but their position is off" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:287 msgid "" "Let's change the ``Number``'s align properties to move it to the left and " "center of the ``Background``. Select the ``Number`` node, change its " "``Align`` property to left and the ``VAlign`` property to centre. Then " "resize its left edge a little bit to add some padding between the left edge " "of the ``Background`` and the text." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:295 msgid "The Number node aligned to the left and centre" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:297 msgid "" "To overlap the Icon and the background, we need a few tweaks. First, our " "background is a bit too tall. It's because it's inside a margin container " "that is controlled by the top-most GUI node. Select the GUI node at the top " "of the scene tree and downsize it vertically so that it's as thin as " "possible. You'll see the gauge prevents you from making it too small. A " "container cannot be smaller than the minimal size of its children. The " "container's margins also weigh in." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:305 msgid "" "Select the Icon, click the Layout menu, and select ``Full Rect`` to re-" "center it. We need it to anchor to the ``Background``'s right edge. Open the " "Layout menu again and select ``Center Right``. Move the icon up so it is " "centered vertically with the ``Background``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:313 msgid "" "The bomb icon anchors to the Background's right edge. Resize the Counter " "container to see the Icon node stick to its right side" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:316 msgid "" "Because we duplicated the ``Counter`` from the bar's ``Count``, the " "``Number`` node's font is off. Select the ``Number`` node again, head to the " "``Font`` property, and click it to access the ``DynamicFont`` resource. In " "the ``Extra Spacing`` section, change the ``Bottom`` value to ``0`` to reset " "the font's baseline. Our counter now works as expected." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:323 msgid "" "Let's make the ``Counters`` anchor to the right edge of the viewport. To do " "so, we need to set the ``Bars`` container take all the available horizontal " "space it can. Select the ``Bars`` node and scroll down to the ``Size Flags`` " "category. In the ``Horizontal`` category, check the ``Expand`` value. The " "``Bars`` node should resize and push the counter to the right side of the " "screen." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:331 msgid "" "An expanding container eats all the space it can from its parent, pushing " "everything else along the way" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:335 msgid "Turn the bar and counter into reusable UI components" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:337 msgid "" "We have one bar and one counter widget. But we need two of each. We may need " "to change the bars' design or their functionality later on. It'd be great if " "we could have a single scene to store a UI element's template, and child " "scenes to work on variations. Godot lets us do this with Inherited Scenes." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:343 msgid "" "Let's save both the ``Counter`` and the ``Bar`` branches as separate scenes " "that we'll reduce to create the ``LifeBar``, the ``EnergyBar``, the " "``BombCounter``, and the ``EmeraldCounter``. Select the ``Bar`` " "HBoxContainer. Right click on it and click on ``Save Branch as Scene``. Save " "the scene as ``Bar.tscn``. You should see the node branch turn it to a " "single ``Bar`` node." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:352 msgid "" "A scene is a tree of nodes. The topmost node is the tree's **root**, and the " "children at the bottom of the hierarchy are **leaves**. Any node other than " "the root along with one or more children is a **branch**. We can encapsulate " "node branches into separate scenes, or load and merge them from other scenes " "into the active one. Right click on any node in the Scene dock and select " "``Save Branch as Scene`` or ``Merge from Scene``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:360 msgid "" "Then, select the ``Counter`` node and do the same. Right click, ``Save " "Branch as Scene``, and save it as ``Counter.tscn``. A new edit scene icon " "appears to the right of the nodes in the scene tree. Click on the one next " "to ``Bar`` to open the corresponding scene. Resize the ``Bar`` node so that " "its bounding box fits its content. The way we named and placed the Control " "nodes, we're ready to inherit this template and create the life bar. It's " "the same for the ``Counter``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:370 msgid "With no extra changes, our Bar is ready to use" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:373 msgid "Use scene inheritance to create the remaining elements" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:375 msgid "" "We need two bars that work the same way: they should feature a label on the " "left, with some value, and a horizontal gauge on the right. The only " "difference is that one has the HP label and is green, while the other is " "called EP and is yellow. Godot gives us a powerful tool to create a common " "base to reuse for all bars in the game: **inherited scenes**." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:383 msgid "" "Inherited scenes help us keep the GUI scene clean. In the end, we will only " "have containers and one node for each UI component." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:386 msgid "" "On an inherited scene, you can change any property of every node in the " "inspector, aside from its name. If you modify and save the parent scene, all " "the inherited scenes update to reflect the changes. If you change a value in " "the inherited scene, it will always override the parent's property. It's " "useful for UIs, as they often require variations of the same elements. In " "general, in UI design, buttons, panels etc. share a common base style and " "interactions. We don't want to copy it over to all variations manually." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:395 msgid "" "A reload icon will appear next to the properties you override. Click it to " "reset the value to the parent scene's default." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:400 msgid "" "Think of scene inheritance like the node tree, or the ``extends`` keyword in " "GDScript. An inherited scene does everything like its parent, but you can " "override properties, resources and add extra nodes and scripts to extend its " "functionality." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:406 msgid "Inherit the Bar Scene to build the LifeBar" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:408 msgid "" "Go to ``Scene -> New Inherited Scene`` to create a new type of ``Bar``. " "Select the Bar scene and open it. You should see a new [unsaved] tab, that's " "like your ``Bar``, but with all nodes except the root in grey. Press ``Meta" "+S`` to save the new inherited scene and name it ``LifeBar``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:416 msgid "You can't rename grey nodes. This tells you they have a parent scene" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:418 msgid "" "First, rename the root or top level node to ``LifeBar``. We always want the " "root to describe exactly what this UI component is. The name differentiates " "this bar from the ``EnergyBar`` we'll create next. The other nodes inside " "the scene should describe the component's structure with broad terms, so it " "works with all inherited scenes. Like our ``TextureProgress`` and ``Number`` " "nodes." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:427 msgid "" "If you've ever done web design, it's the same spirit as working with CSS: " "you create a base class, and add variations with modifier classes. From a " "base button class, you'll have button-green and button-red variations for " "the user to accept and refuse prompts. The new class contains the name of " "the parent element and an extra keyword to explain how it modifies it. When " "we create an inherited scene and change the name of the top level node, " "we're doing the same thing." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:436 msgid "Design the EnergyBar" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:438 msgid "" "We already setup the ``LifeBar``'s design with the main ``Bar`` scene. Now " "we need the ``EnergyBar``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:441 msgid "" "Let's create a new inherited scene, and once again select the ``Bar.tscn`` " "scene and open it. Double-click on the ``Bar`` root node and rename it to " "``EnergyBar``. Save the new scene as ``EnergyBar.tscn``. We need to replace " "the HP texture with EP one, and to change the textures on the gauge." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:447 msgid "" "Head to the FileSystem dock on the left, select the ``Title`` node in the " "Scene tree and drag and drop the ``label_EP.png`` file onto the texture " "slot. Select the ``Number`` node and change the ``Text`` property to a " "different value like ``14``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:452 msgid "" "You'll notice the EP texture is smaller than the HP one. We should update " "the ``Number``'s font size to better fit it. A font is a resource. All the " "nodes in the entire project that use this resource will be affected by any " "property we change. You can try to change the size to a huge value like " "``40`` and switch back to the ``LifeBar`` or the ``Bar`` scenes. You will " "see the text increased in size." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:461 msgid "If we change the font resource, all the nodes that use it are affected" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:464 msgid "" "To change the font size on this node only, we must create a copy of the font " "resource. Select the ``Number`` node again and click on the wrench and " "screwdriver icon on the top right of the inspector. In the drop-down menu, " "select the ``Make Sub-Resources Unique`` option. Godot will find all the " "resources this node uses and create unique copies for us." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:472 msgid "Use this option to create unique copies of the resources for one node" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:476 msgid "" "When you duplicate a node from the Scene tree, with ``Meta+D``, it shares " "its resources with the original node. You need to use ``Make Sub-Resources " "Unique`` before you can tweak the resources without affecting the source " "node." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:481 msgid "" "Scroll down to the ``Custom Font`` section and open ``Font``. Lower the " "``Size`` to a smaller value like ``20`` or ``22``. You may also need to " "adjust the ``Bottom`` spacing value to align the text's baseline with the EP " "label on the left." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:488 msgid "The EP Count widget, with a smaller font than its HP counterpart" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:490 msgid "" "Now, select the ``TextureProgress`` node. Drag the ``energy_bar_bg.png`` " "file onto the ``Under`` slot and do the same for ``energy_bar_fill.png`` and " "drop it onto the ``Progress`` texture slot." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:494 msgid "" "You can resize the node vertically so that its bounding rectangle fits the " "gauge. Do the same with the ``Count`` node until its size aligns with that " "of the bar. Because the minimal size of ``TextureProgress`` is set based on " "its textures, you won't be able to downsize the ``Count`` node below that. " "That is also the size the ``Bar`` container will have. You may downscale " "this one as well." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:501 msgid "" "Last but not least, the ``Background`` container has a minimum size that " "makes it a bit large. Select it and in the ``Rect`` section, change the " "``Min Size`` property down to ``80`` pixels. It should resize automatically " "and the ``Title`` and ``Number`` nodes should reposition as well." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:509 msgid "The Count looks better now it's a bit smaller" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:513 msgid "" "The Count node's size affects the position of the TextureProgress. As we'll " "align our bars vertically in a moment, we're better off using the Counter's " "left margin to resize our EP label. This way both the EnergyBar's Count and " "the LifeBar's Count nodes are one hundred pixels wide, so both gauges will " "align perfectly." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:520 msgid "Prepare the bomb and emerald counters" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:522 msgid "" "Let us now take care of the counters. Go to ``Scene -> New Inherited Scene`` " "and select the ``Counter.tscn`` as a base. Rename the root node as " "``BombCounter`` too. Save the new scene as ``BombCounter.tscn``. That's all " "for this scene." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:529 msgid "The bomb counter is the same as the original Counter scene" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:531 msgid "" "Go to ``Scene -> New Inherited Scene`` again and select ``Counter.tscn`` " "once more. Rename the root node ``EmeraldCounter`` and save the scene as " "``EmeraldCounter.tscn``. For this one, we mainly need to replace the bomb " "icon with the emerald icon. In the FileSystem tab, drag the ``emeralds_icon." "png`` onto the ``Icon`` node's ``Texture`` slot. ``Icon`` already anchors to " "the right edge of the ``Background`` node so we can change its position and " "it will scale and reposition with the ``EmeraldCounter`` container. Shift " "the emerald icon a little bit to the right and down. Use the Arrow Keys on " "the keyboard to nudge its position. Save, and we're done with all the UI " "elements." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:544 msgid "The emerald counter should look something like this" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:547 msgid "Add the UI components to the final GUI" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:549 msgid "" "Time to add all the UI elements to the main GUI scene. Open the ``GUI.tscn`` " "scene again, and delete the ``Bar`` and ``Counter`` nodes. In the FileSystem " "dock, find the ``LifeBar.tscn`` and drag and drop it onto the ``Bars`` " "container in the scene tree. Do the same for the ``EnergyBar``. You should " "see them align vertically." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:557 msgid "The LifeBar and the EnergyBar align automatically" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:559 msgid "" "Now, drag and drop the ``BombCounter.tscn`` and ``EmeraldCounter.tscn`` " "scenes onto the ``Counters`` node. They'll resize automatically." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:564 msgid "The nodes resize to take all the available vertical space" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:566 msgid "" "To let the ``EmeraldCounter`` and ``BombCounter`` use the size we defined in " "``Counter.tscn``, we need to change the ``Size Flags`` on the ``Counters`` " "container. Select the ``Counters`` node and unfold the ``Size Flags`` " "section in the Inspector. Uncheck the ``Fill`` tag for the ``Vertical`` " "property, and check ``Shrink Center`` so the container centers inside the " "``HBoxContainer``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:575 msgid "Now both counters have a decent size" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:579 msgid "" "Change the ``Min Size`` property of the ``Counters`` container to control " "the height of the counters' background." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:582 msgid "" "We have one small issue left with the EP label on the EnergyBar: the 2 bars " "should align vertically. Click the icon next to the ``EnergyBar`` node to " "open its scene. Select the ``Count`` node and scroll down to the ``Custom " "Constants`` section. Add a ``Margin Left`` of ``20``. In the ``Rect`` " "section set the node's ``Min Size`` back to 100, the same value as on the " "LifeBar. The ``Count`` should now have some margin on the left. If you save " "and go back to the GUI scene, it will be aligned vertically with the " "``LifeBar``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:593 msgid "The 2 bars align perfectly" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:597 msgid "" "We could have set up the ``EnergyBar`` this way a few moments ago. But this " "shows you that you can go back to any scene anytime, tweak it, and see the " "changes propagate through the project!" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:602 msgid "Place the GUI onto the game's mockup" msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:604 msgid "" "To wrap up the tutorial we're going to insert the GUI onto the game's mockup " "scene." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:607 msgid "Head to the FileSystem dock and open ``LevelMockup.tscn``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:609 msgid "" "Drag-and-drop the ``GUI.tscn`` scene right below the ``bg`` node and above " "the ``Characters``. The GUI will scale to fit the entire viewport. Head to " "the Layout menu and select the ``Center Top`` option so it anchors to the " "top edge of the game window. Then resize the GUI to make it as small as " "possible vertically. Now you can see how the interface looks in the context " "of the game." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:616 msgid "" "Congratulations for getting to the end of this long tutorial. You can find " "the final project here: :download:`ui_gui_design.zip `." msgstr "" #: ../../docs/getting_started/step_by_step/ui_game_user_interface.rst:625 msgid "" "**A final note about Responsive Design**. If you resize the GUI, you'll see " "the nodes move, but the textures and text won't scale. The GUI also has a " "minimum size, based on the textures inside of it. In games, we don’t need " "the interface to be as flexible as that of a website. You almost never want " "to support both landscape and portrait screen orientations. It’s one or the " "other. In landscape orientation, the most common ratios range from 4:3 to " "16:9. They are close to one another. That's why it’s enough for the GUI " "elements to only move horizontally when we change the window size." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:4 msgid "Control the game's UI with code" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:7 #: ../../docs/tutorials/2d/particle_systems_2d.rst:7 msgid "Intro" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:9 msgid "" "In this tutorial, you will connect a character to a life bar and animate the " "health loss." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:14 msgid "" "Here's what you'll create: the bar and the counter animate when the " "character takes a hit. They fade when it dies." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:18 msgid "You will learn:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:20 msgid "How to **connect** a character to a GUI with signals" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:21 msgid "How to **control** a GUI with GDscript" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:22 msgid "How to **animate** a life bar with the :ref:`Tween ` node" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:25 msgid "" "If you want to learn how to set up the interface instead, check out the step-" "by-step UI tutorials:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:28 msgid "Create a main menu screen" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:29 msgid "Create a game user interface" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:32 msgid "" "When you code a game, you want to build the core gameplay first: the main " "mechanics, player input, win and loss conditions. The UI comes a bit later. " "You want to keep all the elements that make up your project separate if " "possible. Each character should be in its own scene, with its own scripts, " "and so should the UI elements. This prevents bugs, keeps your project " "manageable, and allows different team members to work on different parts of " "the game." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:40 msgid "" "Once the core gameplay and the UI are ready, you'll need to connect them " "somehow. In our example, we have the Enemy who attacks the Player at " "constant time intervals. We want the life bar to update when the Player " "takes damage." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:45 msgid "To do this, we will use **signals**." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:49 msgid "" "Signals are Godot's version of the Observer pattern. They allow us to send " "out some message. Other nodes can connect to the object that **emits** the " "signal and receive the information. It's a powerful tool we use a lot for " "User Interface and achievement systems. You don't want to use them " "everywhere, though. Connecting two nodes adds some coupling between them. " "When there's a lot of connections, they become hard to manage. For more " "information, check out the `signals video tutorial `_ on GDquest." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:53 msgid "Download and explore the start project" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:55 msgid "" "Download the Godot project: :download:`ui_code_life_bar.zip `. It contains all the assets and scripts you need to " "get started. Extract the .zip archive to get two folders: `start` and `end`." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:58 msgid "" "Load the ``start`` project in Godot. In the ``FileSystem`` dock, double " "click on LevelMockup.tscn to open it. It's an RPG game's mockup where 2 " "characters face each other. The pink enemy attacks and damages the green " "square at regular time intervals, until its death. Feel free to try out the " "game: the basic combat mechanics already work. But as the character isn't " "connected to the life bar, the ``GUI`` doesn't do anything." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:68 msgid "" "This is typical of how you'd code a game: you implement the core gameplay " "first, handle the player's death, and only then you'll add the interface. " "That's because the UI listens to what's happening in the game. So it can't " "work if other systems aren't in place yet. If you design the UI before you " "prototype and test the gameplay, chances are it won't work well and you'll " "have to re-create it from scratch." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:71 msgid "The scene contains a background sprite, a GUI, and two characters." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:75 msgid "The scene tree, with the GUI scene set to display its children" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:77 msgid "" "The GUI scene encapsulates all of the game's Graphical User Interface. It " "comes with a barebones script where we get the path to nodes that exist " "inside the scene:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:105 msgid "" "``number_label`` displays a life count as a number. It's a ``Label`` node" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:107 msgid "``bar`` is the life bar itself. It's a ``TextureProgress`` node" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:108 msgid "" "``tween`` is a component-style node that can animate and control any value " "or method from any other node" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:113 msgid "" "The project uses a simple organisation that works for game jams and tiny " "games." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:115 msgid "" "At the root of the project, in the `res://` folder, you will find the " "`LevelMockup`. That's the main game scene and the one we will work with. All " "the components that make up the game are in the `scenes/` folder. The " "`assets/` folder contains the game sprites and the font for the HP counter. " "In the `scripts/` folder you will find the enemy, the player, and the GUI " "controller scripts." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:117 msgid "" "Click the edit scene icon to the right of the node in the scene tree to open " "the scene in the editor. You'll see the LifeBar and EnergyBar are sub-scenes " "themselves." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:121 msgid "The scene tree, with the Player scene set to display its children" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:124 msgid "Set up the Lifebar with the Player's max\\_health" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:126 msgid "" "We have to tell the GUI somehow what the player's current health is, to " "update the lifebar's texture, and to display the remaining health in the HP " "counter in the top left corner of the screen. To do this we send the " "player's health to the GUI every time they take damage. The GUI will then " "update the ``Lifebar`` and ``Number`` nodes with this value." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:132 msgid "" "We could stop here to display the number, but we need to initialize the " "bar's ``max_value`` for it to update in the right proportions. The first " "step is thus to tell the ``GUI`` what the green character's ``max_health`` " "is." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:139 msgid "" "The bar, a `TextureProgress`, has a `max_value` of `100` by default. If you " "don't need to display the character's health with a number, you don't need " "to change its `max_value` property. You send a percentage from the `Player` " "to the `GUI` instead: `health / max_health * 100`." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:143 msgid "" "Click the script icon to the right of the ``GUI`` in the Scene dock to open " "its script. In the ``_ready`` function, we're going to store the " "``Player``'s ``max_health`` in a new variable and use it to set the " "``bar``'s ``max_value``:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:164 msgid "" "Let's break it down. ``$\"../Characters/Player\"`` is a shorthand that goes " "one node up in the scene tree, and retrieves the ``Characters/Player`` node " "from there. It gives us access to the node. The second part of the " "statement, ``.max_health``, accesses the ``max_health`` on the Player node." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:170 msgid "" "The second line assigns this value to ``bar.max_value``. You could combine " "the two lines into one, but we'll need to use ``player_max_health`` again " "later in the tutorial." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:174 msgid "" "``Player.gd`` sets the ``health`` to ``max_health`` at the start of the " "game, so we could work with this. Why do we still use ``max_health``? There " "are two reasons:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:178 msgid "" "We don't have the guarantee that ``health`` will always equal " "``max_health``: a future version of the game may load a level where the " "player already lost some health." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:184 msgid "" "When you open a scene in the game, Godot creates nodes one by one, following " "the order in your Scene dock, from top to bottom. `GUI` and `Player` are not " "part of the same node branch. To make sure they both exist when we access " "each other, we have to use the `_ready` function. Godot calls `_ready` right " "after it loaded all nodes, before the game starts. It's the perfect function " "to set everything up and prepare the game session. Learn more about _ready: :" "doc:`scripting_continued`" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:188 msgid "Update health with a signal when the player takes a hit" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:190 msgid "" "Our GUI is ready to receive the ``health`` value updates from the " "``Player``. To achieve this we're going to use **signals**." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:195 msgid "" "There are many useful built-in signals like `enter_tree` and `exit_tree`, " "that all nodes emit when they are respectively created and destroyed. You " "can also create your own using the `signal` keyword. On the `Player` node, " "you'll find two signals we created for you: `died` and `health_changed`." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:197 msgid "" "Why don't we directly get the ``Player`` node in the ``_process`` function " "and look at the health value? Accessing nodes this way creates tight " "coupling between them. If you did it sparingly it may work. As your game " "grows bigger, you may have many more connections. If you get nodes this way " "it gets complex quickly. Not only that: you need to listen to the state " "change constantly in the ``_process`` function. This check happens 60 times " "a second and you'll likely break the game because of the order in which the " "code runs." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:206 msgid "" "On a given frame you may look at another node's property *before* it was " "updated: you get a value from the last frame. This leads to obscure bugs " "that are hard to fix. On the other hand, a signal is emitted right after a " "change happened. It **guarantees** you're getting a fresh piece of " "information. And you will update the state of your connected node *right " "after* the change happened." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:215 msgid "" "The Observer pattern, that signals derive from, still adds a bit of coupling " "between node branches. But it's generally lighter and more secure than " "accessing nodes directly to communicate between two separate classes. It can " "be okay for a parent node to get values from its children. But you'll want " "to favor signals if you're working with two separate branches. Read Game " "Programming Patterns for more information on the `Observer pattern `_. The `full book `_ is available online for free." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:219 msgid "" "With this in mind, let's connect the ``GUI`` to the ``Player``. Click on the " "``Player`` node in the scene dock to select it. Head down to the Inspector " "and click on the Node tab. This is the place to connect nodes to listen to " "the one you selected." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:224 msgid "The first section lists custom signals defined in ``Player.gd``:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:226 msgid "" "``died`` is emitted when the character died. We will use it in a moment to " "hide the UI." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:228 msgid "``health_changed`` is emitted when the character got hit." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:232 msgid "We're connecting to the health\\_changed signal" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:234 msgid "" "Select ``health_changed`` and click on the Connect button in the bottom " "right corner to open the Connect Signal window. On the left side you can " "pick the node that will listen to this signal. Select the ``GUI`` node. The " "right side of the screen lets you pack optional values with the signal. We " "already took care of it in ``Player.gd``. In general I recommend not to add " "too many arguments using this window as they're less convenient than doing " "it from the code." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:244 msgid "The Connect Signal window with the GUI node selected" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:248 msgid "" "You can optionally connect nodes from the code. However doing it from the " "editor has two advantages:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:250 msgid "Godot can write new callback functions for you in the connected script" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:251 msgid "" "An emitter icon appears next to the node that emits the signal in the Scene " "dock" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:253 msgid "" "At the bottom of the window you will find the path to the node you selected. " "We're interested in the second row called \"Method in Node\". This is the " "method on the ``GUI`` node that gets called when the signal is emitted. This " "method receives the values sent with the signal and lets you process them. " "If you look to the right, there is a \"Make Function\" radio button that is " "on by default. Click the connect button at the bottom of the window. Godot " "creates the method inside the ``GUI`` node. The script editor opens with the " "cursor inside a new ``_on_Player_health_changed`` function." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:265 msgid "" "When you connect nodes from the editor, Godot generates a method name with " "the following pattern: ``_on_EmitterName_signal_name``. If you wrote the " "method already, the \"Make Function\" option will keep it. You may replace " "the name with anything you'd like." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:272 msgid "Godot writes the callback method for you and takes you to it" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:274 msgid "" "Inside the parentheses after the function name, add a ``player_health`` " "argument. When the player emits the ``health_changed`` signal, it will send " "its current ``health`` alongside it. Your code should look like:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:292 msgid "" "The engine does not convert PascalCase to snake_case, for C# examples we'll " "be using PascalCase for method names & camelCase for method parameters, " "which follows the official `C# naming conventions. `_" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:299 msgid "" "In Player.gd, when the Player emits the health\\_changed signal, it also " "sends its health value" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:302 msgid "" "Inside ``_on_Player_health_changed``, let's call a second function called " "``update_health`` and pass it the ``player_health`` variable." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:307 msgid "" "We could directly update the health value on `LifeBar` and `Number`. There " "are two reasons to use this method instead:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:309 msgid "" "The name makes it clear for our future selves and teammates that when the " "player took damage, we update the health count on the GUI" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:310 msgid "We will reuse this method a bit later" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:312 msgid "" "Create a new ``update_health`` method below ``_on_Player_health_changed``. " "It takes a new\\_value as its only argument:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:327 msgid "This method needs to:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:329 msgid "" "set the ``Number`` node's ``text`` to ``new_value`` converted to a string" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:331 msgid "set the ``TextureProgress``'s ``value`` to ``new_value``" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:350 msgid "" "``str`` is a built-in function that converts about any value to text. " "``Number``'s ``text`` property requires a string, so we can't assign it to " "``new_value`` directly" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:354 msgid "" "Also call ``update_health`` at the end of the ``_ready`` function to " "initialize the ``Number`` node's ``text`` with the right value at the start " "of the game. Press F5 to test the game: the life bar updates with every " "attack!" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:361 msgid "" "Both the Number node and the TextureProgress update when the Player takes a " "hit" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:365 msgid "Animate the loss of life with the Tween node" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:367 msgid "" "Our interface is functional, but it could use some animation. That's a good " "opportunity to introduce the ``Tween`` node, an essential tool to animate " "properties. ``Tween`` animates anything you'd like from a start to an end " "state over a certain duration. For example, it can animate the health on the " "``TextureProgress`` from its current level to the ``Player``'s new " "``health`` when the character takes damage." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:374 msgid "" "The ``GUI`` scene already contains a ``Tween`` child node stored in the " "``tween`` variable. Let's now use it. We have to make some changes to " "``update_health``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:378 msgid "" "We will use the ``Tween`` node's ``interpolate_property`` method. It takes " "seven arguments:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:381 msgid "A reference to the node who owns the property to animate" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:382 msgid "The property's identifier as a string" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:383 msgid "The starting value" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:384 msgid "The end value" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:385 msgid "The animation's duration in seconds" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:386 msgid "The type of the transition" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:387 msgid "The easing to use in combination with the equation." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:389 msgid "" "The last two arguments combined correspond to an easing equation. This " "controls how the value evolves from the start to the end point." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:393 msgid "" "Click the script icon next to the ``GUI`` node to open it again. The " "``Number`` node needs text to update itself, and the ``Bar`` needs a float " "or an integer. We can use ``interpolate_property`` to animate a number, but " "not to animate text directly. We're going to use it to animate a new ``GUI`` " "variable named ``animated_health``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:399 msgid "" "At the top of the script, define a new variable, name it " "``animated_health``, and set its value to 0. Navigate back to the " "``update_health`` method and clear its content. Let's animate the " "``animated_health`` value. Call the ``Tween`` node's " "``interpolate_property`` method:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:421 msgid "Let's break down the call:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:427 msgid "" "We target ``animated_health`` on ``self``, that is to say the ``GUI`` node. " "``Tween``'s interpolate\\_property takes the property's name as a string. " "That's why we write it as ``\"animated_health\"``." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:435 msgid "" "The starting point is the current value the bar's at. We still have to code " "this part, but it's going to be ``animated_health``. The end point of the " "animation is the ``Player``'s ``health`` after the ``health_changed``: " "that's ``new_value``. And ``0.6`` is the animation's duration in seconds." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:445 msgid "" "The last two arguments are constants from the ``Tween`` class. " "``TRANS_LINEAR`` means the animation should be linear. ``EASE_IN`` doesn't " "do anything with a linear transition, but we must provide this last argument " "or we'll get an error." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:450 msgid "" "The animation will not play until we activated the ``Tween`` node with " "``tween.start()``. We only have to do this once if the node is not active. " "Add this code after the last line:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:469 msgid "" "Although we could animate the `health` property on the `Player`, we " "shouldn't. Characters should lose life instantly when they get hit. It makes " "it a lot easier to manage their state, like to know when one died. You " "always want to store animations in a separate data container or node. The " "`tween` node is perfect for code-controlled animations. For hand-made " "animations, check out `AnimationPlayer`." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:472 msgid "Assign the animated\\_health to the LifeBar" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:474 msgid "" "Now the ``animated_health`` variable animates but we don't update the actual " "``Bar`` and ``Number`` nodes anymore. Let's fix this." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:477 msgid "So far, the update\\_health method looks like this:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:501 msgid "" "In this specific case, because ``number_label`` takes text, we need to use " "the ``_process`` method to animate it. Let's now update the ``Number`` and " "``TextureProgress`` nodes like before, inside of ``_process``:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:523 msgid "" "`number_label` and `bar` are variables that store references to the `Number` " "and `TextureProgress` nodes." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:525 msgid "" "Play the game to see the bar animate smoothly. But the text displays decimal " "number and looks like a mess. And considering the style of the game, it'd be " "nice for the life bar to animate in a choppier fashion." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:531 msgid "The animation is smooth, but the number is broken" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:533 msgid "" "We can fix both problems by rounding out ``animated_health``. Use a local " "variable named ``round_value`` to store the rounded ``animated_health``. " "Then assign it to ``number_label.text`` and ``bar.value``:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:555 msgid "Try the game again to see a nice blocky animation." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:559 msgid "By rounding out animated\\_health, we kill two birds with one stone" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:563 msgid "" "Every time the player takes a hit, the ``GUI`` calls " "``_on_Player_health_changed``, which in turn calls ``update_health``. This " "updates the animation and the ``number_label`` and ``bar`` follow in " "``_process``. The animated life bar that shows the health going down " "gradually is a trick. It makes the GUI feel alive. If the ``Player`` takes 3 " "damage, it happens in an instant." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:571 msgid "Fade the bar when the Player dies" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:573 msgid "" "When the green character dies, it plays a death animation and fades out. At " "this point, we shouldn't show the interface anymore. Let's fade the bar as " "well when the character died. We will reuse the same ``Tween`` node as it " "manages multiple animations in parallel for us." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:578 msgid "" "First, the ``GUI`` needs to connect to the ``Player``'s ``died`` signal to " "know when it died. Press :kbd:`F1` to jump back to the 2D Workspace. Select " "the ``Player`` node in the Scene dock and click on the Node tab next to the " "Inspector." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:583 msgid "Find the ``died`` signal, select it, and click the Connect button." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:587 msgid "The signal should already have the Enemy connected to it" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:589 msgid "" "In the Connecting Signal window, connect to the ``GUI`` node again. The Path " "to Node should be ``../../GUI`` and the Method in Node should show " "``_on_Player_died``. Leave the Make Function option on and click Connect at " "the bottom of the window. This will take you to the ``GUI.gd`` file in the " "Script Workspace." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:597 msgid "You should get these values in the Connecting Signal window" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:601 msgid "" "You should see a pattern by now: every time the GUI needs a new piece of " "information, we emit a new signal. Use them wisely: the more connections you " "add, the harder they are to track." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:603 msgid "" "To animate a fade on a UI element, we have to use its ``modulate`` property. " "``modulate`` is a ``Color`` that multiplies the colors of our textures." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:609 msgid "" "`modulate` comes from the `CanvasItem` class, All 2D and UI nodes inherit " "from it. It lets you toggle the visibility of the node, assign a shader to " "it, and modify it using a color with `modulate`." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:611 msgid "" "``modulate`` takes a ``Color`` value with 4 channels: red, green, blue and " "alpha. If we darken any of the first three channels it darkens the " "interface. If we lower the alpha channel, our interface fades out." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:615 msgid "" "We're going to tween between two color values: from a white with an alpha of " "``1``, that is to say at full opacity, to a pure white with an alpha value " "of ``0``, completely transparent. Let's add two variables at the top of the " "``_on_Player_died`` method and name them ``start_color`` and ``end_color``. " "Use the ``Color()`` constructor to build two ``Color`` values." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:637 msgid "" "``Color(1.0, 1.0, 1.0)`` corresponds to white. The fourth argument, " "respectively ``1.0`` and ``0.0`` in ``start_color`` and ``end_color``, is " "the alpha channel." msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:641 msgid "" "We then have to call the ``interpolate_property`` method of the ``Tween`` " "node again:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:654 msgid "" "This time, we change the ``modulate`` property and have it animate from " "``start_color`` to the ``end_color``. The duration is of one second, with a " "linear transition. Here again, because the transition is linear, the easing " "does not matter. Here's the complete ``_on_Player_died`` method:" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:679 msgid "And that is it. You may now play the game to see the final result!" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:683 msgid "The final result. Congratulations for getting there!" msgstr "" #: ../../docs/getting_started/step_by_step/ui_code_a_life_bar.rst:687 msgid "" "Using the exact same techniques, you can change the color of the bar when " "the Player gets poisoned, turn the bar red when its health drops low, shake " "the UI when they take a critical hit... the principle is the same: emit a " "signal to forward the information from the `Player` to the `GUI` and let the " "`GUI` process it." msgstr "" #: ../../docs/getting_started/step_by_step/splash_screen.rst:4 msgid "Splash screen" msgstr "" #: ../../docs/getting_started/step_by_step/splash_screen.rst:7 msgid "Tutorial" msgstr "" #: ../../docs/getting_started/step_by_step/splash_screen.rst:9 msgid "" "This is a simple tutorial to establish the basic idea of how the GUI " "subsystem works. The goal is to create a simple, static splash screen." msgstr "" #: ../../docs/getting_started/step_by_step/splash_screen.rst:15 msgid "" "Following is a file with the assets that will be used. The extracted files " "can be placed directly in your project folder and Godot will import them " "automatically." msgstr "" #: ../../docs/getting_started/step_by_step/splash_screen.rst:18 msgid ":download:`robisplash_assets.zip `." msgstr "" #: ../../docs/getting_started/step_by_step/splash_screen.rst:21 #: ../../docs/tutorials/3d/reflection_probes.rst:21 #: ../../docs/tutorials/3d/gi_probes.rst:36 #: ../../docs/tutorials/3d/baked_lightmaps.rst:40 #: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:16 #: ../../docs/tutorials/shading/your_first_shader/your_first_spatial_shader.rst:53 msgid "Setting up" msgstr "" #: ../../docs/getting_started/step_by_step/splash_screen.rst:23 msgid "" "Set the display resolution to 800x450 in Project Settings, and set up a new " "scene like this:" msgstr "" #: ../../docs/getting_started/step_by_step/splash_screen.rst:27 msgid "" "The nodes \"background\" and \"logo\" are of :ref:`TextureRect " "` type. To display an image, drag the corresponding asset " "to the texture property." msgstr "" #: ../../docs/getting_started/step_by_step/splash_screen.rst:32 msgid "" "The node \"start\" is a :ref:`TextureButton `. It takes " "several images for different states, but only the normal and pressed will be " "supplied in this example:" msgstr "" #: ../../docs/getting_started/step_by_step/splash_screen.rst:38 msgid "Finally, the node \"copyright\" is a :ref:`Label `." msgstr "" #: ../../docs/getting_started/step_by_step/splash_screen.rst:40 msgid "Your final scene should look something like this." msgstr "" #: ../../docs/getting_started/step_by_step/splash_screen.rst:44 msgid "" "Go ahead and run the project. If you're satisfied with the results, " "continue to the next tutorial." msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:4 msgid "Animations" msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:9 msgid "Godot's animation system is extremely powerful and flexible." msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:11 msgid "" "To begin, let's use the scene from the previous tutorial (:ref:" "`doc_splash_screen`). The goal is to add a \"fade-in\" animation to the " "splash image. Here's a copy just in case: :download:`robisplash.zip `." msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:16 msgid "Add an animation player" msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:18 msgid "" "First of all, add an :ref:`AnimationPlayer ` node to " "the scene as a child of \"background\" (the root node):" msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:23 msgid "" "When a node of this type is selected, the animation editor panel will appear:" msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:28 msgid "The animation editor panel stays visible until manually hidden." msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:31 msgid "Creating the animation" msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:33 msgid "" "It's time to create a new animation! Press the Animation button then select " "new from the menu. Name the animation \"intro\" when the dialog appears." msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:40 msgid "" "Now that we have an animation, the property editor enters \"animation editing" "\" mode. In this mode, a key icon appears next to every property of the " "property editor. In Godot, any property of an object can be animated:" msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:48 msgid "Editing the animation" msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:50 msgid "The logo will appear from the top of the screen." msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:52 msgid "" "With the animation editor panel open, select the \"logo\" node and set the " "\"Rect / Position\" property to ``(118, -400)`` and press the key button " "next to the property to add a keyframe:" msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:58 msgid "When the dialog appears, confirm that you are creating a new track." msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:60 msgid "The keyframe will be added in the animation player editor:" msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:64 msgid "Move the editor cursor forward in time by clicking here:" msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:68 msgid "" "Change the logo position to ``(118, 0)`` and add a keyframe again. With two " "keyframes with different values, the animation happens." msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:73 msgid "" "Pressing \"Play selected animation from start. (Shift-D)\" on the animation " "panel will make the logo descend." msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:78 msgid "" "Click the \"Autoplay on Load\" button to set the animation to start " "automatically when the scene starts." msgstr "" #: ../../docs/getting_started/step_by_step/animations.rst:83 msgid "" "And finally, when running the scene, the animation should look like this:" msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:4 #: ../../docs/tutorials/threads/thread_safe_apis.rst:58 #: ../../docs/development/file_formats/tscn.rst:257 #: ../../docs/community/tutorials.rst:48 msgid "Resources" msgstr "Risorse" #: ../../docs/getting_started/step_by_step/resources.rst:7 msgid "Nodes and resources" msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:9 msgid "" "Up to this tutorial, we focused on the :ref:`Node ` class in " "Godot as that's the one you use to code behavior and most of the engine's " "features rely on it. There is another datatype that is just as important: :" "ref:`Resource `." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:15 msgid "" "*Nodes* give you functionality: they draw sprites, 3D models, simulate " "physics, arrange user interfaces, etc. **Resources** are **data " "containers**. They don't do anything on their own: instead, nodes use the " "data contained in resources." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:19 msgid "" "Anything Godot saves or loads from disk is a resource. Be it a scene (a ." "tscn or an .scn file), an image, a script... Here are some ``Resource`` " "examples: :ref:`Texture `, :ref:`Script `, :ref:" "`Mesh `, :ref:`Animation `, :ref:`AudioStream " "`, :ref:`Font `, :ref:`Translation " "`." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:26 msgid "" "When the engine loads a resource from disk, **it only loads it once**. If a " "copy of that resource is already in memory, trying to load the resource " "again will return the same copy every time. As resources only contain data, " "there is no need to duplicate them." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:31 msgid "" "Every object, be it a Node or a Resource, can export properties. There are " "many types of Properties, like String, integer, Vector2, etc., and any of " "these types can become a resource. This means that both nodes and resources " "can contain resources as properties:" msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:39 msgid "External vs built-in" msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:41 msgid "There are two ways to save resources. They can be:" msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:43 msgid "**External** to a scene, saved on the disk as individual files." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:44 msgid "" "**Built-in**, saved inside the \\*.tscn or the \\*.scn file they're attached " "to." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:46 msgid "" "To be more specific, here's a :ref:`Texture ` in a :ref:" "`Sprite ` node:" msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:51 msgid "" "Clicking the resource preview allows us to view and edit the resource's " "properties." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:55 msgid "" "The path property tells us where the resource comes from. In this case, it " "comes from a PNG image called ``robi.png``. When the resource comes from a " "file like this, it is an external resource. If you erase the path or this " "path is empty, it becomes a built-in resource." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:60 msgid "" "The switch between built-in and external resources happens when you save the " "scene. In the example above, if you erase the path \\`\"res://robi.png\"\\` " "and save, Godot will save the image inside the .tscn scene file." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:66 msgid "" "Even if you save a built-in resource, when you instance a scene multiple " "times, the engine will only load one copy of it." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:70 msgid "Loading resources from code" msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:72 msgid "" "There are two ways to load resources from code. First, you can use the " "``load()`` function anytime:" msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:90 msgid "" "You can also ``preload`` resources. Unlike ``load``, this function will read " "the file from disk and load it at compile-time. As a result, you cannot call " "preload with a variable path: you need to use a constant string." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:106 msgid "Loading scenes" msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:108 msgid "" "Scenes are also resources, but there is a catch. Scenes saved to disk are " "resources of type :ref:`PackedScene `. The scene is " "packed inside a resource." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:112 msgid "" "To get an instance of the scene, you have to use the :ref:`PackedScene." "instance() ` method." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:133 msgid "" "This method creates the nodes in the scene's hierarchy, configures them, and " "returns the root node of the scene. You can then add it as a child of any " "other node." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:137 msgid "" "The approach has several advantages. As the :ref:`PackedScene.instance() " "` function is fast, you can create new " "enemies, bullets, effects, etc. without having to load them again from disk " "each time. Remember that, as always, images, meshes, etc. are all shared " "between the scene instances." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:144 msgid "Freeing resources" msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:146 msgid "" "When a ``Resource`` is no longer in use, it will automatically free itself. " "Since, in most cases, Resources are contained in Nodes, when you free a " "node, the engine frees all the resources it owns as well if no other node " "uses them." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:151 #, fuzzy msgid "Creating your own resources" msgstr "Creare un nuovo progetto" #: ../../docs/getting_started/step_by_step/resources.rst:153 msgid "" "Like any Object in Godot, users can also script Resources. Resource scripts " "inherit the ability to freely translate between object properties and " "serialized text or binary data (/*.tres, /*.res). They also inherit the " "reference-counting memory management from the Reference type." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:158 msgid "" "This comes with many distinct advantages over alternative data structures, " "such as JSON, CSV, or custom TXT files. Users can only import these assets " "as a :ref:`Dictionary ` (JSON) or as a :ref:`File " "` to parse. What sets Resources apart is their inheritance of :" "ref:`Object `, :ref:`Reference `, and :ref:" "`Resource ` features:" msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:165 msgid "" "They can define constants, so constants from other data fields or objects " "are not needed." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:167 msgid "" "They can define methods, including setter/getter methods for properties. " "This allows for abstraction and encapsulation of the underlying data. If the " "Resource script's structure needs to change, the game using the Resource " "need not also change." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:169 msgid "" "They can define signals, so Resources can trigger responses to changes in " "the data they manage." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:171 msgid "" "They have defined properties, so users know 100% that their data will exist." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:173 msgid "" "Resource auto-serialization and deserialization is a built-in Godot Engine " "feature. Users do not need to implement custom logic to import/export a " "resource file's data." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:175 msgid "" "Resources can even serialize sub-Resources recursively, meaning users can " "design even more sophisticated data structures." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:177 msgid "" "Users can save Resources as version-control-friendly text files (\\*.tres). " "Upon exporting a game, Godot serializes resource files as binary files (\\*." "res) for increased speed and compression." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:179 msgid "" "Godot Engine's Inspector renders and edits Resource files out-of-the-box. As " "such, users often do not need to implement custom logic to visualize or edit " "their data. To do so, double-click the resource file in the FileSystem dock " "or click the folder icon in the Inspector and open the file in the dialog." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:181 msgid "" "They can extend **other** resource types besides just the base Resource." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:185 msgid "" "Resources and Dictionaries are both passed by reference, but only Resources " "are reference-counted. This means that if a Dictionary is passed between " "objects and the first object is deleted, all other objects' references to " "the Dictionary will be invalidated. Conversely, Resources will not be freed " "from memory until *all* the objects are deleted." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:215 msgid "Godot makes it easy to create custom Resources in the Inspector." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:217 msgid "" "Create a plain Resource object in the Inspector. This can even be a type " "that derives Resource, so long as your script is extending that type." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:218 msgid "Set the ``script`` property in the Inspector to be your script." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:220 msgid "" "The Inspector will now display your Resource script's custom properties. If " "one edits those values and saves the resource, the Inspector serializes the " "custom properties too! To save a resource from the Inspector, click the " "Inspector's tools menu (top right), and select \"Save\" or \"Save As...\"." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:225 msgid "" "If the script's language supports :ref:`script classes " "`, then it streamlines the process. " "Defining a name for your script alone will add it to the Inspector's " "creation dialog. This will auto-add your script to the Resource object you " "create." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:230 msgid "Let's see some examples." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:303 msgid "" "Resource scripts are similar to Unity's ScriptableObjects. The Inspector " "provides built-in support for custom resources. If desired though, users can " "even design their own Control-based tool scripts and combine them with an :" "ref:`EditorPlugin ` to create custom visualizations and " "editors for their data." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:309 msgid "" "Unreal Engine 4's DataTables and CurveTables are also easy to recreate with " "Resource scripts. DataTables are a String mapped to a custom struct, similar " "to a Dictionary mapping a String to a secondary custom Resource script." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:345 msgid "" "Instead of just inlining the Dictionary values, one could also, " "alternatively..." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:347 msgid "" "Import a table of values from a spreadsheet and generate these key-value " "pairs, or..." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:349 msgid "" "Design a visualization within the editor and create a simple plugin that " "adds it to the Inspector when you open these types of Resources." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:352 msgid "" "CurveTables are the same thing, except mapped to an Array of float values or " "a :ref:`Curve `/:ref:`Curve2D ` resource object." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:357 msgid "" "Beware that resource files (\\*.tres/\\*.res) will store the path of the " "script they use in the file. When loaded, they will fetch and load this " "script as an extension of their type. This means that trying to assign a " "subclass, i.e. an inner class of a script (such as using the ``class`` " "keyword in GDScript) won't work. Godot will not serialize the custom " "properties on the script subclass properly." msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:363 msgid "" "In the example below, Godot would load the ``Node`` script, see that it " "doesn't extend ``Resource``, and then determine that the script failed to " "load for the Resource object since the types are incompatible." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:4 msgid "File system" msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:9 msgid "" "A file system manages how assets are stored and how they are accessed. A " "well-designed file system also allows multiple developers to edit the same " "source files and assets while collaborating. Godot stores all assets as " "files in its file system." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:15 msgid "Implementation" msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:17 msgid "" "The file system stores resources on disk. Anything, from a script, to a " "scene or a PNG image is a resource to the engine. If a resource contains " "properties that reference other resources on disk, the paths to those " "resources are also included. If a resource has sub-resources that are built-" "in, the resource is saved in a single file together with all the bundled sub-" "resources. For example, a font resource is often bundled together with the " "font textures." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:24 msgid "" "The Godot file system avoids using metadata files. Existing asset managers " "and VCSs are better than anything we can implement, so Godot tries its best " "to play along with SVN, Git, Mercurial, Perforce, etc." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:28 msgid "Example of file system contents:" msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:39 msgid "project.godot" msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:41 msgid "" "The project.godot file is the project description file, and it is always " "found at the root of the project. In fact, its location defines where the " "root is. This is the first file that Godot looks for when opening a project." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:45 msgid "" "This file contains the project configuration in plain text, using the win." "ini format. Even an empty project.godot can function as a basic definition " "of a blank project." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:50 msgid "Path delimiter" msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:52 msgid "" "Godot only supports ``/`` as a path delimiter. This is done for portability " "reasons. All operating systems support this, even Windows, so a path such as " "``c:\\project\\project.godot`` needs to be typed as ``c:/project/project." "godot``." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:58 #: ../../docs/tutorials/io/data_paths.rst:16 msgid "Resource path" msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:60 msgid "" "When accessing resources, using the host OS file system layout can be " "cumbersome and non-portable. To solve this problem, the special path ``res://" "`` was created." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:64 msgid "" "The path ``res://`` will always point at the project root (where project." "godot is located, so ``res://project.godot`` is always valid)." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:68 msgid "" "This file system is read-write only when running the project locally from " "the editor. When exported or when running on different devices (such as " "phones or consoles, or running from DVD), the file system will become read-" "only and writing will no longer be permitted." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:74 msgid "User path" msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:76 msgid "" "Writing to disk is still needed for tasks such as saving game state or " "downloading content packs. To this end, the engine ensures that there is a " "special path ``user://`` that is always writable." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:81 msgid "Host file system" msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:83 msgid "" "Alternatively host file system paths can also be used, but this is not " "recommended for a released product as these paths are not guaranteed to work " "on all platforms. However, using host file system paths can be useful when " "writing development tools in Godot." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:89 msgid "Drawbacks" msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:91 msgid "" "There are some drawbacks to this simple file system design. The first issue " "is that moving assets around (renaming them or moving them from one path to " "another inside the project) will break existing references to these assets. " "These references will have to be re-defined to point at the new asset " "location." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:96 msgid "" "To avoid this, do all your move, delete and rename operations from within " "Godot, on the FileSystem dock. Never move assets from outside Godot, or " "dependencies will have to be fixed manually (Godot detects this and helps " "you fix them anyway, but why go the hard route?)." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:101 msgid "" "The second is that, under Windows and macOS, file and path names are case " "insensitive. If a developer working in a case insensitive host file system " "saves an asset as \"myfile.PNG\", but then references it as \"myfile.png\", " "it will work fine on their platform, but not on other platforms, such as " "Linux, Android, etc. This may also apply to exported binaries, which use a " "compressed package to store all files." msgstr "" #: ../../docs/getting_started/step_by_step/filesystem.rst:107 msgid "" "It is recommended that your team clearly define a naming convention for " "files when working with Godot. One simple fool-proof convention is to only " "allow lowercase file and path names." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:4 #: ../../docs/getting_started/step_by_step/scene_tree.rst:33 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:288 msgid "SceneTree" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:9 msgid "" "In previous tutorials, everything revolved around the concept of nodes. " "Scenes are collections of nodes. They become active once they enter the " "*scene tree*." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:14 msgid "MainLoop" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:16 msgid "" "The way Godot works internally is as follows. There is the :ref:`OS " "` class, which is the only instance that runs at the beginning. " "Afterwards, all drivers, servers, scripting languages, scene system, etc are " "loaded." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:21 msgid "" "When initialization is complete, :ref:`OS ` needs to be supplied " "a :ref:`MainLoop ` to run. Up to this point, all this is " "internals working (you can check main/main.cpp file in the source code if " "you are ever interested to see how this works internally)." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:27 msgid "" "The user program, or game, starts in the MainLoop. This class has a few " "methods, for initialization, idle (frame-synchronized callback), fixed " "(physics-synchronized callback), and input. Again, this is low level and " "when making games in Godot, writing your own MainLoop seldom makes sense." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:35 msgid "" "One of the ways to explain how Godot works is that it's a high level game " "engine over a low level middleware." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:38 msgid "" "The scene system is the game engine, while the :ref:`OS ` and " "servers are the low level API." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:41 msgid "" "The scene system provides its own main loop to OS, :ref:`SceneTree " "`. This is automatically instanced and set when running a " "scene, no need to do any extra work." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:46 msgid "" "It's important to know that this class exists because it has a few important " "uses:" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:49 msgid "" "It contains the root :ref:`Viewport `, to which a scene is " "added as a child when it's first opened to become part of the *Scene Tree* " "(more on that next)" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:52 msgid "" "It contains information about the groups and has the means to call all nodes " "in a group or get a list of them." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:54 msgid "" "It contains some global state functionality, such as setting pause mode or " "quitting the process." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:57 msgid "" "When a node is part of the Scene Tree, the :ref:`SceneTree " "` singleton can be obtained by calling :ref:`Node." "get_tree() `." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:63 msgid "Root viewport" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:65 msgid "" "The root :ref:`Viewport ` is always at the top of the scene. " "From a node, it can be obtained in two different ways:" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:80 msgid "" "This node contains the main viewport. Anything that is a child of a :ref:" "`Viewport ` is drawn inside of it by default, so it makes " "sense that the top of all nodes is always a node of this type otherwise " "nothing would be seen." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:85 msgid "" "While other viewports can be created in the scene (for split-screen effects " "and such), this one is the only one that is never created by the user. It's " "created automatically inside SceneTree." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:90 #: ../../docs/tutorials/threads/thread_safe_apis.rst:22 msgid "Scene tree" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:92 msgid "" "When a node is connected, directly or indirectly, to the root viewport, it " "becomes part of the *scene tree*." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:95 msgid "" "This means that as explained in previous tutorials, it will get the " "_enter_tree() and _ready() callbacks (as well as _exit_tree())." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:100 msgid "" "When nodes enter the *Scene Tree*, they become active. They get access to " "everything they need to process, get input, display 2D and 3D visuals, " "receive and send notifications, play sounds, etc. When they are removed from " "the *scene tree*, they lose these abilities." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:106 msgid "Tree order" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:108 msgid "" "Most node operations in Godot, such as drawing 2D, processing, or getting " "notifications are done in tree order. This means that parents and siblings " "with a lower rank in the tree order will get notified before the current " "node." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:116 msgid "\"Becoming active\" by entering the *Scene Tree*" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:118 msgid "A scene is loaded from disk or created by scripting." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:119 msgid "" "The root node of that scene (only one root, remember?) is added as either a " "child of the \"root\" Viewport (from SceneTree), or to any child or " "grandchild of it." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:122 msgid "" "Every node of the newly added scene, will receive the \"enter_tree\" " "notification ( _enter_tree() callback in GDScript) in top-to-bottom order." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:125 msgid "" "An extra notification, \"ready\" ( _ready() callback in GDScript) is " "provided for convenience, when a node and all its children are inside the " "active scene." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:128 msgid "" "When a scene (or part of it) is removed, they receive the \"exit scene\" " "notification ( _exit_tree() callback in GDScript) in bottom-to-top order" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:133 msgid "Changing current scene" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:135 msgid "" "After a scene is loaded, it is often desired to change this scene for " "another one. The simple way to do this is to use the :ref:`SceneTree." "change_scene() ` function:" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:153 msgid "" "Rather than using file paths, one can also use ready-made :ref:`PackedScene " "` resources using the equivalent function :ref:`SceneTree." "change_scene_to(PackedScene scene) `:" msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:174 msgid "" "These are quick and useful ways to switch scenes but have the drawback that " "the game will stall until the new scene is loaded and running. At some point " "in the development of your game, it may be preferable to create proper " "loading screens with progress bar, animated indicators or thread " "(background) loading. This must be done manually using autoloads (see next " "chapter) and :ref:`doc_background_loading`." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:4 msgid "Singletons (AutoLoad)" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:9 msgid "" "Godot's scene system, while powerful and flexible, has a drawback: there is " "no method for storing information (e.g. a player's score or inventory) that " "is needed by more than one scene." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:13 msgid "" "It's possible to address this with some workarounds, but they come with " "their own limitations:" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:16 msgid "" "You can use a \"master\" scene that loads and unloads other scenes as its " "children. However, this means you can no longer run those scenes " "individually and expect them to work correctly." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:19 msgid "" "Information can be stored to disk in ``user://`` and then loaded by scenes " "that require it, but frequently saving and loading data is cumbersome and " "may be slow." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:23 msgid "" "The `Singleton Pattern `_ " "is a useful tool for solving the common use case where you need to store " "persistent information between scenes. In our case it is possible re-use the " "same scene or class for multiple singletons, so long as they have different " "names." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:29 msgid "Using this concept, you can create objects that:" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:31 msgid "Are always loaded, no matter which scene is currently running" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:32 msgid "Can store global variables, such as player information" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:33 msgid "Can handle switching scenes and between-scene transitions" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:34 msgid "" "Act like a singleton, since GDScript does not support global variables by " "design" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:36 msgid "Autoloading nodes and scripts can give us these characteristics." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:39 msgid "AutoLoad" msgstr "AutoLoad" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:41 msgid "" "You can use AutoLoad to load a scene or a script that inherits from :ref:" "`Node `. Note: when autoloading a script, a Node will be created " "and the script will be attached to it. This node will be added to the root " "viewport before any other scenes are loaded." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:48 msgid "" "To autoload a scene or script, select ``Project -> Project Settings`` from " "the menu and switch to the \"AutoLoad\" tab." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:53 msgid "" "Here you can add any number of scenes or scripts. Each entry in the list " "requires a name, which is assigned as the node's ``name`` property. The " "order of the entries as they are added to the global scene tree can be " "manipulated using the up/down arrow keys." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:60 msgid "" "This means that any node can access a singleton named \"PlayerVariables\" " "with:" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:73 msgid "" "If the \"Enable\" column is checked (default true) then the singleton can " "simply be accessed directly:" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:86 msgid "" "Note that autoload objects (scripts and/or scenes) are accessed just like " "any other node in the scene tree. In fact, if you look at the running scene " "tree, you'll see the autoloaded nodes appear:" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:93 msgid "Custom scene switcher" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:95 msgid "" "This tutorial will demonstrate building a scene switcher using autoload. For " "basic scene switching, you can use the :ref:`SceneTree.change_scene() " "` method (see :ref:`doc_scene_tree` for " "details). However, if you need more complex behavior when changing scenes, " "this method provides more functionality." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:101 msgid "" "To begin, download the template from here: :download:`autoload.zip ` and open it in Godot." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:104 msgid "" "The project contains two scenes: ``Scene1.tscn`` and ``Scene2.tscn``. Each " "scene contains a label displaying the scene name and a button with its " "``pressed()`` signal connected. When you run the project, it starts in " "``Scene1.tscn``. However, pressing the button does nothing." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:110 msgid "Global.gd" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:112 msgid "" "Switch to the \"Script\" tab and create a new script called Global.gd. Make " "sure it inherits from ``Node``:" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:117 msgid "" "The next step is to add this script to the autoLoad list. Open ``Project > " "Project Settings`` from the menu, switch to the \"AutoLoad\" tab and select " "the script by clicking the ``..`` button or typing its path: ``res://Global." "gd``. Press \"Add\" to add it to the autoload list:" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:124 msgid "" "Now whenever we run any scene in the project, this script will always be " "loaded." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:126 msgid "" "Returning to the script, it needs to fetch the current scene in the " "`_ready()` function. Both the current scene (the one with the button) and " "``global.gd`` are children of root, but autoloaded nodes are always first. " "This means that the last child of root is always the loaded scene." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:158 msgid "" "Now we need a function for changing the scene. This function needs to free " "the current scene and replace it with the requested one." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:227 msgid "" "Using :ref:`Object.call_deferred() `, the " "second function will only run once all code from the current scene has " "completed. Thus, the current scene will not be removed while it is still " "being used (i.e. its code is still running)." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:232 msgid "" "Finally, we need to fill the empty callback functions in the two scenes:" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:252 #: ../../docs/tutorials/math/vector_math.rst:276 msgid "and" msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:272 msgid "" "Run the project and test that you can switch between scenes by pressing the " "button." msgstr "" #: ../../docs/getting_started/step_by_step/singletons_autoload.rst:275 msgid "" "Note: When scenes are small, the transition is instantaneous. However, if " "your scenes are more complex, they may take a noticeable amount of time to " "appear. To learn how to handle this, see the next tutorial: :ref:" "`doc_background_loading`" msgstr "" #: ../../docs/getting_started/editor/index.rst:2 msgid "Editor manual" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:8 #, fuzzy msgid "From Unity to Godot Engine" msgstr "Riguardo a Godot Engine" #: ../../docs/getting_started/editor/unity_to_godot.rst:10 msgid "" "This guide provides an overview of Godot Engine from the viewpoint of a " "Unity user, and aims to help you migrate your existing Unity experience into " "the world of Godot." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:15 msgid "" "This article talks about older versions of Unity. Nestable prefabs ('Nested " "prefabs') were added to Unity 2018.3. Nestable prefabs are analogous to " "Godot's scenes, and allow a more Godot-like approach to scene organisation." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:18 msgid "Differences" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:21 msgid "Unity" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:21 msgid "Godot" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:23 #: ../../docs/community/contributing/documentation_guidelines.rst:115 msgid "License" msgstr "Licenza" #: ../../docs/getting_started/editor/unity_to_godot.rst:23 msgid "" "Proprietary, closed, free license with revenue caps and usage restrictions" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:23 msgid "MIT license, free and fully open source without any restriction" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:25 msgid "OS (editor)" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:25 msgid "Windows, macOS, Linux (unofficial and unsupported)" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:25 msgid "Windows, macOS, X11 (Linux, \\*BSD)" msgstr "Windows, macOS, X11 (Linux, \\*BSD)" #: ../../docs/getting_started/editor/unity_to_godot.rst:27 msgid "OS (export)" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:27 msgid "**Desktop:** Windows, macOS, Linux" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:28 msgid "**Mobile:** Android, iOS, Windows Phone, Tizen" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:29 msgid "**Web:** WebAssembly or asm.js" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:30 msgid "**Consoles:** PS4, PS Vita, Xbox One, Xbox 360, Wii U, Nintendo 3DS" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:31 msgid "" "**VR:** Oculus Rift, SteamVR, Google Cardboard, Playstation VR, Gear VR, " "HoloLens" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:32 msgid "**TV:** Android TV, Samsung SMART TV, tvOS" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:27 msgid "**Desktop:** Windows, macOS, X11" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:28 msgid "**Mobile:** Android, iOS" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:29 msgid "**Web:** WebAssembly" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:30 msgid "**Console:** See :ref:`doc_consoles`" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:31 msgid "**VR:** Oculus Rift, SteamVR" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:34 msgid "Scene system" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:34 msgid "Component/Scene (GameObject > Component)" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:35 msgid "Prefabs" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:34 msgid "" ":ref:`Scene tree and nodes `, allowing scenes to be " "nested and/or inherit other scenes" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:37 msgid "Third-party tools" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:37 msgid "Visual Studio or VS Code" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:37 msgid ":ref:`External editors are possible `" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:38 msgid ":ref:`Android SDK for Android export `" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:40 msgid "Notable advantages" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:40 msgid "Huge community" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:41 msgid "Large assets store" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:40 msgid "Scene System" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:41 msgid ":ref:`Animation Pipeline `" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:42 msgid ":ref:`Easy to write Shaders `" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:43 msgid "Debug on Device" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:50 msgid "The editor" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:52 msgid "" "Godot Engine provides a rich-featured editor that allows you to build your " "games. The pictures below display the default layouts of both editors with " "colored blocks to indicate common functionalities." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:58 msgid "" "While both editors may seem similar, there are many differences below the " "surface. Both let you organize the project using the filesystem, but Godot's " "approach is simpler with a single configuration file, minimalist text " "format, and no metadata. This makes Godot more friendly to VCS systems, such " "as Git, Subversion, or Mercurial." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:63 msgid "" "Godot's Scene panel is similar to Unity's Hierarchy panel but, as each node " "has a specific function, the approach used by Godot is more visually " "descriptive. It's easier to understand what a scene does at a glance." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:67 msgid "" "The Inspector in Godot is more minimal, it shows only properties. Thanks to " "this, objects can expose more useful parameters to the user without having " "to hide functionality in language APIs. As a plus, Godot allows animating " "any of those properties visually. Changing colors, textures, enumerations, " "or even links to resources in real-time is possible without needing to write " "code." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:72 msgid "" "The Toolbar at the top of the screen is similar in both editors, offering " "control over project playback. Projects in Godot run in a separate window, " "rather than inside the editor (but the tree and objects can still be " "explored in the debugger window)." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:76 msgid "" "This approach has the disadvantage that in Godot the running game can't be " "explored from different angles (though this may be supported in the future " "and displaying collision gizmos in the running game is already possible), " "but in exchange has several advantages:" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:80 msgid "" "Running the project and closing it is fast (Unity has to save, run the " "project, close the project, and then reload the previous state)." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:81 msgid "" "Live editing is a lot more useful because changes done to the editor take " "effect immediately in the game and are not lost (nor have to be synced) when " "the game is closed. This allows fantastic workflows, like creating levels " "while you play them." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:82 msgid "The editor is more stable because the game runs in a separate process." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:84 msgid "" "Finally, Godot's top toolbar includes a menu for remote debugging. These " "options allow deployment to a device (connected phone, tablet, or browser " "via HTML5), and debugging/live editing on it after the game is exported." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:89 msgid "The scene system" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:91 msgid "" "This is the most important difference between Unity and Godot and the " "favourite feature of most Godot users." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:93 msgid "" "Working on a 'level' in Unity usually means embedding all the required " "assets in a scene and linking them together with components and scripts." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:96 msgid "" "Godot's scene system is superficially similar to Unity. A 'level' consists " "of a collection of nodes, each with its own purpose: Sprite, Mesh, Light, " "etc. However, in Godot the nodes are arranged in a tree. Each node can have " "multiple children, which makes each a subscene of the main scene. This means " "you can compose a whole scene with different scenes stored in different " "files." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:99 msgid "" "For example, think of a platformer level. You would compose it with multiple " "elements:" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:101 msgid "Bricks" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:102 msgid "Coins" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:103 msgid "The player" msgstr "Il giocatore" #: ../../docs/getting_started/editor/unity_to_godot.rst:104 msgid "The enemies" msgstr "I nemici" #: ../../docs/getting_started/editor/unity_to_godot.rst:106 msgid "" "In Unity, you would put all the GameObjects in the scene: the player, " "multiple instances of enemies, bricks everywhere to form the ground of the " "level and then multiple instances of coins all over the level. You would " "then add various components to each element to link them and add logic in " "the level: For example, you'd add a BoxCollider2D to all the elements of the " "scene so that they can collide. This principle is different in Godot." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:111 msgid "" "In Godot, you would split your whole scene into three separate, smaller " "scenes, and instance them in the main scene." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:113 msgid "**A scene for the Player alone.**" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:115 msgid "" "Consider the player as an element we'd like to use in different parent " "scenes (for instance 'level' scenes). In our case, the player element needs " "at least an AnimatedSprite node. This node contains the sprite textures " "necessary for various animations (for example, a walking animation)." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:117 msgid "**A scene for the Enemy.**" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:119 msgid "" "An enemy is also an element we'd like to use in several scenes. It's almost " "the same as the Player node. The only differences are the script (it needs " "'AI' routines to generate the enemy's behaviour) and the sprite textures " "used by the AnimatedSprite node." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:123 msgid "**A Level scene.**" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:125 msgid "" "A Level scene is composed of Bricks (for platforms), Coins (for the player " "to collect) and a number of instances of the Enemy scene. Each instance is a " "node in the Level scene tree. These instances are separate enemies, which " "initially have shared behaviour and appearance as defined in the Enemy " "scene. You can set different properties for each Enemy node (to change its " "color, for example)." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:129 msgid "" "4. **A Main scene.** The Main scene would be composed of one root node with " "2 children: a Player instance node, and a Level instance node. The root node " "can be anything, generally a \"root\" type such as \"Node\" which is the " "most global type, or \"Node2D\" (root type of all 2D-related nodes), " "\"Spatial\" (root type of all 3D-related nodes) or \"Control\" (root type of " "all GUI-related nodes)." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:135 msgid "" "As you can see, every scene is organized as a tree. The same goes for nodes' " "properties: you don't *add* a collision component to a node to make it " "collidable like Unity does. Instead, you make this node a *child* of a new " "specific node that has collision properties. Godot features various " "collision types nodes, depending on the usage (see the :ref:`Physics " "introduction `)." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:140 msgid "" "What are the advantages of this system? Wouldn't this system potentially " "increase the depth of the scene tree? And doesn't Unity already allow you to " "organize GameObjects by putting them inside empty GameObjects?" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:142 msgid "" "Godot's system is closer to the well-known object-oriented paradigm: Godot " "provides a number of nodes which are not clearly \"Game Objects\", but they " "provide their children with their own capabilities: this is inheritance." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:143 msgid "" "Godot allows the extraction of a subtree of a scene to make it a scene of " "its own. So if a scene tree gets too deep, it can be split into smaller " "subtrees. This is better for reusability, as you can include any subtree as " "a child of any node. Putting multiple GameObjects in an empty GameObject in " "Unity does not provide the same functionality." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:146 #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:4 msgid "Project organization" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:150 msgid "" "There is no perfect project architecture. Any architecture can be made to " "work in either Unity and Godot." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:153 msgid "" "However, a common architecture for Unity projects is to have one Assets " "folder in the root directory that contains various folders, one per type of " "asset: Audio, Graphics, Models, Materials, Scripts, Scenes, and so on." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:156 msgid "" "Since Godot allows splitting scenes into smaller scenes, each scene and " "subscene existing as a file in the project, we recommend organizing your " "project a bit differently. This wiki provides a page for this: :ref:" "`doc_project_organization`." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:161 msgid "Where are my prefabs?" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:163 msgid "" "A prefab as provided by Unity is a 'template' element of the scene. It is " "reusable, and each instance of the prefab that exists in the scene has an " "existence of its own, but all of them have the same properties as defined by " "the prefab." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:167 msgid "" "Godot does not provide prefabs as such, but the same functionality is " "provided by its scene system: The scene system is organized as a tree. Godot " "allows you to save any subtree of a scene as a scene file. This new scene " "can then be instanced as many times as you want, as a child of any node. Any " "change you make to this new, separate scene will be applied to its " "instances. However, any change you make to the instance will not have any " "impact on the 'template' scene." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:174 msgid "" "To be precise, you can modify the parameters of an instance in the Inspector " "panel. The nodes that compose this instance are initially locked. You can " "unlock them if you need to by right-clicking the instance in the Scene tree " "and selecting \"Editable children\" in the menu. You don't need to do this " "to add *new* child nodes to this node. Remember that any new children will " "belong to the instance, not to the 'template' scene on disk. If you want to " "add new children to every instance of your 'template' scene, then you should " "add them in the 'template' scene." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:184 msgid "Glossary correspondence" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:186 msgid "GameObject -> Node" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:187 msgid "Add a component -> Inheriting" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:188 msgid "Prefab -> Reusable Scene file" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:192 msgid "Scripting: GDScript, C# and Visual Script" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:195 msgid "Design" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:197 msgid "" "Unity supports C#. C# benefits from its integration with Visual Studio and " "has desirable features such as static typing." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:199 msgid "" "Godot provides its own scripting language, :ref:`GDScript ` " "as well as support for :ref:`Visual Script ` and :ref:`C# `. GDScript borrows its syntax " "from Python, but is not related to it. If you wonder about the reasoning for " "a custom scripting language, please read the :ref:`doc_gdscript` and :ref:" "`doc_faq` pages. GDScript is strongly attached to the Godot API and doesn't " "take long to learn: Between one evening for an experienced programmer and a " "week for a complete beginner." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:205 msgid "" "Unity allows you to attach as many scripts as you want to a GameObject. Each " "script adds a behaviour to the GameObject: For example, you can attach a " "script so that it reacts to the player's controls, and another that controls " "its specific game logic." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:209 msgid "" "In Godot, you can only attach one script per node. You can use either an " "external GDScript file or include the script directly in the node. If you " "need to attach more scripts to one node, then you may consider two " "solutions, depending on your scene and on what you want to achieve:" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:213 msgid "" "either add a new node between your target node and its current parent, then " "add a script to this new node." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:214 msgid "" "or, you can split your target node into multiple children and attach one " "script to each of them." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:216 msgid "" "As you can see, it can be easy to turn a scene tree to a mess. Consider " "splitting any complicated scene into multiple, smaller branches." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:219 msgid "Connections: groups and signals" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:221 msgid "" "You can control nodes by accessing them via script and calling built-in or " "user-defined functions on them. You can also place nodes in a group and call " "functions on all nodes in this group. See more in the :ref:`scripting " "documentation `." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:226 msgid "" "Nodes can send a signal when a specified action occurs. A signal can be set " "to call any function. You can define custom signals and specify when they " "are triggered. See more in the :ref:`signals documentation " "`." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:231 msgid "Script serialization" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:233 msgid "Unity can handle script serialization in two ways:" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:235 msgid "" "Implicit: All public fields in a class are automatically serialized if the " "type is a serializable type (``Dictionary`` is not serializable)." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:236 msgid "" "Explicit: Non-public fields can be serialized using the ``[SerializeField]`` " "attribute." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:238 msgid "" "Godot also has a built-in script serialization system, but it works only " "explicitly. You can serialize any serializable type (:ref:`built-in and " "various engine types `, including :ref:" "`class_Array` and :ref:`class_Dictionary`) using the ``export`` keyword. See " "the :ref:`exports documentation ` for details." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:243 msgid "" "Unity also has a data type called ``ScriptableObject`` used to serialize " "custom asset objects. Its equivalent in Godot is the base class for all " "resources: :ref:`class_Resource`. Creating a script that inherits :ref:" "`class_Resource` will allow you to create custom serializable objects. More " "information about resources can be found :ref:`here `." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:248 msgid "Using Godot in C++" msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:250 msgid "" "Godot allows you to develop your project directly in C++ by using its API, " "which is not possible with Unity at the moment. As an example, you can " "consider Godot Engine's editor as a \"game\" written in C++ using the Godot " "API." msgstr "" #: ../../docs/getting_started/editor/unity_to_godot.rst:253 msgid "" "If you are interested in using Godot in C++, you may want to start reading " "the :ref:`Developing in C++ ` page." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:4 msgid "Command line tutorial" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:8 msgid "" "Some developers like using the command line extensively. Godot is designed " "to be friendly to them, so here are the steps for working entirely from the " "command line. Given the engine relies on almost no external libraries, " "initialization times are pretty fast, making it suitable for this workflow." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:15 msgid "Path" msgstr "Percorso" #: ../../docs/getting_started/editor/command_line_tutorial.rst:17 msgid "" "It is recommended that your Godot binary be in your PATH environment " "variable, so it can be executed easily from any place by typing ``godot``. " "You can do so on Linux by placing the Godot binary in ``/usr/local/bin`` and " "making sure it is called ``godot``." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:23 msgid "Setting the project path" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:25 msgid "" "Depending on where your Godot binary is located and what your current " "working directory is, you may need to set the path to your project for any " "of the following commands to work correctly." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:29 msgid "" "This can be done by giving the path to the ``project.godot`` file of your " "project as either the first argument, like this:" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:36 msgid "Or by using the ``--path`` argument:" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:42 msgid "" "For example, the full command for exporting your game (as explained below) " "might look like this:" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:49 msgid "Creating a project" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:52 msgid "" "Creating a project from the command line can be done by navigating the shell " "to the desired place and making a project.godot file." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:63 msgid "The project can now be opened with Godot." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:67 msgid "Running the editor" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:69 msgid "" "Running the editor is done by executing Godot with the ``-e`` flag. This " "must be done from within the project directory or a subdirectory, otherwise " "the command is ignored and the project manager appears." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:77 msgid "" "If a scene has been created and saved, it can be edited later by running the " "same code with that scene as argument." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:85 msgid "Erasing a scene" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:87 msgid "" "Godot is friends with your filesystem and will not create extra metadata " "files. Use ``rm`` to erase a scene file. Make sure nothing references that " "scene or else an error will be thrown upon opening." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:96 msgid "Running the game" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:98 msgid "" "To run the game, simply execute Godot within the project directory or " "subdirectory." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:105 msgid "" "When a specific scene needs to be tested, pass that scene to the command " "line." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:113 msgid "Debugging" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:115 msgid "" "Catching errors in the command line can be a difficult task because they " "just fly by. For this, a command line debugger is provided by adding ``-d``. " "It works for running either the game or a simple scene." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:132 msgid "" "Exporting the project from the command line is also supported. This is " "especially useful for continuous integration setups. The version of Godot " "that is headless (server build, no video) is ideal for this." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:141 msgid "" "The platform names recognized by the ``--export`` switch are the same as " "displayed in the export wizard of the editor. To get a list of supported " "platforms from the command line, try exporting to a non-recognized platform " "and the full listing of platforms your configuration supports will be shown." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:147 msgid "" "To export a debug version of the game, use the ``--export-debug`` switch " "instead of ``--export``. Their parameters and usage are the same." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:151 msgid "Running a script" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:153 msgid "" "It is possible to run a simple .gd script from the command line. This " "feature is especially useful in large projects, for batch conversion of " "assets or custom import/export." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:157 msgid "The script must inherit from SceneTree or MainLoop." msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:159 msgid "Here is a simple example of how it works:" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:170 msgid "And how to run it:" msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:177 msgid "" "If no project.godot exists at the path, current path is assumed to be the " "current working directory (unless ``-path`` is specified)." msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:4 msgid "Using an external text editor" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:6 msgid "" "Godot can be used with an external text editor, such as Sublime Text or " "Visual Studio Code. To enable an external text editor, browse to the " "relevant editor settings via: ``Editor -> Editor Settings -> Text Editor -> " "External``" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:12 msgid "" "There are two fields: the executable path and command line flags. The flags " "allow you to integrate the editor with Godot, passing it the file path to " "open and other relevant arguments. Godot will replace the following " "placeholders in the flags string:" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:18 msgid "Field in Exec Flags" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:18 msgid "Is replaced with" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:20 msgid "``{project}``" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:20 msgid "The absolute path to the project directory" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:22 msgid "``{file}``" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:22 msgid "The absolute path to the file" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:24 msgid "``{col}``" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:24 msgid "The column number of the error" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:26 msgid "``{line}``" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:26 msgid "The line number of the error" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:29 msgid "Some example Exec Flags for various editors include:" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:32 msgid "Exec Flags" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:34 msgid "Geany/Kate" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:34 msgid "``{file} --line {line} --column {col}``" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:36 msgid "Atom/Sublime Text" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:36 msgid "``{file}:{line}``" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:38 msgid "JetBrains Rider" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:38 msgid "``--line {line} {file}``" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:40 #: ../../docs/development/cpp/configuring_an_ide.rst:267 msgid "Visual Studio Code" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:40 msgid "``{project} --goto {file}:{line}:{col}``" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:42 msgid "Vim (gVim)" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:42 msgid "``\"+call cursor({line}, {col})\" {file}``" msgstr "" #: ../../docs/getting_started/editor/external_editor.rst:45 msgid "For Visual Studio Code you will have to point to the ``code.cmd`` file." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:4 #, fuzzy msgid "GDScript basics" msgstr "GDScript" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:9 msgid "" "*GDScript* is a high level, dynamically typed programming language used to " "create content. It uses a syntax similar to `Python `_ (blocks are indent-based and " "many keywords are similar). Its goal is to be optimized for and tightly " "integrated with Godot Engine, allowing great flexibility for content " "creation and integration." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:17 msgid "History" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:19 msgid "" "In the early days, the engine used the `Lua `__ " "scripting language. Lua is fast, but creating bindings to an object oriented " "system (by using fallbacks) was complex and slow and took an enormous amount " "of code. After some experiments with `Python `__, it " "also proved difficult to embed." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:25 msgid "" "The last third party scripting language that was used for shipped games was " "`Squirrel `__, but it was dropped as well. At that " "point, it became evident that a custom scripting language could more " "optimally make use of Godot's particular architecture:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:30 msgid "" "Godot embeds scripts in nodes. Most languages are not designed with this in " "mind." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:32 msgid "" "Godot uses several built-in data types for 2D and 3D math. Script languages " "do not provide this, and binding them is inefficient." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:34 msgid "" "Godot uses threads heavily for lifting and initializing data from the net or " "disk. Script interpreters for common languages are not friendly to this." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:37 msgid "" "Godot already has a memory management model for resources, most script " "languages provide their own, which results in duplicate effort and bugs." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:40 msgid "" "Binding code is always messy and results in several failure points, " "unexpected bugs and generally low maintainability." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:43 msgid "" "The result of these considerations is *GDScript*. The language and " "interpreter for GDScript ended up being smaller than the binding code itself " "for Lua and Squirrel, while having equal functionality. With time, having a " "built-in language has proven to be a huge advantage." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:49 msgid "Example of GDScript" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:51 msgid "" "Some people can learn better by taking a look at the syntax, so here's a " "simple example of how GDScript looks." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:129 msgid "" "If you have previous experience with statically typed languages such as C, C+" "+, or C# but never used a dynamically typed one before, it is advised you " "read this tutorial: :ref:`doc_gdscript_more_efficiently`." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:134 msgid "Language" msgstr "Linguaggio" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:136 msgid "" "In the following, an overview is given to GDScript. Details, such as which " "methods are available to arrays or other objects, should be looked up in the " "linked class descriptions." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:141 msgid "Identifiers" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:143 msgid "" "Any string that restricts itself to alphabetic characters (``a`` to ``z`` " "and ``A`` to ``Z``), digits (``0`` to ``9``) and ``_`` qualifies as an " "identifier. Additionally, identifiers must not begin with a digit. " "Identifiers are case-sensitive (``foo`` is different from ``FOO``)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:149 msgid "Keywords" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:151 msgid "" "The following is the list of keywords supported by the language. Since " "keywords are reserved words (tokens), they can't be used as identifiers. " "Operators (like ``in``, ``not``, ``and`` or ``or``) and names of built-in " "types as listed in the following sections are also reserved." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:156 msgid "" "Keywords are defined in the `GDScript tokenizer `_ in " "case you want to take a look under the hood." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:160 msgid "Keyword" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:160 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:7 #: ../../docs/getting_started/workflow/assets/importing_images.rst:56 #: ../../docs/tutorials/inputs/inputevent.rst:130 #: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:27 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:21 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:393 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:437 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:523 #: ../../docs/tutorials/shading/shading_reference/spatial_shader.rst:15 #: ../../docs/tutorials/shading/shading_reference/spatial_shader.rst:125 #: ../../docs/tutorials/shading/shading_reference/spatial_shader.rst:179 #: ../../docs/tutorials/shading/shading_reference/spatial_shader.rst:292 #: ../../docs/tutorials/shading/shading_reference/canvas_item_shader.rst:17 #: ../../docs/tutorials/shading/shading_reference/canvas_item_shader.rst:95 #: ../../docs/tutorials/shading/shading_reference/canvas_item_shader.rst:144 #: ../../docs/tutorials/shading/shading_reference/canvas_item_shader.rst:195 #: ../../docs/tutorials/shading/shading_reference/particle_shader.rst:30 #: ../../docs/tutorials/shading/shading_reference/particle_shader.rst:51 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:92 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:158 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:218 #: ../../docs/tutorials/plugins/editor/import_plugins.rst:242 #: ../../docs/tutorials/misc/binary_serialization_api.rst:92 #: ../../docs/tutorials/misc/binary_serialization_api.rst:101 #: ../../docs/tutorials/misc/binary_serialization_api.rst:110 #: ../../docs/tutorials/misc/binary_serialization_api.rst:119 #: ../../docs/tutorials/misc/binary_serialization_api.rst:132 #: ../../docs/tutorials/misc/binary_serialization_api.rst:143 #: ../../docs/tutorials/misc/binary_serialization_api.rst:158 #: ../../docs/tutorials/misc/binary_serialization_api.rst:171 #: ../../docs/tutorials/misc/binary_serialization_api.rst:190 #: ../../docs/tutorials/misc/binary_serialization_api.rst:205 #: ../../docs/tutorials/misc/binary_serialization_api.rst:220 #: ../../docs/tutorials/misc/binary_serialization_api.rst:239 #: ../../docs/tutorials/misc/binary_serialization_api.rst:264 #: ../../docs/tutorials/misc/binary_serialization_api.rst:295 #: ../../docs/tutorials/misc/binary_serialization_api.rst:310 #: ../../docs/tutorials/misc/binary_serialization_api.rst:319 #: ../../docs/tutorials/misc/binary_serialization_api.rst:330 #: ../../docs/tutorials/misc/binary_serialization_api.rst:340 #: ../../docs/tutorials/misc/binary_serialization_api.rst:359 #: ../../docs/tutorials/misc/binary_serialization_api.rst:371 #: ../../docs/tutorials/misc/binary_serialization_api.rst:383 #: ../../docs/tutorials/misc/binary_serialization_api.rst:396 #: ../../docs/tutorials/misc/binary_serialization_api.rst:407 #: ../../docs/tutorials/misc/binary_serialization_api.rst:418 #: ../../docs/tutorials/misc/binary_serialization_api.rst:426 #: ../../docs/tutorials/misc/binary_serialization_api.rst:439 #: ../../docs/tutorials/misc/binary_serialization_api.rst:452 #: ../../docs/tutorials/misc/binary_serialization_api.rst:467 msgid "Description" msgstr "Descrizione" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:162 msgid "if" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:162 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:164 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:166 msgid "See `if/else/elif`_." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:164 msgid "elif" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:166 msgid "else" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:168 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:817 msgid "for" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:168 msgid "See for_." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:170 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:806 msgid "while" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:170 msgid "See while_." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:172 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:846 msgid "match" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:172 msgid "See match_." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:174 msgid "break" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:174 msgid "Exits the execution of the current ``for`` or ``while`` loop." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:176 msgid "continue" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:176 msgid "" "Immediately skips to the next iteration of the ``for`` or ``while`` loop." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:178 msgid "pass" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:178 msgid "" "Used where a statement is required syntactically but execution of code is " "undesired, e.g. in empty functions." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:180 msgid "return" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:180 msgid "Returns a value from a function." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:182 msgid "class" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:182 msgid "Defines a class." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:184 msgid "extends" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:184 msgid "Defines what class to extend with the current class." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:186 #: ../../docs/tutorials/i18n/locales.rst:360 msgid "is" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:186 msgid "" "Tests whether a variable extends a given class, or is of a given built-in " "type." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:188 msgid "as" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:188 msgid "Cast the value to a given type if possible." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:190 msgid "self" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:190 msgid "Refers to current class instance." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:192 msgid "tool" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:192 msgid "Executes the script in the editor." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:194 msgid "signal" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:194 msgid "Defines a signal." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:196 msgid "func" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:196 msgid "Defines a function." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:198 msgid "static" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:198 msgid "Defines a static function. Static member variables are not allowed." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:200 msgid "const" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:200 msgid "Defines a constant." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:202 msgid "enum" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:202 msgid "Defines an enum." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:204 msgid "var" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:204 msgid "Defines a variable." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:206 msgid "onready" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:206 msgid "" "Initializes a variable once the Node the script is attached to and its " "children are part of the scene tree." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:208 msgid "export" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:208 msgid "" "Saves a variable along with the resource it's attached to and makes it " "visible and modifiable in the editor." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:210 msgid "setget" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:210 msgid "Defines setter and getter functions for a variable." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:212 msgid "breakpoint" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:212 msgid "Editor helper for debugger breakpoints." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:214 msgid "preload" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:214 msgid "Preloads a class or variable. See `Classes as resources`_." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:216 msgid "yield" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:216 msgid "Coroutine support. See `Coroutines with yield`_." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:218 #, fuzzy msgid "assert" msgstr "Classi" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:218 msgid "" "Asserts a condition, logs error on failure. Ignored in non-debug builds. See " "`Assert keyword`_." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:220 msgid "remote" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:220 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:222 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:224 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:226 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:228 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:230 msgid "" "Networking RPC annotation. See :ref:`high-level multiplayer docs " "`." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:222 msgid "master" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:224 msgid "puppet" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:226 msgid "remotesync" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:228 msgid "mastersync" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:230 msgid "puppetsync" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:232 msgid "PI" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:232 #, fuzzy msgid "PI constant." msgstr "Costanti" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:234 msgid "TAU" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:234 #, fuzzy msgid "TAU constant." msgstr "Costanti" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:236 msgid "INF" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:236 msgid "Infinity constant. Used for comparisons." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:238 msgid "NAN" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:238 msgid "NAN (not a number) constant. Used for comparisons." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:242 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:470 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:250 msgid "Operators" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:244 msgid "The following is the list of supported operators and their precedence." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:247 msgid "**Operator**" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:247 #: ../../docs/getting_started/workflow/export/feature_tags.rst:33 msgid "**Description**" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:249 msgid "``x[index]``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:249 msgid "Subscription, Highest Priority" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:251 msgid "``x.attribute``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:251 msgid "Attribute Reference" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:253 msgid "``is``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:253 msgid "Instance Type Checker" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:255 msgid "``~``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:255 msgid "Bitwise NOT" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:257 msgid "``-x``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:257 msgid "Negative / Unary Negation" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:259 msgid "``*`` ``/`` ``%``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:259 msgid "Multiplication / Division / Remainder" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:261 msgid "" "These operators have the same behavior as C++. Integer division is truncated " "rather than returning a fractional number, and the % operator is only " "available for ints (\"fmod\" for floats)" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:267 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:134 msgid "``+``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:267 msgid "Addition / Concatenation of Arrays" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:269 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:143 msgid "``-``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:269 #, fuzzy msgid "Subtraction" msgstr "Introduzione" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:271 msgid "``<<`` ``>>``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:271 msgid "Bit Shifting" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:273 msgid "``&``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:273 msgid "Bitwise AND" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:275 msgid "``^``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:275 msgid "Bitwise XOR" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:277 msgid "``|``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:277 msgid "Bitwise OR" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:279 msgid "``<`` ``>`` ``==`` ``!=`` ``>=`` ``<=``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:279 msgid "Comparisons" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:281 msgid "``in``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:281 msgid "Content Test" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:283 msgid "``!`` ``not``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:283 msgid "Boolean NOT" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:285 msgid "``and`` ``&&``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:285 msgid "Boolean AND" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 msgid "``or`` ``||``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 msgid "Boolean OR" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 msgid "``if x else``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 msgid "Ternary if/else" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 msgid "``=`` ``+=`` ``-=`` ``*=`` ``/=`` ``%=`` ``&=`` ``|=``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 msgid "Assignment, Lowest Priority" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:295 msgid "Literals" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:298 msgid "**Literal**" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:298 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:242 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:264 msgid "**Type**" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:300 msgid "``45``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:300 msgid "Base 10 integer" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:302 msgid "``0x8F51``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:302 msgid "Base 16 (hex) integer" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:304 msgid "``3.14``, ``58.1e-10``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:304 msgid "Floating point number (real)" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:306 msgid "``\"Hello\"``, ``\"Hi\"``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:306 msgid "Strings" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:308 msgid "``\"\"\"Hello\"\"\"``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:308 msgid "Multiline string" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:310 msgid "``@\"Node/Label\"``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:310 msgid "NodePath or StringName" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:312 msgid "``$NodePath``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:312 msgid "Shorthand for ``get_node(\"NodePath\")``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:316 msgid "Comments" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:318 msgid "" "Anything from a ``#`` to the end of the line is ignored and is considered a " "comment." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:326 msgid "" "Multi-line comments can be created using \"\"\" (three quotes in a row) at " "the beginning and end of a block of text. Note that this creates a string, " "therefore, it will not be stripped away when the script is compiled." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:339 msgid "Built-in types" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:341 msgid "" "Built-in types are stack-allocated. They are passed as values. This means a " "copy is created on each assignment or when passing them as arguments to " "functions. The only exceptions are ``Array``\\ s and ``Dictionaries``, which " "are passed by reference so they are shared. (Not ``PoolArray``\\ s like " "``PoolByteArray`` though, those are passed as values too, so consider this " "when deciding which to use!)" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:348 msgid "Basic built-in types" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:350 msgid "A variable in GDScript can be assigned to several built-in types." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:353 #: ../../docs/tutorials/misc/binary_serialization_api.rst:25 msgid "null" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:355 msgid "" "``null`` is an empty data type that contains no information and can not be " "assigned any other value." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:359 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:104 #: ../../docs/tutorials/misc/binary_serialization_api.rst:27 msgid "bool" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:361 msgid "The Boolean data type can only contain ``true`` or ``false``." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:364 msgid "int" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:366 msgid "" "The integer data type can only contain integer numbers, (both negative and " "positive)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:370 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:100 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:166 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:168 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:170 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:172 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:226 #: ../../docs/tutorials/misc/binary_serialization_api.rst:31 msgid "float" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:372 msgid "Used to contain a floating point value (real numbers)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:375 msgid ":ref:`String `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:377 msgid "" "A sequence of characters in `Unicode format `_. Strings can contain the `standard C escape sequences `_. GDScript supports :ref:`format " "strings aka printf functionality `." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:383 msgid "Vector built-in types" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:386 msgid ":ref:`Vector2 `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:388 msgid "" "2D vector type containing ``x`` and ``y`` fields. Can also be accessed as " "array." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:392 msgid ":ref:`Rect2 `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:394 msgid "" "2D Rectangle type containing two vectors fields: ``position`` and ``size``. " "Alternatively contains an ``end`` field which is ``position+size``." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:398 msgid ":ref:`Vector3 `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:400 msgid "" "3D vector type containing ``x``, ``y`` and ``z`` fields. This can also be " "accessed as an array." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:404 msgid ":ref:`Transform2D `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:406 msgid "3x2 matrix used for 2D transforms." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:409 msgid ":ref:`Plane `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:411 msgid "" "3D Plane type in normalized form that contains a ``normal`` vector field and " "a ``d`` scalar distance." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:415 msgid ":ref:`Quat `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:417 msgid "" "Quaternion is a datatype used for representing a 3D rotation. It's useful " "for interpolating rotations." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:421 msgid ":ref:`AABB `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:423 msgid "" "Axis-aligned bounding box (or 3D box) contains 2 vectors fields: " "``position`` and ``size``. Alternatively contains an ``end`` field which is " "``position+size``." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:428 msgid ":ref:`Basis `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:430 msgid "" "3x3 matrix used for 3D rotation and scale. It contains 3 vector fields " "(``x``, ``y`` and ``z``) and can also be accessed as an array of 3D vectors." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:435 msgid ":ref:`Transform `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:437 msgid "" "3D Transform contains a Basis field ``basis`` and a Vector3 field ``origin``." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:441 msgid "Engine built-in types" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:444 msgid ":ref:`Color `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:446 msgid "" "Color data type contains ``r``, ``g``, ``b``, and ``a`` fields. It can also " "be accessed as ``h``, ``s``, and ``v`` for hue/saturation/value." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:450 msgid ":ref:`NodePath `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:452 msgid "" "Compiled path to a node used mainly in the scene system. It can be easily " "assigned to, and from, a String." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:456 msgid ":ref:`RID `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:458 msgid "Resource ID (RID). Servers use generic RIDs to reference opaque data." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:461 msgid ":ref:`Object `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:463 msgid "Base class for anything that is not a built-in type." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:466 msgid "Container built-in types" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:469 msgid ":ref:`Array `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:471 msgid "" "Generic sequence of arbitrary object types, including other arrays or " "dictionaries (see below). The array can resize dynamically. Arrays are " "indexed starting from index ``0``. Starting with Godot 2.1, indices may be " "negative like in Python, to count from the end." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:485 msgid "" "GDScript arrays are allocated linearly in memory for speed. Large arrays " "(more than tens of thousands of elements) may however cause memory " "fragmentation. If this is a concern, special types of arrays are available. " "These only accept a single data type. They avoid memory fragmentation and " "also use less memory but are atomic and tend to run slower than generic " "arrays. They are therefore only recommended to use for large data sets:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:492 msgid "" ":ref:`PoolByteArray `: An array of bytes (integers from " "0 to 255)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:493 msgid ":ref:`PoolIntArray `: An array of integers." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:494 msgid ":ref:`PoolRealArray `: An array of floats." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:495 msgid ":ref:`PoolStringArray `: An array of strings." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:496 msgid "" ":ref:`PoolVector2Array `: An array of :ref:`Vector2 " "` objects." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:497 msgid "" ":ref:`PoolVector3Array `: An array of :ref:`Vector3 " "` objects." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:498 msgid "" ":ref:`PoolColorArray `: An array of :ref:`Color " "` objects." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:501 msgid ":ref:`Dictionary `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:503 msgid "Associative container which contains values referenced by unique keys." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:516 msgid "" "Lua-style table syntax is also supported. Lua-style uses ``=`` instead of ``:" "`` and doesn't use quotes to mark string keys (making for slightly less to " "write). Note however that like any GDScript identifier, keys written in this " "form cannot start with a digit." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:530 msgid "" "To add a key to an existing dictionary, access it like an existing key and " "assign to it::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:539 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:228 msgid "Data" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:542 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:131 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:86 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:148 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:212 msgid "Variables" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:544 msgid "" "Variables can exist as class members or local to functions. They are created " "with the ``var`` keyword and may, optionally, be assigned a value upon " "initialization." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:555 msgid "" "Variables can optionally have a type specification. When a type is " "specified, the variable will be forced to have always that same type, and " "trying to assign an incompatible value will raise an error." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:559 msgid "" "Types are specified in the variable declaration using a ``:`` (colon) symbol " "after the variable name, followed by the type." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:567 msgid "" "If the variable is initialized within the declaration, the type can be " "inferred, so it's possible to omit the type name::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:573 msgid "" "Type inference is only possible if the assigned value has a defined type, " "otherwise it will raise an error." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:576 #: ../../docs/tutorials/shading/shading_reference/shaders.rst:39 msgid "Valid types are:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:578 msgid "Built-in types (Array, Vector2, int, String, etc.)" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:579 msgid "Engine classes (Node, Resource, Reference, etc.)" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:580 msgid "" "Constant names if they contain a script resource (``MyScript`` if you " "declared ``const MyScript = preload(\"res://my_script.gd\")``)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:581 msgid "" "Other classes in the same script, respecting scope (``InnerClass." "NestedClass`` if you declared ``class NestedClass`` inside the ``class " "InnerClass`` in the same scope)" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:582 msgid "Script classes declared with the ``class_name`` keyword." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:585 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:85 msgid "Casting" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:587 msgid "" "Values assigned to typed variables must have a compatible type. If it's " "needed to coerce a value to be of a certain type, in particular for object " "types, you can use the casting operator ``as``." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:591 msgid "" "Casting between object types results in the same object if the value is of " "the same type or a subtype of the cast type." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:599 msgid "" "If the value is not a subtype, the casting operation will result in a " "``null`` value." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:606 msgid "" "For built-in types, they will be forcibly converted if possible, otherwise " "the engine will raise an error." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:615 msgid "" "Casting is also useful to have better type-safe variables when interacting " "with tree::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:625 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:206 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:211 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:22 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:71 #: ../../docs/development/cpp/object_class.rst:94 msgid "Constants" msgstr "Costanti" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:627 msgid "" "Constants are similar to variables, but must be constants or constant " "expressions and must be assigned on initialization." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:641 msgid "" "Although the type of constants is inferred from the assigned value, it's " "also possible to add explicit type specification::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:647 msgid "Assigning a value of an incompatible type will raise an error." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:650 msgid "Enums" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:652 msgid "" "Enums are basically a shorthand for constants, and are pretty useful if you " "want to assign consecutive integers to some constant." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:655 msgid "" "If you pass a name to the enum, it will put all the keys inside a constant " "dictionary of that name." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:678 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:391 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:316 msgid "Functions" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:680 msgid "" "Functions always belong to a `class `_. The scope priority for " "variable look-up is: local → class member → global. The ``self`` variable is " "always available and is provided as an option for accessing class members, " "but is not always required (and should *not* be sent as the function's first " "argument, unlike Python)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:693 msgid "" "A function can ``return`` at any point. The default return value is ``null``." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:695 msgid "" "Functions can also have type specification for the arguments and for the " "return value. Types for arguments can be added in a similar way to " "variables::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:701 msgid "" "If a function argument has a default value, it's possible to infer the type::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:706 msgid "" "The return type of the function can be specified after the arguments list " "using the arrow token (``->``)::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:712 msgid "" "Functions that have a return type **must** return a proper value. Setting " "the type as ``void`` means the function doesn't return anything. Void " "functions can return early with the ``return`` keyword, but they can't " "return any value." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:721 msgid "" "Non-void functions must **always** return a value, so if your code has " "branching statements (such as an ``if``/``else`` construct), all the " "possible paths must have a return. E.g., if you have a ``return`` inside an " "``if`` block but not after it, the editor will raise an error because if the " "block is not executed, the function won't have a valid value to return." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:729 msgid "Referencing Functions" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:731 msgid "" "Contrary to Python, functions are *not* first class objects in GDScript. " "This means they cannot be stored in variables, passed as an argument to " "another function or be returned from other functions. This is for " "performance reasons." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:735 msgid "" "To reference a function by name at runtime, (e.g. to store it in a variable, " "or pass it to another function as an argument) one must use the ``call`` or " "``funcref`` helpers::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:748 msgid "" "Remember that default functions, like ``_init``, and most notifications, " "such as ``_enter_tree``, ``_exit_tree``, ``_process``, ``_physics_process``, " "etc. are called in all base classes automatically. So there is only a need " "to call the function explicitly when overloading them in some way." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:756 msgid "Static functions" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:758 msgid "" "A function can be declared static. When a function is static, it has no " "access to the instance member variables or ``self``. This is mainly useful " "to make libraries of helper functions:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:769 msgid "Statements and control flow" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:771 msgid "" "Statements are standard and can be assignments, function calls, control flow " "structures, etc (see below). ``;`` as a statement separator is entirely " "optional." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:776 msgid "if/else/elif" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:778 msgid "" "Simple conditions are created by using the ``if``/``else``/``elif`` syntax. " "Parenthesis around conditions are allowed, but not required. Given the " "nature of the tab-based indentation, ``elif`` can be used instead of " "``else``/``if`` to maintain a level of indentation." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:792 msgid "Short statements can be written on the same line as the condition::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:799 msgid "" "Sometimes you might want to assign a different initial value based on a " "boolean expression. In this case, ternary-if expressions come in handy::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:808 msgid "" "Simple loops are created by using ``while`` syntax. Loops can be broken " "using ``break`` or continued using ``continue``:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:819 msgid "" "To iterate through a range, such as an array or table, a *for* loop is used. " "When iterating over an array, the current array element is stored in the " "loop variable. When iterating over a dictionary, the *index* is stored in " "the loop variable." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:848 msgid "" "A ``match`` statement is used to branch execution of a program. It's the " "equivalent of the ``switch`` statement found in many other languages, but " "offers some additional features." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:851 msgid "Basic syntax:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:864 msgid "**Crash-course for people who are familiar with switch statements**:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:866 msgid "Replace ``switch`` with ``match``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:867 msgid "Remove ``case``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:868 msgid "" "Remove any ``break``\\ s. If you don't want to ``break`` by default, you can " "use ``continue`` for a fallthrough." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:869 msgid "Change ``default`` to a single underscore." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:872 msgid "**Control flow**:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:874 msgid "" "The patterns are matched from top to bottom. If a pattern matches, the " "corresponding block will be executed. After that, the execution continues " "below the ``match`` statement. If you want to have a fallthrough, you can " "use ``continue`` to stop execution in the current block and check the ones " "below it." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:878 msgid "There are 6 pattern types:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:890 msgid "constant pattern" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:881 msgid "constant primitives, like numbers and strings ::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:902 msgid "variable pattern" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:893 msgid "matches the contents of a variable/enum ::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:916 msgid "wildcard pattern" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:905 msgid "This pattern matches everything. It's written as a single underscore." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:907 msgid "" "It can be used as the equivalent of the ``default`` in a ``switch`` " "statement in other languages. ::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:929 msgid "binding pattern" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:919 msgid "" "A binding pattern introduces a new variable. Like the wildcard pattern, it " "matches everything - and also gives that value a name. It's especially " "useful in array and dictionary patterns. ::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:948 msgid "array pattern" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:932 msgid "" "matches an array. Every single element of the array pattern is a pattern " "itself, so you can nest them." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:934 msgid "" "The length of the array is tested first, it has to be the same size as the " "pattern, otherwise the pattern doesn't match." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:936 msgid "" "**Open-ended array**: An array can be bigger than the pattern by making the " "last subpattern ``..``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:938 msgid "Every subpattern has to be comma separated. ::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:973 msgid "dictionary pattern" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:951 msgid "" "Works in the same way as the array pattern. Every key has to be a constant " "pattern." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:953 msgid "" "The size of the dictionary is tested first, it has to be the same size as " "the pattern, otherwise the pattern doesn't match." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:955 msgid "" "**Open-ended dictionary**: A dictionary can be bigger than the pattern by " "making the last subpattern ``..``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:957 msgid "Every subpattern has to be comma separated." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:959 msgid "" "If you don't specify a value, then only the existence of the key is checked." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:961 msgid "A value pattern is separated from the key pattern with a ``:`` ::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:984 msgid "Multipatterns:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:976 msgid "" "You can also specify multiple patterns separated by a comma. These patterns " "aren't allowed to have any bindings in them. ::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:987 msgid "Classes" msgstr "Classi" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:989 msgid "" "By default, all script files are unnamed classes. In this case, you can only " "reference them using the file's path, using either a relative or an absolute " "path. For example, if you name a script file ``character.gd``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1004 msgid "" "Instead, you can give your class a name to register it as a new type in " "Godot's editor. For that, you use the 'class_name' keyword. You can add an " "optional comma followed by a path to an image, to use it as an icon. Your " "class will then appear with its new icon in the editor:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1019 msgid "Here's a class file example:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1038 msgid "" "Godot's class syntax is compact: it can only contain member variables or " "functions. You can use static functions, but not static member variables. In " "the same way, the engine initializes variables every time you create an " "instance, and this includes arrays and dictionaries. This is in the spirit " "of thread safety, since scripts can be initialized in separate threads " "without the user knowing." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1046 msgid "Inheritance" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1048 msgid "A class (stored as a file) can inherit from" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1050 msgid "A global class" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1051 msgid "Another class file" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1052 msgid "An inner class inside another class file." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1054 msgid "Multiple inheritance is not allowed." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1056 msgid "Inheritance uses the ``extends`` keyword:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1070 msgid "" "To check if a given instance inherits from a given class, the ``is`` keyword " "can be used:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1084 msgid "" "To call a function in a *base class* (i.e. one ``extend``-ed in your current " "class), prepend ``.`` to the function name:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1091 msgid "" "This is especially useful because functions in extending classes replace " "functions with the same name in their base classes. So if you still want to " "call them, you can use ``.`` like the ``super`` keyword in other languages:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1101 msgid "Class Constructor" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1103 msgid "" "The class constructor, called on class instantiation, is named ``_init``. As " "mentioned earlier, the constructors of parent classes are called " "automatically when inheriting a class. So there is usually no need to call " "``._init()`` explicitly." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1107 msgid "" "Unlike the call of a regular function, like in the above example with ``." "some_func``, if the constructor from the inherited class takes arguments, " "they are passed like this:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1115 msgid "This is better explained through examples. Say we have this scenario:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1137 #, fuzzy msgid "There are a few things to keep in mind here:" msgstr "Non ci sono restrizioni di utilizzo per Godot" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1139 msgid "" "if the inherited class (``State.gd``) defines a ``_init`` constructor that " "takes arguments (``e`` in this case), then the inheriting class (``Idle." "gd``) *has* to define ``_init`` as well and pass appropriate parameters to " "``_init`` from ``State.gd``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1142 msgid "" "``Idle.gd`` can have a different number of arguments than the base class " "``State.gd``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1143 msgid "" "in the example above, ``e`` passed to the ``State.gd`` constructor is the " "same ``e`` passed in to ``Idle.gd``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1145 msgid "" "if ``Idle.gd``'s ``_init`` constructor takes 0 arguments, it still needs to " "pass some value to the ``State.gd`` base class even if it does nothing. " "Which brings us to the fact that you can pass literals in the base " "constructor as well, not just variables. Eg.:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1157 msgid "Inner classes" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1159 msgid "" "A class file can contain inner classes. Inner classes are defined using the " "``class`` keyword. They are instanced using the ``ClassName.new()`` function." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1179 msgid "Classes as resources" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1181 msgid "" "Classes stored as files are treated as :ref:`resources `. " "They must be loaded from disk to access them in other classes. This is done " "using either the ``load`` or ``preload`` functions (see below). Instancing " "of a loaded class resource is done by calling the ``new`` function on the " "class object::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1199 msgid "Exports" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1201 msgid "" "Class members can be exported. This means their value gets saved along with " "the resource (e.g. the :ref:`scene `) they're attached " "to. They will also be available for editing in the property editor. " "Exporting is done by using the ``export`` keyword::" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1210 msgid "" "An exported variable must be initialized to a constant expression or have an " "export hint in the form of an argument to the export keyword (see below)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1213 msgid "" "One of the fundamental benefits of exporting member variables is to have " "them visible and editable in the editor. This way, artists and game " "designers can modify values that later influence how the program runs. For " "this, a special export syntax is provided." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1302 msgid "" "It must be noted that even if the script is not being run while at the " "editor, the exported properties are still editable (see below for \"tool\")." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1307 msgid "Exporting bit flags" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1309 msgid "" "Integers used as bit flags can store multiple ``true``/``false`` (boolean) " "values in one property. By using the export hint ``int, FLAGS``, they can be " "set from the editor:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1318 msgid "" "Restricting the flags to a certain number of named flags is also possible. " "The syntax is similar to the enumeration syntax:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1326 msgid "" "In this example, ``Fire`` has value 1, ``Water`` has value 2, ``Earth`` has " "value 4 and ``Wind`` corresponds to value 8. Usually, constants should be " "defined accordingly (e.g. ``const ELEMENT_WIND = 8`` and so on)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1331 msgid "" "Using bit flags requires some understanding of bitwise operations. If in " "doubt, boolean variables should be exported instead." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1335 msgid "Exporting arrays" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1337 msgid "" "Exporting arrays works, but with an important caveat: While regular arrays " "are created local to every class instance, exported arrays are *shared* " "between all instances. This means that editing them in one instance will " "cause them to change in all other instances. Exported arrays can have " "initializers, but they must be constant expressions." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1374 msgid "Setters/getters" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1376 msgid "" "It is often useful to know when a class' member variable changes for " "whatever reason. It may also be desired to encapsulate its access in some " "way." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1379 msgid "" "For this, GDScript provides a *setter/getter* syntax using the ``setget`` " "keyword. It is used directly after a variable definition:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1386 msgid "" "Whenever the value of ``variable`` is modified by an *external* source (i.e. " "not from local usage in the class), the *setter* function (``setterfunc`` " "above) will be called. This happens *before* the value is changed. The " "*setter* must decide what to do with the new value. Vice versa, when " "``variable`` is accessed, the *getter* function (``getterfunc`` above) must " "``return`` the desired value. Below is an example:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1403 msgid "Either of the *setter* or *getter* functions can be omitted:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1412 msgid "" "Get/Setters are especially useful when exporting variables to editor in tool " "scripts or plugins, for validating input." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1415 msgid "" "As said, *local* access will *not* trigger the setter and getter. Here is an " "illustration of this:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1430 msgid "Tool mode" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1432 msgid "" "Scripts, by default, don't run inside the editor and only the exported " "properties can be changed. In some cases, it is desired that they do run " "inside the editor (as long as they don't execute game code or manually avoid " "doing so). For this, the ``tool`` keyword exists and must be placed at the " "top of the file:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1446 msgid "" "Be cautious when freeing nodes with `queue_free()` or `free()` in a tool " "script (especially the script's owner itself). As tool scripts run their " "code in the editor, misusing them may lead to crashing the editor." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1452 msgid "Memory management" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1454 msgid "" "If a class inherits from :ref:`class_Reference`, then instances will be " "freed when no longer in use. No garbage collector exists, just reference " "counting. By default, all classes that don't define inheritance extend " "**Reference**. If this is not desired, then a class must inherit :ref:" "`class_Object` manually and must call instance.free(). To avoid reference " "cycles that can't be freed, a ``weakref`` function is provided for creating " "weak references." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1462 msgid "" "Alternatively, when not using references, the " "``is_instance_valid(instance)`` can be used to check if an object has been " "freed." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1471 msgid "" "Signals are a tool to emit messages from an object that other objects can " "react to. To create custom signals for a class, use the ``signal`` keyword." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1483 msgid "" "Signals are a `Callback `_ mechanism. They also fill the role of " "Observers, a common programming pattern. For more information, read the " "`Observer tutorial `_ in " "the Game Programming Patterns ebook." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1490 msgid "" "You can connect these signals to methods the same way you connect built-in " "signals of nodes like :ref:`class_Button` or :ref:`class_RigidBody`." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1493 msgid "" "In the example below, we connect the ``health_depleted`` signal from a " "``Character`` node to a ``Game`` node. When the ``Character`` node emits the " "signal, the game node's ``_on_Character_health_depleted`` is called:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1508 msgid "You can emit as many arguments as you want along with a signal." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1510 msgid "" "Here is an example where this is useful. Let's say we want a life bar on " "screen to react to health changes with an animation, but we want to keep the " "user interface separate from the player in our scene tree." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1514 msgid "" "In our ``Character.gd`` script, we define a ``health_changed`` signal and " "emit it with :ref:`Object.emit_signal() `, " "and from a ``Game`` node higher up our scene tree, we connect it to the " "``Lifebar`` using the :ref:`Object.connect() ` " "method:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1556 msgid "" "To use signals, your class has to extend the ``Object`` class or any type " "extending it like ``Node``, ``KinematicBody``, ``Control``..." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1559 msgid "" "In the ``Game`` node, we get both the ``Character`` and ``Lifebar`` nodes, " "then connect the character, that emits the signal, to the receiver, the " "``Lifebar`` node in this case." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1573 msgid "" "This allows the ``Lifebar`` to react to health changes without coupling it " "to the ``Character`` node." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1576 msgid "" "you can write optional argument names in parentheses after the signal's " "definition." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1584 msgid "" "These arguments show up in the editor's node dock, and Godot can use them to " "generate callback functions for you. However, you can still emit any number " "of arguments when you emit signals. So it's up to you to emit the correct " "values." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1590 msgid "" "GDScript can bind an array of values to connections between a signal and a " "method. When the signal is emitted, the callback method receives the bound " "values. These bound arguments are unique to each connection, and the values " "will stay the same." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1594 msgid "" "You can use this array of values to add extra constant information to the " "connection if the emitted signal itself doesn't give you access to all the " "data that you need." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1598 msgid "" "Building on the example above, let's say we want to display a log of the " "damage taken by each character on the screen, like ``Player1 took 22 damage." "``. The ``health_changed`` signal doesn't give us the name of the character " "that took damage. So when we connect the signal to the in-game console, we " "can add the character's name in the binds array argument:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1614 msgid "" "Our ``BattleLog`` node receives each element in the binds array as an extra " "argument:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1628 msgid "Coroutines with yield" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1630 msgid "" "GDScript offers support for `coroutines `_ via the ``yield`` built-in function. Calling ``yield()`` will " "immediately return from the current function, with the current frozen state " "of the same function as the return value. Calling ``resume`` on this " "resulting object will continue execution and return whatever the function " "returns. Once resumed, the state object becomes invalid. Here is an example:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1652 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1676 msgid "Will print:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1660 msgid "" "It is also possible to pass values between yield() and resume(), for example:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1685 msgid "Coroutines & signals" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1687 msgid "" "The real strength of using ``yield`` is when combined with signals. " "``yield`` can accept two arguments, an object and a signal. When the signal " "is received, execution will recommence. Here are some examples:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1702 msgid "" "Coroutines themselves use the ``completed`` signal when they transition into " "an invalid state, for example:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1715 msgid "" "``my_func`` will only continue execution once both buttons have been pressed." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1718 msgid "Onready keyword" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1720 msgid "" "When using nodes, it's common to desire to keep references to parts of the " "scene in a variable. As scenes are only warranted to be configured when " "entering the active scene tree, the sub-nodes can only be obtained when a " "call to Node._ready() is made." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1732 msgid "" "This can get a little cumbersome, especially when nodes and external " "references pile up. For this, GDScript has the ``onready`` keyword, that " "defers initialization of a member variable until _ready is called. It can " "replace the above code with a single line:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1742 msgid "Assert keyword" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1744 msgid "" "The ``assert`` keyword can be used to check conditions in debug builds. " "These assertions are ignored in non-debug builds." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:4 msgid "GDScript: An introduction to dynamic languages" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:9 msgid "" "This tutorial aims to be a quick reference for how to use GDScript more " "efficiently. It focuses on common cases specific to the language, but also " "covers a lot of information on dynamically typed languages." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:13 msgid "" "It's meant to be especially useful for programmers with little or no " "previous experience with dynamically typed languages." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:17 msgid "Dynamic nature" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:20 msgid "Pros & cons of dynamic typing" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:22 msgid "" "GDScript is a Dynamically Typed language. As such, its main advantages are " "that:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:25 msgid "The language is simple and easy to learn." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:26 msgid "Most code can be written and changed quickly and without hassle." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:27 msgid "Less code written means less errors & mistakes to fix." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:28 msgid "Easier to read the code (less clutter)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:29 msgid "No compilation is required to test." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:30 msgid "Runtime is tiny." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:31 msgid "Duck-typing and polymorphism by nature." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:33 msgid "While the main disadvantages are:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:35 msgid "Less performance than statically typed languages." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:36 msgid "More difficult to refactor (symbols can't be traced)" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:37 msgid "" "Some errors that would typically be detected at compile time in statically " "typed languages only appear while running the code (because expression " "parsing is more strict)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:40 msgid "" "Less flexibility for code-completion (some variable types are only known at " "run-time)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:43 msgid "" "This, translated to reality, means that Godot+GDScript are a combination " "designed to create games quickly and efficiently. For games that are very " "computationally intensive and can't benefit from the engine built-in tools " "(such as the Vector types, Physics Engine, Math library, etc), the " "possibility of using C++ is present too. This allows you to still create " "most of the game in GDScript and add small bits of C++ in the areas that " "need a performance boost." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:52 msgid "Variables & assignment" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:54 msgid "" "All variables in a dynamically typed language are \"variant\"-like. This " "means that their type is not fixed, and is only modified through assignment. " "Example:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:58 #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:80 msgid "Static:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:66 #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:94 msgid "Dynamic:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:75 msgid "As function arguments:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:77 msgid "" "Functions are of dynamic nature too, which means they can be called with " "different arguments, for example:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:107 msgid "Pointers & referencing:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:109 msgid "" "In static languages, such as C or C++ (and to some extent Java and C#), " "there is a distinction between a variable and a pointer/reference to a " "variable. The latter allows the object to be modified by other functions by " "passing a reference to the original one." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:114 msgid "" "In C# or Java, everything not a built-in type (int, float, sometimes String) " "is always a pointer or a reference. References are also garbage-collected " "automatically, which means they are erased when no longer used. Dynamically " "typed languages tend to use this memory model, too. Some Examples:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:120 msgid "C++:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:136 msgid "Java:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:154 msgid "GDScript:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:166 msgid "" "In GDScript, only base types (int, float, string and the vector types) are " "passed by value to functions (value is copied). Everything else (instances, " "arrays, dictionaries, etc) is passed as reference. Classes that inherit :ref:" "`class_Reference` (the default if nothing is specified) will be freed when " "not used, but manual memory management is allowed too if inheriting manually " "from :ref:`class_Object`." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:174 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:191 #: ../../docs/tutorials/content/procedural_geometry.rst:88 msgid "Arrays" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:176 msgid "" "Arrays in dynamically typed languages can contain many different mixed " "datatypes inside and are always dynamic (can be resized at any time). " "Compare for example arrays in statically typed languages:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:203 msgid "And in GDScript:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:212 msgid "" "In dynamically typed languages, arrays can also double as other datatypes, " "such as lists:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:222 msgid "Or unordered sets:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:231 msgid "Dictionaries" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:233 msgid "" "Dictionaries are a powerful tool in dynamically typed languages. Most " "programmers that come from statically typed languages (such as C++ or C#) " "ignore their existence and make their life unnecessarily more difficult. " "This datatype is generally not present in such languages (or only in limited " "form)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:239 msgid "" "Dictionaries can map any value to any other value with complete disregard " "for the datatype used as either key or value. Contrary to popular belief, " "they are efficient because they can be implemented with hash tables. They " "are, in fact, so efficient that some languages will go as far as " "implementing arrays as dictionaries." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:245 msgid "Example of Dictionary:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:252 msgid "" "Dictionaries are also dynamic, keys can be added or removed at any point at " "little cost:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:261 msgid "" "In most cases, two-dimensional arrays can often be implemented more easily " "with dictionaries. Here's a simple battleship game example:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:294 msgid "" "Dictionaries can also be used as data markup or quick structures. While " "GDScript's dictionaries resemble python dictionaries, it also supports Lua " "style syntax and indexing, which makes it useful for writing initial states " "and quick structs:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:318 msgid "For & while" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:320 msgid "Iterating in some statically typed languages can be quite complex:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:341 msgid "This is usually greatly simplified in dynamically typed languages:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:348 msgid "" "Container datatypes (arrays and dictionaries) are iterable. Dictionaries " "allow iterating the keys:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:356 msgid "Iterating with indices is also possible:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:363 msgid "The range() function can take 3 arguments:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:371 msgid "Some statically typed programming language examples:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:381 msgid "Translate to:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:394 msgid "And backwards looping is done through a negative counter:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:400 msgid "Becomes:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:408 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:384 msgid "While" msgstr "While" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:410 msgid "while() loops are the same everywhere:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:421 msgid "Custom iterators" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:422 msgid "" "You can create custom iterators in case the default ones don't quite meet " "your needs by overriding the Variant class's ``_iter_init``, ``_iter_next``, " "and ``_iter_get`` functions in your script. An example implementation of a " "forward iterator follows:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:454 msgid "And it can be used like any other iterator:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:462 msgid "" "Make sure to reset the state of the iterator in ``_iter_init``, otherwise " "nested for-loops that use custom iterators will not work as expected." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:466 msgid "Duck typing" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:468 msgid "" "One of the most difficult concepts to grasp when moving from a statically " "typed language to a dynamic one is duck typing. Duck typing makes overall " "code design much simpler and straightforward to write, but it's not obvious " "how it works." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:473 msgid "" "As an example, imagine a situation where a big rock is falling down a " "tunnel, smashing everything on its way. The code for the rock, in a " "statically typed language would be something like:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:484 msgid "" "This way, everything that can be smashed by a rock would have to inherit " "Smashable. If a character, enemy, piece of furniture, small rock were all " "smashable, they would need to inherit from the class Smashable, possibly " "requiring multiple inheritance. If multiple inheritance was undesired, then " "they would have to inherit a common class like Entity. Yet, it would not be " "very elegant to add a virtual method ``smash()`` to Entity only if a few of " "them can be smashed." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:492 msgid "" "With dynamically typed languages, this is not a problem. Duck typing makes " "sure you only have to define a ``smash()`` function where required and " "that's it. No need to consider inheritance, base classes, etc." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:501 msgid "" "And that's it. If the object that hit the big rock has a smash() method, it " "will be called. No need for inheritance or polymorphism. Dynamically typed " "languages only care about the instance having the desired method or member, " "not what it inherits or the class type. The definition of Duck Typing should " "make this clearer:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:507 msgid "" "*\"When I see a bird that walks like a duck and swims like a duck and quacks " "like a duck, I call that bird a duck\"*" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:510 msgid "In this case, it translates to:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:512 msgid "" "*\"If the object can be smashed, don't care what it is, just smash it.\"*" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:514 msgid "Yes, we should call it Hulk typing instead." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:516 msgid "" "It's possible that the object being hit doesn't have a smash() function. " "Some dynamically typed languages simply ignore a method call when it doesn't " "exist (like Objective C), but GDScript is stricter, so checking if the " "function exists is desirable:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:527 msgid "" "Then, simply define that method and anything the rock touches can be smashed." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:4 msgid "GDScript style guide" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:9 msgid "" "This styleguide lists conventions to write elegant GDScript. The goal is to " "encourage writing clean, readable code and promote consistency across " "projects, discussions, and tutorials. Hopefully, this will also encourage " "development of auto-formatting tools." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:14 msgid "" "Since GDScript is close to Python, this guide is inspired by Python's `PEP 8 " "`__ programming styleguide." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:18 msgid "" "Godot's built-in script editor uses a lot of these conventions by default. " "Let it help you." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:22 msgid "Code structure" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:25 msgid "Indentation" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:27 msgid "Indent type: Tabs *(editor default)*" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:29 msgid "Indent size: 4 *(editor default)*" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:31 msgid "Each indent level should be one greater than the block containing it." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:33 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:53 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:96 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:120 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:140 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:222 msgid "**Good**:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:40 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:61 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:106 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:127 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:150 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:230 msgid "**Bad**:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:50 msgid "" "Use 2 indent levels to distinguish continuation lines from regular code " "blocks." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:70 msgid "Blank lines" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:72 msgid "Surround functions and class definitions with two blank lines:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:87 msgid "Use one blank line inside functions to separate logical sections." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:90 msgid "One statement per line" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:92 msgid "" "Never combine multiple statements on a single line. No, C programmers, not " "with a single line conditional statement (except with the ternary operator)!" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:115 msgid "Avoid unnecessary parentheses" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:117 msgid "" "Avoid parentheses in expressions and conditional statements. Unless " "necessary for order of operations, they only reduce readability." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:135 msgid "Whitespace" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:137 msgid "" "Always use one space around operators and after commas. Avoid extra spaces " "in dictionary references and function calls, or to create \"columns.\"" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:160 msgid "**NEVER**:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:169 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:191 msgid "Naming conventions" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:171 msgid "" "These naming conventions follow the Godot Engine style. Breaking these will " "make your code clash with the built-in naming conventions, which is ugly." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:176 #, fuzzy msgid "Classes and nodes" msgstr "Scene e nodi" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:178 msgid "Use PascalCase: ``extends KinematicBody``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:180 msgid "Also when loading a class into a constant or variable:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:187 msgid "Functions and variables" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:189 msgid "Use snake\\_case: ``get_node()``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:191 msgid "" "Prepend a single underscore (\\_) to virtual methods (functions the user " "must override), private functions, and private variables: ``func _ready()``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:198 msgid "Use past tense:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:208 msgid "" "Use CONSTANT\\_CASE, all caps, with an underscore (\\_) to separate words: " "``const MAX_SPEED = 200``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:212 msgid "Static typing" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:214 msgid "" "Since Godot 3.1, GDScript supports :ref:`optional static " "typing`." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:217 msgid "Type hints" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:219 msgid "" "Place the colon right after the variable's name, without a space, and let " "the GDScript compiler infer the variable's type when possible." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:238 msgid "" "When you let the compiler infer the type hint, write the colon and equal " "signs together: ``:=``." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:244 msgid "" "Add a space on either sides of the return type arrow when defining functions." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:4 msgid "Static typing in GDScript" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:6 #: ../../docs/tutorials/physics/physics_introduction.rst:16 msgid "In this guide, you will learn:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:8 msgid "**How to use types in GDScript**" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:9 msgid "That **static types can help you avoid bugs**" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:11 msgid "" "Where and how you use this new language feature is entirely up to you: you " "can use it only in some sensitive GDScript files, use it everywhere, or " "write code like you always did!" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:15 msgid "" "Static types can be used on variables, constants, functions, parameters, and " "return types." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:20 msgid "Typed GDScript is available since Godot 3.1." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:23 msgid "A brief look at static typing" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:25 msgid "" "With typed GDScript, Godot can detect even more errors as you write code! It " "gives you and your teammates more information as you’re working, as the " "arguments’ types show up when you call a method." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:29 msgid "" "Imagine you’re programming an inventory system. You code an ``Item`` node, " "then an ``Inventory``. To add items to the inventory, the people who work " "with your code should always pass an ``Item`` to the ``Inventory.add`` " "method. With types, you can enforce this:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:48 msgid "" "Another significant advantage of typed GDScript is the new **warning " "system**. From version 3.1, Godot gives you warnings about your code as you " "write it: the engine identifies sections of your code that may lead to " "issues at runtime, but lets you decide whether or not you want to leave the " "code as it is. More on that in a moment." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:54 msgid "" "Static types also give you better code completion options. Below, you can " "see the difference between a dynamic and a static typed completion options " "for a class called ``PlayerController``." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:58 msgid "" "You’ve probably stored a node in a variable before, and typed a dot to be " "left with no autocomplete suggestions:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:64 msgid "" "This is due to dynamic code. Godot cannot know what node or value type " "you’re passing to the function. If you write the type explicitly however, " "you will get all public methods and variables from the node:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:71 msgid "" "In the future, typed GDScript will also increase code performance: Just-In-" "Time compilation and other compiler improvements are already on the roadmap!" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:75 msgid "" "Overall, typed programming gives you a more structured experience. It helps " "prevent errors and improves the self-documenting aspect of your scripts. " "This is especially helpful when you’re working in a team or on a long-term " "project: studies have shown that developers spend most of their time reading " "other people’s code, or scripts they wrote in the past and forgot about. The " "clearer and the more structured the code, the faster it is to understand, " "the faster you can move forward." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:84 msgid "How to use static typing" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:86 msgid "" "To define the type of a variable or a constant, write a colon after the " "variable’s name, followed by its type. E.g. ``var health: int``. This forces " "the variable's type to always stay the same:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:95 msgid "" "Godot will try to infer types if you write a colon, but you omit the type:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:104 msgid "Currently you can use three types of… types:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:106 msgid ":ref:`Built-in `" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:107 msgid "" "Core classes and nodes (``Object``, ``Node``, ``Area2D``, ``Camera2D``, etc.)" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:109 msgid "" "Your own, custom classes. Look at the new :ref:`class_name " "` feature to register types in the " "editor." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:114 msgid "" "You don't need to write type hints for constants, as Godot sets it " "automatically from the assigned value. But you can still do so to make the " "intent of your code clearer." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:117 msgid "Custom variable types" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:119 msgid "" "You can use any class, including your custom classes, as types. There are " "two ways to use them in scripts. The first method is to preload the script " "you want to use as a type in a constant:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:128 msgid "" "The second method is to use the ``class_name`` keyword when you create. For " "the example above, your Rifle.gd would look like this:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:136 msgid "" "If you use ``class_name``, Godot registers the Rifle type globally in the " "editor, and you can use it anywhere, without having to preload it into a " "constant:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:145 msgid "Variable casting" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:147 msgid "" "Type casting is a key concept in typed languages. Casting is the conversion " "of a value from one type to another." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:150 msgid "" "Imagine an Enemy in your game, that ``extends Area2D``. You want it to " "collide with the Player, a ``KinematicBody2D`` with a script called " "``PlayerController`` attached to it. You use the ``on_body_entered`` signal " "to detect the collision. With typed code, the body you detect is going to be " "a generic ``PhysicsBody2D``, and not your ``PlayerController`` on the " "``_on_body_entered`` callback." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:157 msgid "" "You can check if this ``PhysicsBody2D`` is your Player with the ``as`` " "casting keyword, and using the colon ``:`` again to force the variable to " "use this type. This forces the variable to stick to the ``PlayerController`` " "type:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:170 msgid "" "As we’re dealing with a custom type, if the ``body`` doesn’t extend " "``PlayerController``, the ``player``\\ variable will be set to ``null``. We " "can use this to check if the body is the player or not. We will also get " "full autocompletion on the player variable thanks to that cast." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:177 msgid "" "If you try to cast with a built-in type and it fails, Godot will throw an " "error." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:180 msgid "Safe lines" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:182 msgid "" "You can also use casting to ensure safe lines. Safe lines are a new tool in " "Godot 3.1 to tell you when ambiguous lines of code are type-safe. As you can " "mix and match typed and dynamic code, at times, Godot doesn’t have enough " "information to know if an instruction will trigger an error or not at " "runtime." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:188 msgid "" "This happens when you get a child node. Let’s take a timer for example: with " "dynamic code, you can get the node with ``$Timer``. GDScript supports `duck-" "typing `__, so even if your " "timer is of type ``Timer``, it is also a ``Node`` and an ``Object``, two " "classes it extends. With dynamic GDScript, you also don’t care about the " "node’s type as long as it has the methods you need to call." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:196 msgid "" "You can use casting to tell Godot the type you expect when you get a node: " "``($Timer as Timer)``, ``($Player as KinematicBody2D)``, etc. Godot will " "ensure the type works and if so, the line number will turn green at the left " "of the script editor." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:204 msgid "Safe vs Unsafe Line" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:208 msgid "" "You can turn off safe lines or change their color in the editor settings." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:211 msgid "Define the return type of a function with the arrow ->" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:213 msgid "" "To define the return type of a function, write a dash and a right angle " "bracket ``->`` after its declaration, followed by the return type:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:221 msgid "" "The type ``void`` means the function does not return anything. You can use " "any type, as with variables:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:230 msgid "You can also use your own nodes as return types:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:245 msgid "Typed or dynamic: stick to one style" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:247 msgid "" "Typed GDScript and dynamic GDScript can coexist in the same project. But I " "recommended to stick to either style for consistency in your codebase, and " "for your peers. It’s easier for everyone to work together if you follow the " "same guidelines, and faster to read and understand other people’s code." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:253 msgid "" "Typed code takes a little more writing, but you get the benefits we " "discussed above. Here’s an example of the same, empty script, in a dynamic " "style:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:265 msgid "And with static typing:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:275 msgid "" "As you can see, you can also use types with the engine’s virtual methods. " "Signal callbacks, like any methods, can also use types. Here’s a " "``body_entered`` signal in a dynamic style:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:284 msgid "And the same callback, with type hints:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:291 msgid "" "You’re free to replace, e.g. the ``CollisionObject2D``, with your own type, " "to cast parameters automatically:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:301 msgid "" "The ``bullet`` variable could hold any ``CollisionObject2D`` here, but we " "make sure it is our ``Bullet``, a node we created for our project. If it’s " "anything else, like an ``Area2D``, or any node that doesn’t extend " "``Bullet``, the ``bullet`` variable will be ``null``." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:307 msgid "Warning system" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:309 msgid "" "The warning system complements typed GDScript. It’s here to help you avoid " "mistakes that are hard to spot during development, and that may lead to " "runtime errors." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:313 msgid "" "You can configure warnings in the Project Settings under a new section " "called ``GDScript``:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:319 msgid "warning system project settings" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:321 msgid "" "You can find a list of warnings for the active GDScript file in the script " "editor’s status bar. The example below has 3 warnings:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:327 #, fuzzy msgid "warning system example" msgstr "Instanziazione per esempi" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:329 msgid "" "To ignore specific warnings in one file, insert a special comment of the " "form ``#warning-ignore:warning-id``, or click on the ignore link to the " "right of the warning’s description. Godot will add a comment above the " "corresponding line and the code won’t trigger the corresponding warning " "anymore:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:338 #, fuzzy msgid "warning system ignore example" msgstr "Instanziazione per esempi" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:340 msgid "" "Warnings won’t prevent the game from running, but you can turn them into " "errors if you’d like. This way your game won’t compile unless you fix all " "warnings. Head to the ``GDScript`` section of the Project Settings to turn " "on this option. Here’s the same file as the previous example with warnings " "as errors turned on:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:349 msgid "warnings as errors" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:352 msgid "Cases where you can’t specify types" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:354 msgid "" "To wrap up this introduction, let’s cover a few cases where you can’t use " "type hints. All the examples below **will trigger errors**." msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:357 msgid "You can’t use Enums as types:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:364 msgid "" "You can’t specify the type of individual members in an array. This will give " "you an error:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:371 msgid "" "You can’t force the assignment of types in a ``for`` loop, as each element " "the ``for`` keyword loops over already has a different type. So you " "**cannot** write:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:381 msgid "Two scripts can’t depend on each other in a cyclic fashion:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:400 #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:124 #: ../../docs/tutorials/2d/2d_movement.rst:347 #: ../../docs/tutorials/2d/2d_sprite_animation.rst:149 msgid "Summary" msgstr "" #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:402 msgid "" "Typed GDScript is a powerful tool. Available as of version 3.1 of Godot, it " "helps you write more structured code, avoid common errors, and create " "scalable systems. In the future, static types will also bring you a nice " "performance boost thanks to upcoming compiler optimizations." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:4 msgid "GDScript format strings" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:6 msgid "" "GDScript offers a feature called *format strings*, which allows reusing text " "templates to succinctly create different but similar strings." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:9 msgid "" "Format strings are just like normal strings, except they contain certain " "placeholder character-sequences. These placeholders can then easily be " "replaced by parameters handed to the format string." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:13 msgid "" "As an example, with ``%s`` as a placeholder, the format string ``\"Hello %s, " "how are you?`` can easily be changed to ``\"Hello World, how are you?\"``. " "Notice the placeholder is in the middle of the string; modifying it without " "format strings could be cumbersome." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:20 msgid "Usage in GDScript" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:22 msgid "Examine this concrete GDScript example:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:35 msgid "" "Placeholders always start with a ``%``, but the next character or " "characters, the *format specifier*, determines how the given value is " "converted to a string." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:39 msgid "" "The ``%s`` seen in the example above is the simplest placeholder and works " "for most use cases: it converts the value by the same method by which an " "implicit String conversion or ``str()`` would convert it. Strings remain " "unchanged, Booleans turn into either ``\"True\"`` or ``\"False\"``, an " "integral or real number becomes a decimal, other types usually return their " "data in a human-readable string." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:46 msgid "" "There is also another way to format text in GDScript, namely the ``String." "format()`` method. It replaces all occurrences of a key in the string with " "the corresponding value. The method can handle arrays or dictionaries for " "the key/value pairs." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:50 msgid "" "Arrays can be used as key, index, or mixed style (see below examples). Order " "only matters when the index or mixed style of Array is used." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:53 msgid "A quick example in GDScript:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:66 msgid "" "There are other `format specifiers`_, but they are only applicable when " "using the ``%`` operator." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:71 msgid "Multiple placeholders" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:73 msgid "" "Format strings may contain multiple placeholders. In such a case, the values " "are handed in the form of an array, one value per placeholder (unless using " "a format specifier with ``*``, see `dynamic padding`_):" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:85 msgid "" "Note the values are inserted in order. Remember all placeholders must be " "replaced at once, so there must be an appropriate number of values." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:90 msgid "Format specifiers" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:92 msgid "" "There are format specifiers other than ``s`` that can be used in " "placeholders. They consist of one or more characters. Some of them work by " "themselves like ``s``, some appear before other characters, some only work " "with certain values or characters." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:99 msgid "Placeholder types" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:101 msgid "" "One and only one of these must always appear as the last character in a " "format specifier. Apart from ``s``, these require certain types of " "parameters." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:105 msgid "``s``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:105 msgid "" "**Simple** conversion to String by the same method as implicit String " "conversion." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:108 msgid "``c``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:108 msgid "" "A single **Unicode character**. Expects an unsigned 8-bit integer (0-255) " "for a code point or a single-character string." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:111 msgid "``d``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:111 msgid "" "A **decimal integral** number. Expects an integral or real number (will be " "floored)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:114 msgid "``o``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:114 msgid "" "An **octal integral** number. Expects an integral or real number (will be " "floored)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:117 msgid "``x``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:117 msgid "" "A **hexadecimal integral** number with **lower-case** letters. Expects an " "integral or real number (will be floored)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:120 msgid "``X``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:120 msgid "" "A **hexadecimal integral** number with **upper-case** letters. Expects an " "integral or real number (will be floored)." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:123 msgid "``f``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:123 msgid "A **decimal real** number. Expects an integral or real number." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:128 msgid "Placeholder modifiers" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:130 msgid "" "These characters appear before the above. Some of them work only under " "certain conditions." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:134 msgid "In number specifiers, **show + sign** if positive." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:136 #: ../../docs/tutorials/misc/binary_serialization_api.rst:94 #: ../../docs/tutorials/misc/binary_serialization_api.rst:103 #: ../../docs/tutorials/misc/binary_serialization_api.rst:121 #: ../../docs/tutorials/misc/binary_serialization_api.rst:312 #: ../../docs/tutorials/misc/binary_serialization_api.rst:332 #: ../../docs/tutorials/misc/binary_serialization_api.rst:334 #: ../../docs/tutorials/misc/binary_serialization_api.rst:342 #: ../../docs/tutorials/misc/binary_serialization_api.rst:361 #: ../../docs/tutorials/misc/binary_serialization_api.rst:373 #: ../../docs/tutorials/misc/binary_serialization_api.rst:385 #: ../../docs/tutorials/misc/binary_serialization_api.rst:398 #: ../../docs/tutorials/misc/binary_serialization_api.rst:400 #: ../../docs/tutorials/misc/binary_serialization_api.rst:409 #: ../../docs/tutorials/misc/binary_serialization_api.rst:411 #: ../../docs/tutorials/misc/binary_serialization_api.rst:420 #: ../../docs/tutorials/misc/binary_serialization_api.rst:428 #: ../../docs/tutorials/misc/binary_serialization_api.rst:441 #: ../../docs/tutorials/misc/binary_serialization_api.rst:454 #: ../../docs/tutorials/misc/binary_serialization_api.rst:469 msgid "Integer" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:136 msgid "" "Set **padding**. Padded with spaces or with zeroes if integer starts with " "``0`` in an integer placeholder. When used after ``.``, see ``.``." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:140 msgid "``.``" msgstr "``.``" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:140 msgid "" "Before ``f``, set **precision** to 0 decimal places. Can be followed up with " "numbers to change. Padded with zeroes." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:143 msgid "**Pad to the right** rather than the left." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:145 msgid "``*``" msgstr "``*``" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:145 msgid "" "**Dynamic padding**, expect additional integral parameter to set padding or " "precision after ``.``, see `dynamic padding`_." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:151 msgid "Padding" msgstr "Padding" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:153 msgid "" "The ``.`` (*dot*), ``*`` (*asterisk*), ``-`` (*minus sign*) and digit (``0``-" "``9``) characters are used for padding. This allows printing several values " "aligned vertically as if in a column, provided a fixed-width font is used." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:158 msgid "To pad a string to a minimum length, add an integer to the specifier:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:166 msgid "" "If the integer starts with ``0``, integral values are padded with zeroes " "instead of white space:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:174 msgid "" "Precision can be specified for real numbers by adding a ``.`` (*dot*) with " "an integer following it. With no integer after ``.``, a precision of 0 is " "used, rounding to integral value. The integer to use for padding must appear " "before the dot." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:186 msgid "" "The ``-`` character will cause padding to the right rather than the left, " "useful for right text alignment:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:197 msgid "Dynamic padding" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:199 msgid "" "By using the ``*`` (*asterisk*) character, the padding or precision can be " "set without modifying the format string. It is used in place of an integer " "in the format specifier. The values for padding and precision are then " "passed when formatting:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:212 msgid "" "It is still possible to pad with zeroes in integer placeholders by adding " "``0`` before ``*``:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:222 msgid "Escape sequence" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:224 msgid "" "To insert a literal ``%`` character into a format string, it must be escaped " "to avoid reading it as a placeholder. This is done by doubling the character:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:235 msgid "Format method examples" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:237 msgid "" "The following are some examples of how to use the various invocations of the " "``String.format`` method." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:242 msgid "**Style**" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:242 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:264 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:277 msgid "**Example**" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:242 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:264 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:277 msgid "**Result**" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:244 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:246 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:248 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:277 msgid "Dictionary" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:244 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:250 msgid "key" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:244 msgid "" "``\"Hi, {name} v{version}!\".format({\"name\":\"Godette\", \"version\":" "\"3.0\"})``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:244 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:246 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:248 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:250 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:252 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:254 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:256 msgid "Hi, Godette v3.0!" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:246 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:252 msgid "index" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:246 msgid "``\"Hi, {0} v{1}!\".format({\"0\":\"Godette\", \"1\":\"3.0\"})``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:248 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:254 msgid "mix" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:248 msgid "" "``\"Hi, {0} v{version}!\".format({\"0\":\"Godette\", \"version\":\"3.0\"})``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:250 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:252 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:254 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:256 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:256 msgid "Array" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:250 msgid "" "``\"Hi, {name} v{version}!\".format([[\"version\",\"3.0\"], [\"name\"," "\"Godette\"]])``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:252 msgid "``\"Hi, {0} v{1}!\".format([\"Godette\",\"3.0\"])``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:254 msgid "``\"Hi, {name} v{0}!\".format([3.0, [\"name\",\"Godette\"]])``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:256 msgid "no index" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:256 msgid "``\"Hi, {} v{}!\".format([\"Godette\", 3.0], \"{}\")``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:259 msgid "" "Placeholders can also be customized when using ``String.format``, here's " "some examples of that functionality." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:266 msgid "Infix (default)" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:266 msgid "``\"Hi, {0} v{1}\".format([\"Godette\", \"3.0\"], \"{_}\")``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:266 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:268 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:270 msgid "Hi, Godette v3.0" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:268 msgid "Postfix" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:268 msgid "``\"Hi, 0% v1%\".format([\"Godette\", \"3.0\"], \"_%\")``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:270 msgid "Prefix" msgstr "Prefisso" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:270 msgid "``\"Hi, %0 v%1\".format([\"Godette\", \"3.0\"], \"%_\")``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:273 msgid "" "Combining both the ``String.format`` method and the ``%`` operator could be " "useful, as ``String.format`` does not have a way to manipulate the " "representation of numbers." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:279 msgid "" "``\"Hi, {0} v{version}\".format({0:\"Godette\", \"version\":\"%0.2f\" % " "3.114})``" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:279 msgid "Hi, Godette v3.11" msgstr "" #: ../../docs/getting_started/scripting/visual_script/what_is_visual_scripting.rst:4 msgid "What is Visual Scripting" msgstr "" #: ../../docs/getting_started/scripting/visual_script/what_is_visual_scripting.rst:6 msgid "" "Visual Scripting is a tool designed to make the entry barrier to programming " "much lower. As code is more visual, it needs less abstract thinking to be " "understood. Any artist, animator, game designer, etc. can look at it and " "quickly grasp the flow of logic." msgstr "" #: ../../docs/getting_started/scripting/visual_script/what_is_visual_scripting.rst:11 msgid "" "The reason it does not make existing programming obsolete is, simply, that " "it does not scale as well. It takes considerably more time to create code " "with it, and it's often more difficult to modify than just writing a few " "characters." msgstr "" #: ../../docs/getting_started/scripting/visual_script/what_is_visual_scripting.rst:15 msgid "" "With the misunderstanding cleared up, the question that remains is what are " "the practical uses for Visual Scripting." msgstr "" #: ../../docs/getting_started/scripting/visual_script/what_is_visual_scripting.rst:18 msgid "The most common use cases are as follows:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/what_is_visual_scripting.rst:20 msgid "" "Game development beginners who want to learn an engine but have no " "programming experience yet." msgstr "" #: ../../docs/getting_started/scripting/visual_script/what_is_visual_scripting.rst:21 msgid "" "Artists and Game Designers who have no experience in programming and want to " "create quick prototypes or simple games." msgstr "" #: ../../docs/getting_started/scripting/visual_script/what_is_visual_scripting.rst:22 msgid "" "Programmers working in a team that want to make part of the game logic " "available to Artists or Game Designers in order to offload some of their " "work." msgstr "" #: ../../docs/getting_started/scripting/visual_script/what_is_visual_scripting.rst:24 msgid "" "These scenarios are far more common than one might think, so this is why " "Godot has added this feature." msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:4 msgid "Getting started with Visual Scripting" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:6 msgid "" "As with everything in Godot, we prioritize a good experience over copying or " "integrating third party solutions which might not fit nicely in the current " "workflow. This led us to write our own version of how we believe this " "feature would work best with the engine." msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:10 msgid "" "In Godot, a Visual Script fits smoothly together with regular scripts in the " "Editor tab" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:15 msgid "" "In fact, Visual Scripting integrates so well to Godot that it's hard to " "believe it was added only in version 3.0. This is because, when editing, the " "rest of Godot panels and docks act like a palette from where you can drag " "and drop all sorts of information to the script canvas:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:23 #, fuzzy msgid "Creating a script" msgstr "Creare un nuovo progetto" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:25 msgid "" "Creating scripts works the same as with other scripting languages: Select " "any node in the scene and push the \"New Script\" button at the top right " "corner of the Scene Tree dock:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:31 msgid "" "Once it opens, the script type \"Visual Script\" must be selected from the " "drop down list. The script extension must be \".vs\" (for Visual Script!)." msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:37 msgid "" "Finally, the Script Editor will open, allowing you to start editing the " "visual script:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:43 msgid "Adding a function" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:45 msgid "" "Unlike other visual scripting implementations, Visual Scripting in Godot is " "heavily based on functions. This happens because it uses the same interface " "to communicate with the engine as other scripting engines. In Godot, the " "scripting interface is universal and all implementations conform to it." msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:49 msgid "A function is an individual canvas with nodes connected." msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:51 msgid "" "A single script can contain many functions, each of which will have a canvas " "of its own, allowing for more organization." msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:53 msgid "There are three main ways to add functions in a script:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:56 msgid "Overriding a virtual function" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:58 msgid "" "Most types of nodes and other types of objects in Godot contain virtual " "functions. These are functions that will be called (run your code) when " "something happens and can be looked up in the reference. Virtual functions " "are listed when pressing the \"Override\" icon in the member panel:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:65 msgid "" "In the following example, a function will be executed when the node is " "loaded and added to the running scene. For this, the _ready() virtual method " "will be overridden:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:71 msgid "Finally, a canvas appears for this function, showing the override:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:76 msgid "" "As some functions expect you to return a value, they will also add a return " "node where such value is supposed to be provided:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:83 msgid "Connecting a signal to a function" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:85 msgid "" "Nodes in a tree emit signals when something happens. Godot uses signals for " "all sorts of things. A typical example would be a button that emits a " "\"pressed\" signal when actually pressed." msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:88 msgid "" "For this, a node must be selected and the Node tab opened. This will allow " "inspecting the signals. Once they are displayed, connect the \"pressed\" " "signal:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:94 msgid "" "This will open the connection dialog. In this dialog, you must select the " "node where the signal will be connected to, and the function that will " "receive the signal:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:100 msgid "" "If this is done right, a new function will be created in our script and a " "signal will automatically be connected to it:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:107 msgid "Creating a function manually" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:109 msgid "" "The last way to create functions is to do it manually. In general, this is " "not as common unless you really need it. Custom functions work when another " "(or the same) script calls them manually. The main use cases for this are " "breaking a larger function up into several manageable chunks and reusing " "your visual code." msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:113 msgid "" "To create a function manually, push the big \"Plus\" button, and a new " "function will be added with a default name:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:119 msgid "" "This will add a new function, which can be renamed by simply double clicking " "its name:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:125 msgid "" "To edit the \"arguments\" this function can get (the values you pass to it " "when you call this function), simply click the Function node and check the " "inspector:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/getting_started.rst:131 msgid "More on that will be explained later in this document." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:4 msgid "Nodes and terminology" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:6 msgid "" "Before continuing, it must be noted that the *Node* terminology needs to be " "used with care. When referring to *Visual Script Nodes* (or generally " "*Nodes*) this text will refer to the little boxes you connect with lines, " "which are part of a graph. When referring to *Scene Nodes*, it is implied " "that the elements that make up a Scene are being referred, which are part of " "a tree. Their naming is similar but their function is different. When " "referring to *Node* here, it will be implied that a *Visual Script Node* is " "referred to unless indicated otherwise." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:15 #, fuzzy msgid "Node properties" msgstr "Ha delle proprietá modificabili." #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:17 msgid "" "Like in most visual scripting implementations, each node has editable " "properties. In Godot, though, we try to avoid bloating the nodes with " "editable controls for the sake of readability." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:20 msgid "" "Nodes still display the required information as text, but editing is done " "via the *Inspector*. To edit them, select any node and edit its properties " "in the *Inspector*." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:25 msgid "Ports and connections" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:27 msgid "" "Programming in Godot Visual Scripting is done via *Nodes* and *Port " "Connections* inside each function." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:31 msgid "Ports" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:33 msgid "" "Nodes in Godot Visual Scripting have *Ports*. These are endpoints that " "appear to the left and right of nodes and which can be used to make " "*Connections*: There are two types of *Ports*: *Sequence* and *Data*." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:40 msgid "" "*Sequence Ports* indicate the order in which operations are executed. " "Typically when a *Node* is done processing, it will go to the next node from " "one of the ports at the right. If nothing is connected, the function may " "end, or another output *Sequence Port* might be tried (this depends on the " "node). Thanks to this, you can follow the logic flow within a function by " "following the white lines. Not every *Node* has *Sequence Ports*. In fact, " "most do not." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:46 msgid "" "*Data Ports* ports contain typed values. Types can be any regular Godot " "types, such as a boolean, an integer, a string, a Vector3, an array, any " "Object or Scene Node, etc. A *Data Port* on the right side of a node is " "considered an output, while, a port on the left side is an input. Connecting " "them allows information to flow to the next node." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:51 msgid "" "Not all *Data Port* types are compatible and will allow connections, though. " "Pay special attention to colors and icons, as each type has a different " "representation:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:58 #: ../../docs/development/file_formats/tscn.rst:27 msgid "Connections" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:60 msgid "" "Connecting is a relatively simple process. Drag an *Output Port* towards an " "*Input Port*." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:65 msgid "" "Disconnecting takes a bit more practice. Disconnecting in *Data Ports* " "happens by dragging the *Input* away, while for *Sequence Ports*, this " "happens by dragging the *Output* away." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:71 msgid "" "This may seem strange at first, but it happens because *Data Ports* are 1:N " "(A single output port can connect to many inputs), while *Sequence Ports* " "are N:1 (Many sequence outputs can be connected to a single input)." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:75 msgid "" "Connecting to empty space (drag to connect but unpress over empty space) is " "also context sensitive, it will supply a list of most common operations. For " "sequences, it will be conditional nodes:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:81 msgid "While, for data, a contextual set/get/call menu will open:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:87 msgid "Adding nodes" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:89 msgid "" "Finally! We got to the fun part! But, before explaining in more detail what " "each type of node does, let's take a short look at how nodes are most " "commonly added and dealt with." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:94 msgid "Accessing scene nodes" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:96 msgid "" "One of the most common tasks is accessing Scene Tree Nodes (again, not to " "mistake with *Visual Script Nodes*). Dragging from the Scene Tree and " "dropping into the canvas will ask you to *call a method* (sometimes referred " "to as *member function*) on this node." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:102 msgid "" "While accessing properties is desired in most cases (more on that below), " "sometimes *calling methods* can be useful too. Methods execute specific " "actions on objects. In the above case, the mouse pointer can be warped to a " "position in local coordinates to the control. Another common use case is " "queueing a node for deletion, which is done with the *queue_free* method." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:109 msgid "" "Care must be taken that this only works if the scene being edited contains " "your *Visual Script* in one of the nodes! Otherwise, a warning will be shown." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:113 msgid "Accessing scene node properties" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:115 msgid "" "This is the most common way to edit *Scene Nodes* in Visual Scripting. " "Select a *Scene Node* from the *Scene Tree*, go to the Inspector, find *the " "Name* of the property you want to edit (hint, *not* the value!) and drag it " "to the canvas:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:120 msgid "" "The result is that this value can be changed from your script by writing to " "a *Data Port*." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:122 msgid "" "If instead reading this value is desired, drag the node again but hold the " "*Control* key (or Command on Mac). This will create a getter:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:127 msgid "In this case, the value can be read from a *Data Port*." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:133 msgid "" "Variables are memory containers local to the script which can hold a value. " "This value can be read from any of the functions of the script or from other " "scripts via the method described in the previous step." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:135 msgid "" "To add a Variable, push the \"+\" button on the *Variables* section of the " "Members panel. Double-click the new variable to rename it:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:140 msgid "Right-clicking the variable allows you to configure its properties:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:147 msgid "" "As it can be seen above, the type and initial value of the variable can be " "changed, as well as some property hints. Ticking the \"Export\" option makes " "the variable visible in the Inspector when selecting the node. This also " "makes it available to other scripts via the method described in the previous " "step." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:153 msgid "" "To use the variable in the script, simply drag it to the canvas to create a " "getter:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:158 msgid "Likewise, hold *Control* (*Command* on Mac) to drop a setter:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:166 msgid "" "It is also possible to create your own signals in a script and use them. For " "this, do the same steps you did for variables in the previous step, except " "for *Signals*:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:171 msgid "" "A signal can also be edited via the right-click menu to customize its " "arguments:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:176 msgid "" "The signal you have created will appear in the Inspector, along with the " "built-in node signals. This allows you to connect it from another script " "from another *Scene Node*:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:181 msgid "Finally, to emit the signal, simply drag it to the canvas:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:186 msgid "" "Remember that emitting a signal is a sequenced operation, so it must come " "from a Sequence port." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:190 msgid "Adding more nodes" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:192 msgid "" "Now that the basics are covered, let's discuss the large amount of utility " "nodes available for your canvas! Below the member panel, exists the list of " "all available node types:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:198 msgid "Ctrl-F (Command-F on Mac) allows you to search the list." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:200 msgid "" "Any of them can be dragged to the scene. Unlike nodes (e.g. dragging a " "property from the Inspector sets the context to the node being edited " "automatically), these are added without any \"contextual\" information, so " "this has to be done manually." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:206 msgid "" "Remember that you can check the class reference for what each node does, as " "they are documented there. That mentioned, a brief overview of node types " "follows:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:213 msgid "" "Constant nodes are nodes that provide values that, while not changing over " "time, can be useful as reference values. Most of the time they are integer " "or float." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:219 msgid "" "The first one is \"Constant\", which allows you to select any value of any " "type as constant, from an integer (42) to a String (\"Hello!\"). In general, " "this node is not used that often because of default input values in *Data " "Ports*, but it's good to know it exists." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:221 msgid "" "The second is the GlobalConstant node, which contains a long list of " "constants for global types in Godot. In there you can find some useful " "constants to refer to key names, joystick or mouse buttons, etc." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:224 msgid "" "The third one is MathConstant, which provides typical mathematical " "constants, such as PI, E, etc." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:230 msgid "" "Data nodes deal with all sorts of access to information. Any information in " "Godot is accessed via these nodes, so they are some of the most important " "ones to use and pretty diverse." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:236 msgid "" "There are many types of nodes of interest here, so a short attempt to " "describe them will follow:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:240 msgid "Action" msgstr "Azione" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:242 msgid "" "Action nodes are vital when dealing with input from a device. You can read " "more about actions in the (@TODO ACTION TUTE LINK). In the following example " "below, the control is moved to the right when the \"move_right\" action is " "pressed." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:249 msgid "Engine Singleton" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:251 msgid "" "Engine singletons are global interfaces (meaning they can be accessed " "without a reference; unlike Scene Nodes, they are always available). They " "have several purposes, but in general, they are useful for low-level access " "or OS-related access." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:257 msgid "" "Remember that dragging a connection to empty space will help you call " "functions or set/get properties on these:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:263 msgid "Local Variables" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:265 msgid "" "These are nodes you can use as temporary storage for your graphs. Make sure " "they all have the same name and type when using them and they will reference " "the same piece of memory." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:270 msgid "" "As it can be seen above, there are two nodes available: A simple getter, and " "a sequenced getter (setting requires a sequence port)." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:274 msgid "Scene Node" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:276 msgid "" "This is just a reference to a node in the tree, but it's easier to use this " "node by dragging the actual node from the scene tree to the canvas (this " "will create it and configure it)." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:281 msgid "Self" msgstr "Se stesso" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:283 msgid "" "In some rare occasions, it may be desired to pass this Scene Node as " "argument. It can be used to call functions and set/get properties, or drag " "nodes (or event the node itself that has the script) from the Scene Tree to " "the canvas for this." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:290 msgid "" "This node is similar to the Singleton node because it references the " "SceneTree, which contains the active scene. SceneTree, however, only works " "when the node is sitting in the scene and active, otherwise accessing it " "will return an error." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:294 msgid "" "SceneTree allows for many low-level things, like setting stretch options, " "calling groups, make timers, or even load another scene. It's a good class " "to get familiar with." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:299 msgid "Preload" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:301 msgid "" "This does the same function as preload() in GDScript. It maintains this " "resource loaded and ready to use. Rather than instancing the node, it's " "simpler to drag the desired resource from the filesystem dock to the canvas." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:306 msgid "Resource Path" msgstr "Percorso Risorsa" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:308 msgid "" "This node is a simple helper to get a string with a path to a resource you " "can pick. It's useful in functions that load things from disk." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:313 msgid "Comment" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:315 msgid "" "A Comment node works as a node you can resize to put around other nodes. It " "will not try to get focus or be brought to top when selecting it. It can " "also be used to write text on it." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:322 msgid "Flow Control" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:324 msgid "" "Flow control nodes allow the execution to take different branches, usually " "depending on a given condition." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:331 msgid "Condition" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:333 msgid "" "This is a simple node that checks a bool port. If true, it will go via the " "\"true\" sequence port. If false, the second. After going for either of " "them, it goes via the \"done\" port. Leaving sequence ports disconnected is " "fine if not all of them are used." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:339 msgid "Iterator" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:341 msgid "" "Some data types in Godot (ie, arrays, dictionaries) are iterable. This means " "that a bit of code can run for each element that it has." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:344 msgid "" "The Iterator node goes through all elements and, for each of them, it goes " "via the \"each\" sequence port, making the element available in the \"elem\" " "data port." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:347 msgid "When done, it goes via the \"exit\" sequence port." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:351 msgid "Return" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:353 msgid "" "Some functions can return values. In general for virtual ones, Godot will " "add the Return node for you. A return node forces the function to end." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:358 msgid "Sequence" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:360 msgid "" "This node is useful mostly for organizing your graph. It calls its sequence " "ports in order." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:364 msgid "TypeCast" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:366 msgid "" "This is a useful and commonly used node. You can use it to cast arguments or " "other objects to the type you desire. Afterwards, you can even drag the " "object output to get full completion." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:372 msgid "" "It is also possible to cast to a script, which will allow complete script " "properties and functions:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:378 msgid "Switch" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:380 msgid "" "The Switch node is similar to the Condition node, but it matches many values " "at the same time." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:386 msgid "" "This is a more primitive form of iteration. \"repeat\" sequence output will " "be called as long as the condition in the \"cond\" data port is met." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:393 msgid "" "Functions are simple helpers, most of the time deterministic. They take some " "arguments as input and return an output. They are almost never sequenced." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:398 msgid "Built-In" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:400 msgid "" "There is a list of built-in helpers. The list is almost identical to the one " "from :ref:`GDScript`. Most of them are mathematical " "functions, but others can be useful helpers. Make sure to take a look at the " "list at some point." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:404 msgid "By Type" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:406 msgid "" "Those are the methods available to basic types. For example, if you want a " "dot-product, you can search for \"dot\" instead of the Vector3 category. In " "most cases just search the list of nodes, it should be faster." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:411 msgid "Call" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:413 msgid "" "This is the generic calling node. It is rarely used directly but by dragging " "to empty space on an already configured node." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:417 msgid "Constructors" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:419 msgid "" "These are all the functions needed to create Godot basic datatypes. For " "example, If you need to create a Vector3 out of 3 floats, a constructor must " "be used." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:425 msgid "Destructor" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:427 msgid "" "This is the opposite to Constructor, it allows to separate any basic type " "(ie, Vector3) into its sub-elements." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:433 msgid "Emit Signal" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:435 msgid "" "Emits signals from any object. In general it's not that useful, as dragging " "a signal to the canvas works better." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:439 msgid "Get/Set" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:441 msgid "" "Generic Getter/Setter node. Dragging properties from the Inspector works " "better, as they appear properly configured on drop." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:445 msgid "Wait" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:447 msgid "" "The Wait nodes will suspend execution of the function until something " "happens (many frames can pass until resuming, in fact). Default nodes allow " "you to wait for a frame to pass, a fixed frame or a given amount of time " "until execution is resumed." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:452 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:298 msgid "Yield" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:454 msgid "" "This node completely suspends the execution of the script, and it will make " "the function return a value that can be used to resume execution." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:458 msgid "Yield Signal" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:460 msgid "Same as Yield, but will wait until a given signal is emitted." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:464 msgid "Index" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:466 msgid "" "Generic indexing operator, not often used but it's good that it exists just " "in case." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:472 msgid "" "These are mostly generic operators, such as addition, multiplication, " "comparison, etc. By default, these mostly accept any datatype (and will " "throw an error at run-time if the types fed do not match those expected by " "the operator). It is always recommended to set the right type for operators " "to catch errors faster and make the graph easier to read." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:481 msgid "Expression Node" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:483 msgid "" "Among the operators, the *Expression* node is the most powerful. If well " "used, it allows you to enormously simplify visual scripts that are math or " "logic heavy. Type any expression on it and it will be executed in real-time." msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:486 msgid "Expression nodes can:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:488 msgid "" "Perform math and logic expressions based on custom inputs (eg: \"a*5+b\", " "where a and b are custom inputs):" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:493 msgid "Access local variables or properties:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:498 msgid "" "Use most of the existing built-in functions that are available to GDScript, " "such as sin(),cos(),print(), as well as constructors, such as Vector3(x,y,z)," "Rect2(..), etc.:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:503 msgid "Call API functions:" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:508 msgid "" "Use sequenced mode, which makes more sense in case of respecting the " "processing order:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/index.rst:2 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:30 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:59 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:188 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:203 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:215 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:226 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:234 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:249 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:261 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:321 #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:115 msgid "C#" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:6 msgid "" "C# support is a new feature available since Godot 3.0. As such, you may " "still run into some issues, or find spots where the documentation could be " "improved. Please report issues with C# in Godot on the `engine GitHub page " "`_, and any documentation " "issues on the `documentation GitHub page `_." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:14 msgid "" "This page provides a brief introduction to C#, both what it is and how to " "use it in Godot. Afterwards, you may want to look at :ref:`how to use " "specific features `, read about the :ref:`differences " "between the C# and the GDScript API ` and (re)visit " "the :ref:`Scripting section ` of the step-by-step tutorial." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:21 msgid "" "C# is a high-level programming language developed by Microsoft. In Godot, it " "is implemented with the Mono 5.x .NET framework, including full support for " "C# 7.0. Mono is an open source implementation of Microsoft's .NET Framework " "based on the ECMA standards for C# and the Common Language Runtime. A good " "starting point for checking its capabilities is the `Compatibility `_ page in the Mono " "documentation." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:29 msgid "" "This is **not** a full-scale tutorial on the C# language as a whole. If you " "aren't already familiar with its syntax or features, see the `Microsoft C# " "guide `_ or look for a " "suitable introduction elsewhere." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:36 msgid "Setting up C# for Godot" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:41 msgid "" "Download and install the latest version of `Visual Studio `_ (*not* Visual Studio Code), which " "contains utilities required to use C# in Godot. If you don't plan on using " "the Visual Studio IDE, you can download just the `Visual Studio Build Tools " "`_ instead. Make sure you at least have the .NET " "Framework 4.5 targeting pack installed, you can get it using any of the " "installers mentioned above inside the \"Individual components\" tab." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:51 msgid "macOS and Linux" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:53 msgid "" "Download and install the latest version of the `Mono SDK `_. As of Godot 3.1 beta 3, the version number doesn't " "matter since Godot bundles its own Mono 5.18 installation. We only need the " "Mono installation for NuGet and MSBuild which are required to use C# in " "Godot." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:59 msgid "" "To download Mono on macOS, use the \"Stable Channel\" link from the `Mono " "Downloads Page `_. The Visual Studio " "channel is an earlier version of Mono and will not work." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:65 #, fuzzy msgid "Additional notes" msgstr "Modificare le istanze" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:67 msgid "" "Your Godot version must have Mono support enabled, so make sure to download " "the **Mono version** of Godot. If you are building Godot from source, make " "sure to follow the steps to enable Mono support in your build as outlined in " "the :ref:`doc_compiling_with_mono` page." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:73 msgid "" "In summary, you must have installed Visual Studio or Mono (depending on your " "operating system) **and** the Mono-enabled version of Godot." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:77 msgid "Configuring an external editor" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:79 msgid "" "C# support in Godot's script editor is minimal. Consider using an external " "IDE or editor, such as `Visual Studio Code `_ or MonoDevelop. These provide autocompletion, debugging, and other " "useful features for C#. To select an external editor in Godot, click on " "**Editor → Editor Settings** and scroll down to **Mono**. Under **Mono**, " "click on **Editor**, and select your external editor of choice." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:87 msgid "" "If you are using Visual Studio Code, ensure you download and install the `C# " "extension `_ to enable features like syntax highlighting and IntelliSense." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:92 msgid "Creating a C# script" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:94 msgid "" "After you successfully set up C# for Godot, you should see the following " "option when selecting ``Attach script`` in the context menu of a node in " "your scene:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:99 msgid "" "Note that while some specifics change, most concepts work the same when " "using C# for scripting. If you're new to Godot, you may want to follow the " "tutorials on :ref:`doc_scripting` at this point. While some places in the " "documentation still lack C# examples, most concepts can be transferred " "easily from GDScript." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:106 msgid "Project setup and workflow" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:108 msgid "" "When you create the first C# script, Godot initializes the C# project files " "for your Godot project. This includes generating a C# solution (``.sln``) " "and a project file (``.csproj``), as well as some utility files and folders " "(``.mono`` and ``Properties/AssemblyInfo.cs``). All of these but ``.mono`` " "are important and should be committed to your version control system. ``." "mono`` can be safely added to the ignore list of your VCS. When " "troubleshooting, it can sometimes help to delete the ``.mono`` folder and " "let it regenerate." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:117 msgid "" "Note that currently, there are some issues where Godot and the C# project " "don't stay in sync; if you delete, rename or move a C# script, the change " "may not be reflected in the C# project file. In cases like this, you will " "have to edit the C# project file manually." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:122 msgid "" "For example, if you created a script (e.g. ``Test.cs``) and delete it in " "Godot, compilation will fail because the missing file is still expected to " "be there by the C# project file. For now, you can simply open up the ``." "csproj`` file and look for the ``ItemGroup``, there should be a line " "included like the following:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:136 msgid "" "Simply remove that line and your project should build correctly again. Same " "for renaming and moving things, simply rename and move them in the project " "file if needed." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:141 #: ../../docs/tutorials/io/background_loading.rst:87 #: ../../docs/tutorials/misc/pausing_games.rst:80 msgid "Example" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:143 msgid "" "Here's a blank C# script with some comments to demonstrate how it works." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:170 msgid "" "As you can see, functions normally in global scope in GDScript like Godot's " "``print`` function are available in the ``GD`` class which is part of the " "``Godot`` namespace. For a list of methods in the ``GD`` class, see the " "class reference pages for :ref:`@GDScript ` and :ref:" "`@GlobalScope `." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:177 msgid "" "Keep in mind that the class you wish to attach to your node should have the " "same name as the ``.cs`` file. Otherwise, you will get the following error " "and won't be able to run the scene: *\"Cannot find class XXX for script " "res://XXX.cs\"*" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:183 msgid "General differences between C# and GDScript" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:185 msgid "" "The C# API uses ``PascalCase`` instead of ``snake_case`` in GDScript/C++. " "Where possible, fields and getters/setters have been converted to " "properties. In general, the C# Godot API strives to be as idiomatic as is " "reasonably possible." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:189 msgid "For more information, see the :ref:`doc_c_sharp_differences` page." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:192 msgid "Current gotchas and known issues" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:194 msgid "" "As C# support is quite new in Godot, there are some growing pains and things " "that need to be ironed out. Below is a list of the most important issues you " "should be aware of when diving into C# in Godot, but if in doubt, also take " "a look over the official `issue tracker for Mono issues `_." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:200 msgid "" "As explained above, the C# project isn't always kept in sync automatically " "when things are deleted, renamed or moved in Godot (`#12917 `_)." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:203 msgid "" "Writing editor plugins is possible, but it is currently quite convoluted." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:204 msgid "" "State is currently not saved and restored when hot-reloading, with the " "exception of exported variables." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:206 msgid "" "Exporting Mono projects is only supported for desktop platforms (Linux, " "Windows and macOS). Android, iOS, HTML5 and UWP are not currently supported " "(`#20267 `_, `#20268 " "`_ `#20270 `_ `#20271 `_)." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:212 msgid "" "Attached C# scripts should refer to a class that has a class name that " "matches the file name." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:216 msgid "Performance of C# in Godot" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:218 msgid "" "According to some preliminary `benchmarks `_, the performance of C# in Godot — while generally in the same " "order of magnitude — is roughly **~4×** that of GDScript in some naive " "cases. C++ is still a little faster; the specifics are going to vary " "according to your use case. GDScript is likely fast enough for most general " "scripting workloads. C# is faster, but requires some expensive marshalling " "when talking to Godot." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:226 msgid "Using NuGet packages in Godot" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:228 msgid "" "`NuGet `_ packages can be installed and used with " "Godot, as with any C# project. Many IDEs are able to add packages directly. " "They can also be added manually by adding the package reference in the ``." "csproj`` file located in the project root:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:243 msgid "" "Whenever packages are added or modified, run ``nuget restore`` in the root " "of the project directory. To ensure that NuGet packages will be available " "for msbuild to use, run:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:4 msgid "Features" msgstr "Funzionalità" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:6 msgid "" "This page provides an overview of the commonly used features of both C# and " "Godot and how they are used together." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:10 msgid "Type conversion and casting" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:12 msgid "" "C# is a statically typed language. Therefore, you can't do the following:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:19 msgid "" "The method ``GetNode()`` returns a ``Node`` instance. You must explicitly " "convert it to the desired derived type, ``Sprite`` in this case." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:22 msgid "For this, you have various options in C#." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:24 msgid "**Casting and Type Checking**" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:26 msgid "" "Throws ``InvalidCastException`` if the returned node cannot be cast to " "Sprite. You would use it instead of the ``as`` operator if you are pretty " "sure it won't fail." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:34 msgid "**Using the AS operator**" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:36 msgid "" "The ``as`` operator returns null if the node cannot be cast to Sprite, and " "for that reason, it cannot be used with value types." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:45 msgid "**Using the generic methods**" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:47 msgid "" "Generic methods are also provided to make this type conversion transparent." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:49 msgid "" "``GetNode()`` casts the node before returning it. It will throw an " "``InvalidCastException`` if the node cannot be cast to the desired type." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:56 msgid "" "``GetNodeOrNull()`` uses the ``as`` operator and will return ``null`` if " "the node cannot be cast to the desired type." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:64 msgid "**Type checking using the IS operator**" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:66 msgid "" "To check if the node can be cast to Sprite, you can use the ``is`` operator. " "The ``is`` operator returns false if the node cannot be cast to Sprite, " "otherwise it returns true." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:77 msgid "" "For more advanced type checking, you can look into `Pattern Matching " "`_." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:82 #, fuzzy msgid "C# signals" msgstr "Segnali in C#" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:84 msgid "" "For a complete C# example, see the **Handling a signal** section in the step " "by step :ref:`doc_scripting` tutorial." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:86 msgid "" "Declaring a signal in C# is done with the ``[Signal]`` attribute on a " "delegate." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:96 msgid "" "These signals can then be connected either in the editor or from code with " "``Connect``." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:116 msgid "Emitting signals is done with the ``EmitSignal`` method." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:126 msgid "" "Notice that you can always reference a signal name with the ``nameof`` " "keyword (applied on the delegate itself)." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:128 msgid "" "It is possible to bind values when establishing a connection by passing an " "object array." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:148 msgid "" "Signals support parameters and bound values of all the `built-in types " "`_ and Classes derived from :ref:`Godot.Object " "`. Consequently, any ``Node`` or ``Reference`` will be " "compatible automatically, but custom data objects will need to extend from " "`Godot.Object` or one of its subclasses." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:160 msgid "" "Finally, signals can be created by calling ``AddUserSignal``, but be aware " "that it should be executed before any use of said signals (with ``Connect`` " "or ``EmitSignal``)." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:4 msgid "API differences to GDScript" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:6 msgid "This is a (incomplete) list of API differences between C# and GDScript." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:9 msgid "General differences" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:11 msgid "" "As explained in the :ref:`doc_c_sharp`, C# generally uses ``PascalCase`` " "instead of the ``snake_case`` used in GDScript and C++." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:15 #: ../../docs/tutorials/threads/thread_safe_apis.rst:15 msgid "Global scope" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:17 msgid "" "Global functions and some constants had to be moved to classes, since C# " "does not allow declaring them in namespaces. Most global constants were " "moved to their own enums." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:24 msgid "" "Global constants were moved to their own enums. For example, ``ERR_*`` " "constants were moved to the ``Error`` enum." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:27 msgid "Special cases:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:32 msgid "``SPKEY``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:32 msgid "``GD.SpKey``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:33 msgid "``TYPE_*``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:33 msgid "``Variant.Type`` enum" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:34 msgid "``OP_*``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:34 msgid "``Variant.Operator`` enum" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:38 #, fuzzy msgid "Math functions" msgstr "Continua..." #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:40 msgid "" "Math global functions, like ``abs``, ``acos``, ``asin``, ``atan`` and " "``atan2``, are located under ``Mathf`` as ``Abs``, ``Acos``, ``Asin``, " "``Atan`` and ``Atan2``. The ``PI`` constant can be found as ``Mathf.Pi``." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:45 #, fuzzy msgid "Random functions" msgstr "Continua..." #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:47 msgid "" "Random global functions, like ``rand_range`` and ``rand_seed``, are located " "under ``GD``. Example: ``GD.RandRange`` and ``GD.RandSeed``." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:51 #, fuzzy msgid "Other functions" msgstr "Continua..." #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:53 msgid "" "Many other global functions like ``print`` and ``var2str`` are located under " "``GD``. Example: ``GD.Print`` and ``GD.Var2Str``." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:56 msgid "Exceptions:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:61 msgid "``weakref(obj)``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:61 msgid "``Object.WeakRef(obj)``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:62 msgid "``is_instance_valid(obj)``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:62 msgid "``Object.IsInstanceValid(obj)``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:66 msgid "Tips" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:68 msgid "" "Sometimes it can be useful to use the ``using static`` directive. This " "directive allows to access the members and nested types of a class without " "specifying the class name." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:71 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:90 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:121 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:132 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:144 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:305 #: ../../docs/tutorials/math/matrices_and_transforms.rst:467 #: ../../docs/tutorials/io/background_loading.rst:268 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:90 #: ../../docs/tutorials/platform/services_for_ios.rst:205 #: ../../docs/tutorials/platform/services_for_ios.rst:252 #: ../../docs/community/contributing/code_style_guidelines.rst:150 msgid "Example:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:86 msgid "Export keyword" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:88 msgid "" "Use the ``[Export]`` attribute instead of the GDScript ``export`` keyword." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:103 msgid "Signal keyword" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:105 msgid "" "Use the ``[Signal]`` attribute to declare a signal instead of the GDScript " "``signal`` keyword. This attribute should be used on a `delegate`, whose " "name signature will be used to define the signal." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:113 msgid "See also: :ref:`c_sharp_signals`" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:116 msgid "Singletons" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:118 msgid "" "Singletons are available as static classes rather than using the singleton " "pattern. This is to make code less verbose than it would be with an " "``Instance`` property." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:127 msgid "" "However, in some very rare cases this is not enough. For example, you may " "want to access a member from the base class ``Godot.Object``, like " "``Connect``. For such use cases we provide a static property named " "``Singleton`` that returns the singleton instance. The type of this instance " "is ``Godot.Object``." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:139 #: ../../docs/tutorials/plugins/editor/import_plugins.rst:244 #: ../../docs/tutorials/plugins/editor/import_plugins.rst:250 #: ../../docs/development/cpp/core_types.rst:174 msgid "String" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:141 msgid "" "Use ``System.String`` (``string``). Most of Godot's String methods are " "provided by the ``StringExtensions`` class as extension methods." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:151 #, fuzzy msgid "There are a few differences, though:" msgstr "Non ci sono restrizioni di utilizzo per Godot" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:153 msgid "" "``erase``: Strings are immutable in C#, so we cannot modify the string " "passed to the extension method. For this reason, ``Erase`` was added as an " "extension method of ``StringBuilder`` instead of string. Alternatively, you " "can use ``string.Remove``." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:157 msgid "" "``IsSubsequenceOf``/``IsSubsequenceOfi``: An additional method is provided, " "which is an overload of ``IsSubsequenceOf``, allowing you to explicitly " "specify case sensitivity:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:168 msgid "" "``Match``/``Matchn``/``ExprMatch``: An additional method is provided besides " "``Match`` and ``Matchn``, which allows you to explicitly specify case " "sensitivity:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:179 #: ../../docs/tutorials/math/matrices_and_transforms.rst:126 #: ../../docs/tutorials/math/matrices_and_transforms.rst:614 msgid "Basis" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:181 msgid "" "Structs cannot have parameterless constructors in C#. Therefore, ``new " "Basis()`` initializes all primitive members to their default value. Use " "``Basis.Identity`` for the equivalent of ``Basis()`` in GDScript and C++." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:185 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:231 msgid "The following method was converted to a property with a different name:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:190 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:206 msgid "``get_scale()``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:190 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:206 msgid "``Scale``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:194 #: ../../docs/tutorials/math/matrices_and_transforms.rst:157 msgid "Transform2D" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:196 msgid "" "Structs cannot have parameterless constructors in C#. Therefore, ``new " "Transform2D()`` initializes all primitive members to their default value. " "Please use ``Transform2D.Identity`` for the equivalent of ``Transform2D()`` " "in GDScript and C++." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:200 msgid "" "The following methods were converted to properties with their respective " "names changed:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:205 msgid "``get_rotation()``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:205 msgid "``Rotation``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:210 msgid "Plane" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:212 msgid "" "The following method was converted to a property with a *slightly* different " "name:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:217 msgid "``center()``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:217 msgid "``Center``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:221 msgid "Rect2" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:223 msgid "" "The following field was converted to a property with a *slightly* different " "name:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:228 msgid "``end``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:228 msgid "``End``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:236 msgid "``get_area()``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:236 msgid "``Area``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:240 msgid "Quat" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:242 msgid "" "Structs cannot have parameterless constructors in C#. Therefore, ``new " "Quat()`` initializes all primitive members to their default value. Please " "use ``Quat.Identity`` for the equivalent of ``Quat()`` in GDScript and C++." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:246 msgid "" "The following methods were converted to a property with a different name:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:251 msgid "``length()``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:251 msgid "``Length``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:252 msgid "``length_squared()``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:252 msgid "``LengthSquared``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:258 msgid "" "*This is temporary. PoolArrays will need their own types to be used the way " "they are meant to.*" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:263 msgid "``Array``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:263 msgid "``Godot.Collections.Array``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:264 msgid "``PoolIntArray``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:264 msgid "``int[]``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:265 msgid "``PoolByteArray``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:265 msgid "``byte[]``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:266 msgid "``PoolFloatArray``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:266 msgid "``float[]``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:267 msgid "``PoolStringArray``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:267 msgid "``String[]``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:268 msgid "``PoolColorArray``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:268 msgid "``Color[]``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:269 msgid "``PoolVector2Array``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:269 msgid "``Vector2[]``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:270 msgid "``PoolVector3Array``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:270 msgid "``Vector3[]``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:273 msgid "" "``Godot.Collections.Array`` is a type-safe wrapper around ``Godot." "Collections.Array``. Use the ``Godot.Collections.Array(Godot.Collections." "Array)`` constructor to create one." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:279 msgid "Use ``Godot.Collections.Dictionary``." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:281 msgid "" "``Godot.Collections.Dictionary`` is a type-safe wrapper around ``Godot." "Collections.Dictionary``. Use the ``Godot.Collections.Dictionary(Godot." "Collections.Dictionary)`` constructor to create one." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:285 msgid "Variant" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:287 msgid "``System.Object`` (``object``) is used instead of ``Variant``." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:290 msgid "Communicating with other scripting languages" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:292 msgid "" "The methods ``object Object.Call(string method, params object[] args)``, " "``object Object.Get(string field)`` and ``object Object.Set(string field, " "object value)`` are provided to communicate with instances of other " "scripting languages via the Variant API." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:300 msgid "" "Something similar to GDScript's ``yield`` with a single parameter can be " "achieved with C#'s `yield keyword `_." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:303 msgid "" "The equivalent of yield on signal can be achieved with async/await and " "``Godot.Object.ToSignal``." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:313 msgid "Other differences" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:315 msgid "" "``preload``, as it works in GDScript, is not available in C#. Use ``GD." "Load`` or ``ResourceLoader.Load`` instead." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:318 msgid "Other differences:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:323 msgid "``Color8``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:323 msgid "``Color.Color8``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:324 msgid "``is_inf``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:324 msgid "``float.IsInfinity``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:325 msgid "``is_nan``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:325 msgid "``float.IsNaN``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:326 msgid "``dict2inst``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:326 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:327 msgid "TODO" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:327 msgid "``inst2dict``" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:4 msgid "C# style guide" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:6 msgid "" "Having well-defined and consistent coding conventions is important for every " "project, and Godot is no exception to this rule." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:9 msgid "" "This page contains a coding style guide, which is followed by developers of " "and contributors to Godot itself. As such, it is mainly intended for those " "who want to contribute to the project, but since the conventions and " "guidelines mentioned in this article are those most widely adopted by the " "users of the language, we encourage you to do the same, especially if you do " "not have such a guide yet." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:14 msgid "" "This article is by no means an exhaustive guide on how to follow the " "standard coding conventions or best practices. If you feel unsure of an " "aspect which is not covered here, please refer to more comprehensive " "documentation, such as `C# Coding Conventions `_ or " "`Framework Design Guidelines `_." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:21 msgid "Language specification" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:23 msgid "" "Godot currently uses **C# version 7.0** in its engine and example source " "code. So, before we move to a newer version, care must be taken to avoid " "mixing language features only available in C# 7.1 or later." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:27 msgid "" "For detailed information on C# features in different versions, please see " "`What's New in C# `_." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:31 #, fuzzy msgid "Formatting conventions" msgstr "Creare contenuti" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:33 msgid "Use line feed (**LF**) characters to break lines, not CRLF or CR." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:34 msgid "" "Use **UTF-8** encoding without a `byte order mark `_." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:35 msgid "" "Use **4 spaces** instead of tabs for indentation (which is referred to as " "\"soft tabs\")." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:36 msgid "" "Consider breaking a line into several if it's longer than 100 characters." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:39 msgid "Line breaks and blank lines" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:41 msgid "" "For a general indentation rule, follow `the \"Allman Style\" `_ which recommends " "placing the brace associated with a control statement on the next line, " "indented to the same level:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:58 msgid "However, you may choose to omit line breaks inside brackets:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:60 msgid "For simple property accessors." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:61 msgid "For simple object, array, or collection initializers." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:62 msgid "For abstract auto property, indexer, or event declarations." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:84 msgid "Insert a blank line:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:86 msgid "After a list of ``using`` statements." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:87 msgid "Between method, properties, and inner type declarations." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:88 msgid "At the end of each file." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:90 msgid "" "Field and constant declarations can be grouped together according to " "relevance. In that case, consider inserting a blank line between the groups " "for easier reading." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:93 msgid "Avoid inserting a blank line:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:95 msgid "After ``{``, the opening brace." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:96 msgid "Before ``}``, the closing brace." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:97 msgid "After a comment block or a single-line comment." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:98 msgid "Adjacent to another blank line." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:136 #, fuzzy msgid "Using spaces" msgstr "Modificare le istanze" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:138 msgid "Insert a space:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:140 msgid "Around a binary and tertiary operator." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:141 msgid "" "Between an opening parenthesis and ``if``, ``for``, ``foreach``, ``catch``, " "``while``, ``lock`` or ``using`` keywords." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:142 msgid "Before and within a single line accessor block." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:143 msgid "Between accessors in a single line accessor block." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:144 msgid "After a comma which is not at the end of a line." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:145 msgid "After a semicolon in a ``for`` statement." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:146 msgid "After a colon in a single line ``case`` statement." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:147 msgid "Around a colon in a type declaration." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:148 msgid "Around a lambda arrow." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:149 msgid "" "After a single-line comment symbol (``//``), and before it if used at the " "end of a line." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:151 msgid "Do not use a space:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:153 msgid "After type cast parentheses." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:154 msgid "Within single line initializer braces." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:156 msgid "" "The following example shows a proper use of spaces, according to some of the " "above mentioned conventions:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:193 msgid "" "Use **PascalCase** for all namespaces, type names and member level " "identifiers (i.e. methods, properties, constants, events), except for " "private fields:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:214 msgid "" "Use **camelCase** for all other identifiers (i.e. local variables, method " "arguments), and use an underscore (``_``) as a prefix for private fields " "(but not for methods or properties, as explained above):" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:228 msgid "" "There's an exception with acronyms which consist of two letters, like " "``UI``, which should be written in uppercase letters where PascalCase would " "be expected, and in lowercase letters otherwise." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:231 msgid "" "Note that ``id`` is **not** an acronym, so it should be treated as a normal " "identifier:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:242 msgid "" "It is generally discouraged to use a type name as a prefix of an identifier, " "like ``string strText`` or ``float fPower``, for example. An exception is " "made, however, for interfaces, which **should**, in fact, have an uppercase " "letter ``I`` prefixed to their names, like ``IInventoryHolder`` or " "``IDamageable``." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:246 msgid "" "Lastly, consider choosing descriptive names and do not try to shorten them " "too much if it affects readability." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:249 msgid "" "For instance, if you want to write code to find a nearby enemy and hit it " "with a weapon, prefer:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:255 msgid "Rather than:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:262 msgid "Implicitly typed local variables" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:264 msgid "" "Consider using implicitly typing (``var``) for declaration of a local " "variable, but do so **only when the type is evident** from the right side of " "the assignment:" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:294 msgid "Other considerations" msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:296 msgid "Use explicit access modifiers." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:297 msgid "Use properties instead of non-private fields." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:298 msgid "" "Use modifiers in this order: ``public``/``protected``/``private``/" "``internal``/``virtual``/``override``/``abstract``/``new``/``static``/" "``readonly``." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:300 msgid "" "Avoid using fully-qualified names or ``this.`` prefix for members when it's " "not necessary." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:301 msgid "Remove unused ``using`` statements and unnecessary parentheses." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:302 msgid "Consider omitting the default initial value for a type." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:303 msgid "" "Consider using null-conditional operators or type initializers to make the " "code more compact." msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:304 msgid "" "Use safe cast when there is a possibility of the value being a different " "type, and use direct cast otherwise." msgstr "" #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:8 msgid "" "Since Godot has no restrictions on project structure or filesystem usage, " "organizing files when learning the engine can seem challenging. This " "tutorial suggests a workflow which should be a good starting point. We will " "also cover using version control with Godot." msgstr "" #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:14 msgid "Organization" msgstr "" #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:16 msgid "" "Godot is scene-based in nature, and uses the filesystem as-is, without " "metadata or an asset database." msgstr "" #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:19 msgid "" "Unlike other engines, many resources are contained within the scene itself, " "so the amount of files in the filesystem is considerably lower." msgstr "" #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:22 msgid "" "Considering that, the most common approach is to group assets as close to " "scenes as possible; when a project grows, it makes it more maintainable." msgstr "" #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:26 msgid "" "As an example, one can usually place into a single folder their basic " "assets, such as sprite images, 3D model meshes, materials, and music, etc. " "They can then use a separate folder to store built levels that use them." msgstr "" #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:47 msgid "Importing" msgstr "" #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:49 msgid "" "Godot versions prior to 3.0 did the import process from files outside the " "project. While this can be useful in large projects, it resulted in an " "organization hassle for most developers." msgstr "" #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:53 msgid "" "Because of this, assets are now transparently imported from within the " "project folder." msgstr "" #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:56 msgid "" "If a folder shouldn't be imported into Godot, an exception can be made with " "a .gdignore file." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/index.rst:2 msgid "Blender ESCN exporter" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/index.rst:4 msgid "" "This chapter relates to the Blender plugin called \"Godot Blender Exporter" "\", which can be downloaded here: https://github.com/godotengine/godot-" "blender-exporter" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/index.rst:7 msgid "" "This plugin can be used to export Blender scenes in a Godot-specific scene " "format called ESCN, which is similar to TSCN (text format) but will be " "imported as binary SCN for performance." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/index.rst:12 msgid "Details on exporting" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/index.rst:27 msgid "Disabling specific objects" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/index.rst:29 msgid "" "Sometimes you don't want some objects exported (e.g. high-res models used " "for baking). An object will not be exported if it is not rendered in the " "scene. This can be set in the outliner:" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/index.rst:35 msgid "" "Objects hidden in the viewport will be exported, but will be hidden in the " "Godot scene." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/index.rst:40 msgid "Build pipeline integration" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/index.rst:42 msgid "" "If you have hundreds of model files, you don't want your artists to waste " "time manually exporting their blend files. To combat this, the exporter " "provides a python function ``io_scene_godot.export(out_file_path)`` that can " "be called to export a file. This allows easy integration with other build " "systems. An example Makefile and python script that exports all the blends " "in a directory are present in the Godot-Blender-exporter repository." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:2 #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:135 #: ../../docs/tutorials/3d/using_gridmaps.rst:60 msgid "Materials" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:5 msgid "Using existing Godot materials" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:7 msgid "" "One way in which the exporter can handle materials is to attempt to match " "the Blender material with an existing Godot material. This has the advantage " "of being able to use all of the features of Godot's material system, but it " "means that you cannot see your model with the material applied inside " "Blender." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:12 msgid "" "To do this, the exporter attempts to find Godot materials with names that " "match those of the material name in Blender. So if you export an object in " "Blender with the material name ``PurpleDots`` then the exporter will search " "for the file ``PurpleDots.tres`` and assign it to the object. If this file " "is not a ``SpatialMaterial`` or ``ShaderMaterial`` or if it cannot be found, " "then the exporter will fall back to exporting the material from Blender." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:20 msgid "" "Where the exporter searches for the ``.tres`` file is determined by the " "\"Material Search Paths\" option:" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:34 msgid "This can take the value of:" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:26 msgid "" "Project Directory - Attempts to find the ``project.Godot`` and recursively " "searches through subdirectories. If ``project.Godot`` cannot be found it " "will throw an error. This is useful for most projects where naming conflicts " "are unlikely." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:30 msgid "" "Export Directory - Look for materials in subdirectories of the export " "location. This is useful for projects where you may have duplicate material " "names and need more control over what material gets assigned." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:33 msgid "None - Do not search for materials. Export them from the Blender file." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:37 msgid "Export of Cycles/EEVEE materials" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:39 msgid "" "The exporter has a primitive support for converting Cycles/EEVEE material " "node tree to Godot Shader Material. Note that some of the Shader Node are " "not supported yet due to difficulties in implementation, which are:" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:43 msgid "all the ``noisy textures``" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:44 msgid "``generated texture coordinates``" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:45 msgid "``group node``" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:46 msgid "" "shader nodes except ``PrincipledBSDF``, ``Diffuse``, ``Glossy``, ``Glass``, " "``add shader`` and ``mix shader``" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:49 msgid "" "If possible try to use PrincipledBSDF node with GGX distribution as the " "output shader node, it is the only one guarantee to be exactly correctly. " "Others are just based on approximation." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:52 msgid "" "Sometimes materials may not be valid for exporting (e.g. has some " "unsupported node) or it is using Blender Internal Engine, only the diffuse " "color and a few flags (e.g. unshaded) are exported and form a Spatial " "Material." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:58 msgid "Generate external materials" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:60 msgid "" "The default configuration of material exporting would keep all the materials " "internal to the ``escn`` file. There is an option which could enable " "generating external ``.material`` file when the ``escn`` file opens in Godot." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/material.rst:66 msgid "" "``.material`` file can be assigned to any material slot to be a external " "resource." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:2 #, fuzzy msgid "Physics properties" msgstr "Ha delle proprietá modificabili." #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:4 msgid "" "Exporting physics properties is done by enabling \"Rigid Body\" in Blender's " "physics tab:" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:10 msgid "" "By default, a single Blender object with rigid body enabled will export as " "three nodes: a PhysicsBody, a CollisionShape, and a MeshInstance." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:14 msgid "Body type" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:16 msgid "" "Blender only has the concept of \"Active\" and \"Passive\" rigid bodies. " "These turn into Static and RigidBody nodes. To create a kinematic body, " "enable the \"animated\" checkbox on an \"Active\" body:" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:23 #: ../../docs/tutorials/physics/physics_introduction.rst:55 msgid "Collision shapes" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:25 msgid "" "Many of the parameters for collision shapes are missing from Blender, and " "many of the collision shapes are also not present. However, almost all of " "the options in Blender's rigid body collision and rigid body dynamics " "interfaces are supported:" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:39 msgid "There are the following caveats:" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:33 msgid "" "Not all of the collision shapes are supported. Only ``Mesh``, ``Convex " "Hull``, ``Capsule``, ``Sphere`` and ``Box`` are supported in both Blender " "and Godot" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:36 msgid "" "In Godot, you can have different collision groups and collision masks. In " "Blender you only have collision groups. As a result, the exported object's " "collision mask is equal to its collision group. Most of the time, this is " "what you want." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:42 msgid "" "To build compound physics shapes, parent together multiple objects with " "rigid body enabled. The physics properties are taken from the parent-most " "rigid body, and the rest are used as collision shapes." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:47 msgid "Collision geometry only" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:49 msgid "" "Frequently you want different geometry for your collision meshes and your " "graphical meshes, but by default the exporter will export a mesh along with " "the collision shape. To only export the collision shape, set the object's " "maximum draw type to Wire:" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/physics.rst:56 msgid "" "This will also influence how the object is shown in Blender's viewport. Most " "of the time, you want your collision geometry to be shown see-through when " "working on the models, so this works out fairly nicely." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/lights.rst:2 #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:68 #: ../../docs/tutorials/3d/introduction_to_3d.rst:223 msgid "Lights" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/lights.rst:4 msgid "" "By default, lamps in Blender have shadows enabled. This can cause " "performance issues in Godot." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/lights.rst:8 msgid "" "Lamps are exported using their \"Blender Render\" settings. When Blender 2.8 " "is released, this will be removed and this part of the exporter will change." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/lights.rst:11 msgid "" "Sun, point and spot lamps are all exported from Blender along with many of " "their properties:" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/lights.rst:16 #, fuzzy msgid "There are some things to note:" msgstr "Non ci sono restrizioni di utilizzo per Godot" #: ../../docs/getting_started/workflow/assets/escn_exporter/lights.rst:18 msgid "" "In Blender, a light casts light all the way to infinity. In Godot, it is " "clamped by the attenuation distance. To most closely match between the " "viewport and Godot, enable the \"Sphere\" checkbox. (Highlighted green)" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/lights.rst:21 msgid "" "Light attenuation models differ between Godot and Blender. The exporter " "attempts to make them match, but it isn't always very good." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/lights.rst:23 msgid "" "Spotlight angular attenuation models also differ between Godot and Blender. " "The exporter attempts to make them similar, but it doesn't always look the " "same." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/lights.rst:26 msgid "" "There is no difference between buffer shadow and ray shadow in the export." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/mesh.rst:2 msgid "Mesh" msgstr "Mesh" #: ../../docs/getting_started/workflow/assets/escn_exporter/mesh.rst:5 msgid "Modifiers" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/mesh.rst:6 msgid "" "There is an exporting option :code:`Apply Modifiers` to control whether mesh " "modifiers are applied to the exported mesh." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/mesh.rst:11 msgid "Shape Key" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/mesh.rst:12 msgid "" "Exporting mesh shape key is supported, however exporting each shape key is " "almost like exporting the mesh again, so don't be surprised it takes a " "relatively long time." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/mesh.rst:17 msgid "" "A lot of modifiers are not compatible with shape keys (e.g. subsurface " "modifier), so if you found you have incorrect shape keys exported, try to " "disable :code:`Apply Modifiers` and do the exporting again. Besides, it is " "worthwhile to report the incompatible modifier to the `issue list `__, which helps to " "develop the exporter to have a more precise check of modifiers." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/skeleton.rst:2 #: ../../docs/development/file_formats/tscn.rst:161 msgid "Skeleton" msgstr "Scheletro" #: ../../docs/getting_started/workflow/assets/escn_exporter/skeleton.rst:7 msgid "Rest Bone" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/skeleton.rst:9 msgid "" "Armature object in Blender is exported as a Skeleton node along with rest " "position (transform in Godot) of bones." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/skeleton.rst:13 msgid "" "The three check boxes :code:`Inherit Rotation`, :code:`Inherit Scale`, :code:" "`Local Location` (colored in red) must be ticked when building armature in " "Blender, so that the exported bone transform be consistent between Blender " "and Godot" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/skeleton.rst:18 msgid "" "It is important that the mesh is not deformed by bones when exporting in " "Blender. Make sure that the skeleton is reset to its T-pose or default rest " "pose." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/skeleton.rst:22 msgid "Bone Weights" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/skeleton.rst:24 msgid "" "Blender put rigged mesh vertices which has no bone weights at its original " "position, but these vertices would be placed at (0, 0, 0) in Godot, making " "the mesh deformed. Therefore, the exporter would raise an error for any " "vertex with no bone weights detected in a rigged mesh." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/skeleton.rst:30 msgid "Non-Deform Bone" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/skeleton.rst:32 msgid "" "Note that the non-deform bone can be configured as not exported by enabling " "the :code:`Exclude Control Bones`; the deform bone checkbox is shown in the " "picture." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/skeleton.rst:38 msgid "Bone Attachment" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/skeleton.rst:39 msgid "" "A bone can be the parent of an object in Blender; this relation is exported " "as a BoneAttachment node in the Godot scene." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:8 msgid "Animation supported:" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:4 msgid "transform animation of all types of objects" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:5 msgid "transform animation of pose bones" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:6 msgid "shape key animation" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:7 msgid "light animation" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:8 msgid "camera animation" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:11 msgid "Multiple Actions For Single Object" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:12 msgid "" "In most games, one object would have several animations to switch between. " "This add-on has support for exporting multiple actions all at once into a " "single AnimationPlayer and makes it easy to switch actions." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:16 msgid "" "This workflow makes use of blender nla_tracks. Here is a brief guide on how " "to use this feature:" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:19 msgid "**1. Stash active action**" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:21 msgid "" "New created action is always an active action binded to object. There are " "several ways to place an active action into NLA track, one is of course " "doing it in ``NLA Editor``" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:28 msgid "Or it can be done stashing the action in ``Dope Sheet``" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:33 msgid "**2. Check mute status of NLA tracks**" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:35 msgid "" "An NLA track can be ``mute`` or ``unmute``, the exporter will export all the " "``mute`` NLA track as a separate action, while blends all the ``unmute`` NLA " "tracks into every action (including the action action) being exported." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:41 msgid "**3. Export the scene**" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:43 msgid "Make sure the ``Export Stashed Actions`` option has been turned on." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:47 msgid "" "Then all the stashed actions, as well as the active action, are exported to " "an AnimationPlayer." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:54 #, fuzzy msgid "Constraints" msgstr "Costanti" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:55 msgid "" "Sometimes complicated animation is built with object constraint; a usual " "example is inverse kinematics. The add-on would automatically check if an " "object has some constraint; if it does, all the constraints are baked into " "actions and then exported along with the object." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:62 msgid "Animation Mode" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:63 msgid "" "Godot and Blender have different structure to store animation data. In Godot " "animation data is stored in an AnimationPlayer node, instead of in each " "animated node. In order to fix this inconsistence and still make the " "animation play versatile, this add-on has three animation exporting modes." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:70 msgid "**Mode 'Animation as Actions'**" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:72 msgid "" "Treat all the animations as object actions, so in the exported scene, every " "object would have its own AnimationPlayer and hold its actions." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:76 msgid "**Mode 'Scene Animation'**" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:78 msgid "" "If you want your animation to generate the same result as playing at " "Blender's timeline, this is what you want. In this mode, all the animations " "in the scene are placed in just one AnimationPlayer in the scene root." msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:82 msgid "**Mode 'Animation as Action with Squash'**" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:84 msgid "" "This mode has very similar behaviour of mode 'Animation as Action', but it " "can generate fewer AnimationPlayers; objects in parent-children relationship " "would share their AnimationPlayer. It is useful when you have several rigs, " "and each Skeleton and Mesh has actions; then one rig would have just one " "AnimationPlayer." msgstr "" #: ../../docs/getting_started/workflow/assets/index.rst:2 msgid "Assets workflow" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:4 msgid "Import process" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:7 msgid "Importing assets in Godot 3.0+" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:9 msgid "" "Previously, importing assets in Godot 2.x required manual maintenance of a " "separate directory with source assets. Without doing this, it was impossible " "to specify how to convert and change import flags for textures, audio files, " "scenes, etc." msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:14 msgid "" "In Godot 3.0, we use a more modern approach to importing: Simply drop your " "assets (image files, scenes, audio files, fonts, etc) directly in the " "project folder (copy them manually with your OS file explorer). Godot will " "automatically import these files internally and keep the imported resources " "hidden in a res://.import folder." msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:20 msgid "This allows changing all the import parameters transparently." msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:23 msgid "Changing import parameters" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:25 msgid "" "Changing the import parameters of an asset in Godot (again, keep in mind " "import parameters are only present in non-native Godot resource types) is " "easy. Select the relevant resource in the filesystem dock:" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:31 msgid "" "Then, after adjusting the parameters, press \"Reimport\". These parameters " "will only be used for this asset and on future reimports." msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:34 msgid "" "Changing the import parameters of several assets at the same time is also " "possible. Simply select all of them together in the resources dock and the " "exposed parameters will apply to all of them when reimporting." msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:39 msgid "Automatic reimport" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:41 msgid "" "When the MD5 checksum of the source asset changes, Godot will perform an " "automatic reimport of it, applying the preset configured for that specific " "asset." msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:46 msgid "Files generated" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:48 msgid "" "Importing will add an extra .import file, containing the import " "configuration. Make sure to commit these to your version control system!" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:53 msgid "" "Additionally, extra assets will be preset in the hidden res://.import folder:" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:57 msgid "" "If any of the files present in this folder is erased (or the whole folder), " "the asset or assets will be reimported automatically. As such, committing " "this folder to the version control system is optional. It can shorten " "reimporting time when checking out on another computer, but it takes " "considerably more space and transfer time. Pick your poison!" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:64 msgid "Changing import resource type" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:66 msgid "" "Some source assets can be imported as different types of resources. For " "this, select the relevant type of resource desired and press \"Reimport\":" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:74 msgid "Changing default import parameters" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:76 msgid "" "Different types of games might require different defaults. Changing the " "defaults per project can be achieved by using the \"Preset..\" Menu. Besides " "some resource types offering presets, the default setting can be saved and " "cleared too:" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:84 msgid "Simplicity is key!" msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:86 msgid "" "This is a very simple workflow which should take very little time to get " "used to. It also enforces a more correct way to deal with resources." msgstr "" #: ../../docs/getting_started/workflow/assets/import_process.rst:89 msgid "" "There are many types of assets available for import, so please continue " "reading to understand how to work with all of them!" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:4 msgid "Importing images" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:7 msgid "Why import them?" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:9 msgid "" "In Godot 3+, image files are no longer native resources and they must be " "imported. The reason behind this is the large amount of configuration " "parameters that image files can be imported with." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:13 msgid "" "This small tutorial will explain what these parameters are and how to best " "make use of them." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:17 msgid "Importing textures" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:19 msgid "" "The default action in Godot is to import images as textures. Textures are " "stored in video memory and can't be accessed directly. This is what makes " "drawing them efficient." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:23 msgid "Import options are vast:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:28 msgid "Detect 3D" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:30 msgid "" "This option makes Godot be aware of when a texture (which is imported for 2D " "as default) is used in 3D. If this happens, setting are changed so the " "texture flags are friendlier to 3D (mipmaps, filter and repeat become " "enabled and compression is changed to VRAM). Texture is also reimported " "automatically." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:34 msgid "Compression" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:36 msgid "" "Images are one of the largest assets in a game. To handle them efficiently, " "they need to be compressed. Godot offers several compression methods, " "depending on the use case." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:40 msgid "Compress Mode" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:42 msgid "" "VRAM Compression: This is the most common compression mode for 3D assets. " "File on disk is reduced and video memory usage is also reduced considerably. " "For 3D, it may present unwanted artifacts, though." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:44 msgid "" "Lossless Compression: This is the most common compression for 2D assets. It " "shows assets without any kind of artifacting, and disk compression is " "decent. It will use considerably more amount of video memory than VRAM, " "though." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:46 msgid "" "Lossy Compression: For games with lots of large 2D assets, lossy compression " "can be a great choice. It has some artifacting, but less than VRAM and the " "file size is almost a tenth of Lossless." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:48 msgid "" "Uncompressed: Only useful for formats that can't be compressed (like, raw " "float)." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:50 msgid "" "In this table, each of the four options are described together with their " "advantages and disadvantages ( |good| = Best, |bad| =Worst ):" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:54 msgid "Uncompressed" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:54 msgid "Compress Lossless (PNG)" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:54 msgid "Compress Lossy (WebP)" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:54 msgid "Compress VRAM" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:56 msgid "Stored as raw pixels" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:56 msgid "Stored as PNG" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:56 msgid "Stored as WebP" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:56 msgid "Stored as S3TC/BC,PVRTC/ETC, depending on platform" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:58 msgid "Size on Disk" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:58 #: ../../docs/getting_started/workflow/assets/importing_images.rst:60 msgid "|bad| Large" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:58 msgid "|regular| Small" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:58 msgid "|good| Very Small" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:60 msgid "Memory Usage" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:60 msgid "|good| Small" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:62 msgid "Performance" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:62 #: ../../docs/getting_started/workflow/assets/importing_images.rst:66 msgid "|regular| Normal" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:62 #: ../../docs/getting_started/workflow/assets/importing_images.rst:66 msgid "|good| Fast" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:64 msgid "Quality Loss" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:64 msgid "|good| None" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:64 msgid "|regular| Slight" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:64 msgid "|bad| Moderate" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:66 msgid "Load Time" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:66 msgid "|bad| Slow" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:76 msgid "HDR Mode" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:78 msgid "" "Godot supports high dynamic range textures (as .HDR or .EXR). These are " "mostly useful as high dynamic range equirectangular panorama skies (the " "internet has plenty if you search for them), which replace Cubemaps in Godot " "2.x. Modern PCs support the BC6H VRAM format, but there are still plenty " "that do not." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:81 msgid "" "If you want Godot to ensure full compatibility in terms of the kind of " "textures, enable the \"Force RGBE\" option." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:84 msgid "Normal Map" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:86 msgid "" "When using a texture as normal map, only the red and green channels are " "required. Given regular texture compression algorithms produce artifacts " "that don't look that nice in normal maps, the RGTC compression format is the " "best fit for this data. Forcing this option to \"Enabled\" will make Godot " "import the image as RGTC compressed. By default, it's set to \"Detect\", " "which means that if the texture is ever used as a normal map, it will be " "changed to \"Enabled\" and reimported automatically." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:92 #: ../../docs/tutorials/3d/spatial_material.rst:19 msgid "Flags" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:94 msgid "" "There are plenty of settings that can be toggled when importing an image as " "a texture, depending on the use case." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:97 msgid "Repeat" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:99 msgid "" "This setting is most commonly used in 3D, and is therefore generally " "disabled in 2D. It sets UV coordinates going beyond the 0,0 - 1,1 range to " "\"loop\"." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:101 msgid "Repeating can optionally be set to mirrored mode." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:104 #: ../../docs/tutorials/audio/audio_buses.rst:118 msgid "Filter" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:106 msgid "" "When pixels become larger than the screen pixels, this option enables linear " "interpolation for them. The result is a smoother (less blocky) texture. This " "setting can be commonly used in 2D and 3D, but it's usually disabled when " "making pixel perfect games." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:109 msgid "Mipmaps" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:111 msgid "" "When pixels become smaller than the screen, mipmaps kick in. This helps " "reduce the grainy effect when shrinking the textures. Keep in mind that, in " "older hardware (GLES2, mainly mobile), there are some requirements to use " "mipmaps:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:114 msgid "Texture width and height must be powers of 2" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:115 msgid "Repeat must be enabled" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:117 msgid "" "Keep in mind the above when making phone games and applications, want to aim " "for full compatibility, and need mipmaps." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:119 msgid "" "When doing 3D, mipmap should be turned on, as this also improves performance " "(smaller versions of the texture are used for objects further away)." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:122 msgid "Anisotropic" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:124 msgid "" "When textures are near parallel to the view (like floors), this option makes " "them have more detail by reducing blurriness." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:127 msgid "SRGB" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:129 msgid "" "Godot uses Linear colorspace when rendering 3D. Textures mapped to albedo or " "detail channels need to have this option turned on in order for colors to " "look correct. When set to \"Detect\" mode, the texture will be marked as " "SRGB when used in albedo channels." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:133 msgid "Process" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:135 msgid "" "Some special processes can be applied to images when imported as textures." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:138 msgid "Fix Alpha Border" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:140 msgid "" "This puts pixels of the same surrounding color in transition from " "transparency to non transparency. It helps mitigate the outline effect when " "exporting images from Photoshop and the like." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:145 msgid "" "It's a good idea to leave it on by default, unless specific values are " "needed." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:148 msgid "Premultiplied Alpha" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:150 msgid "" "An alternative to fix darkened borders is to use premultiplied alpha. By " "enabling this option, the texture will be converted to this format. Keep in " "mind that a material will need to be created that uses the PREMULT ALPHA " "blend mode on canvas items that need it." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:154 msgid "HDR as sRGB" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:156 msgid "" "A few HDR files are broken and contain sRGB color data. It is advised not to " "use them, but, in the worst-case scenario, toggling this option on will make " "them look right." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:159 msgid "Invert Color" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:161 msgid "" "Reverses the image's color. This is useful, for example, to convert a height " "map generated by external programs to depth map to use with :ref:" "`doc_spatial_material`." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:4 msgid "Importing audio samples" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:7 msgid "Why import?" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:9 msgid "" "Raw audio data in general is large and undesired. Godot provides two main " "options to import your audio data: WAV and OGG Vorbis." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:12 msgid "Each has different advantages." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:14 msgid "" "Wav files use raw data or light compression, make few demands on the CPU to " "play back (hundreds of simultaneous voices in this format are fine), but " "take up significant space." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:15 msgid "" "Ogg Vorbis files use a stronger compression that results in much smaller " "file size, but require significantly more processing power to play back." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:20 msgid "Here is a comparative chart." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:23 msgid "Format" msgstr "Formato" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:23 msgid "1 Second of Audio" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:25 msgid "WAV 24 bits, 96 kHz, Stereo" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:25 msgid "576kb" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:27 msgid "WAV 16 bits, 44 kHz, Mono" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:27 msgid "88kb" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:29 msgid "WAV 16 bits, IMA-ADPCM, Mono" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:29 msgid "22kb" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:31 msgid "OGG 128kbps, Stereo" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:31 msgid "16kb" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:33 msgid "OGG Vorbis 96kbps, Stereo" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:33 msgid "12kb" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:36 msgid "" "Consider using WAV for short and repetitive sound effects, and OGG for " "music, speech, and long sound effects." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:40 #: ../../docs/getting_started/workflow/best_practices/index.rst:2 msgid "Best practices" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:42 msgid "" "Godot 3+ has an amazing bus system with built-in effects. This saves SFX " "artists the need to add reverb to the sound effects, reducing their size " "greatly and ensuring correct trimming. Say no to SFX with baked reverb!" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:49 msgid "As you can see above, sound effects become huge with reverb added." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:52 msgid "Trimming" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:54 msgid "" "One issue that happens often is that the waveform is exported with long " "silences at the beginning and at the end. These are inserted by DAWs when " "saving to a waveform, increase their size unnecessarily and add latency to " "the moment they are played back." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:59 msgid "Importing as WAV with the Trimming option enabled solves this." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:63 msgid "Looping" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:65 msgid "" "Godot supports looping in the samples (tools such as Sound Forge or Audition " "can add loop points to wav files). This is useful for sound effects, such as " "engines, machine guns etc. Ping-pong looping is also supported." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_audio_samples.rst:70 msgid "" "As an alternative, the import screen has a \"loop\" option that enables " "looping for the entire sample when importing." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:4 msgid "Importing translations" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:7 msgid "Games and internationalization" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:9 msgid "" "The world is full of different markets and cultures and, to maximize " "profits™, nowadays games are released in several languages. To solve this, " "internationalized text must be supported in any modern game engine." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:14 msgid "" "In regular desktop or mobile applications, internationalized text is usually " "located in resource files (or .po files for GNU stuff). Games, however, can " "use several orders of magnitude more text than applications, so they must " "support efficient methods for dealing with loads of multilingual text." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:20 msgid "" "There are two approaches to generate multilingual language games and " "applications. Both are based on a key:value system. The first is to use one " "of the languages as the key (usually English), the second is to use a " "specific identifier. The first approach is probably easier for development " "if a game is released first in English, later in other languages, but a " "complete nightmare if working with many languages at the same time." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:28 msgid "" "In general, games use the second approach and a unique ID is used for each " "string. This allows you to revise the text while it is being translated to " "other languages. The unique ID can be a number, a string, or a string with a " "number (it's just a unique string anyway)." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:33 msgid "" "If you need a more powerful file format, Godot also supports loading " "translations written in the gettext ``.po`` format. See :ref:" "`doc_localization_using_gettext` for details." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:38 msgid "Translation format" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:40 msgid "" "To complete the picture and allow efficient support for translations, Godot " "has a special importer that can read CSV files. All spreadsheet editors (be " "it Libreoffice, Microsoft Office, Google Docs, etc.) can export to this " "format, so the only requirement is that the files have a special " "arrangement. The CSV files must be saved in UTF-8 encoding and be formatted " "as follows:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:48 msgid "" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:48 msgid "" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:48 msgid "" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:50 msgid "KEY1" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:50 #: ../../docs/getting_started/workflow/assets/importing_translations.rst:52 #: ../../docs/getting_started/workflow/assets/importing_translations.rst:54 #: ../../docs/tutorials/misc/binary_serialization_api.rst:33 msgid "string" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:52 msgid "KEY2" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:54 msgid "KEYN" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:57 msgid "" "The \"lang\" tags must represent a language, which must be one of the :ref:" "`valid locales ` supported by the engine. The \"KEY\" tags must " "be unique and represent a string universally (they are usually in uppercase, " "to differentiate from other strings). Here's an example:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:63 #: ../../docs/tutorials/i18n/locales.rst:352 msgid "id" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:63 #: ../../docs/tutorials/i18n/locales.rst:178 msgid "en" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:63 #: ../../docs/tutorials/i18n/locales.rst:220 msgid "es" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:63 #: ../../docs/tutorials/i18n/locales.rst:372 msgid "ja" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:65 msgid "GREET" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:65 msgid "Hello, friend!" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:65 msgid "Hola, Amigo!" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:65 msgid "こんにちは" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 msgid "ASK" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 msgid "How are you?" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 msgid "Cómo está?" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:67 msgid "元気ですか" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:69 msgid "BYE" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:69 msgid "Good Bye" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:69 msgid "Adiós" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:69 msgid "さようなら" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:73 msgid "CSV importer" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:75 msgid "" "Godot will treat CSV files as translations by default. It will import them " "and generate one or more compressed translation resource files next to it." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_translations.rst:78 msgid "" "Importing will also add the translation to the list of translations to load " "when the game runs, specified in project.godot (or the project settings). " "Godot allows loading and removing translations at runtime as well." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:4 #, fuzzy msgid "Importing 3D scenes" msgstr "Creare contenuti" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:7 msgid "Godot scene importer" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:9 msgid "" "When dealing with 3D assets, Godot has a flexible and configurable importer." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:11 msgid "" "Godot works with *scenes*. This means that the entire scene being worked on " "in your favorite 3D DCC will be transferred as close as possible." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:14 msgid "Godot supports the following 3D *scene file fomats*:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:16 msgid "DAE (COLLADA), which is currently the most mature workflow." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:17 msgid "" "GLTF 2.0. Both text and binary formats are supported. Godot has full support " "for it, but the format is new and gaining traction." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:18 msgid "" "OBJ (Wavefront) formats. It is also fully supported, but pretty limited (no " "support for pivots, skeletons, etc)." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:20 msgid "" "Just copy the scene file together with the texture to the project " "repository, and Godot will do a full import." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:22 msgid "" "It is important that the mesh is not deformed by bones when exporting. Make " "sure that the skeleton is reset to its T-pose or default rest pose before " "exporting with your favorite 3D editor." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:26 msgid "Why not FBX?" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:28 msgid "" "Most game engines use the FBX format for importing 3D scenes, which is " "definitely one of the most standardized in the industry. However, this " "format requires the use of a closed library from Autodesk, which is " "distributed with more restrictive licensing terms than Godot." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:33 msgid "" "The plan is, sometime in the future, to offer a binary plug-in using " "GDNative." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:36 msgid "Exporting DAE files from Maya and 3DS Max" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:38 msgid "" "Autodesk added built-in COLLADA support to Maya and 3DS Max, but it's broken " "by default and should not be used. The best way to export this format is by " "using the `OpenCollada `__ plugins. They work well, although they are not always " "up-to date with the latest version of the software." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:46 msgid "Exporting DAE files from Blender" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:48 msgid "" "Blender has built-in COLLADA support too, but it's also broken and should " "not be used." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:51 msgid "" "Godot provides a `Python Plugin `__ that will do a much better job of exporting the scenes." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:56 msgid "Exporting ESCN files from Blender" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:58 msgid "" "The most powerful one, called `godot-blender-exporter `__. It uses a .escn file, which is kind " "of another name for a .tscn file (Godot scene file); it keeps as much " "information as possible from a Blender scene." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:63 msgid "" "The ESCN exporter has a detailed `document `__ " "describing its functionality and usage." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:67 msgid "Import workflows" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:69 msgid "" "Godot scene importer allows different workflows regarding how data is " "imported. Depending on many options, it is possible to import a scene with:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:72 msgid "" "External materials (default): Where each material is saved to a file " "resource. Modifications to them are kept." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:73 msgid "" "External meshes: Where each mesh is saved to a different file. Many users " "prefer to deal with meshes directly." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:74 msgid "" "External animations: Allowing saved animations to be modified and merged " "when sources change." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:75 msgid "" "External scenes: Save each of the root nodes of the imported scenes as a " "separate scene." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:76 msgid "Single scene: A single scene file with everything built in." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:80 msgid "" "As different developers have different needs, this import process is highly " "customizable." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:83 msgid "Import options" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:85 msgid "The importer has several options, which will be discussed below:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:93 msgid "Root Type" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:95 msgid "" "By default, the type of the root node in imported scenes is \"Spatial\", but " "this can be modified." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:98 msgid "Root Name" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:100 msgid "Allows setting a specific name to the generated root node." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:103 msgid "Custom Script" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:105 msgid "" "A special script to process the whole scene after import can be provided. " "This is great for post processing, changing materials, doing funny stuff " "with the geometry etc." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:109 msgid "Create a script like this:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:120 msgid "" "The ``post_import`` function takes the imported scene as argument (the " "parameter is actually the root node of the scene). The scene that will " "finally be used must be returned. It can be a different one." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:125 #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:144 #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:199 #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:239 msgid "Storage" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:127 msgid "" "By default, Godot imports a single scene. This option allows specifying that " "nodes below the root will each be a separate scene and instanced into the " "imported one." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:131 msgid "" "Of course, instancing such imported scenes in other places manually works, " "too." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:138 msgid "Location" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:140 msgid "" "Godot supports materials in meshes or nodes. By default, materials will be " "put on each node." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:146 msgid "" "Materials can be stored within the scene or in external files. By default, " "they are stored in external files so editing them is possible. This is " "because most 3D DCCs don't have the same material options as those present " "in Godot." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:150 msgid "" "When materials are built-in, they will be lost each time the source scene is " "modified and re-imported." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:154 msgid "Keep On Reimport" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:156 msgid "" "Once materials are edited to use Godot features, the importer will keep the " "edited ones and ignore the ones coming from the source scene. This option is " "only present if materials are saved as files." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:161 msgid "Meshes" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:164 msgid "Compress" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:166 msgid "" "Makes meshes use less precise numbers for multiple aspects of the mesh in " "order to save space." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:179 msgid "These are:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:170 msgid "" "Transform Matrix (Location, rotation, and scale) : 32-bit float " "to 16-bit signed integer." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:171 msgid "" "Vertices : 32-bit float " "to 16-bit signed integer." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:172 msgid "" "Normals : 32-bit float " "to 32-bit unsigned integer." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:173 msgid "" "Tangents : 32-bit float " "to 32-bit unsigned integer." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:174 msgid "" "Vertex Colors : 32-bit float " "to 32-bit unsigned integer." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:175 msgid "" "UV : 32-bit float " "to 32-bit unsigned integer." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:176 msgid "" "UV2 : 32-bit float " "to 32-bit unsigned integer." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:177 msgid "" "Vertex weights : 32-bit float " "to 16-bit unsigned integer." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:178 msgid "" "Armature bones : 32-bit float " "to 16-bit unsigned integer." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:179 msgid "" "Array index : 32-bit or 16-" "bit unsigned integer based on how many elements there are." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:183 msgid "Additional info:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:182 msgid "" "UV2 = The second UV channel for detail textures and baked lightmap textures." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:183 msgid "" "Array index = An array of numbers that number each element of the arrays " "above; i.e. they number the vertices and normals." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:185 msgid "" "In some cases, this might lead to loss of precision, so disabling this " "option may be needed. For instance, if a mesh is very big or there are " "multiple meshes being imported that cover a large area, compressing the " "import of this mesh(es) may lead to gaps in geometry or vertices not being " "exactly where they should be." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:191 msgid "Ensure Tangents" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:193 msgid "" "If textures with normal mapping are to be used, meshes need to have tangent " "arrays. This option ensures that these are generated if not present in the " "source scene. Godot uses Mikktspace for this, but it's always better to have " "them generated in the exporter." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:201 msgid "" "Meshes can be stored in separate files (resources) instead of built-in. This " "does not have much practical use unless one wants to build objects with them " "directly." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:204 msgid "" "This option is provided to help those who prefer working directly with " "meshes instead of scenes." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:208 msgid "External Files" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:210 msgid "" "Generated meshes and materials can be optionally stored in a subdirectory " "with the name of the scene." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:214 #, fuzzy msgid "Animation options" msgstr "Creare contenuti" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:216 msgid "" "Godot provides many options regarding how animation data is dealt with. Some " "exporters (such as Blender) can generate many animations in a single file. " "Others, such as 3DS Max or Maya, need many animations put into the same " "timeline or, at worst, put each animation in a separate file." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:223 msgid "Import of animations is enabled by default." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:226 msgid "FPS" msgstr "FPS" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:228 msgid "" "Most 3D export formats store animation timeline in seconds instead of " "frames. To ensure animations are imported as faithfully as possible, please " "specify the frames per second used to edit them. Failing to do this may " "result in shaky animations." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:233 msgid "Filter Script" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:235 msgid "" "It is possible to specify a filter script in a special syntax to decide " "which tracks from which animations should be kept. (@TODO this needs " "documentation)" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:241 msgid "" "By default, animations are saved as built-in. It is possible to save them to " "a file instead. This allows adding custom tracks to the animations and " "keeping them after a reimport." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:245 msgid "Optimizer" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:247 msgid "" "When animations are imported, an optimizer is run, which reduces the size of " "the animation considerably. In general, this should always be turned on " "unless you suspect that an animation might be broken due to it being enabled." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:251 msgid "Clips" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:253 msgid "" "It is possible to specify multiple animations from a single timeline as " "clips. Specify from which frame to which frame each clip must be taken (and, " "of course, don't forget to specify the FPS option above)." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:257 msgid "Scene inheritance" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:259 msgid "" "In many cases, it may be desired to make modifications to the imported " "scene. By default, this is not possible because if the source asset changes " "(source .dae, .gltf, .obj file re-exported from 3D modelling app), Godot " "will re-import the whole scene." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:262 msgid "" "It is possible, however, to make local modifications by using *Scene " "Inheritance*. Try to open the imported scene and the following dialog will " "appear:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:267 msgid "In inherited scenes, the only limitations for modifications are:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:269 msgid "Nodes can't be removed (but can be added anywhere)." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:270 msgid "" "Sub-Resources can't be edited (save them externally as described above for " "this)" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:272 msgid "Other than that, everything is allowed!" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:275 msgid "Import hints" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:277 msgid "" "Many times, when editing a scene, there are common tasks that need to be " "done after exporting:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:279 msgid "Adding collision detection to objects" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:280 msgid "Setting objects as navigation meshes" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:281 msgid "" "Deleting nodes that are not used in the game engine (like specific lights " "used for modelling)" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:283 msgid "" "To simplify this workflow, Godot offers a few suffixes that can be added to " "the names of the objects in your 3D modelling software. When imported, Godot " "will detect them and perform actions automatically:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:288 msgid "Remove nodes (-noimp)" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:290 msgid "" "Node names that have this suffix will be removed at import time, no matter " "what their type is. They will not appear in the imported scene." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:294 msgid "Create collisions (-col, -colonly, -convcolonly)" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:296 msgid "" "Option \"-col\" will work only for Mesh nodes. If it is detected, a child " "static collision node will be added, using the same geometry as the mesh." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:299 msgid "" "However, it is often the case that the visual geometry is too complex or too " "un-smooth for collisions, which ends up not working well." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:302 msgid "" "To solve this, the \"-colonly\" modifier exists, which will remove the mesh " "upon import and create a :ref:`class_staticbody` collision instead. This " "helps the visual mesh and actual collision to be separated." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:306 msgid "" "Option \"-convcolonly\" will create a :ref:`class_convexpolygonshape` " "instead of a :ref:`class_concavepolygonshape`." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:308 msgid "" "Option \"-colonly\" can also be used with Blender's empty objects. On " "import, it will create a :ref:`class_staticbody` with a collision node as a " "child. The collision node will have one of a number of predefined shapes, " "depending on Blender's empty draw type:" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:315 msgid "Single arrow will create a :ref:`class_rayshape`" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:316 msgid "Cube will create a :ref:`class_boxshape`" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:317 msgid "Image will create a :ref:`class_planeshape`" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:318 msgid "" "Sphere (and the others not listed) will create a :ref:`class_sphereshape`" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:320 msgid "" "For better visibility in Blender's editor, the user can set \"X-Ray\" option " "on collision empties and set some distinct color for them in User " "Preferences / Themes / 3D View / Empty." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:324 msgid "Create navigation (-navmesh)" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:326 msgid "" "A mesh node with this suffix will be converted to a navigation mesh. " "Original Mesh node will be removed." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:330 msgid "Create a VehicleBody (-vehicle)" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:332 msgid "" "A mesh node with this suffix will be imported as a child to a :ref:" "`VehicleBody ` node." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:335 msgid "Create a VehicleWheel (-wheel)" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:337 msgid "" "A mesh node with this suffix will be imported as a child to a :ref:" "`VehicleWheel ` node." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:340 msgid "Rigid Body (-rigid)" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:342 msgid "Creates a rigid body from this mesh." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:345 msgid "Animation loop (-loop, -cycle)" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:347 msgid "" "Animation clips in the COLLADA document that start or end with the token " "\"loop\" or \"cycle\" will be imported as a Godot Animation with the loop " "flag set. This is case-sensitive and does not require a hyphen." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:351 msgid "" "In Blender, this requires using the NLA Editor and naming the Action with " "the \"loop\" or \"cycle\" prefix or suffix." msgstr "" #: ../../docs/getting_started/workflow/export/index.rst:2 msgid "Export" msgstr "Esporta" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:4 msgid "Exporting projects" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:9 msgid "Why export?" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:11 msgid "" "Originally, Godot did not have any means to export projects. The developers " "would compile the proper binaries and build the packages for each platform " "manually." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:15 msgid "" "When more developers (and even non-programmers) started using it, and when " "our company started taking more projects at the same time, it became evident " "that this was a bottleneck." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:20 msgid "On PC" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:22 msgid "" "Distributing a game project on PC with Godot is rather easy. Drop the Godot " "binary in the same directory as the ``project.godot`` file, then compress " "the project directory and you are done." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:26 msgid "" "It sounds simple, but there are probably a few reasons why the developer may " "not want to do this. The first one is that it may not be desirable to " "distribute loads of files. Some developers may not like curious users " "peeking at how the game was made, others may find it inelegant, and so on. " "Another reason is that the developer might prefer a specially-compiled " "binary, which is smaller in size, more optimized and does not include tools " "like the editor and debugger." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:34 msgid "" "Finally, Godot has a simple but efficient system for creating DLCs as extra " "package files." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:38 msgid "On mobile" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:40 msgid "" "The same scenario on mobile platforms is a little worse. To distribute a " "project on those devices, a binary for each of those platforms is built, " "then added to a native project together with the game data." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:45 msgid "" "This can be troublesome because it means that the developer must be " "familiarized with the SDK of each platform before even being able to export. " "While learning each SDK is always encouraged, it can be frustrating to be " "forced to do it at an undesired time." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:50 msgid "" "There is also another problem with this approach: different devices prefer " "some data in different formats to run. The main example of this is texture " "compression. All PC hardware uses S3TC (BC) compression and that has been " "standardized for more than a decade, but mobile devices use different " "formats for texture compression, such as PVRTC (iOS) or ETC (Android)." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:58 msgid "Export menu" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:60 msgid "" "After many attempts at different export workflows, the current one has " "proven to work the best. At the time of this writing, not all platforms are " "supported yet, but the supported platforms continue to grow." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:64 msgid "To open the export menu, click the **Export** button:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:68 msgid "" "The export menu will open. However, it will be completely empty. This is " "because we need to add an export preset." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:73 msgid "" "To create an export preset, click the **Add…** button at the top of the " "export menu. This will open a drop-down list of platforms to choose from for " "an export preset." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:79 msgid "" "The default options are often enough to export, so tweaking them is usually " "not necessary. However, many platforms require additional tools (SDKs) to be " "installed to be able to export. Additionally, Godot needs export templates " "installed to create packages. The export menu will complain when something " "is missing and will not allow the user to export for that platform until " "they resolve it:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:88 msgid "" "At that time, the user is expected to come back to the documentation and " "follow instructions on how to properly set up that platform." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:94 msgid "" "Apart from setting up the platform, the export templates must be installed " "to be able to export projects. They can be obtained as a TPZ file (which is " "a renamed ZIP archive) from the `download page of the website `_." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:99 msgid "" "Once downloaded, they can be installed using the **Install Export " "Templates** option in the editor:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:105 msgid "Export mode" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:107 msgid "" "When exporting, Godot makes a list of all the files to export and then " "creates the package. There are 3 different modes for exporting:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:110 msgid "Export every single file in the project" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:111 msgid "Export only resources (+ custom filter), this is the default." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:112 msgid "Export only selected resources (+ custom filter)" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:116 msgid "" "**Export every single file** - This mode exports every single file in the " "project. This is good to test if something is being forgotten, but " "developers often have a lot of unrelated stuff around in the project " "directory, which makes it a bad idea." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:121 msgid "" "**Export only resources** - Only resources are exported. For most projects, " "this is enough. However many developers like to use custom datafiles in " "their games. To compensate for this, filters can be added for extra " "extensions (for instance, ``*.txt,*.csv``)." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:126 msgid "" "**Export only selected resources** - Only select resources from a list are " "exported. This is probably overkill for most projects, but in some cases it " "is justified (usually huge projects). This mode offers total control of what " "is exported. Individual resources can be selected and dependency detection " "is performed to ensure that everything needed is added." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:136 msgid "Exporting from the command line" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:138 msgid "" "In production, it is useful to automate builds, and Godot supports this with " "the ``--export`` and ``--export-debug`` command line parameters. Exporting " "from the command line still requires an export preset to define the export " "parameters. A basic invocation of the command would be:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:147 msgid "" "This will export to ``some_name.exe``, assuming there is a preset called " "\"Windows Desktop\" and the template can be found. The output path is " "relative to the project path or absolute; it does not respect the directory " "the command was invoked from." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:152 msgid "" "You can also configure it to export only the PCK or ZIP file (allowing a " "single export to be used with multiple Godot executables). This takes place " "if:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:156 msgid "the export preset is not marked as runnable," msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:157 msgid "the target name ends with ``.pck`` or ``.zip``." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_projects.rst:159 msgid "" "It is often useful to combine the ``--export`` flag with the ``--path`` " "flag, and to create a dedicated export preset for automated export:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:4 msgid "Exporting packs, patches, and mods" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:7 msgid "Use cases" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:9 msgid "" "Oftentimes one would like to add functionality to one's game after it has " "been deployed." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:12 msgid "Examples of this include..." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:14 msgid "" "Downloadable Content: the ability to add features and content to one's game." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:15 msgid "Patches: the ability to fix a bug that is present in a shipped product." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:16 msgid "Mods: grant other people the ability to create content for one's game." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:18 msgid "" "These tools help developers to extend their development beyond the initial " "release." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:22 msgid "Overview of PCK files" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:24 msgid "" "Godot enables this via a feature called **resource packs** (PCK files, with " "extension ``.pck``)." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:27 msgid "**Advantages:**" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:29 msgid "incremental updates/patches" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:30 msgid "offer DLCs" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:31 msgid "offer mod support" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:32 msgid "no source code disclosure needed for mods" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:33 msgid "more modular project structure" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:34 msgid "users don’t have to replace the entire game" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:36 msgid "" "The first part of using them involves exporting and delivering the project " "to players. Then, when one wants to add functionality or content later on, " "they just deliver the updates via PCK files to the users." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:40 msgid "PCK files usually contain, but are not limited to:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:42 #, fuzzy msgid "scripts" msgstr "Descrizione" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:43 #, fuzzy msgid "scenes" msgstr "Scene" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:44 msgid "shaders" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:45 msgid "models" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:46 msgid "textures" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:47 msgid "sound effects" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:48 msgid "music" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:49 msgid "any other asset suitable for import into the game" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:51 msgid "" "The PCK files can even be an entirely different Godot project, which the " "original game loads in at runtime." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:55 msgid "Generating PCK files" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:57 msgid "" "In order to pack all resources of a project into a PCK file open the project " "and go to Project/Export and click on “Export PCK/Zip”. Also make sure to " "have an export template selected while doing so." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:63 msgid "" "Another method would be to :ref:`export from the command line " "`. If the output file ends with a PCK " "or ZIP file extension, then the export process will build that type of file " "for the chosen platform." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:69 msgid "" "If one wishes to support mods for their game, they will need their users to " "create similarly exported files. Assuming the original game expects a " "certain structure for the PCK's resources and/or a certain interface for its " "scripts, then either..." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:74 msgid "" "The developer must publicize documentation of these expected structures/ " "interfaces, expect modders to install Godot Engine, and then also expect " "those modders to conform to the documentation's defined API when building " "mod content for the game (so that it will work). Users would then use " "Godot's built in exporting tools to create a PCK file, as detailed above." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:80 msgid "" "The developer uses Godot to build a GUI tool for adding their exact API " "content to a project. This Godot tool must either run on a tools-enabled " "build of the engine or have access to one (distributed alongside or perhaps " "in the original game's files). The tool can then use the Godot executable to " "export a PCK file from the command line with :ref:`OS.execute() " "`. It makes the most sense for the game to not use " "a tool-build though (for security) and for the modding tools to *do* use a " "tool-enabled engine build." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:90 msgid "Opening PCK files at runtime" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:92 msgid "" "To import a PCK file, one uses a one-liner. Keep in mind, there is no error " "or exception if the import fails. Instead, one might have to create some " "validation code as a layer on top. The following example expects a “mod.pck” " "file in the directory of the games executable. The PCK file contains a " "“mod_scene.tscn” test scene in its root." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:117 msgid "" "If you import a file with the same file path/name as one you already have in " "your project, the imported one will replace it. This is something to watch " "out for when creating DLC or mods (solved easily with a tool isolating mods " "to a specific mods subfolder). However, it is also a way of creating patches " "for one's own game. A PCK file of this kind can fix the content of a " "previously loaded PCK." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:126 msgid "" "This tutorial should illustrate how easy adding mods, patches or DLC to a " "game is. The most important thing is to identify how one plans to distribute " "future content for their game and develop a workflow that is customized for " "that purpose. Godot should make that process smooth regardless of which " "route a developer pursues." msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:4 msgid "Feature tags" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:9 msgid "" "Godot has a special system to tag availability of features. Each *feature* " "is represented as a string, which can refer to many of the following:" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:12 msgid "Platform name." msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:13 msgid "Platform architecture (64-bit or 32-bit, x86 or ARM)." msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:14 msgid "Platform type (desktop, mobile, Web)." msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:15 msgid "Supported texture compression algorithms on the platform." msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:16 msgid "" "Whether a build is ``debug`` or ``release`` (``debug`` includes the editor)." msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:17 msgid "" "Whether the project is running from the editor or a \"standalone\" binary." msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:18 msgid "Many more things." msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:20 msgid "Features can be queried at run-time from the singleton API by calling:" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:28 msgid "Default features" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:30 msgid "" "Here is a list of most feature tags in Godot. Keep in mind they are **case-" "sensitive**:" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:33 msgid "**Feature tag**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:35 msgid "**Android**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:35 msgid "Running on Android" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:37 msgid "**HTML5**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:37 msgid "Running on HTML5" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:39 msgid "**JavaScript**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:39 msgid ":ref:`JavaScript singleton ` is available" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:42 msgid "**OSX**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:42 msgid "Running on macOS" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:44 msgid "**iOS**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:44 msgid "Running on iOS" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:46 msgid "**UWP**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:46 msgid "Running on UWP" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:48 msgid "**Windows**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:48 msgid "Running on Windows" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:50 msgid "**X11**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:50 msgid "Running on X11 (Linux/BSD desktop)" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:52 msgid "**Server**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:52 msgid "Running on the headless server platform" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:54 msgid "**debug**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:54 msgid "Running on a debug build (including the editor)" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:56 msgid "**release**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:56 msgid "Running on a release build" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:58 #, fuzzy msgid "**editor**" msgstr "**Per l'editor:**" #: ../../docs/getting_started/workflow/export/feature_tags.rst:58 msgid "Running on an editor build" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:60 msgid "**standalone**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:60 msgid "Running on a non-editor build" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:62 msgid "**64**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:62 msgid "Running on a 64-bit build (any architecture)" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:64 msgid "**32**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:64 msgid "Running on a 32-bit build (any architecture)" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:66 msgid "**x86_64**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:66 msgid "Running on a 64-bit x86 build" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:68 msgid "**x86**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:68 msgid "Running on a 32-bit x86 build" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:70 msgid "**arm64**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:70 msgid "Running on a 64-bit ARM build" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:72 msgid "**arm**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:72 msgid "Running on a 32-bit ARM build" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:74 msgid "**mobile**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:74 msgid "Host OS is a mobile platform" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:76 msgid "**pc**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:76 msgid "Host OS is a PC platform (desktop/laptop)" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:78 msgid "**web**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:78 msgid "Host OS is a Web browser" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:80 msgid "**etc**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:80 msgid "Textures using ETC1 compression are supported" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:82 msgid "**etc2**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:82 msgid "Textures using ETC2 compression are supported" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:84 msgid "**s3tc**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:84 msgid "Textures using S3TC (DXT/BC) compression are supported" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:86 msgid "**pvrtc**" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:86 msgid "Textures using PVRTC compression are supported" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:90 msgid "Custom features" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:92 msgid "" "It is possible to add custom features to a build; use the relevant field in " "the *export preset* used to generate it:" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:98 msgid "Overriding project settings" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:100 msgid "" "Features can be used to override specific configuration values in the " "*Project Settings*. This allows you to better customize any configuration " "when doing a build." msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:103 msgid "" "In the following example, a different icon is added for the demo build of " "the game (which was customized in a special export preset, which, in turn, " "includes only demo levels)." msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:108 msgid "After overriding, a new field is added for this specific configuration:" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:113 msgid "Default overrides" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:115 msgid "" "There are already a lot of settings that come with overrides by default; " "they can be found in many sections of the project settings." msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:121 msgid "Customizing the build" msgstr "" #: ../../docs/getting_started/workflow/export/feature_tags.rst:123 msgid "" "Feature tags can be used to customize a build process too, by writing a " "custom **ExportPlugin**. They are also used to specify which shared library " "is loaded and exported in **GDNative**." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_pc.rst:4 msgid "Exporting for PC" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_pc.rst:6 msgid "" "The simplest way to distribute a game for PC is to copy the executables " "(``godot.exe`` on Windows, ``godot`` on the rest), compress the folder and " "send it to someone else. However, this is often not desired." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_pc.rst:10 msgid "" "Godot offers a more elegant approach for PC distribution when using the " "export system. When exporting for PC (Linux, Windows, macOS), the exporter " "takes all the project files and creates a ``data.pck`` file. This file is " "bundled with a specially optimized binary that is smaller, faster and does " "not contain the editor and debugger." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:4 msgid "Exporting for iOS" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:6 msgid "" "These are the steps to load a Godot project in Xcode. This allows you to " "build and deploy to an iOS device, build a release for the App Store, and do " "everything else you can normally do with Xcode." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:11 #: ../../docs/tutorials/legal/complying_with_licenses.rst:15 #: ../../docs/development/compiling/compiling_for_windows.rst:9 #: ../../docs/development/compiling/compiling_for_x11.rst:9 #: ../../docs/development/compiling/compiling_for_osx.rst:9 #: ../../docs/development/compiling/compiling_for_android.rst:20 #: ../../docs/development/compiling/compiling_for_ios.rst:9 #: ../../docs/development/compiling/cross-compiling_for_ios_on_linux.rst:27 #: ../../docs/development/compiling/compiling_for_uwp.rst:9 #: ../../docs/development/compiling/compiling_for_web.rst:9 #: ../../docs/development/compiling/compiling_with_mono.rst:9 msgid "Requirements" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:13 msgid "" "You must export for iOS from a computer running macOS with Xcode installed." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:14 msgid "" "Download the Godot export templates. Use the Godot menu: Editor > Manage " "Export Templates" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:17 msgid "Export a Godot project to Xcode" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:19 msgid "" "In the Godot editor, open the **Export** window from the **Project** menu. " "When the Export window opens, click **Add..** and select **iOS**." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:22 msgid "" "The following export options are required. Leaving any blank will cause the " "exporter to throw an error:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:25 msgid "In the **Application** category * **App Store Team ID**" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:27 msgid "Everything in the **Required Icons** category" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:28 msgid "Everything in the **Landscape Launch Screens** category" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:29 msgid "Everything in the **Portrait Launch Screens** category" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:31 msgid "" "After you click **Export Project**, there are still two important options " "left:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:33 msgid "" "**Path** is an empty folder that will contain the exported Xcode project " "files." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:34 msgid "" "**File** will be the name of the Xcode project and several project specific " "files and directories." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:38 msgid "" "This tutorial uses **exported_xcode_project_name**, but you will use your " "project's name. When you see **exported_xcode_project_name** in the " "following steps, replace it with the name you used instead." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:42 msgid "" "Avoid using spaces when you choose your **exported_xcode_project_name** as " "this can lead to corruption in your XCode project file." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:45 msgid "When the export completes, the output folder should look like this:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:49 msgid "" "Opening **exported_xcode_project_name.xcodeproj** lets you build and deploy " "like any other iOS app." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:53 msgid "Active development considerations" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:55 msgid "" "The above method creates an exported project that you can build for release, " "but you have to re-export every time you make a change in Godot." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:58 msgid "" "While developing, you can speed this process up by linking your Godot " "project files directly into your app." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:61 msgid "In the following example:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:63 msgid "" "**exported_xcode_project_name** is the name of the exported iOS application " "(as above)." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:64 msgid "**godot_project_to_export** is the name of the Godot project." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:67 msgid "Steps to link a Godot project folder to Xcode" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:69 msgid "Start from an exported iOS project (follow the steps above)." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:70 msgid "In Finder, drag the Godot project folder into the Xcode file browser." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:74 msgid "" "3. In the dialog, make sure **Create folder references** is selected. This " "means you will be able to continue to edit your Godot project in its current " "location." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:79 msgid "See the **godot_project_to_export** folder in the Xcode file browser." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:80 msgid "Delete **exported_xcode_project_name.pck** from the Xcode project." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:84 msgid "" "6. Open **exported_xcode_project_name-Info.plist** and add a string property " "named **godot_path** (this is the real key name) with a value " "**godot_project_to_export** (this is the name of your project)" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:90 msgid "" "That's it! You can now edit your project in the Godot editor and build it in " "Xcode when you want to run it on a device." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:94 #: ../../docs/tutorials/platform/services_for_ios.rst:4 msgid "Services for iOS" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_ios.rst:96 msgid "" "Special iOS services can be used in Godot. Check out the :ref:" "`doc_services_for_ios` page." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:4 msgid "Exporting for Universal Windows Platform" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:6 msgid "" "There's no extra requirement to export an ``.appx`` package that can be " "installed as a Windows App or submitted to the Windows Store. Exporting UWP " "packages also works from any platform, not only from Windows." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:10 msgid "" "However, if you want to install and run the app, you need to sign it with a " "trusted signature. Currently, Godot does not support signing of packages, so " "you need to use external tools to do so." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:14 msgid "" "Also, make sure the Publisher Name you set when exporting the package " "matches the name used on the certificate." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:18 msgid "Limitations on Xbox One" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:20 msgid "" "As described in the `UWP documentation `__:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:25 msgid "Submitted as an \"App\"" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:23 msgid "available memory is 1GB" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:24 msgid "share of 2-4 CPU cores" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:25 msgid "shared access of GPU power (45%)" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:30 msgid "" "Submitted as a \"Game\" (through `Xbox Live Creators Program `__)" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:28 msgid "available memory is 5GB" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:29 msgid "4 exclusive CPU cores and 2 shared CPU cores" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:30 msgid "exclusive access to GPU power (100%)" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:32 msgid "" "Exceeding these memory limitations will cause allocation failures and the " "application will crash." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:35 msgid "Creating a signing certificate" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:37 msgid "" "This requires the ``MakeCert.exe`` and ``Pvk2Pfx.exe`` tools, which come " "with the Windows SDK. If you use Visual Studio, you can open one of its " "Developer Prompts, since it comes with these tools and they can be located " "in the path." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:41 msgid "" "You can get more detailed instructions from `Microsoft's documentation " "`__." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:44 msgid "First, run ``MakeCert`` to create a private key::" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:48 msgid "" "Where ``publisherName`` matches the Publisher Name of your package and " "``expirationDate`` is in the ``mm/dd/yyyy`` format." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:51 msgid "" "Next, create a Personal Information Exchange (.pfx) file using ``Pvk2Pfx." "exe``::" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:55 msgid "" "If you don't specify a password with ``/po`` argument, the PFX will have the " "same password as the private key." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:58 msgid "" "You will also need to trust this certificate in order to be able to install " "your app. Open the Command Prompt as Administrator and run the following " "command::" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:64 msgid "Signing the package" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:66 msgid "Finally, use ``SignTool.exe`` from the Windows SDK or Visual Studio::" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:71 msgid "Installing the package" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:73 msgid "" "As of the Windows 10 Anniversary Update, you are able to install packages " "simply by double clicking the ``.appx`` file from Windows Explorer." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:76 msgid "" "It's also possible to install by using the ``Add-AppxPackage`` PowerShell " "cmdlet." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_uwp.rst:78 msgid "" "If you want to update your already installed app, you must update the " "version number on the new package or first uninstall the previous package." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:4 msgid "Exporting for Android" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:6 msgid "" "Exporting for Android has fewer requirements than compiling Godot for it. " "The following steps detail what is needed to setup the SDK and the engine." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:10 msgid "Download the Android SDK" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:12 msgid "" "Download and install the Android SDK from https://developer.android.com/" "studio/" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:16 msgid "Install OpenJDK or Oracle JDK" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:18 msgid "" "Download and install `OpenJDK `__ " "or `Oracle JDK `__. Versions below JDK 8 may not work; some users have reported " "issues with the jarsigner (used to sign the APKs) in JDK 7." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:21 msgid "Create a debug.keystore" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:23 msgid "" "Android needs a debug keystore file to install to devices and distribute non-" "release APKs. If you have used the SDK before and have built projects, ant " "or eclipse probably generated one for you (on Linux and macOS, you can find " "it in the ``~/.android`` directory)." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:28 msgid "" "If you can't find it or need to generate one, the keytool command from the " "JDK can be used for this purpose:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:36 msgid "Make sure you have adb" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:38 msgid "" "Android Debug Bridge (adb) is the command line tool used to communicate with " "Android devices. It's installed with the SDK, but you may need to install " "one (any) of the Android API levels for it to be installed in the SDK " "directory." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:43 msgid "Setting it up in Godot" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:45 msgid "" "Enter the Editor Settings screen. This screen contains the editor settings " "for the user account in the computer (it's independent from the project)." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:51 msgid "Scroll down to the section where the Android settings are located:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:55 msgid "In that screen, the path to 3 files needs to be set:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:57 msgid "The *adb* executable (adb.exe on Windows)" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:58 msgid "The *jarsigner* executable (from JDK 6 or 8)" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:59 msgid "The debug *keystore*" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:61 msgid "Once that is configured, everything is ready to export to Android!" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:64 msgid "Exporting for Google Play Store" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:66 msgid "" "Uploading an APK to Google's Play Store requires you to sign using a non-" "debug keystore file; such file can be generated like this:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:73 msgid "" "This keystore and key are used to verify your developer identity, remember " "the password and keep it in a safe place! Use Google's Android Developer " "guides to learn more about `APK signing `__." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:76 msgid "Now fill in the following forms in your Android Export Presets:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:80 msgid "Release: Enter the path to the keystore file you just generated." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:81 msgid "Release User: Replace with the key alias." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:82 msgid "" "Release Password: Key password. Note that the keystore password and the key " "password currently have to be the same." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:84 msgid "" "**Now your export_presets.cfg file contains sensitive info;** if using a " "Version Control System, it is a good idea to remove it from public " "repositories." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:86 msgid "" "Don't forget to disable the ``Export With Debug`` button while choosing the " "APK's name." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:4 msgid "Exporting for the Web" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:6 msgid "" "HTML5 export allows publishing games made in Godot Engine to the browser. " "This requires support for `WebAssembly `__ and " "`WebGL `__ in the user's browser." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:11 msgid "" "Use the browser-integrated developer console, usually opened with :kbd:" "`F12`, to view **debug information** like JavaScript, engine, and WebGL " "errors." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:15 msgid "" "Many browsers, Chromium-based browsers specifically, will not load exported " "projects when **opened locally** per ``file://`` protocol. To get around " "this, use a local server." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:19 msgid "" "Python offers an easy method to start a local server. Use ``python -m " "SimpleHTTPServer`` with Python 2 or ``python -m http.server`` with Python 3 " "to serve the current working directory at ``http://localhost:8000``." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:25 msgid "WebGL 2" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:27 msgid "" "Until the *OpenGL ES 3* renderer is removed from Godot in favor of *Vulkan*, " "HTML5 export uses *WebGL 2* when the *GLES3* option selected." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:30 msgid "" "Usage of WebGL 2 is not recommended due to its expected removal from Godot " "without replacement." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:33 msgid "" "WebGL 2 is not supported in all browsers. **Firefox** and **Chromium** " "(Chrome, Opera) are the most popular supported browsers, **Safari** and " "**Edge** do not work. On **iOS**, all browsers are based on WebKit (i.e. " "Safari), so they will also not work." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:38 msgid "" "Godot's WebGL 2 renderer has issues with 3D and is no longer maintained." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:41 msgid "Limitations" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:43 msgid "" "For security and privacy reasons, many features that work effortlessly on " "native platforms are more complicated on the web platform. Following is a " "list of limitations you should be aware of when porting a Godot game to the " "web." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:48 msgid "Using cookies for data persistence" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:50 msgid "" "Users must **allow cookies** (specifically IndexedDB) if persistence of the " "``user://`` file system is desired. When playing a game presented in an " "``iframe``, **third-party** cookies must also be enabled. Incognito/private " "browsing mode also prevents persistence." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:55 msgid "" "The method ``OS.is_userfs_persistent()`` can be used to check if the " "``user://`` file system is persistent, but can give false positives in some " "cases." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:60 msgid "Full screen and mouse capture" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:62 msgid "" "Browsers do not allow arbitrarily **entering full screen**. The same goes " "for **capturing the cursor**. Instead, these actions have to occur as a " "response to a JavaScript input event. In Godot, this means entering full " "screen from within a pressed input event callback such as ``_input`` or " "``_unhandled_input``. Querying the :ref:`class_Input` singleton is not " "sufficient, the relevant input event must currently be active." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:69 msgid "" "For the same reason, the full screen project setting doesn't work unless the " "engine is started from within a valid input event handler. This requires :" "ref:`customization of the HTML page `." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:74 msgid "Audio autoplay" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:76 msgid "" "Chrome restricts how websites may play audio. It may be necessary for the " "player to click or tap or press a key to enable audio." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:79 msgid "" "Google offers additional information about their `Web Audio autoplay " "policies `__." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:83 msgid ":ref:`class_HTTPClient` and :ref:`class_HTTPRequest`" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:85 msgid "The HTTP classes have several restrictions on the HTML5 platform:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:87 msgid "Accessing or changing the ``StreamPeer`` is not possible" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:88 msgid "Threaded/Blocking mode is not available" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:89 msgid "" "Cannot progress more than once per frame, so polling in a loop will freeze" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:90 msgid "No chunked responses" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:91 msgid "Host verification cannot be disabled" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:92 msgid "" "Subject to `same-origin policy `__" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:95 msgid "Exported ``.html`` file must not be reused" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:97 msgid "" "On export, several text placeholders are replaced in the **generated HTML " "file** specifically for the given export options. It must not be reused in " "further exports." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:102 msgid "Boot splash is not displayed" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:104 msgid "" "The default HTML page does not display the boot splash while loading. " "However, the image is exported as a PNG file, so :ref:`custom HTML pages " "` can display it." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:109 msgid "Unimplemented functionality" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:111 msgid "" "The following functionality is currently unavailable on the HTML5 platform:" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:113 #: ../../docs/tutorials/threads/using_multiple_threads.rst:7 #: ../../docs/tutorials/threads/thread_safe_apis.rst:7 msgid "Threads" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:114 #: ../../docs/tutorials/plugins/gdnative/index.rst:2 msgid "GDNative" msgstr "GDNative" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:116 msgid "Clipboard synchronisation between engine and operating system" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:117 msgid "" "Networking other than :ref:`class_HTTPClient` and :ref:" "`class_WebSocketClient`" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:119 msgid "" "Check the `list of open HTML5 issues on Github `__ to see " "if the functionality you're interested in has an issue yet. If not, open one " "to communicate your interest." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:125 msgid "Serving the files" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:127 msgid "" "Exporting for the web generates several files to be served from a web " "server, including a default HTML page for presentation. A custom HTML file " "can be used, see :ref:`doc_customizing_html5_shell`." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:131 msgid "" "The generated ``.html`` file can be used as ``DirectoryIndex`` in Apache " "servers and can be renamed to e.g. ``index.html`` at any time, its name is " "never depended on by default." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:135 msgid "" "The HTML page draws the game at maximum size within the browser window. This " "way it can be inserted into an ``