Unity Js - с чего начать? АЗЫ. Урок 1 - Форум
Страница 1 из 11
Форум » Программирование » Java script » Unity Js - с чего начать? АЗЫ. Урок 1
Unity Js - с чего начать? АЗЫ. Урок 1
Администратор
Уровень 999
Сообщений: 2093
Дата: Среда, 11.04.2012, 01:30:57 | Сообщение # 1
Offline
Эта тема специально создана для первичного обучения азам скриптинга на Unity Js.
Здесь консультируемся по этим вопросам.


АЗЫ СКРИПТИНГА на UNITY Js


Из чего состоит сам скрипт? Разобьем содержимое на части.
Но начнем с того что строки скрипта комп считывает по порядку очередности (сверху, вниз), запомните это и учитывайте во избежание недоразумений.
Скрипт всегда нужно начинать с обьявления переменных которые будут задействованы в данном скрипте, ибо сам унити их за вас сочинять скорее всего не станет. Рассмотрим все выше написанное на простом примере живого скрипта. Допустим мы хотим поставить на сцену простой куб и заставить его двигаться
(колебаться) влево, вправо.
Что нам понадобиться в 1 очередь? Как и писал выше начнем наш скрипт с обьявления переменных. Давайте подумаем какие значения нам понадобиться в них хранить (ибо известно что в коде переменная являеться своеобразным контейнером для хранения значений, которые можно изменять, проверять и присваивать другим переменным и параметрам обьектов). Для данного случая нам понадобиться прежде всего переменная - скорость движения куба, чтобы урок проще было усвоить я буду использовать самые простые методы. Двигать куб в коде мы будем только через transform, вернее мы будем изменять из кода значения в его ячейках (трансформ находиться в инспекторе, справа, вверху), как мы знаем он отвечает за позицию, поворот и массштабирование обьекта, вот на эти параметры мы и будем воздействовать. Как я и писал для скрипта нам нужна в 1 очередь скорость, из чего состоит параметр скорости - из расстояния проходящего обьектом за промежуток времени и из непосредственно отрезков времени задержки (пауз) выполнения строк кода, если не делать пауз, то обьект будет перемещаться мгновенно, и незаметно глазу. Мы же собираемся сделать его движение по возможности плавным. Поэтому для параметра скорости я создаю 2 переменные - это moveDistanse - расстояние и moveTime - отрезок времени паузы между строками действий, из этих 2 параметров будет складываться скорость передвижения обьекта. Начинаем писать скрипт, обьявляем наши переменные:

Code
var moveDistanse = 1;  
  var moveTime = 0.1;


Сразу оговорюсь что значения пока берем от балды, их всегда можно поменять. Здесь настало время немного рассказать о типах переменных в данном концепте, а именно если мы перед переменной пишем var, то такая переменная доступна в инспекторе и ее значение можно менять не открывая скрипта, прямо там же. Если припишем перед переменной private var, то эта переменная будет работать локально внутри скрипта, но не будет доступна из инспектора (будет скрыта). И 3 тип - это static var, такая переменная недоступна в инспекторе, но работает внутри скрипта локально, а так же доступна из и видима из любого другого скрипта, иными словами - это не что иное как глобальная переменная. И вызывать ее можно такЖ

Code
Имя скрипта.имя переменной = ХХХ;


Для изменения значения например:

Code
Weapons.reload = 0;


Для условия:

Code
if (Weapons.reload == 0) {  
               // тут наши действия по условию.  
  }


Вернемся к нашим баранам (переменным)... мы их обьявили и дали им первичные значения.
Дальше - чтобы выполнить какие либо действия в нашем скрипте, мы должны их (действия) так же описать кодом.
Но! код действий обязательно должен быть прописан внутри функций.
Что из себя представляет червяк по кличке *функция*? Это собственно отрезок кода, который помещаеться вовнутрь этой самой функции (между скобок {}, после вызова cамой функции), выглядет в коде примерно так:

Code
function Blabla () {  
              // тут участок кода  
              // тут участок кода  
              // и т.д.  
  }


Функции в унити вызываються, запускаються и работают по определенным правилам.
Фунции деляться на встроенные специфические и те что создаем мы сами в своем коде.
Внимание! Создаваемые нами функции не должны совпадать именами с встроенными!
Итак немного выше мы с вами создали функцию (в примере). Вызвать ее и заставить выполниться можно выполнив действие вызова функции.
Кокретно для приведенного примера код вызова будет выглядеть так:

