--增减数量组件 AddNumberComponent = AddNumberComponent or BaseClass(BaseComponent) function AddNumberComponent:__init(parent,min_count,max_count,step,curr_count,calc_type, size_delta_x) self.size_delta_x = size_delta_x or 253 self:CreateGameObject(UIType.AddNumberComponent) self:InitData(min_count,max_count,step,curr_count,calc_type, size_delta_x) end --num_changed_call_back 加一个改变数量后的回调 function AddNumberComponent:InitData(min_count,max_count,step,curr_count,calc_type, size_delta_x,num_changed_call_back) self.min_count = min_count or 1 self.max_count = max_count or 1 self.step = step or 1 --步长 self.calc_type = calc_type or self.calc_type or 1 self.num_changed_call_back = num_changed_call_back self:SetCurrCount(curr_count or 1) end function AddNumberComponent:LoadSuccess() self.reduceBtn = self:GetChild("reduceBtn").gameObject self.numberBg = self:GetChild("numberBg").gameObject self.numberText = self:GetChild("numberBg/numberText"):GetComponent(typeof(TMPro.TextMeshProUGUI)) self.addBtn = self:GetChild("addBtn").gameObject self.calcBtn = self:GetChild("calcBtn").gameObject self.transform.sizeDelta = Vector2(self.size_delta_x, 50) self:InitEvent() end function AddNumberComponent:InitEvent() local function onBtnClickHandler(target, x, y) if target == self.reduceBtn then self:Reduce() elseif target == self.addBtn then self:Add() elseif target == self.calcBtn then self:SetCurrCount(self.max_count) elseif target == self.numberBg then local function call_back(num) if self._use_delete_method then return end self:SetCurrCount(num) end GlobalEventSystem:Fire(EventName.OPEN_CALCULATOR_VIEW, self.max_count, call_back, Vector3(x, y, 0), self.calc_type) end end AddClickEvent(self.reduceBtn,onBtnClickHandler) AddClickEvent(self.addBtn,onBtnClickHandler) AddClickEvent(self.numberBg,onBtnClickHandler) AddClickEvent(self.calcBtn,onBtnClickHandler) end function AddNumberComponent:Reduce() self:SetCurrCount(self.curr_count - self.step) end function AddNumberComponent:Add() if self.curr_count + self.step > self.max_count then self:ShowTipsWord() else self:SetCurrCount(self.curr_count + self.step) end end function AddNumberComponent:SetCurrCount(count) if self.transform and not IsNull(self.transform) then self.curr_count = count self.curr_count = math.max(self.curr_count,self.min_count) self.curr_count = math.min(self.curr_count,self.max_count) if self.calc_type == 12 then--续时界面使用 self.numberText.text = string.format("%s/%s", self.curr_count, self.max_count) else self.numberText.text = self.curr_count end self:Fire(ComponentEvent.AddNumberComponent.CHANGE_COUNT,self.curr_count) if self.num_changed_call_back then self.num_changed_call_back() end end end function AddNumberComponent:GetCurrCount() return self.curr_count end function AddNumberComponent:SetVisibleCalcBtn( flag ) self.calcBtn:SetActive(flag) end function AddNumberComponent:SetVisibleBtn( ) self.reduceBtn:SetActive(false) self.addBtn:SetActive(false) self.calcBtn:GetComponent("RectTransform").anchoredPosition = Vector2(-18.3,-2) self.numberBg.transform.pivot = Vector2(0.5, 0.5) local numberBgTra = self.numberBg:GetComponent("RectTransform") numberBgTra.offsetMin = Vector2(0,0.5) numberBgTra.offsetMax = Vector2(-30,0.5) self.numberText.text = "请输入最低战力限制" end function AddNumberComponent:ShowTipsWord() if self.calc_type == 1 then Message.show("本次最多购买"..self.max_count.."个") elseif self.calc_type == 2 then Message.show("本次最多兑换"..self.max_count.."个") elseif self.calc_type == 3 then Message.show("战力最高设置为"..self.max_count) elseif self.calc_type == 4 then Message.show("等级最高设置为"..self.max_count.."级") elseif self.calc_type == 5 then Message.show("本次最多发"..self.max_count.."个") elseif self.calc_type == 6 then Message.show("本次最多可上架"..self.max_count.."个") elseif self.calc_type == 7 then Message.show("价格不能超过"..self.max_count) elseif self.calc_type == 8 then Message.show("本次最多出售"..self.max_count.."个") elseif self.calc_type == 9 then Message.show("本次最多使用"..self.max_count.."本") elseif self.calc_type == 10 then Message.show("本次最多可以制作"..self.max_count.."个") elseif self.calc_type == 11 then Message.show("本次最多合成"..self.max_count.."个") elseif self.calc_type == 12 then--续时界面使用 Message.show("本次最多使用"..self.max_count.."个") elseif self.calc_type == 13 then Message.show("剩余可选数量不足") elseif self.calc_type == 14 then Message.show("请先使用免费兑换次数") end end function AddNumberComponent:SetAddBtnOffset(offset) local temp_pos = self.addBtn.transform.anchoredPosition SetAnchoredPosition(self.addBtn.transform, temp_pos.x+offset, temp_pos.y) local temp_size = self.numberBg.transform.sizeDelta SetSizeDelta(self.numberBg.transform, temp_size.x+offset, temp_size.y) end function AddNumberComponent:SetNumberBgOffset(offset) local temp_pos = self.numberBg.transform.anchoredPosition SetAnchoredPosition(self.numberBg.transform, temp_pos.x, temp_pos.y+offset*0.5) local temp_size = self.numberBg.transform.sizeDelta SetSizeDelta(self.numberBg.transform, temp_size.x, temp_size.y+offset) end --传入组件大小(也就是父节点的大小,不懂用法可以看看其他是怎么用的) function AddNumberComponent:SetComponentWidth( width ) if width then self.transform:SetInsetAndSizeFromParentEdge(self.transform.EdgeLeft, 0, width) else self.transform:SetInsetAndSizeFromParentEdge(self.transform.EdgeLeft, 0, 300) end end function AddNumberComponent:SetNumTextColor( color ) self.numberText.text = HtmlColorTxt( self.numberText.text, color) end