前提・実現したいこと
Unityにおいて
ステージ選択画面にもステージごとにリザルト画面の星を表示したいです。
下図のステージ選択画面でも取得した★をステージごとに表示したいと考えています。
しかしリザルト画面においてPlayerprefsを用いて保存したはずの★の数が、
シーンを変えるとそもそもキーがなくなるという問題があり、実現できません。
どなたかクリア画面のコードと、ステージ選択画面のコードを参考にお力お貸しください。
ステージ1クリア画面のコード
IEnumerator Evaluation() { if (isGoal == true)//ステージをゴールのみした場合 { NoStar[0].SetActive(true);//左側の星の枠斑をセット NoStar[1].SetActive(true);//真ん中の星の枠斑をセット NoStar[2].SetActive(true);//右側の星の枠斑をセット yield return null; seScr.StarSE();//SEを流す Star[0].SetActive(true);//左側の☆を表示 hosi = 1;//hosiに1を代入 yield return new WaitForSeconds(0.65f);//0.65秒待つ if (time < 10.0) {//ステージをゴールして、タイムも10秒より短いタイムの時 yield return null; seScr.StarSE();//SEを流す Star[1].SetActive(true);//真ん中の星を表示 hosi = 2;//星に2を代入 yield return new WaitForSeconds(0.65f); if (time < 5.0)//クリアタイムが5秒以下の場合 { yield return null; seScr.StarSE(); Star[2].SetActive(true); hosi = 3; yield return new WaitForSeconds(0.65f); } } } if (PlayerPrefs.HasKey("SAVESTAR" + StageNo))//もしステージ1の★のデータを持っていた場合 { if (PlayerPrefs.GetInt("SAVESTAR" + StageNo) < hosi)//もし以前のプレイ時よりも★の獲得枚数が多い場合 { PlayerPrefs.SetInt("SAVESTAR" + StageNo, hosi);//★の個数をセットする } PlayerPrefs.Save(); yield break; } PlayerPrefs.SetInt("SAVESTAR" + StageNo, hosi); PlayerPrefs.Save(); yield break; } }
選択画面におけるコード
public StageNo=1;
C# if (PlayerPrefs.HasKey("SAVESTAR" + StageNo)) { int Hosi = PlayerPrefs.GetInt("SAVESTAR" + StageNo); if (Hosi <= 1)//もし星が1つなら { Star[0].SetActive(true);//左側の☆を表示 if (Hosi <= 2)//もし星が二つなら { Star[1].SetActive(true);//真ん中の☆を表示 if (Hosi <= 3)//もし星が三つなら { Star[2].SetActive(true);//右側の★を表示 } } } } }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/12 12:40
2020/02/12 12:41
2020/02/12 12:42