Version: 2020.1
言語: 日本語
ローカルフォルダまたは .tgz ファイルのパス
ネットワーク問題

トラブルシューティング

このセクションでは、以下の問題に関する情報を提供します。

ネットワーク関連の問題が発生する場合は、Unity Package Manager Diagnostics (診断) ツールを実行することもできます。詳細は、 ネットワークの問題を参照してください。

Package Manager ウィンドウのエラーメッセージ

Package Manager は、問題が発生すると Package Manager ウィンドウにエラーインジケーターを表示します。

  • System-wide issues (システム全体の問題)

    ステータスバー に表示されるエラーメッセージは、Package Manager が特定のパッケージに関連しない問題を検出したことを示します。例えば、Package Manager が パッケージレジストリサーバー にアクセスできない場合、ステータスバーに以下のメッセージが表示されます。

    ネットワークエラーメッセージ
    ネットワークエラーメッセージ

    ネットワークがパッケージレジストリサーバーにアクセスできない場合、それはおそらくネットワークとの接続に問題があるためです。ユーザーまたはシステム管理者がネットワークエラーを修正すると、ステータスバーがクリアされます。

    If your network connection is working, but you are not signed into your Unity account, the Package Manager doesn’t display any Asset Store packages. When you try to use the My Assets scope, the Package Manager displays an error in the status bar:

    Unity アカウントからログアウトした状態
    Unity アカウントからログアウトした状態

    リストビューSign in ボタンをクリックして Unity Hub を通して Unity アカウントにサインインします。

  • Package-specific issues (パッケージ特有の問題)

    ロードまたはインストール時に特定のパッケージに問題がある場合 (例えば、どのバージョンのパッケージをロードするかを決定する場合)、エラーアイコン () がパッケージリスト の問題があるパッケージの隣に表示されます (A) 。問題が何であるかを調べるには、問題があるパッケージの詳細ビューを開きます (B)

    依存関係エラーメッセージ
    依存関係エラーメッセージ

Missing MonoBehaviour エラーメッセージ

ビルド中に Missing Behavior のエラーが多発する場合、UnityLinker が参照しないと思ったコンポーネントを誤って除去している可能性があります。これは、ストリッピングのレベルが強すぎるために起こります。たとえば、2D SpriteShape パッケージの SpriteShape コンポーネントを参照するプレハブが AssetBundle 内にある場合、そのオブジェクトが見つからず、コンパイラー警告が発生することがあります。

この問題を解決するには、UnityLinker のストリッピングレベルを下げるか、パッケージのアセンブリを link.xml ファイル内で宣言して、ストリッピングされないようにします。

<linker>
    <assembly fullname="Unity.2D.SpriteShape.Runtime" preserve="all"/>
    <assembly fullname="Unity.2D.Common.Runtime" preserve="all"/>
 </linker>

ストリッピングレベルと UnityLinker の詳細については、マネージコードストリッピング を参照してください。

Package Manager が見つからない、またはウィンドウが開かない

package.manifest ファイルの形式が正しくない場合、Unity コンソールに次のようなエラーが表示されます。

Failed to resolve packages: The file [<project-path>/Packages/manifest.json] is not valid JSON:
  Unexpected token '}' at 44:1
  }

You can use the information contained in the error message to fix the JSON. There are a number of online validators that you can use to try to correct the problem. Once you save the corrected file, Unity reloads the Package Manager window.

As of 2019.3, your manifest.json file should not contain any references to the com.unity.package-manager-ui package. You can either reset your project’s package configuration or remove the following line from the manifest’s dependencies list:

    "com.unity.package-manager-ui": "2.1.1",

If you are still experiencing problems, check to see if your project manifest uses “exclude” as a package version. This is an obsolete value for the dependencies property. If you find any lines like these, remove the entire line. Package Manager only installs packages that are explicitly included as a dependency in your project, so once you remove that entry, Package Manager ignores the package and doesn’t install it.

それでも Package Manager の読み込みに失敗する場合は、パッケージが認識されないプロジェクトのパッケージ設定のリセット の手順に従ってください。

Unity を新しいバージョンにアップグレードした後に問題が発生する

プロジェクトを新しい Unity バージョンにアップグレードすると、Package Manager は、互換性のないパッケージを新しい互換バージョンに自動的に更新します。ただし、Unity がパッケージをコンパイルできない場合、Package Manager はコンソールにエラーメッセージを表示します。

これらのメッセージを修正するには、エラーメッセージを読み、可能な限り問題を修正します。たとえば、パッケージに別のパッケージまたはバージョンへの依存関係がない場合があります。その場合は、自身でパッケージをインストールしてみてください。

使用できるものが見つかるまで、以下の一連の解決法を試すこともできます。

  • バックアップして、プロジェクトの下の Packages フォルダーを削除します。
  • バックアップしてから、プロジェクトの Packages フォルダー内のパッケージソースを削除し、manifest.json ファイルのみを残します。次に、プロジェクトを再ロードしてください。
  • 新しい空のプロジェクトを作成します。Package Manager ウィンドウが正常に起動したら、失敗したプロジェクトの Library/PackageCache/com.unity.package-manager-ui@<version> フォルダーを、新しく作成したプロジェクトの同じフォルダーと置き換えます。
  • 最後の手段として、プロジェクトをデフォルトのパッケージ設定にリセットし、動作するまでパッケージを 1 つずつ加えてゆきます。

