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

回答編集履歴

2

補足

2019/12/16 00:42

投稿

hogefugapiyo
hogefugapiyo

スコア3307

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  FindObjectOfType<T>() の戻り値は 必ずGameObject型というわけではなく、T型です。
2
- いわゆるジェネリクスというやつですね。T型なので``FindObjectOfType<GameObject>();``という書き方なんかもできます。
2
+ いわゆるジェネリクスというやつですね。
3
3
 
4
4
  ```cs
5
5
  FindObjectOfType<Manager>();
@@ -7,7 +7,7 @@
7
7
 
8
8
  ここで``Manager``というコンポーネントがついたものを探して最初に見つかったものの参照を取ります。見つからなければnullが返ります。今回、Tの部分で``Manager``型を指定しているので検索するのものこれですし、戻り値として返ってくるのも``Manager``型です
9
9
 
10
- わかりやすく言えば、シーン上でアクティブになっているオブジェクトを全部検索して``Manager``がAttachされているものがあるかどうかを調べていきます。それで最初に見つけたManagerをしょっ引いて連れてきてくれるのがこのコードがやっていることです。
10
+ わかりやすく言えば、シーン上でアクティブになっているオブジェクトを全部検索して``Manager``がアタッチされているものがあるかどうかを調べていきます。それで最初に見つけたManagerをしょっ引いて連れてきてくれるのがこのコードがやっていることです。
11
11
 
12
12
  試しに下記のコードでhogeは何型になっているかを調べるとManager型になっているかと思います。
13
13
 
@@ -19,6 +19,7 @@
19
19
 
20
20
 
21
21
  …ただ、FindObjectOfTypeは全オブジェクトのコンポーネントをなめるように検索するので時間がかかります。あまりおすすめしません。参照は予めどこかで持っておくなどすると良いかと思います。
22
+ あと、今回はおそらく``Manager``がアタッチされたものが1つしかないので問題ないのだと思いますが、これが仮に``Manager``が複数のオブジェクトにアタッチされている場合などではどちらの参照をとっているのかがわかりませんので問題が起きる可能性があります。
22
23
 
23
24
  参考:
24
25
  【Unity】GameObject.Find 系関数の処理速度の検証結果

1

補足

2019/12/16 00:42

投稿

hogefugapiyo
hogefugapiyo

スコア3307

answer CHANGED
@@ -7,6 +7,8 @@
7
7
 
8
8
  ここで``Manager``というコンポーネントがついたものを探して最初に見つかったものの参照を取ります。見つからなければnullが返ります。今回、Tの部分で``Manager``型を指定しているので検索するのものこれですし、戻り値として返ってくるのも``Manager``型です
9
9
 
10
+ わかりやすく言えば、シーン上でアクティブになっているオブジェクトを全部検索して``Manager``がAttachされているものがあるかどうかを調べていきます。それで最初に見つけたManagerをしょっ引いて連れてきてくれるのがこのコードがやっていることです。
11
+
10
12
  試しに下記のコードでhogeは何型になっているかを調べるとManager型になっているかと思います。
11
13
 
12
14
  ```cs