miduo_client/Assets/ManagedResources/~Lua/Modules/Formation/FormationPanel.lua

559 lines
23 KiB
Lua

require("Base/BasePanel")
FormationPanel = Inherit(BasePanel)
local this = FormationPanel
this.curFormationIndex = 1
this.formationPower = 0
local pokemonInfoList = {}
local mopUpDeleNum = 0
local heroListGo = {}
local yiyaoListGo = {}
--副本剩余次数
local leftTime = 0
local itemId = 0
local effectList = {}
local oldPowerNum = 0
this.demonlive2dInfo = {
[1] = { Name = "live2d_s_jieling_dlg_3010",
Scale = Vector3.New(0.3, 0.3, 1),
Position = Vector2.New(0, -128), },
[2] = { Name = "live2d_s_jieling_zlz_3001",
Scale = Vector3.New(0.3, 0.3, 1),
Position = Vector2.New(0, -128), },
[3] = { Name = "live2d_s_jieling_hg_3002",
Scale = Vector3.New(0.3, 0.3, 1),
Position = Vector2.New(0, -128), },
[4] = { Name = "live2d_s_jieling_jhj_3003",
Scale = Vector3.New(0.35, 0.35, 1),
Position = Vector2.New(0, -128), },
[5] = { Name = "live2d_s_jieling_hs_3006",
Scale = Vector3.New(0.25, 0.25, 1),
Position = Vector2.New(49, -128), },
[6] = { Name = "live2d_s_jieling_lms_3009",
Scale = Vector3.New(0.35, 0.35, 1),
Position = Vector2.New(0, -128), },
[7] = { Name = "live2d_s_jieling_sl_3005",
Scale = Vector3.New(0.45, 0.45, 1),
Position = Vector2.New(0, -128), },
[8] = { Name = "live2d_s_jieling_md_3007",
Scale = Vector3.New(0.35, 0.35, 1),
Position = Vector2.New(0, -128), },
[9] = { Name = "live2d_s_jieling_fl_3008",
Scale = Vector3.New(0.4, 0.4, 1),
Position = Vector2.New(0, -128), },
[10] = { Name = "live2d_s_jieling_tl_3004",
Scale = Vector3.New(0.25, 0.25, 1),
Position = Vector2.New(0, -128), },
}
-- 各个类型编队系统逻辑列表
this.PanelOptionView = {
[FORMATION_TYPE.CARBON] = "Modules/Formation/View/CarbonFormation",
[FORMATION_TYPE.STORY] = "Modules/Formation/View/StoryFormation",
[FORMATION_TYPE.MAIN] = "Modules/Formation/View/MainFormation",
[FORMATION_TYPE.ARENA_DEFEND] = "Modules/Formation/View/ArenaDefendFormation",
[FORMATION_TYPE.ARENA_ATTACK] = "Modules/Formation/View/ArenaAttackFormation",
[FORMATION_TYPE.ARENA_TOP_MATCH] = "Modules/Formation/View/ArenaTopMatchFormation",
[FORMATION_TYPE.ADVENTURE] = "Modules/Formation/View/AdventureFormation",
[FORMATION_TYPE.ADVENTURE_BOSS] = "Modules/Formation/View/AdventureBossFormation",
[FORMATION_TYPE.ELITE_MONSTER] = "Modules/Formation/View/EliteMonsterFormation",
[FORMATION_TYPE.GUILD_DEFEND] = "Modules/Formation/View/GuildFightDefendFormation",
[FORMATION_TYPE.GUILD_ATTACK] = "Modules/Formation/View/GuildFightAttackFormation",
[FORMATION_TYPE.GUILD_BOSS] = "Modules/Formation/View/GuildBossFormation",
[FORMATION_TYPE.MONSTER_CAMP] = "Modules/Formation/View/MonsterCampFormation",
[FORMATION_TYPE.BLOODY_BATTLE] = "Modules/Formation/View/FormFightFormation",
[FORMATION_TYPE.PLAY] = "Modules/Formation/View/PlayWithSBFormation",
[FORMATION_TYPE.EXPEDITION] = "Modules/Formation/View/ExpeditionFormation",
}
local orginLayer
local orginLayer1
local orginLayer2
local list = {}
--初始化组件(用于子类重写)
function this:InitComponent()
this.spLoader = SpriteLoader.New()
orginLayer = 0
orginLayer1 = 0
orginLayer2 = 0
self.bg = Util.GetGameObject(self.gameObject, "bg")
this.BtnBack = Util.GetGameObject(self.transform, "btnBack")
this.elementHelpBtn=Util.GetGameObject(self.gameObject,"elementHelpBtn")
this.FormationName = Util.GetGameObject(self.transform, "formation/Text"):GetComponent("Text")
this.FormationNameEditBtn = Util.GetGameObject(self.transform, "formation/edit")
this.FormationNameLeftArrowBtn = Util.GetGameObject(self.transform, "formation/leftArrow")
this.FormationNameRightArrowBtn = Util.GetGameObject(self.transform, "formation/rightArrow")
this.powerNum = Util.GetGameObject(self.transform, "bottom/powerBtn/value"):GetComponent("Text")
screenAdapte(self.bg)
local scale = (Screen.width / Screen.height / 1080 * 1920 + 1) / 2
for i = 1, 5 do
heroListGo[i] = SubUIManager.Open(SubUIConfig.RoleItemView, Util.GetGameObject(self.transform, "roleGrid/card" .. i).transform)
if scale < 1 then
Util.SetParticleScale(Util.GetGameObject(self.transform, "roleGrid/card" .. i .."/effect"), scale)
end
end
for i = 1, 5 do
Util.AddParticleSortLayer(Util.GetGameObject(self.transform, "roleGrid/card" .. i).gameObject, self.sortingOrder - orginLayer2)
end
orginLayer2 = self.sortingOrder
orginLayer = self.sortingOrder
this.ElementalResonanceView = SubUIManager.Open(SubUIConfig.ElementalResonanceView, self.gameObject.transform)
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, { showType = UpViewOpenType.ShowLeft })
self.effect = Util.GetGameObject(self.gameObject, "effect")
screenAdapte(self.effect)
for i = 1, 3 do
yiyaoListGo[i] = {go = Util.GetGameObject(this.transform, "yiyao/" .. i)}
end
--副本扫荡
this.mopUpGo = Util.GetGameObject(self.transform, "root/showMopUp")
this.btnMpoUpBack = Util.GetGameObject(self.transform, "showMopUp/bg/btnBack")
this.Slider = Util.GetGameObject(self.transform, "showMopUp/bg/Slider")
this.numText = Util.GetGameObject(self.transform, "showMopUp/bg/Slider/numText"):GetComponent("Text")
this.btnMpoUpSure = Util.GetGameObject(self.transform, "showMopUp/bg/btnSure")
this.buyGoNumTex = Util.GetGameObject(self.transform, "showMopUp/bg/buyGo/numText"):GetComponent("Text")
-- 购买次数
this.btnBuyCount = Util.GetGameObject(self.transform, "showMopUp/bg/buyGo/addBtn/GameObject")
-- 底部panel
this.bottom = Util.GetGameObject(self.gameObject, "bottom")
-- 获取按钮
this.btn_1 = Util.GetGameObject(self.gameObject, "bottom/btnbox/btn_1")
this.btn_1_lab = Util.GetGameObject(self.gameObject, "bottom/btnbox/btn_1/btnLab"):GetComponent("Text")
this.btn_2 = Util.GetGameObject(self.gameObject, "bottom/btnbox/btn_2")
this.btn_2_lab = Util.GetGameObject(self.gameObject, "bottom/btnbox/btn_2/btnLab"):GetComponent("Text")
-- tip
this.mobTip = Util.GetGameObject(self.gameObject, "bottom/mobtip")
this.costTip = Util.GetGameObject(self.gameObject, "bottom/costtip")
this.failText = Util.GetGameObject(self.gameObject, "bottom/costtip/fail")
-- 精英副本扫荡提示
this.eliteTip = Util.GetGameObject(self.gameObject, "bottom/eliTip")
this.eliteNumNeed = Util.GetGameObject(this.eliteTip, "condition"):GetComponent("Text")
-- 跳过战斗
this.passBattle0 = Util.GetGameObject(self.transform, "bottom/passBattle0")
this.passBattle1 = Util.GetGameObject(self.transform, "bottom/passBattle1")
-- 上阵等级提示
this.formTip = Util.GetGameObject(self.transform, "formTip")
this.mopUpGo.transform:SetParent(self.gameObject.transform)
this.mopUpGo:SetActive(false)
end
--绑定事件(用于子类重写)
function this:BindEvent()
-- 逻辑调用
Util.AddClick(this.btn_1, function()
if this.opView and this.opView.On_Btn1_Click then
this.opView.On_Btn1_Click(this.curFormationIndex)
end
end)
Util.AddToggle(this.passBattle0,function (isOn)
if this.opView and this.opView.On_PassBattle0_Click then
this.opView.On_PassBattle0_Click(isOn)
end
end)
Util.AddClick(this.btn_2, function()
if this.opView and this.opView.On_Btn2_Click then
this.opView.On_Btn2_Click(this.curFormationIndex)
end
end)
Util.AddClick(this.BtnBack, function()
if this.opView and this.opView.OnCloseBtnClick then
this.opView.OnCloseBtnClick()
else
this:ClosePanel()
end
end)
--元素克制帮助按钮
Util.AddClick(this.elementHelpBtn,function()
UIManager.OpenPanel(UIName.ElementRestraintPopup)
end)
-- 购买副本次数
Util.AddClick(this.btnBuyCount, function()
--UIManager.OpenPanel(UIName.CarbonBuyCountPopup, 1)
end)
-- 扫荡
Util.AddClick(this.btnMpoUpSure, function()
if CarbonManager.difficulty == 1 then
itemId = 27
elseif CarbonManager.difficulty == 3 then
itemId = 28
end
if mopUpDeleNum > 0 then
this.mopUpGo:SetActive(false)
NetManager.MapSweepRequest(MapManager.curMapId, mopUpDeleNum, function(msg)
Log("向服務器請求掃蕩的次數2 mopUpDeleNum ============= " .. mopUpDeleNum)
local callBack = function()
ShopManager.RequestAllShopData(function()
local curTimeStamp = GetTimeStamp()
local shopData = ShopManager.GetShopDataByType(SHOP_TYPE.ROAM_SHOP)
Log("遇到云游商人,当前时间戳为:" .. curTimeStamp .. " ,商店开启时间为:" .. (shopData.startTime / 1000))
end)
end
-- 扫荡遇到云游商人,则刷新数据
local func
-- 精英副本扫荡
if CarbonManager.difficulty == 3 then
if msg.cloudStore > 0 then
func = callBack
else
Log("春残花渐落,坐叹红颜老!")
end
-- 判断扫荡是否遇到精英怪
if msg.suddenlyBossInfo.suddBossId ~= 0 then
if not EliteMonsterManager.HasEliteMonster() then
-- 保存精英怪数据
local suddBossId = msg.suddenlyBossInfo.suddBossId
local endTime = msg.suddenlyBossInfo.endTime
local findMapId = msg.suddenlyBossInfo.findMapId
EliteMonsterManager.SetEliteData(suddBossId, endTime, findMapId)
end
end
end
UIManager.OpenPanel(UIName.CarbonMopUpEndPanel, msg.drop, msg.cloudStore, msg.suddenlyBossInfo, func)
end)
else
PopupTipPanel.ShowTip(Language[10687])
end
end)
Util.AddClick(this.btnMpoUpBack, function()
this.mopUpGo:SetActive(false)
end)
Util.AddSlider(this.Slider, function(go, value)
this.ShowMopUpInfoData(value)
end)
Util.AddClick(this.FormationNameLeftArrowBtn, function()
this.curFormationIndex = this.curFormationIndex - 1
if this.curFormationIndex < 1 then
this.curFormationIndex = 3
end
FormationManager.curFormationIndex = this.curFormationIndex
this.RefreshFormation()
end)
Util.AddClick(this.FormationNameRightArrowBtn, function()
this.curFormationIndex = this.curFormationIndex + 1
if this.curFormationIndex > 3 then
this.curFormationIndex = 1
end
FormationManager.curFormationIndex = this.curFormationIndex
this.RefreshFormation()
end)
for i = 1, 3 do
Util.AddClick(yiyaoListGo[i].go, function()
--local pokemonList = {}
--local curFormation = FormationManager.GetFormationByID(this.curFormationIndex)
--for i = 1, #curFormation.teamPokemonInfos do
-- table.insert(pokemonList,{curFormation.teamPokemonInfos[i].pokemonId,curFormation.teamPokemonInfos[i].position})
--end
UIManager.OpenPanel(UIName.DiffmonsterEditPopup, this, this.curFormationIndex,i)
end)
end
end
--添加事件监听(用于子类重写)
function this:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Formation.OnFormationChange, this.RefreshFormation)
Game.GlobalEvent:AddEvent(GameEvent.UI.OnBtnClicked, this.ShowStartMopUpInfoData)
Game.GlobalEvent:AddEvent(GameEvent.Carbon.CarbonCountChange, this.ShowStartMopUpInfoData)
end
--移除事件监听(用于子类重写)
function this:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Formation.OnFormationChange, this.RefreshFormation)
Game.GlobalEvent:RemoveEvent(GameEvent.UI.OnBtnClicked, this.ShowStartMopUpInfoData)
Game.GlobalEvent:RemoveEvent(GameEvent.Carbon.CarbonCountChange, this.ShowStartMopUpInfoData)
end
function this:OnSortingOrderChange()
-- 设置特效
Util.AddParticleSortLayer(self.effect, self.sortingOrder - orginLayer)
for i = 1, 5 do
Util.AddParticleSortLayer(Util.GetGameObject(self.transform, "roleGrid/card" .. i).gameObject, self.sortingOrder - orginLayer)
end
orginLayer = self.sortingOrder
end
--界面打开时调用(用于子类重写)
function this:OnOpen(_panelType, ...)
if CarbonManager.difficulty == 1 then
itemId = 27
elseif CarbonManager.difficulty == 3 then
itemId = 28
end
-- 初始化显示
this.passBattle0:SetActive(false)
this.passBattle1:SetActive(false)
this.btn_1:SetActive(false)
this.btn_1:GetComponent("Button").enabled = true
Util.SetColor(this.btn_1, Color.New(1, 1, 1, 1))
this.btn_2:SetActive(false)
this.mobTip:SetActive(false)
this.costTip:SetActive(false)
this.eliteTip:SetActive(false)
this.failText:SetActive(false)
this.formTip:SetActive(false)
-- 初始化逻辑
--Log("_panelType ".._panelType)
this.opView = require(this.PanelOptionView[_panelType])
this.opView.Init(this, ...)
this.curFormationIndex = this.opView.GetFormationIndex()
FormationManager.currentFormationIndex = this.opView.GetFormationIndex()
--- 判断是否需要切换编队
this.FormationNameLeftArrowBtn:SetActive(false)--this.opView.IsNeedChangeFormation)
this.FormationNameRightArrowBtn:SetActive(false)--this.opView.IsNeedChangeFormation)
this.FormationNameEditBtn:SetActive(false)--this.opView.IsNeedChangeFormation)
-- 编队刷新
--this.RefreshFormation(true)
this.ShowStartMopUpInfoData()
end
function this:OnShow()
if CarbonManager.difficulty == 1 then
itemId = 27
elseif CarbonManager.difficulty == 3 then
itemId = 28
end
this.ElementalResonanceView:OnOpen({ sortOrder = self.sortingOrder})
this:SetDrawLevel()
this.RefreshFormation(true)
end
-- 设置扫荡显示的层级
function this:SetDrawLevel()
local go = this.ElementalResonanceView.gameObject
local canvas = go:GetComponent("Canvas")
canvas.overrideSorting = false
end
-- 刷新编队显示
function this.RefreshFormation(isCome)
EndLessMapManager.RrefreshFormation()
ExpeditionManager.ExpeditionRrefreshFormation()
local curFormation = FormationManager.GetFormationByID(this.curFormationIndex)
this.ElementalResonanceView:SetElementalPropertyTextColor()
this.ElementalResonanceView:GetElementalType(curFormation.teamHeroInfos,1)
this.ElementalResonanceView:SetPosition(1)
this.FormationName.text = curFormation.teamName
this.formationPower = 0
--actionNum=0
for i = 1, 5 do
if (effectList[i] ~= nil) then
local go = Util.GetGameObject(this.transform, "roleGrid/card" .. i)
Util.GetGameObject(go, "effect"):SetActive(false)
end
end
-- 妖灵师等级限制
local limitLevel = 0
limitLevel = CarbonManager.difficulty == 4 and EndLessMapManager.limiteLevel or 0
Log("this.curFormationIndex "..this.curFormationIndex)
if this.curFormationIndex == FormationTypeDef.EXPEDITION then
limitLevel = 20
end
local limitNum = 1 -- 数量限制
--limitNum = this.curFormationIndex == FormationManager.FORMATION_GUILD_FIGHT_DEFEND and 5 or 1
local allHeroTeamAddProVal = HeroManager.GetAllHeroTeamAddProVal(curFormation.teamHeroInfos)
for i = 1, 5 do
local go = Util.GetGameObject(this.transform, "roleGrid/card" .. i)
-- 当前位置是否可上阵
this.InitArmPos(i, go)
-- 显示选择的英雄
local heroData
if curFormation.teamHeroInfos[i] then
heroData = HeroManager.GetSingleHeroData(curFormation.teamHeroInfos[i].heroId)
if not heroData then
Log("heroData is not exist! error Did:" .. curFormation.teamHeroInfos[i].heroId)
return
end
-- ==== 上阵显示特效 =====
if (isCome ~= true) then
effectList[i]:SetActive(true)
end
--effectList[i]:SetActive(false)
-- ========================== 生成妖灵师并显示出来 =======================
local heroId = curFormation.teamHeroInfos[i].heroId
if this.curFormationIndex == FormationTypeDef.EXPEDITION then-- 远征加血量
heroListGo[i]:OnOpen(heroId, true, true,ExpeditionManager.heroInfo[heroId].remainHp)
-- elseif this.curFormationIndex == FormationTypeDef.FORMATION_ENDLESS_MAP then
-- heroListGo[i]:OnOpen(heroId, true, true,MapManager)
else
heroListGo[i]:OnOpen(heroId, true, false)
end
heroListGo[i].gameObject:SetActive(true)
this.CalculateAllHeroPower(heroData,allHeroTeamAddProVal)
-- ====================================================================
else
heroListGo[i].gameObject:SetActive(false)
--Util.GetGameObject(go.transform, "info"):SetActive(false)
end
heroListGo[i]:AddClick(function()
-- UIManager.OpenPanel(UIName.FormationEditPopup, this.curFormationIndex, limitLevel, limitNum)
end)
Util.AddOnceClick(go, function()
-- UIManager.OpenPanel(UIName.FormationEditPopup, this.curFormationIndex, limitLevel, limitNum)
end)
Util.AddLongPressClick(Util.GetGameObject(heroListGo[i].transform, "frame"), function()
if curFormation.teamHeroInfos[i] then
UIManager.OpenPanel(UIName.RoleInfoPopup, heroData)
end
end, 0.5)
end
if this.curFormationIndex == FormationTypeDef.EXPEDITION then-- 远征加圣物战力
this.formationPower = math.floor(this.formationPower * (1 + ExpeditionManager.CalculateallHolyWarPower()/10000))
Log("所有圣物战力万分比 "..ExpeditionManager.CalculateallHolyWarPower())
end
local newPowerNum = this.formationPower
if oldPowerNum ~= newPowerNum and oldPowerNum ~= 0 then
UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2,{oldValue = oldPowerNum,newValue = newPowerNum})
end
oldPowerNum = this.formationPower
this.powerNum.text = this.formationPower
--this.actionNum.text=actionNum
local pokemonList = {}
for i = 1, #curFormation.teamPokemonInfos do
table.insert(pokemonList,{curFormation.teamPokemonInfos[i].pokemonId,curFormation.teamPokemonInfos[i].position})
end
this.UpdataYiYaoData(pokemonList)
end
-- 设置上阵位置,
function this.InitArmPos(index, go)
local armNum = ActTimeCtrlManager.MaxArmyNum()
local canOn = index <= armNum
local mask = Util.GetGameObject(go, "Mask")
local tip = Util.GetGameObject(go, "tip")
local effect = Util.GetGameObject(go, "effect")
--screenAdapte(effect)
effectList[index] = effect
Util.AddParticleSortLayer(effect, this.sortingOrder - orginLayer1)
--orginLayer1 = this.sortingOrder
local limitStr = Util.GetGameObject(mask, "lvLimit"):GetComponent("Text")
mask:SetActive(not canOn)
tip:SetActive(canOn)
go:GetComponent("Button").enabled = canOn
limitStr.text = ActTimeCtrlManager.UnLockCondition(index)
end
-- 刷新异妖显示
function this.UpdataYiYaoData(_pokemonInfoList)
pokemonInfoList = _pokemonInfoList
local goList={}
local tipList={}
local maxNum = ActTimeCtrlManager.MaxDemonNum()
for i = 1, 3 do
goList[i]= Util.GetGameObject(yiyaoListGo[i].go, "icon")
tipList[i] = Util.GetGameObject(yiyaoListGo[i].go, "tip")
this.InitDemonNum(i, yiyaoListGo[i].go)
-- 能选择的异妖数量
if maxNum > 0 then
--动态加载立绘
if yiyaoListGo[i].live then
poolManager:UnLoadLive(yiyaoListGo[i].name, yiyaoListGo[i].live)
yiyaoListGo[i].live = nil
end
end
end
for i = 1, 3 do
goList[i]:SetActive(false)
tipList[i]:SetActive(true)
end
for i = 1, #_pokemonInfoList do
if #_pokemonInfoList >= i and i <= maxNum then
--Log("==YSP== 动态加载的立绘".." 立绘".._pokemonInfoList[i][1].." 位置".._pokemonInfoList[i][2])
local pokemon = _pokemonInfoList[i][1]
yiyaoListGo[_pokemonInfoList[i][2]].name = this.demonlive2dInfo[pokemon].Name
yiyaoListGo[_pokemonInfoList[i][2]].live = poolManager:LoadLive(this.demonlive2dInfo[pokemon].Name, goList[_pokemonInfoList[i][2]].transform,
this.demonlive2dInfo[pokemon].Scale, Vector3.zero)
yiyaoListGo[_pokemonInfoList[i][2]].live:GetComponent("RectTransform").anchoredPosition = this.demonlive2dInfo[pokemon].Position
goList[_pokemonInfoList[i][2]]:SetActive(true)
tipList[_pokemonInfoList[i][2]]:SetActive(false)
end
end
end
--设置异妖上阵显示
function this.InitDemonNum(index, go)
local maxNum = ActTimeCtrlManager.MaxDemonNum()
local canOn = false
if maxNum == 0 then
canOn = false
else
canOn = index <= maxNum
end
local mask = Util.GetGameObject(go, "Mask")
local tip = Util.GetGameObject(mask, "vipLimit"):GetComponent("Text")
mask:SetActive(not canOn)
tip.text = ActTimeCtrlManager.DemonNeedVipLv(index,1)
go:GetComponent("Image").enabled = canOn
go:GetComponent("Button").enabled = canOn
end
local allEquipAddProVal
function this.CalculateAllHeroPower(curHeroData,allHeroTeamAddProVal)
allEquipAddProVal = HeroManager.CalculateHeroAllProValList(1, curHeroData.dynamicId, false,nil,nil,true,allHeroTeamAddProVal)
this.formationPower = this.formationPower + allEquipAddProVal[HeroProType.WarPower]
-- actionNum = actionNum + curHeroData.actionPower
end
function this.ShowStartMopUpInfoData()
local leftTimes = BagManager.GetItemCountById(itemId)
this.buyGoNumTex.text = leftTimes
this.Slider:GetComponent("Slider").maxValue = leftTimes
this.Slider:GetComponent("Slider").minValue = 1
if leftTimes > 0 then
mopUpDeleNum = 1 -- 默认从1开始
--this.Slider:GetComponent("Slider").minValue = 0
else
mopUpDeleNum = 0
end
this.Slider:GetComponent("Slider").value = mopUpDeleNum
this.numText.text = mopUpDeleNum
end
function this.ShowMopUpInfoData(value)
this.numText.text = value
mopUpDeleNum = value
end
--界面关闭时调用(用于子类重写)
function this:OnClose()
oldPowerNum = 0
for i = 1, 3 do
if yiyaoListGo[i].live then
poolManager:UnLoadLive(yiyaoListGo[i].name, yiyaoListGo[i].live)
yiyaoListGo[i].live = nil
end
end
end
--界面销毁时调用(用于子类重写)
function this:OnDestroy()
this.spLoader:Destroy()
SubUIManager.Close(this.UpView)
SubUIManager.Close(this.ElementalResonanceView)
end
return FormationPanel