上の写真のように、履歴へのボタンを押した時、押した時の現在時刻と左上の29と書いてあるスコアを記録して、下の写真のようなリザルト画面に表示させたいです。
表示させたい場所は、Node(1)の中のTextで
「現在時刻: 2020年2月3日08:08 得点: 29」といった具合にしたいです。
コードでは、FinishGameRecordメソッドを作りそれを、OnToHistroyButtonメソッドをアタッチした履歴ボタンの中に書いています。
回答してくださった方のおかげで、下の画像のようにPlayerPrefsでデータを保存してシーンを移動することができました。
![
現在のスクリプトが以下になります。
public class ResultManager : MonoBehaviour { int resultGetScore_Num = SampleManager.getScore_Num(); string resultGetNowTime = SampleManager.getNowTime(); [SerializeField] GameObject nodePrefab; [SerializeField] GameObject node; [SerializeField] GameObject canvas; public Text timeText; // Start is called before the first frame update void Start() { //node = Instantiate(nodePrefab); //node.transform.SetParent(canvas.transform, false); timeText.text = PlayerPrefs.GetString("NOW", "") + " 得点:"; // + PlayerPrefs.GetInt("SCORE",""); } // Update is called once per frame void Update() { } }
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using System; using UnityEngine.SceneManagement; public class SampleManager : MonoBehaviour { [SerializeField] GameObject monsterViewPrefab; [SerializeField] GameObject monster; bool isThereMonster; //monster存在フラグ。待機時間を設ける為にフラグを持つ [SerializeField] GameObject canvas; [SerializeField] GameObject leftTimeText; [SerializeField] GameObject menuView; //[SerializeField] GameObject finalScoreText; public float leftTime = 20; //現在時刻代入用の変数 public static string nowTime; //private DateTime lastDateTime; void Start() { audioSource = gameObject.GetComponent<AudioSource>(); SpawnMonster(); RefreshpScoreText(); leftTimeText.GetComponent<Text>().text = ((int)leftTime).ToString(); // スコアのロード //score_num = PlayerPrefs.GetInt("SCORE", 0); } // 削除時の処理 /*void OnDestroy() { // スコアを保存 PlayerPrefs.SetInt("SCORE", score_num); PlayerPrefs.Save(); }*/ public void SpawnMonster() { monster = Instantiate(monsterViewPrefab); monster.transform.SetParent(canvas.transform, false); isThereMonster = true; if (isThereMonster == true) { Debug.Log("Success"); } //return monster.GetComponent<MonsterView>(); } void Update() { // monsterがさっきまで存在していたが今は無い場合、3秒後に生成 if (isThereMonster && monster == null) { isThereMonster = false; Invoke("SpawnMonster", 1.5f); } //1秒に1ずつ減らしていく leftTime -= Time.deltaTime; //マイナスは表示しない if (leftTime < 0) leftTime = 0; //GetComponent<Text>().text = "残り時間:" + ((int)leftTime).ToString(); if (leftTime <= 0) { menuView.SetActive(true); GameObject obj = GameObject.Find("SampleImage(Clone)"); Destroy(obj); //FinishGameRecord(); //inalScoreText.SetActive(true); } leftTimeText.GetComponent<Text>().text = "残り時間:" + ((int)leftTime).ToString(); //現在時刻をStringで取得して代入 nowTime = System.DateTime.Now.ToString(); } public AudioClip clearSE; private AudioSource audioSource; public GameObject scoreObject; public static int score_num = 0; public void FinishGameRecord() { //System.DateTime now = System.DateTime.Now; //PlayerPrefs.SetString("key", now.ToBinary().ToString()); //NOWというキーでnowTimeの文字列をセーブ PlayerPrefs.SetString("NOW", nowTime); //PlayerPrefs.SetString("Key_Time", lastDateTime.ToBinary().ToString()); //PlayerPrefs.Save(); PlayerPrefs.SetInt("SCORE", score_num); PlayerPrefs.Save(); } public static int getScore_Num() { return score_num; } public static string getNowTime() { return nowTime; } public void OnToHistroyButton() { SceneManager.LoadScene("Histroy"); FinishGameRecord(); //Debug.Log(lastDateTime); Debug.Log(score_num); Debug.Log(nowTime); } public void GetMole() { score_num += 1; RefreshpScoreText(); TouchSound(); } void RefreshpScoreText() { Text scoreText = scoreObject.GetComponent<Text>(); scoreText.text = string.Format("Score:{0}", score_num); } void TouchSound() { audioSource.PlayOneShot(clearSE); } /*public void OnTap() { audioSource.PlayOneShot(clearSE); score += 10; Debug.Log("MonsterをTap"); Destroy(this.gameObject); //Invoke("SpawnLead",3.0f); }*/ }
今困っていることは、PlayerPrefsで記録した現在の時刻(String型)とゲーム得点(Int型)それぞれが型が異なるため、「timeText.text = PlayerPrefs.GetString("NOW", "") + " 得点:";」のコードのように、ここまでは、表示できますが、その続きの「 + PlayerPrefs.GetInt("SCORE","");」で保存したScoreを表示できないです。
今できていないことは、PlayerPrefsでSetIntで保存したInt型のScoreをString型と混じった状態で表示させることです。
どなたか、ご教示していただければ幸いです。
回答1件
あなたの回答
tips
プレビュー