Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач 02.doc
Скачиваний:
79
Добавлен:
28.03.2015
Размер:
735.23 Кб
Скачать
  1. Глава 2. Организация взаимодействия персонажа с виртуальной рабочей средой.

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

Логотип Unity

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. [12]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • скиннинг на 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. В частности, от него унаследованы без изменений:

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

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

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

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

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

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

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

Всё это приводит к тому, что программы на 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.

Frame2

Frame3