local BuffActionBase = { -- 实例的ID InstID = -1; -- 拥有者 OwnerPawn = nil; -- Controller* @施加Buff的玩家或AI。 BuffCauser = nil; -- Actor* @施加Buff的Actor,比如说PlayerPawn、燃烧瓶Actor等等 CauserActor = nil; -- 启用Tick函数 bIsEnableTick = false; } -- 常用接口 -------------------------------------------------------------- --[[ self:GetInstID() self:GetOwnerPawn() BuffSystemAPI.GetBuffCauser(self:GetInstID()) self:EnableTick() self:StopTick() -- 会自动关 self:IsEnableTick() ]] function BuffActionBase:GetInstID() return self.InstID end function BuffActionBase:GetOwnerPawn() return self.OwnerPawn end function BuffActionBase:EnableTick() self.bIsEnableTick = true end function BuffActionBase:StopTick() self.bIsEnableTick = false end function BuffActionBase:IsEnableTick() return self.bIsEnableTick end -- 常用接口 End ---------------------------------------------------------- --- 初始化函数 ---@param InstID int 实例的ID ---@param OwnerPawn APawn* ---@param BuffCauser AController* 玩家控制器或者AI ---@param CauserActor Actor* @施加Buff的Actor,比如说PlayerPawn、燃烧瓶Actor等等 ---@param ParamList table 传入Action的参数{ParamName = Val} function BuffActionBase:InitBuffAction(InstID, OwnerPawn, ParamList) self.InstID, self.OwnerPawn = InstID, OwnerPawn -- 初始化传入的参数 for i, v in pairs(ParamList) do self[i] = v end end --- 激活函数 function BuffActionBase:LuaDoAction() end --- 移除函数 function BuffActionBase:LuaUndoAction() self:StopTick() end --- 刷新时间函数,只有刷新时间的Buff重复获得才会触发才能 function BuffActionBase:LuaResetAction() end --- Tick function BuffActionBase:LuaUpdateAction(DeltaSeconds) if self.bIsEnableTick == false then return end end return BuffActionBase