Здавалка
Главная | Обратная связь

Встроенные операторы и их приоритет



Язык UnrealScript предоставляет широкий спектр операторов в стиле C, C++ и Java для таких операций, как сложение чисел, сравнение значений, и инкремент переменных. Полный набор операторов определен в пакете Object.u. Ниже описаны стандартные операторы, в порядке убывания приоритета. Обратите внимание, что все операторы в стиле С имеют тот же приоритет, что и в языке C.

Оператор Типы, к которым применим оператор Назначение
@ string Объединение строк с дополнительным пробелом между двумя строками. "string1"@"string2" = "string1 string2"
@= string Объединение строк, с дополнительным пробелом между двумя строками, объединить и присвоить. "string1"@="string2", "string1" => "string1 string2" (версия 3323 и выше)
$ string Объединение строк. "string1"$"string2" = "string1string2"
$= string Объединение строк, объединить и присвоить. "string1"$="string2", "string1" => "string1string2" (версия 3323 и выше)
*= byte, int, float, vector, rotator Умножить и присвоить
/= byte, int, float, vector, rotator Разделить и присвоить
+= byte, int, float, vector Сложить и присвоить
-= byte, int, float, vector Вычесть и присвоить
|| bool Логическое ИЛИ
&& bool Логическое И
^^ bool Логическое исключающее ИЛИ
& int Побитовое И
| int Побитовое ИЛИ
^ int Побитовое исключающее ИЛИ (XOR)
!= Все Провенить на неравенство
== Все Проверить на равенство
< byte, int, float, string Меньше, чем
> byte, int, float, string Больше, чем
<= byte, int, float, string Меньше или равно
>= byte, int, float, string Больше или равно
~= float, string Проверить на приблизительное равенство (с точностью 0.0001), сравнить без учета регистра (для строк).
<< int, vector Левый двоичный сдвиг (int), прямое преобразование вектора (vector)
>> int, vector Правый двоичный сдвиг (int), обратное преобразование вектора (vector)
>>>   То же, что и >>
+ byte, int, float, vector Сложить
- byte, int, float, vector Вычесть
% float, int, byte По модулю (остаток от деления)
* byte, int, float, vector, rotator Умножить
/ byte, int, float, vector, rotator Разделить
Dot vector Скалярное произведение (dot product)
Cross vector Векторное произведение (cross product)
** float Возведение в степень
ClockwiseFrom int (элементы rotator) Возвращает истину, если первый аргумент расположен по часовой стрелке по отношению ко второму аргументу

В таблице, приведенной выше, перечислены операторы в порядке убывания их приоритета (для каждой группы операторов). При вводе сложного выражения, например: "1 * 2 + 3 * 4", UnrealScript автоматически группирует операторы по их приоритету. Так как умножение имеет более высокий приоритет, чем сложение, выражение рассматривается компилятором как "(1 * 2) + (3 * 4)".

Операторы "&&" (логическое И) и "||" (логическое ИЛИ) являются замкнутыми: если результат выражения может быть определен только из первого выражения (например, если первый аргумент операции && имеет значение false), то второе выражение не вычисляется.

Что касается операций прямого и обратного преобразования векторов, оператор >> переводит вектор из локального пространства в пространство мира, а оператор << производит обратное преобразование, то есть переводит вектор из пространства мира в локальное пространство.

Например, если у вас есть вектор перед, находящийся в 64 единицах перед игроком, vect(64,0,0) - это вектор локального пространства игрока. Если вы хотите перевести его в мировое пространство, то вы должны преобразовать его с использованием вектора ориентации игрока, вычислив вектор в пространстве мира следующим образом:

myWorldSpaceVect = my64Vect >> playerPawn.rotation;

Прямое преобразование вам нужно использовать в тех случаях, когда у вас есть вектор пространства мира, а вам необходимо преобразовать его в локальное пространство игрока. Например, вы можете преобразовать скорость актора автомобиля из пространства мира в локальное пространство автомобиля, таким образом вы можете получить вектор с компонентом x, равным скорости автомобиля, чтобы затем отобразить его скорость на HUD.

В дополнение к стандартным операторам язык UnrealScript поддерживает следующие унарные операторы:

  • ! (bool) логическое отрицание.
  • - (int, float) математическое отрицание.
  • ~ (int) двоичное отрицание.
  • ++, -- префиксиые и постфиксные инкремент и декремент.

Время от времени в движок будут добавляться новые операторы. Полный список операторов вы найдете в исходном коде класса Object.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.