На каком языке писать в Unity и как начать работать на C#

На каком языке писать в Unity и как начать работать на C# Полезное

Unity — это игровой движок, в котором логику игр и приложений программируют на языке C# (произносится «си шарп»). Другого языка для скриптов у движка сейчас нет: варианты вроде UnityScript и Boo, которые встречаются в старых статьях, из движка удалены. Слаг «юнити» в адресе — это просто русское написание названия Unity.

Ниже отвечаю коротко на главный вопрос, показываю, почему язык именно один, из чего состоит проект Unity, и разбираю первый рабочий скрипт на C# с типичными ошибками новичка. В конце — путь старта в 2026 году и заметка про лицензию.

На каком языке пишут в Unity

Короткий ответ: на C#. Это единственный язык, на котором пишут скрипты в Unity «из коробки», без сторонних плагинов. Когда спрашивают «на каком языке Unity» или «unity c#» — речь всегда про C#.

Сам движок Unity вышел в 2005 году и работает кроссплатформенно: одну игру можно собрать под ПК, мобильные, консоли и веб. Но выбирать язык, как в исходной версии этой статьи, не нужно — выбор давно сведен к одному.

Ваш код на C# движок сначала компилирует в управляемые (managed) сборки, а исполняет их либо через среду выполнения Mono (с JIT-компиляцией там, где она разрешена), либо через IL2CPP. IL2CPP преобразует промежуточный код в C++ и заранее собирает нативный бинарник (AOT); он нужен прежде всего для поддержки платформ и обхода ограничений на JIT, а прирост скорости — возможный, но не единственный и не гарантированный эффект. Для новичка это деталь: пишете вы всегда на C#, а как код исполняется — забота движка.

Куда делись UnityScript, Boo и «другие языки»

Старые руководства перечисляют для Unity целый список языков. Это устаревшая информация, и здесь легко запутаться, поэтому разведу термины явно.

Раньше движок поддерживал два дополнительных языка. UnityScript — это был собственный язык Unity, синтаксисом похожий на JavaScript, из-за чего его часто звали просто «JS». Это не настоящий JavaScript и не тот язык, на котором пишут сайты, — отдельный язык движка. Boo — язык с синтаксисом в духе Python.

Оба удалены. Boo убрали еще в эпоху Unity 5, поддержку UnityScript прекратили около 2017 года и позже вырезали его компилятор. Сегодня писать на них нельзя. Остальное из старых списков (Lua, Python, Rust) языками скриптов Unity никогда официально не было.

Язык Статус в Unity сейчас
C# Основной и единственный язык скриптов «из коробки»
UnityScript (похож на JavaScript) Удален (поддержка прекращена около 2017 года)
Boo Удален (в эпоху Unity 5)
C/C++ Не для скриптов; через нативные плагины (DLL, .so) для быстрых модулей
Lua Только через сторонние решения (например, MoonSharp), обычно для модов
Python, Rust и другие Для скриптов игры официально не поддерживаются

Вывод из таблицы простой: учить надо C#, а C++ и Lua — это узкие сценарии на потом, а не альтернатива основному языку.

Из чего состоит проект Unity: сцены, GameObject, компоненты

Чтобы код на C# было куда прикрутить, разберу устройство проекта на трех понятиях.

Сцена (Scene) — это отдельный экран или уровень: меню, локация, бой. Игра состоит из одной или нескольких сцен, между которыми переключаются.

GameObject — любой объект на сцене: персонаж, камера, свет, кнопка. Сам по себе GameObject почти пустой — это контейнер.

Компонент (Component) — то, что навешивают на GameObject и что задает его поведение и вид: Transform (позиция и поворот), Renderer (как объект рисуется), Collider (физические границы). Ваш скрипт на C# — тоже компонент.

Цепочка такая: сцена содержит GameObject, на GameObject висят компоненты, один из компонентов — ваш C#-скрипт. Скрипт становится компонентом, когда его класс наследуется от MonoBehaviour — это базовый класс Unity, дающий доступ к жизненному циклу объекта.

Первый скрипт на C#: вращаем объект

Вот минимальный рабочий скрипт целиком. Он заставляет объект плавно вращаться. Создайте в проекте файл Rotator.cs, вставьте код и перетащите скрипт на любой 3D-объект на сцене (например, на куб):

using UnityEngine;

// Класс наследуется от MonoBehaviour, поэтому его можно
// повесить на GameObject как компонент.
public class Rotator : MonoBehaviour
{
    // [SerializeField] показывает поле в инспекторе Unity, но оставляет
    // его private - состояние класса не открывается наружу без нужды.
    [SerializeField] private float speed = 90f;   // скорость вращения, градусов в секунду

    // Update вызывается движком автоматически каждый кадр.
    void Update()
    {
        // Поворачиваем объект вокруг оси Y.
        // Умножение на Time.deltaTime делает скорость
        // одинаковой при любом числе кадров в секунду.
        transform.Rotate(0f, speed * Time.deltaTime, 0f);
    }
}

Ожидаемый результат: после нажатия Play куб начнет ровно вращаться вокруг вертикальной оси примерно на 90 градусов в секунду (полный оборот за 4 секунды). В инспекторе появится поле Speed, и вращение можно ускорить или замедлить, не трогая код.

Что здесь важно по строкам. MonoBehaviour превращает класс в компонент. Update() — метод, который движок сам зовет на каждом кадре, туда кладут логику, работающую постоянно. Для однократной настройки при старте есть метод Start(). Time.deltaTime — время, прошедшее с прошлого кадра; на него умножают, чтобы движение не зависело от частоты кадров.

