小中高生向けプログラミングスクールTechChance!

Unityのバージョンエラーを直す方法|原因の見分け方と症状別の対処法

WRITER
 
Unityのバージョンエラーを直す方法|原因の切り分け方と具体的な対処法
この記事を書いている人 - WRITER -
プログラミング教室「テックチャンス」代表取締役。大学受験進学塾「広大研」取締役として、数学科主任講師・情報科主任講師も務める。 大学受験指導15年、プログラミング指導10年。広島大学 総合科学部 総合科学科(数理情報科学プログラム)卒業。 指導領域はScratch・Minecraft・Unity・Webアプリ開発など幅広く、初心者から経験者まで段階的に伸ばす教材体系を設計。単なる操作習得や暗記に寄らず、「目的を定める→作る→動かして確かめる→直す→完成させる」という試行錯誤の型を重視し、子どもが自力で成果物を作り切る力を育てる。また、受験指導で培った学習設計・習慣化・伸び悩みの原因分析をプログラミング学習にも応用し、学年や個性に合わせた課題設計とフィードバックを行う。 近年は生成AIも取り入れ、発想支援・表現の拡張・改善サイクルの高速化を通じて、学びを作品と成長に結びつける指導・カリキュラム開発に取り組んでいる。

「昨日まで動いていたプロジェクトが、急にエラーだらけになった」

「別のパソコンでUnityを開いたら見たことのないエラーが出た」

といった症状の多くは、Unityのバージョンに関係する問題です。

Unityの「バージョンエラー」は、原因によって次の5種類に分類できます。

  1. プロジェクトとUnity Editorのバージョン不一致
  2. パッケージとEditorの互換性問題
  3. Unity更新によるC#・APIの変更
  4. Android SDK・NDK・JDK・Gradleなどの不一致
  5. 更新後のキャッシュ・アセット・描画環境の不整合

この記事では、それぞれの原因の見分け方と安全な直し方を、症状別に整理して解説します。

最初に行うべきなのは、最新バージョンへの更新や再インストールではありません。 まずプロジェクトが最後に使ったUnityのバージョンを確認し、原則として同じバージョンで開くことです。

特に注意が必要なのはダウングレードです。Unity公式のEditorトラブルシューティングでも、新しいEditorで更新されたプロジェクトは古いUnityで開けなくなる可能性があると説明されています。

 

症状別の原因と解決法|早見表

症状・メッセージ 主な原因 解決法
Unity Hubに警告マークが表示される プロジェクトに対応するEditorが未インストール ProjectVersion.txtを確認し、同じEditorをインストール
「別のUnityバージョンで作成された」と表示される 開こうとしているEditorと保存時のEditorが違う 作業継続なら元と同じバージョン、更新目的ならバックアップ後に新しいEditorで開く
Safe Modeで起動する スクリプトまたはパッケージにコンパイルエラーがある Safe Modeに入り、最初のコンパイルエラーから修正
CS0246やCS0117などが大量に出る API変更、パッケージ不足、Assembly Definitionの参照切れ エラー発生元が自作コードかパッケージかを確認し、API・参照・パッケージを修正
An error occurred while resolving packages パッケージの依存関係やバージョンが競合 manifest.jsonとパッケージの対応Editorを確認
AndroidビルドでGradle・JDK・NDKエラー Unityが想定する外部ツールのバージョンと異なる Unity Hubから対象Editor用Android Build Supportを追加し、Unity同梱版を使う
更新後にマテリアルがピンクになる Built-in・URP・HDRP間でShaderが非互換 Render Pipeline Converterを使用し、カスタムShaderは個別に修正
更新後に動作がおかしい、起動が止まる Library内のキャッシュやインポート結果の不整合 Unityを終了し、最終手段としてLibraryを削除して再生成
Missing Scriptが表示される .metaファイル消失、GUID変更、非対応アセット 元の.metaをバージョン管理から復元。なければスクリプトを再設定

 

最初に確認すること|ProjectVersion.txtとバックアップ

プロジェクトフォルダ内の次のファイルをテキストエディタで開きます。

ProjectSettings/ProjectVersion.txt

一般的には次のような内容になっています。

m_EditorVersion: 2022.3.62f1
m_EditorVersionWithRevision: 2022.3.62f1 (...)

