Итак, Unity3d.

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

1. Устанавливаем.

Здесь можно было бы подробно описать ход установки, но я думаю Вы сами с этим справитесь, а я дам полезные рекомендации.
Если у Вас нет еще дистрибутива Unity3d, то скачать его можно по адресу http://unity3d.com/unity/download/ .
Во время установки следует обратить внимание на то, что Unity3d не дружит с русскими именами папок, и устанавливать ее стоит в папку, в которую есть полный доступ. Следовательно для владельцев Windows Vista и Windows 7 следует помнить, что если Вы будете устанавливать Unity3d в Program Files, т.е. в папку по умолчанию, то для нормальной работы придется либо дать полный доступ на папку с Unity3d, либо запускать ее с правами администратора. Для пользователей Windows XP об это не стоит волноваться.
Когда дойдете до этапа регистрации, то делайте онлайн регистрацию и выбирайте либо бесплатную, либо триальную профессиональную версию (по моему опыту лучше взять бесплатную, а если понадобится функционал про-версии, то просто в папку с Unity3d положить лекарство под другим именем, и ничего сверх естественного выполнять для этого не надо… этого я вам не говорил )); замечу, что вылеченная версия всегда выдает ошибку при выходе из среды, и вылетает немного чаще, но это уже издержки производства, и свои сцены надо будет сохранять почаще).
После установки, можно приступать к созданию своего первого проекта.

2. Создаем свой первый проект.

Первый запуск Unity3d скорее всего откроет демо проект острова, который демонстрирует возможности Unity3d по работе с ландшафтом и другими плюшками. Те кто установил про-версию увидят нормальную водичку, с размытием попадая под нее и отражениями окружающего мира, но и на бесплатной версии сцена смотрится прилично. Можете побегать по острову, послушать «карканье» птиц )), ну еще чем-нибудь позаниматься )). Не советую сразу изучать состав сцены и проекта, пока не стоит.

Первое что предстоит сделать, это войти в настройки программы, выбрать редактор исходных кодов (я надеюсь, что у Вас найдется время скачать и установить Visual Studio для работы с исходным кодом на C#, иначе можете пользоваться встроенным редактором, который есть в комплекте со средой; все, что он может – подсвечивать синтаксис) и поставить галочку напротив поля “Show Project Wizard At Startup”. Эта опция необходима для выбора проекта, с которым вы будете работать, открывая систему. Если оставить как есть, то при запуске среды, будет открываться последний проект.

Далее можно например перезапустить Unity3d, чтобы проверить, отображается ли визард проектов, либо создать новый проект через меню.
Итак при создании нового проекта мы снимем все галочки со стандартных пакаджей, чтобы не забивать ими голову. Должно получиться примерно так, как показано на следующем скриншоте.
Хочу напомнить о том, что Unity3d не «любит» русские имена папок и создавать проект в папке «Мои документы» не стоит, иначе вы будете получать ошибки доступа. Создайте папку «Projects» например, на диске D и в ней создайте свой первый проект.

3. Знакомимся со средой.
По умолчанию Вы внешний вид (на сколько мне не изменяет память) выглядит как на следующем скриншоте (у меня все настроено под себя, сейчас выбран Layout типа Tall, если вам захочется посмотреть другие типа расположения основных окон, либо открыть те, которые не отображены по умолчанию, то вы сможете найти их в меню Window).

Итак, по умолчанию есть пять важных вкладок:
1) Scene – 3d-вид разрабатываемой сцены. Аналогичные окна вы можете наблюдать в любом 3D редакторе. Позволяет манипулировать объектами сцены (положение, вращение, масштаб, редактировании ландшафта например и т.д.).
2) Game – в данном случае не активно, находится «за» вкладкой Scene – вид из камеры по умолчанию.
3) Hierarchy – иерархия сцены. Здесь находятся все объекты текущей сцены. По умолчанию содержит только одну камеру. Это окно можно так же назвать термином – граф сцены, т.к. любой объект сцены может иметь несколько потомков или быть потомком других объектов.
4) Project – окно, управляющее ресурсами. Здесь будет находиться все, начиная от моделей, заканчивая материалами, шрифтами, скриптами и т.д. С подробным списком возможных ресурсов я знакомить Вас не буду, рассмотрим ниже несколько.
5) Inspector – самое на мой взгляд важное окно. Отображает все свойства выбранного объекта в окнах Hierarchy, Project и др. Здесь для каждого объекта сцены будут настройки трансформаций, тэги и слои, а так же настройки различных компонентов, назначенных объекту.
6) Console – это окно не отображено по умолчанию, но очень важно при отладке ошибок. С ним вы очень быстро научитесь обращаться. Найти его можно в меню Window.

