как писать код в юнити

Введение в программирование C# на Unity

Несмотря на то, что встроенные компоненты Unity могут быть очень разносторонними, вскоре ты обнаружишь, что тебе нужно выйти за пределы их возможностей, чтобы реализовать свои собственные особенности геймплея. Unity позволяет тебе создавать свои компоненты, используя скрипты. Они позволяют активировать игровые события, изменять параметры компонентов, и отвечать на действия Игрока каким тебе угодно способом.

Unity поддерживает следующие языки программирования: C# и Javascript. Языки C# и Javascript считаются одними из самых популярных среди программистов. На C# пишутся программы для компьютера, веб приложения, а Javascript активно используется для создания интернет-страниц. В нашем случае:

Установка среды разработки

Чтобы писать скрипты, необходим редактор кода. В комплекте с Unity идет MonoDevelop, так что его не требуется устанавливать отдельно. Другой вариант — использовать Visual Studio — мы рекомендуем ее. Сменить среду разработки можно в настройках: Edit → Preferences, а затем выбери панель External Tools.

Вывод сообщения в консоль Unity

Когда ты напишешь свой первый код и добавишь его в Unity, Unity проверит код и, если в нем нет ошибок, произойдет компиляция.

Консоль (англ. — Console) – это панель в Unity, которая отображает ошибки в коде (отображаются красным значком), предупреждения (отображается желтым значком) и позволяет выводить справочную информацию (белый значок). По умолчанию эта панель отображается в нижней части программы в закладке Console. Если эта панель не отображается на экране, то в главном меню выбери Window → Console.

%D0%9A%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C UnityКонсоль Unity

Чтобы создать скрипт выбери Assets → Create → C# Script. Имя скрипта должно быть обязательно на английском и начинаться с большой буквы. Открой созданный скрипт и напиши:

Скрипт не будет работать до тех пор, пока экземпляр скрипта не будет присоединен к игровому объекту. Ты можешь прикрепить скрипт перетащив его на игровой объект в окно Иерархия или через окно Инспектор выбранного игрового объекта.

Код, который должен вызываться один раз при старте программы, ты можешь написать внутри функции Start(), как в примере выше.

Код, который должен вызываться каждый кадр, ты можешь написать внутри функции Update().

Переменные

Если ты хочешь сохранить данные (количество жизней игрока, патронов или очков опыта), то для этого используются переменные. Переменные разделяются на типы, которых существует огромное множество.

Переменная — поименованная область памяти, адрес которой можно использовать для осуществления доступа к данным и изменять значение в ходе выполнения программы. Переменные хранят в себе информацию разного типа, эти данные называют значением переменной. Для каждого типа данных есть свой тип переменной. Например:

Инициализация переменной

Все переменные в C# должны быть объявлены (инициализированы) до их применения. Например:

Задать значение переменной можно, в частности, с помощью оператора присваивания — знак «=». Кроме того, при объявлении переменной можно сразу задать ее значение. Например:

Переменные численных типов можно складывать, вычитать, умножать и делить:

+ — операция сложения;

— операция вычитания;

* — операция умножения;

/ — операция деления.

А вот так сумму чисел можно вывести в консоль:

Счетчик времени с помощью Time.deltaTime

Практически во всех играх требуется знать сколько времени прошло с момента запуска игры (пример: игры на время). Но в Unity мы можем узнать только сколько прошло времени между кадрами (напоминаю, что игра – это набор кадров, которые быстро меняются. В одну секунду количество таких кадров может достигать 60 и больше).

Чтобы узнать сколько времени прошло между кадрами — используется Time.deltaTime.

Чтобы сделать дробное число целым, ставим перед ним (int).

Позиция объекта

Координаты объекта хранятся в компоненте Transform, свойство — position. Каждая координата имеет тип float. Вот так можно выводить координаты объекта в консоль:

Источник

Программирование в Unity для опытных программистов

В Unity скрипты можно использовать для разработки практически любого элемента игры или интерактивного контента с графикой реального времени. Unity поддерживает скрипты на C#, созданные в соответствии с одним из двух основных подходов: традиционным и широко использующимся объектно-ориентированным подходом и информационно-ориентированным подходом, который теперь тоже поддерживается в Unity в отдельных случаях благодаря нашему высокопроизводительному многопоточному стеку информационно-ориентированных технологий (DOTS).

Unity поддерживает C#, стандартный в отрасли язык программирования, в некоторой степени похожий на Java или C++.

По сравнению с C++, C# легче в изучении. Кроме того, он относится к категории языков «с управлением памятью», то есть он автоматически распределяет память, устраняет утечки и так далее.

Как правило C# удобнее C++, если вам нужно в первую очередь разработать игру, а потом уже работать над различными сложными аспектами программирования.

gameobject 0

Вся интерактивность и игровой процесс в Unity строятся на основе трех фундаментальных блоков: объекты GameObject, компоненты и переменные.

Любой объект в игре является GameObject, будь то персонажи, источники света, спецэффекты, декорации и все остальное.

