Lua API 总览(含过时提示)

Lua API

以下是 UE4SS 提供的 Lua API 函数,此外仍可使用 Lua 默认自带的标准库。

适用版本:4.0.0

当前状态:大部分已完成

完整 API 总览

此处汇总 UE4SS 可用的 API 定义。若要阅读更清晰的信息,请查看原文可折叠章节 4.1、4.2 和 4.3 中的独立 API 定义页(本 Wiki 中对应“表定义”“类”“全局函数”目录)。

警告:本 API 列表自 2.5.2 以来未更新,内容已经过时。最新信息请以各独立 API 定义页为准。

表定义

  • 定义格式为:FieldName | FieldValueType(字段名 | 字段值类型)。
  • 为便于阅读,仅使用数字作为名称的字段在此以 # 表示。
  • 除非另有说明,所有字段均为必填。
    ModifierKeys
        # | string(Microsoft 虚拟键码)

    PropertyTypes
        ObjectProperty      | internal_value
        ObjectPtrProperty   | internal_value
        Int8Property        | internal_value
        Int16Property       | internal_value
        IntProperty         | internal_value
        Int64Property       | internal_value
        NameProperty        | internal_value
        FloatProperty       | internal_value
        StrProperty         | internal_value
        ByteProperty        | internal_value
        UInt16Property      | internal_value
        UIntProperty        | internal_value
        UInt64Property      | internal_value
        BoolProperty        | internal_value
        ArrayProperty       | internal_value
        MapProperty         | internal_value
        StructProperty      | internal_value
        ClassProperty       | internal_value
        WeakObjectProperty  | internal_value
        EnumProperty        | internal_value
        TextProperty        | internal_value

    OffsetInternalInfo
        Property        | string(作为相对起点、替代基址的属性名称)
        RelativeOffset  | integer(从相对起点到此属性的偏移量)

    ArrayPropertyInfo
        Type | table (PropertyTypes)

    CustomPropertyInfo
        Name            | string(供 __index 元方法使用的名称)
        Type            | table (PropertyTypes)
        BelongsToClass  | string(此属性所属类的完整类名,不含类型前缀)
        OffsetInternal  | integer or table(为 table 时使用 OffsetInternalInfo,否则为从基址到此属性的偏移)
        ArrayProperty   | table(可选,ArrayPropertyInfo)

    EObjectFlags
        - 对象标记表,可使用 | 进行按位或组合。
        RF_NoFlags                       | 0x00000000
        RF_Public                        | 0x00000001
        RF_Standalone                    | 0x00000002
        RF_MarkAsNative                  | 0x00000004
        RF_Transactional                 | 0x00000008
        RF_ClassDefaultObject            | 0x00000010
        RF_ArchetypeObject               | 0x00000020
        RF_Transient                     | 0x00000040
        RF_MarkAsRootSet                 | 0x00000080
        RF_TagGarbageTemp                | 0x00000100
        RF_NeedInitialization            | 0x00000200
        RF_NeedLoad                      | 0x00000400
        RF_KeepForCooker                 | 0x00000800
        RF_NeedPostLoad                  | 0x00001000
        RF_NeedPostLoadSubobjects        | 0x00002000
        RF_NewerVersionExists            | 0x00004000
        RF_BeginDestroyed                | 0x00008000
        RF_FinishDestroyed               | 0x00010000
        RF_BeingRegenerated              | 0x00020000
        RF_DefaultSubObject              | 0x00040000
        RF_WasLoaded                     | 0x00080000
        RF_TextExportTransient           | 0x00100000
        RF_LoadCompleted                 | 0x00200000
        RF_InheritableComponentTemplate  | 0x00400000
        RF_DuplicateTransient            | 0x00800000
        RF_StrongRefOnFrame              | 0x01000000
        RF_NonPIEDuplicateTransient      | 0x01000000
        RF_Dynamic                       | 0x02000000
        RF_WillBeLoaded                  | 0x04000000
        RF_HasExternalPackage            | 0x08000000
        RF_AllFlags                      | 0x0FFFFFFF

    EInternalObjectFlags
        - 内部对象标记表,可使用 | 进行按位或组合。
        ReachableInCluster               | 0x00800000
        ClusterRoot                      | 0x01000000
        Native                           | 0x02000000
        Async                            | 0x04000000
        AsyncLoading                     | 0x08000000
        Unreachable                      | 0x10000000
        PendingKill                      | 0x20000000
        RootSet                          | 0x40000000
        GarbageCollectionKeepFlags       | 0x0E000000
        AllFlags                         | 0x7F800000

