Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Преобразование ссылок на объекты и классы

Спецификаторы параметров функций | Переопределение функций | Private, Protected | Выражения case | Встроенные операторы и их приоритет | Создание объектов | Отладчик сценариев | Определение значений по умолчанию с использованием блока defaultproperties | Динамические массивы | Итераторы динамических массивов |


Читайте также:
  1. http://bither.livejournal.com/325211.html ликбез: майдан, Украина, ссылки (копии ссылок), бандеровцы и прочее. Жестко и нелицеприятно
  2. VIII–IX классы
  3. Z-ПРЕОБРАЗОВАНИЕ
  4. Абстрактные базовые классы и чисто виртуальные функции
  5. Абстрактные базовые классы и чисто виртуальные функции.
  6. Блок 2 Использование абсолютных и относительных ссылок
  7. В рамках фестиваля пройдут многочисленные мастер-классы и пленэры для детей и педагогов.

Выражения

Присваивание

Чтобы присвоить значение переменной, используйте оператор "=" следующим образом:

function Test()

{

local int i;

local string s;

local vector v, q;

 

i = 10; // Assign a value to integer variable i.

s = "Hello!"; // Assign a value to string variable s.

v = q; // Copy value of vector q to v.

}

В языке UnrealScript, когда функция или другое выражение, требуют определенный тип данных (например, "float"), а вы указываете другой тип данных (например, "int"), компилятор будет пытаться автоматически привести значение к соответствующему типу. Преобразования между всеми числовыми типами данных (byte, int и float) происходит автоматически, без каких-либо усилий с вашей стороны.

UnrealScript также может конвертировать многие другие встроенные типы данных в другие типы, если вы явно указываете их преобразование преобразовать в коде. Синтаксис для явного преобразования следующий:

function Test()

{

local int i;

local string s;

local vector v, q;

local rotator r;

 

s = string(i); // Convert integer i to a string, and assign it to s.

s = string(v); // Convert vector v to a string, and assign it to s.

v = q + vector(r); // Convert rotator r to a vector, and add q.

}

Ниже приведен полный набор типов, для которых в языке UnrealScript можно использовать не автоматическое явное преобразование:

Преобразование ссылок на объекты и классы

Подобно функциям преобразования между различными типами данных, в языке UnrealScript есть возможность преобразования типов ссылок на объекты и акторы. например, у вас есть переменная, названная "Target", являющаяся ссылкой на актор. Скажем, вы пишете сценарий, где вам необходимо проверить, принадлежит ли актор, представленный ссылкой Target, классу "Pawn", а если принадлежит, то осуществить последовательность необходимых вам операций, имеющих смысл только для класса Pawn, например, вызвать определенную функцию. Это можно сделать путем применения операторов преобразования.

var actor Target;

//...

 

function TestActorConversions()

{

local Pawn P;

 

// Cast Target to Pawn and assign the result to P. If Target is not a Pawn (or subclass of Pawn), then the value assigned to P will be None.

P = Pawn(Target);

if(P!= None)

{

// Target is a pawn, so set its Enemy to Self.

P.Enemy = Self;

}

else

{

// Target is not a pawn.

}

}

 

Для выполнения преобразования типа актора введите имя класса, в который необходимо преобразовать ссылку,а в скобках укажите имя переменной, ссылающейся на иходный тип актора. Результат преобразования зависит от возможности выполнения преобразования. В приведенном выше примере, если Target ссылается объект Trigger, а не Pawn, выражение Pawn(Target) вернет "None", так как Trigger не может быть преобразован в Pawn. Однако, если ваша цель ссылается объект Brute, преобразование успешно вернет Brute, потому что Brute наследует класс Pawn.

Таким образом, преобразование типов акторов имеет две цели: во-первых, вы можете использовать для проверки объекта на принадлежность определенному классу. Во-вторых, вы можете использовать его для преобразования ссылки на актор из одного класса в другой. Обратите внимание, что это преобразование не влияет на актор и не меняет класс актора, а просто приводить ссылку на актор к конкретному типу, позволяя получить доступ к свойствам и методам, объявленным для типа, к которому осуществляется приведение, например к свойствам и методам производного класса.

Другой пример преобразования находится в сценарий Inventory. Каждый актор сценария Inventory принадлежит к классу Pawn, даже если его переменная Owner ссылается на любой другой актор (Actor.Owner - это переменная типа Actor). Таким образом, общей темой в коде Inventory является приведение типа Owner к типу Pawn, например:

// Called by engine when destroyed.

function Destroyed()

{

// Remove from owner's inventory.

if(Pawn(Owner)!=None)

Pawn(Owner).DeleteInventory(Self);

}

Функции


Дата добавления: 2015-11-14; просмотров: 44 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
The Devoted Friend| Объявление функций

mybiblioteka.su - 2015-2024 год. (0.016 сек.)