Так же главное окно содержит несколько полезных кнопок: слева вверху – кнопки управления видом окна Scene и манипуляций с объектами, вверху посередине – кнопки запуска отладки проекта и ее остановки (при запуске становится активным окно Game которое отображает все, что происходит в проекте с видом из главной камеры).

4. Начинаем осваиваться.

Начнем мы осваивать среду с окна Project, т.к. ресурсы – это главная составляющая любого проекта. Давайте создадим папочки для текстур, материалов и скриптов. Для этого щелкаем по кнопке «Create» данного окна и выбираем пункт Folder. Должно получиться примерно так:

Работа с окном Project напоминает работу с папкой файловой системы, так что Вы быстро освоитесь.
Теперь добавим несколько текстур в проект. Что бы это сделать есть два основных способа: перетащить файлы изображений из проводника Windows в нужную папку окна Project либо щелкнуть правой кнопкой мыши по нужной папке в окне Project и выбрать пункт контекстного меню «Import New Asset…». Я предпочитаю первый вариант.
О том, где взять текстуры я рассказывать не буду, с их поиском Вы должны справиться сами. У меня есть установленный 3ds Max, в папке Maps которого можно найти достаточно. Мне хватит двух – диффузной карты кирпичей и их бамп карты.
Должно получиться как на следующем скриншоте.

Выбрав одну из текстур, Вы увидите ее параметры импорта в окне Inspector.

Здесь можно настроить импорт текстур так, как Вы этого хотите. По умолчанию Unity3d импортирует текстуры с сжатием DXT1 – для не прозрачных текстур, DXT5 – для прозрачных. Но Вы можете выбрать любой другой формат хранения текстуры в памяти из предлагаемых. Так же можно задать параметры создания Mip-уровней детализации текстур.
Стандартная бамп-карта из 3ds Max является картой высот. Но т.к. материалы Unity3d конечно же рассчитаны на карты нормалей, нам нужно установить флажок «Generate Bumpmap», настроить параметры генерации и нажать на кнопку «Apply».

Две текстуры у нас есть, теперь перейдем к созданию материала на их основе.
Щелкаем правой кнопкой по папке Materials и выбираем «Create – > Material». Я переименую созданный материал в «Brick» и давайте рассмотрим его параметры в Инспекторе.

По умолчанию создается материал Diffuse, которому можно назначить цвет и одну текстуру. Назначить текстуру можно перетащив ее из окна Project на специальную область либо щелкнуть в данной области на маленькую кнопочку Select и выбрать текстуру из списка. Я предпочитаю первый вариант, так же как и с импортом ресурсов.

Но данный материал меня не устраивает, т.к. он не содержит поде для карты нормалей, с помощью которой я могу придать материалу более реалистичный вид. К счастью Unity3d имеет порядка сорока готовых материалов, которыми можно пользоваться. Выбрать тип материала можно из выпадающего списка, в котором сейчас выбран материал Diffuse. Для примера я выберу материал Paralax Specular для придания большей реалистичности нашему материалу.

Ну вот, наш первый материал готов.

Теперь давайте добавим в сцену первые объекты.
Создаются стандартные объекты с помощью меню GameObject.

Давайте добавим в сцену плоскость, куб и источник света. Разместим их примерно как показано на следующем скриншоте.

Сейчас в сцене выбран источник сета. Давайте взглянем, какие параметры есть в инспекторе для этого объекта.
Как и любой другой объект сцены, источник света имеет настройки трансформации. Ниже настроек трансформаций находится область настроек компонента источника света. Я не зря употребляю термин – компонент, т.к. поведение объектов в сцене Unity3d описывается назначенными им компонентами. Как создавать свои компоненты мы познакомимся позже. Я расскажу как их можно назначить объекту и как удалить.
Чтобы назначить компонент выбранному объекту сцены или проекта есть два пути:
1) Назначение стандартных компонентов Unity3d осуществляется через меню «Component».

В этом меню так же будут появляться пользовательские компоненты, когда они будут разработаны.
2) Второй способ – назначение пользовательских компонентов, путем перетаскивания скриптов из окна Project на окно Inspector активному объекту. Этот способ демонстрирует возможность назначения поведения объектам простым перетаскиванием, что является достаточно высокоуровневой задачей. Как это происходит, будет описано чуть ниже.

