質問編集履歴

4

 

2017/07/19 02:59

投稿

sukiyakigozens
sukiyakigozens

スコア28

test CHANGED
File without changes
test CHANGED
@@ -65,3 +65,103 @@
65
65
 
66
66
 
67
67
  ご教授よろしくおねがいいたします。
68
+
69
+
70
+
71
+ -----------------------
72
+
73
+ 再追記
74
+
75
+
76
+
77
+ スクリプトはこのような感じで、パネルの中にボタンが何個かあり、押された時の動作が書かれてます。
78
+
79
+ オブジェクト自体は、インスタンシエイトで作成はしておらず、すでにヒエラルキー上に置いてあります。
80
+
81
+ StartからAwakeに変えましたら、Main Camera上でもエラーが出なくなりました。
82
+
83
+ ```ここに言語を入力
84
+
85
+ public class SceneChanger : MonoBehaviour
86
+
87
+ {
88
+
89
+ GameObject _level1;
90
+
91
+
92
+
93
+ void Awake () //元はStartでした
94
+
95
+ {
96
+
97
+ _level1 = GameObject.Find("Canvas/popUp/level1");
98
+
99
+ _level1.GetComponent<Button>().onClick.AddListener(() => OnClickBtnLevel1(_level1));
100
+
101
+ }
102
+
103
+
104
+
105
+ void OnClickBtnLevel1(GameObject obj)
106
+
107
+ {
108
+
109
+ SceneManager.LoadScene ("101");
110
+
111
+ }
112
+
113
+ }
114
+
115
+ ```
116
+
117
+ 実はさらにもうひとつ別のスクリプト(下記)がありまして、(同じくMain Camera内にアタッチ)
118
+
119
+ Startにてボタンの親(名前:popUp)を消す命令を入れておりました。
120
+
121
+ そのせいで上のスクリプトでは子が見つからないというのが原因でした。
122
+
123
+ 上のスクリプトはAwake使用によりStartより先に読まれるようです。
124
+
125
+ ご指摘いただいたとおり実行の順番の問題でした。
126
+
127
+ ```ここに言語を入力
128
+
129
+ public class PopUpOpen : MonoBehaviour
130
+
131
+ {
132
+
133
+ GameObject popUp_all;
134
+
135
+
136
+
137
+ void Start()
138
+
139
+ {
140
+
141
+ popUp_all = GameObject.Find("Canvas/popUp");
142
+
143
+ popUp_all.SetActive (false);
144
+
145
+ }
146
+
147
+ }
148
+
149
+ ```
150
+
151
+ すいません、さらに質問させてください。
152
+
153
+ 少し外れますが、
154
+
155
+ Main Cameraにアタッチの別のスクリプト内にて(例:Other.CS)
156
+
157
+ 上記とまったく同じオブジェクト(popUp_all) を再度、Canvas/popUpとパスをたどって参照する場合、
158
+
159
+ その際、Other.CS内での呼び名は「popUp_all」は上記スクリプトで一度使用しているので
160
+
161
+ 「popUp_all_2」と名前を変える必要がありますでしょうか?
162
+
163
+ または同じ名前(popUp_all) でも問題ありませんでしょうか?
164
+
165
+
166
+
167
+ ベストアンサーにさせていただきたいので、回答欄にご記入いただけまでしょうか?

3

追記

2017/07/19 02:59

投稿

sukiyakigozens
sukiyakigozens

スコア28

test CHANGED
@@ -1 +1 @@
1
- Main Cameraにスクリプトをによるエラー(Unity5.6 / 2D / ugui)
1
+ Unity5.6 / 2D / ugui - Main Cameraにスクリプトをアタッチするとエラー
test CHANGED
@@ -1,14 +1,14 @@
1
1
  ###前提・実現したいこと
2
2
 
3
- Main Cameraにスクリプトを貼りたいがエラーが出てしいます。
3
+ Main Cameraにスクリプトをアタッチするとエラーが出てしいます。(Unity初心者です。)
4
4
 
5
- (複数スクリプトを数カ所にるのではなく、Main Cameraにまとめる事ができるならばまとめたいです。)
5
+ (複数存在するスクリプトを数カ所に分けてアタッチするのではなく、可能な限りMain Cameraにまとめる事ができるならばまとめたいです。)
6
6
 
7
7
 
8
8
 
9
9
  ###発生している問題・エラーメッセージ
10
10
 
11
- ボタンに関してのスクリプトをMain Camera に貼ってあると下記エラーがでます。
11
+ ボタンに関してのスクリプトをMain Camera にアタッチしてあると下記エラーがでます。
12
12
 
13
13
  ```
14
14
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  ```
18
18
 
19
- スクリプトをいったんRemoveし、再度Main Cameraに貼りとエラーが出ません。
19
+ スクリプトをいったんRemoveし、再度Main Cameraにアタッチし直すとエラーが出ません。
20
20
 
21
21
  (このことからスクリプトには問題ないように思えます。)
22
22
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  ###試したこと
28
28
 
29
- Main Cameraではなく、Canvasにるとエラーがでません。(Unityを再起動してもエラーでません)
29
+ Main Cameraではなく、Canvasにアタッチするとエラーがでません。(Unityを再起動してもエラーでません)
30
30
 
