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

Функции общего назначения



Создание объектов

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

native final operator function coerce Object new

(

object InOuter,

name InName,

int InFlags,

class InClass,

object InTemplate

);

InOuter

(необязательный) Пакет, который необходимо назначить как "внешний" (Outer) для вновь созданного объекта. Если этот параметр не указан, "внешним" для объекта будет установлен специальный пакет, который существует только во время игры, называемый "переходным пакетом" (transient package).

InName

(необязательный) Имя для нового объекта. Если параметр на указан, объекту будет дано уникальное имя в формате ClassName_##, где ## - уникальный номер, увеличивающийся при создании каждого нового экземпляра этого класса.

InFlags

(необязательный, в настоящее время значение ограничивается 64 битными флагами) Флаги, уточняющие особенности применения объекта после его создания:

· 0x0000000100000000: Редактором поддерживается отмена/повтор операций с данным объектом. (RF_Transactional)

· 0x0000000400000000: Может ссылаться на внешние файлы. (RF_Public)

· 0x0000400000000000: Не может быть сохранен на диск. (RF_Transient)

· 0x0010000000000000: Не загружать объект на игровой клиент. (RF_NotForClient)

· 0x0020000000000000: Не загружать объект на игровой сервер. (RF_NotForServer)

· 0x0040000000000000: Не загружать объект в редактор. (RF_NotForEdit)

· 0x0008000000000000: Держать объект для редактирования, даже если он не на что не ссылается. (RF_Standalone)

InClass

класса, экземпляр которого создается

InTemplate

Объект, используемый для инициализации значений свойств нового объекта

Синтаксис применения оператора new выглядит следующим образом:

ObjectVar = new[(InOuter, InName, InFlags)] <class'InClass'>[(InTemplate)];

Создать объект класса LightFunction:

function CreateALight()

{

local LightFunction NewObj;

 

NewObj = new class'Engine.LightFunction';

}

Создаем новый объект класса LightFunction с именем "NewLight", указываем этот объект как внешний пакет.

function CreateALight()

{

local LightFunction NewObj;

 

NewObj = new(Self,'NewLight') class'Engine.LightFunction';

}

Создаем новый объект класса LightFunction с именем "NewLight" в переходный пакет, инициализируем значения свойств нового объекта, используя переменную LightFunctionTemplate:

var LightFunction LightFunctionTemplate;   function CreateALight() { local LightFunction NewObj;   NewObj = new(None,'NewLight') class'Engine.LightFunction' (LightFunctionTemplate); }   defaultproperties { Begin Object Class=LightFunction Name=MyLightFunctionArchetype End Object LightFunctionTemplate=MyLightFunctionArchetype }






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