Skip to content

2.1.4 Release

Latest
Compare
Choose a tag to compare
@zjhongxian zjhongxian released this 26 Jun 04:04
· 47 commits to master since this release
ea2a2bc

新增功能:

  1. 优化Array元素为struct类型的遍历,新增PairsLessGC API,使用PairsLessGC遍历时,只会生成一个userdata且复用它。
  2. Array、Set遍历支持反向遍历。
  3. lua值复制支持:REPNOTIFY_Always 选项,当它生效时,DS端的赋值无论值是否改变都会通知客户端.
    示例:
local LuaActor ={}

function LuaActor:GetLifetimeReplicatedProps()
    local ELifetimeCondition = import("ELifetimeCondition")

    return {
        { "HP", ELifetimeCondition.COND_None, EPropertyClass.Float, RepNotifyCondition = 1},
    }
end

return Class(nil, nil, LuaActor)
  1. LuaWrapper里面导出的类型,原本有"+"、"-"、"*"、"/"等操作支持的,分别增加add、sub、mul、div等API,区别在于操作符运算结果返回会新增一个userdata,而add、sub、mul、div等会把结果加到自身以减少对象生成减少GC压力。
local A = FVector(1,2,3)
local B = FVector(2,3,4)
print(A, A:add(B)) --地址将会是A、A
print(AA+B) --地址将会A和一个新对象
  1. 调用有返回值的UFunction函数,支持多传一个额外参数接收返回结果,以减少对象生成减少GC压力。
  2. Delegate的绑定支持直接绑定UObject和它的UFunction,且它们无须手工解绑,范例:
-- 绑定操作,如果是单播Delegate则用Bind替代Add
Button.OnClicked:Add(UIRoot, "OnButtonClickedBlueprintFunction")

--解绑操作,一般不需要
Button.OnClicked:Remove(UIRoot, "OnButtonClickedBlueprintFunction")

机制优化或者bug fixed:

  1. Array、Set等普通遍历,比之前少生成一个对象。
  2. Array、Set、Map等类型参数检查加强:之前没有检查它们的内部元素是否匹配,现在改为严格匹配内部元素。
  3. 修复checkUInterfaceProperty函数的错误提醒格式,之前可能会导致崩溃。
  4. 修复可能存在的UObject的lua函数存在判定错误。
  5. LuaWrapper导出的类型,访问它的static变量时,只生成一份数据
  6. Fixed #587 #589 #590
  7. Delegate返回值由lightuserdata改为int64类型。
  8. 优化访问Delegate类型成员变量,不再每次访问都生成一个userdata
  9. 加速SimpleString的hash计算
  10. 修复Lua值复制DS端赋值同样的变量(REPNOTIFY_OnChanged条件下),可能导致变量不变但是也通知到客户端的bug
  11. 修复UObject按Instance Hook比CDO类函数多的时候,可能会导致前者函数Hook被跳过的bug
  12. lua支持到5.4.3版本
  13. 补全UE5.1/5.2下缺失的LuaWrapper API
  14. 完整适配 Unreal Engine 5.4

Full Changelog: 2.1.3...2.1.4