PlayerTitle = {} local this=PlayerTitle local mapNpcOp = "PlayerTitle" local settingValue = ServerConfigManager.GetSettingValue(ServerConfigManager.SettingConfig.IS_TITLE_EFFECT_SCALE) function PlayerTitle:New(gameObject) local b = {} b.gameObject = gameObject b.transform = gameObject.transform setmetatable(b, { __index = PlayerTitle }) return b end --初始化组件(用于子类重写) function PlayerTitle:InitComponent() self.layer = 0 self.canvas = self.gameObject:GetComponent("Canvas") end --绑定事件(用于子类重写) function PlayerTitle:BindEvent() end --添加事件监听(用于子类重写) function PlayerTitle:AddListener() end --移除事件监听(用于子类重写) function PlayerTitle:RemoveListener() end --界面打开时调用(用于子类重写) function PlayerTitle:OnOpen(itemId, position, scale, layer) if itemId then self:SetShow(itemId, position, scale, layer) end end -- 删除当前canvas脚本 function PlayerTitle:RemoveCanvas() if self.canvas then destroy(self.canvas) end self.canvas = nil end function PlayerTitle:SetShow(itemId, position, scale, effectScale, layer) self:ClearTitle() local curPlayerRole = ConfigManager.GetConfigData(ConfigName.PlayerRole,itemId) local curArtResourcesConfig = ConfigManager.GetConfigData(ConfigName.ArtResourcesConfig,curPlayerRole.LiveAnimName) self.curTitleName = curArtResourcesConfig.Name self.titleLive = poolManager:LoadAsset(self.curTitleName, PoolManager.AssetType.GameObject) self.titleLive.transform:SetParent(self.transform) if effectScale then self:SetEffectScale(effectScale) end if scale then self:SetScale(scale) end if position then self:SetPostion(position) end if layer then self:SetLayer(layer) end end function PlayerTitle:SetPostion(position) if self.titleLive then self.titleLive.transform.localPosition = position end end function PlayerTitle:SetScale(scale) self.scale = scale if self.titleLive then self.titleLive.transform.localScale = Vector3.one * scale end end function PlayerTitle:SetEffectScale(effectScale) if self.titleLive then self.titleLive.gameObject:SetActive(false) Util.SetParticleScale(self.titleLive, effectScale) local isScaleActive = true -- 处理喜扑老包称号显示异常的问题,喜扑第一个版本的包在底层删除了缩放节点,这里要处理下针对此包不再进行缩放还原 if AppConst.isSDK then local vc = AndroidDeviceInfo.Instance:GetVersionCode() if settingValue and vc == tonumber(settingValue) then isScaleActive = false end end -- 称号显示优化,设置粒子缩放会导致节点缩放,导致粒子显示异常,这里要将缩放还原 if isScaleActive then local particles = self.titleLive:GetComponentsInChildren(typeof(UnityEngine.ParticleSystem)) local isScale = false for key, value in pairs(particles:ToTable()) do value.transform.localScale = value.transform.localScale / effectScale isScale = true end if isScale then self.titleLive.transform.localScale = Vector3.one * (self.scale or 1) end end self.titleLive.gameObject:SetActive(true) end end function PlayerTitle:SetLayer(layer) local _layer = layer + 10 if self.titleLive then AddParticleSortLayer(self.titleLive, _layer - self.layer) end if self.canvas then self.canvas.overrideSorting = true self.canvas.sortingOrder = _layer end self.layer = _layer end function PlayerTitle:ClearTitle() if self.titleLive then destroy(self.titleLive) end self.titleLive = nil self.curTitleName = nil self.layer = 0 end --界面销毁时调用(用于子类重写) function PlayerTitle:OnClose() self:ClearTitle() end return PlayerTitle