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

回答編集履歴

1

補足

2019/03/12 09:29

投稿

hogefugapiyo
hogefugapiyo

スコア3309

answer CHANGED
@@ -20,4 +20,24 @@
20
20
 
21
21
  ``Start()``の段階で「ActiveScriptObject」っていう名前でアクティブなオブジェクトをHierarchy上から探してきて、見つけたらそのコンポーネントのActiveScriptを参照しています。
22
22
 
23
- ``OnClickButton``を呼んでやると、さっき探してきたコンポーネントから``SetActiveScript``を実行しています。
23
+ ``OnClickButton``を呼んでやると、さっき探してきたコンポーネントから``SetActiveScript``を実行しています。
24
+
25
+ ## 非アクティブは見つからない
26
+ ついハマりがちですが、アクティブじゃないオブジェクトはこのやり方だと探すことができません。
27
+ 質問の例だと``GameObjectB(デフォルト非アクティブ)``は、非アクティブなのでFindしても見つかりません。ただし最初はアクティブにしておいてFindしてから、SetActiveで非アクティブにした場合は大丈夫です。
28
+
29
+ ```C#
30
+
31
+ GameObject hoge;
32
+
33
+ void Start(){
34
+ hoge = GameObject.Find("hoge"); // Findして hoge を参照しておく
35
+ hoge.SetActive(false); // オブジェクト hoge を非アクティブに
36
+ }
37
+
38
+ // このメソッドを実行するとオブジェクト「hoge」がアクティブになる
39
+ public void HogeActive(){
40
+ hoge.SetActive(true);
41
+ }
42
+
43
+ ```