---@class WBP_OperateButton_C:UUserWidget ---@field Button_Title UButton ---@field TextBlock_Title UTextBlock ---@field WidgetSwitcher_BG UWidgetSwitcher ---@field ButtonText FText ---@field OperateType TEnumAsByte --Edit Below-- local WBP_OperateButton = { bInitDoOnce = false, FittingType = nil, bClickButton = false, ValText = nil, }; function WBP_OperateButton:Construct() self.Button_Title.OnClicked:Add(WBP_OperateButton.OnClickTitle, self) self.WidgetSwitcher_BG:SetActiveWidgetIndex(1) self:SetDefaultText() end function WBP_OperateButton:Destruct() self.Button_Title.OnClicked:Remove(WBP_OperateButton.OnClickTitle, self) end function WBP_OperateButton:OnClickTitle() -- 设置数据进去 -- 设置对应数据进去 self:ClickTitle(self.bClickButton) UIManager:ClosePanel(EUIType.UseSkill) end function WBP_OperateButton:ClickTitle(bClicked) -- 需要根据具体类型进行判断 if bClicked then self:OtherOperate() else self:StartOperate() end end function WBP_OperateButton:StartOperate() -- 是执行对应操作,比如合成就是要选择三个 -- 说明此时是显示 if self.OperateType == EBagOperateType.Reset then -- 检查一下背包中的数量 local PC = STExtraGameplayStatics.GetFirstPlayerController(self) local Stones = PC:GetItemMapByItemType(EItemType.SubstituteStone) local ItemCount = 0 if Stones ~= nil then for _, v in pairs(Stones) do ItemCount = ItemCount + v end end if ItemCount <= 0 then UIManager:ShowGeneralNotice("置换石的数量不足,请检查一下", true) return end end EventSystem:SendEvent(EventType.BagOperation, self.OperateType) print(string.format('当前点击的按钮的类型是:%d', self.OperateType)) self.TextBlock_Title:SetText("取消") self.WidgetSwitcher_BG:SetActiveWidgetIndex(0) self.bClickButton = true end function WBP_OperateButton:OtherOperate() EventSystem:SendEvent(EventType.CancelBagOperation, self.OperateType) -- 说明此时就是取消 self:SetDefaultText() end function WBP_OperateButton:SetDefaultText() self.bClickButton = false self.TextBlock_Title:SetText(self.ButtonText) self.WidgetSwitcher_BG:SetActiveWidgetIndex(1) end return WBP_OperateButton;