// 削除フラグが立っているマス目のブロックを削除 private void CheckDeleteBlocks() { Block[] targets = new Block[0]; int x = 0; // ターンの継続判定,チェイン数の更新を行う if (turnManager.ChainTimerProp > 0) { // チェイン継続処理 chainManager.AddChainNum(); // タイマーにチェイン継続時間をセットする turnManager.SetChainTimer(DeleteTime + FallTime * GetVerticalMatch()); } else { // チェインリセット処理 chainManager.ResetChainNum(); // タイマーにチェイン継続時間をセットする turnManager.SetChainTimer(DeleteTime + FallTime * GetVerticalMatch()); } // チェイン判定終了後ブロックの削除を開始する for (int i = StageSize - 1; i + 1 > 0; i--) { for (int j = 0; j < StageSize; j++) { // フラグの立っているマス目のブロックを削除 if (deleteTable[i, j]) { Array.Resize(ref targets, x + 1); targets[x] = stage[i, j].GetComponent <Block>(); deleteTable[i, j] = false; x++; } } } // 現在のチェイン数と消したブロック数に応じてスコアを加算 scoreManager.AddScore(chainManager.CurrentChainProp, targets.Length); // 削除対象のブロックが存在するなら削除 if (targets.Length > 2) { StartCoroutine(DeleteBlock(targets)); } }