---@class BP_TrackPlayer_C:BP_TriggerMechanismBase_C ---@field P_TrackPlayer UParticleSystemComponent ---@field CG019_NewCity_Device UStaticMeshComponent ---@field TrackWidgetClass UClass --Edit Below-- ---@type BP_TrackPlayer_C local MechanismBase = require('Script.Blueprint.MechanismActor.BP_TriggerMechanismBase') local BP_TrackPlayer = setmetatable( { TrackPlayers = {}; TrackActors = {}; }, { __index = MechanismBase, __metatable = MechanismBase } ); function BP_TrackPlayer:ReceiveBeginPlay() self.SuperClass.ReceiveBeginPlay(self); MechanismBase.MechanismBeginPlay(self) self:SetMechanismType(MechanismConfig.TriggerMechanismType.TrackPlayer) if UGCGameSystem.IsServer() then UGCLogSystem.Log("[BP_TrackPlayer_ReceiveBeginPlay] 1") local AllTrackWidget = ScriptGameplayStatics.GetActorsOfClass(self, self.TrackWidgetClass) for i = 1 + #AllTrackWidget, GlobalConfigs.GameModeSetting.TeamNeedPlayerNum do self.TrackActors[#self.TrackActors + 1] = UGCGameSystem.SpawnActor(self, self.TrackWidgetClass, VectorHelper.VectorZero(), VectorHelper.RotZero(), VectorHelper.ScaleOne(), self) UGCLogSystem.Log("[BP_TrackPlayer_ReceiveBeginPlay] 2") end end end function BP_TrackPlayer:ReceiveEndPlay() self:MechanismEndPlay() self.SuperClass.ReceiveEndPlay(self); end function BP_TrackPlayer:Trigger(InTriggeredPlayer, InTriggerDevice, InEnergyValue) MechanismBase.Trigger(self, InTriggeredPlayer, InTriggerDevice, InEnergyValue) self.TrackPlayers = UGCTeamSystem.GetOtherTeamPlayerKeys(UGCPlayerStateSystem.GetTeamID(InTriggeredPlayer)) for i = 1, #self.TrackPlayers do if self.TrackActors[i] then self.TrackActors[i]:SetTrackPlayerKey(self.TrackPlayers[i]) else UGCLogSystem.LogError("[BP_TrackPlayer_Trigger] TargetActors 数量不足 #TrackPlayers:%s", (#self.TrackPlayers)) break end end end function BP_TrackPlayer:CloseMechanism() MechanismBase.CloseMechanism(self) for i, TrackActor in pairs(self.TrackActors) do TrackActor:SetTrackPlayerKey(-1) end end function BP_TrackPlayer:EnableClientTriggerEffects() MechanismBase.EnableClientTriggerEffects(self) self.P_TrackPlayer:SetActive(true, true) end function BP_TrackPlayer:DisableClientTriggerEffects() MechanismBase.DisableClientTriggerEffects(self) self.P_TrackPlayer:SetActive(false, false) end return BP_TrackPlayer;