31
31
 
32
32
 
@@ -34,25 +34,15 @@
34
34
 
35
35
 
36
36
 
37
- 質問1
37
+ 質問
38
38
 
39
- Main Cameraにスクリプトを貼らないほうがよいということでしょうか?
39
+ Main Cameraにアタッチしてもよいスクリプトと、アタッチしてはいけないスクリプトというものがありますでしょうか?
40
40
 
41
+ (後から見た時にわかりやすいように、できるかぎりスクリプトをアタッチする場所をまとめたいです。)
41
42
 
42
-
43
- 質問2
44
-
45
- 現在、Main Cameraには他のスクリプト(Admobのスクリプト)が貼ってあり、
43
+ 現在、Main Cameraには他のスクリプト(Admobのスクリプト)がアタッチしてあり、
46
44
 
47
45
  問題なく動作しているようなのですが、
48
-
49
- Main Cameraに貼ってもよいスクリプトと、そうでないスクリプトというものがありますでしょうか?
50
-
51
- (後から見た時にわかりやすいように、できるかぎりスクリプトを貼る場所をまとめたいです。)
52
-
53
-
54
-
55
- ご教授よろしくおねがいいたします。
56
46
 
57
47
 
58
48
 
@@ -62,12 +52,16 @@
62
52
 
63
53
  という様な、Canvasの中に位置するobjを参照するコードを使用しております。
64
54
 
65
- それが原因でCanvasにるべきだったのでしょうか?
55
+ それが原因でCanvasにアタッチするべきだったのでしょうか?
66
56
 
67
57
 
68
58
 
69
59
  しかしながら、
70
60
 
71
- いったんスクリプトをRemoveして再度Main Cameraにると動作するのはなぜでしょうか?
61
+ Main Cameraから、いったんスクリプトをRemoveして再度Main Cameraにアタッチするとエラーなしで動作するのはなぜでしょうか?
72
62
 
73
63
  (Unity再起動後にエラーが出てしまいますが)
64
+
65
+
66
+
67
+ ご教授よろしくおねがいいたします。

2

追記

2017/07/18 21:12

投稿

sukiyakigozens
sukiyakigozens

スコア28

test CHANGED
File without changes
test CHANGED
@@ -16,19 +16,17 @@
16
16
 
17
17
  ```
18
18
 
19
- スクリプトをいったんRemoveし、
20
-
21
- 再度Main Cameraに貼り直しするとエラーがません。
19
+ スクリプトをいったんRemoveし、再度Main Cameraに貼り直しするとエラーがません。
22
20
 
23
21
  (このことからスクリプトには問題ないように思えます。)
22
+
23
+ しかしながらUnityを再起動すると同じエラーが出ます。
24
24
 
25
25
 
26
26
 
27
27
  ###試したこと
28
28
 
29
- Main Cameraではなく、Canvasに貼るとエラーがでません。
29
+ Main Cameraではなく、Canvasに貼るとエラーがでません。(Unityを再起動してもエラーでません)
30
-
31
- (Unityを再起動してもエラーでません)
32
30
 
33
31
 
34
32
 
@@ -38,11 +36,7 @@
38
36
 
39
37
  質問1
40
38
 
41
- Main Cameraにはスクリプトを
42
-
43
- 貼らないほうがよいということでしょうか?
39
+ Main Cameraにはスクリプトを貼らないほうがよいということでしょうか?
44
-
45
-
46
40
 
47
41
 
48
42
 
@@ -52,9 +46,7 @@
52
46
 
53
47
  問題なく動作しているようなのですが、
54
48
 
55
- Main Cameraに貼ってもよいスクリプトと
56
-
57
- そうでないスクリプトというものがありますでしょうか?
49
+ Main Cameraに貼ってもよいスクリプトと、そうでないスクリプトというものがありますでしょうか?
58
50
 
59
51
  (後から見た時にわかりやすいように、できるかぎりスクリプトを貼る場所をまとめたいです。)
60
52
 
@@ -78,4 +70,4 @@
78
70
 
79
71
  いったんスクリプトをRemoveして再度Main Cameraに貼ると動作するのはなぜでしょうか?
80
72
 
81
- (Unity再起動後にエラーがますが)
73
+ (Unity再起動後にエラーが出てしいますが)

1

追記

2017/07/17 18:30

投稿

sukiyakigozens
sukiyakigozens

スコア28

test CHANGED
File without changes
test CHANGED
@@ -61,3 +61,21 @@
61
61
 
62
62
 
63
63
  ご教授よろしくおねがいいたします。
64
+
65
+
66
+
67
+ 追記
68
+
69
+ _obj = GameObject.Find("Canvas/Panel/obj");
70
+
71
+ という様な、Canvasの中に位置するobjを参照するコードを使用しております。
72
+
73
+ それが原因でCanvasに貼るべきだったのでしょうか?
74
+
75
+
76
+
77
+ しかしながら、
78
+
79
+ いったんスクリプトをRemoveして再度Main Cameraに貼ると動作するのはなぜでしょうか?
80
+
81
+ (Unity再起動後にエラーがでますが)