Компоненты
Игровые объекты сами по себе не имеют никакого поведения. Для того, чтобы объект начал работать, игровому объекту нужны различные атрибуты, добавляемые с помощью компонентов.

Компоненты (Component) определяют поведение игровых объектов, к которым они прикреплены, и управляют ими. Простой пример — создание источника света, включающее прикрепление компонента Light к GameObject (см. ниже). Таким же примером может быть добавление компонента Rigidbody к объекту, чтобы он мог падать.

Компоненты имеют ряд свойств или переменных, которые можно настроить в окне Inspector редактора Unity и/или с помощью скрипта. В примере выше к свойствам источника света относятся дальность, цвет и интенсивность.

В Unity есть множество самых разнообразных компонентов, но вы вскоре можете столкнуться с необходимостью создать собственный компонент для реализации своих алгоритмов. Это можно сделать с помощью скриптов, в которых описана ваша собственная игровая логика и поведение объектов, и которые затем прикрепляются к игровым объектам как компоненты. Каждый скрипт связывается с внутренними механизмами Unity путем реализации класса, производного от встроенного класса MonoBehaviour.

Компоненты на основе скриптов позволяют запускать игровые события, проверять объект на предмет столкновений, применять физические свойства, программировать реакцию на управление пользователя и многое другое. См. Unity Scripting API для дополнительной информации.

Scripting in Unity Megacity Demo 02

Традиционная модель «игровой объект — компонент» хорошо работает и сегодня, поскольку она проста как для программистов, так и других пользователей, а также удобна для создания интуитивных интерфейсов. Добавите компонент Rigidbody к объекту GameObject — он начнет падать, добавите компонент Light — GameObject начнет излучать свет. Все остальное также подчиняется этой простой логике.

При этом система компонентов создана на основе объектно-ориентированной платформы, что создает сложности для разработчиков при работе с кэшем и памятью развивающегося оборудования.

Компоненты и игровые объекты относятся к «тяжелым объектам C++». Все объекты GameObject имеют имя. Их компоненты представляют собой оболочки для C# поверх компонентов на C++. Это упрощает работу с ними, но может влиять на производительность, если они будут храниться в памяти без явной структуры. Объект C# может находиться на любом участке памяти. Объект C++ также может находиться в любом участке памяти. Группировка и последовательное размещение объектов в памяти отсутствуют. При каждой загрузке в центральный процессор для обработки объект приходится собирать по частям из разных участков памяти. Это может сильно замедлить загрузку, а оптимизация потребует много усилий.

Для решения этих проблем мы начали перерабатывать базовые системы Unity на основе высокопроизводительного, многопоточного стека информационно-ориентированных технологий или DOTS (в настоящее время в статусе предварительной версии).

DOTS позволяет вашей игре эффективно использовать все возможности новейших многоядерных процессоров. Стек состоит из следующих компонентов:

ECS — это новая система компонентов в составе DOTS; все традиционные объектно-ориентированные манипуляции над GameObject отражаются на экземпляре в новой системе. Название «Компонент» никак не изменилось. Важнейшее отличие — в структуре данных. Подробнее об этом можно узнать из статьи «О DOTS: Entity Component System».

Scripting in Unity Megacity Demo 03

Помимо того, что это улучшенный подход к написанию кода игры с точки зрения дизайна, ECS позволяет вам использовать систему задач C# Unity и компилятор Burst и тем самым полностью использовать преимущества современного оборудования.

Многопоточные системы DOTS помогают создавать игры для самых разных устройств и разрабатывать богатые игровые миры с большим числом элементов и сложными симуляциями. Производительный код, в свою очередь, снижает тепловыделение и продлевает время автономной работы мобильных устройств. Переход от объектно-ориентированного к информационно-ориентированному подходу упрощает вам многократное использование кода, а другим позволяет легче понять и дополнить его при необходимости.

Некоторые из технологий DOTS все еще находятся в статусе предварительной версии, поэтому мы советуем разработчикам использовать стек для решения отдельных вопросов производительности проекта, не строить на базе DOTS весь проект. См. раздел «Дополнительные ресурсы» в конце этой страницы, где указаны ссылки на ключевые ресурсы DOTS.

Scripting in Unity Debugging

Настройка и отладка в Unity эффективна, потому что все переменные игрового процесса отображаются непосредственно в процессе игры, что позволяет менять их на лету без дополнительного программирования. Игру можно приостановить в любой момент или переходить от одного оператора к другому по очереди.

Вот несколько полезных ресурсов по оптимизации в Unity:

Наилучшие методики для общих случаев (включая подробные советы по оптимизации системы интерфейса Unity)

Источник

Working In Unity

This section serves as a complete introduction to the Unity software.

EditorPerspectiveShot

Contained in this section are the following chapters:

Basics Downloading and installing Unity, getting set up to start your first project, and a quick tour of the editor.

Asset Workflow How to get assets into Unity from a variety of different sources, including graphics, art and sound from external programs, Package files from other developers, and ready-made assets from our Asset Store and the Standard Assets bundled with Unity.

