【Unity】その書き方、もう古いかも - Unity 6時代の新旧API読み替えガイド

作成: 2026-07-05最終更新: 2026-07-13

チュートリアル通りに書いたのに警告が出る——古い記事やAIの回答に含まれる非推奨APIとの付き合い方を解説。FindObjectOfTypeやRigidbody.velocityなど、Unity 6時代の読み替え表と、警告に出会ったときの調べ方をまとめたリファレンスです。

動作確認環境: Unity 6(6000.0)/読み替え表は2026-07-13時点の情報です

チュートリアルの通りに書いたのに、Consoleに黄色い警告が出る。AIに聞いたコードをコピペしたら「obsolete」と言われる——壊れてはいないけど不安なこの状況、原因はコードのミスではなく、参考元が古いだけかもしれません。

Unityは20年近く進化を続けているため、ネット上の記事・動画・AIの学習データには非推奨(Obsolete)になったAPIが大量に残っています。この記事では、非推奨の仕組みと、Unity 6時代によく出会う新旧APIの読み替え表、そして知らないAPIの警告に出会ったときの調べ方をまとめます。ブックマークして辞書的に使ってください。

古い部品を新しい部品に交換するイメージ

この記事でわかること

  • 「非推奨(Obsolete)」の仕組みと、警告→削除の段階
  • FindObjectOfTypeRigidbody.velocity など頻出APIの読み替え表
  • 警告メッセージから代替APIを自力で見つける方法
  • 警告を1件直して「同じ動作」まで確認する、安全な引っ越しの型
  • 古い情報(記事・動画・AI出力)と付き合うコツ

Sponsored

なぜAPIは「古く」なるのか?

Unityは機能改善のたびに、古いAPIをいきなり消すのではなく、段階を踏んで引退させます。

APIが非推奨になる段階のタイムライン図。現役の緑からObsolete警告の黄色、エラー化の赤、削除へと段階的に進む
  1. 現役: 普通に使える
  2. 非推奨(警告): [Obsolete]属性が付き、使うと黄色い警告が出る。まだ動く
  3. 非推奨(エラー): コンパイルエラーになる。書き換えないとビルドできない
  4. 削除: APIそのものが消える

つまり黄色い警告は「今すぐ壊れはしないが、引っ越しの準備をしてね」という予告です。慌てる必要はありませんが、新しく書くコードで旧APIを使う理由もありません。

頻出API読み替え表

初心者が古いチュートリアルで特に出会いやすいものを集めました。上から順に遭遇率が高い印象です。

新旧APIの読み替えのイメージ図。古い道路標識から新しい道路標識へ差し替えられている
古い書き方新しい書き方補足
FindObjectOfType<T>()FindFirstObjectByType<T>()「どれでもいい」ならFindAnyObjectByType<T>()が高速
FindObjectsOfType<T>()FindObjectsByType<T>(FindObjectsSortMode.None)ソート指定が必須になった。Noneが最速だが 並び順は保証されない実践参照)
Rigidbody.velocityRigidbody.linearVelocityUnity 6で改名。2D版もlinearVelocity
Input.GetKeyなど(旧Input)New Input System旧方式も当面併存。移行は New Input Systemの記事 参照
WWWUnityWebRequest通信APIの旧世代。かなり前から非推奨
Application.LoadLevel()SceneManager.LoadScene()using UnityEngine.SceneManagement;が必要。SceneManagerの記事 参照
File > Build SettingsFile > Build ProfilesAPIではなくメニューの変更(Unity 6)
// 古いチュートリアルによくある形
GameManager gm = FindObjectOfType<GameManager>();   // 警告が出る
rb.velocity = new Vector3(0f, 5f, 0f);              // 警告が出る

// Unity 6時代の書き方
GameManager gm = FindFirstObjectByType<GameManager>();
rb.linearVelocity = new Vector3(0f, 5f, 0f);

補足: FindFirstObjectByType系は「シーン全体を検索する重い処理」である点は旧APIと同じです。毎フレーム呼ばずにStartで1回取得してキャッシュする、そもそも参照の設計を見直す、といった基本は GetComponentの記事イベントチャネルの記事 が参考になります。

Sponsored

警告に出会ったときの調べ方

この表にないAPIで警告が出ても、自力で解決できます。手順は2つだけです。

手順1: 警告メッセージを最後まで読む

Obsolete警告には、ほとんどの場合代替APIの名前がそのまま書いてあります

