質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

解決済

unity ] シーンが移行せずに常に画面にうつり続けてしまう

Satsuki_
Satsuki_

総合スコア7

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1回答

0評価

0クリップ

159閲覧

投稿2022/06/27 09:09

初心者です。unityで次のサイトを参考にして2Dのゲームを作成しています。
Unityでゲームを作ろう!2Dアクションゲーム「ユニティちゃんの2Dアクション」

下記リンクの手順まで終了したのですが、キャラクターの後ろに常にゲームクリア画面、ゲームオーバー画面が表示されてしまっています。
クリア&ゲームオーバー処理の作り方(2):キャンバスの作成
コードの書き間違え等確認したのですがありませんでした。どうすれば解決するのでしょうか?

以下にGamemanagerのソースコードとヒエラルキーを載せておきます
イメージ説明

C#

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //追加 [RequireComponent(typeof(MoveSceneManager))] [RequireComponent(typeof(SaveManager))] [RequireComponent(typeof(SoundManager))] [DefaultExecutionOrder(-5)] public class GameManager : SingletonMonoBehaviour<GameManager> { [Header("シーンロード時に自動生成するプレハブを登録")] [SerializeField] GameObject[] prefabs = null; //追加 [Header("UIの設定")] [SerializeField] GameObject clearCanvasPrefab = null; [SerializeField] GameObject gameOverCanvasPrefab = null; [SerializeField] string nextButtonName = "NextButton"; [SerializeField] string retryButtonName = "RetryButton"; [SerializeField] string titleButtonName = "TitleButton"; MoveSceneManager moveSceneManager; SaveManager saveManager; SoundManager soundManager; //追加 bool isClear = false; bool isGameOver = false; int numOfCoins = 0; int correctedCoins = 0; public int CorrectedCoins { set { correctedCoins = value; if (correctedCoins >= numOfCoins) { Clear(); } } get { return correctedCoins; } } protected override void Awake() { base.Awake(); if (Debug.isDebugBuild) { } moveSceneManager = GetComponent<MoveSceneManager>(); saveManager = GetComponent<SaveManager>(); soundManager = GetComponent<SoundManager>(); } void Start() { if (Debug.isDebugBuild) { InstantiateWhenLoadScene(); InitGame(); //追加 } } void Update() { } public void InstantiateWhenLoadScene() { if (moveSceneManager.SceneName == "Title") { return; } foreach (GameObject prefab in prefabs) { Instantiate(prefab, transform.position, Quaternion.identity); } } //--ここから追加-- //ゲーム初期化メソッド public void InitGame() { isClear = false; isGameOver = false; numOfCoins = GameObject.FindGameObjectsWithTag("Coin").Length; correctedCoins = 0; } public void Clear() { if (isClear || isGameOver) { return; } isClear = true; GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>().isActive = false; //クリア画面のキャンバスを生成 Instantiate(clearCanvasPrefab, transform.position, Quaternion.identity); //ボタンのコンポーネントを取得 Button nextButton = GameObject.Find(nextButtonName).GetComponent<Button>(); Button titleButton = GameObject.Find(titleButtonName).GetComponent<Button>(); //ボタンに、クリックしたときの処理を登録 //ただし「次のステージ」ボタンは次のステージがないときは押せないようにする if (moveSceneManager.CurrentSceneNum < moveSceneManager.NumOfScene - 1) { nextButton.onClick.AddListener(() => moveSceneManager.MoveToScene(moveSceneManager.CurrentSceneNum + 1)); } else { nextButton.interactable = false; } titleButton.onClick.AddListener(() => moveSceneManager.MoveToScene(0)); //タイトル画面に戻るので、シーン番号は0番 } public void GameOver() { if (isGameOver || isClear) { return; } isGameOver = true; GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>().isActive = false; //ゲームオーバー画面のキャンバスを生成 Instantiate(gameOverCanvasPrefab, transform.position, Quaternion.identity); //ボタンのコンポーネントを取得 Button retryButton = GameObject.Find(retryButtonName).GetComponent<Button>(); Button titleButton = GameObject.Find(titleButtonName).GetComponent<Button>(); //ボタンに、クリックしたときの処理を登録 retryButton.onClick.AddListener(() => moveSceneManager.MoveToScene(moveSceneManager.CurrentSceneNum)); //リトライなので、今と同じシーンを再読み込み titleButton.onClick.AddListener(() => moveSceneManager.MoveToScene(0)); //タイトル画面に戻るので、シーン番号は0番 } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。