Выбрав в инспекторе куб можно увидеть сразу три назначенных компонента: Mesh Filter – компонент, позволяющий назначить объекту геометрическую сетку любой из импортированных моделей; Box Collider – физический коллайдер-примитив в виде бокса, говорящий другим физическим объектам сцены, что с этим объектом можно столкнуться; Mesh Renderer – компонент, вызывающий визуализацию назначенной данному объекту геометрической сетки в компоненте Mesh Filter с использованием назначенных материалов.

Итак, наша задача минимум – назначить нашему кубику созданный нами материал и заставить кубик упасть на плоскость, т.е. сделать куб динамическим твердым телом.
Чтобы назначить материал кубу – достаточно просто перетащить его на куб, либо открыть список материалов компонента Mesh Renderer нашего куба и перетащить материал на первый слот в массиве, либо (уже третье либо, о блин ну вот четвертое) щелкнув по слоту выбрать материал из выпадающего списка, заменив тем самым материал по умолчанию.
В инспекторе, после этой операции под компонентом Mesh Renderer появятся настройки присвоенного материала кубу.

Теперь, чтобы сделать куб динамическим, необходимо добавить ему компонент Rigid Body. Найти его можно в меню Component->Physics. Данный компонент так же появится в инспекторе выделенного куба.

Чтобы посмотреть, как кубик упадет на плоскость, нажмите кнопку «Play» в верхней части окна Unity3d. Можно так же поставить камеру в более удобный для просмотра ракурс.
Вот и все, Вы уже освоились. Если все еще что-то не понятно, то попробуйте перечитать статью и повторить все операции, прежде чем двигаться дальше.

5. Начинаем создавать мозги!

Данная часть завершающая, она даст Вам базовые навыки создания скриптов Unity3d на языке C#. Я, конечно, прокомментирую создание скриптов на Java Script, но не буду уделять им много внимания, т.к. мой текущий язык программирования – C#.
Создать свой первый скрипт можно таким же образом, что и материал. Правой кнопкой по папке, в которую мы хотим поместить свой новый скрипт – Create->C Charp Script.
По умолчанию Unity3d дает название скрипту – NewBehaviourScript.cs

Здесь я немного отвлекусь и зочу рассказать о термине «скрипт» со стороны программиста Unity3d.
Прежде всего не следует пугаться, что писать в Unity3d можно только скрипты. Т.к. это отпугивает интересующихся я хочу Вас обрадовать – под термином «скрипт» Unity3d подразумевает файл с исходным кодом, а не то что вы подумали )). Любой скрипт является полноценным файлом кода, в котором может быть практически все, что поддерживается средой выполнения .Net 2.0 (точнее Mono 1.2.5 на текущий момент, с выходом третьей версии среды Unity3d обещают интегрировать Mono 2.6, т.е. .Net 3.5), т.е. классы, структуры, интерфейсы и т.д. Но (всегда есть но) мы будет подразумевать под термином скрипт – класс, унаследованный, в основном, от класса MonoBehaviour (такое вот название) который будет представлять собой пользовательский компонент.
Теперь самое главное переварить. Т.е. проще: Вы можете писать любой по сложности объетноориентированный код средствами языка C#, но так же Вы моете создавать компоненты – скрипты, которые можно будет использовать так же как и стандартные компоненты, т.е. они будут добавлять «поведение» объекту сцены.
Основные правила создания компонентов: 1) объявление класса компонента должно быть вне пространств имен; 2) имя файла скрипта должно совпадать с именем класса; 3) класс должен быть унаследован от класса MonoBehaviour (это чаще всего).

Теперь можно посмотреть на внутренности наших мозгов, т.е. на содержимое созданного скрипта NewBehaviourScript.cs. Сделать этом можно дважды щелкнув по нему в окне Project (если вы выбрали в настройках Visual Studio, то Unity3d сгенерирует и откроет новое решение с данным скриптом, а так же откроет в браузере Visual Studio локальную справку по API функциям движка).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour
{
// Функция, вызываемая после инициализации полей объекта
void Awake(){

}

//Функция, вызываемая перед первым обновлением объекта
void Start(){

}

//Функция, вызываемая перед каждым рендерингом кадра 3d мира
void Update(){

}
}

