local BuffAction_Tamplate = { -- 以下参数信息可以通过manager的 GetBuffDefaultParam(BuffPath, ParamName)来获取 -- -- 默认颜色信息,非必要参数 BuffColor = {R = 0.97, G = 0.88, B = 0.1, A = 1.}; BuffIconPath = "默认Icon路径,非必要参数"; BuffParticlePath = "默认粒子路径,非必要参数"; BuffDesc = "Buff描述信息,非必要参数"; -------------------------------------------------------------------------------- } --- 必须包含ApplyBuff函数 ---@param BuffTag Any Buff的标签 ---@param ValidPawn UGCPlayerPawn_C ---@param Args ... Any ---@return ApplySucceed:bool function BuffAction_Tamplate:ApplyBuff(BuffTag, ValidPawn, ArgParam1, ArgParam2, ArgParam3) -- Apply逻辑 -- 通过BuffManager调用RPC -- BP_BuffManager.GetBuffFileName()可以获取到当前文件名 ---@param TargetPlayerKey:[为uint32则单独发送], [为table{uint32, ...}则多个发送], [为nil则广播发送]. 若客户端调用则无视该参数 ---@param BuffName:string Buff文件名,BuffAction代码中可使用BP_BuffManager.GetBuffFileName()获取 ---@param TargetFuncName:string 目标BuffAction的函数名 ---@param ...:Args TargetFunc的输入参数 BP_BuffManager.GetBuffManager():BuffNotifyRPC(ValidPawn.PlayerKey, BP_BuffManager.GetBuffFileName(), "Client_RPCFunc", ValidPawn, ArgParam1, ArgParam3) return true end --- 可以包含RemoveBuff,若包含该函数则玩家应用该Buff时会保存Buff信息缓存,作为移除或者获取玩家当前Buff的备份信息 ---@param BuffTag Any Buff的标签 ---@param ValidPawn UGCPlayerPawn_C ---@param Args ... Any Args顺序必须与ApplyBuff顺序一致 function BuffAction_Tamplate:RemoveBuff(BuffTag, ValidPawn, ArgParam1, ArgParam2, ArgParam3) -- Remove逻辑 -- 通过BuffManager调用RPC BP_BuffManager.GetBuffManager():BuffNotifyRPC(ValidPawn.PlayerKey, BP_BuffManager.GetBuffFileName(), "Client_RPCFunc", ValidPawn, ArgParam1, ArgParam3) end --- Tick函数 服务器客户端均会调用 function BuffAction_Tamplate:Tick(DeltaTime) -- Tick逻辑 end --- 触发的RPC函数 function BuffAction_Tamplate:Client_RPCFunc(ValidPawn, RPCArgParam1, RPCArgParam2) end --- 当玩家死亡时会触发该函数,作用于以PlayerKey给玩家Buff的BuffAction,以防UGC的Pawn不删除机制所引发的Bug function BuffAction_Tamplate:PlayerDeathCallBack(PlayerKey) end return BuffAction_Tamplate