ExpMessageItem = ExpMessageItem or BaseClass(BaseItem) local ExpMessageItem = ExpMessageItem ExpMessageItem.PosX = 250+80--ScreenWidth/2-500 ExpMessageItem.PosY = -ScreenHeight/2+200-25 ExpMessageItem.PosZ = 0 function ExpMessageItem:__init(parent,prefab_asset,layer_name,callback) self.base_file = "message" self.layout_file = "ExpMessageItem" self.layer_name = "Scene" self.anim_list = {} self.fade_out_time = 1 self.state = 0 self.content = "" self.callback = callback self:Load() end function ExpMessageItem:__delete() end function ExpMessageItem:Load_callback() self.exp_label = self:GetChild("exp_label"):GetComponent("Text") self.normal_label = self:GetChild("normal_label"):GetComponent("Text") self.canvasGroup = self.transform:GetComponent("CanvasGroup") self.gameObject:SetActive(false) --不仅z轴要跑到最前面, orderinlayer也要最前面 UIDepth.SetUIDepth(self.gameObject,true,self:GetCurrLayerDepth(self.layer_name)+1) --层次要在ui层,不设就在default层,会低于ui层而看不到 self.gameObject.layer = UIPartical.RenderingOther_List.UI if self.need_refreshData then self:SetData(self.info) end end function ExpMessageItem:SetData(info) self.info = info if self.has_data then return end if self.is_loaded then self.has_data = true self.content = info.content or 0 self.percent = info.percent or 0 self.is_normal = info.is_normal --普通文本,不需要经验字体 self.is_score = info.is_score -- 积分文本,使用经验字体,但积分字符为[s] -- self:ResetUIZDepth() -- self:AddUIZDepth() self.canvasGroup.alpha = 1 if not self.gameObject.activeSelf then self.gameObject:SetActive(true) end self:MoveInToScreen(self.transform) --设置每一个item的位置 if SceneManager.Instance:IsBeachScene() or SceneManager.Instance:IsGuildScene() then SetLocalPosition(self.transform, 0, ExpMessageItem.PosY+ScreenHeight * 0.39, ExpMessageItem.PosZ) else SetLocalPosition(self.transform, ExpMessageItem.PosX, ExpMessageItem.PosY, ExpMessageItem.PosZ) end --设置文本 if not self.is_normal then local percent_str = "" if self.percent and self.percent ~= 0 then percent_str = "(+"..self.percent.."%)" end self.exp_label.text = (self.is_score and "s" or "f")..self.content..percent_str else self.normal_label.text = self.content end self.need_refreshData = false else self.need_refreshData = true end end function ExpMessageItem:Reset( ) if not self.gameObject then return end -- self.gameObject:SetActive(false) self:MoveOutOfScreen(self.transform) self.has_data = false self.exp_label.text = "" self.normal_label.text = "" -- SetLocalPosition(self.transform, ExpMessageItem.PosX, ExpMessageItem.PosY, ExpMessageItem.PosZ) end