warning CS0618: 'Object.FindObjectOfType<T>()' is obsolete:
'Object.FindObjectOfType has been deprecated. Use Object.FindFirstObjectByType
instead or if finding any instance is acceptable the faster
FindAnyObjectByType' 

英語ですが、読むべきは Use ○○ instead(代わりに○○を使え)の一点だけ。この一文が公式の答えです。

手順2: 公式Scripting Referenceで裏を取る

代替APIの名前で Unity公式のScripting Reference を検索すると、正確な使い方とバージョン情報が確認できます。「個人ブログの古い記事 → 公式リファレンスで現在形を確認」という順番を習慣にすると、古い情報に振り回されなくなります。

補足: AIアシスタントの回答も学習時期によって古いAPIを出すことがあります。「Unity 6でも現行のAPIで」と指定する、出てきたAPI名を公式リファレンスで確認する、という二段構えが安全です。

実践:警告を1件、動作ごと引っ越す

読み替え表を「知っている」ことと、実際に安全に引っ越せることは別の技術です。昔のチュートリアルからコピーした、こんなスクリプトで練習してみましょう。ウェーブ開始時に敵を全部探して、順番に番号札を配る——タワーディフェンスでもシューティングでもよくある形です。

// 古いチュートリアル由来のコード(警告が出る)
void StartWave()
{
    Enemy[] enemies = FindObjectsOfType<Enemy>();
    for (int i = 0; i < enemies.Length; i++)
    {
        enemies[i].SetNumber(i + 1);  // 先頭から1番・2番・3番…と番号札を配る
    }
}

手順はこうです。

  1. Consoleの黄色い警告をダブルクリックして該当行へ飛ぶ
  2. 警告文の Use ○○ instead を読む——今回はFindObjectsByType
  3. 読み替え表のとおり書き換える
  4. Playして「同じ動作」かを確認する——ここが本番です
新旧APIの並び順の罠の図。旧FindObjectsOfTypeでは敵3体の番号札が毎回1・2・3と同じ並びだが、SortMode.Noneに書き換えると2・3・1のようにバラバラになり、並び順が保証されない

実はこの例、警告を消しただけでは終わりません。旧FindObjectsOfTypeは結果をInstanceID順に並べて返しましたが、書き換え先のFindObjectsSortMode.None並び順を保証しません。「1番の敵」が実行のたびに別の個体になる——警告は消えたのに挙動が変わる、静かな事故です。番号の順序に意味があるなら、ソートを明示します。

// 並び順に意味があるなら、旧APIと同じ並びを明示する
Enemy[] enemies = FindObjectsByType<Enemy>(FindObjectsSortMode.InstanceID);

移行の完了条件は「警告が消えた」ではなく「同じ動作を確認した」。この1件分の型が身につけば、表にないAPIが来ても、同じ足取りで安全に引っ越せます。

おまけ:先に知っておくと良いこと

読み替えの基本が身についたら、次はこのあたりが役立ちます。

  • プロジェクト移行時の強い味方 API Updater: 古いプロジェクトを新しいUnityで開くと、機械的に置換できる旧APIはAPI Updaterが自動で書き換えを提案してくれます。ただし万能ではないため、この記事のような手動の読み替え知識は依然必要です。
  • バージョンアップ前にはChangelogを: エンジン更新で挙動が変わることもあります。大きなバージョンアップ前に公式のUpgrade Guide/Changelogの「API Changes」欄に目を通す習慣をつけると、事故が減ります。
  • LTSという選択肢: 安定重視なら、機能追加が止まり修正だけが続くLTS(長期サポート)版を使うのが定石です。学習中こそ最新版の派手な機能より、情報が枯れて安定したLTSが快適なこともあります。

まとめ

警告は敵ではなく、「もっと良い書き方があるよ」という案内です。

  • APIは 現役 → 警告 → エラー → 削除 と段階的に引退する。黄色い警告の段階なら壊れてはいない。
  • 頻出の読み替えは FindObjectOfTypeFindFirstObjectByTypevelocitylinearVelocity など。本記事の表を辞書代わりに。
  • 知らない警告は メッセージ内の Use ○○ instead を読む → 公式リファレンスで裏を取る の2手順で解決できる。
  • 移行の完了条件は「警告が消えた」ではなく「同じ動作を確認した」。並び順のように、警告なしで挙動が変わる箇所こそPlayで確かめる。
  • 古い記事・動画・AI出力は「間違い」ではなく「当時は正しかった」情報。公式リファレンスで現在形を確認する癖が最強の防御。

読み替え表は、今後のUnityのアップデートに合わせてこの記事に追記していきます。