The Main Windows A more in-depth look at each of the main windows you’ll use every day in Unity, including useful shortcuts and hotkeys.

Creating Gameplay How to get started making Scenes, Game Objects, Components, reading input and adding gameplay or interactivity to your project.

Editor Features Information about many of the Editors powerful features, which will help you customize your workflow, integrate with external tools, and extend the editor itself.

Advanced Development Information for those who aren’t brand-new to development, who want to take projects further using Plugins, Asset Bundles, and other more advanced development techniques.

Advanced Editor Topics Take full control of the editor, find out how it works under the hood, and learn how to script and customise the asset pipeline and the Editor itself.

Licenses and Activation Understanding how to activate Unity and manage your licenses.

Upgrade Guides Important notes for upgrading projects that were authored with older versions of Unity.

Источник

Консоль

The Console Window (menu: Window > Console) shows errors, warnings and other messages generated by Unity. To aid with debugging, you can also show your own messages in the Console using the Debug.Log, Debug.LogWarning and Debug.LogError functions.

Console

The toolbar of the console window has a number of options that affect how messages are displayed.

The Clear button removes any messages generated from your code but retains compiler errors. You can arrange for the console to be cleared automatically whenever you run the game by enabling the Clear On Play option.

You can also change the way messages are shown and updated in the console. The Collapse option shows only the first instance of an error message that keeps recurring. This is very useful for runtime errors, such as null references, that are sometimes generated identically on each frame update. The Error Pause option will cause playback to be paused whenever Debug.LogError is called from a script (but note that Debug.Log will not pause in this way). This can be handy when you want to freeze playback at a specific point in execution and inspect the scene.

Finally, there are two options for viewing additional information about errors. The Open Player Log and Open Editor Log items on the console tab menu access Unity’s log files which record details that may not be shown in the console. See the page about Log Files for further information.

Obsolete API Warnings and Automatic Updates

Among other messages, Unity shows warnings about the usage of obsolete API calls in your code. For example, Unity once had “shortcuts” in MonoBehaviour and other classes to access common component types. So, for example, you could access a Rigidbody on the object using code like:

These shortcuts have been deprecated, so you should now use code like:

When obsolete API calls are detected, Unity will show a warning message about them. When you double-click this message, Unity will attempt to upgrade the deprecated usage to the recommended equivalent automatically.

Stack trace logging

You can specify how accurate stack trace should be captured when log message is printed to the console or log file.

ConsoleStackTrace

This is especially helpful when the error message is not very clear, by looking at the stack trace, you can deduct from what engine area the error appears. There are three options for logging stack trace:

Источник

Как писать код в юнити

Unity сделан, чтобы дать вам возможности для создания лучших интерактивных развлечений или мультимедиа. Данное руководство создано, чтобы помочь вам узнать, как использовать Unity, от базовых до продвинутых приемов. Его можно читать от начала до конца, или использовать в качестве справочника.

For documentation on the newest features introduced in 5.3, see What’s New in 5.3 in this Manual.

For information about upgrading your Unity projects from older versions, see the Upgrade Guide in this Manual.

Further sources of information

For further guidance, please see:

Если вы обнаружите, что на ваш вопрос нет ответа в руководстве, пожалуйста, спросите на Unity Answers или на форуме Unity. Вы сможете найти ответ на свой вопрос там.

The Unity Knowledge Base; a collection of answers to questions posed to Unity’s Support teams.

Tutorials; step by step video and written guides to using the Unity Editor.

Unity Ads Knowledge Base; a guide to including ads in your game.

Everyplay documentation; a guide to the Everyplay mobile game replay platform.

Asset Store help; help on Asset Store content sharing.

Known issues

Is a feature not working as you expect it to? It might be a ‘Known Issue’. Please check with the Issue Tracker at issuetracker.unity3d.com.

StructEditor

Working in Unity

A complete introduction to the Unity software.

struct2d

Unity 2D

All of Unity’s 2D-specific features including gameplay, sprites and physics.

StructGraphics

Графика

Визуальная сторона Unity, в том числе Камеры и Освещение.

StructPhysics

Физика

Физика в Unity, в том числе работа с твердыми телами и манипулирование ими в 3D пространстве.

StructUNet

Networking

How to implement Multiplayer and networking.

StructScripting

Скриптинг

Программирование ваших игр с использованием скриптинга в Unity.

StructAudio

Аудио

Аудио в Unity, в том числе клипы, источники, слушатели, импорт и настройка звука.

StructAnimation

Анимация

StructUI

StructNavigation

Навигация в Unity, в том числе ИИ и поиск пути.

ServicesSection

Unity Services

Our Services for making and improving your game.

StructVR

Virtual reality

Integration with VR.

StructContributingToUnity

Contributing to Unity

Suggest modifications to some of Unity’s source code.

StructPlatformSpecific

Особенности платформы

Конкретная информация для многих не-настольных и веб-платформ, поддерживаемых Unity.

Источник

Общеобразовательный справочник
Adblock
detector