require("Base/Stack") local RiceCtrlView = {} local riceCtrl = "RiceCtrl" local bgNameList = {} local playerDataList = {} --此处也是用new的方式创建 function RiceCtrlView:New() local b = {} b.Ctrl = poolManager:LoadAsset(riceCtrl, PoolManager.AssetType.GameObject) b.Ctrl.name = "riceCtrl" b.Ctrl.transform:SetParent(UIManager.uiRoot.transform.parent) b.Ctrl.transform.position = Vector3(-100, -100, -100) b.gameObject = b.Ctrl b.transform = b.Ctrl.transform setmetatable(b, { __index = RiceCtrlView }) return b end --设置数据 function RiceCtrlView:Awake(_bgList,_playerList) if _bgList then bgNameList = _bgList end if _playerList then playerDataList = _playerList end self.speed = 0 self.bgItemList = {} self.playerRoadList = {} self.spLoader = SpriteLoader.New() UIManager.camera.clearFlags = CameraClearFlags.Depth self.bgList = Util.GetGameObject(self.Ctrl.gameObject,"Canvas/BgList") self.imgPre = Util.GetGameObject(self.bgList,"imgPre") self.camara = Util.GetGameObject(self.Ctrl.gameObject,"Camera") self.roadList = Util.GetGameObject(self.Ctrl.gameObject,"Canvas/RoadList") FixedUpdateBeat:Add(self.OnUpdate, self)--长按方法注册 --加载背景--并不滚动,有几个加载几个 self:SetBg() self:SetPlayer() Util.SetLocalPosition(self.camara.transform, 0, 0, -10) end --设置背景图 function RiceCtrlView:SetBg() for i = 1, #bgNameList do local go = {} go = newObjToParent(self.imgPre,Util.GetTransform(self.Ctrl, "Canvas/BgList")) go.name = "bg"..i go:GetComponent("Image").sprite = self.spLoader:LoadSprite(bgNameList[i]) go:GetComponent("Image"):SetNativeSize() go.gameObject:SetActive(true) self.bgItemList[i] = go end end --加载玩家 function RiceCtrlView:SetPlayer() for i = 1, 4 do self.playerRoadList[i] = {} self.playerRoadList[i] = SubUIManager.Open(SubUIConfig.PlayerRiceView,self.roadList.transform,i,playerDataList.Result[i]) end end --设置玩家竖直飘动 function RiceCtrlView:ResetPlayerPosVertical() for i,v in ipairs(self.playerRoadList) do v:ResetSinglePlayerPosVertical() end end --设置玩家本场比赛事件数据 function RiceCtrlView:ReloadPlayersData(_datas) for i,v in ipairs(self.playerRoadList) do v:ReloadData(_datas.Result[i]) end end --设置玩家显示或者隐藏数据 function RiceCtrlView:HideAllPlayers(_state) for i,v in ipairs(self.playerRoadList) do v:HidePlayer(_state) end end --设置游戏状态 function RiceCtrlView:SetGameState(_state) self.isRunning = _state for i,v in ipairs(self.playerRoadList) do v:SetSinglePlayerState(_state) end end --重置游戏 function RiceCtrlView:ResetGame() self.isRunning = false for i,v in ipairs(self.playerRoadList) do v:ResetSinglePlayer() end Util.SetLocalPosition(self.camara.transform, 0, 0, -10) end --upDate function RiceCtrlView:OnUpdate() if self.isRunning then local x = 0 for i,v in ipairs(self.playerRoadList) do if x < v:GetCurPosX() then x = v:GetCurPosX() end end Util.SetLocalPosition(self.camara.transform, x/276, 0, -10) end end --卸载地图 function RiceCtrlView:Dispose() FixedUpdateBeat:Remove(self.OnUpdate, self) self.speed = 0 for i,v in ipairs(self.bgItemList) do destroy(v.gameObject) end for i,v in ipairs(self.playerRoadList) do SubUIManager.Close(v) end --卸载地图 if self.Ctrl then poolManager:UnLoadAsset(riceCtrl, self.Ctrl, PoolManager.AssetType.GameObject) self.Ctrl = nil end UIManager.camera.clearFlags = CameraClearFlags.Skybox if self.spLoader then self.spLoader:Destroy() self.spLoader = nil end end return RiceCtrlView