SkillConfig = SkillConfig or {} SkillConfig.ESkillType = { Fly = 1; } -- 玩家的技能冷却 SkillConfig.PlayerCooling = {} -- {[ESkillType] = {PlayerKey = LastSkillTime}, } SkillConfig.SkillInfo = { [SkillConfig.ESkillType.Fly] = { SkillID = 120, CoolingTime = 0, OtherEffect = function(PlayerPawn) end }, } function SkillConfig.ExeSkill(SkillType, InPawn) if UE.IsValid(InPawn) and InPawn.PlayerKey then local TargetSkillInfo = SkillConfig.SkillInfo[SkillType] if TargetSkillInfo then if SkillConfig.PlayerCooling[SkillType] == nil then SkillConfig.PlayerCooling[SkillType] = {} end local NowTime = UGCSystemLibrary.GetGameTime() local LastSkillTime = SkillConfig.PlayerCooling[SkillType][InPawn.PlayerKey] if LastSkillTime == nil or NowTime - LastSkillTime > TargetSkillInfo.CoolingTime then SkillConfig.PlayerCooling[SkillType][InPawn.PlayerKey] = NowTime local SkillManager = InPawn:GetSkillManagerComponent() if SkillManager ~= nil then SkillManager:TriggerEvent(TargetSkillInfo.SkillID, UTSkillEventType.SET_KEY_DOWN) if TargetSkillInfo.OtherEffect then TargetSkillInfo.OtherEffect(InPawn) end return true else UGCLogSystem.LogError("[SkillConfig_ExeSkill] SkillManager is nil") end end else UGCLogSystem.LogError("[SkillConfig_ExeSkil] Exe SkillType:%s is Error", tostring(SkillType)) end else UGCLogSystem.LogError("[SkillConfig_ExeSkill] InPawn is nil") end return false end