全局函数

    print(any... Message)
        - 不支持格式化。需要格式化时使用 'string.format'。
    
    CreateInvalidObject() -> UObject
        - 创建一个对象,其 IsValid 函数始终返回 false。

    StaticFindObject(string ObjectName) -> { UObject | AActor | nil }
    StaticFindObject(UClass Class=nil, UObject InOuter=nil, string ObjectName, bool ExactClass=false)
        - 对应 https://docs.unrealengine.com/4.26/en-US/API/Runtime/CoreUObject/UObject/StaticFindObject/
    
    FindFirstOf(string ShortClassName) -> { UObject | AActor | nil }
        - 查找指定类名的第一个非默认实例。
        - 参数 'ShortClassName':只包含类名本身,不含路径信息。
    
    FindAllOf(string ShortClassName) -> table -> { UObject | AActor } | nil
        - 查找指定类名的所有非默认实例。
        - 参数 'ShortClassName':只包含类名本身,不含路径信息。
    
    RegisterKeyBind(integer Key, function Callback)
    RegisterKeyBind(integer Key, table ModifierKeys, function callback)
        - 为按键绑定注册回调。
        - 仅当游戏或调试控制台拥有焦点时才能触发回调。

    IsKeyBindRegistered(integer Key)
    IsKeyBindRegistered(integer Key, table ModifierKeys)
        - 检查调用时指定按键是否已经注册。
    
    RegisterHook(string UFunctionName, function Callback) -> integer, integer
        - 为 UFunction 注册回调。
        - UFunction 执行时触发回调。
        - 回调参数为:UObject self, UFunctionParams...
        - 返回两个 ID。注销钩子时,必须将两者都传给 'UnregisterHook'。

    UnregisterHook(string UFunctionName, integer PreId, integer PostId)
        - 注销钩子。
		
    ExecuteInGameThread(function Callback)
        - 通过 ProcessEvent 在游戏线程中执行代码。
        - 游戏有时间执行时就会尽快执行。

    FName(string Name) -> FName
    FName(integer ComparisonIndex) -> FName
        - 返回字符串/ComparisonIndex 对应的 FName;名称不存在时返回 "None" 的 FName。

    FText(string Text) -> FText
        - 返回字符串的 FText 表示。

    StaticConstructObject(UClass Class,
                          UObject Outer,
                          FName Name, #可选
                          EObjectFlags Flags, #可选
                          EInternalObjectFlags InternalSetFlags, #可选
                          bool CopyTransientsFromClassDefaults, #可选
                          bool AssumeTemplateIsArchetype, #可选
                          UObject Template, #可选
                          FObjectInstancingGraph InstanceGraph, #可选
                          UPackage ExternalPackage, #可选
                          void SubobjectOverrides #可选) -> UObject
        - 尝试构造传入 UClass 类型的 UObject。
        - (>=4.26) 对应 https://docs.unrealengine.com/4.27/en-US/API/Runtime/CoreUObject/UObject/StaticConstructObject_Internal/1/
        - (<4.25) 对应 https://docs.unrealengine.com/4.27/en-US/API/Runtime/CoreUObject/UObject/StaticConstructObject_Internal/2/

    RegisterCustomProperty(table CustomPropertyInfo)
        - 注册自定义属性,供 'UObject.__index' 自动使用。

    ForEachUObject(function Callback)
        - 对 GUObjectArray 中的每个 UObject 执行回调。
        - 回调参数为:UObject object, integer ChunkIndex, integer ObjectIndex。

    NotifyOnNewObject(string UClassName, function Callback)
        - 每次构造指定类的实例时,执行所提供的 Lua 函数。
        - 会考虑继承关系;例如将类设为 "/Script/Engine.Actor" 时,
        - 构造 AActor 或任何派生自 AActor 的对象,都会执行该 Lua 函数。

    RegisterCustomEvent(string EventName, function Callback)
        - 注册回调,在名为 'EventName' 的蓝图函数/事件被调用时执行。
    
    RegisterLoadMapPreHook(function Callback)
        - 注册在 UEngine::LoadMap 调用前执行的回调。
        - 回调参数为:UEngine Engine, struct FWorldContext& WorldContext, FURL URL, class UPendingNetGame* PendingGame, FString& Error。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。
        
    RegisterLoadMapPostHook(function Callback)
        - 注册在 UEngine::LoadMap 调用后执行的回调。
        - 回调参数为:UEngine Enigne, struct FWorldContext& WorldContext, FURL URL, class UPendingNetGame* PendingGame, FString& Error。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。

    RegisterInitGameStatePreHook(function Callback)
        - 注册在 AGameModeBase::InitGameState 调用前执行的回调。
        - 回调参数为:AGameModeBase Context。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。

    RegisterInitGameStatePostHook(function Callback)
        - 注册在 AGameModeBase::InitGameState 调用后执行的回调。
        - 回调参数为:AGameModeBase Context。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。

    RegisterBeginPlayPreHook(function Callback)
        - 注册在 AActor::BeginPlay 调用前执行的回调。
        - 回调参数为:AActor Context。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。

    RegisterBeginPlayPostHook(function Callback)
        - 注册在 AActor::BeginPlay 调用后执行的回调。
        - 回调参数为:AActor Context。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。

    RegisterProcessConsoleExecPreHook(function Callback)
        - 注册在 UObject::ProcessConsoleExec 调用前执行的回调。
        - 回调参数为:UObject Context, string Cmd, table CommandParts, FOutputDevice Ar, UObject Executor。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。
        - 回调无返回值或返回 nil 时,使用 ProcessConsoleExec 的原始返回值。
        - 回调返回 true 或 false 时,以该值覆盖 ProcessConsoleExec 的原始返回值。

    RegisterProcessConsoleExecPostHook(function Callback)
        - 注册在 UObject::ProcessConsoleExec 调用后执行的回调。
        - 回调参数为:UObject Context, string Cmd, table CommandParts, FOutputDevice Ar, UObject Executor。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。
        - 回调无返回值或返回 nil 时,使用 ProcessConsoleExec 的原始返回值。
        - 回调返回 true 或 false 时,以该值覆盖 ProcessConsoleExec 的原始返回值。

    RegisterCallFunctionByNameWithArgumentsPreHook(function Callback)
        - 注册在 UObject::CallFunctionByNameWithArguments 调用前执行的回调。
        - 回调参数为:UObject Context, string Str, FOutputDevice Ar, UObject Executor, bool bForceCallWithNonExec。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。
        - 回调无返回值或返回 nil 时,使用 CallFunctionByNameWithArguments 的原始返回值。
        - 回调返回 true 或 false 时,以该值覆盖 CallFunctionByNameWithArguments 的原始返回值。

    RegisterCallFunctionByNameWithArgumentsPostHook(function Callback)
        - 注册在 UObject::CallFunctionByNameWithArguments 调用后执行的回调。
        - 回调参数为:UObject Context, string Str, FOutputDevice Ar, UObject Executor, bool bForceCallWithNonExec。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。
        - 回调无返回值或返回 nil 时,使用 CallFunctionByNameWithArguments 的原始返回值。
        - 回调返回 true 或 false 时,以该值覆盖 CallFunctionByNameWithArguments 的原始返回值。

    RegisterULocalPlayerExecPreHook(function Callback)
        - 注册在 ULocalPlayer::Exec 调用前执行的回调。
        - 回调参数为:ULocalPlayer Context, UWorld InWorld, string Cmd, FOutputDevice Ar。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。
        - 回调可以有两个返回值。
        - 第一个返回值为空或 nil 时,使用 Exec 的原始返回值。
        - 第一个返回值为 true 或 false 时,以该值覆盖 Exec 的原始返回值。
        - 第二个返回值控制是否执行原始 Exec。
        - 第二个返回值为 nil 或 true 时,执行原始 Exec。
        - 第二个返回值为 false 时,不执行原始 Exec。

    RegisterULocalPlayerExecPostHook(function Callback)
        - 注册在 ULocalPlayer::Exec 调用后执行的回调。
        - 回调参数为:ULocalPlayer Context, UWorld InWorld, string Cmd, FOutputDevice Ar。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。
        - 回调可以有两个返回值。
        - 第一个返回值为空或 nil 时,使用 Exec 的原始返回值。
        - 第一个返回值为 true 或 false 时,以该值覆盖 Exec 的原始返回值。
        - 第二个返回值控制是否执行原始 Exec。
        - 第二个返回值为 nil 或 true 时,执行原始 Exec。
        - 第二个返回值为 false 时,不执行原始 Exec。

    RegisterConsoleCommandHandler(string CommandName, function Callback)
        - 为自定义控制台命令注册回调。
        - 此回调仅在 UGameViewportClient 上下文中运行。
        - 回调参数为:string Cmd, table CommandParts, FOutputDevice Ar。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。
        - 回调必须返回 true 或 false。
        - 回调返回 true 后,不会再为此命令调用其他处理器。

    RegisterConsoleCommandGlobalHandler(string CommandName, function Callback)
        - 为自定义控制台命令注册回调。
        - 与 'RegisterConsoleCommandHandler' 不同,此全局版本会在所有上下文中运行回调。
        - 回调参数为:string Cmd, table CommandParts, FOutputDevice Ar。
        - 除 string、bool 和 FOutputDevice 外,参数必须通过 'Param:Get()' 读取、通过 'Param:Set()' 设置。
        - 回调必须返回 true 或 false。
        - 回调返回 true 后,不会再为此命令调用其他处理器。

    ExecuteAsync(function Callback)
        - 异步执行指定函数。

    ExecuteWithDelay(integer DelayInMilliseconds, function Callback)
        - 经过指定延迟后异步执行指定函数。

    RegisterConsoleCommandHandler(string CommandName, function Callback)
        - 每次在 UE 控制台输入 CommandName 时,执行所提供的 Lua 函数。
        - 回调参数包括完整命令(string)、
        - 参数(table,由完整命令按空格拆分而成),以及 FOutputDevice。
        - 回调返回 true 可阻止其他处理器处理该命令,返回 false 则允许其他处理器继续处理。

    LoadAsset(string AssetPathAndName)
        - 按名称加载资产。
        - 只能从游戏线程中调用。
        - 例如在 UFunction 钩子或 RegisterConsoleCommandHandler 回调内调用。

    FindObject(string|FName|nil ClassName, string|FName|nil ObjectShortName, EObjectFlags RequiredFlags, EObjectFlags BannedFlags) -> UObject derivative
        - 按类名或对象短名称查找对象。
        - ClassName 或 ObjectShortName 可以为 nil,但不能同时为 nil。
        - 返回 UObject 或其派生类型的对象。

    FindObject(UClass InClass, UObject InOuter, string Name, bool ExactClass)
        - 查找对象,行为与 UE 源码中的同名函数相同。

    FindObjects(integer NumObjectsToFind, string|FName|nil ClassName, string|FName|nil ObjectShortName, EObjectFlags RequiredFlags, EObjectFlags BannedFlags, bool bExactClass) -> table -> { UObject derivative }
        - 按类名或对象短名称查找最先匹配的指定数量对象。
        - 若要查找全部匹配对象,将 NumObjectsToFind 设为 0 或 nil。
        - 返回由 UObject 派生对象组成的 table。

    LoopAsync(integer DelayInMilliseconds, function Callback)
        - 启动循环,每次休眠指定毫秒数,回调返回 true 时停止。
    
    IterateGameDirectories() -> table
        - 返回包含所有游戏目录的 table。
        - Win64 绝对路径示例:Q:\SteamLibrary\steamapps\common\Deep Rock Galactic\FSD\Binaries\Win64
        - 访问同一目录可使用:IterateGameDirectories().Game.Binaries.Win64
        - 为保持通用性,游戏名称会替换为 'Game'。
        - 使用 '.__name' 和 '.__absolute_path' 取得名称和绝对路径。
        - 使用 '.__files' 取得包含此目录全部文件的 table。
        - 对文件也可以使用 '.__name' 和 '.__absolute_path'。

    DumpAllObjects()
    GenerateSDK()
    GenerateLuaTypes()
    GenerateUHTCompatibleHeaders()
    DumpStaticMeshes()
    DumpAllActors()
    DumpUSMAP()
    DumpJMAP()

    RestartCurrentMod()
        - 重启当前运行的 Mod。
        - 将该 Mod 排入队列,在下一次更新周期重启。

    UninstallCurrentMod()
        - 卸载当前运行的 Mod。
        - 将该 Mod 排入队列,在下一次更新周期卸载。

    RestartMod(string ModName)
        - 按名称重启另一个 Mod。
        - 将指定 Mod 排入队列,在下一次更新周期重启。

    UninstallMod(string ModName)
        - 按名称卸载另一个 Mod。
        - 将指定 Mod 排入队列,在下一次更新周期卸载。

类

    RemoteObject
        继承:
        - 所有其他对象继承的两个基础对象之一。
        - 包含指向 C/C++ 对象的指针,该对象通常由游戏拥有。
        方法
            IsValid() -> bool
                - 返回该对象是否有效。

    LocalObject
        继承:
        - 所有其他对象继承的两个基础对象之二。
        - 包含完全由 Lua 拥有的内联对象。
        方法

    UnrealVersion
        继承:
        方法
            GetMajor() -> integer
            GetMinor() -> integer
            IsEqual(number MajorVersion, number MinorVersion) -> bool
            IsAtLeast(number MajorVersion, number MinorVersion) -> bool
            IsAtMost(number MajorVersion, number MinorVersion) -> bool
            IsBelow(number MajorVersion, number MinorVersion) -> bool
            IsAbove(number MajorVersion, number MinorVersion) -> bool

    UE4SS
        继承:
        - 用于与 UE4SS 元数据交互的类。
        方法
            GetVersion() -> 3x integer
                - 返回主版本号、次版本号和热修复版本号。
                - 若要检测 1.0 或更早版本,检查 "UE4SS" 或 "UE4SS.GetVersion" 是否为 nil。

    Mod
        继承:RemoteObject
        - 用于与本地 Mod 对象交互的类。
        方法
            SetSharedVariable(string VariableName, any Value)
                - 设置任何 Mod 都能访问的变量。
                - 第二个参数 Value 只能是以下类型之一:nil、string、number、bool、UObject(及其派生类型)、lightuserdata。
                - 热重载不会重置这些变量。

            GetSharedVariable(string VariableName) -> any
                - 获取可能由其他 Mod 设置的变量。
                - 返回值只能是以下类型之一:nil、string、number、bool、UObject(及其派生类型)、lightuserdata。
        
            type() -> string
                - 返回 "ModRef"。

    UObject
        继承:RemoteObject
        - 大多数其他 Unreal Engine 游戏对象都继承自此基类。
        方法
            __index(string MemberVariableName) -> auto
                - 尝试返回成员变量或可调用的 UFunction。
                - 可能返回任意类型;对于非简单类型,可对返回值调用 'type()' 来确定使用的 Lua 类。
            
            __newindex(string MemberVariableName, auto NewValue)
                - 尝试设置成员变量的值。
            
            GetFullName() -> string
                - 返回 UObject 及其派生对象的完整名称和路径信息。
            
            GetFName() -> FName
                - 按副本返回此对象的 FName。
                - 通过 '__index' 返回的所有 FName 均为引用。
            
            GetAddress() -> integer
                - 返回此对象的内存地址。
            
            GetClass() -> UClass
                - 返回此对象的类,等价于 Unreal 中的 'UObject->ClassPrivate'。

            GetOuter() -> UObject
                - 返回此对象的 Outer。

            IsAnyClass() -> bool
                - 此 UObject 是 UClass 或其派生类型时返回 true。

            Reflection() -> UObjectReflection
                - 返回反射对象。

            GetPropertyValue(string MemberVariableName) -> auto
                - 与 __index 相同。

            SetPropertyValue(string MemberVariableName auto NewValue)
                - 与 __newindex 相同。

            IsClass() -> bool
                - 返回此对象是否为 UClass 或其派生类型。

            GetWorld() -> UWorld
                - 返回包含此 UObject 的 UWorld。

            CallFunction(UFunction function, auto Params...)
                - 在此 UObject 上调用指定 UFunction。

            IsA(UClass Class) -> bool
            IsA(string FullClassName) -> bool
                - 返回此对象是否属于指定类。

            HasAllFlags(EObjectFlags FlagsToCheck)
                - 返回此对象是否具有全部指定标记。

            HasAnyFlags(EObjectFlags FlagsToCheck)
                - 返回此对象是否具有任意指定标记。
            
            HasAnyInternalFlags(EInternalObjectFlags InternalFlagsToCheck)
                - 返回此对象是否具有任意指定内部标记。

            ProcessConsoleExec(string Cmd, nil Reserved, UObject Executor)
                - 使用给定参数调用 UObject::ProcessConsoleExec。

            type() -> string
                - 返回 UE4SS 识别的此对象类型。
                - 这不是 Unreal 识别的类型。

    UStruct
        继承:UObject
        方法
            GetSuperStruct() -> UClass
                - 返回此结构体的 SuperStruct(可能无效)。

            ForEachFunction(function Callback)
                - 遍历属于此结构体的每个 UFunction。
                - 回调有一个参数:UFunction Function。
                - 在回调中返回 true 可停止遍历。

            ForEachProperty(function Callback)
                - 遍历属于此结构体的每个 Property。
                - 回调有一个参数:Property Property。
                - 在回调中返回 true 可停止遍历。

    UClass
        继承:UClass
        方法
            GetCDO() -> UClass
                - 返回 UClass 的 ClassDefaultObject。

            IsChildOf(UClass Class) -> bool
                - 返回此类是否为另一个类的子类。

    AActor
        继承:UObject
        方法
            GetWorld() -> UObject | nil
                - 返回此 Actor 所属的 UWorld。
            
            GetLevel() -> UObject | nil
                - 返回此 Actor 所属的 ULevel。
    
    FName
        继承:LocalObject
        方法
            ToString() -> string
                - 返回此 FName 对应的字符串。
            
            GetComparisonIndex() -> integer
                - 返回此 FName 的 ComparisonIndex(全局名称数组中的索引)。
    
    TArray
        继承:RemoteObject
        方法
            __index(integer ArrayIndex)
                - 尝试取得数组中指定偏移位置的值。
                - 可能返回任意类型;对于非简单类型,可对返回值调用 'type()' 来确定使用的 Lua 类。
            
            __newindex(integer ArrayIndex, auto NewValue)
                - 尝试设置数组中指定偏移位置的值。
            
            GetArrayAddress() -> integer
                - 返回 TArray 结构体所在的内存地址。
            
            GetArrayNum() -> integer
                - 返回数组当前的元素数量。
            
            GetArrayMax() -> integer
                - 返回数组允许的最大元素数量,即容量。
            
            GetArrayDataAddress -> integer
                - 返回数组数据所在的内存地址。
            
            ForEach(function Callback)
                - 遍历整个 TArray,对每个元素调用回调。
                - 回调参数为:integer index, RemoteUnrealParam | LocalUnrealParam elem。
                - 使用 'elem:get()' 和 'elem:set()' 访问或修改数组元素。

    UEnum
        继承:RemoteObject
        方法
            GetNameByValue(integer Value) -> FName
                - 返回指定值对应的 FName。
            ForEachName(LuaFunction Callback) -> FName
                - 遍历属于此枚举的每个 FName/Value 组合。
                - 回调有两个参数:FName Name, integer Value。
                - 在回调中返回 true 可停止遍历。

    RemoteUnrealParam | LocalUnrealParam
        继承:RemoteObject | LocalObject
            - 这是任意类型和类的动态包装器。
            - 使用 Remote 还是 Local 版本取决于数据要求,但两种参数类型的用法相同。
        方法
            get() -> auto
                - 返回此参数的底层值。
            
            set(auto NewValue)
                - 设置此参数的底层值。
            
            type() -> string
                - 返回 "RemoteUnrealParam" 或 "LocalUnrealParam"。
    
    UScriptStruct
        继承:LocalObject
        方法
            __index(string StructMemberVarName) -> auto
                - 尝试返回指定变量的值。
                - 可能返回任意类型;对于非简单类型,可对返回值调用 'type()' 来确定使用的 Lua 类。
            
            __newindex(string StructMemberVarName, auto NewValue)
                - 尝试设置指定变量的值。
            
            GetBaseAddress() -> integer
                - 返回此 UScriptStruct 所属 UObject 的内存地址。
            
            GetStructAddress() -> integer
                - 返回此 UScriptStruct 的内存地址。
            
            GetPropertyAddress() -> integer
                - 返回对应 U/FProperty 的内存地址。

            IsValid() -> bool
                - 返回结构体是否有效。

            IsMappedToObject() -> bool
                - 返回基础对象是否有效。

            IsMappedToProperty() -> bool
                - 返回属性是否有效。
            
            type() -> string
                - 返回 "UScriptStruct"。
    
    UFunction
        继承:UObject
        方法
            __call(UFunctionParams...)
                - 尝试调用此 UFunction。

            GetFunctionFlags() -> integer
                - 返回 UFunction 的标记。

            SetFunctionFlags(integer Flags)
                设置 UFunction 的标记。

    FString
        继承:RemoteObject
            - 字符组成的 TArray。
        方法
            ToString()
                - 返回 Lua 能理解的字符串。

            Clear()
                - 将 TArray 的元素数量设为 0,以清空字符串。

    FieldClass
        继承:LocalObject
        方法
            GetFName()
                - 按副本返回此类的 FName。

    Property
        继承:RemoteObject
        方法
            GetFullName() -> string
                - 返回此属性的完整名称和路径。

            GetFName() -> FName
                - 按副本返回此属性的 FName。
                - 通过 '__index' 返回的所有 FName 均为引用。

            IsA(PropertyTypes PropertyType) -> bool
                - 属性类型为 PropertyType 时返回 true。

            GetClass() -> PropertyClass

            ContainerPtrToValuePtr(UObjectDerivative Container, integer ArrayIndex) -> LightUserdata
                - 等价于 UE 中的 FProperty::ContainerPtrToValuePtr<uint8>。

            ImportText(string Buffer, LightUserdata Data, integer PortFlags, UObject OwnerObject)
                - 等价于 UE 中的 FProperty::ImportText,但没有 'ErrorText' 参数。

    ObjectProperty
        继承:Property
        方法
            GetPropertyClass() -> UClass
                - 返回此属性持有的类。

    BoolProperty
        继承:Property
        方法
            GetByteMask() -> integer
            GetByteOffset() -> integer
            GetFieldMask() -> integer
            GetFieldSize() -> integer

    StructProperty
        继承:Property
        方法
            GetStruct() -> UScriptStruct
                - 返回映射到此属性的 UScriptStruct。

    ArrayProperty
        继承:Property
        方法
            GetInner() -> Property
                - 返回数组内部的元素属性。

    UObjectReflection
        继承:
        方法
            GetProperty(string PropertyName) -> Property
                - 返回属性元数据对象。

    FOutputDevice
        继承:RemoteObject
        方法
            Log(string Message)
                - 向输出设备(例如游戏内控制台)记录消息。

    FWeakObjectPtr
        继承:LocalObject
        方法
            Get() -> UObjectDerivative
                - 返回指向的 UObject 或其派生对象(可能无效,因此调用 Get 后应调用 UObject:IsValid)。

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