Текстуры
Normally, the mesh geometry of an object only gives a rough approximation of the shape while most of the fine detail is supplied by Textures. A texture is just a standard bitmap image that is applied over the mesh surface. You can think of a texture image as though it were printed on a rubber sheet that is stretched and pinned onto the mesh at appropriate positions. The positioning of the texture is done with the 3D modelling software that is used to create the mesh.
Cylinder with tree bark
Unity can import textures from most common image file formats.
Textures for use on 3D models
Textures are applied to objects using Materials. Materials use specialised graphics programs called Shaders to render a texture on the mesh surface. Shaders can implement lighting and colouring effects to simulate shiny or bumpy surfaces among many other things. They can also make use of two or more textures at a time, combining them for even greater flexibility.
Вы должны создавать ваши текстуры с размерами, являющимися степенями двойки (например, 32х32, 64х64, 128х128, 256х256 и т.д.). Просто поместите их в папку Assets вашего проекта, этого будет достаточно, затем они появятся в окне Project View.
После того как ваша текстура будет импортирована, вы должны будете назначить ее материалу. После этого материал может быть применен к мешу, системе частиц(Particle System) или GUI текстуре(GUI Texture). Используя настройки импорта(Import Settings), текстуру также можно конвертировать в Cubemap или Normalmap для различного применения в игре. Более подробную информацию об импорте текстур, пожалуйста, читайте на странице компонента Texture.
2D графика
In 2D games, the Sprites are implemented using textures applied to flat meshes that approximate the objects’ shapes.
Sprite from a 3D viewpoint
An object in a 2D game may require a set of related graphic images to represent animation frames or different states of a character. Special techniques are available to allow these sets of images to be designed and rendered efficiently. See the manual page about the Sprite Editor for more information.
A game’s graphic user interface (GUI) consists of graphics that are not used directly in the game scene but are there to allow the player to make choices and see information. For example, the score display and the options menu are typical examples of game GUI. These graphics are clearly very different from the kind used to detail a mesh surface but they are handled using standard Unity textures nevertheless. See the manual chapter on GUI Scripting Guide for further details about Unity’s GUI system.
Particles
Meshes are ideal for representing solid objects but less suited for things like flames, smoke and sparkles left by a magic spell. This type of effect is handled much better by Particle Systems. A particle is a small 2D graphic representing a small portion of something that is basically fluid or gaseous, such as a smoke cloud. When many of these particles are created at once and set in motion, optionally with random variations, they can create a very convincing effect. For example, you might display an explosion by sending particles with a fire texture out at great speed from a central point. A waterfall could be simulated by accelerating water particles downward from a line high in the scene.
Star particle system
Unity’s particle systems have a wealth of options for creating all kinds of fluid effects. See the manual chapter on the subject for further information.
Terrain Heightmaps
Textures can even be used in cases where the image will never be viewed at all, at least not directly. In a greyscale image, each pixel value is simply a number corresponding to the shade of grey at that point in the image (this could be a value in the range 0..1 where zero is black and one is white, say). Although an image like this can be viewed, there is no reason why the numeric pixel values can’t be used for other purposes as well, and this is precisely what is done with Terrain Heightmaps.
A terrain is a mesh representing an area of ground where each point on the ground has a particular height from a baseline. The heightmap for a terrain stores the numeric height samples at regular intervals as greyscale values in an image where each pixel corresponds to a grid coordinate on the ground. The values are not shown in the scene as an image but are converted to coordinates that are used to generate the terrain mesh.
Interestingly, even though a heightmap is not viewed directly as an image, there are still common image processing techniques that are useful when applied to the height data. For example, adding noise to a heightmap will create the impression of rocky terrain while blurring will smooth it out to produce a softer, rolling landscape.
More information about terrains in Unity can be found in this section of the manual.
Basics of Materials in Unity 3D
An overview of the Core Concepts of Materials in Unity
Objective: learn the fundamentals of materials in Unity
A new journey has started. From now on, I’m going to work on a 3D project a keep publishing tutorials about it. I decided to start with an already existent project in order to study, learn and write about all those things with which I’m less familiar: art stuff.
In this project, the first effort will be put into learning how to manage visual concepts such as lights, meshes…
Unity3d. Уроки от Unity 3D Student (B09-B12)
Когда вы работает с игровыми объектами в Unity3d, вам потребуется также использовать материалы. Например, мы хотим добавим материал с текстурой к кубу.

