using unityengine что это

Работа с EventSystem в Unity. Базовые вещи в работе с UI

Всем привет! Давно ничего не писал, но сейчас захотелось рассказать про очень удобную штуку, о которой многие не знают. Это Event System в Unity. Многие, для задач в которых EventSystem очень удобен, используют обычный Raycast. Я расскажу про то, как пользоваться частью функционала EventSystem (его на самом деле очень много) и как этот инструмент позволяет быстро решать многие задачи связанные с обработкой событий интерфейсов и объектов. Как всегда с репозиторием с примерами. Если вам интересно — добро пожаловать под кат!

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это

В данной статье я разберу и предоставлю примеры работы с событиями IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, IDragHandler, IBeginDragHandler, IEndDragHandler (полный список событий можно посмотреть тут).

Что же такое EventSystem? EventSystem — это система отвечающая за обработку разных событий в сцене. В основном она позволяет:

С точки зрения рейкастов в EventSystem доступны три основных компонента:

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это

Начнём с самого простого — с UI системы. С ней EventSystem работает проще всего и лучше всего. Дело в том, что при создании Canvas юнити сразу добавляет на сцену все необходимые компоненты, такие как сам EventSystem и Graphic Raycaster.

В случае с UI, событийная система позволяет легко создавать свои кнопки и базовые взаимодействия с разными UI элементами. Для примера разберём IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, IDragHandler, IBeginDragHandler, IEndDragHandler.

Чтобы UI элемент реагировал на события входа (IPointerEnterHandler), выхода (IPointerExitHandler) курсора мыши необходимо имплементировать эти интерфейсы в необходимый объект. Это помогает во многих случаях, когда нужно что-то выбрать, подсветить и т.п. На примере с тестовой сценой и Image это позволяет сделать интеракции вроде такой в несколько строк кода:

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это

Для обработки событий нажатия на UI элемент есть два других интерфейса IPointerDownHandler, IPointerUpHandler.

Их имплементация позволяет в удобном виде обрабатывать события нажатия на объект мышью или тача на мобильных платформах:

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это

EventSystem работает с любым компонентом UI системы, который может быть RaycastTarget. Для примера Text и событие клика IPointerClickHandler (важно, это событие похоже на IPointerUpHandler, то есть срабатывает в момент поднятия мыши, но отличие заключается в том, что “отпускание” курсора должно происходить строго в границах объекта):

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это

Самыми интересными ивентами на мой взгляд, являются те, что позволяют удобно делать Drag. Это набор интерфейсов IDragHandler, IBeginDragHandler, IEndDragHandler. С ними так же всё очень просто. Визуальный эффект сильно зависит от способа обработки, но эти три события позволяют делать самые разные взаймодействия за несколько минут. В случае, если элемент, который вы собираетесь двигать состоит из разных UI элементов, важно отключать галочку RaycastTarget на тех элементах, которые не являются интерактивными. (Важно: в случае с UI системой нужно использовать screenPosition из PointerEventData которая приходит во всех методах событийной системы связанных с мышью/тачем)

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это

В общем то по UI системе всё, на самом деле там есть ещё несколько полезных штук с точки зрения Event System, но про них я может напишу в будущих статьях.

В общем EventSystem крутой и удобный инструмент, который позволяет многие вещи делать в разы быстрее нежели обычными рейкастами. Кроме того в EventSystem есть очень много полезного функционала вроде того, что там можно переопределять инпуты (к примеру вас интересует специфичный контроллер, скажем Leap Motion) и многое другое, о чём я может напишу в будущих статьях.

Источник

Managed Plugins

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

Создание dll

Путь к dll Юнити обычно такой

На Виндовс dll могут быт myfqltys в папках, принадлежащих приложению Юнити. Путь обычно такой

Использование dll

После компиляции dll файл может быт просто перетащен в Юнити проект как и любой другой ассет. Dll ассет имеет треугольник раскрывающий содержимое файла для выбора отдельного класса внутри библиотеки. Классы, которые были унаследованы от MonoBehaviour могут быть перетащены на ГеймОбъект как обычные скрипты. Не MonoBehaviour классы могут быт использованы прямо из других скриптов обычным путем.

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что этоРазвернутая dll с классами в ней

Пошаговое руководство для MonoDevelop и Visual Studio

В этой секции вы узнаете как собрать и интегрировать простую dll с использованием MonoDevelop и Visual Studio, и как подготовить отладочную сессию для этой DLL.