ここに記載されたバージョンが、そのプロジェクトを最後に保存したUnity Editorです。確認後は次の順番で対応します。

  1. プロジェクトをGitまたはフォルダ複製でバックアップする
  2. ProjectVersion.txtのバージョンを確認する
  3. Unity Hubに同じEditorがあるか確認する
  4. なければ同じバージョンをインストールする
  5. そのバージョンでプロジェクトを開く
  6. Consoleの一番上にある赤いエラーから解決する

旧バージョンはUnity Download Archiveから入手できます。

Unity Hubでのバージョン追加・複数管理の具体的な手順は「Unity Hubでのバージョン追加・切り替え・複数管理の方法」で解説しています。

 

Unity Editorのバージョンが違う場合

原因

例えば、次のような組み合わせです。

  • プロジェクトの保存バージョン:2022.3.62f1
  • 現在開こうとしているEditor:6000.0.XXf1

Unity Hubはプロジェクトに対応するEditorが見つからない場合、別バージョンのインストールまたは使用を促します(Unity公式|既存プロジェクトを開く)。新しいUnityで開くと、シーン・Prefab・ProjectSettings・パッケージなどが新しい形式へ変換される場合があります。

 

安全な解決法

現在の状態を維持したい場合は、ProjectVersion.txtと同じEditorをインストールして開きます。意図的にアップグレードする場合は、次の手順を使います。

  1. Gitでコミットするかプロジェクトフォルダを複製
  2. 元のUnityでパッケージとAsset Storeアセットを更新
  3. 移行先バージョンのUpgrade Guideを確認
  4. 新しいUnityを別途インストール
  5. 複製したプロジェクトを新しいUnityで開く
  6. Console・シーン・Prefab・ビルドを検証

Unity公式|プロジェクトのアップグレードでも、更新前のバックアップ、パッケージ互換性の確認、対象プラットフォームの確認が推奨されています。

 

新しいUnityで開いてしまったプロジェクトを元に戻したい場合

 

原則

 

すでに新しいUnityで保存した場合、単純に古いEditorで開き直すのは危険です。推奨される復旧方法は次のいずれかです。

  • Gitの更新前コミットへ戻す
  • Unity Version Controlの更新前チェンジセットへ戻す
  • 更新前に複製したプロジェクトを使用する
  • バックアップから復元する

バックアップがない場合は、新しいUnity上でエラーを修正する方が現実的です。

どうしても古いUnityへ移す場合は、新しい空プロジェクトを古いUnityで作成し、互換性を確認しながらアセットやスクリプトを個別移植します。

ただし、Prefab・Scene・ScriptableObjectなどは正常に移せない可能性があります。

 

Safe Modeとコンパイルエラーへの対処

Unityを更新した直後は、次の原因でC#のエラーが発生します。

  • 廃止されたUnity APIを使用している
  • APIの名前や引数が変更された
  • パッケージが不足している
  • 古いAsset Storeアセットが新しいUnityに対応していない
  • .asmdefの参照先がなくなった
  • 外部DLLが新しいUnityに対応していない

Safe Modeは、スクリプト関連だけを読み込み、コンパイルエラーを修正するための起動モードです。Unity公式|Safe Modeでは、通常エラーのあるプロジェクトではSafe Modeを選ぶことが推奨されています。

 

解決手順

 

  1. Enter Safe Modeを選択
  2. ConsoleのCollapseを一度解除
  3. 一番最初に発生している赤いエラーを確認
  4. エラーのファイルパスを見る
  5. 自作スクリプトかパッケージかを判別
  6. 最初のエラーを修正
  7. 再コンパイルを待つ
  8. 残ったエラーを順番に修正

大量のエラーが出ていても、根本原因が1つだけということは珍しくありません。下側のエラーから無作為に修正するのではなく、最初のエラーから確認します。

 

Package Managerのバージョン競合

原因

Unity Package Managerは、1つのプロジェクト内に同じパッケージの複数バージョンを同時にはインストールできません。例えば次の状態です。

  • Package A → Package C 1.0が必要
  • Package B → Package C 2.0が必要

この場合、Package Managerが依存関係を計算して使用するバージョンを決めます。

条件を満たせない場合は、解決エラーやコンパイルエラーになります(Unity公式|パッケージ競合と解決)。

 

