local PoolItemBase = require("Modules/Common/Pool/PoolItemBase") local PlayerHead = quick_class("PlayerHead", PoolItemBase) -- 对象创建时回调(只会调用一次) function PlayerHead:OnCreate() self.icon = Util.GetGameObject(self.gameObject, "icon") self.frame = Util.GetGameObject(self.gameObject, "frame") self.lvRoot = Util.GetGameObject(self.gameObject, "lvRoot") self.lv = Util.GetGameObject(self.gameObject, "lvRoot/lv") self.orderLayer = 0 self.effectScale = 1 self.effectScaleFix = 1 end -- 对象使用时回调(会重复调用) function PlayerHead:OnUse() self:Reset() end -- 对象回收时回调(会重复调用) function PlayerHead:OnRecycle() end -- 对象销毁时回调(只会调用一次) function PlayerHead:OnDestroy() end -- 设置头像 function PlayerHead:SetHead(headId) self.icon:SetActive(true) self.icon:GetComponent("Image").sprite = GetPlayerHeadSprite(headId) end -- 设置头像框 function PlayerHead:SetFrame(frameId) self.frame:SetActive(true) self.frame:GetComponent("Image").sprite = GetPlayerHeadFrameSprite(frameId) -- 检测特效 self:UnLoadFrameEffect() self:LoadFrameEffect(frameId) end function PlayerHead:SetEffectScale(scale) if self.frameEffect then local targetScale = scale/self.effectScale self.effectScale = scale Util.SetParticleScale(self.frameEffect, targetScale) end end -- 头像框特效相关 function PlayerHead:LoadFrameEffect(frameId) local name, scale, pos = GetPlayerHeadFrameEffect(frameId) if name then self.frameEffectName = name self.frameEffect = poolManager:LoadAsset(self.frameEffectName, PoolManager.AssetType.GameObject) self.frameEffect.transform:SetParent(self.frame.transform) self.frameEffect.transform.localPosition = pos self.frameEffect.transform.localScale = Vector3.one self.effectScaleFix = scale Util.SetParticleScale(self.frameEffect, scale) -- 还原修正大小 end end function PlayerHead:UnLoadFrameEffect() if self.frameEffectName and self.frameEffect then -- 重置层级 self:SetLayer(0) self:SetEffectScale(1) Util.SetParticleScale(self.frameEffect, 1/self.effectScaleFix) -- 还原修正大小 poolManager:UnLoadAsset(self.frameEffectName, self.frameEffect, PoolManager.AssetType.GameObject) self.frameEffectName = nil self.frameEffect = nil end end function PlayerHead:SetLayer(orderLayer) if not orderLayer then return end if self.frameEffect then Util.AddParticleSortLayer(self.frameEffect, orderLayer - self.orderLayer) self.orderLayer = orderLayer end end -- 设置等级 function PlayerHead:SetLevel(level) self.lvRoot:SetActive(true) self.lv:GetComponent("Text").text = level end -- 设置等级 function PlayerHead:SetGray(isGray) Util.SetGray(self.gameObject, isGray) if self.frameEffect then self.frameEffect:SetActive(not isGray) end end -- function PlayerHead:Reset() Util.SetGray(self.gameObject, false) self.icon:SetActive(false) self.frame:SetActive(false) self.lvRoot:SetActive(false) -- 卸载头像框特效 self:UnLoadFrameEffect() end return PlayerHead