local SceneQuiz_Controller = {} local private = {} local EventSystem = require('Event/EventSystem') local ColliderManager = require("Battle/Logic/Level/ColliderManager") local VisualObject = require("Battle/Expression/VisualObject") local EFFECT_TYPE_VICTORY = 1 local EFFECT_TYPE_PUNISH = 2 local WATCH_EMPTY = 60200101 local EFFECT_BIG_STATIC_BLUE = ConstAssetPathConfig.EFFECT_BIG_STATIC_BLUE --常驻蓝色大圈特效 local EFFECT_BIG_ENTER_BLUE = ConstAssetPathConfig.EFFECT_BIG_ENTER_BLUE --进入蓝色大圈特效 local EFFECT_BIG_STATIC_RED = ConstAssetPathConfig.EFFECT_BIG_STATIC_RED --常驻红色大圈特效 local EFFECT_BIG_ENTER_RED = ConstAssetPathConfig.EFFECT_BIG_ENTER_RED --进入红色大圈特效 local EFFECT_SMALL_STATIC_BLUE = ConstAssetPathConfig.EFFECT_SMALL_STATIC_BLUE --常驻蓝色小圈特效 local EFFECT_SMALL_ENTER_BLUE = ConstAssetPathConfig.EFFECT_SMALL_ENTER_BLUE --进入蓝色小圈特效 local EFFECT_SMALL_STATIC_RED = ConstAssetPathConfig.EFFECT_SMALL_STATIC_RED --常驻红色小圈特效 local EFFECT_SMALL_ENTER_RED = ConstAssetPathConfig.EFFECT_SMALL_ENTER_RED --进入红色小圈特效 local OFFSET_EFFECT = 7 local INTERVAL_FAIL = 5 local AnswerOptionIndex = { [1] = "a", [2] = "b", [3] = "c", [4] = "d", } --固定决赛点列表 local finalPointList = { [1] = { pointId = 1, answerIndex = 1 }, [2] = { pointId = 2, answerIndex = 2 }, } function SceneQuiz_Controller.OnStartup() EventSystem.Regist(EventID.UI_DelayToTownPlay, private.OnEnterLevel) EventSystem.Regist(EventID.UI_SceneQuiz_QuizModuleInfoRefresh, private.OnQuizModuleInfoRefresh) EventSystem.Regist(EventID.UI_SceneQuiz_ReopenBattleInfoView, private.OnReopenBattleInfoView) private.preliminaryChatMsgList = {} --初赛聊天消息列表 --key:ScenePoint配置的ID, value:{colliderID,answerIndex,resource,config} private.answerAreaDict = {} --答题圈列表 --答题圈特效列表 private.quizEffectObjectList = {} private.punishConfigEffects = {} private.victoryConfigEffect = nil for _, v in DataSheetManager.PointEffect:GetEnumerator() do if v.EffectType == EFFECT_TYPE_VICTORY then private.victoryConfigEffect = v elseif v.EffectType == EFFECT_TYPE_PUNISH then table.insert(private.punishConfigEffects, v) end end end function SceneQuiz_Controller.IsShowRedPoint() local curStage = MDL.SceneQuiz.GetCurStage() if curStage == MDL.SceneQuiz.ScheduleStage.Preliminary then return true elseif curStage == MDL.SceneQuiz.ScheduleStage.Bet then local BetMaxNum = DataSheetManager.SceneQuizData:GetDataByModeTypeID(1).BetMaxNum if SceneQuiz_Controller.GetBetNum() < BetMaxNum then return true else return false end elseif curStage == MDL.SceneQuiz.ScheduleStage.Finals then return true else return false end end function SceneQuiz_Controller.OpenMainPanel(activityId) UIManager.OpenView(Const_UI_Lua.UIEnum.UISceneQuizMain, { activityId = activityId }, CTL.NewYear.GetViewPrefabPath(activityId, CTL.NewYear.ViewName.SceneQuizMain)) end function SceneQuiz_Controller.OpenRewardPanel(activityId, context) UIManager.OpenView(Const_UI_Lua.UIEnum.UISceneQuizReward, context, CTL.NewYear.GetViewPrefabPath(activityId, CTL.NewYear.ViewName.SceneQuizReward)) end function SceneQuiz_Controller.OpenBetView(activityId, context) UIManager.OpenView(Const_UI_Lua.UIEnum.UISceneQuizBetView, context, CTL.NewYear.GetViewPrefabPath(activityId, CTL.NewYear.ViewName.SceneQuizBetView)) end function SceneQuiz_Controller.OpenPreliminaryView(activityId, context) UIManager.OpenView(Const_UI_Lua.UIEnum.UISceneQuizPreliminary, context, CTL.NewYear.GetViewPrefabPath(activityId, CTL.NewYear.ViewName.SceneQuizPreliminary)) end function SceneQuiz_Controller.OpenRankView(activityId, context) UIManager.OpenView(Const_UI_Lua.UIEnum.UISceneQuizRank, context, CTL.NewYear.GetViewPrefabPath(activityId, CTL.NewYear.ViewName.SceneQuizRank)) end function SceneQuiz_Controller.OpenBattleInfoView(activityId, context) local prefabPath = CTL.NewYear.GetViewPrefabPath(activityId, CTL.NewYear.ViewName.SceneQuizBattleInfo) if prefabPath then UIManager.OpenView(Const_UI_Lua.UIEnum.UISceneQuizBattleInfo, context, prefabPath) end end function SceneQuiz_Controller.IsTodayOpen() if CTL.OperationActivity.IsOperationActivityTypeOpen(MDL.OperationActivity.ActivityType.NewYear) then local curStage = MDL.SceneQuiz.GetCurStage() if curStage and (curStage ~= MDL.SceneQuiz.ScheduleStage.None and curStage ~= MDL.SceneQuiz.ScheduleStage.AfterCompetition) then return true end end return false end function SceneQuiz_Controller.IsFinalOpen() if SceneQuiz_Controller.IsTodayOpen() then local curStage = MDL.SceneQuiz.GetCurStage() if curStage and (curStage >= MDL.SceneQuiz.ScheduleStage.Bet and curStage <= MDL.SceneQuiz.ScheduleStage.FinalsExtraTime) then return true end end return false end function SceneQuiz_Controller.GetActivityStateAndTime() local state = CTL.Activities.ActivityState.End local time = 0 if SceneQuiz_Controller.IsTodayOpen() then local curStage = MDL.SceneQuiz.GetCurStage() local SceneQuizData = DataSheetManager.SceneQuizData:GetDataByModeTypeID(1) if curStage == MDL.SceneQuiz.ScheduleStage.PreCompetition then state = CTL.Activities.ActivityState.NotOpen time = UTL.Time.GetServerIntervalTimeByTimeId(SceneQuizData.PreliminaryTime) elseif curStage == MDL.SceneQuiz.ScheduleStage.Preliminary then state = CTL.Activities.ActivityState.Opening time = 0 elseif curStage == MDL.SceneQuiz.ScheduleStage.Bet then state = CTL.Activities.ActivityState.NotOpen time = UTL.Time.GetServerIntervalTimeByTimeId(SceneQuizData.FinalTime) elseif curStage == MDL.SceneQuiz.ScheduleStage.Finals then local stageState = MDL.SceneQuiz.GetStageState() if stageState == MDL.SceneQuiz.StageState.Prepare then --初赛和的决赛间隔期间 state = CTL.Activities.ActivityState.Opening time = UTL.Time.GetServerIntervalTimeByTimeId(SceneQuizData.FinalTime) + SceneQuizData.FinalJoinTime else state = CTL.Activities.ActivityState.Opening time = 0 end end end return state, time end function SceneQuiz_Controller.IfBetByAcId(acid) return MDL.SceneQuiz.GetBetPerson()[acid] or false end function SceneQuiz_Controller.GetBetNum() return table.getDictCount(MDL.SceneQuiz.GetBetPerson()) end function SceneQuiz_Controller.GetBetPercentState(realPercent) local percent = realPercent * 10000 for i, v in DataSheetManager.SceneQuizBetReward:GetEnumerator() do local percent1 = v.Percent1 local percent2 = v.Percent2 if percent2 > 0 then if percent1 <= percent and percent < percent2 then return i - 1 end else if percent >= percent1 then return i - 1 end end end return 0 end function SceneQuiz_Controller.EnterSceneQuizFinals() local curStage = MDL.SceneQuiz.GetCurStage() if curStage == MDL.SceneQuiz.ScheduleStage.Finals or MDL.SceneQuiz.ScheduleStage.FinalsExtraTime then MDL.SceneQuiz.SceneQuizEnterSceneReq() else logging.error(LTAG.ERROR, "一站到底:当前不是决赛或观战阶段,不应触发此方法,请程序检查。", curStage) end end function SceneQuiz_Controller.ResetHistoryChatMsg() table.clearArray(private.preliminaryChatMsgList) end function SceneQuiz_Controller.GetPreliminaryChatMsgList() return private.preliminaryChatMsgList end function SceneQuiz_Controller.TryJoinPreliminaryChannel() local channelCfgID = MDL.ChannelChat.ChannelCfgId.SceneQuiz if MDL.ChannelChat.IsJoinChannel(channelCfgID) == false then MDL.ChannelChat.JoinChannel(channelCfgID, private.GetSceneQuizChannel()) end end function SceneQuiz_Controller.GetBulletChannelPrefix() return private.GetSceneQuizChannel() end function private.GetSceneQuizChannel() local groupId = "" local info = MDL.SceneQuiz.GetCurStageQuizInfo() if info then groupId = info.groupId end local channelCfgID = MDL.ChannelChat.ChannelCfgId.SceneQuiz local channelAttach local warZoneId = MDL.ChannelChat.GetWarZoneId() if warZoneId and warZoneId > 0 then channelAttach = warZoneId else channelAttach = MDL.Login.GetRealServerId() end local chatCfgData = DataSheetManager.Chat:GetDataByID(channelCfgID) local dateInfo = UTL.Time.OsDateOriginal("*t", UTL.Time.GetServerTimestamp()) return chatCfgData.ChannelPrefix .. channelAttach .. "_" .. groupId .. "_" .. dateInfo.year .. dateInfo.month .. dateInfo.day end function SceneQuiz_Controller.InitHistoryChatMsg(isSelf, content, senderName, answerType, rankIndex, extraParam) local msg = { isSelf = isSelf, senderName = senderName, content = content, answerType = answerType, rankIndex = rankIndex, heroId = extraParam.PlayerShowInfo.mainHeroId, level = extraParam.PlayerShowInfo.level, sex = extraParam.PlayerShowInfo.sex, emblemFrame = extraParam.PlayerShowInfo.EmblemFrame, emblemContent = extraParam.PlayerShowInfo.EmblemContent, jobTitle = extraParam.PlayerShowInfo.JobTitle, officialId = extraParam.PlayerShowInfo.OfficialId, portraitId = extraParam.PlayerShowInfo.PortraitId, frameId = extraParam.PlayerShowInfo.FrameId, wearSignetId = extraParam.PlayerShowInfo.WearSignetId, signetTimestamp = extraParam.PlayerShowInfo.SignetTimestamp, } table.insert(private.preliminaryChatMsgList, 1, msg) end function SceneQuiz_Controller.AddNewChatMsg(isSelf, content, senderName, answerType, rankIndex, extraParam) local msg = { isSelf = isSelf, senderName = senderName, content = content, answerType = answerType, rankIndex = rankIndex, heroId = extraParam.PlayerShowInfo.mainHeroId, level = extraParam.PlayerShowInfo.level, sex = extraParam.PlayerShowInfo.sex, emblemFrame = extraParam.PlayerShowInfo.EmblemFrame, emblemContent = extraParam.PlayerShowInfo.EmblemContent, jobTitle = extraParam.PlayerShowInfo.JobTitle, officialId = extraParam.PlayerShowInfo.OfficialId, portraitId = extraParam.PlayerShowInfo.PortraitId, frameId = extraParam.PlayerShowInfo.FrameId, wearSignetId = extraParam.PlayerShowInfo.WearSignetId, signetTimestamp = extraParam.PlayerShowInfo.SignetTimestamp, } private.preliminaryChatMsgList[#private.preliminaryChatMsgList + 1] = msg EventSystem.Dispatch(EventID.UI_SceneQuiz_RefreshPreliminaryChat, msg) end function private.OnEnterLevel() private.OnQuizModuleInfoRefresh() if LevelManager.IsSceneQuizTown() then --进入一站到底场景拿不到ActivityID时请求数据,不然就得等到下一道题才会打开答题面板 if MDL.SceneQuiz.CurActivityID == 0 then MDL.SceneQuiz.SceneQuizGetInfoReq() end CTL.WatchBattle.InitBullet() --观赛者默认开启,参赛者默认关闭 if BattleDataGetter.GetIsSceneQuizWatch() then MDL.SceneQuiz.SetIsFinalsBulletOpen(true) else MDL.SceneQuiz.SetIsFinalsBulletOpen(false) end else private.watchEmptyEntity = nil MDL.SceneQuiz.ClearIsFailInFinals() end end function private.OnQuizModuleInfoRefresh() if LevelManager.IsSceneQuizTown() then if UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UISceneQuizBattleInfo) == false then --断线重连或者大退直接进场景,有可能因为ActivityID获取时机慢而打不开界面 SceneQuiz_Controller.OpenBattleInfoView(MDL.SceneQuiz.CurActivityID) end MDL.SceneQuiz.ProcessCircleOccupy(0) local curStage = MDL.SceneQuiz.GetCurStage() if curStage == MDL.SceneQuiz.ScheduleStage.Finals then local stageState = MDL.SceneQuiz.GetStageState() if stageState == MDL.SceneQuiz.StageState.Doing then private.UpdateAnswerArea(finalPointList) end elseif curStage == MDL.SceneQuiz.ScheduleStage.FinalsExtraTime then local info = MDL.SceneQuiz.GetCurStageQuizInfo() if info then private.UpdateAnswerArea(info.points) end elseif curStage == MDL.SceneQuiz.ScheduleStage.AfterCompetition then private.OnQuizFinish() end else private.ClearSceneQuizEffects() end end -- 断线重连之后如果数据还没刷新,触发 OnEnterLevel 方法内的 SceneQuizGetInfoReq 最后走此事件。 function private.OnReopenBattleInfoView() if LevelManager.IsSceneQuizTown() and not UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UISceneQuizBattleInfo) then CTL.SceneQuiz.OpenBattleInfoView(MDL.SceneQuiz.CurActivityID) end end function SceneQuiz_Controller.SetWatchCamera() if private.watchEmptyEntity == nil then local pv2 = FP.newV2(0, 0) EntityFactory.SetPos_Dir(pv2, pv2) EntityFactory.SetType_ID(LuaConst.CharacterType.Monster, WATCH_EMPTY) private.watchEmptyEntity = EntityFactory.DoCreateEntity() private.watchEmptyEntity.ExpEntity.RenderEntity.Transform:SetLocalPosition(nil, 60, -25) end ExpSystemManager.SetCurEntity(private.watchEmptyEntity.ExpEntity) if CameraController.Instance:GetViewMode() == 1 then CameraController.Instance:ChangeFreePattern(false) end CameraController.Instance:ReactiveCamera() end function private.ClearSceneQuizEffects() for i = #private.quizEffectObjectList, 1, -1 do private.quizEffectObjectList[i]:Dispose() end private.quizEffectObjectList = {} for k, v in pairs(private.answerAreaDict) do ColliderManager.DestroyCollider(v.colliderID) if v.resource then v.resource:Dispose() v.resource = nil end private.answerAreaDict[k] = nil end end function private.GetEffectByAnswerIndex(areaEffectIndex, isEnter) local curStage = MDL.SceneQuiz.GetCurStage() if curStage == MDL.SceneQuiz.ScheduleStage.Finals then if areaEffectIndex == 1 then if isEnter then return EFFECT_BIG_ENTER_BLUE else return EFFECT_BIG_STATIC_BLUE end else if isEnter then return EFFECT_BIG_ENTER_RED else return EFFECT_BIG_STATIC_RED end end elseif curStage == MDL.SceneQuiz.ScheduleStage.FinalsExtraTime then if areaEffectIndex == 1 then if isEnter then return EFFECT_SMALL_ENTER_BLUE else return EFFECT_SMALL_STATIC_BLUE end else if isEnter then return EFFECT_SMALL_ENTER_RED else return EFFECT_SMALL_STATIC_RED end end end end --将传过来的坐标点转换成答题圈 function private.UpdateAnswerArea(pointInfoList) --先清除上一次的资源 private.ClearSceneQuizEffects() if pointInfoList then for i, v in ipairs(pointInfoList) do local config = DataSheetManager.ScenePoint:GetDataByID(v.pointId) if config then local colliderID = ColliderManager.CreateCircleCollider(FP.newV2(config.PointX, config.PointZ), FP.newV1(config.PointRadius):Square()) local areaEffectIndex if MDL.SceneQuiz.GetCurStage() == MDL.SceneQuiz.ScheduleStage.Finals then areaEffectIndex = i else areaEffectIndex = v.answerIndex end local effect = private.GetEffectByAnswerIndex(areaEffectIndex, false) local resource = private.CreateAnswerResource(effect, config.PointX, config.PointZ) local info = { config = config, colliderID = colliderID, resource = resource, areaEffectIndex = areaEffectIndex, isAnswerRight = private.CheckAnswerIfRight(areaEffectIndex), } ColliderManager.AddEnterEvent(colliderID, private.OnEnterCollider, info) ColliderManager.AddExitEvent(colliderID, private.OnExitCollider, info) --加时赛需要遍历所有entity来检测碰撞,决赛只需要检测自己 if MDL.SceneQuiz.GetCurStage() == MDL.SceneQuiz.ScheduleStage.FinalsExtraTime then ColliderManager.ActiveCollider(colliderID, LogicUpdateManager.ValidAllEntityIter) else ColliderManager.ActiveCollider(colliderID, LogicUpdateManager.ValidSyncEntityIter) end private.answerAreaDict[v.pointId] = info end end end end function private.CreateAnswerResource(path, px, pz) local obj = VisualObject.CreateEffectObject(path, ExpLevelManager.SceneObjParent) obj:SetPosition(px, 0, pz) return obj end function private.OnEnterCollider(owner, entity) --进圈换成选中特效 if BattleDataGetter.IsCurEntity(entity) then if owner.resource then owner.resource:Dispose() owner.resource = nil end local config = owner.config local effect = private.GetEffectByAnswerIndex(owner.areaEffectIndex, true) if effect then owner.resource = private.CreateAnswerResource(effect, config.PointX, config.PointZ) end end private.UpdateAreaOccupy(owner, entity, true) end function private.OnExitCollider(owner, entity) --出圈换成原本特效 if BattleDataGetter.IsCurEntity(entity) then if owner.resource then owner.resource:Dispose() owner.resource = nil end local config = owner.config local effect = private.GetEffectByAnswerIndex(owner.areaEffectIndex, false) if effect then owner.resource = private.CreateAnswerResource(effect, config.PointX, config.PointZ) end end private.UpdateAreaOccupy(owner, entity, false) end --加时赛判断占领情况 function private.UpdateAreaOccupy(answerAreaInfo, entity, isEnter) if MDL.SceneQuiz.GetCurStage() == MDL.SceneQuiz.ScheduleStage.FinalsExtraTime then if isEnter then if BattleDataGetter.IsCurEntity(entity) then MDL.SceneQuiz.ProcessCircleOccupy(answerAreaInfo.config.ID) end if answerAreaInfo.enterEntityList == nil then answerAreaInfo.enterEntityList = { entity } else table.insert(answerAreaInfo.enterEntityList, entity) end else if answerAreaInfo.enterEntityList then for i = 1, #answerAreaInfo.enterEntityList do if answerAreaInfo.enterEntityList[i] == entity then table.remove(answerAreaInfo.enterEntityList, i) break end end end if BattleDataGetter.IsCurEntity(entity) then --我离圈了 MDL.SceneQuiz.ProcessCircleOccupy(0) else --别人离圈了,我在不在圈内 if answerAreaInfo.enterEntityList then for i = 1, #answerAreaInfo.enterEntityList do if BattleDataGetter.IsCurEntity(answerAreaInfo.enterEntityList[i]) then --我在圈内 MDL.SceneQuiz.ProcessCircleOccupy(answerAreaInfo.config.ID) break end end end end end end end function private.CreateAreaEffect(effectPath, effectNum, posX, posZ, radius) if effectNum == 1 then local obj = private.CreateAnswerResource(effectPath, posX, posZ) table.insert(private.quizEffectObjectList, obj) else for i = 1, effectNum do local randomX = math.random(-radius + OFFSET_EFFECT, radius - OFFSET_EFFECT) local randomY = math.random(-radius + OFFSET_EFFECT, radius - OFFSET_EFFECT) local obj = private.CreateAnswerResource(effectPath, posX + randomX, posZ + randomY) table.insert(private.quizEffectObjectList, obj) end end end function SceneQuiz_Controller.ProcessQuizPlayers(failPlayers, isLastQuiz) local randomCount = math.random(1, #private.punishConfigEffects) local punishEffectConfig = private.punishConfigEffects[randomCount] local punishEffectNum local victoryEffectNum local curStage = MDL.SceneQuiz.GetCurStage() if curStage == MDL.SceneQuiz.ScheduleStage.FinalsExtraTime then --加时赛特效只需要1个 punishEffectNum = 1 victoryEffectNum = 1 else punishEffectNum = punishEffectConfig.EffectRandomNum victoryEffectNum = private.victoryConfigEffect.EffectRandomNum end local isOverturn = MDL.SceneQuiz.GetCurStageQuizInfo().isOverturn for i, v in pairs(private.answerAreaDict) do --颠倒题的奖惩特效要反着来 if isOverturn == false then if v.isAnswerRight then private.CreateAreaEffect(private.victoryConfigEffect.EffectPatch, victoryEffectNum, v.config.PointX, v.config.PointZ, v.config.PointRadius) else private.CreateAreaEffect(punishEffectConfig.EffectPatch, punishEffectNum, v.config.PointX, v.config.PointZ, v.config.PointRadius) end else if v.isAnswerRight == false then private.CreateAreaEffect(private.victoryConfigEffect.EffectPatch, victoryEffectNum, v.config.PointX, v.config.PointZ, v.config.PointRadius) else private.CreateAreaEffect(punishEffectConfig.EffectPatch, punishEffectNum, v.config.PointX, v.config.PointZ, v.config.PointRadius) end end end private.deadPlayerList = {} private.isLastQuizFail = isLastQuiz for i, acid in ipairs(failPlayers) do local entity = SyncMoveManager.GetEntityByAcid(acid) if entity then --播放死亡动作 NotSyncBattleSetter.SetNextState(LuaConst.StateType.Dead, entity, -1, "die") table.insert(private.deadPlayerList, entity) end end EventSystem.Dispatch(EventID.UI_SceneQuiz_ShowPunishMsg, punishEffectConfig.EffectDialogueData) private.failHandler = TimerUtil.Interval(private.DelayProcessFailure, INTERVAL_FAIL, 1) end function private.DelayProcessFailure() private.failHandler = nil if private.deadPlayerList and #private.deadPlayerList > 0 then for i, entity in ipairs(private.deadPlayerList) do if entity then NotSyncBattleSetter.SetNextState(LuaConst.StateType.Idle, entity) if BattleDataGetter.IsCurEntity(entity) and private.isLastQuizFail == false then UTL.MessageBox.ShowOnlyOkNoCloseBox("", Const_IDS.IDS_SceneQuiz_SenceHint_6) end end end private.deadPlayerList = nil end end function private.CheckAnswerIfRight(index) local info = MDL.SceneQuiz.GetCurStageQuizInfo() if info then local quizData = DataSheetManager.SceneQuizQuestionBank:GetDataByID(info.quizId) local option = AnswerOptionIndex[info.answer[index]] return string.lower(quizData.RightAnswerOrder) == option end return false end --决赛结束处理 function private.OnQuizFinish() private.watchEmptyEntity = nil if private.failHandler then TimerUtil.Remove(private.failHandler) private.failHandler = nil end CTL.WatchBattle.ShutBullet() private.ClearSceneQuizEffects() EventSystem.Dispatch(EventID.UI_HomeMain_UpdateChangeRootUI, Const_UI_Lua.UIEnum.UIChannelChatGlobalChatDlg, false) EventSystem.Dispatch(EventID.UI_HomeMain_UpdateChangeRootUI, Const_UI_Lua.UIEnum.UISceneQuizBattleInfo, false) UIManager.CloseView(Const_UI_Lua.UIEnum.UISceneQuizWatch) --请求排行榜,获取胜利者 MDL.SceneQuiz.SceneQuizGetAnswerRankReq(false) end function SceneQuiz_Controller.ProcessQuizResult(activityId) if UIManager.IsViewOpened(Const_UI_Lua.UIEnum.UISceneQuizSummary) then return end --结算的时候关闭所有界面 UIManager.CloseAllBase() UIManager.OpenView(Const_UI_Lua.UIEnum.UISceneQuizSummary, {activityId = activityId}) BattleDataGetter.ShowVictoryPose() MDL.SceneQuiz.ResetSceneData() end function SceneQuiz_Controller.ClearWatchEmptyEntity() private.watchEmptyEntity = nil end return SceneQuiz_Controller