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

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

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

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

Unity

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

Q&A

解決済

1回答

3281閲覧

Unity 初期化コードの使い方

jo1jo2jo3

総合スコア45

C#

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

Unity

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

0グッド

0クリップ

投稿2020/07/26 09:15

編集2020/07/26 09:28

動作確認の為にゲームクリア記録を削除して初期化したいです。

ゲームはクリアーしないと次に進めない12個のボタンを設定してあります。
1面クリアーしたら2面のボタンが押せるようになっています。
ゲームマネージャーに初期化コード 

PlayerPrefs.DeleteAll(); //ステージクリア記録データ削除 初期化

を入力して実行しましたがクリアー(初期化)されませんでした。
プログラムのどこかに記入しるようですがどこに記入するのでしょうか?
教えてください。
よろしくお願いします。
///////////////////////////////////////////////////////////////////////////////////////
①エラーでないが入力場所が違うと思います。
if (PlayerPrefs.GetInt ("CLEAR", 0) < StageNo) {
//セーブされているステージNoより今のステージNoが大きければ
PlayerPrefs.SetInt ("CLEAR", StageNo); //ステージナンバーを記録
PlayerPrefs.DeleteAll(); //ステージクリア記録データ削除 初期化
}

単独でPlayerPrefs.DeleteAll(); 入力時、前後のコードがわかりません。
/////////////////////////////////////////////////////////////////////////////////////////

ゲームマネージャースクリプトは下記

using

1using System.Collections; 2 3using UnityEngine.SceneManagement; 4 5public class GameManager : MonoBehaviour { 6 7 public int StageNo; //ステージナンバー 8 9 public bool isBallMoving; //ボール移動中か否か 10 11 public GameObject ballPrefab; //ボールプレハブ 12 public GameObject ball; //ボールオブジェクト 13 14 public GameObject goButton; //ボタン:ゲーム開始 15 public GameObject retryButton; //ボタン:リトライ 16 public GameObject clearText; //テキスト:クリア 17 18 public AudioClip clearSE; //効果音:クリア 19 private AudioSource audioSource;//オーディオソース 20 21 // Use this for initialization 22 void Start () { 23 retryButton.SetActive (false); //リトライボタンを非表示 24 isBallMoving = false; //ボールは「移動中ではない」 25 26 // オーディオソースを取得 27 audioSource = gameObject.GetComponent<AudioSource> (); 28 } 29 30 // Update is called once per frame 31 void Update () { 32 33 } 34 35 //GOボタンを押した 36 public void PushGoButton () { 37 //ボールの重力を有効化 38 Rigidbody2D rd = ball.GetComponent<Rigidbody2D>(); 39 rd.isKinematic = false; 40 41 retryButton.SetActive (true); //リトライボタンを表示 42 goButton.SetActive (false); //GOボタンを非表示 43 isBallMoving = true; //ボールは「移動中」 44 } 45 46 //リトライボタンを押した 47 public void PushRetryButton () { 48 Destroy (ball); //ボールオブジェクトを削除 49 50 //プレハブより新しいボールオブジェクトを作成 51 ball = (GameObject)Instantiate (ballPrefab); 52 53 retryButton.SetActive (false); //リトライボタンを非表示 54 goButton.SetActive (true); //GOボタンを表示 55 isBallMoving = false; //ボールは「移動中ではない」 56 } 57 58 //バックボタンを押した 59 public void PushBackButton () { 60 GobackStageSelect (); 61 } 62 63 //ステージクリア処理 64 public void StageClear () { 65 audioSource.PlayOneShot (clearSE);//クリア音再生 66 67 68 69 //セーブデータ更新 70 if (PlayerPrefs.GetInt ("CLEAR", 0) < StageNo) { 71 //セーブされているステージNoより今のステージNoが大きければ 72 PlayerPrefs.SetInt ("CLEAR", StageNo); //ステージナンバーを記録 73 PlayerPrefs.DeleteAll(); //ステージクリア記録データ削除 初期化 74 } 75 76 clearText.SetActive (true); //クリア表示 77 retryButton.SetActive (false); //リトライボタン非表示 78 79 //3秒後に自動的にステージ選択画面へ 時間変更 80 Invoke ("GobackStageSelect", 5.0f); 81 } 82 83 //移動処理 84 void GobackStageSelect () { 85 SceneManager.LoadScene ("StageSelectScene"); 86 } 87} 88 89 90 91 92 93 94 95 96コード

セレクトスクリプトは下記

using

1using UnityEngine.UI; 2using System.Collections; 3 4using UnityEngine.SceneManagement; 5 6public class StageSelectManager : MonoBehaviour { 7 8 public GameObject[] stageButtons; //ステージ選択ボタン配列 9 10 // Use this for initialization 11 void Start () { 12 //どのステージまでクリアしているのかをロード(セーブ前なら「0」) 13 int clearStageNo = PlayerPrefs.GetInt ("CLEAR", 0); 14 15 //ステージボタンを有効化 16 for (int i = 0; i <= stageButtons.GetUpperBound (0); i++) { 17 bool b; 18 19 if (clearStageNo < i) { 20 b = false; //前ステージをクリアしていなければ無効 21 } else { 22 b = true; //前ステージをクリアしていれば有効 23 } 24 25 //ボタンの有効/無効を設定 26 stageButtons [i].GetComponent<Button> ().interactable = b; 27 } 28 } 29 30 // Update is called once per frame 31 void Update () { 32 33 } 34 35 //ステージ選択ボタンを押した 36 public void PushStageSelectButton (int stageNo) { 37 //ゲームシーンへ 38 //SceneManager.LoadScene ("PuzzleScene" + stageNo); 変更前 39 FadeManager.Instance.LoadScene (("PuzzleScene"+ stageNo), 1.0f); //変更 40 } 41} 42 43 44 45 46 47コード

セレクトのスクリプトにPlayerPrefs.DeleteAll(); を入力して実行したら初期化できましたが
入力するところはあっていますか?

//ステージ選択ボタンを押した
public void PushStageSelectButton (int stageNo) {
//ゲームシーンへ
//SceneManager.LoadScene ("PuzzleScene" + stageNo); 変更前
FadeManager.Instance.LoadScene (("PuzzleScene"+ stageNo), 1.0f); //変更
PlayerPrefs.DeleteAll();//初期化
}
}

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

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

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

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

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

guest

回答1

0

ベストアンサー

入力するところはあっていますか?

それ自体は作っている本人しかわからないことですが、少なくとも前者は私でも「変だな」と思います。キー CLEAR に値を保存した直後にキーと値を全部削除しているためです。

投稿2020/07/26 11:05

bboydaisuke

総合スコア5270

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

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

jo1jo2jo3

2020/07/26 16:05

回答ありがとうございます。 とりあえず初期化できたのでOKにしておきます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問