DungeonTimer = DungeonTimer or BaseClass(UIPartical) function DungeonTimer:__init(parent, endTime, callBack, layer_name,position) self.gameObject = GameObject.New("timer") self.gameObject.transform:SetParent(parent, false) -- self.img = self.gameObject:AddComponent(typeof(UnityEngine.UI.Image)) self.transform = self.gameObject.transform -- self.transform.sizeDelta = Vector2(0,0) self.position = position self.runOut_callBack = callBack self.endTime = endTime self.layer_name = layer_name or "Main" self:Run() end function DungeonTimer:Run() self:Stop() local leftTime = self.endTime - TimeUtil:getServerTime() if leftTime <= 0 then if self.runOut_callBack then self.runOut_callBack() end return elseif leftTime == 3 then self:AddUIEffect("ui_effect_paiweinumber", self.transform, self.layer_name, nil, 1, false, 3) -- lua_resM:setImageSprite(self, self.img, "sceneUI_asset", "scene_countdown_"..leftTime, true) end if self.timer_id then GlobalTimerQuest:CancelQuest(self.timer_id) self.timer_id = nil end local function timer_handler() local leftTime = self.endTime - TimeUtil:getServerTime() if leftTime == 0 then -- lua_resM:setImageSprite(self, self.img, "sceneUI_asset", "scene_countdown_start", true) -- self:AddUIEffect("effect_paiwei_02", self.transform, self.layer_name, nil, 1, false, 2, nil, function() self:Stop(true) if self.runOut_callBack then self.runOut_callBack() self.runOut_callBack = nil end -- end) elseif leftTime < 0 then if self.runOut_callBack then self.runOut_callBack() self.runOut_callBack = nil end else if leftTime == 3 then self:AddUIEffect("ui_effect_paiweinumber", self.transform, self.layer_name, nil, 1, false, 3) -- lua_resM:setImageSprite(self, self.img, "sceneUI_asset", "scene_countdown_"..leftTime, true) end end end if self.position then SetLocalPosition(self.transform,self.position.x,self.position.y,0) end self.gameObject:SetActive(true) self.timer_id = GlobalTimerQuest:AddPeriodQuest(timer_handler, 1) end function DungeonTimer:Stop(hide) if self.timer_id then GlobalTimerQuest:CancelQuest(self.timer_id) self.timer_id = nil end if hide and self.gameObject then self.gameObject:SetActive(false) end end function DungeonTimer:__delete() self:Stop() if self.gameObject then destroy(self.gameObject, false) self.gameObject = nil end self.runOut_callBack = nil end