teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2019/10/02 04:51

投稿

hogefugapiyo
hogefugapiyo

スコア3307

answer CHANGED
@@ -1,4 +1,42 @@
1
1
  ``ScoreController``への参照がないからだと思います。
2
2
  ``int result = ScoreController.score;`` と言われていますが、一体どの``ScoreController``のことを言っているのかがスクリプト側からはわかりません。
3
3
 
4
- なので参照先をFindなりアタッチなりで設定してあげればどうでしょうか。
4
+ なので参照先をFindなりアタッチなりで設定してあげればどうでしょうか。
5
+
6
+ #追記
7
+ 状況再現するのがめんどくさかったのでかなり無理矢理作りましたが、表示を更新すれば問題なく動いているように思います。
8
+ デバッグ用に画面をクリックすればAddScoreを実行してテキストを更新することでテキストにスコアを反映させています。
9
+
10
+ ```cs
11
+ // Result.cs
12
+
13
+ using System.Collections;
14
+ using System.Collections.Generic;
15
+ using UnityEngine;
16
+ using UnityEngine.UI;
17
+
18
+ public class Result : MonoBehaviour {
19
+ GameObject resultScore;
20
+ void Start() {
21
+
22
+ var reffernceObj = GameObject.Find("Score");
23
+ ScoreController result = reffernceObj.GetComponent<ScoreController>();
24
+
25
+ this.resultScore = GameObject.Find("Result");
26
+ resultScore.GetComponent<Text>().text = "SCORE: " + result.GetScore();
27
+ }
28
+
29
+ private void Update() {
30
+
31
+ // デバッグ用 … マウスクリックしたらスコアを加算して、表示を更新
32
+ if (Input.GetMouseButtonDown(0)) {
33
+ var reffernceObj = GameObject.Find("Score");
34
+ ScoreController result = reffernceObj.GetComponent<ScoreController>();
35
+ result.AddScore();
36
+ resultScore.GetComponent<Text>().text = "SCORE: " + result.GetScore();
37
+
38
+ }
39
+ }
40
+
41
+ }
42
+ ```