質問編集履歴

2

質問に会った内容に対し、自分なりのコードを付け加えました。そして、現状の問題点を明確に記載しました。

2020/02/06 13:44

投稿

defour
defour

スコア21

test CHANGED
@@ -1 +1 @@
1
- [Unity]ボタンを押した時の現在の時刻とゲームスコア記録し、シーンをまたいで表示させたいです。
1
+ [Unity]PlayerPrefsで記録した現在の時刻(String型)とゲームの得点(Int型)を、シーンをまたいでCanvasのなかのテキストボックスに表示させたいです。
test CHANGED
@@ -6,11 +6,83 @@
6
6
 
7
7
  表示させたい場所は、Node(1)の中のTextで
8
8
 
9
- 「現在時刻: 2020年2月3日08:08 スコア: 29」といった具合にしたいです。
9
+ 「現在時刻: 2020年2月3日08:08 得点: 29」といった具合にしたいです。
10
10
 
11
11
  コードでは、FinishGameRecordメソッドを作りそれを、OnToHistroyButtonメソッドをアタッチした履歴ボタンの中に書いています。
12
12
 
13
+
14
+
15
+ 回答してくださった方のおかげで、下の画像のようにPlayerPrefsでデータを保存してシーンを移動することができました。
16
+
17
+ ![![イメージ説明](bb1648d112bd5ed4eaa5f9cfd3b43d23.png)
18
+
19
+
20
+
21
+ 現在のスクリプトが以下になります。
22
+
23
+ ```
24
+
25
+ public class ResultManager : MonoBehaviour
26
+
27
+ {
28
+
29
+ int resultGetScore_Num = SampleManager.getScore_Num();
30
+
31
+ string resultGetNowTime = SampleManager.getNowTime();
32
+
33
+
34
+
35
+ [SerializeField] GameObject nodePrefab;
36
+
37
+ [SerializeField] GameObject node;
38
+
39
+ [SerializeField] GameObject canvas;
40
+
41
+
42
+
43
+ public Text timeText;
44
+
45
+
46
+
47
+ // Start is called before the first frame update
48
+
13
- ```ここに言語を入力
49
+ void Start()
50
+
51
+ {
52
+
53
+ //node = Instantiate(nodePrefab);
54
+
55
+ //node.transform.SetParent(canvas.transform, false);
56
+
57
+
58
+
59
+ timeText.text = PlayerPrefs.GetString("NOW", "") + " 得点:"; // + PlayerPrefs.GetInt("SCORE","");
60
+
61
+
62
+
63
+
64
+
65
+ }
66
+
67
+
68
+
69
+ // Update is called once per frame
70
+
71
+ void Update()
72
+
73
+ {
74
+
75
+
76
+
77
+ }
78
+
79
+ }
80
+
81
+ ```
82
+
83
+
84
+
85
+ ```
14
86
 
15
87
  using System.Collections;
16
88
 
@@ -50,7 +122,13 @@
50
122
 
51
123
 
52
124
 
125
+ //現在時刻代入用の変数
126
+
127
+ public static string nowTime;
128
+
129
+
130
+
53
- DateTime now = DateTime.Now;
131
+ //private DateTime lastDateTime;
54
132
 
55
133
 
56
134
 
@@ -70,7 +148,7 @@
70
148
 
71
149
  // スコアのロード
72
150
 
73
- score_num = PlayerPrefs.GetInt("SCORE", 0);
151
+ //score_num = PlayerPrefs.GetInt("SCORE", 0);
74
152
 
75
153
 
76
154
 
@@ -80,7 +158,7 @@
80
158
 
81
159
  // 削除時の処理
82
160
 
83
- void OnDestroy()
161
+ /*void OnDestroy()
84
162
 
85
163
  {
86
164
 
@@ -90,7 +168,7 @@
90
168
 
91
169
  PlayerPrefs.Save();
92
170
 
93
- }
171
+ }*/
94
172
 
95
173
 
96
174
 
@@ -174,6 +252,12 @@
174
252
 
175
253
  leftTimeText.GetComponent<Text>().text = "残り時間:" + ((int)leftTime).ToString();
176
254
 
