142 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			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 |