UObject

UObject

UObject 类是大多数其他 Unreal Engine 游戏对象的基类。

继承关系

RemoteObject

元方法

__index

  • 用法: UObject["ObjectMemberName"] 或 UObject.ObjectMemberName
  • 返回成员变量(反射属性或自定义属性)或一个 UFunction。
  • 此方法可返回任意类型;若返回类型较复杂,可对返回值使用 UObject 专用的 type() 函数来确定类型。
  • 若类型较简单,请使用常规 Lua type() 函数。
  • 返回值:
# 类型 说明
1 UObject 或 UFunction 如果类型是 UObject,则实际类型可以是任何继承自 UObject 的类。
  • 示例:
    local Character = FindFirstOf("Character")
    
    -- Retrieve a non-trivial type
    local MovementComponent = Character.CharacterMovement
    
    -- Retrieve a trivial type
    local JumpMaxCount = Character.JumpMaxCount
    
    -- Call a UFunction member on the object
    -- Remember to use a colon (:) for calls
    local CanCharacterJump = Character:CanJump()
    
    

__newindex

  • 用法: UObject["ObjectMemberName"] = NewValue 或 UObject.ObjectMemberName = NewValue
  • 将成员变量的值设为 NewValue。
  • 示例: 将内存中第一个 UEngine 类实例的 MaxParticleResize 值设为指定值。
    local Engine = FindFirstOf("Engine")
    Engine.MaxParticleResize = 4
    

__eq

  • 用法: ObjectA == ObjectB
  • 通过底层 C++ 指针对两个 UObject 实例进行比较。如果两个 userdata 包装的是同一个远程 UObject*(或两者均为空/无效),则返回 true,否则返回 false。与非 UObject userdata 或其他类型比较时会安全地返回 false,不会崩溃。
  • 示例:
    local Player = FindFirstOf("BP_Player_C")
    if Player == Controller.Pawn then
        print("Pawn matches active player")
    end
    

方法

GetFullName()

  • 返回值: UObject 及其派生对象的完整名称和路径信息。
  • 返回值:
# 类型 说明
1 string UObject 的完整名称和路径
  • 示例:
    local Engine = FindFirstOf("Engine")
    print(string.format("Engine Name: %s", Engine:GetFullName()))
    
    -- Output
    -- Engine Name: FGGameEngine /Engine/Transient.FGGameEngine_2147482618
    

GetFName()

  • 返回值: 此 UObject 的 FName。这等同于 Unreal 中的 Object->NamePrivate。

警告: __index 返回的所有 FName 均为引用。

  • 返回值:
# 类型 说明
1 FName UObject 的 FName
  • 示例:
    local Character = FindFirstOf("Character")
    if Character:IsValid() then
        local CharacterName = Character:GetFName()
        print(string.format("ComparisonIndex: 0x%X\n", CharacterName:GetComparisonIndex()))
    end
    

GetAddress()

  • 返回值: UObject 在内存中的位置。
  • 返回值:
# 类型 说明
1 integer 64 位整数,即 UObject 的地址
  • 示例:
    local Character = FindFirstOf("Character")
    if Character:IsValid() then
        print(string.format("Character: 0x%X\n", Character:GetAddress()))
    end
    

GetClass()

  • 返回值: 此对象所属的类。这等同于 Unreal 中的 UObject->ClassPrivate。
  • 返回值:
# 类型 说明
1 UClass UObject 的类
  • 示例:
    local Character = FindFirstOf("Character")
    if Character:IsValid() then
        print(string.format("Character Class: 0x%X\n", Character:GetClass():GetAddress()))
    end
    

GetOuter()

  • 返回值: 此 UObject 的 outer。这等同于 Unreal 中的 Object->OuterPrivate。
  • 返回值:
# 类型 说明
1 UObject 此 UObject 的 outer UObject
  • 示例:
    local Character = FindFirstOf("Character")
    if Character:IsValid() then
        print(string.format("Character Outer: 0x%X\n", Character:GetOuter():GetAddress()))
    end
    

IsAnyClass()

  • 返回类型: bool
  • 返回值: 如果此 UObject 是 UClass 或其派生类,则为 true。

Reflection()

  • 返回类型: UObjectReflection
  • 返回值: 一个反射对象。

GetPropertyValue(string MemberVariableName)

  • 返回类型: auto
  • 等同于 __index 元方法(即执行 UObject["ObjectMemberName"])。

SetPropertyValue(string MemberVariableName, auto NewValue)

  • 等同于 __newindex 元方法(即执行 UObject["ObjectMemberName"] = NewValue)。

IsClass()

  • 返回类型: bool
  • 返回值: 此对象是否为 UClass 或其派生类。

GetWorld()

  • 返回类型: UWorld
  • 返回值: 此 UObject 所在的 UWorld。

IsA(UClass Class)

  • 返回类型: bool
  • 返回值: 此对象是否属于指定的 UClass。

IsA(string FullClassName)

  • 返回类型: bool
  • 返回值: 此对象是否属于指定名称的类。

HasAllFlags(EObjectFlags FlagsToCheck)

  • 返回类型: bool
  • 返回值: 对象是否具有所有指定标志。

HasAnyFlags(EObjectFlags FlagsToCheck)

  • 返回类型: bool
  • 返回值: 对象是否具有任一指定标志。

HasAnyInternalFlags(EInternalObjectFlags InternalFlagsToCheck)

  • 返回类型: bool
  • 返回值: 对象是否具有任一指定内部标志。

CallFunction(UFunction Function, auto Params...)

  • 在此 UObject 上调用所提供的 UFunction。

ProcessConsoleExec(string Cmd, nil Reserved, UObject Executor)

  • 使用给定参数调用 UObject::ProcessConsoleExec。

type()

  • 返回类型: string
  • 返回值: UE4SS 所识别的此对象类型。
  • 这不会返回 Unreal 所识别的类型。
  • 不等同于调用 type(UObject);后者返回 Lua 识别的类型(userdata)。

原文:docs/lua-api/classes/uobject.md · 固定提交 560411f18512 · 来源与 MIT 许可