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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2109閲覧

Unity  どこまでクリアか記録 セレクト画面に反映 PlayerPrefs

jo1jo2jo3

総合スコア45

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/06/20 16:58

編集2020/06/20 17:03
コード ```Unityのゲームプログラムについて質問です。 UnityではじめるC# という本でサンプルゲームをつくっております。 PlayerPrefsのプログラムがうまく動作しません。 <現状> ゲームステージが9個あり、4ステージクリアー後に5ステージに進めるはずが 5ステージに進めません。 1ステージクリアー後2ステージへすすめることができ、2ステージクリアーすると3ステージへ ゲームセレクトができるプログラムですが4ステージクリアーしても5へすすめません。 エラーはでていません。どこが悪いかわかりませんので教えてください。よろしくお願いします。 <やりたいこと> クリアーしたら次のゲームへすすめるようにしたいです。 1⃣ゲームプログラムと2⃣ゲームセレクトプログラムを添付します。 よろしくお願いします。 1⃣ゲームプログラム ```using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; public class GameManager : MonoBehaviour { public int StageNo; //ステージナンバー public bool isBallMoving; //ボール移動中か否か public GameObject ballPrefab; //ボールプレハブ public GameObject ball; //ボールオブジェクト public GameObject goButton; //ボタン:ゲーム開始 public GameObject retryButton; //ボタン:リトライ public GameObject clearText; //テキスト:クリア public AudioClip clearSE; //効果音:クリア private AudioSource audioSource;//オーディオソース // Use this for initialization void Start () { retryButton.SetActive (false); //リトライボタンを非表示 isBallMoving = false; //ボールは「移動中ではない」 // オーディオソースを取得 audioSource = gameObject.GetComponent<AudioSource> (); } // Update is called once per frame void Update () { } //GOボタンを押した public void PushGoButton () { //ボールの重力を有効化 Rigidbody2D rd = ball.GetComponent<Rigidbody2D>(); rd.isKinematic = false; retryButton.SetActive (true); //リトライボタンを表示 goButton.SetActive (false); //GOボタンを非表示 isBallMoving = true; //ボールは「移動中」 } //リトライボタンを押した public void PushRetryButton () { Destroy (ball); //ボールオブジェクトを削除 //プレハブより新しいボールオブジェクトを作成 ball = (GameObject)Instantiate (ballPrefab); retryButton.SetActive (false); //リトライボタンを非表示 goButton.SetActive (true); //GOボタンを表示 isBallMoving = false; //ボールは「移動中ではない」 } //バックボタンを押した public void PushBackButton () { GobackStageSelect (); } //ステージクリア処理 public void StageClear () { audioSource.PlayOneShot (clearSE); //クリア音再生 //セーブデータ更新 if (PlayerPrefs.GetInt ("CLEAR", 0) < StageNo) { //セーブされているステージNoより今のステージNoが大きければ PlayerPrefs.SetInt ("CLEAR", StageNo); //ステージナンバーを記録 } clearText.SetActive (true); //クリア表示 retryButton.SetActive (false); //リトライボタン非表示 //3秒後に自動的にステージ選択画面へ Invoke ("GobackStageSelect", 3.0f); } //移動処理 void GobackStageSelect () { SceneManager.LoadScene ("StageSelectScene"); } } ```ここに言語を入力 コード ```using UnityEngine; using UnityEngine.UI; using System.Collections; using UnityEngine.SceneManagement; public class StageSelectManager : MonoBehaviour { public GameObject[] stageButtons; //ステージ選択ボタン配列 // Use this for initialization void Start () { //どのステージまでクリアしているのかをロード(セーブ前なら「0」) int clearStageNo = PlayerPrefs.GetInt ("CLEAR", 0); //ステージボタンを有効化 for (int i = 0; i <= stageButtons.GetUpperBound (0); i++) { bool b; if (clearStageNo < i) { b = false; //前ステージをクリアしていなければ無効 } else { b = true; //前ステージをクリアしていれば有効 } //ボタンの有効/無効を設定 stageButtons [i].GetComponent<Button> ().interactable = b; } } // Update is called once per frame void Update () { } //ステージ選択ボタンを押した public void PushStageSelectButton (int stageNo) { //ゲームシーンへ SceneManager.LoadScene ("PuzzleScene" + stageNo); } }

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

4ステージのゲームマネージャー画面割り当て数字の間違いでした。 4記入ではなく1になっていた為、4クリアしても1がクリアしたことになっていました。

投稿2020/06/20 17:52

jo1jo2jo3

総合スコア45

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問