Настройка проекта

Затем нужно заполнить информацию о новой библиотеке:

На данном этапе, у вас будет возможность выбрать нужный DLL файл. В Mac OSX, файл можно найти в

Для этого примера, переименуем класс в “MyUtilities” в Solution browser, и заменим его код на следующее:

Закончив с кодом, соберите проект, и сгенерируйте DLL файл с отладочными символами.

Использование DLL в Unity

/bin/Debug/DLLTest.dll в папку Assets. Затем, создайте C# скрипт под именем “Test” в Assets, и замените его содержимое на следующий код:

Когда вы присоедините этот скрипт к объекту в сцене, и нажмете Play, вы увидите вывод кода из DLL в окне консоли.

Настройка отладочного сеанса для DLL

Во-первых, вы должны исправить отладочные символы для DLL. В MonoDevelop, скопируйте файл сборки

/bin/Debug/DLLTest.dll.mdb в папку Assets/Plugins. В Visual Studio, выполните

Источник

Базовые навыки для работы с Unity

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это

Доброго времени суток, уважаемые хабаровчане!

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

Навык #1 — Работа со структурой проекта

Для поддержания порядка в проекте требуется разобраться с его структурой. Она может быть представлена в следующем виде:

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это
Структура папки персонажа

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

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это
Структура папки анимаций

Навык #2 — Работа с иерархией объектов на сцене

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

Это поможет легко отключить свет на всей локации или в помещении. Узнать месторасположение всех объектов.

Каждый элемент называется относительно того, что он из себя представляет, в конце добавляется постфикс родительского объекта. Например, золотой слиток в пещере будет носить название «goldBar_cv1», где cv1 обозначает cave1, а дерево в лесу «tree_frt1», где frt1 обозначает forest1. Для постфикс берется первая буква слова, первая буква второго слога и последняя буква слова.

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это
Пример иерархии объектов на сцене

Навык #3 — Работа с визуальным представлением

В Unity имеется 3 основных источника света:

Используйте PostProcessing для наложения эффектов.

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это
Сцена без постобработки

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это
Сцена с постобработкой

Кроме визуально представленных источников света есть ещё глобальные настройки света: вкладка сверху Window, пункт Lighting, подпункт Settings. Там можно, например, подкрутить освещение окружения, установить скайбокс, добавить туман. Собственно, именно сюда нужно заглянуть, если вы задались вопросом «удалил все источники света, а на сцене всёравно светло, как днём». Кстати, в эти настройки можно залезать уже во время того, как в редакторе запущена игра, чтобы сразу, на лету, видеть изменения. Правда, после закрытия игрового режима настройки вернутся к тому состоянию, какими они были до запуска игрового теста. Так что придётся снова залезть в это окно и откорректировать значения. Полезная деталь — если вам, допустим, хотелось поменять цвет освещения (Ambient color в группе Environment Lighting), то на панели с палитрой обратите внимание на пункт Hexadecimal — там в окошке указан номер текущего цвета, можно скопировать его и позднее вставить в это же поле, когда игровой режим будет выключен. Этот же трюк пригодится для настройки цвета тумана и так далее.

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

Навык #4 — Работа с камерой

Нужно найти объект на сцене? Кликните 2 раза по имени объекта в иерархии.

Хотите пролететь по сцене от 1 лица? Зажмите ПКМ и перемещайтесь клавишами WASD, на Shift ускорение.

Требуется посмотреть сцену с разных углов? Воспользуйтесь Гизмо (Gizmos).

using unityengine что это. Смотреть фото using unityengine что это. Смотреть картинку using unityengine что это. Картинка про using unityengine что это. Фото using unityengine что это
Расположение Гизмо

Навык #5 — Работа с объектами

Хотите добавить персонажа на сцену? Добавьте компоненты RigidBody и CapsuleCollaider. RigidBody говорит движку, что к этому объекту должна применяться физика твердого тела.

Хотите проверить столкновение персонажа с объектом? Добавьте объекту компонент MeshCollaider и в скрипте персонажа в функции OnCollisionEnter проверяйте тег (tag) объекта, с которым столкнулся персонаж.

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

Что касается тех объектов, с которыми персонаж сталкивается. Mesh Collider обычно следует вешать на те объекты, сложная форма которых вам так или иначе важна для учёта столкновения. Если это просто кнопка, то лучше обойтись коллайдерами попроще, вроде Box Collider. Кроме того вам, возможно, придётся для особо сложных 3д объектов делать более простую, невидимую, сетку столкновений и вешать Mesh Collider на неё, а не на сам видимый объект.

