miduo_client/Assets/ManagedResources/~Lua/View/PlayerTitle.lua

142 lines
4.0 KiB
Lua

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