「スコアを管理しているオブジェクトを、別のスクリプトから触りたい」
シーン上のオブジェクトを名前や型で探す方法として、FindObjectOfTypeやFindGameObjectWithTagがあります。
手軽ですが、使い方を誤ると動作が重くなったり、意図しないオブジェクトを取得したりします。
この記事では、Find系メソッドの基本、Tag検索、新しいAPI(FindAnyObjectByType)、パフォーマンス上の注意、Inspector参照との使い分けまで整理します。
- 他のオブジェクトのスクリプトにアクセスしたいが、参照の渡し方が分からない…
- FindをUpdate内で呼んでいて、ゲームがカクつく。
- FindObjectOfTypeがnullを返し、NullReferenceExceptionが出る。
✨ この記事でわかること
- FindObjectOfTypeの基本と戻り値
- FindGameObjectWithTagでのTag検索
- Unity 6以降のFindAnyObjectByType
- 毎フレーム検索を避ける理由
- SerializeField参照を優先する設計
- 初心者でも理解できる解説
\プログラミング未経験でも大丈夫!まずは1本作り切ろう/
初心者が最初に選ぶならコレ
Unity ノンフィールドRPG
+スレスパ風JRPG講座
Unity6対応・スマホ化対応の最新カリキュラム。「何から始めればいいかわからない」という初心者でも、ステップごとに手を動かすだけでRPGが完成します。
憧れのアクションゲームに挑戦
Unity 2Dアクションゲーム
の作り方講座(ロックマン風)
初心者でもロックマン風の横スクロールACTが作れる講座。7ステージ+ラスボスという本格構成で、スマホ化・広告実装まで対応。「自分のゲームをリリースしたい」夢を叶えます。
3Dゲーム開発の入口はここ
ゼルダ風3Dアクションゲーム
の作り方講座
「3Dゲームって難しそう…」と感じている初心者向けの講座。全16回でゼルダ風3Dアクションがスマホ対応で作れるようになります。3D開発の基礎がしっかり身につきます。
Find系メソッドとは|シーン内を検索する
Find系は、実行中にシーン内のGameObjectやコンポーネントを後から探すためのAPIです。
Inspectorでドラッグして参照を渡せないときの「つなぎ」として使われます。
代表的なメソッドは次のとおりです。
- FindObjectOfType<T> — 型Tのコンポーネントを1つ探す(古いAPI)
- FindAnyObjectByType<T> — 同上(Unity 2023以降推奨)
- FindGameObjectWithTag(“Tag名”) — Tagが一致するGameObjectを1つ探す
- FindGameObjectsWithTag(“Tag名”) — Tag一致を配列で取得
「探す」処理は便利ですが、シーン全体を走査するため、頻繁に呼ぶと負荷になります。
FindObjectOfTypeの基本
型を指定して、シーン内の最初の1件を取得します。
ScoreManager scoreManager = FindObjectOfType<ScoreManager>;
if (scoreManager != null)
{
scoreManager.AddScore(10);
}
同じ型のコンポーネントが複数ある場合、どれが返るかは保証されません。
スコア管理のように1つだけ存在するオブジェクト向けの使い方です。
Unity 2023以降では、非推奨の警告が出ることがあります。
その場合は次のAPIに置き換えます。
ScoreManager scoreManager = FindAnyObjectByType<ScoreManager>;
FindGameObjectWithTagでTag検索
InspectorのTagで「Player」「Enemy」などを設定しておき、Tag名で探す方法です。
GameObject player = GameObject.FindGameObjectWithTag("Player");
if (player != null)
{
Transform playerTransform = player.transform;
}
複数の敵をまとめて取得する例です。
GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
foreach (GameObject enemy in enemies)
{
// 各敵への処理
}
Tagは、Project Settings → Tags and Layers で事前に登録が必要です。
未登録のTag名を使うとエラーになります。

Playerオブジェクトに「Player」Tagを付けておくと、カメラ追従やUI更新で FindGameObjectWithTag がよく使われます。
Tagの付け忘れに注意してくださいね。
パフォーマンス注意|Update内で呼ばない
Find系の最大の落とし穴は、毎フレーム検索することです。
Update内で FindObjectOfType を呼ぶと、シーンが大きいほどカクつきやすくなります。
| 呼び方 | 評価 |
|---|---|
| StartやAwakeで1回だけFind | 小規模プロジェクトなら許容範囲。 結果を変数にキャッシュする |
| Update内で毎フレームFind | 非推奨。 参照は事前に保持する |
| InspectorでSerializeField参照 | 最も軽く、意図も明確。 基本はこちらを優先 |
キャッシュする定番パターンです。
ScoreManager scoreManager;
void Start
{
scoreManager = FindAnyObjectByType<ScoreManager>;
}
void Update
{
if (scoreManager != null)
{
// キャッシュした参照を使う
}
}
SerializeField参照を優先する設計
可能なら、Inspectorから参照を渡す方式が安全です。
public class EnemyAI : MonoBehaviour
{
[SerializeField] Transform player;
void Update
{
if (player == null) return;
// player の位置を使った処理
}
}
Hierarchy上のPlayerを、EnemyのInspectorにドラッグするだけで接続できます。
Findより高速で、どのオブジェクトを参照しているかも一目で分かります。
Findが向くのは、次のような場面です。
- シーンをまたいで動的に作られたマネージャーを探す
- プロトタイプ段階で、とりあえず1本つなぎたい
- Prefab単体では参照先が決まらない一時的な処理
- STEP1Inspectorで渡せるか確認
固定のPlayerやUIなら、SerializeFieldが第一候補です。
- STEP21回だけFindしてキャッシュ
動的生成が絡む場合は、StartでFindし変数に保持します。
- STEP3Update内のFindを削除
パフォーマンス問題が出たら、まずここを疑います。
よくあるつまずき
Find系でよくあるエラーと対処です。
- nullが返る → 対象が非アクティブ、シーンに存在しない、型やTagの指定ミス
- 複数ヒットで意図と違う → シングルトン設計か、SerializeFieldで明示的に指定
- 重い → Update内のFindをやめ、キャッシュまたはInspector参照へ
- 非推奨警告 → FindAnyObjectByType へ置き換え

