Using Scripts
Это короткое введение в создание и использование скриптов. Детальная информация о Scripting API — Scripting Reference. Детальная информация о создании геймплея через скрипты — Creating Gameplay.
Скрипты в Unity могут писаться на языках JavaScript, C# и Boo. Можно использовать один или все языки в проекте. В данной книге скрипты написаны на JavaScript, если не указано иное.
Creating new scripts
В отличие от других ресурсов (меши, текстуры и др.), файлы скриптов создаются в самой Unity.
Создание скрипта: Assets>Create>JavaScript (или C Sharp Script или Boo Script).
Новый скрипт будет называться NewBehaviourScript и располагаться в выбранной папке Project View. Если нет выбранной папки, скрипт расположится в корневой.

Можно редактировать скрипт через двойное нажатие в Project View. Будет запущен Unitron — встроенный редактор скриптов. Можно писать скрипты внешним редактором. Для установки внешнего редактора скриптов в качестве стандартного используется команда Edit>Preferences>External Scrip Editor.
Содержание нового пустого скрипта такого:
function Update () {
}
Никакого функционала нет, но его можно добавить, изменив скрипт следующим образом:
function Update () {
print("Hello World");
}
Будучи выполненным, скрипт выдаст сообщение «Hello World» в консоли. Но сам по себе скрипт выполнен быть не может — сначала нужно прикрепить его к объекту в сцене.
Attaching scripts to objects
Сохраним скрипт и создадим кубик GameObject>Create Other>Cube.

Перетащим скрипт из Project View на куб (в Scene View или Hierarchy View). Или можно выделить куб и выбрать Components>Scripts>New Behaviour Script. Оба метода прикрепят скрипт к Cube. Каждый созданный скрипт отображается в меню Component>Scripts.

Если выделить Cube и посмотреть в Inspector, то там можно увидеть прикреплённые к нему скрипты

Нажмём Play для теста. В консоли отобразится текст «Hello World».

Manipulating the object
Функция print() часто используется для отладки скриптов, но она не управляет объектом. Добавим что-нибудь, что может управлять объектом:
function Update () {
transform.Rotate(0, 5*Time.deltaTime, 0);
}
Для новичка в скриптинге многое в нашем коде кажется непонятным. Разберём подробнее:
* transform ссылается на компонент Transform игрового объекта.
* функция Rotate()содержится в компоненте Transform.
* Числа в скобках отражают угол поворота объекта вокруг осей X, Y, Z.
* Time.deltaTime это член класса Time, содержащий время, затраченное на рендер предыдущего кадра. Он позволяет вращать кубик с одинаковой скоростью, независимо производительности машины пользователя.
Мы можем прочитать этот код так: «Каждый кадр поворачиваем компонет Transform нашего геймобъекта на 5 градусов вокруг оси Y".
Можно получить доступ к различным компонентам тем же путём. Все компоненты, к которым можно получить доступ так просто, перечислены в GameObject Scripting Reference Page.
Подробная информация о взаимодейсвтии объектов, скриптов и компонентов — GameObjects или Using Components.
The Power of Variables
Наш скрипт будет всегда вращать объект Cube на 5 градусов в секунду. Можно изменить скорость поворота в скрипте, запустить сцену снова и посмотреть результат. Но это долго, есть путь и побыстрее.
Вместо того, чтобы задавать угол внутри функции Rotate(), мы объявим переменню speed и используем её в функции. Это выглядит следующим образом:
var speed = 5.0;
function Update () {
transform.Rotate(0, speed*Time.deltaTime, 0);
}
Теперь выберем Cube и посмотрим в Inspector. Там отображается наша новая переменная speed.

Эта переменная может быть изменена прямо в инспекторе, как и любая другая. Её так же можно изменять во время просмотра игры.
Нажмём Play и изменим значение speed. Cube соответственно этому изменит скорость своего вращения. После выхода из Play mode переменная вернётся к исходному значению.
Используя переменные, можно использовать скрипт сразу для нескольких объектов, но при этом для каждого из них задавать своё значение переменной. Если приложить наш скрипт к нескольким кубам и каждому задать своё значение speed, они будут вращаться с разной скоростью, используя один скрипт.
Where to go from here
Для дальнейшего изучения скриптинга читаем следующее:
* Примеры — Tutorials.
* Scripting Overview.
* Unity Forums.


