回答編集履歴

1

解決の方法を追記

2020/03/01 08:51

投稿

kawa0x0A
kawa0x0A

スコア271

test CHANGED
@@ -9,3 +9,115 @@
9
9
  メンバ変数のtextがpublicなのでインスペクターから値を設定していると思われますが、ここの処理で上書きされています。
10
10
 
11
11
  上記の処理を削除して、ruelコンポーネントのtextにオブジェクトがアタッチされているか確認してみてください。
12
+
13
+
14
+
15
+ ---
16
+
17
+ 解決策は2つあるのでどちらかを選択して実装してください。
18
+
19
+ (両方やるとエラーが消えないはずです)
20
+
21
+
22
+
23
+ **Textにスクリプトをアタッチする方法**
24
+
25
+
26
+
27
+ - 以下の処理を復活させてruelスクリプトを元に戻してください
28
+
29
+ ```C#
30
+
31
+ text = this.GetComponent<Text>();
32
+
33
+ ```
34
+
35
+
36
+
37
+ - 色を変えたいテキストをヒエラルキーから選択してください
38
+
39
+ ![シーンヒエラルキー1](355579ce4be0d684fb5513d15c2ef181.png)
40
+
41
+
42
+
43
+ - 選択したテキストにruleスクリプトを追加してください (画像のようにTextとRuelが一緒にあればOKです)
44
+
45
+ ![インスペクター1](7ba91c3452f25804ac1db66c2c245877.png)
46
+
47
+
48
+
49
+
50
+
51
+ **別のゲームオブジェクトを作る方法**
52
+
53
+
54
+
55
+ - 空のゲームオブジェクトを作ります
56
+
57
+ メニューバーから「GameObject」->「Create Empty」を選択して空のゲームオブジェクトを追加します
58
+
59
+ (ここでは追加したゲームオブジェクトの名前を「ruel」とします)
60
+
61
+ ![シーンヒエラルキー2](1f71c4755a83f4b62c3df2aac58788e5.png)
62
+
63
+
64
+
65
+ - 先ほど追加したゲームオブジェクトにruelスクリプトを追加します
66
+
67
+
68
+
69
+ - 追加したruelスクリプトに色を変えたいテキストを設定します
70
+
71
+ RuelのTextの項目に色を変えたいテキストをドラッグアンドドロップしてください
72
+
73
+ Textの項目がNoneではなく、画像のようにゲームオブジェクトが設定してあればOKです
74
+
75
+ ![インスペクター2](b17f01330d4bb14861829234bd09211e.png)
76
+
77
+
78
+
79
+ ---
80
+
81
+
82
+
83
+ 以下は問題とは直接関係無いところで気になったことを書いておきます
84
+
85
+
86
+
87
+ - キーボード入力について
88
+
89
+ テキストの色を変更するのにキーボードの入力を使用していますが、Input.GetKeyメソッドではキーが押されている間ずっとtrueが返ってきます。
90
+
91
+ (プログラムを実行するとテキストがチカチカと点滅しているように見えるはずです)
92
+
93
+ キーが押された瞬間だけを判定したい場合はInputのGetKeyDownメソッドを使用してください
94
+
95
+
96
+
97
+ ```C#
98
+
99
+ if (Input.GetKeyDown(KeyCode.DownArrow))
100
+
101
+ ```
102
+
103
+
104
+
105
+ - GetComponentメソッドについて
106
+
107
+ GetComponentメソッドは重めの処理なので繰り返し実行されるUpdateメソッドの中に書くのはおすすめしません。
108
+
109
+ 特に理由がなければ一度だけ実行されるAwakeやStartで書くのをおすすめします。
110
+
111
+
112
+
113
+ ```C#
114
+
115
+ void Start ()
116
+
117
+ {
118
+
119
+ text = this.GetComponent<Text>();
120
+
121
+ }
122
+
123
+ ```