質問: "Point : " + Point.ToString(); } } ``` ゲームオーバーのコードは以下になります。 ``` using System.Collections; using System.Collections.Generic; using UnityEngine; // UIを使うための魔法の一言 using UnityEngine.UI; public class Gameover : MonoBehaviour { //Gameover_textというゲームオブジェクトの変数を作る public GameObject Gameover_text; public GameObject Retry_Button; // 何かと触れると、ゲームオーバーとリトライボタンを表示する void OnCollisionEnter2D(Collision2D coll) { Gameover_text.SetActive(true); Retry_Button.SetActive(true); } } ``` ### 補足情報(FW/ツールのバージョンなど) 現段階はこのような画面になっています。 ![ここにより詳細な情報を記載してください。](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/f9e3d1c75bdbda3f68874ad4101015e5.jpeg)
回答: **■「Time.timeScale」を使う場合** Gameoverクラスの`OnCollisionEnter2D`メソッド内に`Time.timeScale = 0.0f;`を追記。 (ただし効果を及ぼすものと及ぼさないものがあるので注意。多分今回は及ぼさない) **■「enabledをfalseにする」場合** Gameoverクラスの `public GameObject Retry_Button;`の次の行に`public Score scoreComp;`と追加。 `OnCollisionEnter2D`メソッドの先頭に`scoreComp.enebled = false;`と追加。 インスペクターから、scoreCompにシーン上のScoreクラスが付いたオブジェクトをドラッグ&ドロップ。 (Score内の処理が全て行われなくなるのでこれで問題が無いか要確認) **■おまけ:bool変数を使う場合** Scoreクラスの `int Point;`の次の行に`public bool isGame = true;`と追加。 `Update`メソッドの先頭に`if (!isGame) return;`と追加。 (これで「isGameがfalseだった時はUpdateメソッド内のここから下の処理はしない」というコードになる) 次にGameoverクラスの `public GameObject Retry_Button;`の次の行に`public Score scoreComp;`と追加。 `OnCollisionEnter2D`メソッドの先頭に`scoreComp.isGame = false;`と追加。 インスペクターから、scoreCompにシーン上のScoreクラスが付いたオブジェクトをドラッグ&ドロップ。 (これで「ゲームオーバー時にScoreのisGameをfalseにする」という処理になる) 以上2点から、「ゲームオーバー時はポイントを加算しない」という処理になります。 それぞれ意味が異なるので「なぜこうなるのか」を把握しておくと今後も役立つので色々調べてみてください。