Класс, компонент и скрипт
Прежде всего, вы должны знать, что означают некоторые слова. Затем вам нужно знать, как использовать эти слова. Вспомните то время, когда в начальной школе изучали английский. Скучные уроки, но необходимые для того, чтобы уметь хорошо писать. Вы, вероятно, уже знаете некоторые эти слова из повседневного обихода, которые не имеют ничего общего с программированием, но достаточно схожи с тем, чтобы быть легко применяемыми при написании скриптов.
В этой главе я приведу некоторые основные объяснения о том, что такое скрипт и о двух элементах, которые являются его частью: переменные и функции. В основном я буду использовать повседневные примеры, чтобы попытаться объяснить понятия и показать как, на самом деле, они просты. В последующих главах мы углубимся в детали того, как в действительности использовать эти простые понятия.
Ссылка на описание игрового объекта в руководстве по Unity
https://unity3d.com/support/documentation/Manual/GameObjects.html
Класс: приблизительное объяснение
Классы играют важную роль в Unity. Мы изучим, что такое класс и каким образом другие слова, которые также изучим, имеют отношение к классам.
Что же такое класс?
Простой ответ — это определение чего-либо, так же, как в словаре.
Например, поищите в словаре слова «собака» или «утка» и прочитайте, что они означают. Есть ли определение «собаки» в словаре? Конечно, нет, но приводится некоторая информация о том, как выглядит собака и о ее некоторых повадках.
Ответ от Unity3D — определение это то, что:
- Определяет переменные, которые будут использованы для хранения информации (данных) и
- Определяет функции, которые используются для выполнения действий с использованием данных, содержащихся в переменных.
Другими словами, класс определяет:
- Несколько слов — имена переменных, и
- Некоторые другие элементы, которые класс может сделать — функции.
Компоненты и скрипты: немного магии
Работая в Unity, вы занимаете две должности:
- Создателя игры, и
- Программиста
Выступая в роли создателя игры, вы можете выбирать игровой объект и просматривать свойства каждого компонента, прикрепленного к этому игровому объекту.
Когда вы выступаете в качестве программиста, то определение меняется:
- Скрипт написан для того, чтобы дать игровому объекту способность делать что-нибудь.
- Когда скрипт будет сохранен, имя его файла будет таким же, как и имя класса — содержимого переменных и функций.
- Этот класс (файл скрипта) сохраняется в папке «Project», находясь там, в спящем состоянии и без действий.
- Можете сменить роль программиста снова.
Магия возникает, когда вы становитесь создателем игры снова и прикрепляете класс (файл скрипта) к игровому объекту.
- Взмах волшебной палочки — бах! — класс (файл скрипта) теперь называется компонентом, а общедоступные переменные класса (файла скрипта) — свойствами, которые вы видите в окне «Inspector».
Переменные в скриптах
Что такое переменная? Технически, это крошечная область памяти компьютера, которая содержит любую информацию, которую вы там помещаете. Во время работы игры, переменная отслеживает, где хранится информация, какое значение содержится там и тип информации. Между тем, все, что вам следует знать — это то, каким образом переменная работает в скрипте, и это очень просто понять.
Переменная похожа на почтовый ящик
Что обычно находится в почтовом ящике, кроме воздуха? Ну, как правило — ничего, но иногда там что-нибудь есть. Иногда это деньги (зарплата), счета, фотографии от «любимой» тетушки Мейбл, паук и т.д. Вся суть в том, что содержимое почтового ящика может меняться. Исходя из этого, давайте назовем каждый почтовый ящик переменной, поскольку то, что в нем находится, может изменяться.
Имя переменной
Если я, пользуясь фотографией сельского почтового ящика, попросил бы вас посмотреть, что находится в почтовом ящике, первое, что вы бы сказали — «в каком?». Если бы я сказал, что в ящике Смита или в коричневом почтовом ящике, или в округлом, то вы бы знали наверняка какой почтовый ящик открыть, чтобы взять то, что находится внутри.
В скриптах нам также необходимо называть переменные уникальными именами, так чтобы я мог бы спросить вас о том, что находится в переменной с именем myNumber, или какое «клевое» имя вы бы использовали?
Для тех из вас, кто наиболее любопытен: переменные — это имена, которые мы составляем для адресов памяти в компьютере. Когда мы используем переменные в скрипте, компьютер знает точно, куда направляться в своей памяти, чтобы получить или сохранить информацию, которая нам необходима.
Переменные — это просто заменители
А??? Что???
Видите эти имена в левой колонке: Sensitivity X, Sensitivity Y и т.д.? Это имена переменных в скрипте. Видите цифры в правой колонке? Это информация, которую переменные (почтовые ящики) содержат. Ну и как же это все работает?
Давайте представим, что у вас есть переменная (почтовый ящик) с именем myNumber. В myNumber содержится число 9 (в почтовом ящике — число 9). Так вот, если бы вы увидели нижеследующее, то это, как правило, не имело бы никакого логического смысла, если только вы не проходили алгебру в средней школе:
2 + myNumber = А???
Вы не можете добавлять слова и числа и получать ответ. Но вы можете это сделать, когда слово является переменной в скрипте, так как все то, что находится в переменной, заменяется вместо слова (имени переменной). Таким образом, в нашем маленьком математическом уравнении, 9 заменяется вместо слова там, где отображен myNumber, следовательно:
2 + 9 = 11
Дело в том, что когда вы пишите скрипты, то переменная — это просто метка-заполнитель, или заменитель, для фактической информации, которую вы хотите использовать.
Остальное позже
Это как раз те самые основы о переменных, которые являются просто удобным способом для хранения любой информации, которая вам понадобится в скрипте. Также, переменные могут содержать различные типы информации, такие как слова, или даже целые игровые объекты. Существуют более тонкие детали, касающиеся синтаксиса переменных и того, как назначать и получать значение переменной, что мы и изучим в дальнейшем.
Функции в скриптах
Функции — это то место, где находится действие, принимаются решения, выполняются задачи. Это рабочая часть скрипта. В моем первоначальном примере разговора с другом и ответа на телефонный звонок, «разговор с другом» был функцией, которую вы «выполняли», когда должны были сменить и выполнить другую функцию «разговор по телефону».
Шаг, шаг, обойти, шаг…
Во время выполнения скрипта могут быть прерывания, такие как ответ на телефонный звонок в примере «разговор с другом». «Разговор с другом» был функцией, которую вы выполняли, когда вами было обнаружено прерывание, телефонный звонок. Вы должны были сделать что-то другое, вы должны были выполнить другую функцию, что также имеет свои собственные последовательные шаги. После завершения, вы возвратились к шагам «разговор с другом», именно туда, где остановились.
Вполне логично, использовать функции
Игровые объекты могут иметь множество типов входящей информации, таких как определение при их столкновении с чем-нибудь, или когда что-нибудь сталкивается с ними, или игрок может нажать определенные кнопки, чтобы управлять геймплеем. Эти входящие данные вызовут определенные функции, которые выполнят определенные задачи, созданные вами в скрипте.
Такие функции создаются, потому что они являются последовательными шагами, которые выполняются снова и снова, много раз. Таким образом, вместо того, чтобы опять печатать одни и те же последовательности шагов снова и снова, мы помещаем эти шаги в контейнер кода и даем ему имя. Когда мы хотим использовать этот контейнер кода в скрипте, то просто пишем имя функции в срипте, которое вызывает функцию для выполнения действий.
Остальное позже
Мы рассмотрим позднее о том, как правильно вызывать функции при необходимости. Пока, все, что вам нужно понять — это то, что функция является последовательностью шагов, которые выполняют конкретную задачу, и причиной создания функции является определенная задача, которую нужно будет выполнять много раз. Поэтому имеет смысл поместить последовательность шагов в свой собственный раздел кода, дать ему имя, и тогда мы сможем вызвать их, если нам нужно будет выполнить эту задачу.
Синтаксис точки в скриптах: взаимодействие
В нашем скрипте есть переменные, которые содержат информацию или данные, и в скрипте есть функции, которые позволяют выполнять задачи. Теперь я хочу представить концепцию взаимного обмена информацией с другими компонентами и игровыми объектами. Я немного коснусь здесь этой темы, поскольку обмен информацией между компонентами является важной частью работы скриптов. Это то, что делает возможным взаимодействие.
Что с точками?
Если вы посмотрите на код, написанный другими, то увидите слова с точками, разделяющими их. Что это такое? Выглядит довольно запутанным, не так ли?
Вот пример из документации Unity:
transform.position.x
Не стоит беспокоиться о том, что означает вышеописанное, это будет рассмотрено позже, я просто хочу, чтобы вы посмотрели.
Это называется синтаксисом точки.
Поскольку скрипт Unity подобен иностранному языку, существуют грамматические правила, которым необходимо следовать.
Вот еще один пример. Это адрес моего (прим.ред.- автора статьи) дома, что-то вроде:
USA.Vermont.Essex.22 myStreet
Выглядит забавно, не правда ли? Это потому что я использовал синтаксис (грамматику) скриптов Unity вместо почтового. Тем не менее, держу пари, что если вы посмотрите внимательно, то сможете легко понять, как найти мой дом.
Вот еще один пример. Если бы мы встретились в каком-то случайном месте на Земле, и я бы попросил вас принести мне мои солнцезащитные очки, используя только это:
USA.Vermont.Essex.22 myStreet.2nd floor.office.desk.center.drawer.sunglasses
Были бы у вас какие-нибудь сложности в обнаружении их местонахождения?
Это адрес?
Да, все это так. Синтаксис точки — просто способ, которым вы указываете какой-нибудь игровой объект или какой-нибудь компонент, переменную (свойство) или функцию в любом игровом объекте в своей игре.
Вывод
Следующий шаг
Теперь, когда вы понимаете фундаментальные основы, используемые для написания скриптов, предыдущие уроки должны будут позволить приступить к более детальному изучению скриптов в Unity.
С постижением вами понятий переменных, функций и синтаксиса точки, мы теперь можем продолжить изучение некоторых тонкостей создания скриптов.
Источник: https://bim.wikispaces.com/file/view/UnityScript_Basics_for_Noobs.pdf
Смотрите также:
Unity3D: Основы использования скриптов для новичков: Преимущественно для новичков
Unity3D: Основы использования скриптов для новичков: Подробнее о переменных
Unity3D: Основы использования скриптов для новичков: Подробнее о функциях
Unity3D: Основы использования скриптов для новичков: Синтаксис точки: взаимодействие компонентов
Unity3D: Основы использования скриптов для новичков: Назначение при помощи инспектора