Как видим первой строкой у нас подключено пространство имен API движка Unity3d. Наш класс унаследован от MonoBehaviour и имеет по умолчанию три заранее созданных функции. Для программистов на C# возможно встанет вопрос, почему функции просто декларированы, а не переопределяют виртуальные или абстрактные функции класса MonoBehaviour. Здесь кроется интересный факт – Unity3d подхватывает эти функции во время компиляции средствами рефлексии, что дает возможность не выполнять несколько десятков пустых вызовов для нереализованных функций. Список всех таких функций приведен в документации к классу MonoBehaviour.
Для простого понимания как это работает, давайте дадим нашему объекту вращаться, вокруг оси Y с определенной скоростью, задаваемую параметром компонента типа float, а так же выведем на экран величину поворота вокруг этой оси и стандартный «Hello World!» (ну как же без него ;) ), саму строку введем так же параметром компонента типа string. Реализация представлена ниже с комментариями.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour
{
public float RotationSpeed;
public string HelloWorldString;

//Функция, вызываемая перед каждым рендерингом кадра 3d мира
void Update()
{
// расчет поворота вокруг оси Y с учетом пройденноговремени с прошедшего кадра
Quaternion rotation = Quaternion.AngleAxis(RotationSpeed*Time.deltaTime, Vector3.up);

// применение вращения
transform.rotation *= rotation;
}

//Функция, вызываемая при визуализации графического интерфейса
void OnGUI()
{
// выводим на экран строку HelloWorld
GUI.Label( new Rect(10,10,150,20), HelloWorldString);
}
}

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

Запускаем сцену и наслаждаемся полученным результатом. А данная статья на этом закончена. Всем удачи в освноении Unity3d!

Заключение

Не забываем сохранять сцены, если они Вам еще понадобятся

Теперь по поводу JS скриптов.

Работа данных скриптов не медленнее, не смотря на то что язык – JS. Эти скрипты так же компилируются и выполняются.

Основное отличие JS скриптов от C# – нет необходимости в базовом классе. Все публичные переменные пишутся вне функций, код вне функций выполняется во время инициализации компонентов, так же можно использовать все функции, подхватываемые рефлектором в наследниках класса MonoBehaviour.

В одном проекте могут быть скрипты всех трех поддерживаемых языков. Третий язык – это Boo – аналог питона (Python). Данный язык прост на синтаксис, но с особенностями (например отсутствие операторных скобок), менее распространен.

А вот и ссылка на результат

VN:F [1.9.3_1094]
Rating: 9.4/10 (45 votes cast)
VN:F [1.9.3_1094]
Rating: +22 (from 22 votes)
Unity3D. C чего начать., 9.4 out of 10 based on 45 ratings

5 комментариев на «Unity3D. C чего начать.»

  1. SergeyRu
    SergeyRu пишет:

    Спасибо, интересно всё рассказали,
    Внимание вопрос: как отлаживать в Visual Studio ?

    VN:F [1.9.3_1094]
    Rating: 5.0/5 (1 vote cast)
    VN:F [1.9.3_1094]
    Rating: +3 (from 3 votes)
  2. SergeyRu
    SergeyRu пишет:

    …. Разобрался,.. может кому пригодится

    запускаете “MonoDevelop”
    идёте в tools—preferences—Unity
    там выбираете Дебагер, нужно указать на Unity.exe

    после чего можете нажать на отладку (F5) … запустится Unity
    там жмёте Play …если расставлены точки останова то будет останавливаться

    когда закончите остановите(отжмите) “Play ” …,
    можно поправить код и продолжить дальше … жмёте “Play ”
    снова если есть точки останова будет останавливаться

    VN:F [1.9.3_1094]
    Rating: 5.0/5 (1 vote cast)
    VN:F [1.9.3_1094]
    Rating: +3 (from 5 votes)
  3. Max Kharitonov
    Max Kharitonov пишет:

    Замечательная статья, теперь я быстрее перепрыгну с флэши на Unity3D

    VN:F [1.9.3_1094]
    Rating: 5.0/5 (1 vote cast)
    VN:F [1.9.3_1094]
    Rating: +2 (from 2 votes)
  4. Armando

    lewisohn@dora.progandist” rel=”nofollow”>.…

    спс….

    VA:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.3_1094]
    Rating: 0 (from 0 votes)
  5. Neil

    singer@peggin.ge” rel=”nofollow”>.…

    благодарю!!…

    VA:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.3_1094]
    Rating: 0 (from 0 votes)

Ваш отзыв

Вы должны войти, чтобы оставлять комментарии.



Страница 1 of 0