Releases: Tencent/UnLua
Releases · Tencent/UnLua
2.3.6
Added
- 对UE5.3的支持 #642
Fixed
- lua在GC时偶现崩溃的问题 #626
- 覆写的函数的Out参数是C++结构体时,Lua不返回会导致崩溃 #634
- 日志参数不匹配的问题 #642
- 访问来自非native父类的property时检查有效性 #661
- 同一个Lua函数绑定多个不同签名的代理导致崩溃 #660
- 应该支持从L构造FLuaValue类型 #666
- 特定情况下在Lua中调用TArray的Add接口时内存对齐引起的问题 #668
- 兼容蓝图Recompile导致FuncMap被清空的情况 #669
- 清理一些UE5下的编译警告
Changed
- FObjectRegistry::Push增加Valid检查 规避一些容器内野指针的情况 #663
- 每个FLuaEnv持有独立的ClassRegistry和EnumRegistry
2.3.5
Added
- 对UE5.2的支持
- 增加配置选项自定义Lua版本
- 增加配置选项启用FText支持
- 适配UE5.1的UHT #600 #607
- 禁止在Lua的
Initialize
函数中访问当前UObject
上的UFunction
- 在Lua中
loadstring
失败时的全路径错误信息输出
Fixed
- ENABLE_PERSISTENT_PARAM_BUFFER模式下 Buffer被递归调用的覆盖 #563
- 在启用
AsyncLoadingThread
时,异步加载后触发绑定对象到Lua可能引起崩溃
Changed
- 调整配置文件名称为
UnLuaSettings.ini
#596 - 在Lua中
NewObject
时,Outer传nil时使用TransientPackage
#604 - 当不启用类型检查时,若函数要求有返回值但Lua里不返回,则用默认值作为返回值
Removed
- 移除
SUPPORTS_RPC_CALL
宏
2.3.3
Added
- 增加对
EnhancedInput
输入绑定的支持 - 增加 启用Insights分析支持 和 传参方式 配置选项
- 热重载失败时输出错误日志 #581
- 自动将启用的
UnLuaExtensions
的脚本加入打包设置 - 支持按需重新加载蓝图枚举,也支持用UnLua.Ref来保持引用 #585
Fixed
- 编辑器使用
Development
环境启动后,加载Lua脚本报错时代码优化导致longjmp崩溃的问题 - 在Lua中遍历TMap字段的Values接口返回值时引起的崩溃 #583
- 协程里require脚本加载异常 #551
- 加载
socket.http
模块时报错
Changed
- 在启用类型检查时,非法参数不写入实际参数内存块,避免报错后又在使用时崩溃
- 将
UnLuaExtensions
的启动时间提前,避免在入口脚本里直接访问的时候这些模块还没启动
2.4.0
2.3.2
Added
- 增加配置选项崩溃时输出Lua堆栈到日志
- 针对自
2.2.0
版本以来调整的垃圾回收机制的说明文档
Fixed
- UObject绑定后的元表和其他表相等判断时结果错误 #281 #567
- 访问UStruct内部的委托会check #561
- 多次传递委托类型的参数到同一函数时,可能因为Owner失效而无法回调 #566
- UE5.1之后构造
FProperty
报deprecated #569 - pairs在参数异常时返回空迭代器,避免lua调试时访问报错
- 热重载upvalue没有生效
UObject.Load
传入中文路径时乱码
Changed
- 在热重载模式为禁用时,不再加载
HotReload.lua
,不会替换全局的require
- 在使用
LoadObject
加载不到对象时不再输出加载失败的日志,而是直接返回nil
2.3.1
Added
- 支持UE5.1
- 支持PS5
- 增加
UnLua::PrintCallStack(L)
的接口来方便在IDE里断点直接执行输出lua堆栈 - 更多容器和结构体相关的访问保护,增加悬垂指针检查选项
UnLuaExtensions
新增可选集成 lua-protobuf 和 lua-rapidjson- 增加
FLuaEnv
的OnDestroyed
事件
Fixed
- Lua报错输出脚本路径如果太长会被截断
- xxx:IsA(UE.UClass) 会报错
- Lua覆写Out返回值时无法返回nil #539
- 安装
Apple ProRes Media
插件后会导致UnLua启动崩溃 #534 - Actor的Struct成员变量在Lua里引用,释放后仍旧可以访问 #517
- 在
print
时参数过多可能会导致Lua栈溢出的问题 #543 - LuaGC使用了未初始化的参数 #548
- NullPointer error in function 'CheckPropertyType' #549
- 找不到
UnLua.Input
模块时不会再check了 - 访问非TArray的结构体数组报错 #554
- 服务端
Possess
后,新角色上的InputComponent
输入绑定无效 #553 - mac打包找不到libLua.dylib问题 #557
Changed
- 在启用类型检查时,需要依次返回返回值和Out参数,而不能像旧版本一样忽略不返回
2.3.0
Added
- 支持使用
UnLua.PackagePath
的方式来搜索Lua文件,也支持从插件Content目录加载 - 支持Android下的x86_64
- 支持自定义预绑定类型,参考预绑定类型列表配置选项
- 支持UE5下的蓝图UMG输入绑定,使用新增的
UnLua.Input
模块,可以做到更细节的输入绑定 UnLua.Ref
和UnLua.Unref
接口,提供将UObject
生命周期和Lua侧同步的管理机制- 提升Lua访问UE函数和属性的性能
- 自定义生成Lua模版
Fixed
- Mac下编辑器的dylib无法加载
- PushMetatable时会使用旧的metatable #515
- Delegate的闭包函数的upvalue无法被gc #516
- 在Lua中访问TArray不存在的字段会报stackoverflow
- 自动保存的打包设置没有生效
- UE5下打包后UnLua配置没有正确加载
Changed
- 默认关闭运行时对
UTF-8 BOM
文件头的加载支持,需要兼容请开启兼容UTF-8 BOM文件头选项
Removed
- 移除
AddPackagePath
接口
2.2.4
Added
- 增加最佳实践工程示例 Lyra with UnLua
- 支持配置按C/C++编译Lua环境
- 支持Lua启动入口脚本配置
- 支持Lua环境手动启动参数
- 默认自动将
Content/Script
目录加入打包设置 - 增加一些指针对象的合法性检查
UnLua.HotReload
支持手动指定热重载模块列表- 支持Commandlet导出蓝图智能提示信息 #507
Fixed
- UE5下的Script编译警告
- 智能提示文件重复生成 #498
- 智能提示蓝图类型使用
_C
后缀 #493 - PIE运行状态下保存对象,可能引起编辑器崩溃 #489
bAutoStartup
配置选项没有生效- 当
UnLuaHotReload.lua
不存在时会报错 - 通过C++类绑定的时候使用自动创建脚本功能会崩溃 #490
- 修复一些智能提示被过滤了的情况
- 监听嵌套界面里的组件的事件会导致组件无法被回收
- 覆写C++类型的函数后在蓝图编辑器里调用需要刷新节点才能编译过 #500
- Lua持有结构体下的TArray字段,在结构体本身被GC后访问该数组会导致崩溃 #505
TCHAR_TO_XXX
等宏应该只在行内传参使用 #508- 退出游戏时候可能访问已经被释放的
UUnLuaManager
引起的崩溃 #504 - UE5下在编辑器运行游戏的同时编译并保存动画蓝图会Crash #510
Changed
2.2.3
Added
- 支持蓝图的
BlueprintFunctionLibrary
绑定到Lua与覆写 - 支持CDO绑定
- 支持自定义Lua模块定位设置
- 生成Lua模版文件时增加
@class
注解 - UnLua内置API的智能提示
- 生成智能提示时显示更详细的进度条
Fixed
- 打包DS服务端后,预先放在地图里的绑定过Lua的Actor会导致崩溃 #479
- 退出PIE时一些被覆写的Lua函数不会被执行 #472
- 切换场景时访问已释放对象上的属性时会引起崩溃 #482
- 同一个委托对象传递给不同函数来绑定和解绑,会出现无法解绑的问题 #471
- Lua传递给蓝图的FName属性中文会乱码 #474
- 传递给Lua模块的
...
参数没有生效 - 退出PIE时父类被覆写的UFunction没有还原
- UE4命名空间的兼容开关没生效
- Editor下PIE判断不准确 #468
- 真机上UnLuaExtensions模块启动比UnLuaModule晚,导致luasocket没有加载 #484
- 调用静态导出函数的
TCHAR*
类型参数传递为空 #486
Changed
- 移除
UnLua.lua
,UnLua
可作为全局对象访问,不需要require "UnLua"
了
2.2.2
Added
- 优化绑定检测流程,避免在大量对象创建时导致性能降低 #457
- 通过菜单快速在文件管理器中打开绑定的Lua文件 #437
- 防止Lua代码无限循环超时设置 #428
- 支持添加多播代理绑定相同脚本不同对象实例函数 #439
- 更准确的内存分配统计
lua.gc
控制台命令- UnLua 运行时/编辑器设置的子菜单
- 编辑器设置支持中文显示
Fixed
- 命令行
-server
启动时UnLuaModule
没有启动 #440 TArray
和TMap
进行pairs
遍历时使用引用而不是复制 #442- 实现了FTickableGameObject的对象在Tick里调用自身被Lua覆写的方法会崩溃 #446
- 返回
TSubclassOf<>
到C++为空 #445 - UE4.27下无法通过UE.XXX访问游戏项目模块中导出的原生类型 #448
- 从Lua按传递引用到蓝图的TArray引用变成了空Array #453
- PIE过程中如果保存了覆写的蓝图,会导致蓝图资源损坏 #465
- CDO绑定时需要过滤掉
SKEL
类型的对象 #460 - 分配在栈上的本地变量会引起
CacheScriptContainer
缓存错误导致崩溃 #455 - 热重载时报
invalid TArray/TMap
的错误 - PIE过程中如果保存了覆写的蓝图,会导致蓝图资源损坏 #465
- Linux下带Editor编译报错 #467