パッケージのインストールが失敗する

レジストリから新しいパッケージをインストールしようとしても機能しない場合は、許可の問題が原因である可能性があります。

キャッシュフォルダーに対する完全な許可が必要です。

  • Windows: C:\Users\yourname\AppData\Local\Unity\cache
  • MacOS: ~/Users/Library/Unity/cache

ネットワークに問題がある可能性があります。 ファイアウォールプロキシ の設定を確認してください。

学校、官公庁、またはネットワークで保護された職場などの組織環境では、プロキシサーバーを設定してネットワークとインターネット間のトラフィックを制御しているために、Unity または Package Manager で認識されない独自のサーバー証明書を使用する場合があります。 ネットワーク管理者に相談してください。

パッケージが認識されない

多くのコンパイルエラーが表示される場合、Unity が既存のプロジェクトのパッケージを認識していないことを示している可能性があります。この場合、.NET コンポーネントが欠落している可能性があります。

Windows の場合

  1. Visual Studio 2017 version 15.9.0 以降と、Other Toolsets (他のツールセット) で選択した .NET Core cross-platform development workload (.NET Core クロスプラットフォームの開発) と一緒に、ダウンロードしてインストールします。 .NET SDK v2.2.101 コンポーネントをダウンロードしてインストールします。

MacOS の場合

  1. .NET SDK v2.2.101 コンポーネントをダウンロードしてインストールします。

  2. 推奨される更新プログラムを Visual Studio にインストールします。

  3. Homebrew を使用して、mono を作成してインストールします。

      brew update
        brew install mono # optional
        brew upgrade mono
    
  4. 必要な場合は、プロジェクトの Library/obj/temp フォルダーを削除し、Unity を再起動します。

  5. それでも、問題が解決しない場合は、コンピューターも再起動します。

Windows 上の hostfxr.dll の読み込みエラー

コンソールが hostfxr.dll ライブラリが見つかったが、Unity が C:\<path_to_app>\hostfxr.dll からのロードに失敗したと報告した場合、Windows 7 または Windows Server 2008 R2 では KB2999226KB2533623 の両パッチをインストールすることでこのエラーを修正できます。

プロジェクトのパッケージ設定のリセット

プロジェクトのパッケージの問題が多すぎる場合は、プロジェクトをリセットして、Unity のエディターバージョンのデフォルトのパッケージ設定に戻すことができます。この操作により、プロジェクト内のすべてのパッケージがリセットされます。これによって問題の原因を修正することはできないかもしれませんが、問題が何であるかを理解するのに役立ちます。

ノート: パッケージ設定のリセットを取り消すことはできません。そのため、最初に manifest.json ファイルをバックアップするか、プロジェクトがソース管理下にあることを確認してください。また、先に進む前にプロジェクトの複製を作成し、クローンの操作をテストすることで、追加の予防措置を取ることができます。

デフォルトのパッケージ設定に戻すには、Help メニューから Reset Packages to defaults を選択します。

Help > Reset Packages to defaults
Help > Reset Packages to defaults

プロジェクトの複製のリセット

最終的な変更を実行する前に、デフォルトパッケージへ戻すことをテストすることもできます。

  1. プロジェクトフォルダーをコピーし、名前を変更して見つけやすくします (例えば、プロジェクトの名前が MyProject の場合、clone_MyProject などを使用します)。

  2. 新しくコピーして作られたプロジェクトをロードします。

  3. Help メニューから、Reset Packages to defaults を選択します。

    プロジェクトのサイズによっては、数分かかる場合があります。

  4. パッケージが正常にリセットされたことを確認します。正常にリセットされれば、元のプロジェクトで安全に操作を実行できます。

Git URL の認証の問題

SSH プロトコルを使用して Git URL でパッケージをインストールする場合、バックグラウンドで ssh-agent を実行していて、PID 環境変数が適切に設定されていても、Git から認証エラーを受け取る場合があります。

スクリプトがバックグラウンドで ssh-agent を起動する際、エクスポートされた環境変数が有効なのは、現在スクリプトが走る Bash シェルとその地点から起動する子プロセスのみです。なぜなら、スクリプトは親プロセス、無関係のプロセス、作成済みの子プロセスの環境変数を変更できないからです。仮にスクリプトが .bashrc に位置していたとしても、Bash シェルで実行されてしまうでしょう。

Unity アイコンをダブルクリック、または、Unity Hub を使用して Unity または Unity Hub (Windows と macOS の両方) を起動してもシェルで実行されないため、スクリプトは実行されません。つまり、Unity Editor の処理にはこれらの変数が設定されていないため、最終的に Unity によって呼び出される Git 処理にもこれらの変数は含まれません。

この問題を解決するには、以下のいずれかを実行できます。

  • Open a Bash shell first (before opening the Hub) and manually launch the Unity Editor from that shell.
  • Windows を使用している場合は、setx コマンドを使用して、Hub の処理が始まる前に Windows レジストリに環境変数を永続的に設定します。この解決策は、起動時にスクリプトを 1 回実行し、Hub が Windows で起動しないことを確認できる場合に最適です。例えば、以下のように使用します。
  # Expose env variables to native windows
    setx SSH_AGENT_PID "$SSH_AGENT_PID"
    setx SSH_AUTH_SOCK "$SSH_AUTH_SOCK"
ローカルフォルダまたは .tgz ファイルのパス
ネットワーク問題