255
+
256
+
257
+ //現在時刻をStringで取得して代入
258
+
259
+ nowTime = System.DateTime.Now.ToString();
260
+
177
261
  }
178
262
 
179
263
 
@@ -186,7 +270,7 @@
186
270
 
187
271
  public GameObject scoreObject;
188
272
 
189
- private int score_num = 0;
273
+ public static int score_num = 0;
190
274
 
191
275
 
192
276
 
@@ -196,9 +280,19 @@
196
280
 
197
281
  {
198
282
 
283
+
284
+
199
- System.DateTime now = System.DateTime.Now;
285
+ //System.DateTime now = System.DateTime.Now;
200
-
286
+
201
- PlayerPrefs.SetString("key", now.ToBinary().ToString());
287
+ //PlayerPrefs.SetString("key", now.ToBinary().ToString());
288
+
289
+ //NOWというキーでnowTimeの文字列をセーブ
290
+
291
+ PlayerPrefs.SetString("NOW", nowTime);
292
+
293
+ //PlayerPrefs.SetString("Key_Time", lastDateTime.ToBinary().ToString());
294
+
295
+ //PlayerPrefs.Save();
202
296
 
203
297
 
204
298
 
@@ -206,7 +300,25 @@
206
300
 
207
301
  PlayerPrefs.Save();
208
302
 
303
+
304
+
209
-
305
+ }
306
+
307
+
308
+
309
+ public static int getScore_Num()
310
+
311
+ {
312
+
313
+ return score_num;
314
+
315
+ }
316
+
317
+ public static string getNowTime()
318
+
319
+ {
320
+
321
+ return nowTime;
210
322
 
211
323
  }
212
324
 
@@ -220,6 +332,12 @@
220
332
 
221
333
  FinishGameRecord();
222
334
 
335
+ //Debug.Log(lastDateTime);
336
+
337
+ Debug.Log(score_num);
338
+
339
+ Debug.Log(nowTime);
340
+
223
341
  }
224
342
 
225
343
 
@@ -284,10 +402,12 @@
284
402
 
285
403
  ```
286
404
 
287
-
288
-
289
- 説明が不十分な点があるかと思います。
290
-
291
- なたかアドバイスよろしくお願いいします。
292
-
293
- 必要な情報がありましたら、追記します。
405
+ 今困っていることは、PlayerPrefsで記録した現在の時刻(String型)とゲーム得点(Int型)それぞれが型が異なるため、「timeText.text = PlayerPrefs.GetString("NOW", "") + " 得点:";」のコードのように、ここまでは、表示できますが、その続きの「 + PlayerPrefs.GetInt("SCORE","");」で保存したScoreを表示できないです。
406
+
407
+
408
+
409
+ 今できていいことは、PlayerPrefsでSetIntで保存しInt型のScoreString型と混じっ状態で表示させることです。
410
+
411
+
412
+
413
+ どなたか、ご教示していただければ幸いです。

1

2020/02/06 13:44

投稿

defour
defour

スコア21

test CHANGED
File without changes
test CHANGED
@@ -4,9 +4,11 @@
4
4
 
5
5
  ![イメージ説明](928530dba3d52e86ffb094591b851c66.png)
6
6
 
7
- 表示させたい場所は、Node(1)の中のTextです。
7
+ 表示させたい場所は、Node(1)の中のTextで
8
+
8
-
9
+ 「現在時刻: 2020年2月3日08:08 スコア: 29」といった具合にしたいです。
10
+
9
- コードでは、FinishGameRecordメソッドを作りそれを、OnToHistroyButtonメソッドをアタッチした履歴ボンの中に書いています。
11
+ コードでは、FinishGameRecordメソッドを作りそれを、OnToHistroyButtonメソッドをアタッチした履歴ボンの中に書いています。
10
12
 
11
13
  ```ここに言語を入力
12
14
 
@@ -284,7 +286,7 @@
284
286
 
285
287
 
286
288
 
287
- 不十分な点があるかと思います。
289
+ 説明が不十分な点があるかと思います。
288
290
 
289
291
  どなたかアドバイスをよろしくお願いいたします。
290
292