ФЭНДОМ


Класс UObjectBase находится в самой вершине иерархии классов UE4: от него порождён класс UObjectBaseUtility, а через последний — класс UObject, который «официально» считается базовым классом всех объектов.

UObjectBase отвечает за добавление объектов к массиву объектов (на котором основана работа сборщика мусора) и в хэш-таблицу имён (используется для поиска объекта по имени). Здесь же определены методы и поля, связанные со сбором статистики и с регистрацией классов.

Конструкторы Править

protected UObjectBase()

Конструктор, не выполняющий никаких действий.


protected UObjectBase(
              EObjectFlags  InFlags)

Параметры:

  • InFlags — флаги создаваемого объекта.

Этот конструктор инициализирует следующие поля:

  • ObjectFlags получает значение параметра InFlags;
  • InternalIndex получает значение INDEX_NONE (-1);
  • Class получает значение NULL;
  • Outer получает значение NULL.


public UObjectBase(
           UClass       *InClass,
           EObjectFlags  InFlags,
           UObject      *InOuter,
           FName         InName)

Параметры:

  • InClass — класс, к которому относится создаваемый объект; не может быть нулём.
  • InFlags — флаги создаваемого объекта.
  • InOuter — объект-«хозяин» создаваемого объекта (создаваемый объект логически находится внутри «хозяина»).
  • InName — имя создаваемого объекта.

Значения параметров присваиваются соответствующим полям создаваемого объекта. Если создание выполняется не в основном потоке игры, будет принудительно установлен флаг RF_Async. После заполнения полей новый объект добавляется к массиву объектов, а его имя — к хэш-таблице имён. Последние действия технически выполняются методом AddObject.

Деструкторы Править

public virtual  ~UObjectBase()

Конечный деструктор, удаляющий объект из массива объектов и (косвенно) из любых аннотаций.

Методы Править

AddObject Править

private void  AddObject(
                  FName  Name)

Параметры:

  • Name — имя, присваиваемое объекту.

Этот метод добавляет новосозданный объект к массиву объектов и хэш-таблице имён, предварительно присвоив полю Name значение, заданное в качестве параметра. Кроме того, если вызов метода произведён не из главного потока игры, для объекта устанавливается флаг RF_Async.

Для добавления объекта к массиву вызывается функция AllocateUObjectIndexForCurrentThread, а к хэш-таблице имён — фукнция HashObject.

AtomicallyClearFlags Править

public void  AtomicallyClearFlags(
                 EObjectFlags  FlagsToAdd)

Атомарно сбрасывает заданные флаги в поле ObjectFlags.

AtomicallySetFlags Править

public void  AtomicallySetFlags(
                 EObjectFlags  FlagsToAdd)

Атомарно устанавливает заданные флаги в поле ObjectFlags.

CreateStatID Править

private void  CreateStatID() const

!TODO!

DeferredRegister Править

protected virtual void  DeferredRegister(
                            UClass  *UClassStaticClass,
                            const TCHAR *PackageName,
                            const TCHAR *Name)

Превращает зарегистрированный во время запуска движка класс в обычный, добавляет объект в массив объектов и в хэш-таблицу имён и т.д.

!TODO!

EmitBaseReferences Править

public static void  EmitBaseReferences(
                        UClass *RootClass)

Выдаёт токен для сборщика мусора.

!TODO!

GetClass Править

public UClass *GetClass() const

Возвращает значение поля Class.

GetFlags Править

public EObjectFlags  GetFlags() const

Возвращает значение поля ObjectFlags.

GetFName Править

public const FName  GetFName() const

Возвращает значение поля Name.

GetOuter Править

public UClass *GetOuter() const

Возвращает значение поля Outer.

GetStatID Править

public TStatId  GetStatID(
                        bool  bForDeferredUse = false
                    ) const

!TODO!

GetUniqueID Править

public uint32  GetUniqueID() const

Возвращает значение поля InternalIndex. Хотя этот идентификатор назван уникальным, он является таковым только на время жизни объекта; после его уничтожения этот же идентификатор может быть присвоен новому объекту.

IsValidLowLevel Править

public bool  IsValidLowLevel() const

Этот метод проверяет допустимость объекта. Возвращается false при обнаружении какой-либо проблемы и true в случае, если всё в порядке. Выполняются следующие проверки:

  • наличие самого объекта (this отличен от нуля);
  • назначенность класса (поле Class отлично от нуля);
  • допустимость индекса объекта в массиве объектов (для проверки вызывается метод FUObjectArray::IsValid).

IsValidLowLevelFast Править

public bool  IsValidLowLevelFast(
                 bool  bRecursive = true
             ) const

Параметры:

  • bRecursive — если равен true, выполняется проверка корректности класса, заданного полем Class данного объекта.

В случае, если ошибок не выявлено, возвращается значение true, в противном случае — false.

Этот метод выполняет большее число проверок, чем метод IsValidLowLevel.

!TODO!

LowLevelRename Править

protected void  LowLevelRename(
                    FName    NewName,
                    UObject *NewOuter = NULL

Параметры:

  • NewName — новое имя объекта.
  • NewOuter — новый «хозяин» объекта. Если задан нуль, «хозяин» не изменяется.

Этот метод меняет имя и, возможно, «хозяина» данного объекта, а также вносит необходимые изменения в хэш-таблицу имён. Сбор статистики для объекта в связи с его переименованием начинается заново.

Для выполнения операций с хэш-таблицей имён вызываются функции UnhashObject и HashObject.

Register Править

protected void  Register(
                    const TCHAR *PackageName,
                    const TCHAR *Name)

Ставит в очередь запрос на регистрацию данного объекта.

!TODO!

RegisterDependencies Править

protected virtual void  RegisterDependencies()

Этот метод заставляет сначала зарегистрироваться базовые классы для данного класса. Применительно к классу UObjectBase он ничего не делает.

SetClass Править

private void  SetClass(
                  UClass *NewClass)

Параметры:

  • NewClass — новый класс объекта.

Этот метод меняет класс, к которому относится объект, а также вносит необходимые изменения в хэш-таблицу имён. Сбор статистики для объекта начинается заново.

Для выполнения операций с хэш-таблицей имён вызываются функции UnhashObject и HashObject.

SetFlagsTo Править

protected void  SetFlagsTo(
                    EObjectFlags  NewFlags)

Присваивает полю ObjectFlags заданное новое значение.

ThisThreadAtomicallyClearedRFUnreachable Править

public bool  ThisThreadAtomicallyClearedRFUnreachable()

Атомарно сбрасывает флаг RF_Unreachable в поле ObjectFlags. Возвращает true, если именно этот вызов привёл к сбросу данного флага, и false, если флаг был сброшен ещё до вызова этого метода или же после его вызова, но другим потоком.

Поля Править

Class Править

private UClass *Class

Класс, к которому принадлежит данный объект.

InternalIndex Править

private int32  InternalIndex

Индекс данного объекта в массиве объектов; присваивается при добавлении объекта в массив и остаётся неизменным и уникальным всё время жизни объекта.

Name Править

private FName  Name

Имя данного объекта, под которым он добавляется в хэш-таблицу имён.

ObjectFlags Править

private EObjectFlags  ObjectFlags

Различные флаги, отражающие состояние объекта.

Outer Править

private UObject *Outer

Объект, в котором находится данный объект.

StatID Править

private mutable TStatId  StatID

Обнаружено использование расширения AdBlock.


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

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

Также на ФЭНДОМЕ

Случайная вики