Дайте пожалуйста совет по изучению Unity? — Toster.ru

.

Среда Unity как инструмент разработки.

⇐ Предыдущая1234Следующая ⇒

 
 

Unity — это мультиплатформенный инструмент для разработки двух- и трёхмерных приложений и игр, работающий под операционными системами Windows и OS X. Созданные с помощью Unity приложения работают под операционными системами Windows, OS X, Android, Apple iOS, Linux, а также на игровых приставках Wii, PlayStation 3 и Xbox 360. Есть возможность создавать интернет-приложения с помощью специального подключаемого модуля к браузеру Unity, а также с помощью экспериментальной реализации в рамках модуля Adobe Flash Player. Позже от поддержки Flash отказались. Приложения, созданные с помощью Unity, поддерживают DirectX и OpenGL.

Программирование для чайников — C# — Часть 1 (Unity 3D)

[12]

Unity характеризуется следующими возможностями:

o Сценарии на C#, JavaScript (модификация) и Boo;

o Игровой движок полностью увязан со средой разработки. Это позволяет прямо в редакторе испытывать игру;

o Работа с ресурсами возможна через простой Drag&Drop.

o Интерфейс редактора настраиваемый;

o Осуществлена система наследования объектов;

o Поддержка импорта из очень большого количества форматов;

o Встроенная поддержка сети;

o Есть решение для совместной разработки — Asset Server;

o Также можно использовать подходящий пользователю способ контроля версий. К примеру, Tortoise SVN или Source Gear;

К особенностям данной среды разработки можно отнести

o широкие возможности импорта

o полностью настраиваемый и доступный большинству людей интерфейс

o кроссплатформенность

o гибкость и расширяемость

o гибкая ценовая политика

o доступно для VITV и epichnoetv

o поддержка физики ткани (PhysX Cloth)

o Assets Store, так называемый магазин компонентов

o наличие бесплатной версии с некоторыми ограничениями

o скиннинг на CPU

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

Влияние компонента на поведение или положение того или иного объекта в сцене (свойства компонента) определяется с помощью переменных компонента.

Ресурсы (Assets) проекта – это строительные/составные блоки всех проектов Unity, в качестве которых могут быть использованы файлы изображений (текстур), 3D-моделей, звуковые файлы, которые будут использоваться при создании в качестве ресурсов. Поэтому в любой папке проекта Unity всегда существует подкаталог с именем Assets, где хранятся все файлы ресурсов.

Когда какой-либо ресурс (например, геометрическая 3D-модель) используется в сцене игры, он становится в терминологии Unity игровым объектом (Game Object). Все эти объекты изначально имеют хотя бы один компонент, задающий его положение в сцене и возможные преобразования (компонент Transform). Переменные компонента Transform определяет положение (position), поворот (rotation) и масштаб (scale) объекта в его локальной декартовой прямоугольной системе координат X, Y, Z.

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

Компоненты (components) в Unity3d имеют различное назначение: они могут влиять на поведение, внешний вид и многие другие функции объектов, к которым прикрепляются (attaching). Unity предоставляет множество компонентов различного назначения.

Для обеспечения интерактивности различных 3D-приложений в Unity3d используются скрипты, которые также рассматриваются средой как компоненты. Помимо JavaScript, Unity3d также предоставляет возможность использовать для написания скриптов языки C# и Boo (производный от языка Python). Для написания скриптов можно воспользоваться встроенным редактором Unity3d MonoDevelop.

В качестве языка для написания скриптов в Unity применяются C#, JavaScript и Boo. Наиболее приоритетными языками для нас были C# и JavaScript.

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

o обозначения начала/конца блока кода фигурными скобками;

o обозначения, ассоциативность и приоритет большинства встроенных операций (присвоение, арифметические, логические, побитовые операции, операции инкремента/декремента);

o синтаксис описания и использования переменных и функций (порядок «тип имя», использование модификаторов, обязательность скобок для функций, описание формальных параметров);

o синтаксис всех основных конструкций: условного оператора, циклов, оператора множественного выбора;

o отсутствие процедур (их заменяют функции типа void);

o наименования встроенных элементарных типов (кроме bool, в JavaScript этот тип называется boolean);

o использование точки с запятой

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

Оба языка позволяют определить класс внутри класса. Внутренние классы JavaScipt имеют доступ к нестатическим членам родительского класса; кроме того, внутри методов можно определять локальные классы, имеющие доступ по чтению к локальным переменным, и безымянные (анонимные) локальные классы, которые фактически позволяют создавать экземпляры объектов и интерфейсов, перекрывающие методы своего класса, непосредственно в месте их использования. На этом механизме в JS-программах может строиться обработка событий (событие генерирует вызов метода, в исходном классе-обработчике являющегося абстрактным; там, где нужен конкретный обработчик события, программист создаёт экземпляр локального анонимного класса — наследника базового класса-обработчика и непосредственно использует его). Таким образом, исчезает необходимость в специальном типе и синтаксической поддержке для событий, но сам код, создающий обработчики, несколько более сложен для понимания.