Три частые ошибки новичка

Ошибка 1: имя класса не совпадает с именем файла. Файл назвали Cube.cs, а класс внутри — Rotator. Unity не даст повесить скрипт на объект и покажет ошибку в духе:

Can't add script component because the script class cannot be found.
Make sure there are no compile errors and the file name and class name match.

Исправление: имя файла и имя публичного класса должны совпадать. Класс Rotator — файл Rotator.cs.

Ошибка 2: забыли Time.deltaTime. Пишут поворот без множителя времени:

transform.Rotate(0f, speed, 0f);   // без Time.deltaTime

Результат: при speed = 90 объект поворачивается на 90 градусов не за секунду, а за КАЖДЫЙ кадр. При 60 кадрах в секунду это 5400 градусов в секунду — куб превращается в мельтешение, и скорость еще и скачет на разных компьютерах. Исправление — умножить на Time.deltaTime, как в рабочем примере выше.

Ошибка 3: скрипт не прикреплен к объекту. Код написан и компилируется без ошибок, но на сцене ничего не происходит. Причина: скрипт лежит в проекте, но не висит ни на одном GameObject, поэтому Update() не вызывается. Исправление — выделить объект и перетащить на него скрипт или нажать Add Component и выбрать его по имени.

С чего начать в 2026 году

Дорожная карта до первого работающего прототипа:

  1. Скачать Unity Hub с официального сайта — это менеджер, который ставит и обновляет версии движка.
  2. Через Hub установить актуальную LTS-версию Unity — на сентябрь 2026 года это Unity 6.3 LTS (6000.3); LTS означает долгую поддержку и меньше сюрпризов, чем в свежих экспериментальных сборках. Пример со скриптом ниже проверен именно на этой версии.
  3. Поставить редактор кода: Visual Studio, JetBrains Rider или Visual Studio Code с расширением для C#.
  4. Создать проект из шаблона (2D или 3D) и повторить пример со скриптом выше.
  5. Подтянуть основы C#: переменные, методы, классы, условия и циклы — без них дальше будет тяжело.

Честный срок: до уверенного первого прототипа — недели, до готовности делать свои небольшие игры — месяцы регулярной практики, а не «несколько дней».

Если не получилось: скрипт не вешается на объект — проверьте совпадение имени файла и класса (ошибка 1); объект стоит на месте — скрипт не прикреплен (ошибка 3); в консоли красные ошибки — откройте их двойным кликом, компилятор укажет файл и строку.

Лицензия и Runtime Fee

Для старта Unity бесплатен: на 16 сентября 2026 года тариф Unity Personal доступен физлицам и небольшим организациям, у которых выручка и привлеченное финансирование за последние 12 месяцев меньше 200 000 долларов; выше идут платные подписки по числу мест. Условия могут меняться, поэтому перед коммерческим релизом проверьте актуальную страницу тарифа Unity.

Отдельно про Runtime Fee — плату за установки игры, которую Unity анонсировала в 2023 году и которая вызвала большой скандал в индустрии. Unity отменила ее 12 сентября 2024 года; по официальному FAQ сбор так и не был внедрен и не применяется ни к Unity 6, ни к другим версиям — движок остался на обычных подписках.

Выводы

  • Язык Unity сегодня один — C#; выбирать язык, как советуют старые статьи, не нужно.
  • UnityScript (похожий на JavaScript) и Boo из движка удалены; это не альтернативы, а история.
  • C++ и Lua применяют точечно — нативные плагины и моды, а не основная разработка вместо C#.
  • Проект строится из сцен, объектов (GameObject) и компонентов; скрипт на C# становится компонентом через наследование от MonoBehaviour.
  • Три ошибки новичка предсказуемы: имя файла не как класс, забытый Time.deltaTime, неприкрепленный скрипт.

Где применяется / связь с практикой

C# в Unity — это все игровое поведение: движение персонажа, стрельба, интерфейс, сохранения, простейший ИИ противников. Тот же C# используют и вне игр — в приложениях на .NET, так что навык переносимый.

Освойте тему на практике

Освоить движок и язык на реальных проектах, а не на разрозненных примерах, можно на курсе Unity Game Developer. Basic в Otus — с нуля до уровня Junior. Практикующим разработчикам, которым нужны сложные проекты, ближе продвинутый курс по Unity. Посмотреть уровень и формат занятий до оплаты помогут бесплатные вебинары — на них разбирают конкретные задачи и отвечают на вопросы.

Смежные темы: Основы GameDev или как создаются игры, План создания собственной игры, Как научиться программировать с нуля: с чего начать.

FAQ

Нужно ли знать C++, чтобы делать игры на Unity?
Нет. Обычная разработка идет полностью на C#. C++ нужен только для нативных плагинов — производительных модулей, которые подключают к движку; новичку это не требуется.

Можно ли делать игры в Unity без программирования?
Частично да. У Unity есть официальный пакет Visual Scripting (графы), плюс готовые компоненты и ассеты из Asset Store — на них собирают прототипы и часть проектов без единой строки кода. Но для сложной логики, интеграций, оптимизации и самостоятельной разработки обычно все равно понадобится C# — это основной и самый универсальный путь.

Какой редактор кода выбрать для C# в Unity?
Подойдут Visual Studio, JetBrains Rider или Visual Studio Code с расширением для C#. Функционально для старта разницы почти нет; Unity Hub при установке предлагает вариант по умолчанию.

OTUS Журнал
Бесплатные открытые уроки (поп-ап)