質問編集履歴
4
要望を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -154,6 +154,12 @@
|
|
154
154
|
|
155
155
|
|
156
156
|
|
157
|
+
WeaponActiveメソッドを使わずに武器を非アクティブ化したりするなど、別の方法を使えばいいような気もしますが、なぜこれでエラーが出るのか分からないので、できればこの方法を使う方針でよろしくお願いします。
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
|
162
|
+
|
157
163
|
unity 2020.3.15f2
|
158
164
|
|
159
165
|
|
3
文の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,18 +1,16 @@
|
|
1
|
-
WeaponActiveメソッドの
|
1
|
+
他のスクリプトからWeaponActiveメソッドを実行すると、その時だけあらゆる変数が0やnullなどになる。
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
-
キャラにInstantiateで武器を持たせて(ここではSwordというオブジェクト)AddComponentでSwordスクリプトをアタッチし、持っている武器をSetActiveで表示非表示を切り替えたいと思い、
|
5
|
+
キャラにInstantiateで武器を持たせて(ここではSwordというオブジェクト)キャラにAddComponentでSwordスクリプトをアタッチし、持っている武器をSetActiveで表示非表示を切り替えたいと思い、別のスクリプトからinvokeで呼び出されるWeaponActiveメソッドを作りました。
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
-
SwordクラスのStart()から呼び出したWeaponActive(false)は、武器
|
9
|
+
SwordクラスのStart()から呼び出したWeaponActive(false)は、ちゃんと武器は消えるし、それ以外の変数も問題なく値を保持していました。
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
|
11
|
+
|
12
|
+
|
15
|
-
しかしTechniquePerformerと言う同じオブジェクトにアタッチした別のスクリプトでボタン入力を検知し、
|
13
|
+
しかしTechniquePerformerと言う同じオブジェクトにアタッチした別のスクリプトでボタン入力を検知し、Invokeを利用してWeaponActiveを実行しました。
|
16
14
|
|
17
15
|
|
18
16
|
|
@@ -100,31 +98,29 @@
|
|
100
98
|
|
101
99
|
|
102
100
|
|
103
|
-
|
101
|
+
試しに同じスクリプトからゲームスタート5秒後にWeaponActiveを呼び出させてみましたが、そうすると正常にswordは実行されました。
|
104
|
-
|
102
|
+
|
105
|
-
しかし第三者のスクリプトからinvokeで実行
|
103
|
+
しかし第三者のスクリプトからinvokeで実行すると、今度はTechniqueの方から呼んだのと同じようにエラーが発生しました。
|
106
|
-
|
107
|
-
|
108
|
-
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
-
|
109
|
+
そしてdebug.logを使っていくうちに分かったことが、他のスクリプトからWeaponActiveを実行した時のみあらゆる変数、更にthis.gameObjectまでもがnullや0となってエラーが発生していると分かりました。
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
|
110
|
-
|
115
|
+
ただしnullなどにならない変数もあって、たとえば宣言と同時に初期化したint型の変数は問題なし。
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
116
|
+
|
115
|
-
|
117
|
+
staticなクラスにjsonで保存していた変数とかも問題なし。しかしstartなどで値を入力したものはnullなどになる。
|
116
|
-
|
117
|
-
|
118
|
-
|
118
|
+
|
119
|
+
|
120
|
+
|
119
|
-
|
121
|
+
ちなみに宣言と同時に初期化して、その後startで別の値を入力してみましたが、weaponActiveでは変数の中が宣言時に初期化した値でした。
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
122
|
+
|
123
|
+
|
128
124
|
|
129
125
|
|
130
126
|
|
@@ -140,10 +136,6 @@
|
|
140
136
|
|
141
137
|
### 試したこと
|
142
138
|
|
143
|
-
intなどは最初の宣言時に、int a = 777;などと言ったように、この時点で代入した値はエラー時のWeaponActiveでも777だった
|
144
|
-
|
145
|
-
|
146
|
-
|
147
139
|
Invokeでは無くGetComponentからメソッド実行、しかし同じ結果。
|
148
140
|
|
149
141
|
|
2
タグ
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
1
説明が間違っていると判断
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
他のスクリプトから呼び出
|
1
|
+
あるスクリプトのメソッドを他のスクリプトから呼び出すと、そのメソッドでだけ変数の値がnullや0になる
|
test
CHANGED
File without changes
|