確認するファイル

 

  • Packages/manifest.json:プロジェクトが直接要求するパッケージ
  • Packages/packages-lock.json:間接依存関係を含む解決結果

 

解決手順

  1. Consoleで問題のパッケージ名を確認
  2. Package ManagerでEditor対応バージョンを確認
  3. 非対応パッケージを更新または削除
  4. Git URL・ローカルパッケージ・埋め込みパッケージも確認
  5. manifest.jsonに存在しないバージョンや不要な記述がないか確認
  6. 必要な依存パッケージを追加
  7. 再解決する

パッケージには対応する最低Unityバージョンが指定されている場合があります(Unity公式|パッケージの依存関係)。

Unity Package Managerはパッケージの適用結果をpackages-lock.jsonというファイルに保存しており、依存関係だけを再計算したい場合は、バックアップ後にこのファイルを削除すると再生成されます。ただし、バージョン構成が変わる可能性があるため、最初に行う操作ではありません。通常はpackages-lock.jsonもGitで管理します。

 

Androidのバージョンエラー

Androidビルドでは、Unity本体以外に次のツールが関係します。

  • Android SDK
  • Android NDK
  • OpenJDK
  • Gradle
  • Android Gradle Plugin
  • Android Build Tools
  • Target API Level

Unityのバージョンごとに、対応するNDK・JDK・Gradleなどが異なります。特に、Android Studio用に別途インストールした最新版をUnityへ指定すると、逆に互換性エラーが発生することがあります。

Unity公式|Android環境設定でも、Unity HubからAndroid SDK・NDK・OpenJDKをインストールし、対応する同梱版を使うことが推奨されています。

 

推奨する解決法

Unity Hubで対象Editorの歯車メニューから、次を追加します。

Android Build Support
├─ Android SDK & NDK Tools
└─ OpenJDK
その後、Unityの外部ツール設定で、基本的にはUnity同梱版を使用します。カスタムパスを指定している場合は、次の項目を確認します。
Edit → Preferences → External Tools → Android

Unityのバージョンごとに、対応するGradle・Android Gradle Pluginの組み合わせが公式に公開されています。したがって、「Gradleをとりあえず最新版にする」は適切な解決法ではありません。

 

更新後にマテリアルがピンクになる

 

これはEditorのバージョンだけでなく、Render Pipelineの違いによって発生します。主な組み合わせは次のとおりです。

  • Built-in Render Pipeline用ShaderをURPで使用
  • URP用ShaderをBuilt-inで使用
  • 古いURP/HDRPパッケージと新しいEditorの不一致
  • カスタムShaderが新しい描画APIに対応していない

 

解決法

 

Built-inからURPへ移行した場合は、次の機能を使用します。

Window → Rendering → Render Pipeline Converter

標準マテリアルは変換できますが、カスタムShaderは自動変換できないことがあります。その場合はShaderをURP対応版へ変更または書き換えます(Unity公式|Render Pipeline Converter)。

ピンク色は単なる見た目の問題ではなく、「対応するShaderを使用できていない」というエラー表示です。

 

Libraryフォルダの不整合

Unityのバージョン変更後に、次の症状が出る場合があります。

  • 起動やインポートが終わらない
  • 以前はなかった不可解なエラーが出る
  • アセットの表示がおかしい
  • Asset Databaseの破損エラーが出る
  • Reimportを繰り返す

この場合、Library内に古いUnityで生成されたインポート結果やキャッシュが残っている可能性があります。

 

解決手順

  1. Unity Editorを終了
  2. プロジェクトをバックアップ
  3. Libraryフォルダを削除
  4. 同じプロジェクトを再度開く
  5. 全アセットの再インポートを待つ

Libraryは再生成可能ですが、大規模プロジェクトでは再インポートに長時間かかります。

削除は重大な問題に対する最終手段であり、バージョン警告が出たら毎回削除するものではありません。

 

Missing Scriptは本当にバージョンエラーなのか

更新後にMissing Scriptが出ても、必ずしもUnityのバージョンだけが原因ではありません。

Unityは各アセットの.metaファイルに保存されたGUIDで参照を管理しています。スクリプトの.metaが削除・再生成されると、同じファイル名でも別のスクリプトとして扱われます(Unity公式|Asset Metadata)。

 