Про кнопки-коллайдеры стоит помнить, что в их компоненте коллайдера нужно поставить флажок на пункт Is Trigger, чтобы скрипт вобще мог обработать событие нажатия. Всяким бочкам, ящикам и прочим объектам, которые должны просто красиво физически реагировать на столкновения и падать под действием гравитации надо назначать компонент rigidbody.

Навык #6 — Импорт моделей

Рассмотрим порядок действий на примере импорта модели из Blender. Предполагается, что Вы уже сделали развертку, нанесли текстуру или выбрали материалы.

Blender

Обратите внимание, что если на модель назначены материалы блендера, то они в упрощённом виде перенесутся тоже и будут захламлять список материалов.
Можно вовсе не делать сложные развёртки и текстурирование в Blender’е — более простой способ это пройтись по всем элементам модели и для каждой выбрать в окне справа пункт Data. Это значок в виде смотрящего вниз треугольника с тремя точками, между пунктами Modifiers (гаечный ключ) и Material (розовый шарик). В нём нажимаете на + рядом с графой UV Maps — там появляется автоматическая развёртка со значком шахматного шарика. Это нужно сделать для каждого элемента модели и только после этого делать экспорт. Тогда уже в Unity на эту деталь можно будет наложить материал с тайловой текстурой, а если этого не сделать, то материал будет лишь окрашивать деталь в сплошной цвет. (Если вы позднее деформировали элемент модели, то сбросьте развёртку и переназначьте заново, чтобы она не была растянутой).

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

Как по-простому текстурировать модель.

Для начала вам хватит каких-нибудь тайловых текстур 512 на 512. Добавляете её так же, как и 3д модель, через Import New Asset (помните, что должна быть выбрана подходящая папка). При этом справа, в инспекторе, у добавленной текстуры в окне Default выставляете параметр Max Size в 512. И затем жмёте Apply. Теперь текстура готова для того, чтобы добавить её в материал или, допустим, ею теперь можно раскрашивать террайн. Обратите внимание на самый первый пункт — Texture Type, сейчас он в дефолтном режиме, но когда вам понадобится загрузить карту нормали, изображение для полупрозрачного спрайта, и так далее, то потребуется там выставить соответствующую настройку.
Далее нам понадобится создать материал. Заходим опять в меню сверху — Assets, выпадающий список Create, Material (опять не забудьте, что материал создастся в той папке, которая выбрана сейчас). Вбиваете название материала и в инспекторе открываете пункт Albedo (на других параметрах пока не будем останавливаться, но принцип схож), где ищете и назначаете свою ранее загруженную текстуру. Рядом есть окошко цвета, которым можно дополнительно подкрасить вашу текстуру, а также ползунки Metalic и Smoothness, чтобы добавить блики или матовость. Также пригодится параметр размера тайлов Tiling, он находится на несколько строк ниже.
После того как материал создан можно хватать его и перекидывать прямо на модель или её элементы, только не промахнитесь, а то покрасите не то, что нужно.

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

Префабы.

Обычно префаб делается примерно так — перетащили объект на сцену, потом зацепили его имя в окне иерархии и перетащили внутрь папки. Тогда там появится префаб на основе объекта, в инспекторе у префаба будет значок синего кубика и ниже тега будет так и подписано, Prefab.
Однако, вам незачем обязательно сразу всё делать префабами. Вы можете бросить объект на сцену, затем расклонировать его копипастом и тестировать прямо так. Если всё устраивает, то переводите объект в префаб, если нет, например в модели выявился какой-то баг, то удаляете её копии со сцены, саму модель из папки, исправляете в 3д пакете и импортируете заново.

Вы также можете засунуть внутрь префаба, выставленного на сцену, какие-то новые дочерние элементы. При этом они не станут полноценной его частью, то есть не повлияют на прочие копии этого префаба, пока вы не нажмёте кнопку Apply в инспекторе на строчке с названием Prefab.

Навык #7 — Реализация логики

Избегайте выполнения дорогостоящих операций. Примером может служить определение расстояния до объекта.

Прочитать больше о дорогостоящих операций можно здесь.

Заключение

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

Если Вы считаете, что какие-то темы раскрыты поверхностно, просьба написать в комментариях о них поподробнее.