Подход C# более напоминает C++. Внутренние классы в C# имеют доступ только к статическим членам внешнего класса, а для доступа к нестатическим членам нужно явно указывать экземпляр внешнего класса. Локальные внутренние классы в C# не поддерживаются, обработка событий в нём не требует таких классов, поскольку строится на других механизмах.

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

C#, в свою очередь, развивается быстрее, гораздо слабее ограничивая себя в добавлении новых проблемно-ориентированных возможностей. Особенно эта тенденция проявилась в версии C# 3.0, в которой, например, появились SQL-подобные запросы. Новые возможности при этом строятся так, чтобы язык оставался языком общего назначения.

C# — язык относительно новый. Microsoft изучила существующие языки, такие как Java, Delphi и Visual Basic, и изменила некоторые аспекты языка для лучшего соответствия нуждам некоторых типов приложений.

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

Далее приведен один и тот же фрагмент скрипта, на языках C# и JavaScript.


⇐ Предыдущая1234Следующая ⇒


Дата добавления: 2016-11-12; просмотров
: 642 | Нарушение авторских прав


Похожая информация:


Поиск на сайте:


Работа с Unity в 2D

.

.

Привет! Я — Алексей Науменко, .NET Developer в Plarium Kharkiv. Я хочу рассказать о том, как начинал свою карьеру, и посоветовать, с чего разработчику начать изучение Unity.

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

Как я начал программировать

Я учился в ХАИ по специальности «Телекоммуникации». У нас был преподаватель, который конструировал беспилотники. Благодаря ему уже на 4-м курсе я начал писать простой код на С для микроконтроллеров, которые управляют передачей данных с земли на БПЛА. Тогда я решил, что нужно выучить какой-то актуальный язык программирования, чтобы писать на нём постоянно, а не только для решения узких задач.

Выбирал я между С# и Java: читал книги по этим языкам, но потом просто открыл Visual Studio и Java IDE и сделал выбор в пользу первого по «обертке». Не самый правильный способ анализа преимуществ и недостатков, но о выборе я не жалею.

Почему пошел в геймдев и выбрал Unity

В 5–7 классах мы с другом пытались сделать игру. И хотя получилась ерунда, романтика процесса осталась со мной. К тому же я люблю играть, особенно в древние RPG.

После университета я работал в нескольких продуктовых компаниях: год занимался веб-программированием, потом 4 года разрабатывал ПО для call-центров. Но меня всё время преследовала идея попробовать себя в разработке игр. Так что в свободное от работы время я стал думать, какой движок использовать для будущей игры.

Многие разработчики используют Unity и Unreal Engine, но я хотел изучить все варианты. Поэтому я стал разбираться, на чем написаны популярные проекты. Оказалось, что это либо самописные движки, как, например, у Naughty Dog, либо движки, о которых очень мало информации в интернете — чтобы работать с ними, нужно, скорее всего, некоторое время работать в индустрии и знать хотя бы общие принципы построения игровых движков.

Я вернулся к выбору между Unity и Unreal Engine. И так как на тот момент я уже 4 года программировал на .NET, выбор был прост: в Unity есть C#, а в Unreal Engine — нет. Еще один плюс Unity: я погуглил некоторые интересные мне вопросы и почти на все из них нашел попытки ответить. Пусть не всегда профессиональные, но информация была, и было с кем ее обсудить.

У Unity есть аналог StackOverflow — Unity Answers. Там очень просто найти ответы на конкретные вопросы на начальном этапе, поэтому порог входа очень низкий, особенно если человек понимает хотя бы общие принципы программирования.

С чего начать обучение

Я изучал уже решенные задачи, похожие на те, что интересовали меня. Однажды я искал конкретное решение, но не нашел его в Asset Store. Поэтому начал мониторить форумы и наткнулся на парня, который делал именно то, что мне было нужно, но в Store его решение не пропустили по каким-то требованиям. Я написал ему сообщение и предложил купить его наработку. Он очень обрадовался возможности подзаработать — это был румынский десятиклассник. Чуть ли не лучшее мое вложение в изучение движка: 10$ плюс столько же за Swift-платеж.

Новичку полезно посмотреть, как работают над задачами другие люди, даже если это что-то примитивное. Ведь решений может быть множество. Когда начинаешь, как будто шаришь пальцами в темноте. Ты не знаешь, насколько удачно выбранное решение: возможно, с его реализацией возникнут проблемы в будущем или есть более простой вариант.