解決法

  • Gitから元の.cs.metaをセットで復元する
  • ファイル移動時に.metaも一緒に移動する
  • 復元できない場合はGameObjectやPrefabへスクリプトを再設定する
  • クラス名とファイル名が一致しているか確認する
  • コンパイルエラーを先にすべて解消する

.metaを削除して再生成する方法は、参照切れを悪化させる可能性があります。

 

推奨するトラブルシューティング順序

安全性と解決効率を考えると、次の順番が適切です。

  1. バックアップまたはGitコミット
  2. ProjectVersion.txtの確認
  3. 同じUnity Editorで開く
  4. Consoleの最初の赤いエラーを確認
  5. Safe Modeでコンパイルエラーを修正
  6. Package Managerの互換性を確認
  7. Android等のBuild Supportを確認
  8. Render PipelineとShaderを確認
  9. Editor Log・UPM Logを確認
  10. 最終手段としてLibraryを再生成

Editor Logは次から開けます。

Window → General → Console → 右上の「⋮」 → Open Editor Log

Package Managerのログは、現在のUnityでは通常プロジェクト内の次の場所に保存されます(Unity公式|ログファイル)。

Logs/upm.log

 

教材・チーム開発での予防策

プログラミング教室で受講する場合や複数人開発では、次を統一するとバージョンエラーを大幅に減らせます。

  • 教材ごとにUnityの完全なバージョン番号を明記する(「Unity 2022」ではなく「Unity 2022.3.62f1」のように指定する)
  • ProjectVersion.txtをGitへ含める
  • Packages/manifest.jsonpackages-lock.jsonをGitへ含める
  • Assets内の.metaを必ず共有する
  • 教材作成者と受講者で同じRender Pipelineを使用する
  • Android教材では同じBuild SupportをUnity Hubから追加する
  • 授業期間中にEditorやパッケージを無計画に更新しない
  • 更新検証用の複製プロジェクトを用意する

「同じLTS系列なら必ずエラーが出ない」とは限りません。教材では、系列名だけでなくパッチ番号まで揃えるのが最も再現性の高い運用です。

 

まとめ

  • Unityのバージョンエラーは、Editor不一致・パッケージ互換性・API変更・Android関連ツール・キャッシュ不整合の5種類に大別できる
  • 最初に行うのは最新版への更新ではなく、ProjectVersion.txtの確認とバックアップ
  • Consoleの一番最初の赤いエラーから確認し、下から無作為に直さない
  • Libraryの削除やバージョン番号の書き換えは、根本解決にならない・悪化させる可能性がある操作なので最終手段に留める

より詳しく知りたい方は、以下の記事もあわせてご覧ください。

 

お子さまに合う学び方を、無料体験で確かめてみませんか?

プログラミング学習は、年齢や経験だけでなく、「何を作りたいか」「どんな学び方なら楽しめるか」によって適したコースが変わります。

テックチャンスの無料体験会では、実際にお子さまがパソコンを操作しながら、プログラミングやゲーム制作を体験できます。

初めてでも授業についていける?」「Scratch・Minecraft・Unityのどれが合う?」「教室の雰囲気を見てから決めたい」といった疑問も、体験時にご相談いただけます。

無理に入会を決める必要はありません。まずは、お子さまが楽しみながら続けられそうかをお確かめください。

 

 

この記事を書いている人 - WRITER -
プログラミング教室「テックチャンス」代表取締役。大学受験進学塾「広大研」取締役として、数学科主任講師・情報科主任講師も務める。 大学受験指導15年、プログラミング指導10年。広島大学 総合科学部 総合科学科(数理情報科学プログラム)卒業。 指導領域はScratch・Minecraft・Unity・Webアプリ開発など幅広く、初心者から経験者まで段階的に伸ばす教材体系を設計。単なる操作習得や暗記に寄らず、「目的を定める→作る→動かして確かめる→直す→完成させる」という試行錯誤の型を重視し、子どもが自力で成果物を作り切る力を育てる。また、受験指導で培った学習設計・習慣化・伸び悩みの原因分析をプログラミング学習にも応用し、学年や個性に合わせた課題設計とフィードバックを行う。 近年は生成AIも取り入れ、発想支援・表現の拡張・改善サイクルの高速化を通じて、学びを作品と成長に結びつける指導・カリキュラム開発に取り組んでいる。

- Comments -

Copyright© TechChance! 公式ブログ , 2026 All Rights Reserved.