Перейти до вмісту

UnrealScript

Матеріал з Вікіпедії — вільної енциклопедії.
Unreal Script
Парадигмаоб'єктно-орієнтована
Дата появи1998
ТворціТім Свіні
РозробникEpic Games
Останній реліз
Система типізаціїстатична, строга типізація і типобезпечність Редагувати інформацію у Вікіданих
Основні реалізаціївіртуальна машина Unreal Engine
Операційна системаМультиплатформна
ЛіцензіяUDK Licensing Resources
Вебсайтdocs.unrealengine.com/udk/Three/UnrealScriptHome.html Редагувати інформацію у Вікіданих

UnrealScript (також UScript) - це рідна скриптова мова Unreal Engine, яка використовувалась для створення коду гри та подій ігрового процесу до релізу Unreal Engine 4. Мова була розроблена для простого, високорівневого програмування ігор. Інтерпретатор UnrealScript був запрограмований Тімом Свіні, який також створив попередню скриптову мову гри ZZT-oop.

Подібно до Java, UnrealScript є об'єктно-орієнтованою без багаторазового успадкування (усі класи успадковуються від загального класу Object), а класи визначаються в окремих файлах, названих для класу, який вони визначають. На відміну від Java, UnrealScript не має обгортки об'єктів для примітивних типів. Інтерфейси підтримуються лише в Unreal Engine 3-го покоління та кількох іграх Unreal Engine 2. UnrealScript підтримує перевантаження оператора, але не перевантаження функцій, за винятком додаткових параметрів.

У березні 2014 року компанія Epic Games оголосила, що Unreal Engine 4 більше не підтримуватиме UnrealScript, а підтримуватиме сценарії(скрипти) ігор на C++. Візуальні скрипти будуть підтримуватися системою візуалізації Blueprints, заміною попередній системі Kismet.


Приклад коду

Історично програмісти відеоігор використовували концепцію станів з тих пір, як ігри пройшли епоху «понгу». Стани (і те, що відоме як "програмування машин стану") - це природний спосіб зробити складну поведінку об'єкта керованою. Однак до UnrealScript стани не підтримувалися на мовному рівні, що вимагало від розробників створювати оператори «перемикання» C/C ++ на основі стану об’єкта. Такий код було важко написати та оновити.

UnrealScript підтримує стани на мовному рівні. Тому в цій мові можна писати функції та код, які існують у певному стані. Ці функції викликаються лише тоді, коли актор знаходиться в ньому. Притому кожен актор завжди знаходиться в одному і лише одному стані, котрий відображає дію, яку він хоче виконати.

Приклад станів зі сценарію TriggerLight:

// Trigger turns the light on.
state() TriggerTurnsOn
{
   function Trigger( actor Other, pawn EventInstigator )
   {
      Trigger = None;
      Direction = 1.0;
      Enable( 'Tick' );
   }
}

// Trigger turns the light off.
state() TriggerTurnsOff
{
   function Trigger( actor Other, pawn EventInstigator )
   {
      Trigger = None;
      Direction = -1.0;
      Enable( 'Tick' );
   }
}

}

Тут оголошуються два різні стани (TriggerTurnsOn та TriggerTurnsOff), і різні версії функції Trigger у кожному стані. Хоча можлива реалізація без станів, використання станів робить код більш модульним та розширеним: у UnrealScript можна легко підкласувати існуючий клас, додавати нові стани та функції. Якщо намагатися зробити це без станів, отриманий код згодом було б складніше розширити.

Структура

Прості типи даних

Тип Опис типу та набір його значень
bool true, false
byte ціле число з діапазоном значень від 0 до 255
int ціле 32-х бітне число з діапазоном значень від −2 147 483 648 до 2 147 483 647
float 32-х бітне число з рухомою комою
string рядок символів Unicode
enum тип перерахування, що містить набір іменованих констант 0 і 1
name тип, що вказує ім'я класу, стану та ін.
Object посилання на об'єкт
Actor посилання на об'єкт класу Actor або успадкованого від нього
Class посилання вказує на тип класу чи успадкованого від нього класу
Struct структура, що складається із фіксованого числа полів
Array статичний масив


Див. також

Посилання