local RoleConfig = ConfigManager.GetConfig(ConfigName.RoleConfig) local HeroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig) local SkillLogicConfig = ConfigManager.GetConfig(ConfigName.SkillLogicConfig) local healEffect = "c_xy_0012_skeff_tapsk_healeff" local rageEffect = "s_jieling_hs_3006_skeff_casting_buff_nuqi" local reliveEffect1 = "fx_chongsheng_lianhua" local reliveEffect2 = "fx_chongsheng_lizhi" PlayerView = BattleUnit.New() function PlayerView.New(go, role, position, root) local o = BattleUnit.New(go, role, position, root) setmetatable(o, PlayerView) PlayerView.__index = PlayerView o:ctor(go, role, position, root) return o end function PlayerView:onCreate(go, role, position, root) self.RootPanel = root self.GameObject = go self.role = role self.camp = role.camp self.spLoader = SpriteLoader.New() self.castingEfectNode = self.RootPanel.mySkillCast self.castingNameNode = Util.GetGameObject(self.castingEfectNode, "TongYong_Casting_Xia/DongHua/MingZi") self.hpSlider = Util.GetGameObject(go, "hpProgress/hp"):GetComponent("Image") self.hpPassSlider = Util.GetGameObject(go, "hpProgress/hpPass"):GetComponent("Image") local nameParent = Util.GetGameObject(go, "Name") self.nameText = Util.GetGameObject(go, "Text"):GetComponent("Text") self.level = Util.GetGameObject(go, "lv/Text"):GetComponent("Text") self.elementImg = Util.GetGameObject(go, "Pro/Image"):GetComponent("Image") self.bg1 = Util.GetGameObject(go, "Bg1"):GetComponent("Image") self.bg2 = Util.GetGameObject(go, "Bg2"):GetComponent("Image") self.hpCache = self.role:GetRoleData(RoleDataName.Hp) / self.role:GetRoleData(RoleDataName.MaxHp) self.hpSlider.fillAmount = self.hpCache self.hpPassSlider.fillAmount = self.hpCache local roleId=role.roleData.roleId local live=HeroConfig[role.roleData.roleId].Live --如果英雄装备皮肤 if role.roleData.skinId and role.roleData.skinId>0 then roleId=role.roleData.skinId local skin=ConfigManager.GetConfigDataByKey(ConfigName.HeroSkin,"Type",roleId) if skin then live=skin.Live end end if not role.roleData.skinId then self.skinId=0 else self.skinId=roleId end self.livePath = GetResourcePath(live) self.play_liveScale = RoleConfig[roleId].play_liveScale self.enemy_liveScale = RoleConfig[roleId].enemy_liveScale self.offset = RoleConfig[roleId].offset self.outOffset = RoleConfig[roleId].enemy_offset self.spAtkTime = RoleConfig[roleId].CastingSkills/1000 self.atkSoundTime = RoleConfig[roleId].CastingAudio/1000 self.attackSound = RoleConfig[roleId].sond self.readingName = GetLanguageStrById(HeroConfig[role.roleData.roleId].ReadingName) self.nameText.text = self.readingName SetTextVerTial(self.nameText,Vector3.New(33.6,-7.4,0),"MiddleLeft",nil,6) self.level.text = role:GetRoleData(RoleDataName.Level) self.elementImg.sprite = self.spLoader:LoadSprite(GetProStrImageByProNum(role.roleData.element)) self.bg1.sprite = self.spLoader:LoadSprite(GetBattleHeroCardStarBg[role.roleData.star]) self.bg2.sprite = self.spLoader:LoadSprite(GetHeroCardStarFg[role.roleData.star]) local starGrid = Util.GetGameObject(go, "StarGrid") SetCardStars(starGrid, role.roleData.star or 5) local zs = Util.GetGameObject(go, "zs") local zsName = GetHeroCardStarZs[role.roleData.star] if zsName == "" then zs:SetActive(false) else zs:SetActive(true) zs:GetComponent("Image").sprite = self.spLoader:LoadSprite(zsName) end -- 卡牌立绘显示 self.liveRender = Util.GetGameObject(go, "Mask/icon"):GetComponent("RawImage") self.liveRender.texture, self.RoleLiveGO , _, self.RoleLiveParnet = CardRendererManager.GetSpineTexture(role.position, self.livePath, Vector3.one * self.play_liveScale, Vector3.New(self.offset[1], self.offset[2], 0), false) --self.spLoader:LoadSprite(heroData.painting) self.liveRender.material = resMgr:LoadAsset("UI_AlphaMask "..position) self.liveRender.transform:SetParent(Util.GetGameObject(go, "Mask").transform) self.liveRender.transform.localScale = Vector3.one --* self.play_liveScale * 2 self.liveRender.transform.anchoredPosition = Vector3.zero--Vector2.New(self.offset[1], self.offset[2]) self.liveRender.gameObject:SetActive(true) self.liveRender.material:SetInt("_IsMask", 1) self.RoleLiveGOGraphic = self.RoleLiveGO:GetComponent("SkeletonGraphic") self.RoleLiveGOTran = self.RoleLiveGO:GetComponent("RectTransform") self.RoleLiveGOGraphic.AnimationState:SetAnimation(0, "idle", true) self.RoleLiveGOTran.sizeDelta = Vector2.New(1000, 1000) -- casting技能立绘 self.RoleLiveGO2 = poolManager:LoadLive(self.livePath, go.transform.parent, Vector3.one, Vector3.zero) self.RoleLiveGO2.transform:SetParent(self.RootPanel.mySkillCastRoot.transform) self.RoleLiveGO2.transform.localScale = Vector3.one * self.enemy_liveScale -- * 0.75--* 1.5 self.RoleLiveGO2.transform.anchoredPosition = Vector2.New(self.outOffset[1], self.outOffset[2] - 300) self.RoleLiveGO2:SetActive(false) self.RoleLiveGOGraphic2 = self.RoleLiveGO2:GetComponent("SkeletonGraphic") self.RoleLiveGOTran2 = self.RoleLiveGO2:GetComponent("RectTransform") self.RoleLiveGOGraphic2.AnimationState:SetAnimation(0, "idle", true) self.RoleLiveGOTran2.sizeDelta = Vector2.New(1000, 1000) -- self.RoleIconGO = Util.GetGameObject(go, "func") self.RoleIconGO:SetActive(true) Util.SetGray(self.RoleIconGO, false) self.RoleIconTran = self.RoleIconGO:GetComponent("RectTransform") self.RoleIconTran.anchoredPosition = Vector2.zero -- 死亡动画 self.deadIconGO = Util.GetGameObject(self.RoleIconGO, "dead") self.deadIconGO:SetActive(false) self.effect_dead = Util.GetGameObject(self.deadIconGO, "effect") -- 怒气显示 self.rageCache = nil self.rageSlider = Util.GetGameObject(go, "rageProgress/rage"):GetComponent("Image") self.rageText = Util.GetGameObject(go, "rageProgress/Text"):GetComponent("Text") self.effect_rage = Util.GetGameObject(go, "rageProgress/effect") self.effect_rage:SetActive(self.role.Rage >= 4) self.rageSlider.fillAmount = self.role.Rage / 4 self.rageText.gameObject:SetActive(false) self.rageText.text = "" -- 伤害文字显示 self.LastBuffFloatingTime = Time.realtimeSinceStartup self.BuffFloatingCount = 0 -- 层级设置 local battleSorting = BattleManager.GetBattleSorting() self:ChangeCardSorting(battleSorting + position) -- 飘字管理 self.Floater = FloatNode.New(self, self.RootPanel, self.GameObject) -- buff管理 self.BuffCtrl = BuffCtrl.New(self, Util.GetGameObject(go, "buff")) -- 创建技能播放器 self.SkillCaster = SkillCaster.New(self, self.spAtkTime, self.atkSoundTime, self.attackSound, self.castingEfectNode, self.castingNameNode) -- 事件监听 role.Event:AddEvent(BattleEventName.BeHitMiss, self.OnBeHitMiss, self) role.Event:AddEvent(BattleEventName.RoleBeDamaged, self.OnDamaged, self) role.Event:AddEvent(BattleEventName.RoleBeTreated, self.OnTreated, self) role.Event:AddEvent(BattleEventName.RoleBeHealed, self.OnHealed, self) role.Event:AddEvent(BattleEventName.RoleDead, self.OnDead, self) role.Event:AddEvent(BattleEventName.RoleRealDead, self.OnRealDead, self) role.Event:AddEvent(BattleEventName.RoleRageChange, self.RoleRageChange, self) role.Event:AddEvent(BattleEventName.RoleRelive, self.onRoleRelive, self) role.Event:AddEvent(BattleEventName.AOE, self.OnAOE, self) role.Event:AddEvent(BattleEventName.BeSeckill, self.onBeSecKill, self) role.Event:AddEvent(BattleEventName.ShildTrigger, self.OnShieldTrigger, self) role.Event:AddEvent(BattleEventName.ShowHintText,self.OnShowHintText,self) role.Event:AddEvent(BattleEventName.RoleBeExile,self.OnRoleExile,self) role.Event:AddEvent(BattleEventName.RoleExileEnd,self.OnRoleExileEnd,self) if IsOpenBattleDebug then local URoleProperty = go:GetComponent(typeof(RoleProperty)) if not URoleProperty then URoleProperty = go:AddComponent(typeof(RoleProperty)) end self.URoleProperty = URoleProperty self.URoleProperty.uid = role.uid role.data:Foreach(function (name, value) self.URoleProperty:AddProperty(name, value) end) end end -- function PlayerView:OnSortingOrderChange(battleSorting) self:ChangeCardSorting(battleSorting + self.role.position) end -- 改变卡牌层级 function PlayerView:ChangeCardSorting(sortingOrder) if not self.oSortingOrder then self.oSortingOrder = BattleManager.GetBattleSorting() end self.GameObject:GetComponent("Canvas").sortingOrder = sortingOrder self.effect_rage:GetComponent("Canvas").sortingOrder = sortingOrder self.effect_dead:GetComponent("Canvas").sortingOrder = sortingOrder Util.AddParticleSortLayer(self.effect_rage, sortingOrder - self.oSortingOrder) Util.AddParticleSortLayer(self.effect_dead, sortingOrder - self.oSortingOrder) self.oSortingOrder = sortingOrder end function PlayerView:Update() if self.role:IsRealDead() then return end local hp = self.role:GetRoleData(RoleDataName.Hp) / self.role:GetRoleData(RoleDataName.MaxHp) if self.hpCache ~= hp then local f1 = self.hpCache local f2 = hp if f1 > f2 then if self.hpTween then self.hpTween:Kill() end self.hpSlider.fillAmount = hp self.hpTween = DoTween.To(DG.Tweening.Core.DOGetter_float( function () return f1 end), DG.Tweening.Core.DOSetter_float(function (progress) self.hpPassSlider.fillAmount = progress end), f2, 0.5):SetEase(Ease.Linear) else if self.hpPassTween then self.hpPassTween:Kill() end self.hpPassSlider.fillAmount = hp self.hpPassTween = DoTween.To(DG.Tweening.Core.DOGetter_float( function () return f1 end), DG.Tweening.Core.DOSetter_float(function (progress) self.hpSlider.fillAmount = progress end), f2, 0.5):SetEase(Ease.Linear) end self.hpCache = hp end local rage = self.role.Rage / 4 if self.rageCache ~= rage then -- 判断是否播放满怒动画 if (not self.rageCache or self.rageCache < 1) and rage >= 1 then local go = BattleManager.LoadAsset(rageEffect) go.transform:SetParent(self.GameObject.transform) go.transform.localScale = Vector3.one go.transform.localPosition = Vector3.zero go:SetActive(true) BattleManager.AddDelayRecycleRes(rageEffect, go, 3) end self.effect_rage:SetActive(rage >= 1) self.rageCache = rage self.rageSlider.fillAmount = self.rageCache self.rageText.gameObject:SetActive(self.rageCache >= 1) self.rageText.text = self.role.Rage -- TODO: 战斗引导相关调整 if rage == 1 then Game.GlobalEvent:DispatchEvent(GameEvent.Guide.GuideBattleCDDone, self) end end if self.BuffCtrl and self.BuffCtrl.Update then self.BuffCtrl:Update() end if IsOpenBattleDebug then self.role.data:Foreach(function (name, value) self.URoleProperty:SetValue(name, value) end) end end -- 缩放 function PlayerView:DoScale(scale, dur, func) if self.dsTween then self.dsTween:Kill() end self.dsTween = self.GameObject.transform.parent:DOScale(Vector3.one * scale, dur) :OnComplete(function () -- Log("DoScale = "..scale) if func then func() end end) end --角色被放逐 function PlayerView:OnRoleExile(role) local color = Color.New(1, 1, 1, 0.4) Util.SetColor(self.liveRender, color) end --角色放逐结束 function PlayerView:OnRoleExileEnd(role) local color = Color.New(1, 1, 1, 1) Util.SetColor(self.liveRender, color) end -- 设置高亮 function PlayerView:SetHighLight(isLight, eScale, dur, func) -- 设置变灰 if self.isDead then Util.SetGray(self.GameObject, true) Util.SetSpineGray(self.RoleLiveGOGraphic, true) Util.SetGray(self.deadIconGO, false) local color = Color.New(75, 75, 75, 255)/255 Util.SetColor(self.GameObject, color) Util.SetColor(self.RoleLiveGOGraphic, color) Util.SetColor(self.deadIconGO, Color.New(1, 1, 1, 1)) self:DoScale(0.8, dur, func) return end self:DoScale(eScale, dur, func) -- 颜色变灰 local sc = isLight and 0.3 or 1 local ec = isLight and 1 or 0.3 if self.hlTween3 then self.hlTween3:Kill() end self.hlTween3 = DoTween.To(DG.Tweening.Core.DOGetter_float( function () return sc end), DG.Tweening.Core.DOSetter_float(function (progress) local color = Color.New(progress, progress, progress, 1) Util.SetColor(self.GameObject, color) Util.SetColor(self.RoleLiveGOGraphic, color) end), ec, dur):SetEase(Ease.Linear) end -- 播放动画 function PlayerView:PlaySpineAnim(gog, time, name, isLoop) if isLoop then gog.AnimationState:SetAnimation(time, name, isLoop) else local _complete = nil _complete = function(state) gog.AnimationState.Complete = gog.AnimationState.Complete - _complete gog.AnimationState:SetAnimation(0, "idle", true) end gog.AnimationState:ClearTracks() -- 清除上一个动画的影响(修复概率攻击动画播放错误的问题) gog.AnimationState:SetAnimation(time, name, isLoop) gog.AnimationState.Complete = gog.AnimationState.Complete + _complete end end --单纯显示提示文字 function PlayerView:OnShowHintText(_ArtFontType) local config = BattleManager.GetArtFontConfig(_ArtFontType) if config then self.Floater:ImageBuffFloating(config) end end function PlayerView:OnSkillPlay() if not self.GameObject then return end local battleSorting = BattleManager.GetBattleSorting() self:ChangeCardSorting(battleSorting + 20) -- 立绘缩小 if self.rlgTween2 then self.rlgTween2:Kill() end self.rlgTween2 = self.RoleLiveParnet.transform:DOScale(Vector3.one * 0.85, 0.3):SetEase(Ease.OutSine) -- 立绘位置剧中 if self.rlgTween3 then self.rlgTween3:Kill() end self.rlgTween3 = self.RoleLiveParnet.transform:DOLocalMove(Vector3.New(0, 100, 0), 0.3, false):SetEase(Ease.OutSine) if self.liveRender then local mask2 = Util.GetGameObject(self.GameObject, "Mask2") if mask2 then self.liveRender.transform:SetParent(mask2.transform) end end local cardRenderMat = self.liveRender.material cardRenderMat:SetInt("_IsMask", 0) self:PlaySpineAnim(self.RoleLiveGOGraphic, 0, "attack", false) end function PlayerView:OnSkillEnd() if not self.GameObject then return end local battleSorting = BattleManager.GetBattleSorting() self:ChangeCardSorting(battleSorting + self.role.position) self.liveRender.transform:SetParent(Util.GetGameObject(self.GameObject, "Mask").transform) local cardRenderMat = self.liveRender.material cardRenderMat:SetInt("_IsMask", 1) -- 动画播放就停止 if self.rlgTween2 then self.rlgTween2:Kill() end if self.rlgTween3 then self.rlgTween3:Kill() end self.RoleLiveParnet.transform.localScale = Vector3.one --Vector2.New(self.offset[1], self.offset[2]) self.RoleLiveParnet.transform.localPosition = Vector3(0, 0, 0) self.liveRender.transform.anchoredPosition = Vector2.zero--Vector2.New(self.offset[1], self.offset[2]) end function PlayerView:OnSkillCastingStart() -- 提前进入下一阶段 self.RoleLiveGO2:SetActive(true) self:PlaySpineAnim(self.RoleLiveGOGraphic2, 0, "touch", false) end function PlayerView:OnSkillCastingEnd() self.RoleLiveGO2:SetActive(false) end -- 治疗 function PlayerView:OnTreated(castRole, realTreat, treat) self.Floater:ArtFloating(ArtFloatingType.Treat, ArtFloatingColor.Green, treat) local sortingOrder = self.GameObject:GetComponent("Canvas").sortingOrder + 21 local go = BattleManager.LoadAsset(healEffect, sortingOrder) go.transform:SetParent(self.GameObject.transform) go.transform.localScale = Vector3.one go.transform.localPosition = Vector3.zero--self.GameObject.transform.localPosition go:SetActive(true) BattleManager.AddDelayRecycleRes(healEffect, go, 3) end -- 盾效果触发 function PlayerView:OnShieldTrigger(shield,isImmuneAllReduceShield) if shield.shieldType == ShieldTypeName.AllReduce then if atkRole and not isImmuneAllReduceShield then self.Floater:ImageBuffFloating("z_zhandou_wudizi_zh") end else self.Floater:ImageBuffFloating("z_zhandou_jianshang_zh") end end -- 哈哈,没打着 function PlayerView:OnBeHitMiss(atkRole, skill) self.Floater:ImageBuffFloating("z_zhandou_weimingzhong_zh") end local DotTypeTip = { [0] = Language[10241], [1] = Language[10242], [2] = Language[10243], [3] = Language[10244], } -- function PlayerView:OnDamaged(atkRole, dmg, bCrit, finalDmg, damageType, dotType, skill) if skill and skill.continueTime > 0 and skill.attackCount > 1 then local space = skill.continueTime / skill.attackCount local count = skill.attackCount local d = math.floor(dmg/count) -- 如果平均伤害小于0 则 if d == 0 then d = dmg count = 1 end if BattleManager.IsBattleTestPanel() then LogYellow(string.format("目标阵营:%s, 位置:%s, 总伤害:%s, 伤害段数:%s,每段伤害:%s", self.camp, self.role.position, dmg, count, d)) end if count ~= 1 then -- 后续伤害延迟打出 self:LoopFunc(space, count - 1, function() self:OnceDamaged(atkRole, d, bCrit, finalDmg, damageType, dotType, skill) end) -- 立刻打出第一次伤害 local fd = dmg - d *(count - 1) self:OnceDamaged(atkRole, fd, bCrit, finalDmg, damageType, dotType, skill) else self:OnceDamaged(atkRole, dmg, bCrit, finalDmg, damageType, dotType, skill) end else if BattleManager.IsBattleTestPanel() then LogYellow(string.format("目标阵营:%s, 位置:%s, 总伤害:%s", self.camp, self.role.position, dmg)) end self:OnceDamaged(atkRole, dmg, bCrit, finalDmg, damageType, dotType, skill) end end -- function PlayerView:OnceDamaged(atkRole, dmg, bCrit, finalDmg, damageType, dotType, skill) --王振兴注释,为了解决英雄死亡多段伤害显示不完整 2020/8/17 --if self.isDead then return end if dotType then if dotType == DotType.Poison then self.Floater:ArtFloating(ArtFloatingType.PoisonDamage, ArtFloatingColor.Poison, dmg,TextFloatingColor.DarkGreen) elseif dotType == DotType.Burn then self.Floater:ArtFloating(ArtFloatingType.FireDamage, ArtFloatingColor.Fire, dmg) else self.Floater:TextBuffFloating(2, DotTypeTip[dotType]..dmg) end else if bCrit then -- 暴击红色并显示暴击 self.Floater:ArtFloating(ArtFloatingType.CritDamage, ArtFloatingColor.Red, dmg) else if atkRole.isTeam then -- 异妖紫色 self.Floater:ArtFloating(ArtFloatingType.Damage, ArtFloatingColor.Purple, dmg) else if skill and skill.type == BattleSkillType.Special then -- 技能黄色 self.Floater:ArtFloating(ArtFloatingType.Damage, ArtFloatingColor.Yellow, dmg) else -- 普攻白色 self.Floater:ArtFloating(ArtFloatingType.Damage, ArtFloatingColor.White, dmg) end end end end -- 卡面变红 DoTween.To(DG.Tweening.Core.DOGetter_float( function () return 1 end), DG.Tweening.Core.DOSetter_float(function (progress) local color = Color.New(1, progress, progress, 1) Util.SetColor(self.GameObject, color) Util.SetColor(self.RoleLiveGOGraphic, color) end), 0, 0.3):SetEase(Ease.Linear):OnComplete(function() DoTween.To(DG.Tweening.Core.DOGetter_float( function () return 0 end), DG.Tweening.Core.DOSetter_float(function (progress) local color = Color.New(1, progress, progress, 1) Util.SetColor(self.GameObject, color) Util.SetColor(self.RoleLiveGOGraphic, color) end), 1, 0.1):SetEase(Ease.Linear) end) self.GameObject.transform.parent:DOShakeAnchorPos(0.3, Vector2.New(200, 100), 100, 50, false, true):OnComplete(function () if self.GameObject then self.GameObject.transform.parent.anchoredPosition = Vector2.New(self.role.position == 1 and -145 or 0, -221) end end) -- 受击放大1.2倍 self:DoScale(1.2, 0.3, function() self:DoScale(1, 0.1) end) -- 播放受击动画 self:PlaySpineAnim(self.RoleLiveGOGraphic, 0, "hit", false) -- 播放受击特效 if skill then local combatId = BattleManager.GetCombatIdBySkin(skill.id, atkRole.roleData.skinId) local combat = BattleManager.GetSkillCombat(combatId) self.SkillCaster:CheckSkillHitEffect("hit", combat, skill) end end function PlayerView:OnHealed(castRole) local sortingOrder = self.GameObject:GetComponent("Canvas").sortingOrder + 21 local go = BattleManager.LoadAsset(healEffect, sortingOrder) go.transform:SetParent(self.GameObject.transform) go.transform.localScale = Vector3.one go.transform.localPosition = Vector3.zero--self.GameObject.transform.localPosition go:SetActive(true) BattleManager.AddDelayRecycleRes(healEffect, go, 3) end -- 怒气值改变 function PlayerView:RoleRageChange(deltaRage) if self.role:IsRealDead() then return end if deltaRage ~= 0 then if deltaRage > 0 then self.Floater:ImageBuffFloating("z_zhandou_nuqijia_zh", nil, deltaRage) else self.Floater:ImageBuffFloating("z_zhandou_nuqijian_zh", nil, deltaRage,0,1) end end end function PlayerView:OnDead() if self.hpTween then self.hpTween:Kill() end if self.hpPassTween then self.hpPassTween:Kill() end self.hpSlider.fillAmount = 0 self.hpPassSlider.fillAmount = 0 --死亡后不把怒气条显示清空,处理触发不灭怒气不足四点 怒气条清空 2021/09/01 --self.rageSlider.fillAmount = 0 self.rageText.text = "" end -- 暴毙 function PlayerView:onBeSecKill() self.Floater:ImageBuffFloating("z_zhandou_baobi_zh") end function PlayerView:OnRealDead() Util.SetGray(self.RoleIconGO, true) self.effect_dead:SetActive(true) self.effect_rage:SetActive(false) self.deadIconGO:SetActive(true) local color = Color.New(75, 75, 75, 255)/255 Util.SetColor(self.GameObject, color) Util.SetColor(self.RoleLiveGOGraphic, color) Util.SetGray(self.deadIconGO, false) self.BuffCtrl:Dispose() self.RoleLiveGOGraphic.freeze = true self.RoleLiveGOGraphic2.freeze = true self.isDead = true end function PlayerView:onRoleRelive() Util.SetGray(self.RoleIconGO, false) self.deadIconGO:SetActive(false) local color = Color.New(1, 1, 1, 1) Util.SetColor(self.GameObject, color) Util.SetColor(self.RoleLiveGOGraphic, color) Util.SetGray(self.GameObject, false) Util.SetSpineGray(self.RoleLiveGOGraphic, false) self:DoScale(1, 0) self.RoleLiveGOGraphic.freeze = false self.RoleLiveGOGraphic2.freeze = false self.isDead = false self.hpSlider.fillAmount=self.role:GetRoleData(RoleDataName.Hp) / self.role:GetRoleData(RoleDataName.MaxHp) local sortingOrder = self.GameObject:GetComponent("Canvas").sortingOrder + 21 local go = BattleManager.LoadAsset(reliveEffect1,sortingOrder) go.transform:SetParent(self.GameObject.transform) go.transform.localScale = Vector3.one go.transform.localPosition = Vector3.New(0,-180,0) go:SetActive(true) local go2 = BattleManager.LoadAsset(reliveEffect2,sortingOrder) go2.transform:SetParent(self.GameObject.transform) go2.transform.localScale = Vector3.one go2.transform.localPosition = Vector3.New(0,-180,0) go2:SetActive(true) BattleManager.AddDelayRecycleRes(reliveEffect1, go, 3) BattleManager.AddDelayRecycleRes(reliveEffect2, go, 3) self.Floater:ImageBuffFloating("z_zhandou_fuhuo_zh") end function PlayerView:onDispose() self.GameObject.transform.parent.localScale = Vector3.one self.spLoader:Destroy() self.Floater:Dispose() self.BuffCtrl:Dispose() -- Util.SetSpineGray(self.RoleLiveGOGraphic, false) Util.SetSpineGray(self.RoleLiveGOGraphic2, false) Util.SetColor(self.RoleLiveGOGraphic, Color.New(1, 1, 1, 1)) Util.SetColor(self.RoleLiveGOGraphic2, Color.New(1, 1, 1, 1)) self.RoleLiveGOGraphic.freeze = false self.RoleLiveGOGraphic2.freeze = false poolManager:UnLoadLive(self.livePath, self.RoleLiveGO2) -- 回收本节点 BattlePool.RecycleItem(self.GameObject, BATTLE_POOL_TYPE.MY_ROLE) self.GameObject = nil end return PlayerView