Всегда лучше ориентироваться на какой-то пример. Я распотрошил покупку: там было много наворочено, но я переделал это решение под свои нужды. Пока разбирал этот пример, многие вопросы начального уровня отпали. Так начал понимать основные принципы работы с Unity и продолжил разбираться с возможностями движка.

За месяц-полтора изучил базу, но не поверхностно, а достаточно предметно — то, что было нужно на тот момент. Сначала возникло очень много вопросов, как и с любой новой технологией. Я смотрел нативный код и читал мануалы, чтобы разобраться, почему что-то работает в Unity именно так, а не иначе.

Что изучать для Unity?

Но, конечно, будет тяжелее и дольше, если нет конкретных задач и ты не понимаешь, зачем это делаешь.

Нет смысла изучать Unity просто так — стоит начинать с решения конкретных проектных задач. Лучше сразу определиться: «Я хочу сделать Pac-Man». Начинаешь думать, что для этого понадобится: например, нужно реализовать управление персонажем. Желтое существо ест белые точки. Суще
ство должно понимать, что наткнулось на съедобный объект — значит, нужно начать с определения соприкосновения съедобной точки с Пакменом. Тогда появляется конкретная проблема и необходимость искать пути ее решения — а это, по-моему, и есть лучший способ изучения технологии.

Переход с .NET на Unity на практике

Когда мы собеседуем кандидатов, прямо говорим, что не проверяем знания Unity, а фокусируемся на .NET. На практике мы убедились: человека, который знает .NET, гораздо легче обучить работе с движком, чем того, кто начал изучать язык параллельно с Unity.

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

Иногда мы собеседуем Senior или Middle+ .NET программистов, которые не знакомы с Unity вообще. При этом человек не переходит на позицию Junior, потому что в Plarium, да и в работе с движком, нет понятия Unity Junior. Если с .NET всё хорошо, освоить движок будет очень просто.

Что почитать

Кроме Unity Answers есть еще UnifyWiki. Можно декомпилировать код и посмотреть результат (он не обфусцирован).

На старте очень пригодились форумы (answers.unity3d.com и forum.unity3d.com). Также я читал книгу Game Engine Architecture Джейсона Грегори. Автор в ней не говорит конкретно о Unity, но подробно рассматривает составные части и особенности игровых движков в целом. Он в деталях описывает, из чего состоит движок, какая математика нужна, как устроен рендеринг. Эта книга расширяет представление о Unity: я начал понимать, что в этом движке есть или должно быть, что с него спрашивать. Единственная трудность — для прочтения этой книги нужно быть очень мотивированным: она не нудная, но достаточно объемная.

Преимущества работы с Unity

Большие компании любят Unity за кроссплатформенность. Если ты что-то написал, оно билдится и под iOS, и под Android — пусть и с надстройками, но зато сразу работает без особых плясок. Конечно, если это не касается платежки 🙂

В нашем случае преимущество также в том, что Plarium — официальный партнер Unity с поддержкой уровня Enterprise Support. Нам не только быстро отвечают на запросы, но и предоставляют больше открытого кода, и мы можем сами что-то вскрыть и допилить.

Надеюсь, информация будет полезна тем, кто планирует работать с Unity. Успехов!

Похожие статьи:

Насколько я знаю, вы можете пойти с c #.

Вы также можете использовать неясный язык «Boo». ( Найдено по адресу https://boo-language.github.io/ )

В прошлом (до 2012 года) можно было использовать странный вариант Java, но теперь он устарел и не работает.

Обратите внимание, что Unity строит Android / iOS и многие другие платформы. Тот факт, что iOS-программирование использует объектный-c или Swift, абсолютно не имеет отношения к уровню Unity3D. Unity запрограммирован с использованием c #.


Когда вы создаете для iPhone в Unity, он компилирует вашу моно-сборку (написанную на C # или JavaScript) в собственный ARM-код.

Средство разработки также создает проект stub xcode и ссылки, которые скомпилировали lib. Вы можете добавить объективный код C к этому проекту xcode, если есть родной материал, который вы хотите сделать, который пока не отображается в среде Unity (например, доступ к компасу и / или гироскопу).


Некоторые из основных различий между синтаксисом сценариев C # и Javascript в Unity.

Создание и Использование Скриптов

http://unity3d.com/learn/tutorials/modules/beginner/scripting/c-sharp-vs-javascript-syntax

но имейте в виду, что C # — лучший способ развития в единстве


Вы можете использовать C #, Javascript, Boo.

Если вычислительные требования к функции, которую вы пишете, вызывают сильную нагрузку на процессор, Javascript дает достаточно хорошую производительность для большинства случаев.


Можно использовать любой из следующих трех языков сценариев:

  1. JavaScript
  2. C #
  3. Бу

Но мой личный выбор — C #, потому что я нахожу его быстрее по сравнению с другими двумя.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *