157 lines
4.4 KiB
Lua
157 lines
4.4 KiB
Lua
|
|
local PlayerHeadView = {}
|
|
|
|
function PlayerHeadView:New(gameObject)
|
|
local b = {}
|
|
b.gameObject = gameObject
|
|
b.transform = gameObject.transform
|
|
setmetatable(b, { __index = PlayerHeadView })
|
|
return b
|
|
end
|
|
--初始化组件(用于子类重写)
|
|
function PlayerHeadView:InitComponent()
|
|
self.spLoader = SpriteLoader.New()
|
|
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 PlayerHeadView:BindEvent()
|
|
end
|
|
|
|
--添加事件监听(用于子类重写)
|
|
function PlayerHeadView:AddListener()
|
|
end
|
|
|
|
--移除事件监听(用于子类重写)
|
|
function PlayerHeadView:RemoveListener()
|
|
end
|
|
|
|
--界面打开时调用(用于子类重写)
|
|
function PlayerHeadView:OnOpen(...)
|
|
self:Reset()
|
|
end
|
|
|
|
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
|
|
function PlayerHeadView:OnShow()
|
|
end
|
|
|
|
--界面关闭时调用(用于子类重写)
|
|
function PlayerHeadView:OnClose()
|
|
self:Reset()
|
|
self.spLoader:Destroy()
|
|
end
|
|
|
|
-- 设置头像
|
|
function PlayerHeadView:SetHead(headId)
|
|
self.icon:SetActive(true)
|
|
self.icon:GetComponent("Image").sprite = GetPlayerHeadSprite(self.spLoader, headId)
|
|
end
|
|
|
|
-- 设置头像框
|
|
function PlayerHeadView:SetFrame(frameId)
|
|
self.frame:SetActive(true)
|
|
self.frame:GetComponent("Image").sprite = GetPlayerHeadFrameSprite(self.spLoader, frameId)
|
|
-- 检测特效
|
|
self:UnLoadFrameEffect()
|
|
self:LoadFrameEffect(frameId)
|
|
end
|
|
|
|
-- 设置等级
|
|
function PlayerHeadView:SetLevel(level)
|
|
self.lvRoot:SetActive(true)
|
|
self.lv:GetComponent("Text").text = level
|
|
end
|
|
|
|
-- 设置等级
|
|
function PlayerHeadView:SetGray(isGray)
|
|
Util.SetGray(self.gameObject, isGray)
|
|
if self.frameEffect then
|
|
self.frameEffect:SetActive(not isGray)
|
|
end
|
|
end
|
|
|
|
function PlayerHeadView:Reset()
|
|
Util.SetGray(self.gameObject, false)
|
|
self.icon:SetActive(false)
|
|
self.frame:SetActive(false)
|
|
self.lvRoot:SetActive(false)
|
|
-- 卸载头像框特效
|
|
self:UnLoadFrameEffect()
|
|
--
|
|
end
|
|
-- 设置节点父节点
|
|
function PlayerHeadView:SetParent(parent)
|
|
if self.transform then
|
|
self.transform:SetParent(parent.transform)
|
|
self.parent = parent.transform
|
|
end
|
|
end
|
|
|
|
-- 设置节点位置
|
|
function PlayerHeadView:SetPosition(v3)
|
|
if not v3 then return end
|
|
if self.transform then
|
|
self.transform.localPosition = v3
|
|
end
|
|
end
|
|
|
|
-- 设置节点缩放值
|
|
function PlayerHeadView:SetScale(v3)
|
|
if type(v3) == "number" then
|
|
v3 = Vector3.one * v3
|
|
end
|
|
if not v3 then return end
|
|
if self.transform then
|
|
self.transform.localScale = v3
|
|
end
|
|
end
|
|
|
|
function PlayerHeadView:SetEffectScale(scale)
|
|
if self.frameEffect then
|
|
local targetScale = scale / self.effectScale
|
|
self.effectScale = scale
|
|
Util.SetParticleScale(self.frameEffect, targetScale)
|
|
end
|
|
end
|
|
|
|
-- 头像框特效相关
|
|
function PlayerHeadView: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, self.effectScaleFix) -- 设置修正大小
|
|
end
|
|
end
|
|
function PlayerHeadView: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 PlayerHeadView:SetLayer(orderLayer)
|
|
if self.frameEffect then
|
|
Util.AddParticleSortLayer(self.frameEffect, orderLayer - self.orderLayer)
|
|
self.orderLayer = orderLayer
|
|
end
|
|
end
|
|
|
|
function PlayerHeadView:Recycle()
|
|
SubUIManager.Close(self)
|
|
end
|
|
return PlayerHeadView |