39 lines
1.1 KiB
Lua
39 lines
1.1 KiB
Lua
|
|
local DataTableUtils = {}
|
|||
|
|
local BusyGamePlayLibrary = import("BusyGamePlayLibrary")
|
|||
|
|
|
|||
|
|
|
|||
|
|
function DataTableUtils.GetDataTable(table_name)
|
|||
|
|
return BusyGamePlayLibrary.GetGameDataTable(table_name)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
function DataTableUtils.GetDataTableRow(table_name, row_name)
|
|||
|
|
local data_table = DataTableUtils.GetDataTable(table_name)
|
|||
|
|
if not data_table then
|
|||
|
|
return nil
|
|||
|
|
end
|
|||
|
|
return data_table:FindRow(row_name)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
--[[
|
|||
|
|
LuaExtensionMethod.cpp:22-28
|
|||
|
|
|
|||
|
|
|
|||
|
|
// 封装函数示例
|
|||
|
|
static int FindRowWrapper(lua_State* L) {
|
|||
|
|
UDataTable* dataTable = LuaObject::checkUD<UDataTable>(L, 1);
|
|||
|
|
FName rowName = LuaObject::checkValue<FName>(L, 2);
|
|||
|
|
UScriptStruct* rowStruct = LuaObject::checkUD<UScriptStruct>(L, 3);
|
|||
|
|
// 使用反射调用 FindRow
|
|||
|
|
uint8* rowData = dataTable->FindRowUnchecked(rowName);
|
|||
|
|
if (rowData && rowStruct) {
|
|||
|
|
// 将结果推送到 Lua
|
|||
|
|
return LuaObject::pushStruct(L, rowStruct, rowData);
|
|||
|
|
}
|
|||
|
|
return LuaObject::pushNil(L);
|
|||
|
|
}
|
|||
|
|
这段代码中,pushStruct只接受两个参数,如何改
|
|||
|
|
|
|||
|
|
]]
|
|||
|
|
|
|||
|
|
return DataTableUtils
|