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 |