「とりあえずFind」は学習初期のつなぎとしてはOKです。
動いたら、Inspector参照に置き換えていくのが成長のサインですよ。
シーンをまたいでオブジェクトが消える場合、Findの結果がnullになることもあります。
シーン読み込み後に再度キャッシュし直すか、イベントで「マネージャーが準備できた」と通知する設計にすると、参照切れを防ぎやすくなります。
名前で探すGameObject.Find("名前")も存在しますが、名前変更に弱く、パフォーマンス面でもFind系と同様に注意が必要です。
型やTag、Inspector参照の方が保守しやすい場面が多いです。
記事を読んで「作ってみたい!」と思ったら!初心者でも1本完成できる講座で実力をつけよう
知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを1本完成させることで、理解が一気に深まります。プログラミング未経験からでも取り組める講座で、ゲーム開発の第一歩を踏み出しましょう。
Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!初心者でもデッキ構築×JRPGをスマホ向けに作れる!】

- Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
- Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
- 初心者でも迷わず進められる丁寧な解説構成
- ノンフィールドRPGとデッキ構築JRPGの2つをまとめて学べるセット講座
Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、プログラミング未経験の初心者でも取り組みやすい、ステップバイステップ形式の講座です。
Unity6対応・スマホ化対応の最新カリキュラムで、読んで「なるほど」と思った知識を、実際に動くゲームとして形にする体験ができます。
「何から始めればいいかわからない…」という初心者が最初に選ぶ一本として最適な講座です。
Unity6対応・スマホ化対応の最新カリキュラム
ゼロからでもRPGを完成させよう
→ スレスパ風デッキ構築JRPG講座を見てみる
初心者でもスマホ対応のRPGが作れる!まずは1本完成を目指そう!
Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!初心者でもスマホ化・広告実装まで対応した本格横スクロールACTが作れる!】

- ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
- 7ステージ+ラスボスステージの本格的なゲーム設計を初心者でも実現
- スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
- 敵AI15体・多彩なマップギミック・武器システムを完全実装
- 完全オリジナルゲームをアセット不使用で素材提供付きで制作
Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを、初心者でもゼロから開発できるようになる講座です。
全16回で当たり判定・物理挙動・敵AIの知識を実際のゲームコードとして実装する体験が詰め込まれています。スマホ化・広告実装まで対応しているため、「作って終わり」ではなくリリースまで見据えた実践スキルが身につきます。
「憧れのアクションゲームを自分の手で作ってみたい」という初心者に強くおすすめの一本です。
スマホ化・広告実装まで対応した本格横スクロールACT
初心者でもロックマン風2Dアクションをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
初心者でも本格ACTが完成する!広告収益まで視野に入れた実践スキルを手に入れよう!
ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

- ゼルダの伝説・モンハン・原神のような3Dアクションをゼロから開発
- 「3Dは難しそう」と感じている初心者でも取り組みやすい丁寧な解説構成
- スマホ化対応で実機で動かせるゲームが完成
- アセットを使った実践的なゲーム開発手法が身につく
- 画像・動画・全ソースコード公開の充実したサポート
ゼルダ風3Dアクションゲームの作り方講座は、「3Dゲームは難しそう…」と感じている初心者こそおすすめの入門講座です。
全16回の丁寧な解説で、ゼルダの伝説・モンハン・原神のような本格的な3Dアクションゲームを確実に完成まで導きます。スマホ化対応で実機で動かせるため、初めて3Dゲームを作り上げた達成感がひときわ大きい講座です。
「3Dゲームを自分でも作れるか試してみたい」という初心者の最初の一歩として最適です。
初心者でも3Dアクションがスマホ対応で完成する
ゼルダ風3Dアクションゲームで3D開発の壁を一気に突破しよう
→ ゼルダ風3Dアクションゲームの作り方講座を見てみる
全16回でスマホで動くオリジナル3Dゲームを完成させよう!
まとめ
UnityのFindObjectOfTypeやFindGameObjectWithTagは、シーン内のオブジェクトを検索する便利なAPIです。
Startで1回だけ呼んでキャッシュするか、可能ならSerializeFieldで参照を渡すのが基本です。
Update内での毎フレーム検索は避けましょう。
今日はScoreManagerを1つ作り、別スクリプトからFindAnyObjectByTypeで取得してスコアを加算する、最小の流れを試してみてください。
オブジェクトのつなぎ方を作品全体で学びたい方は、Unity入門の森の講座も参考になります。
マネージャー設計やUI連携など、実践的な構成を追いながら身につけられます。
まずはFindを1回だけ使う形から始めましょう。



コメント