Code
Blabla ();


такая команда введенная в скрипте, заставит запуститься участок кода между скобками этой функции и выпониться 1 раз.
Если команда будет повторяться, то функция будет выполняться все время.

Это что касательно созданных нами функций. Теперь немного о встроенных функциях которые нам понадобяться для нашего урока.
(об остальных, вы можете узнать, почитав скрипт референсе, когда немного научитесь стоять на ногах прогера )
Итак я перечислю несколько функций первой необходимости и опишу как они работают...
1. function Start - вызываеться движком, только один раз при старте. Очень удобно, чтоб присвоить переменным разовые значения. Например при смене оружия указать магазину на сколько патронов он должен заряжаться.
2. function Update () - вызываеться самим движком игры, каждый кадр и не зависимо от нашего желания. Самая быстрореагирующая функция, но так же и самая грузящая двиг и самая пожирающая ресурсы. Применяеться только по необходимости, например для управления контроллером и камерой.
3. function LateUpdate - тоже вызываеться движком, тоже выполняеться каждый кадр, но в самом коце скрипта, после всех остальных команд и т.д.
4. function FixedUpdate - эта функция вызываеться движком через определенные промежутки времени и скорость ее повторения не зависит от частоты кадров (fps). В основном применяеться для работы физики в игре. Наиболее рекумендуемая функция для постоянного контроля чего нибудь.
Обратите внимание на большие буквы в имени функций! Все функции имеют имена с первой заглавной буквой.
Функции так же можно вызывать из других скриптов, но об этом в текущем уроке мы говорить не будем... (может когда нибудь в следующем).
Итак мы с вами узнали структуру скрипта, из чего он состоит и как это дело приблизительно работает. Думаю самое время попытаться нам самим что нибудь написать... Я буду писать скрипт и делать подробные коментарии к каждой строке кода (все что написано в скриптовой строке через *//* не читаеться как код), а ваша задача следить за мыслью. Итак поехали:

Code
var moveRange = 1;   // обявил публичную переменную хранящую значение расстояния.  
  var moveTime = 1;   // обьявил публичную переменную хранящую значение времени.  
  private var range = 0;   // обьявил локальную переменную расстояния.  
  private var time = 0;   // обьявил локальную переменную времени.  

  function Start ()  {   // запускаем функцию Старт.  
        range = moveRange;   // присваиваем значение.  
        time = moveTime;   // присваиваем значение.  
  }   // закрываем функцию.  

  function FixedUpdate  {   // запускаем функцию.  
        Move ();   // вызываем соответствующую функцию (function Move ()).  
  }   //  

  function Move ()  {   // запускаеться вызванная функция.  
        Move_left ();   // вызываем функцию движения влево.  
        yield WaitForSeconds (time);   // приостанавливаем выполнение кода на время (time * 3), (3 цикла, догадайтесь почему).  
        Move_right ();   // вызываем функцию движения в право.  
  }   // закрыли функцию.  

  function Move_left ()  {   // запускаеться вызваная функция движения влево.  
        transform.localPosition.x -= range;   // командуем сдвинуть обьект по оси х на расстояние (range).  
        yield WaitForSeconds (time);   // ждем, пауза.  
        transform.localPosition.x -= range;  
        yield WaitForSeconds (time);  
        transform.localPosition.x -= range;  
        yield WaitForSeconds (time);   // повторяем 3 раза.  
  }  

  function Move_right ()  {   // запускаеться вызваная функция движения вправо.  
        transform.localPosition.x += range;  
        yield WaitForSeconds (time);  
        transform.localPosition.x += range;  
        yield WaitForSeconds (time);  
        transform.localPosition.x += range;  
        yield WaitForSeconds (time);  
  }


Если этот код присвоить какому нибудь обьекту сцены, например кубу, то при тесте он будет колебаться по оси Х.

На этом 1. урок закончен, надеюсь будут еще... пишите что непонятно.
Подпись пользователя
Форум » Программирование » Java script » Unity Js - с чего начать? АЗЫ. Урок 1
Страница 1 из 11
Поиск: