local XUiChatServeMain = XLuaUiManager.Register(XLuaUi, "UiChatServeMain") local ToggleName = { CS.XTextManager.GetText("World"), CS.XTextManager.GetText("Team"), CS.XTextManager.GetText("Guild"), CS.XTextManager.GetText("Mentor"), -- CS.XTextManager.GetText("System"), } local ToggleType = { ChatChannelType.World, ChatChannelType.Room, ChatChannelType.Guild, ChatChannelType.Mentor, -- ChatChannelType.System, } local DefaultType = ChatChannelType.World local ChannelRefreshTime = CS.XGame.ClientConfig:GetInt("ChannelInfoRefreshMin") local FadeTime = CS.XGame.ClientConfig:GetInt("ChannelChangeFadeTime") local XUiGridChatChannelItem = require("XUi/XUiChatServe/Item/XUiGridChatChannelItem") local ChatRoomChannelNotOpen = CS.XTextManager.GetText("ChatRoomChannelNotOpen") local IsMessageTipShow = false function XUiChatServeMain:OnAwake() self:InitAutoScript() self.BtnRoom.CallBack = function() self:OnBtnRoomClick() end self.BtnChannelSure.CallBack = function() self:OnBtnChannelSureClick() end self.BtnChannelMask.CallBack = function() self:OnBtnChannelMaskClick() end self.DynamicTableChannels = XDynamicTableNormal.New(self.ChannelList.gameObject) self.DynamicTableChannels:SetProxy(XUiGridChatChannelItem) self.DynamicTableChannels:SetDelegate(self) self:SetBtnReportActive(false) end function XUiChatServeMain:OnDynamicTableEvent(event, index, grid) if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then grid:Init(self.UiRoot) elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then local curChannelData = self.ChannelInfos[index] if curChannelData then grid:SetItemData(curChannelData) end elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then self:OnChannelInfoClick(index) end end function XUiChatServeMain:OnStart(isMain, ...) local args = { ... } self.SelType = args[1] or DefaultType self.Inited = true self.InputField.characterLimit = XDataCenter.ChatManager.GetWorldChatMaxCount() self:CreateObject() self.timerId = -1 self.ChannelSet = {} for _, v in pairs(args) do self.ChannelSet[v] = true end if XDataCenter.GuildManager.IsJoinGuild() and not self.ChannelSet[ChatChannelType.Guild] then self.ChannelSet[ChatChannelType.Guild] = true end XDataCenter.GuildManager.RequestGuildData() local mentorData = XDataCenter.MentorSystemManager.GetMentorData() if mentorData:CheckCanUseChat(false) and not self.ChannelSet[ChatChannelType.Mentor] then self.ChannelSet[ChatChannelType.Mentor] = true end self.CurrentSelectedChannel = XDataCenter.ChatManager.GetCurrentChatChannelId() if isMain then self.ImgBgMain:SetActive(true) self.ImgBgCommon:SetActive(false) else self.ImgBgMain:SetActive(false) self.ImgBgCommon:SetActive(true) end XRedPointManager.AddRedPointEvent(self.Content, self.OnCheckRedPoint, self, { XRedPointConditions.Types.CONDITION_RECEIVE_CHAT }, nil, false) end function XUiChatServeMain:OnEnable() self:Refresh() end function XUiChatServeMain:OnDisable() self:StopChannelTimer() self:StopMsgTipsTimer() self:RemoveTimer() self.UiPanelEmoji:OnDisable() self.UiPanelEmojiSetting:OnDisable() end function XUiChatServeMain:OnDestroy() self:StopChannelTimer() self:StopMsgTipsTimer() self:RemoveTimer() self.UiPanelEmoji:OnDestroy() self.UiPanelEmojiSetting:OnDestroy() -- 重置特效冷却时间 XDataCenter.ChatManager.SetEffectEnd(0) end function XUiChatServeMain:CreateObject() self.UiPanelChatContent = XUiPanelChatContent.New(self, self.PanelChatContent, self) local XUiPanelEmojiEx = require("XUi/XUiChatServe/ChatModel/EmojiModel/XUiPanelEmojiEx") self.UiPanelEmoji = XUiPanelEmojiEx.New(self, self.PanelEmoji, self) local clickCallBack = function(content) self.UiPanelEmoji:Hide() self:OnClickEmoji(content) end self.UiPanelEmoji:SetClickCallBack(clickCallBack) self.UiPanelEmoji:Hide() local XUiPanelEmojiSetting = require("XUi/XUiChatServe/ChatModel/EmojiModel/XUiPanelEmojiPackSetting") self.UiPanelEmojiSetting = XUiPanelEmojiSetting.New(self, self.PanelEmojiSetup) self.UiPanelEmojiSetting:Hide() end -- auto -- Automatic generation of code, forbid to edit function XUiChatServeMain:InitAutoScript() self:AutoInitUi() self:AutoAddListener() end function XUiChatServeMain:AutoInitUi() self.PanelChatServe = self.Transform:Find("SafeAreaContentPane/PanelChatServe") self.ImgBgleft = self.Transform:Find("SafeAreaContentPane/PanelChatServe/ImgBg/ImgBgleft") self.PanelChatContent = self.Transform:Find("SafeAreaContentPane/PanelChatServe/PanelChatContent") self.GridChatItem = self.Transform:Find("SafeAreaContentPane/PanelChatServe/PanelLeftToggle/Viewport/Content/GridChatItem") self.PanelMsgTips = self.Transform:Find("SafeAreaContentPane/PanelChatServe/PanelMsgTips") self.BtnPanelMsgTips = self.Transform:Find("SafeAreaContentPane/PanelChatServe/PanelMsgTips/BtnImgBg"):GetComponent("Button") self.TxtMsgCount = self.Transform:Find("SafeAreaContentPane/PanelChatServe/PanelMsgTips/TxtMsgCount"):GetComponent("Text") self.BtnSend = self.Transform:Find("SafeAreaContentPane/PanelChatServe/BtnContent/BtnSend"):GetComponent("Button") -- self.BtnAdd = self.Transform:Find("SafeAreaContentPane/PanelChatServe/BtnContent/BtnAdd"):GetComponent("Button") self.InputField = self.Transform:Find("SafeAreaContentPane/PanelChatServe/BtnContent/InF_Content"):GetComponent("InputField") self.TxtEnter = self.Transform:Find("SafeAreaContentPane/PanelChatServe/BtnContent/InF_Content/TxtEnter"):GetComponent("Text") self.PanelEmoji = self.Transform:Find("SafeAreaContentPane/PanelChatServe/BtnContent/PanelEmoji") self.BtnBack = self.Transform:Find("SafeAreaContentPane/PanelChatServe/BtnContent/BtnBack"):GetComponent("Button") self.BtnChat = self.Transform:Find("SafeAreaContentPane/PanelChatServe/BtnChat"):GetComponent("Button") self.ImgBgMain = self.Transform:Find("SafeAreaContentPane/PanelChatServe/ImgBg/ImgBgMain").gameObject self.ImgBgCommon = self.Transform:Find("SafeAreaContentPane/PanelChatServe/ImgBg/ImgBgCommon").gameObject end function XUiChatServeMain:AutoAddListener() self:RegisterClickEvent(self.BtnPanelMsgTips, self.OnBtnPanelMsgTipsClick) self:RegisterClickEvent(self.BtnSend, self.OnBtnSendClick) self:RegisterClickEvent(self.BtnAdd, self.OnBtnAddClick) self:RegisterClickEvent(self.BtnBack, self.Close) self:RegisterClickEvent(self.BtnChat, self.OnBtnChatClick) if self.BtnReport then self:RegisterClickEvent(self.BtnReport, self.OnBtnReportClick) end end -- auto -------------------------------Event beg------------------------------- function XUiChatServeMain:OnGetEvents() return { XEventId.EVENT_CHAT_RECEIVE_WORLD_MSG, XEventId.EVENT_CHAT_RECEIVE_ROOM_MSG, XEventId.EVENT_PULL_SCROLLVIEW_END, XEventId.EVENT_CHAT_CHANNEL_CHANGED, XEventId.EVENT_CHAT_SERVER_CHANNEL_CHANGED, XEventId.EVENT_GUILD_RECEIVE_CHAT, XEventId.EVENT_CHAT_RECEIVE_MENTOR_MSG, XEventId.EVENT_CHAT_MATCH_EFFECT, XEventId.EVENT_CHAT_EMOJI_REFRESH_RED} end function XUiChatServeMain:OnNotify(evt, ...) if evt == XEventId.EVENT_CHAT_RECEIVE_WORLD_MSG then self.UiPanelChatContent:ReceiveChatHandler(...) elseif evt == XEventId.EVENT_CHAT_RECEIVE_ROOM_MSG then self.UiPanelChatContent:ReceiveChatHandler(...) elseif evt == XEventId.EVENT_GUILD_RECEIVE_CHAT then self.UiPanelChatContent:ReceiveChatHandler(...) elseif evt == XEventId.EVENT_CHAT_RECEIVE_MENTOR_MSG then self.UiPanelChatContent:ReceiveChatHandler(...) elseif evt == XEventId.EVENT_PULL_SCROLLVIEW_END then self:ShowUnreadMsgCount(...) elseif evt == XEventId.EVENT_CHAT_CHANNEL_CHANGED then self:UpdateCurrentChannel() elseif evt == XEventId.EVENT_CHAT_SERVER_CHANNEL_CHANGED then -- 服务端分配聊天渠道 if self.SelType == ChatChannelType.World then local args = { ... } local currentChannelId = args[1] self:ShowChangeChatChannel(currentChannelId) self:UpdateCurrentChannel() self:OnBtnChannelMaskClick() end elseif evt == XEventId.EVENT_CHAT_MATCH_EFFECT then self:ShowKeywordEffect(...) elseif evt == XEventId.EVENT_CHAT_EMOJI_REFRESH_RED then self:RefreshRedPoint() end end -------------------------------Event end------------------------------- --------------------------------Btn Event beg----------------------------------- function XUiChatServeMain:OnBtnPanelMsgTipsClick() self.UiPanelChatContent.UnreadMsgCount = 0 if IsMessageTipShow then self.UiPanelChatContent:RefreshChatList(self.SelType) end end function XUiChatServeMain:OnBtnAddClick() self.UiPanelEmoji:OpenOrClosePanel() end function XUiChatServeMain:OnBtnChatClick(eventData) self:Close(eventData) end function XUiChatServeMain:OnBtnSendClick() if self.SelType == ChatChannelType.World and not XDataCenter.ChatManager.CheckCd() then return end if self.SelType == ChatChannelType.Guild and XDataCenter.GuildManager.IsJoinGuild() then if XDataCenter.GuildManager.IsGuildTourist() then XUiManager.TipMsg(CS.XTextManager.GetText("GuildTourstAccess")) return end end local mentorData = XDataCenter.MentorSystemManager.GetMentorData() if self.SelType == ChatChannelType.Mentor then if not mentorData:CheckCanUseChat(true) then return end end local content = self.InputField.text if string.IsNilOrEmpty(content) then self.InputField.text = '' -- 内容为空, 则选中它 self.InputField:ActivateInputField() return end local sendChat = {} sendChat.ChannelType = self.SelType sendChat.MsgType = ChatMsgType.Normal sendChat.Content = content sendChat.TargetIds = { XPlayer.Id } self.InputField.text = '' self:SendChat(sendChat) end function XUiChatServeMain:OnClickEmoji(content) local mentorData = XDataCenter.MentorSystemManager.GetMentorData() if self.SelType == ChatChannelType.Mentor then if not mentorData:CheckCanUseChat(true) then return end end local sendChat = {} sendChat.ChannelType = self.SelType sendChat.MsgType = ChatMsgType.Emoji sendChat.Content = content sendChat.TargetIds = { XPlayer.Id } XDataCenter.ChatManager.SendChat(sendChat) self:RefreshRedPoint() end function XUiChatServeMain:SendChat(sendChat) if not sendChat then return end --发送聊天信息 local callBack = function(refreshCoolingTime) self:RefreshCoolTime(refreshCoolingTime) end XDataCenter.ChatManager.SendChat(sendChat, callBack, true) end function XUiChatServeMain:Close() if self.InputField.isFocused then return end --关闭聊天 self:PlayAnimationWithMask("AnimChatOut", function() self.Super.Close(self) XEventManager.DispatchEvent(XEventId.EVENT_CARD_REFRESH_WELFARE_BTN) end) XEventManager.DispatchEvent(XEventId.EVENT_CHAT_CLOSE_NAMEPLATE) XEventManager.DispatchEvent(XEventId.EVENT_CHAT_CLOSE) CsXGameEventManager.Instance:Notify(XEventId.EVENT_CHAT_CLOSE) end --------------------------------Btn Event end----------------------------------- function XUiChatServeMain:Refresh() self:InitializationView() self:InitTabBtnGroup() self:RefreshMsgPanel() self:UpdateCurrentChannel() self:RefreshRedPoint() end function XUiChatServeMain:RefreshRedPoint() local isRed = XDataCenter.ChatManager.CheckIsNewEmoji() self.BtnAdd:ShowReddot(isRed) end function XUiChatServeMain:InitializationView() --初始化界面 self.PanelMsgTips.gameObject:SetActive(false) XLuaUiManager.SetMask(true) self:PlayAnimation("AnimChatEnter", function() XLuaUiManager.SetMask(false) if self.SelType == ChatChannelType.World then self:ShowChangeChatChannel(self.CurrentSelectedChannel) end end) XEventManager.DispatchEvent(XEventId.EVENT_CHAT_OPEN) CsXGameEventManager.Instance:Notify(XEventId.EVENT_CHAT_OPEN) end function XUiChatServeMain:InitTabBtnGroup() if self.TabGroup then return end self.TabGroup = {} for i = 1, #ToggleType do local uiButton if i == 1 then uiButton = self.BtnTabMatch else local itemGo = CS.UnityEngine.Object.Instantiate(self.BtnTabMatch.gameObject) itemGo.transform:SetParent(self.ContentRT, false) uiButton = itemGo.transform:GetComponent("XUiButton") end local title = ToggleName[i] local type = ToggleType[i] local unlock = self.ChannelSet[type] uiButton:SetName(title) uiButton:SetDisable(not unlock) -- 如果其他频道需要红点显示,更换判断条件即可 if (type == ChatChannelType.Guild or type == ChatChannelType.Mentor) then local needRedPoint = XDataCenter.ChatManager.CheckRedPointByType(type) if type == ChatChannelType.Mentor then local mentorData = XDataCenter.MentorSystemManager.GetMentorData() needRedPoint = needRedPoint and mentorData:CheckCanUseChat(false) end uiButton:ShowReddot(needRedPoint) end table.insert(self.TabGroup, uiButton) end self.Content:Init(self.TabGroup, function(tabIndex) self:OnClickTabCallBack(tabIndex) end) self.Content:SelectIndex(self:TypeToTabIndex(self.SelType)) end function XUiChatServeMain:TypeToTabIndex(type) for i = 1, #ToggleType do if ToggleType[i] == type then return i end end return 0 end function XUiChatServeMain:OnClickTabCallBack(tabIndex) local type = ToggleType[tabIndex] if not type or not self.ChannelSet[type] then if type == ChatChannelType.Room then XUiManager.TipMsg(ChatRoomChannelNotOpen) elseif type == ChatChannelType.Mentor then local mentorData = XDataCenter.MentorSystemManager.GetMentorData() mentorData:CheckCanUseChat(true) end return end -- 如果其他频道需要红点显示,更换判断条件即可 if (type == ChatChannelType.Guild or type == ChatChannelType.Mentor) then XDataCenter.ChatManager.SetChatRead(type) local needRedPoint = XDataCenter.ChatManager.CheckRedPointByType(type) self.TabGroup[tabIndex]:ShowReddot(needRedPoint) end self.SelType = type self.UiPanelChatContent:RefreshChatList(type) self.PanelChannelLabel.gameObject:SetActiveEx(self.SelType == ChatChannelType.World) -- 部队频道清除cd if self.SelType == ChatChannelType.Room then self:SetInputFieldText() self:SetInputInteractable(true) self:RemoveTimer() end end function XUiChatServeMain:RefreshMsgPanel() self.UiPanelChatContent:RefreshChatList(self.SelType) end function XUiChatServeMain:RefreshCoolTime(refreshCoolingTime) if refreshCoolingTime <= 0 then return end -- 部队不走冷却时间逻辑 if self.SelType == ChatChannelType.Room then return end self:SetInputInteractable(false) self:SetInputFieldText(CS.XTextManager.GetText("CountDownTips", refreshCoolingTime)) self:RemoveTimer() local refresh = function() refreshCoolingTime = refreshCoolingTime - 1 local stop = refreshCoolingTime <= 0 or XTool.UObjIsNil(self.InputField) if stop then self:SetInputFieldText() self:SetInputInteractable(true) self:RemoveTimer() else self:SetInputFieldText(CS.XTextManager.GetText("CountDownTips", refreshCoolingTime)) end end self.timerId = XScheduleManager.ScheduleForever(refresh, XScheduleManager.SECOND) end function XUiChatServeMain:SetInputInteractable(flag) self.InputField.interactable = flag self.BtnSend.interactable = flag self.BtnAdd.interactable = flag end function XUiChatServeMain:SetInputFieldText(text) if not XTool.UObjIsNil(self.InputField) then self.InputField.text = text or "" end end function XUiChatServeMain:RemoveTimer() if self.timerId ~= -1 then XScheduleManager.UnSchedule(self.timerId) self.timerId = -1 end end function XUiChatServeMain:ShowUnreadMsgCount(count) if XTool.UObjIsNil(self.GameObject) then return end if count <= 0 then -- 如果计时器开着,直接return self.UiPanelChatContent.UnreadMsgCount = 0 if self.showMsgTimer and self.showMsgTimer ~= -1 then return end self.PanelMsgTips.gameObject:SetActive(false) else -- 关计时器如果有 self:StopMsgTipsTimer() self.PanelMsgTips.gameObject:SetActive(true) self.TxtMsgCount.text = CS.XTextManager.GetText("ChatWorldNewMsg", count) IsMessageTipShow = true end end function XUiChatServeMain:ShowKeywordEffect(effectInfo) local index = XTool.RandomSelectByWeightArray(effectInfo.Weight) local path = effectInfo.Path[index] self.BgEffect.gameObject:SetActiveEx(false) if not string.IsNilOrEmpty(path) then self.BgEffect.gameObject:SetActiveEx(true) self.BgEffect.gameObject:LoadUiEffect(path) end -- 播放完特效后调用 XDataCenter.ChatManager.SetEffectEnd() end function XUiChatServeMain:ShowChangeChatChannel(channelId) if XTool.UObjIsNil(self.GameObject) then return end self.PanelMsgTips.gameObject:SetActive(true) local currentChannelId = XDataCenter.ChatManager.GetCurrentChatChannelId() currentChannelId = currentChannelId >= 5 and (currentChannelId + 1) or currentChannelId self.TxtMsgCount.text = CS.XTextManager.GetText("ChannelChanged", currentChannelId ~= XDataCenter.ChatManager.GetRecruitChannelId() and tostring(currentChannelId) or CS.XTextManager.GetText("ChannelRecruitIdStr")) -- 开计时器关闭 self:StartMsgTipsTimer() end -- 只刷新tog红点不刷新界面 function XUiChatServeMain:OnCheckRedPoint() for index, uiButton in ipairs(self.TabGroup) do local type = ToggleType[index] -- 如果其他频道需要红点显示,更换判断条件即可 if self.SelType ~= type and (type == ChatChannelType.Guild or type == ChatChannelType.Mentor) then local needRedPoint = XDataCenter.ChatManager.CheckRedPointByType(type) uiButton:ShowReddot(needRedPoint) end end end function XUiChatServeMain:StartMsgTipsTimer() self:StopMsgTipsTimer() self.showMsgTimer = XScheduleManager.ScheduleOnce(function() self.PanelMsgTips.gameObject:SetActive(false) IsMessageTipShow = false end, FadeTime * 1000) end function XUiChatServeMain:StopMsgTipsTimer() if self.showMsgTimer and self.showMsgTimer ~= -1 then XScheduleManager.UnSchedule(self.showMsgTimer) self.showMsgTimer = -1 end end function XUiChatServeMain:SetChannelData() XDataCenter.ChatManager.GetWorldChannelInfos(function(channelInfos) -- 加载频道数据 self.ChannelInfos = channelInfos self:InitChannelInfos(self.ChannelInfos) self.DynamicTableChannels:SetDataSource(self.ChannelInfos) self.DynamicTableChannels:ReloadDataASync() self:UpdateChannelTotalCount() end) end function XUiChatServeMain:InitChannelInfos(channelInfos) local currentChannelId = XDataCenter.ChatManager.GetCurrentChatChannelId() for _, info in pairs(channelInfos) do info.IsSelected = currentChannelId == info.ChannelId end end function XUiChatServeMain:OnChannelInfoClick(index) if self.ChannelInfos[index] then self.CurrentSelectedChannel = self.ChannelInfos[index].ChannelId end for i = 1, #self.ChannelInfos do local grid = self.DynamicTableChannels:GetGridByIndex(i) local info = self.ChannelInfos[i] info.IsSelected = i == index if grid then grid:SetChannelSelected(i == index) end end end function XUiChatServeMain:OnBtnRoomClick() self.PanelChannel.gameObject:SetActive(true) -- 1分钟之内不重复请求 local now = XTime.GetServerNowTimestamp() if now - XDataCenter.ChatManager.GetLastRequestChannelTime() <= 60 then self.ChannelInfos = XDataCenter.ChatManager.GetAllChannelInfos() self:InitChannelInfos(self.ChannelInfos) self.DynamicTableChannels:SetDataSource(self.ChannelInfos) self.DynamicTableChannels:ReloadDataASync() self:UpdateChannelTotalCount() else self:SetChannelData() XDataCenter.ChatManager.SetLastRequestChannelTime(now) end self:StartChannelTimer() end function XUiChatServeMain:StartChannelTimer() self:StopChannelTimer() self.channelTimer = XScheduleManager.ScheduleForever(function() self:SetChannelData() end, ChannelRefreshTime * 60 * 1000) end function XUiChatServeMain:StopChannelTimer() if self.channelTimer and self.channelTimer ~= -1 then XScheduleManager.UnSchedule(self.channelTimer) self.channelTimer = -1 end end -- 切换窗口 function XUiChatServeMain:OnBtnChannelMaskClick() self:StopChannelTimer() self.PanelChannel.gameObject:SetActive(false) end function XUiChatServeMain:OnBtnChannelSureClick() self:StopChannelTimer() self.PanelChannel.gameObject:SetActive(false) if self.CurrentSelectedChannel then XDataCenter.ChatManager.SelectChatChannel(self.CurrentSelectedChannel, function() self:ShowChangeChatChannel(self.CurrentSelectedChannel) self:UpdateCurrentChannel() end, function() -- 发生服务端房间数量变化(例如当前房间不存在了)重新请求 self:SetChannelData() end) end end function XUiChatServeMain:UpdateCurrentChannel() local currentChannelId = XDataCenter.ChatManager.GetCurrentChatChannelId() self.TxtRoomNumber.text = XDataCenter.ChatManager.GetRecruitChannelId() ~= currentChannelId and currentChannelId or CS.XTextManager.GetText("ChannelRecruitIdStr") end function XUiChatServeMain:UpdateChannelTotalCount() self.TextTotalCount.text = #XDataCenter.ChatManager.GetAllChannelInfos() end -------------------举报聊天的按钮相关 begin--------------- function XUiChatServeMain:OnBtnReportClick() self:SetBtnReportActive(false) local playerId = self.MsgItem and self.MsgItem:GetPlayerId() if not playerId then return end if XDataCenter.RoomManager.RoomData and playerId == XPlayer.Id then --在房间中不能在聊天打开自己详情面板 return end local chatContent = self.MsgItem:GetChatContent() XDataCenter.PersonalInfoManager.ReqShowInfoPanel(playerId, nil, nil, nil, function(data) local dataTemp = {Id = data.Id, TitleName = data.Name, PlayerLevel = data.Level, PlayerIntroduction = data.Sign} XLuaUiManager.Open("UiReport", dataTemp, chatContent, nil, XReportConfigs.EnterType.Chat, nil, self.SelType) end) end --长按聊天内容回调,XUiPanelChatContent调用 function XUiChatServeMain:LongClickMsgItem(msgItem) self.MsgItem = msgItem local offsetY = 2 local content = msgItem:GetContent() if XTool.UObjIsNil(content) then XLog.Error("检查当前长按的msgItem上是否有Content的引用") return end local contentPosition = content.transform.localPosition local height = content.rect.height local width = content.rect.width local localPositionX = contentPosition.x + width * 0.9 local localPositionY = contentPosition.y - height - offsetY self.BtnReport.transform.position = content.transform:TransformPoint(CS.UnityEngine.Vector3(localPositionX, localPositionY, 0)) self:SetBtnReportActive(true) end function XUiChatServeMain:SetBtnReportActive(isActive) if self.BtnReport then self.BtnReport.gameObject:SetActiveEx(isActive) end end function XUiChatServeMain:IsBtnReportActive() return self.BtnReport.gameObject.activeSelf end function XUiChatServeMain:OpenPanelEmojiSetup() self.UiPanelEmojiSetting:Show() end function XUiChatServeMain:OpenPanelEmoji() self.UiPanelEmoji:Show() end -------------------举报聊天的按钮相关 end--------------- return XUiChatServeMain