local EventAction_CountdownMode = { GameTime = 0; GameEndEvent = -1; } -- 触发器激活时,将执行Action的Execute function EventAction_CountdownMode:Execute(...) if not UGCGameSystem.IsServer() then return end self.bEnableActionTick = true -- 设置当前游戏模式 UGCGameSystem.GameState:SetGameStateType(CustomEnum.EGameState.Playing) -- 显示战斗界面UI UGCGameSystem.GameState:ShowSimplePlayModeUI(WidgetConfig.EUIType.FightPanel) -- 显示武器选择界面 local AllPlayerKey = UGCSystemLibrary.GetAllPlayerKeys() for i, PlayerKey in pairs(AllPlayerKey) do UGCGameSystem.GameState:ShowPlayerSelectWeaponWidget(PlayerKey) end -- 重置所有玩家 UGCGameSystem.SendModeCustomEvent("ResetAllPlayers") -- 重置玩家积分信息 PlayerScoreSystem.ResetAllPlayerScoreData() -- 重置和平默认的击杀数 UGCSystemLibrary.ResetAllPlayerKillsAndAssists() -- 重置队伍得分 UGCGameSystem.GameState:ResetTeamScore() -- 绑定游戏结束事件 UGCEventSystem.AddListener(EventEnum.GameStateChange, self.GameFinish, self) -- 初始化游戏时间 self.GameStartTime = UGCSystemLibrary.GatRealTimeSeconds() UGCGameSystem.GameState:SetGameTime(self.GameTime) UGCLogSystem.Log("[EventAction_CountdownMode_Execute] Finish") return true end function EventAction_CountdownMode:GameFinish(GameStateType) UGCLogSystem.Log("[EventAction_CountdownMode_GameFinish]") if GameStateType == CustomEnum.EGameState.End then self.bEnableActionTick = false if self.GameEndEvent then -- 发送游戏结束事件 UGCEventSystem.SendEvent(self.GameEndEvent) else UGCLogSystem.Log("[EventAction_CountdownMode_GameFinish] GameEndEvent is nil") end UGCEventSystem.RemoveListener(EventEnum.GameStateChange, self.GameFinish, self) end end function EventAction_CountdownMode:Update(DeltaSeconds) local NowRealTime = UGCSystemLibrary.GatRealTimeSeconds() local RemainTime = self.GameTime - (NowRealTime - self.GameStartTime); -- 更新游戏时间 if self.LastRemainTime ~= RemainTime then -- 判断游戏时间是否已结束 if RemainTime <= 0 then self.LastRemainTime = 0 UGCGameSystem.GameState:GameFinish() else self.LastRemainTime = RemainTime end UGCGameSystem.GameState:SetGameTime(self.LastRemainTime) end end return EventAction_CountdownMode