Unityの勉強を始めて早1週間の俺…GetComponentで躓く…

記事サムネイル
1 : 2026/04/28(火) 15:11:08.322 ID:0YYcxJiz0
Rigitbody2D rbody = this.GetComponent;
って書いてエラーになり2時間さまよう・・・
2 : 2026/04/28(火) 15:11:43.086 ID:GkWyCRGn0
ゲットコンポーネントはつかうな
4 : 2026/04/28(火) 15:13:34.474 ID:0YYcxJiz0
>>2
使わなかったらどうやってコンポーネントいじればいいんだよ・・・
7 : 2026/04/28(火) 15:14:23.058 ID:GkWyCRGn0
>>4
追加したときに取得できるだろ
11 : 2026/04/28(火) 15:16:55.538 ID:0YYcxJiz0
>>7
Componentを追加するけど・・・数値の変更の時にGetComponent<型>();使うだろ!
14 : 2026/04/28(火) 15:17:53.781 ID:GkWyCRGn0
>>11
追加したら取っておけ
あとはそれを使え
15 : 2026/04/28(火) 15:20:01.169 ID:0YYcxJiz0
>>14
追加はゲームオブジェクトに追加するだろ!!
3 : 2026/04/28(火) 15:13:20.640 ID:CTaCrDmw0
あーそれね
初心者は陥りがちよな
5 : 2026/04/28(火) 15:14:04.911 ID:0YYcxJiz0
>>3
しらねーよカッコなんて・・・細かい事は良いじゃねえかよ!!
6 : 2026/04/28(火) 15:14:17.030 ID:lhnHQY6oM
GetComponentなんてガキしか使わんぞ
8 : 2026/04/28(火) 15:15:48.696 ID:0YYcxJiz0
>>6
俺はガキだわ!!
9 : 2026/04/28(火) 15:16:38.123 ID:GkWyCRGn0
ゲットするてことは見失ってるてことだ
そんなことあっちゃいかん
12 : 2026/04/28(火) 15:17:26.167 ID:0YYcxJiz0
>>9
ポケモンゲットしてポケモンを使うんだよ!!
10 : 2026/04/28(火) 15:16:51.613 ID:FrwG5IYN0
今どきチャッピーが全部解決してくれんじやねーの
13 : 2026/04/28(火) 15:17:43.952 ID:0YYcxJiz0
>>10
それなんてポケモン?
16 : 2026/04/28(火) 15:20:42.235 ID:GkWyCRGn0
結論から言うと、Unity の GetComponent はそれなりにコストがかかる処理です。ただし「絶対に使ってはいけないほど重い」わけではなく、使い方次第です。

■ なぜコストがかかるのか

GetComponent() は内部的に
「そのGameObjectに付いているコンポーネント一覧を探して一致するものを見つける」
という処理をします。

つまりイメージとしては:

配列やリストを毎回検索

型チェックも行う

見つかるまで走査

→ O(n)(コンポーネント数に比例)になります

■ どれくらい重い?

1回ならほぼ無視できるレベルですが、

Update()で毎フレーム呼ぶ

大量のオブジェクトで呼ぶ

ネストして何度も呼ぶ

こうなると普通にパフォーマンス劣化の原因になります。

18 : 2026/04/28(火) 15:22:32.924 ID:0YYcxJiz0
>>16
つまりループ処理で使うなと言う事か
17 : 2026/04/28(火) 15:22:02.713 ID:GkWyCRGn0
追加したとき参照を得られる
19 : 2026/04/28(火) 15:23:01.828 ID:0YYcxJiz0
>>17
ポケモンゲットしたらポケモン使えるみたいなもんよ
20 : 2026/04/28(火) 15:23:52.983 ID:GkWyCRGn0
>>19
追加してないポケモンはゲットできない
21 : 2026/04/28(火) 15:25:58.380 ID:0YYcxJiz0
>>20
そりゃそうだろ
22 : 2026/04/28(火) 15:26:29.163 ID:GkWyCRGn0
>>21
じゃあゲットはいらないな
24 : 2026/04/28(火) 15:29:56.078 ID:0YYcxJiz0
>>22
いるだろ!!
23 : 2026/04/28(火) 15:27:34.536 ID:HyRpcZDL0
最後に()つけないと
25 : 2026/04/28(火) 15:30:25.209 ID:0YYcxJiz0
>>23
なんでエラーになるんだ?で2時間画面を見続けていました・・・
26 : 2026/04/28(火) 15:32:02.091 ID:GkWyCRGn0
ゲットしないで済む方法を見つけろ
でないと死ぬと思え
以上だ
もう十分ヒントはやった
27 : 2026/04/28(火) 15:32:21.891 ID:0YYcxJiz0
>>26
ゲットさせろ!!
28 : 2026/04/28(火) 15:37:33.023 ID:0YYcxJiz0
いつになったらゲーム完成するんだよこれ・・・
29 : 2026/04/28(火) 15:39:19.400 ID:mGKJarhW0
public変数を使うか宣言のときに[SerializeField]付ければいいんじゃ
publicは使いたくないから後者で
30 : 2026/04/28(火) 15:41:51.928 ID:0YYcxJiz0
>>29
SerializeFieldってなんぞ?
31 : 2026/04/28(火) 15:43:20.870 ID:GkWyCRGn0
これからはAIプログラミンゴの時代だからインスペクタ使うのはやめた方がいいぞ
今のAIはインスペクタ触れないからな
33 : 2026/04/28(火) 15:44:50.059 ID:0YYcxJiz0
>>31
全部インスペクタ登録してたら
コンテナにした瞬間エラーが山ほど出て死んだ・・・
32 : 2026/04/28(火) 15:44:37.006 ID:mGKJarhW0
変数をprivateにしつつインスペクターの表示させられる
インスペクターに表示されたならそこにコンポーネントをドラッグ&ドロップでその変数にコンポーネントを代入できる
って感じ
動的にコンポーネントを取得したい場合は使えない
35 : 2026/04/28(火) 15:45:49.706 ID:0YYcxJiz0
>>32
へえ・・・
34 : 2026/04/28(火) 15:45:47.492 ID:GkWyCRGn0
インスペクタは情報を失うリスクもあるしな

コメント

タイトルとURLをコピーしました