質問編集履歴
4
title
CHANGED
File without changes
|
body
CHANGED
@@ -31,4 +31,54 @@
|
|
31
31
|
Main Cameraから、いったんスクリプトをRemoveして再度Main Cameraにアタッチするとエラーなしで動作するのはなぜでしょうか?
|
32
32
|
(Unity再起動後にエラーが出てしまいますが)
|
33
33
|
|
34
|
-
ご教授よろしくおねがいいたします。
|
34
|
+
ご教授よろしくおねがいいたします。
|
35
|
+
|
36
|
+
-----------------------
|
37
|
+
再追記
|
38
|
+
|
39
|
+
スクリプトはこのような感じで、パネルの中にボタンが何個かあり、押された時の動作が書かれてます。
|
40
|
+
オブジェクト自体は、インスタンシエイトで作成はしておらず、すでにヒエラルキー上に置いてあります。
|
41
|
+
StartからAwakeに変えましたら、Main Camera上でもエラーが出なくなりました。
|
42
|
+
```ここに言語を入力
|
43
|
+
public class SceneChanger : MonoBehaviour
|
44
|
+
{
|
45
|
+
GameObject _level1;
|
46
|
+
|
47
|
+
void Awake () //元はStartでした
|
48
|
+
{
|
49
|
+
_level1 = GameObject.Find("Canvas/popUp/level1");
|
50
|
+
_level1.GetComponent<Button>().onClick.AddListener(() => OnClickBtnLevel1(_level1));
|
51
|
+
}
|
52
|
+
|
53
|
+
void OnClickBtnLevel1(GameObject obj)
|
54
|
+
{
|
55
|
+
SceneManager.LoadScene ("101");
|
56
|
+
}
|
57
|
+
}
|
58
|
+
```
|
59
|
+
実はさらにもうひとつ別のスクリプト(下記)がありまして、(同じくMain Camera内にアタッチ)
|
60
|
+
Startにてボタンの親(名前:popUp)を消す命令を入れておりました。
|
61
|
+
そのせいで上のスクリプトでは子が見つからないというのが原因でした。
|
62
|
+
上のスクリプトはAwake使用によりStartより先に読まれるようです。
|
63
|
+
ご指摘いただいたとおり実行の順番の問題でした。
|
64
|
+
```ここに言語を入力
|
65
|
+
public class PopUpOpen : MonoBehaviour
|
66
|
+
{
|
67
|
+
GameObject popUp_all;
|
68
|
+
|
69
|
+
void Start()
|
70
|
+
{
|
71
|
+
popUp_all = GameObject.Find("Canvas/popUp");
|
72
|
+
popUp_all.SetActive (false);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
```
|
76
|
+
すいません、さらに質問させてください。
|
77
|
+
少し外れますが、
|
78
|
+
Main Cameraにアタッチの別のスクリプト内にて(例:Other.CS)
|
79
|
+
上記とまったく同じオブジェクト(popUp_all) を再度、Canvas/popUpとパスをたどって参照する場合、
|
80
|
+
その際、Other.CS内での呼び名は「popUp_all」は上記スクリプトで一度使用しているので
|
81
|
+
「popUp_all_2」と名前を変える必要がありますでしょうか?
|
82
|
+
または同じ名前(popUp_all) でも問題ありませんでしょうか?
|
83
|
+
|
84
|
+
ベストアンサーにさせていただきたいので、回答欄にご記入いただけまでしょうか?
|
3
追記
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Main Cameraにスクリプトを
|
1
|
+
Unity5.6 / 2D / ugui - Main Cameraにスクリプトをアタッチするとエラー
|
body
CHANGED
@@ -1,37 +1,34 @@
|
|
1
1
|
###前提・実現したいこと
|
2
|
-
Main Cameraにスクリプトを
|
2
|
+
Main Cameraにスクリプトをアタッチするとエラーが出てしいます。(Unity初心者です。)
|
3
|
-
(複数
|
3
|
+
(複数存在するスクリプトを数カ所に分けてアタッチするのではなく、可能な限りMain Cameraにまとめる事ができるならばまとめたいです。)
|
4
4
|
|
5
5
|
###発生している問題・エラーメッセージ
|
6
|
-
ボタンに関してのスクリプトをMain Camera に
|
6
|
+
ボタンに関してのスクリプトをMain Camera にアタッチしてあると下記エラーがでます。
|
7
7
|
```
|
8
8
|
Object reference not set to an instance of an object
|
9
9
|
```
|
10
|
-
スクリプトをいったんRemoveし、再度Main Cameraに
|
10
|
+
スクリプトをいったんRemoveし、再度Main Cameraにアタッチし直すとエラーが出ません。
|
11
11
|
(このことからスクリプトには問題ないように思えます。)
|
12
12
|
しかしながらUnityを再起動すると同じエラーが出ます。
|
13
13
|
|
14
14
|
###試したこと
|
15
|
-
Main Cameraではなく、Canvasに
|
15
|
+
Main Cameraではなく、Canvasにアタッチするとエラーがでません。(Unityを再起動してもエラーでません)
|
16
16
|
|
17
17
|
質問させてください。
|
18
18
|
|
19
|
-
質問
|
19
|
+
質問
|
20
|
-
Main Cameraに
|
20
|
+
Main Cameraにアタッチしてもよいスクリプトと、アタッチしてはいけないスクリプトというものがありますでしょうか?
|
21
|
-
|
22
|
-
|
21
|
+
(後から見た時にわかりやすいように、できるかぎりスクリプトをアタッチする場所をまとめたいです。)
|
23
|
-
現在、Main Cameraには他のスクリプト(Admobのスクリプト)が
|
22
|
+
現在、Main Cameraには他のスクリプト(Admobのスクリプト)がアタッチしてあり、
|
24
23
|
問題なく動作しているようなのですが、
|
25
|
-
Main Cameraに貼ってもよいスクリプトと、そうでないスクリプトというものがありますでしょうか?
|
26
|
-
(後から見た時にわかりやすいように、できるかぎりスクリプトを貼る場所をまとめたいです。)
|
27
24
|
|
28
|
-
ご教授よろしくおねがいいたします。
|
29
|
-
|
30
25
|
追記
|
31
26
|
_obj = GameObject.Find("Canvas/Panel/obj");
|
32
27
|
という様な、Canvasの中に位置するobjを参照するコードを使用しております。
|
33
|
-
それが原因でCanvasに
|
28
|
+
それが原因でCanvasにアタッチするべきだったのでしょうか?
|
34
29
|
|
35
30
|
しかしながら、
|
36
|
-
いったんスクリプトをRemoveして再度Main Cameraに
|
31
|
+
Main Cameraから、いったんスクリプトをRemoveして再度Main Cameraにアタッチするとエラーなしで動作するのはなぜでしょうか?
|
37
|
-
(Unity再起動後にエラーが出てしまいますが)
|
32
|
+
(Unity再起動後にエラーが出てしまいますが)
|
33
|
+
|
34
|
+
ご教授よろしくおねがいいたします。
|
2
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,26 +7,22 @@
|
|
7
7
|
```
|
8
8
|
Object reference not set to an instance of an object
|
9
9
|
```
|
10
|
-
スクリプトをいったんRemoveし、
|
11
|
-
再度Main Cameraに貼り直しするとエラーが
|
10
|
+
スクリプトをいったんRemoveし、再度Main Cameraに貼り直しするとエラーが出ません。
|
12
11
|
(このことからスクリプトには問題ないように思えます。)
|
12
|
+
しかしながらUnityを再起動すると同じエラーが出ます。
|
13
13
|
|
14
14
|
###試したこと
|
15
|
-
Main Cameraではなく、Canvasに貼るとエラーがでません。
|
15
|
+
Main Cameraではなく、Canvasに貼るとエラーがでません。(Unityを再起動してもエラーでません)
|
16
|
-
(Unityを再起動してもエラーでません)
|
17
16
|
|
18
17
|
質問させてください。
|
19
18
|
|
20
19
|
質問1
|
21
|
-
Main Cameraにはスクリプトを
|
22
|
-
貼らないほうがよいということでしょうか?
|
20
|
+
Main Cameraにはスクリプトを貼らないほうがよいということでしょうか?
|
23
21
|
|
24
|
-
|
25
22
|
質問2
|
26
23
|
現在、Main Cameraには他のスクリプト(Admobのスクリプト)が貼ってあり、
|
27
24
|
問題なく動作しているようなのですが、
|
28
|
-
Main Cameraに貼ってもよいスクリプトと
|
29
|
-
そうでないスクリプトというものがありますでしょうか?
|
25
|
+
Main Cameraに貼ってもよいスクリプトと、そうでないスクリプトというものがありますでしょうか?
|
30
26
|
(後から見た時にわかりやすいように、できるかぎりスクリプトを貼る場所をまとめたいです。)
|
31
27
|
|
32
28
|
ご教授よろしくおねがいいたします。
|
@@ -38,4 +34,4 @@
|
|
38
34
|
|
39
35
|
しかしながら、
|
40
36
|
いったんスクリプトをRemoveして再度Main Cameraに貼ると動作するのはなぜでしょうか?
|
41
|
-
(Unity再起動後にエラーが
|
37
|
+
(Unity再起動後にエラーが出てしまいますが)
|
1
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -29,4 +29,13 @@
|
|
29
29
|
そうでないスクリプトというものがありますでしょうか?
|
30
30
|
(後から見た時にわかりやすいように、できるかぎりスクリプトを貼る場所をまとめたいです。)
|
31
31
|
|
32
|
-
ご教授よろしくおねがいいたします。
|
32
|
+
ご教授よろしくおねがいいたします。
|
33
|
+
|
34
|
+
追記
|
35
|
+
_obj = GameObject.Find("Canvas/Panel/obj");
|
36
|
+
という様な、Canvasの中に位置するobjを参照するコードを使用しております。
|
37
|
+
それが原因でCanvasに貼るべきだったのでしょうか?
|
38
|
+
|
39
|
+
しかしながら、
|
40
|
+
いったんスクリプトをRemoveして再度Main Cameraに貼ると動作するのはなぜでしょうか?
|
41
|
+
(Unity再起動後にエラーがでますが)
|