---@class WB_SoldierInfo_Item_C:UUserWidget ---@field ProgressBar_Main UProgressBar ---@field TextBlock_Name UTextBlock --Edit Below-- ---@type WB_SoldierInfo_Item_C local WB_SoldierInfo_Item = { bInitDoOnce = false; }; function WB_SoldierInfo_Item:Construct() self.ProgressBar_Main:SetPercent(0.); UGCEventSystem.SetTimerLoop(self, function() self:OnUpdate(); end, 1 / 90.) end --- 更新兵种 WB_SoldierInfo_Item.DefaultNum = 0.5; -- 每次移动的距离(标量) WB_SoldierInfo_Item.DeltaNum = { BiaoLiang = 0.015; ShiLiang = 0; }; WB_SoldierInfo_Item.EnableChange = false; WB_SoldierInfo_Item.TargetNum = 0; --- 每次都走固定的距离直到到达位置 function WB_SoldierInfo_Item:UpdateSoldierDiff1(Num) self.TargetNum = Num; if self.ProgressBar_Main.Percent < Num then self.DeltaNum.ShiLiang = self.DeltaNum.BiaoLiang; else self.DeltaNum.ShiLiang = self.DeltaNum.BiaoLiang * -1; end self.EnableChange = true; end function WB_SoldierInfo_Item:OnUpdate() if self.EnableChange then -- 获取当前 if math.abs(self.ProgressBar_Main.Percent - self.TargetNum) <= self.DeltaNum.BiaoLiang then self.EnableChange = false; self.ProgressBar_Main:SetPercent(self.TargetNum); return; end local Num = self.ProgressBar_Main.Percent + self.DeltaNum.ShiLiang self.ProgressBar_Main:SetPercent(Num); end end ---@param InType ESoldierType ---@param InIndex ESpecialType function WB_SoldierInfo_Item:SetSoldierType(InType, InIndex) local Num = SoldierConfig.Features[InType][InIndex]; if Num == nil then Num = self.DefaultNum; else if InIndex == SoldierConfig.ESpecialType.Poison then Num = self.DefaultNum * (1 / Num); else Num = self.DefaultNum * Num; end end self:SetInfoName(InIndex); self:UpdateSoldierDiff1(Num); end ---@param InIndex ESpecialType function WB_SoldierInfo_Item:SetInfoName(InIndex) self.TextBlock_Name:SetText(SoldierConfig.ESpecialTypeName[InIndex]); end return WB_SoldierInfo_Item;