// Update is called once per frame void Update() { if (_State == GameState.End) { return; } if (Input.GetMouseButtonDown(0)) { Vector3Int vp = getClickPos(); if (_FrontMap.isPosValid(vp)) { if (_State == GameState.Wait) { _BackMap.makeMineField(_MineNumber, Camera.main.ScreenToWorldPoint(Input.mousePosition)); _State = GameState.Run; } if (_FrontMap.flipTile(vp, true)) { // 普通点了一下 _SE.playSE("click"); checkWinState(); } else { // 点死了 _State = GameState.End; _SE.playSE("explode"); } } } else if (Input.GetMouseButtonDown(1)) { Vector3Int vp = getClickPos(); if (_FrontMap.isPosValid(vp)) { TileBase tb = _FrontMap.GetTile(vp); if (tb != null) { _SE.playSE("mark"); if (tb == _FrontMap._MarkTypes[0]) { _FrontMap.SetTile(vp, _FrontMap._MarkTypes[1]); } else if (tb == _FrontMap._MarkTypes[1]) { _FrontMap.SetTile(vp, _FrontMap._MarkTypes[2]); } else { _FrontMap.SetTile(vp, _FrontMap._MarkTypes[0]); } } } } }
private void Update() { Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition); if (_State == GameState.WAIT) { // 如果在等候状态,需要吃掉改变难度后的一次抬起 if (!_CoolDown) { _CoolDown = true; return; } if (Input.GetMouseButtonUp(0)) { // 左键踩地块 第一次点击生成地雷(如果在格子中才生成地雷) if (_MM.isPosInCells(pos)) { _MM.makeMines(pos, _XCount, _YCount, _MineCount); clickTile(pos); _Timer.startTimer(); //定时器开始工作 } else { _SE.playSE("click"); } } else if (Input.GetMouseButtonUp(1)) { // 右键标记 changeMark(pos); } } else if (_State == GameState.RUNNING) { if (Input.GetMouseButtonUp(0)) { clickTile(pos); } else if (Input.GetMouseButtonUp(1)) { changeMark(pos); } if (Input.GetKeyUp(KeyCode.R)) { resetGame(); } } // 改变难度时 else if (_State == GameState.CHANGE) { // 单击右键 取消改变难度 if (Input.GetMouseButtonUp(1)) { _DifficultyGO.SetActive(false); _State = _StateCache; } } else if (_State == GameState.END) { if (Input.GetKeyUp(KeyCode.R)) { resetGame(); } } }