Источник

using UnityEngine; //Подключает основные функции Unity

C# Unity3D

Библиотеки:

using UnityEngine; //Подключает основные функции Unity

using System; //Позволяет работать с математическими выражениями и т.д.

using System.Collections; //Подключает основные расширения(коллекции)

using System.Collections.Generic; //Подключает дополнительные коллекции

using System.IO; //позволяет работать с чтением и записью в файл

using System.Xml; //позволяет работать с xml файлами

using System.Linq; //позволяет работать с динамическими массивами и т.д.

Переменные

Статус переменных:

public //переменная отображается в Inspector. Её можно редактировать из других классов

private //переменная не отображается в Inspector. К ней нет доступа из других классов

Логический тип переменной:

bool //может принимать всего 2 значения, true или false

Числовые типы переменных:

int //целый числовой тип

float //числовой тип с плавающей запятой(дробные числа)

Текстовые типы переменных:

string //текстовый тип переменных, поддерживает только буквенные символы

char //тип переменных поддерживающий символы Unicode

Переменные объектов сцены:

GameObject //переменная хранящая объект сцены

Transform //данные об объекте: координаты, угол поворота, размер

Vector2 //хранит 2D позицию, в основном используется для хранения координат и смещения текстур

Vector3 //хранит координаты положения объекта (x, y, z)

Vector4 //четырех-мерные координаты. Используются в сетке касательных или параметрах шейдеров

AnimationClip //переменная клипа анимации

Переменные изображения:

GUISkin //переменная скина, в скине хранятся изображения, так же есть настройки шрифта текста

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

GUITexture //переменная изображения (обычная картинка)

Функции

Название функции может быть ЛЮБЫМ. Но только стандартные функции имеют определенные свойства. То есть вашу функцию можно вызвать только вручную а стандартные вызываются при определенных обстоятельствах.
Функции появления и удаления объекта:

void Awake () <> //вызывается 1 раз при появлении объекта на сцене

void OnDestroy() <> //вызывается 1 раз при удалении объекта со сцены

Функции старта сцены:

void Start () <> //вызывается 1 раз при старте сцены после Awake, если таковой нет, то самой первой

Функции выполняемые на каждый кадр:

void Update () <> //вызывается на каждый кадр

void LateUpdate () <> //вызывается на каждый кадр самой последней

void FixedUpdate () <> //вызывается с фиксированной частотой кадров, в основном используется для работы с rigidbody

Функции работы с триггерами:

void OnTriggerEnter () <> //вызывается каждый раз при входе объекта в триггер (скрипт должен висеть на триггере)

void OnTriggerExit () <> //вызывается каждый раз при выходе объекта из триггера (скрипт должен висеть на триггере)

void OnTriggerStay () <> //вызывается на каждый кадр пока объект находится в триггере но котором висит данный скрипт

Функции работы с мышью:

void OnMouseEnter () <> //вызывается в момент захода мыши на коллайдер объекта

void OnMouseOver () <> //вызывается каждый кадр пока курсор указывает на коллайдер объекта

void OnMouseExit () <> //вызывается в момент выхода мыши с коллайдера объекта

void OnMouseDown () <> //вызывается когда пользователь нажал клавишу в то время как курсор находится над коллайдером

void OnMouseUp () <> //вызывается когда пользователь отпустил кнопку мыши в то время как курсор находится над коллайдером

void OnMouseUpAsButton () <> //вызывается один раз когда мышь выходит с коллайдера с зажатой кнопкой мыши

void OnMouseDrag () <> //вызывается когда пользователь нажал на коллайдер объекта и все еще удерживает кнопку

Активация / деактивация объектов на сцене:

void OnEnable () <> //вызывается в момент активации объекта (каждый раз)

void OnDisable () <> //вызывается в момент деактивации объекта (каждый раз)

Функции работы с коллайдерами:

void OnCollisionEnter () <> //вызывается 1 раз в момент касания коллайдера на котором висит скрипт другого объекта с коллайдером

void OnCollisionExit () <> //вызывается 1 раз в момент когда коллайдер объекта перестал касаться другого коллайдера

void OnCollisionStay () <> //вызывается на каждый кадр пока коллайдер объекта с этой функцией касается другого коллайдера

Логические элементы:

Ввод

С клавиатуры:

if (Input.GetKey(KeyCode.Код) <> //Условие выполняется пока зажата кнопка клавиатуры

if (Input.GetKeyDown(KeyCode.Код) <> //Условие выполняется один раз в момент нажатия кнопки клавиатуры

if (Input.GetKeyUp(KeyCode.Код) <> //Условие выполняется один раз в момент отпускания кнопки клавиатуры

*Код — буквенное название кнопки клавиатуры

Пример для кнопки клавиатуры:

if (Input.GetKeyUp(KeyCode.W) < код >//Код выполнится один раз в момент отпускания кнопки W на клавиатуре

Мышью:

if (Input.GetMouseButton(КОД)) <> //Условие выполняется пока зажата кнопка мыши

if (Input.GetMouseButtonDown(КОД)) <> //Условие выполняется один раз в момент нажатия кнопки мыши

if (Input.GetMouseButtonUp(КОД)) <> //Условие выполняется один раз в момент отпускания кнопки мыши

КОД — код кнопки мыши которую нужно нажать для выполнения условия
0 — левая кнопка мыши
1 — правая кнопка мыши
2 — средняя кнопка мыши

Пример для кнопки мыши:

if (Input.GetMouseButtonDown(0)) < код >//при таком условии код в операторных скобках выполнится 1 раз в момент нажатия левой кнопки мыши.

Операторы

Оператор if:

Данный условный оператор имеет 2 вида: полный и не полный. Полный вид отличается тем что он имеет альтернативное условие.

Оператор if:

В данном случае КОД выполнится только если условие истинно. Вот эта же запись но на понятном языке:

Если (Условие) то выполняем

Общий вид полного оператора if:

Тут если условие будет истиным то выполнится КОД1 если ложным то КОД2.
Русская расшифровка записи:

Если (Условие) то выполняем

Так же можно добавлять несколько условий.

Пример добавления нескольких условий:

Но такая конструкция громоздка и в конце концов приведет к тому что вы сами в ней запутаетесь, для множества условий лучше использовать оператор выбора switch

Оператор switch

Этот оператор так же имеет полный и не полный вид
Пример неполного:

Данный оператор будет по очереди сравнивать значение переменной с предлагаемыми значениями. Если значение переменной совпадет со значением 1 то выполнится КОД1. Если не совпадет ни с чем то нечего не произойдет. Для альтернативных значениях используют полную версию оператора.
Полная версия:

В данном случае если не одно их значений не подойдет то выполнится КОД3

Связь скриптов

В Unity3d можно воздействовать как на переменные в другом скрипте так и на сам скрипт (вкл/выкл). В любом случае нам нужно сначала получить ссылку на изменяемый скрипт, то есть присвоить его переменной. Затем мы сможем без труда производить любые действия с этим скриптом и его содержимым.
Перейдем к практике:

public [название скрипта] [название переменной]; //инициализация переменной

[название переменной скрипта].[название переменной в скрипте] = [значение]; //изменение конкретной переменной

Конкретные примеры:
Допустим нам нужно изменить переменную stats в скрипте car

public car st; //мы присвоили переменной st скрипт car, в эту переменную в инспекторе нужно кинуть объект с изменяемым скриптом.

st.stats = 10; //тут мы присвоили переменной stats в скрипте car значение 10

st.enabled = false; //так мы отключаем скрипт = true наоборот включит

Важная деталь: изменяемая переменная должна иметь тип public! Иначе нам не дадут к ней обратиться!
Теперь информация для ленивых:
Можно обойтись без создания переменной под скрипт а напрямую обратиться к скрипту, делается это так:

Данная строка хороша для одноразового использования, но не желательна для использования в Update т.к. работает медленнее

Консоль

Синтаксис:

Debug.Log(); //Выводит в консоль сообщение серого цвета [обычное]

Debug.LogWarning(); //Выводит в консоль сообщение желтого цвета [предупреждение]

Debug.LogError(); //Выводит в консоль сообщение красного цвета [ошибка]

Синтаксис:

Debug.Log(«Massage»); //выведет слово Massage в консоль серым цветом

Debug.LogError(a); //выведет в консоль значение переменной красным цветом

Таймер

Создаем 2 переменные типа float:

public float Timer; //Время в секундах которое отсчитает таймер

private float TimerDown; //Изменяемая переменная для внутренних операций

В функции Start или Awake пишем:

TimerDown = Timer; //Задаем временной переменной значение которое нужно отсчитать

Желательно в функции Update пишем следующий код:

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

Источник

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

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