UnLuaNova API¶
C++ API¶
全局变量¶
-
UnLuaNova::GLuaSrcRelativePathLua源码文件相对于Content目录的相对路径 -
UnLuaNova::GLuaSrcFullPathLua源码文件所在的绝对路径 -
FLuaContext::GLuaCxt全局Lua上下文
全局函数¶
命名空间:UnLuaNova
* Call 调用某个全局 function
-
CallTableFunc调用全局table里的某个function -
Get从Lua堆栈的某个索引位置上获取指定类型的数据 -
Push/ PushXXX 向Lua堆栈中压入一个指定类型的数据 -
IsType判断Lua堆栈上指定索引位置上的对象类型 -
CreateState从GLuaCxt创建一个lua_State -
GetState获取GLuaCxt中的lua_State -
Startup启动UnLuaNova环境 -
Shutdown停止UnLuaNova环境 -
LoadFile从指定相对路径加载一个Lua文件,但不运行 -
RunFile从指定相对路径运行一个Lua文件 -
LoadChunk加载一个Lua Chunk,但不运行 -
RunChunk运行指定的Lua Chunk -
ReportLuaCallError报告Lua错误,如果注册了自定义错误处理委托则会仅执行委托,否则使用UnLuaNova默认的UE_LOG输出 -
GetStackVariables获取当前堆栈上所有相关的变量、upvalue信息 -
GetLuaCallStack获取当前Lua调用栈的字符串
全局委托¶
FUnLuaNovaDelegates
* OnLuaStateCreated 当一个Lua虚拟机被创建出来时候触发,可以拿到其对应的 lua_State
-
OnLuaContextInitialized当FLuaContext初始化完成后触发 -
OnPreLuaContextCleanup当FLuaContext开始回收清理前触发 -
OnPostLuaContextCleanup当FLuaContext完成回收清理后触发 -
OnPreStaticallyExport当FLuaContext开始向lua_State注册静态导出的类型之前触发 -
OnObjectBinded当某个UObject和Lua绑定时触发 -
OnObjectUnbinded当某个UObject的Lua绑定被解绑时触发 -
ReportLuaCallError支持注册自定义Lua报错处理委托到UnLuaNova,当Lua报错时会调用这个委托 -
ConfigureLuaGC支持注册自定义LuaGC配置委托到UnLuaNova,覆盖UnLuaNova默认传递给lua_gc的参数 -
LoadLuaFile支持注册自定义的Lua文件加载器委托到UnLuaNova,实现自定义Lua文件加载机制
接口¶
UUnLuaNovaInterfaceUnLuaNova的核心接口,用来标记和识别需要绑定到Lua的对象
类¶
-
FLuaContext封装了整个UnLuaNova运行环境上下文 -
FLuaIndex对Lua堆栈索引的简单封装 -
FLuaTable对Lua侧table数据类型的封装,提供类似Lua中"[]"的访问机制,也支持调用指定function -
FLuaValue对Lua各种值类型的封装 -
FLuaFunction对Lua侧function类型的封装,提供获取全局或指定table内的function并调用的能力 -
FLuaRetValues对从Lua侧的返回值的封装 -
FCheckStack用于辅助检测Lua堆栈平衡 -
FAutoStack用于自动恢复Lua堆栈索引 -
FExportedEnum提供向Lua侧注册导出枚举的接口
Lua API¶
全局表¶
UE仅当WITH_UE4_NAMESPACE开关启用时存在,作为访问C++侧类的根对象。当开关禁用时,访问C++可以直接通过_G作为根对象来访问。类型是用到了才会注册到Lua,因此不必担心一次性加载过多导致的性能问题
全局函数¶
-
RegisterEnum手动注册一个枚举到Lua -
RegisterClass手动注册一个类到Lua -
GetUProperty获取某个UObject上的UProperty -
SetUProperty设置某个UObject的UProperty为指定值 -
LoadObject加载一个UObject, 相当于:UObject.Load("/Game/Core/Blueprints/AI/BehaviorTree_Enemy.BehaviorTree_Enemy") -
LoadClass加载一个UClass, 相当于:UClass.Load("/Game/Core/Blueprints/AICharacter.AICharacter_C") -
NewObject根据指定的Class、Outer(可选)、Name(可选), 创建一个UObject -
UEPrint是UE_LOG的包装,也会使用UKismetSystemLibrary::PrintString输出
实例函数¶
Initialize当任意对象被绑定到Lua时,都会调用这个初始化函数
委托¶
-
Bind绑定一个回调到当前FScriptDelegate实例上。 -
Unbind从当前FScriptDelegate实例上解绑回调。 -
Execute手动执行FScriptDelegate所有回调。
UnLuaNova.lua¶
一旦 require "UnLuaNova" 后,会产生如下全局函数:
* Class 创建一个"类"的table,模仿OOP的概念提供封装、继承的机制
print使用UEPrint覆盖Lua原生print
宏定义¶
以下宏定义可通过 UnLuaNova.Build.cs 修改:
* AUTO_UnLuaNova_STARTUP 是否自动启动UnLuaNova环境,默认启用。
-
WITH_UE4_NAMESPACE是否提供一个统一的UE命名空间table作为对引擎侧类型的访问入口,默认启用。 -
SUPPORTS_RPC_CALL是否提供对_RPC远程方法支持,默认启用。 -
SUPPORTS_COMMANDLET是否提供在commandlet环境下的UnLuaNova支持,默认启用。 -
ENABLE_TYPE_CHECK是否启用类型检测,帮助在UFunction调用时进行参数类型合法性检测,默认启用。 -
UnLuaNova_ENABLE_DEBUG是否输出UnLuaNova详细的调试日志,默认禁用。