当方、現在Unityにて3ステージ制のタイムアタックと獲得スコアを競う2Dアクションゲームを制作しています。
クリアののちにリザルト画面に各ステージのスコアとクリアタイムを表示したいのですが、現状のコードだと最終ステージの結果のみがリザルト画面に反映されてしまうという状態です。
get:setで変数の取得をするところまでは出来ているのですが、各ステージの結果を反映させるとなれば、やはりスクリプトを分ける必要があるのでしょうか?
教えていただければ幸いです。
c#
1Result_Time.cs 2 3using System.Collections; 4using System.Collections.Generic; 5using UnityEngine; 6using UnityEngine.UI; 7 8public class Result_Time : MonoBehaviour 9{ 10 /* public変数 */ 11 public Text timeText; 12 13 /* private変数 */ 14 float time; 15 16 void Start() 17 { 18 time = Timer.GetTime(); 19 20 timeText.text = $"Time : { time.ToString("N2") }"; //「Time : ~~.~~」表記 21 } 22 23}
c#
1Result_Score.cs 2 3using System.Collections; 4using System.Collections.Generic; 5using UnityEngine; 6using UnityEngine.UI; 7 8public class Result_Score : MonoBehaviour 9{ 10 /* public変数 */ 11 public Text scoreText; 12 13 /* private変数 */ 14 int score; 15 16 void Start() 17 { 18 score = Score.GetScore(); 19 20 scoreText.text = $"Score : { score.ToString("0000") }"; //「score : ~~」表記 21 } 22 23}
c#
1Score.cs 2 3using System.Collections; 4using System.Collections.Generic; 5using UnityEngine; 6using UnityEngine.UI; 7 8public class Score : MonoBehaviour 9{ 10 /* public変数 */ 11 public Text scoreText; 12 public static int score; 13 14 /* private変数 */ 15 16 void Awake() 17 { 18 score = 0; 19 } 20 void Update() 21 { 22 scoreText.text = $"Score : { score.ToString("0000") }"; //「score : ~~」表記 23 } 24 25 public static int GetScore() 26 { 27 return score; 28 } 29 30 public void ScorePlus() 31 { 32 score += 150; 33 } 34}
c#
1Timer.cs 2 3using System.Collections; 4using System.Collections.Generic; 5using UnityEngine; 6using UnityEngine.UI; 7 8public class Timer : MonoBehaviour 9{ 10 /* private変数 */ 11 bool isPlaying; 12 13 /* public変数 */ 14 public static float time; 15 public Text timerText; 16 public CollisionCheck check; 17 18 19 void Awake() 20 { 21 time = 0; 22 } 23 void Update() 24 { 25 timerText.text = $"Time : { time.ToString("N2") }"; //「Time : ~~.~~」表記 26 27 //ゲーム中かどうか 28 isPlaying = check.IsPlaying(); 29 30 if(isPlaying) 31 { 32 time += Time.deltaTime; //前フレーム→今フレームの時間差を経過時間として加算 33 } 34 } 35 36 public static float GetTime() 37 { 38 return time; 39 } 40} 41
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/11 03:58
2021/06/11 04:28
2021/06/11 04:45