Написание скриптов в Godot на C#. Введение
Поддержка C # — это новая функция в Godot 3.0. Таким образом, вы все еще можете столкнуться с некоторыми проблемами или найти места, где документация может быть улучшена. Пожалуйста, сообщайте о проблемах с C# в Godot на странице движка Github . И любые проблемы с документацией на странице документации Github .
На этой странице приведено краткое введение в C#, что это такое и как его использовать в Godot. После этого вы можете посмотреть, как использовать определенные функции, прочитать о различиях между C# и GDScript API и (повторно) посетить раздел «Скрипты» в пошаговом руководстве.
C# — это язык программирования высокого уровня, разработанный Microsoft. В Godot это реализовано с платформой Mono 5.x .NET, включая полную поддержку C# 7.0. Mono — это реализация Microsoft .NET Framework с открытым исходным кодом, основанная на стандартах ECMA для C# и Common Language Runtime. Хорошей отправной точкой для проверки его возможностей является страница «Совместимость» в документации Mono.
ПРИМЕЧАНИЕ: Это не полномасштабное руководство по языку C# в целом. Если вы еще не знакомы с его синтаксисом или функциями, обратитесь к руководству по Microsoft C# или найдите подходящее введение в другом месте.
Установка C# в Godot
Скачайте и установите Mono SDK
Если вы используете Godot 3.0.2, вы должны будете скачать Mono 5.4.
Godot 3.0.3+ требует Mono 5.12 (на любой платформе)
ПРИМЕЧАНИЕ: Чтобы скачать Mono v5.12+ на Mac, найдите ссылку «Стабильный канал» на странице загрузок Mono . Канал Visual Studio является более ранней версией Mono и не будет работать с Godot 3.0.3+.
Вам также будет нужен MSBuild (по крайней мере, версия 15.0), который должен поставляться с Mono.
ПРИМЕЧАНИЕ: Инструкции по установке более старых версий Mono в Linux см. на этой странице . Более старые версии Mono для macOS и Windows можно найти здесь .
Кроме того, в вашей версии Godot должна быть включена поддержка Mono, поэтому убедитесь, что вы загружаете версию Godot Mono.
Если вы собираете Godot из исходного кода, обязательно следуйте инструкциям по включению поддержки Mono в вашу сборку, описанным на странице Компиляция с Mono .
Таким образом, вы должны установить 1) правильную версию Mono SDK для вашей версии Godot и 2) версию Godot Mono.
Настройка внешнего редактора
Хотя у Godot есть собственный редактор скриптов, его поддержка C# поддерживается на минимальном уровне, и рекомендуется использовать внешнюю IDE или редактор, например Microsoft Visual Studio Code или MonoDevelop, которые предоставляют автозаполнение, отладку и другие полезные функции при работе с C#. Чтобы настроить его, в Godot нажмите «Редактор», затем «Настройки редактора». Прокрутите вниз до настроек «Mono». Под Mono нажмите «Редактор», и на этой странице выберите свой внешний редактор.
ПРИМЕЧАНИЕ: Если вы используете Visual Studio Code, убедитесь, что вы загрузили и установили расширение .NET tools. Без этого Godot получит ошибку при попытке создать новый проект или отредактировать скрипт на C#.
Создание скрипта на C#
После того, как вы успешно настроили C# для Godot, вы должны увидеть следующую опцию при выборе «Прикрепить скрипт» в контекстном меню узла в вашей сцене:
Обратите внимание, что хотя некоторые особенности меняются, большинство вещей работают одинаково при использовании C#. Если вы новичок в Godot, вы можете просмотреть туториалы на «Написание сценариев (скриптов)» на этом этапе. Хотя в некоторых местах документации все еще отсутствуют примеры C#, большинство вещей можно легко перенести из GDScript.
Создание проекта и процесс работы
Когда вы создаете первый скрипт C#, Godot инициализирует файлы проекта C# для вашего проекта Godot. Это включает в себя создание решения C# ( .sln ) и файла проекта ( .csproj ), а также некоторых служебных файлов и папок ( .mono , иногда Properties ). Все они, кроме .mono , важны и должны храниться в вашей системе контроля версий. .mono может быть безопасно добавлен в список игнорирования вашего VCS (Система управления версиями). Для устранения неполадок иногда может помочь удаление папки .mono и ее востановление.
Обратите внимание, что в настоящее время есть некоторые проблемы, когда Godot и проект C# не синхронизированы; если вы удаляете, переименовываете или перемещаете объекты, такие как сценарии или узлы, они могут больше не совпадать. Для решения этой проблемы может помочь редактирование файла решения вручную.
Пример: если вы создали сценарий (например, Test.cs ) и удалили его в Godot, компиляция завершится неудачно, поскольку теперь ожидается, что отсутствующий файл все еще будет находиться в проекте CS. Сейчас вы можете просто открыть файл .csproj и найти ItemGroup , там должна быть строка, подобная следующей:
Просто удалите эту строку, и ваш проект должен снова заработать. То же самое работает при переименовании и перемещении объектов, просто переименуйте и переместите их в файл проекта, если это необходимо.
Пример
Вот пустой C# скрипт с некоторыми коммен��ариями, чтобы продемонстрировать, как он работает.
using Godot; using System; public class YourCustomClass : Node < // Member variables here, example: private int a = 2; private string b = "textvar"; public override void _Ready() < // Called every time the node is added to the scene. // Initialization here. GD.Print("Hello from C# to Godot :)"); >public override void _Process(float delta) < // Called every frame. Delta is time since the last frame. // Update game logic here. >>
Как вы видите, вещи, которые обычно находятся в Global Scope в GDScript, такие как Godot функция print, доступны в пространстве имен GD. Список их см. на справочных страницах классов для @GDScript и @GlobalScope .
ПРИМЕЧАНИЕ: Имейте в виду, что класс, который вы хотите присоединить к вашему узлу, должен называться как файл .cs. В противном случае вы получите следующую ошибку и не сможете запустить сцену: «Cannot find class XXX for script res://XXX.cs.».
Основные отличия между C# и GDScript
API C# использует PascalCase вместо snake_case в GDScript/C++. Где это возможно, поля и методы get/set были преобразованы в свойства. В целом, C# Godot API стремится быть настолько идиоматичным, насколько это возможно.
Текущие ошибки и известные проблемы
Поскольку поддержка C# является довольно новой для Godot, есть некоторые проблемы с развитием и вещи, которые все еще необходимо устранить. Ниже приведен список наиболее важных проблем, о которых вы должны знать при погружении в C# в Godot, но, если сомневаетесь, взгляните также на официальный трекер ошибок для проблем Mono .
- Как объяснялось выше, проект C # не всегда автоматически синхронизируется при удалении, переименовании или перемещении объектов в Godot ( #12917 )
- Написание плагинов редактора и инструментальных скриптов на C# пока не поддерживается
- Экспорт Mono проектов поддерживается только для настольных платформ (Linux, Windows и macOS). HTML5, Android, iOS и UWP в настоящее время не поддерживаются ( #18364 comment )
- Присоединенные сценарии C# должны ссылаться на класс, имя которого соответствует имени файла и является уникальным в сборке проекта. ( #7402 comment ) (от автора перевода: ну, для шарповцев это не новинка)
Производительность C# в Godot
Согласно некоторым тестам производительности (бенчмаркам), производительность C# в Godot — хотя обычно в одной и той же величине — примерно в 4 раза выше, чем у GDScript в некоторых простых случаях. Для самой высокой производительности C++ все еще немного быстрее; особенности будут варьироваться в зависимости от вашего варианта использования. GDScript, вероятно, достаточно быстрый для большинства общих сценариев рабочих нагрузок. C# быстрее, но требует некоторой дорогой подготовки при использовании с Godot.
Использование NuGet пакетов в Godot
Пакеты Nuget можно устанавливать и использовать с Godot, как и в любом проекте. Многие IDE (такие как VS Code) могут добавлять пакеты напрямую. Их также можно добавить вручную, добавив ссылку на пакет в файле .csproj, расположенном в корне проекта:
Всякий раз, когда пакеты добавляются или изменяются, запускайте восстановление NuGet в корне каталога проекта, и чтобы убедиться, что пакеты NuGet будут доступны для использования MSBuild, запустите:
$ msbuild /t:restore
Как писать на c++ в годот?
Недавно я решил перейти в gamedev и в роли движка выбрал Godot.До этого у меня был опыт работы с c++.Я не хотел бы изучать Gdscript или c#, а хотел бы продолжить работать на c++, но не знаю как.
- Вопрос задан 19 июн. 2023
- 2491 просмотр
Комментировать
Решения вопроса 0
Ответы на вопрос 2
you don’t choose c++. It chooses you
C++ не основной язык для Godot, но есть вот такое расширение, чтобы писать на С++.
https://docs.godotengine.org/en/stable/tutorials/s.
Выберите правильную версию godot и следуйте инструкции. Она оочень подробная + есть несколько видео на известной площадке, где также рассказывают как использовать С++.
Ответ написан 19 июн. 2023
Нравится 2 3 комментария
ChatGPT чтоль? Чего такой ответ странный? 😀

tukreb, не, вообще на чатжпт не похоже.
Да и ссылка легко гуглится в документации
tukreb, Я даже не знаю комплимент это или упрек. Вот вам для сравнения ответ от chatgpt.
Отлично, что вы решили попробовать Godot для своих игровых проектов! Хотя Godot поддерживает Gdscript и C# в качестве основных языков программирования, вы можете использовать и C++ для разработки в этом движке.
Важно отметить, что работа с C++ в Godot немного отличается от обычной разработки на этом языке. Вместо написания всего кода на C++, вам потребуется создать динамическую библиотеку (DLL) на C++, которую затем можно будет использовать в Godot. Взаимодействие с движком осуществляется через его API на C++.
Вот несколько шагов, которые вам понадобятся для использования C++ в Godot:
1. Установите Godot Engine: Перейдите на официальный сайт Godot (https://godotengine.org/) и загрузите последнюю версию движка. Установите его на свой компьютер.
2. Создайте проект: Запустите Godot и создайте новый проект. Выберите пустой шаблон или тот, который лучше всего соответствует вашим потребностям.
3. Настройте среду разработки: Если вы используете IDE, такое как Visual Studio или Visual Studio Code, настройте его для работы с Godot. На сайте Godot есть подробные инструкции по настройке различных IDE.
4. Создайте модуль на C++: В Godot создайте свой C++ модуль. Модуль представляет собой DLL, который будет содержать ваш пользовательский код на C++. Модуль может содержать классы, функции и другие элементы, которые вам понадобятся для разработки игры.
5. Взаимодействие с движком: Используйте API Godot на C++ для взаимодействия с движком. API предоставляет функции для работы с узлами, ресурсами, сигналами и другими элементами Godot.
6. Соберите и подключите модуль: Соберите вашу DLL и подключите ее к проекту Godot. Затем вы сможете использовать свой C++ код в скриптах и компонентах игры.
Обратите внимание, что использование C++ в Godot может быть сложным и требует знания языка C++, а также понимания API и архитектуры Godot. Будьте готовы к изучению документации и примеров кода для получения лучшего понимания процесса.
Также стоит отметить, что Gdscript и C# предоставляют более простой путь для начинающих
1. Установите необходимые инструменты: Убедитесь, что у Вас установлены C++ компилятор и среда разработки, такие как Visual Studio или GCC, в зависимости от Вашей операционной системы.
2. Скомпилируйте движок Godot: Перейдите на официальный сайт Godot и загрузите исходный код движка. Затем следуйте инструкциям по компиляции для Вашей операционной системы. В результате Вы получите исполняемый файл движка, который Вы сможете использовать для разработки.
3. Создайте новый проект: Откройте Godot и создайте новый проект. Выберите пустой шаблон или любой другой шаблон, который Вам нравится.
4. Создайте новый скрипт: В окне редактора Godot выберите «Скрипт» и выберите C++ как язык скрипта. Затем выберите место, где Вы хотите сохранить скрипт.
5. Начните писать код: Откройте созданный скрипт в выбранной Вами среде разработки и начните писать код на C++. Godot предоставляет API для работы с C++, и Вы можете использовать функции и классы из этого API для создания игровой логики.
6. Скомпилируйте и запустите проект: После написания кода скомпилируйте проект с помощью выбранной Вами среды разработки. Затем запустите полученный исполняемый файл и проверьте, что Ваш код работает внутри Godot.
Обратите внимание, что использование C++ в Godot может быть сложнее, чем использование Gdscript или C#, поэтому рекомендуется ознакомиться с документацией и руководствами по C++ в Godot, чтобы получить более подробную информацию о возможностях и ограничениях.
Уроки Godot Engine

#1 – Введение в движок Godot. Почему про него все говорят?
Представляем вам курс для новичков по изучению игрового движка Godot Engine с нуля. В ходе данного курса для начинающих мы с вами разработаем несколько полноценных проектов, научимся строить мультиплеер и разберемся в написании кода внутри движка Godot.
Видеоурок
Полезные ссылки:
- Официальный сайт Godot ;
- Статья на нашем сайте .
Информация про Godot Engine
Игровой движок Godot появился относительно недавно. Его первый выход в свет был в феврале 2014 года. На момент релиза движок обладал минимальным необходимым набором функционала без перегруженной системы вкладок и настроек.
За эту простоту он быстро стал любимчиком многих молодых разработчиков. На сегодняшний день Godot Engine постепенно перерастает из формата любительского движка в формат полноценного движка для разработки как 2Д, так и 3Д проектов.
Сам движок написан при использовании языков Си и C++ . Курсы по этим языкам вы также можете найти на нашем сайте.
Стоимость использования
Godot Engine является полностью бесплатным игровым движком. Можно сразу сказать, что и Unity и Unreal тоже предлагают бесплатно свои движки, но есть существенная разница. Они оба предлагают бесплатно движки до определённого момента. В Unity цена стартует от 100 долларов за версию Pro и вам придется платить эту цену, если ваши игры приносят более 100 тысяч долларов в год. В Unreal нужно платить определенный процент от прибыли если вы привесили сумму дохода в размере 1 млн долларов.
Простое написание кода
Godot схож с движком GameMaker в плане простоты написания кода. GameMaker заявляет что он движок, на котором можно делать игры без знания программирования, что отчасти является правдой, а отчасти нет, ведь программирование может и не нужно знать, но вот методы что используются внутри движка знать нужно.

Godot – это один из простейших игровых движков в плане написания кода. И если сравнивать с GameMaker, то нужно выделить большую разницу между ними. GameMaker позволяет создать лишь 2Д проекты, а Godot может позволит вам создать как 2D, так и 3D проект.
План курса
В ходе курса мы с вами с нуля разработаем несколько полноценных игр на основе игрового движка Godot Engine. Мы будем создавать как 2Д проекты, так и 3Д проекты. К концу курса «Уроки Godot Engine для новичков с нуля» у вас будут достаточно хорошие навыки в создании проектов на основе данного движка.
Дополнительный курс
На нашем сайте также есть углубленный курс по изучению игрового движка Unity . В ходе огромной программы вы изучите не только движок Unity, но также научитесь писать консольные и интерфейсные программы на языке C#. Также вы изучите сам движок Unity, включая создание 2D и 3D игр, а также игр и приложений с дополненной реальностью.
Задание к уроку
Ответьте на несколько вопросов:
- Какая стоимость использования Godot?
- Какой язык используется в движке?
- Возможна ли разработка 3Д проектов с мультиплеером?
Языки скрипта¶
В этом уроке вы получите обзор доступных языков скриптов в Godot. Вы узнаете о плюсах и минусах каждого варианта. В следующей части вы напишете свой первый скрипт, используя GDScript.
Скрипты присоединяются к узлу и расширяют его поведение. Это означает, что скрипты наследуют все функции и свойства узла, к которому они присоединяются.
Например, возьмем игру, в которой узел Camera2D следует за кораблем. По умолчанию узел Camera2D следует за своим родителем. Представьте, что вы хотите, чтобы камера дрожала, когда игрок получает урон. Поскольку эта функция не встроена в Godot, вы должны написать скрипт дрожания камеры и прикрепить его к Camera2D.
Доступные языки скрипта¶
Godot предлагает для работы пять языков программирования: GDScript, C#, VisualScript, а также C++ и C при использовании технологии GDNative. Есть и другие поддерживаемые сообществом языки , но официальные только эти пять.
Вы можете использовать несколько языков в одном проекте. Например, работая в команде, вы можете писать логику игрового процесса на GDScript, так как он быстро пишется, позволить дизайнерам уровней писать сценарии заданий в графическом языке VisualScript, и использовать C# или C++ для написания сложных алгоритмов, максимизирования производительность. Вам решать.
Мы предоставляем такую гибкость, чтобы отвечать потребностям разработчиков и разных игровых проектов.
` В Godot 4.0 из ядра будет убрана поддержка VisualScript.`__Так, создание новых проектов с использованием визуального программирования не рекомендуется. В будущем VisualScript может быть интегрирован в Godot 4.x только как расширение.
Пока что Godot 3.x поддерживает VisualScript, но рекомендуется использовать GDScript , особенно если планируется дальнейший переход проекта на Godot 4.
Какой из них мне следует использовать?¶
Если вы новичок, мы рекомендуем начать с GDScript. Мы создали этот язык специально для Godot и нужд разработчиков. Он имеет лёгкий и простой синтаксис и предоставляет наиболее плотную интеграцию с Godot.

Для C# вам будет необходим внешний редактор кода, например VSCode или Visual Studio. Несмотря на то что поддержка C# уже развита, для него вы найдете меньше обучающих ресурсов чем для GDScript. Поэтому мы рекомендуем C# в основном тем пользователям, которые уже имеют опыт работы с этим языком.
Давайте посмотрим свойства и особенности каждого языка, а также его плюсы и минусы.
GDScript код¶
GDScript — объектно-ориентированный и императивный язык программирования, созданный для Godot. Сделан от и для разработчиков игр, чтобы уменьшить затрачиваемое время на программирование игр. В его особенности входят:
- Простой синтаксис, который приводит к созданию маленьких по объёму файлов.
- Молниеносная компиляция и загрузка.
- Тесная интеграция редактора, с завершением кода для узлов, сигналов и дополнительной информации из сцены, к которой он прикреплен.
- Встроенные типы векторов и преобразований, что делает его эффективным для интенсивного использования линейной алгебры, так необходимых для игр.
- Поддерживает несколько потоков так же эффективно, как и языки со статической типизацией.
- Нет сборщика мусора, поскольку эта функция в конечном итоге мешает при создании игр. По умолчанию движок считает ссылки и управляет памятью за вас в большинстве случаев, но вы также можете управлять памятью, если вам это необходимо.
- Последовательная типизация. Переменные по умолчанию имеют динамическую типизацию, но вы также можете подсказки типов для сильной проверки типов.
GDScript похож на Python, поскольку вы структурируете свои блоки кода с помощью отступов, но на практике он работает иначе. Он вдохновлён несколькими языками, включая Squirrel, Lua и Python.
Почему не использовать сразу Python или Lua?
Много лет назад Godot использовал Python, затем Lua. Интеграция обоих языков требовала много работы и имела серьёзные ограничения. Например, поддержка потоков была большой проблемой в Python.
Разработка отдельного языка не требует от нас больше работы, и мы можем приспособить его к потребностям разработчиков игр. Сейчас мы работаем над оптимизацией производительности и функциями, которые было бы сложно предложить на сторонних языках.
.NET / C#¶
Поскольку Microsoft C# является любимцем среди разработчиков игр, мы добавили официальную поддержку для него. C# — это сформировавшийся и гибкий язык с огромным количеством готовых библиотек, для него написанных. Его поддержка была добавлена благодаря щедрому пожертвованию от Microsoft.

C# предлагает превосходный компромисс между производительностью и простотой использования, но вы должны помнить о его сборщике мусора.
Вы должны использовать версию Mono редактора Godot, чтобы писать на C#. Вы можете загрузить его на странице загрузки.
Поскольку Godot использует среду выполнения Mono.NET, теоретически любая сторонняя библиотека .NET или программная платформа может использоваться для написания скриптов в Godot, так же как любой CLR-совместимый язык программирования, такой как F#, Boo или ClojureCLR. Однако, на практике C# является единственным официально поддерживаемым .NET вариантом.
Код на GDScript выполняется не так быстро, как скомпилированный С++ или C#. Однако, большинство кода вызывает функции внутри движка, написанные на C++ с использованием быстрых алгоритмов. В большинстве случаев, при написании игровой логики, между языками GDScript, C#, или C++ нет значительного отличия в производительности.
VisualScript (Визуальный скриптинг)¶
` В Godot 4.0 из ядра будет убрана поддержка VisualScript.`__Так, создание новых проектов с использованием визуального программирования не рекомендуется. В будущем VisualScript может быть интегрирован в Godot 4.x только как расширение.
Пока что Godot 3.x поддерживает VisualScript, но рекомендуется использовать GDScript , особенно если планируется дальнейший переход проекта на Godot 4.
Визуальный Сценарий — это визуальный язык программирования на основе блоков, в котором вы эти блоки соединяете в логику. Это может быть отличным инструментом для людей, далеких от программирования, таких как игровые дизайнеры и художники.

Вы можете использовать другие языки для создания блоков, уникальных для вашей игры. Например: для создания ИИ, квестов или диалогов. В этом и есть сила VisualScript.
Хоть это и предоставляет все необходимые базовые блоки для создания полноценной игры, мы не рекомендуем использовать VisualScript таким образом. Так как он медленней чем другие языки программирования.
C и C++ через GDNative¶
GDNative позволяет писать игровой код на C или C++ без необходимости перекомпиляции или даже перезапуска Godot.

Вы можете использовать любую версию языка или смешивать марки/бренды и версии компиляторов для сгенерированных общих библиотек, благодаря использованию нами внутреннего C API Bridge.
GDNative будет лучшим выбором для производительности, но не обязательно использовать его во всей игре. Другие части могут быть написаны на GDScript, C# или VisualScript.
Во время работы с GDNative, доступные типы, функции, и свойства очень близки к API C++ движка Godot.
Подведение итогов¶
Скрипты ‐ это файлы, содержащие код, которые вы прикрепляете к узлу, для расширения его функционала.
Godot официально поддерживает пять языков для написания скриптов, предоставляя гибкий выбор между удобством и производительностью.
Вы можете смешивать языки, например, для создания ресурсоёмких алгоритмов на C или C++, а для всей остальной игровой логики использовать GDScript или C#.
© Copyright 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0). Revision 8532774c .