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

Спецификаторы вызова функций



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

Global

Вызывает наиболее позднюю версию глобальной (не включенной в состояние) функции.

Super

Вызывает соответствующую версию функции базового класса. Вызываемая функция может быть как функцией состояния, так и глобальной функцией, в зависимости от контекста.

Super(classname)

Вызывает соответствующую версию функции, находящуюся в указанном классе, или версию ближайшего из базовых классов. Вызываемая функция может быть как функцией состояния, так и глобальной функцией, в зависимости от контекста.

Объединение нескольких спецификаторов вызова (например, Super(Actor).Global.Touch) является недопустимым.

Ниже приведено несколько примеров применения спецификаторов вызова:

class MyClass extends Pawn;

 

function MyExample( actor Other )

{

Super(Pawn).Touch( Other );

Global.Touch( Other );

Super.Touch( Other );

}

Также, например, функция BeginPlay() вызывается, когда актор входит в игровой процесс. Функция BeginPlay() реализована в классе Actor и включает некоторые важные операции, которые должны быть выполнены. Теперь, скажем, вы хотите переопределить функцию BeginPlay() в вашем новом классе MyClass, чтобы добавить новую функциональность. Чтобы сделать это безопасно, необходимо вызвать версию BeginPlay() из базового класса:

class MyClass extends Pawn;

 

function BeginPlay()

{

// Call the version of BeginPlay in the parent class (important).

Super.BeginPlay();

 

// Now do custom BeginPlay stuff.

//...

}

Доступ к статическим функциям из переменной класса

Статические функции из переменной класса могут быть вызваны следующим образом:

var class C;

var class<Pawn> PC;

 

class'SkaarjTrooper'.static.SomeFunction(); // Call a static function

// in a specific class.

 

PC.static.SomeFunction(); // Call a static function in a variable class.

 

class<Pawn>(C).static.SomeFunction(); // Call a static function in a

//casted class expression.

Значения по умолчанию для пременных

Доступ к значениям по умолчанию для переменных

UnrealEd позволяет дизайнерам уровней редактировать переменные "по умолчанию" класса объекта. Когда создается новый актор, все его переменные инициализируются значениями по умолчанию. Иногда это полезно для ручного сброса переменной в значение по умолчанию. Например, когда игрок бросает предмет инвентаря, код предмета инвентаря должен сбросить некоторые из значений актора в значения по умолчанию. В UnrealScript можно получить доступ к переменным по умолчанию класса с использованием ключевго слова "Default.". Например:

var() float Health, Stamina;

//...

 

// Reset some variables to their defaults.

function ResetToDefaults()

{

// Reset health, and stamina.

Health = Default.Health;

Stamina = Default.Stamina;

}







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