local UIDescriptionPanel = UIViewClass() local HalfResolutionX = UnityEngine.Screen.width / 2 local HalfResolutionY = UnityEngine.Screen.height / 2 -- @params posType 方位参数 参见LuaConst.DescriptionPanelType -- @params target 目标物体 -- @params text 显示描述文本 function UIDescriptionPanel:OnOpened(context) UTL.String.SetLabelContent(self.txt_FrameInfo, context.text) local showPosType = context.posType and context.posType or LuaConst.DescriptionPanelType.Center if showPosType == LuaConst.DescriptionPanelType.Center then self.bg.transform:SetAnchoredPosition(0, 0) elseif context.target then -- TODO 创建通用接口计算局部坐标位置 self.bg.transform:SetParent(context.target.transform, true) self.bg.transform:SetAnchoredPosition(0, 0) self.bg.transform:SetParent(self.group_FrameInfo.transform, true) local anchorPosX, anchorPosY = self.bg.transform:GetAnchoredPosition() local anchorOffsetX, anchorOffsetY = self.bg.transform:GetSizeDelta() anchorOffsetX = anchorOffsetX / 2 anchorOffsetY = anchorOffsetY / 2 if showPosType == LuaConst.DescriptionPanelType.LeftUpper then anchorOffsetY = -anchorOffsetY elseif showPosType == LuaConst.DescriptionPanelType.RightUpper then anchorOffsetX = -anchorOffsetX anchorOffsetY = -anchorOffsetY elseif showPosType == LuaConst.DescriptionPanelType.RightLower then anchorOffsetX = -anchorOffsetX end local setAnchorPosX = anchorPosX + anchorOffsetX local setAnchorPosY = anchorPosY + anchorOffsetY -- 检测是否超出屏幕外 if setAnchorPosX + anchorOffsetX > HalfResolutionX then setAnchorPosX = HalfResolutionX - anchorOffsetX elseif setAnchorPosX - anchorOffsetX < -HalfResolutionX then setAnchorPosX = -HalfResolutionX + anchorOffsetX elseif setAnchorPosY + anchorOffsetY > HalfResolutionY then setAnchorPosY = HalfResolutionY - anchorOffsetY elseif setAnchorPosY - anchorOffsetY < -HalfResolutionY then setAnchorPosY = -HalfResolutionY + anchorOffsetY end local offsetX = context.offsetX or 0 local offsetY = context.offsetY or 0 self.bg.transform:SetAnchoredPosition(setAnchorPosX + offsetX, setAnchorPosY + offsetY) end end function UIDescriptionPanel:OnButtonClicked(comp) if comp == self.img_Back then self:CloseView() end end return UIDescriptionPanel