Для начала сохраним нашу текстуру в папку Assets (в корневой папке проекта).
Добавим директорию Materials (мы помним, что всегда удобно поддерживать «иерархический порядок» в проекте) и назовем наш файл bulb texture (расширение *.png (в оригинальном уроке *.psd), см. примечание).
Переключимся назад в Unity3d, убедимся что в Project View появилась папка Materials c нашей текстурой.
Создадим куб. Добавить нашу текстуру к кубу, можно просто перетащив ее из Project View на куб (материал создастся автоматический). Но, возможно, вы захотите настроить его заранее, тогда выбираем Create->Material.
Назовем его bulb и положим в папку Materials.
Выберем buld и перенесем нашу текстуру из Project View на пустой серый квадрат в Inspector View (с надписью none(Texture 2D)), либо нажав на Select все в том же квадрате и выбрав ее из появившегося списка.
Взамен серого квадрата появится иконка с текстурой.
Перетяним наш материал на куб. Куб сразу станет текстурированным.
При выборе материала в Inspector View вы так же можете выбрать шейдер, по которому будет расчитываться его конечный вид
PS: О шейдерах мы обязательно поговорим отдельно, но много позже.
Так же у материала можно настраивать tiling (мозаичное размещение текстуры). Чем больше значения tiling по x-ой или y-ой координате, тем больше раз она повторяется по соответствующей стороне. Чтобы понять как это работает — поставте значения по x и y равным 10 (при изменении значения текстура на кубе будет обновляться в реалтайме).
Параметр offset (смещение) отвечает за сдвиг текстуры «по кругу». Чтобы лучше понять как он работает, поэкспериментируйте c ним.
Базовый Урок 10 — Основы работы с аудио
В уроке рассказывается, как проигрывать компонент Audio Source (аудио ресурс) и вызывать звуковые клипы с помощью скриптинга.
- AudioListener (аудио приемник)
- AudioSource (аудио ресурс)
Обычно AudioListener является компонентом у камеры. Выберем камеру и убедимся в этом, посмотрев в Inspector View.
Для того чтобы слушать звуки вы должны иметь хотя бы один AudioListener в каждой сцене.
Добавим пустой GameObject и добавим к нему компонент Audio Source.
Добавить аудио-клип можно либо через Inspector View, либо с помощью скрипта.
В нашем проекте есть два аудио-файла — моно и стерео.
Моно обычно используется для звуковых эффектов. Только для него можно использовать затухание или другие 3d-эффекты.
Стерео, соответственно, для музыки, т.к. стереозвук прогирывается как есть.
В окне Preview можно проиграть выбранный файл.
Добавим наш клип (GreenadeLaunch) в поле Audio Clip. Если включен параметр Play On Awake, то звук будет проигрываться сразу после запуска сцены.
Если же мы хотим, чтоб аудио-клип прозвучал в нужный нам момент, нужно написать скрипт. Оставим поле Audio Clip у Audio Source пустым и добавим c#-скрипт, назвав его PlaySounds. Добавим в скрипт следующий код:
Добавим скрипт к пустому GameObject, а значение переменной myClip у скрипта проиницилизируем звуковым файлом (GreenadeLaunch). Теперь нажав на play вы снова усшылите звук.
Проигрывать аудио можно и без использования Audio Source. Удалим компонент Audio Source c нашего GameObject, а код в теле метода Start() заменим следующим:
Тут, PlayClipAtPoint — статическая функция класса AudioSource, которая создает новый GameObject, с соответствующим Audio Source (в нашем случае это myClip) и после проигрывания аудио-клипа удаляет данный GameObject.
Сохраните скрипт и убедитесь что он есть у нашего GameObject, а значение myClip равно GreenadeLaunch.
Жмем Play и сразу после загрузки сцены жмем на Pause чтобы убедиться что на сцене появился новый игровой объект с именем One Shot Audio.
Базовый Урок 11 — Основы соединений
В уроке рассказывается, как использовать Fixed joint (неподвижное соединение) и Hinge joint (шарнирное соединение) для создания цепи у «шара для разрушения зданий»
Для создания интересной физики в Unity3d воспользуемся «соединениями» (joints). И для илюстрации этого создадим модель шара для разрушения зданий.
Исходная сцена содержит плоскрость (Floor), камеру (Main Camera) и точечный источник света (Point light).
Для начала создадим cферу, добавим к ней компонент Rigidbody и назовем ее Ball.
Добавим на сцену цилиндр, так же добавив к нему Rigidbody. Размер и положения цилиндра и сферы указанны на рисунке ниже. Для цилиндра scale равно 0.15, 0.25 и 0.15, для x, y и z соответственно, цилиндр свинут «вверх» к «краю» шара (грани при этом пересекаются).
Чтобы связать сферу и цилиндр — выбирете сферу (Ball) и добавьте к ней компонент Fixed Joint. Переменную Connected Body проинициализируем значением Cylinder.rigidbody. Напомню, что для этого достаточно перетащить Cylinder из Hierarchy view в Inspector View, на поле напротив Connected Body.
Переименуем Cylinder на более подходящее названия для крепежа шара, например, Ballstem. Значение переменной Connected Body поменяется автоматический.
Нажмите play и увидите как шар падает вместе с прикрепленным к нему цилиндром.
Теперь начнем создавать подвижные участки цепи.
Создадим капсулу (назовем ее Chain1), при этом размеры ее будут аналогичны размерам Ballstem’а, а находится она будет чуть выше него, чтоб крайние грани объектов пересекались. Chain1 так же будет с компонентом rigidbody.
А к Ballstem’у добавим компонент Hinge Joint, у которого
Connected Body мы инициализируем Chain1.rigidbody.
Место закрепление обозначенно ораньжевой стрелкой.
Нам потребуется еще один участок цепи. Выберем Chain1 и сделаем его дубликат (ctrl+D или cmd + D). Переименуем его в Chain2, так же сдвинув его к верхушке Chain1. К Сhain1 добавим Hinge Joint, с
Connected Body равным Chain2.rigidbody.
Аналогично добавим Chain3.
В конце, мы добавим HingeJoint к Chain3, при этом мы не будем задавать значение Connected Body. В этом случае объект будет прикрепленн «сам к себе» (точнее сказать к пустому месту в сцене).
Выделем Ball, Ballstem, Chain1, Chain2, Chain3 и наклоним их.
Жмем play и смотрим как перемещаются наш шар с цепью.
Базовый Урок 12 — Ввод с использованием виртуальных осей
В уроке рассказывается, как использовать стрелки (arrow keys), для перемещения влево и вправо, с помощью «осей» (axes)
На это раз на сцене у нас есть плоскость (floor), камера (Main Camera), источник света (Point light) и пустой gameObject.
Еще один вариант ввода — использование «осей» (Axes).
Откроем Input Manager (Edit->Project settings->Input). Разверните Axis и затем Horizontal.
Посмотрим на некоторые дефолтные параметры:
Параметр | Значение | Комментарий |
Negative Button | left | Клавиша для перемещения в отрицательном направлении |
Positive Button | right | Клавиша для перемещения в положительном направлении |
Alt Negative Button | a | Альтернативная клавиша для перемещения в отрицательном направлении |
Alt Possitive Button | d | Альтернативная клавиша для перемещения в положительном направлении |
Type | Key or Mouse Button | Тип ввода, для перемещения вдоль данной оси (в нашем случае X) |
Axis | X axis | Ось объекта, вдоль которой мы будем перемещаться |
Для того, чтобы использовать данное перемещение (Horizontal), нам потребуется метод GetAxis() класса Input.
- если написано «метод класса», то предполагается что он static.
- если написано «метод объекта», тогда метод принадлежит конкретному объекту.
Добавим C#-скрипт, назовем его GetAxis.cs и напишем:
Добавим скрипт к пустому gameObject’у, и нажмем play. Если зажать стрелку влево/вправо (или же a/d), в status bar’е вы увидите как меняется значение переменной horiz:
Значение этой переменной может меняться от -1 до 1 (в зависимости от зажатой клавиши). Как только вы отпустите клавишу, horiz станет снова равен 0.
Добавим еще строчку кода в Update(), сразу за Debug.Log():
Запустим сцену и нажмем на стрелку — вы увидите, как наш gameObject начнет перемещаться вдоль оси X.
Текстуры
Обычно сетка основной графический примитив Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Подробнее
См. в Словарь , геометрия объекта дает только приблизительную аппроксимация формы, в то время как большая часть мелких деталей обеспечивается текстурами изображением, используемым при рендеринге GameObject, Sprite или элемента пользовательского интерфейса . Текстуры часто применяются к поверхности сетки, чтобы придать ей визуальную детализацию. Подробнее
См. в Словарь . Текстура — это просто стандартное растровое изображение, накладываемое на поверхность сетки. Вы можете думать об изображении текстуры, как если бы оно было напечатано на резиновом листе, который натянут и прикреплен к сетке в соответствующих местах. Позиционирование текстуры осуществляется с помощью программного обеспечения для 3D-моделирования, которое используется для создания сетки.
Цилиндр с корой дерева
Unity может импортировать текстуры из большинства распространенных форматов файлов изображений.
Текстуры для использования в 3D-моделях
Текстуры применяются к объектам с помощью Материалов актива, который определяет, как поверхность должны быть визуализированы. Подробнее
См. в Словарь . В материалах используются специализированные графические программы, называемые Shaders Программа, работающая на графическом процессоре. Подробнее
См. в Словарь , чтобы отобразить текстуру на поверхности сетки. Шейдеры могут реализовывать световые и цветовые эффекты для имитации блестящих или неровных поверхностей среди многих других вещей. Они также могут использовать две или более текстур одновременно, комбинируя их для еще большей гибкости.
Размеры текстур должны быть в степени двойки (например, 32 x 32, 64 x 64, 128 x 128, 256 x 256 и т. д.). Достаточно просто поместить их в папку «Активы» вашего проекта, и они появятся в представлении проекта.
После того как ваша текстура была импортирована, вы должны назначить ее Материалу. Затем материал можно применить к сетке, Системе частиц Компоненту, который имитирует текучие объекты, такие как жидкости, облака и пламя, путем создания и анимация большого количества небольших 2D-изображений в сцене. Подробнее
См. в Словарь или Текстура GUI. С помощью настроек импорта его также можно преобразовать в кубическую карту коллекцию из шести квадратных текстур, может представлять отражения в окружающей среде или скайбокс, нарисованный позади вашей геометрии. Шесть квадратов образуют грани воображаемого куба, окружающего объект; каждая грань представляет вид по направлениям мировых осей (вверх, вниз, влево, вправо, вперед и назад). Подробнее
См. в Словарь или в карте нормалей различные типы приложения в игре. Дополнительную информацию об импорте текстур см. на странице компонента текстуры.
2D-графика
В 2D-играх используются спрайты двухмерные графические объекты. Если вы привыкли работать в 3D, спрайты — это, по сути, просто стандартные текстуры, но существуют специальные приемы комбинирования текстур спрайтов и управления ими для повышения эффективности и удобства во время разработки. Подробнее
См. в Словарь , реализованы с использованием текстур, применяемых к плоским сеткам, которые аппроксимируют объекты. формы.
Спрайт с точки зрения 3D
Для объекта в 2D-игре может потребоваться набор связанных графических изображений для представления кадров анимации или различных состояний персонажа. Доступны специальные методы, позволяющие эффективно проектировать и визуализировать эти наборы изображений. Дополнительную информацию см. на странице руководства по Редактору спрайтов.
Графический интерфейс
Игровой графический пользовательский интерфейс (GUI) состоит из графики, которая не используется непосредственно в игровой сцене Сцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь , но они позволяют игроку делать выбор и просматривать информацию . Например, отображение счета и меню параметров являются типичными примерами игрового графического интерфейса. Эта графика явно сильно отличается от той, которая используется для детализации поверхности сетки, но тем не менее она обрабатывается с использованием стандартных текстур Unity. Дополнительную информацию о системе графического интерфейса Unity см. в главе GUI Scripting Guide.
Частицы
Сети идеально подходят для представления твердых объектов, но менее подходят для таких вещей, как пламя, дым и искры, оставленные магическим заклинанием. Этот тип эффекта гораздо лучше обрабатывается Particle Systems. Частица – это небольшое двухмерное изображение, представляющее небольшую часть чего-то, что в основном является жидким или газообразным, например облако дыма. Когда многие из этих частиц создаются одновременно и приводятся в движение, опционально со случайными вариациями, они могут создать очень убедительный эффект. Например, вы можете отобразить взрыв, отправив частицы с огненной текстурой с большой скоростью из центральной точки. Водопад можно имитировать, ускоряя частицы воды вниз от линии вверху сцены.
Система звездных частиц
Системы частиц Unity имеют множество возможностей для создания всевозможных плавных эффектов. Дополнительную информацию см. в главе руководства по этому вопросу.
Карты высот местности
Текстуры можно использовать даже в тех случаях, когда изображение вообще никогда не будет просматриваться, по крайней мере, напрямую. В изображении в оттенках серого каждый пиксель наименьшая единица компьютерного изображения. Размер пикселя зависит от разрешения вашего экрана. Пиксельное освещение рассчитывается для каждого пикселя экрана. Подробнее
См. в Словарь значение — это просто число, соответствующее оттенку серого в данном точка на изображении (это может быть значение в диапазоне от 0 до 1, где ноль — черный, а единица — белый). Хотя такое изображение можно просматривать, нет никаких причин, по которым числовые значения в пикселях нельзя использовать и для других целей, и именно это делается с помощью Карты высот местности.
terrain – это сетка, представляющая участок земли, где каждая точка на земле имеет определенную высоту от базовой линии. карта высот для ландшафта ландшафта в вашей сцене. Игровой объект Terrain добавляет в вашу сцену большую плоскую плоскость, и вы можете использовать окно Terrain Inspector для создания подробного ландшафта. Подробнее
See in Словарь хранит числовые образцы высоты через равные промежутки времени в виде значений оттенков серого в изображение, где каждый пиксель соответствует координате сетки на земле. Значения не отображаются в сцене в виде изображения, а преобразуются в координаты, которые используются для создания сетки ландшафта.
Интересно, хотя карта высот текстура в оттенках серого, в которой хранятся данные о высоте объекта. Каждый пиксель хранит разницу высот перпендикулярно лицу, которое представляет пиксель.
См. в Словарь не просматривается непосредственно как изображение, есть еще общие изображения методы обработки, полезные при применении к данным о высоте. Например, добавление шума к карте высот создаст впечатление каменистой местности, а размытие сгладит ее и сделает ландшафт более мягким.
Дополнительную информацию о ландшафтах в Unity можно найти в этом разделе руководства.