All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- 官方交流QQ群:936285107
- 编辑器主界面工具栏的菜单项入口
- 内置一些基础的控制台命令
- 配置支持,通过引擎菜单
项目设置 -> 插件 -> UnLua
修改运行时和编辑器环境的配置 - 编辑器界面多语言支持,现在可以看到中文菜单了
- 多虚拟机环境支持
- 同名蓝图加载
FSoftObjectPtr
的静态导出缺少的接口 #392 #397- Standalone模式支持 #396
GetModuleName
的路径为空时无法生成模版文件的提示 #341- 增加Enum的
GetDisplayNameTextByValue
/GetNameStringByValue
接口,以支持多语言环境 - 关于窗口和新版本检测
- 演示工程调整为可以以
Server
/Client
方式启动 - 演示工程增加
TPSGameInstance
以演示GameInstance的Lua绑定
- 原来需要在
UnLua.Build.cs
里手动修改的宏定义都可以通过项目设置来配置了 - 默认启用热重载
UnLuaEditor
模块负责生成智能提示信息导出UnLuaTestSuite
模块提取为独立的插件,省去拷贝插件到自己的工程时还需要手动删除- 调整Lua源码为
.cpp
,以使用C++环境来编译Lua模块 - 调整
UFunction
的覆写机制,不再使用EX_CallLua
字节码 - 禁止从
UE
命名空间直接访问蓝图类型,需要使用UE.UClass.Load
来加载 UnLua::CreateState
已经不符合语义,标记为DEPRECATED
- 绑定状态图标没有刷新的问题
- C++的类析构会在luaL_error后被跳过 #386
- 开启多窗口,一个有UI展示,一个没有UI展示 #387
- 源码版引擎 Test 版本 UStruct::SerializeExpr Crash #374
- 某个UObject如果不再被Lua引用,它在Lua添加的委托函数就会失效#394
- 接口列表从lua传到c++/蓝图层会丢失一半信息#398
- 不同实例的多播委托绑定相同实例函数,清理时崩溃 #400
- LUA覆写导致数组传参错误 #401
- LUA以Out形式传参给蓝图数组始终为空 #404
- 移除诸如
GLuaCxt
/GReflectionRegistry
/GObjectReferencer
的全局变量 - 移除宏定义
SUPPORT_COMMANDLET
和ENABLE_AUTO_CLEAN_NNATCLASS
- 移除
UnLuaFrameWork
模块 - 移除
IntelliSenseBP
模块 - 移除
IntelliSense
模块
我们把内部使用的工具提取成了独立的组件,欢迎点击链接体验,也可以通过VSCode应用商店中直接搜索Lua Booster
安装。
- UMG中使用DynamicEntryBox,如果在生成的Entry中执行异步加载,会导致找不到绑定的Object #379
- Streaming Level 中的单位有时调用 Lua 实现时,self 是 userdata #380
- 开启多窗口,一个有UI展示,一个没有UI展示 #387
- 编辑器下PIE结束时可能Crash的问题 #388
- UE4.25之前的版本在cook时提示IntProperty initialized not properly
- 支持 UE5.0 Preview 1
- 支持 Blueprint Clustering #355
- 在通过UProperty赋值时对Owner的检测,避免写坏到错误的Owner #344
- UGameInstanceSubsystem绑定支持 #345
- 内置一些常见的导出
- ENABLE_TYPE_CHECK开启情况下,应该只做类型检查,类型兼容的话支持Value设置,跟之前的版本保持一致 #353
- UE5地图中放置绑定Lua覆写函数的Actor,在打包后客户端加载时会奔溃 #325
- LevelStreaming导致延迟绑定的Actor无法触发ReceiveBeginPlay #343
- 引用参数和函数返回值的返回顺序错误 #361
- 类型元表被LuaGC时,可能意外导致正在使用的FClassDesc被错误delete #367
- 关闭SUPPORTS_RPC_CALL后,参数需要拷贝到重用的Buffer中,避免无法进行引用传递 #364
- 委托参数是TArray&时,在lua中修改无效 #362
- Actor调用K2_DestroyActor销毁时,lua部分会在注册表残留 #372
- 子类被销毁时,可能会令父类的Lua绑定失效 #375
- 4.27在不启用Async Loading Thread Enabled的情况下打包后加载地图会导致Crash的问题 #365
- 更多的单元测试和回归测试
- 增加使用FActorSpawnParameters扩展参数的SpawnActorEx #333
- 一些默认参数的写法没有分析出来 #323
- 从Lua模板创建中文脚本时编码错误的问题 #322
- C++调用Lua覆写带返回值的函数会崩溃 #328
- PIE下GameInstance的Initialize会被调用两次 #326
- 支持UENUM带表达式的项的默认值 #331
- Hotfix模块失效的问题 #334
- 更多的单元测试和回归测试
- UDataTableFunctionLibrary.GetDataTableRowFromName
- 生成Lua模版文件时需要按
GetModuleName
指定的路径生成 #301 - 在蓝图中调用被Lua覆写的蓝图函数,无法拿到正确的返回值 #300
- 在
Monolithic
下Lua不应定义宏LUA_BUILD_AS_DLL
#308 - 真机环境下被覆写的UFunction被GC后,指针重用会导致传参错误或崩溃 #299
- 打开多个蓝图编辑窗口时,菜单栏操作对象混乱 #310
- 部分情况下为TArray创建拷贝至lua时会产生崩溃 #303
- 访问过父类不存在的字段,后续在子类中也只能取到nil #314
- 移除宏定义
SUPPORT_COMMANDLET
- 支持最新的UE5抢先体验版
- 基于UE的自动化测试系统的全API测试、回归测试覆盖
- 支持自定义加载器,允许用户自己扩展实现Lua文件的查找与加载逻辑
- 自定义加载器的示例教程
- 编辑器下增加了Toolbar用来进行快速绑定/解绑Lua,以及一些常用功能入口
- 增加
UUnLuaLatentAction
用于包装异步行为,支持SetTickableWhenPaused
- 支持使用
ADD_STATIC_PROPERTY
宏来导出静态成员变量 - 支持在Lua中直接访问
EKeys
- 编辑器下动态绑定一个静态绑定的对象,会有警告日志避免误操作
UnLuaDefaultParamCollector
模块的默认值生成现在支持AutoCreateRefTerm
标记
- 在Lua中访问UE对象统一使用
UE
,考虑到向后兼容,原来的UE4
继续保留 - 统一结构类型的构造参数表达,与UE相同
- FVector/FIntVector/FVector2D/FVector4/FIntPoint
- FColor/FLinearColor
- FQuat/FRotator/FTransform
- 统一UObject在Lua侧IsValid的语义,与UE相同
- Lua中调用UClass的方法提示方法为nil #274
- 游戏世界暂停后,在协程里的Delay后不继续执行 #276
- 在非主线程崩溃时不应该访问Lua堆栈 #278
- 无法将FVector/FRotator/FTransform等类型的函数参数保存到lua对象中 #279
- 调用Lua时参数传递顺序异常 #280
- require不存在的lib会崩 #284
- 蓝图TMap的FindRef错误 #286
- UMG里Image用到的Texture内存泄漏 #288
- UClass在被UEGC后没有释放相应的绑定 #289
- 调用K2_DestroyActor后,立刻调用IsValid会返回true #292
- 关闭RPC会导致部分函数在非Editor模式下crash #293
- 索引DataTable时,如果没有这个key,会得到异常的返回值 #298
- 移除宏定义
CHECK_BLUEPRINTEVENT_FOR_NATIVIZED_CLASS
- 移除宏定义
CLEAR_INTERNAL_NATIVE_FLAG_DURING_DUPLICATION
- UMG释放引用教程
- Lua热重载机制的开关
- 部分英文文档
- 首次切换场景到新场景的Actor的ReceiveBeginPlay没有调用到的问题 #268
- 不同Actor绑定到同一个Lua脚本没有生效的问题 #269
- 在编辑器中绑定某些对象时会报class is out of data的问题
- 在Lua中获取对象属性异常时可能会导致Crash的问题
- 在编辑器通过-game运行游戏时RestartLevel会导致Crash的问题
- 调整了UObject Ref 的释放机制
- 更新并适配 Lua 5.4.2
- 支持对非必要过滤对象的绑定过滤(包括load阶段产生的临时对象、抽象对象等)
- 增加中文说明文档
- 增加 Hotfix 功能(增加UnLuaFramework Module,并且使用时需要添加Content/Script 目录下的 G6HotfixHelper.lua/G6Hotfix.lua)
- 修复若干bugs(参考commits)
fix some bugs, could see details from commits
Fix the crash bug caused incorrect userdata address.
First version of UnLua.