---@class WBP_SelectWeaponItem_C:UUserWidget ---@field Button_WeaponItem UNewButton ---@field Image_Icon UImage ---@field Image_Selected UImage ---@field Image_Weapon UImage ---@field Panel_Weapon_1 UCanvasPanel ---@field TextBlock_Desc UTextBlock ---@field TextBlock_WeaponName UTextBlock ---@field WeaponName FText --Edit Below-- local WBP_SelectWeaponItem = { bInitDoOnce = false, bHasClick = false, WeaponId = 0, }; function WBP_SelectWeaponItem:Construct() self.Button_WeaponItem.OnClicked:Add(WBP_SelectWeaponItem.OnClickWeaponItem, self) self.Button_WeaponItem:SetTouchMethod(EButtonTouchMethod.PreciseTap) end -- function WBP_SelectWeaponItem:Tick(MyGeometry, InDeltaTime) -- end function WBP_SelectWeaponItem:Destruct() self.Button_WeaponItem.OnClicked:Remove(WBP_SelectWeaponItem.OnClickWeaponItem, self) end function WBP_SelectWeaponItem:SetIsSelect(InIsSelect) if InIsSelect then self.Image_Selected:SetVisibility(ESlateVisibility.SelfHitTestInvisible) else self.Image_Selected:SetVisibility(ESlateVisibility.Collapsed) end end -- 设置默认数据 function WBP_SelectWeaponItem:SetDefaultData(InWeaponId) self.WeaponId = InWeaponId local Data = GameDataManager.GetWeaponConstructDataByID(InWeaponId) if Data == nil then UE.Log("[WBP_SelectWeaponItem:SetDefaultData] Data is nil") return end local Val = DropItemMap.WeaponTable[Data.WeaponType] self.TextBlock_WeaponName:SetText(Val.ChineseName) self.TextBlock_Desc:SetText(Val.Text) local Icon = UE.LoadObject(Val.Sign) self.Image_Icon:SetBrushFromTexture(Icon) local WeaponIcon = UE.LoadObject(Val.Icon) -- 调整 local IconSlot = WidgetLayoutLibrary.SlotAsCanvasSlot(self.Image_Weapon) -- 算一下比例 local NewIconX = 32 / 80 * WeaponIcon:Blueprint_GetSizeX() IconSlot:SetSize({ X = NewIconX, Y = 32 }) self.Image_Weapon:SetBrushFromTexture(WeaponIcon) self.Image_Selected:SetVisibility(ESlateVisibility.Collapsed) end --现在是点一下就拿到 function WBP_SelectWeaponItem:OnClickWeaponItem() --添加到背包中 -- local PlayerController = GameDataManager.GetLocalPlayerController() -- --local Pawn = PlayerController.Pawn -- local OwningPawn = PlayerController:GetPlayerCharacterSafety() -- print(string.format("[WBP_SelectWeaponItem:OnClickWeaponItem] 要添加的武器 Id = %d", self.WeaponId)) -- -- 获取当前玩家 -- local PlayerKey = UGCPawnAttrSystem.GetPlayerKeyInt64(OwningPawn) -- print(string.format("[WBP_SelectWeaponItem:OnClickWeaponItem] InPlayerKey = %d", PlayerKey)) -- UnrealNetwork.CallUnrealRPC(PlayerController, PlayerController, "ServerRPC_AddWeapon", self.WeaponId, PlayerKey) -- 提示背包添加 local PlayerController = GameDataManager.GetLocalPlayerController() UnrealNetwork.CallUnrealRPC(PlayerController, PlayerController, "ServerRPC_StartSpawnBreachMonster", self.WeaponId) UIManager:ShowGeneralNotice("已选择突破奖励,即将生成突破怪") EventSystem:SendEvent(EventType.ToggleBreachButton, false) UIManager:HidePanel(EUIType.SelectWeapon) NewPlayerGuideManager:TriggerGuide(29) end return WBP_SelectWeaponItem;