You can define RPC (Remote Procedure Call) functions directly in Lua by specifying them in ServerRPC, ClientRPC, or MulticastRPC tables. You must define the Params list using EPropertyClass types.
-- LuaActor.lua
local LuaActor =
{
ServerRPC = {}, -- C2S RPC list
ClientRPC = {}, -- S2C RPC list
MulticastRPC = {}, -- NetMulticast RPC list
}
local EPropertyClass = import("EPropertyClass")
LuaActor.ServerRPC.TestServerRPC = {
Reliable = true,
Params =
{
EPropertyClass.Int,
EPropertyClass.Str,
EPropertyClass.bool,
}
}
-- ... (ClientRPC and MulticastRPC follow same pattern)
function LuaActor:TestServerRPC(ArgInt, ArgStr, ArgBool)
-- implementation
end
function LuaActor:TestClientRPC(ArgInt, ArgStr, ArgBool)
-- implementation
end
function LuaActor:TestMulticastRPC(ArgInt, ArgStr, ArgBool)
-- implementation
end
-- LuaActor.lua
local LuaActor =
{
ServerRPC = {}, -- C2S类RPC列表,类似UFUNCTION宏中的Server
ClientRPC = {}, -- S2C类RPC列表,类似UFUNCTION宏中的Client
MulticastRPC = {}, -- 多播类RPC列表,类似UFUNCTION宏中的NetMulticast
}
local EPropertyClass = import("EPropertyClass")
LuaActor.ServerRPC.TestServerRPC = {
-- 是否可靠RPC
Reliable = true,
-- 定义参数列表
Params =
{
EPropertyClass.Int,
EPropertyClass.Str,
EPropertyClass.bool,
}
}
LuaActor.ClientRPC.TestClientRPC = {
-- 是否可靠RPC
Reliable = true,
-- 定义参数列表
Params =
{
EPropertyClass.Int,
EPropertyClass.Str,
EPropertyClass.bool,
}
}
LuaActor.MulticastRPC.TestMulticastRPC = {
-- 是否可靠RPC
Reliable = true,
-- 定义参数列表
Params =
{
EPropertyClass.Int,
EPropertyClass.Str,
EPropertyClass.bool,
}
}
function LuaActor:TestServerRPC(ArgInt, ArgStr, ArgBool)
end
function LuaActor:TestClientRPC(ArgInt, ArgStr, ArgBool)
end
function LuaActor:TestMulticastRPC(ArgInt, ArgStr, ArgBool)
end