CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】エラーの原因が分かるエラーログの見方解説!
こんにちは!Unityで開発をしていると、エラーは付き物ですよね。
頻繁に出てくるエラーならば対処法も分かってきますが、見慣れないエラーが出ると困ってしまいます。
そこで本記事では、エラーが出た時にエラーの原因が分かるエラーログの見方を解説していきます!
エラーが出た時の解決方法
Unityでスクリプトを書き終わると、このようにコンソールにエラーが表示されることがあります。
これはエラーログというもので、エラーが起きた箇所や、その原因を教えてくれるものです。
ですが英語で表示されるのでどこを修正すればいいのかが分かりにくいですよね。
そんなエラーログの使い方を解説していきます。
エラーログからエラーの場所を確認
まずは、エラーログを開いてエラーが起きた箇所を確認しましょう。
エラーが起きた箇所を確認するにはコンソールに出てきたエラーログをダブルクリックしてください。
するとスクリプトのエラーが発生した箇所を自動的に開いてくれます。
エラーログの文章と、開かれた箇所を照らし合わせて確認してみましょう。
この場合はaを定義する前に使っているのがエラーの原因だったと分かります。
エラーログで検索する方法
今回は簡単なエラーだったのですぐに解決できましたが、中には発生した箇所が分からないエラーもあります。
そんな時はエラーログをコピーアンドペーストしてグーグル検索してみると、解決方法が出てくることがあります。
エラーログをコピーするには、エラーログを選択した状態でCtrlキーとCキーを同時に押しましょう。
そのまま検索してもいいですが、下のようにerror CS0103~の箇所にエラーの原因が書いてあるので、この部分だけを検索してみるのがオススメです。
エディタがエラー落ちした時
Unityのエディタがエラー落ち(強制終了)してしまってエラーの原因が特定できないことがあります。
そんな時でも、Editor.logというファイルにエラーログが保存されています。
OSごとのEditor.logの保存場所は以下の通りです。
OS | ログの保存場所 |
Windows | C:\Users\username\AppData\Local\Unity\Editor\Editor.log |
macOS | ~/Library/Logs/Unity/Editor.log |
Linux | ~/.config/unity3d/Editor.log |
Windowsの場合は、AppDataは隠しファイルになっているため表示する設定が必要になります。
下のようにエクスプローラーから表示→表示→隠しファイルにチェックを入れましょう。
これでAppDataフォルダが表示されるようになり、Editor.logファイルにアクセスできるようになります。
エディタがクラッシュした時のエラーの原因を特定したい場合は、このEditor.logから原因箇所を探ってみましょう。
エディタが頻繁にクラッシュしてしまうときはUnityが重くなってしまっているかもしれません。
Unityが重くなる原因と最適化方法については下の記事で解説しています。
また、PCのスペックが足りていない可能性もあります。
Unityの必要スペックについては下の記事でまとめています。
エラーメッセージが表示されない?
エラーログが表示されていないにも関わらず、エラーでプログラムが実行できなくなることがあります。
そんなときはエディタの再起動を試してみましょう。
一度の再起動では解決せず、何度か再起動して解決することもあるようです。
また、エラーログは出るものの、エラーメッセージだけが表示されない以下のような例もあるようです。
こちらの場合も再起動で解決することがあるようなので、試してみてください。
エラーが出た時に一時停止する設定方法
Unityでは、エラーが発生したときにシーンの再生を一時停止する設定が用意されています。
下のようにコンソールにあるError Pauseをオンにすると一時停止が有効になります。
エラー発生時のシーンをよく調査したい場合に有効な機能です。
よくあるエラーコード一覧
エラーcs1002と出るとき
以下のように、「~error CS1002: ;expected」 とエラーが出ることがあります。
これはプログラムの該当箇所の文末にセミコロン(;)をつけ忘れていることを意味するエラーログです。
エラーログをダブルクリックし、エラーの原因箇所を開きましょう。
文末にセミコロンを加えることでエラーが解決できます。
エラーcs0246と出るとき
下のように、「error cs0246~」とでることがあります。
これは使用しようとしているネームスペースが存在しない場合に発生するエラーです。
Unityのプログラムでは最初にusing UnityEngine;のようなネームスペースの記述が必要でしたよね。
今回はそれを書いていないのが原因でした。
プログラムの冒頭に下のような記述を追加すれば解決できました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
このように、error cs0246とでたときはネームスペースの記述が不足していたり書き間違いをしていないか確認してみましょう。
エラーcs0103とでるとき
以下のように、「~error CS0103: The name ‘~’ does not exist in the current context」のように出ることがあります。
これは存在しない変数や命令を使おうとしたときに起きるエラーです。
スクリプトの該当箇所を開き、変数のスペルミスがないかどうかや、変数を定義する前に使おうとしていないかなどを確認してみましょう。
おすすめアセット
Maintainer
Maintainerは、エラーを修正したい時に役立つアセットです。
1クリックでプロジェクト内で起きたエラーを検索し、自動修正することもできます。
未使用のアセットを削除する機能もあり、あると必ず役立つアセットです。
QHierarchy
QHierarchyはUnityエディタのヒエラルキーをより使いやすくしてくれるアセットです。
様々なアイコン表示で見やすくしてくれたり、エラーアイコンを表示することができたりと作業効率をアップしてくれます。
まとめ
以上、エラーの原因が分かるエラーログの見方を解説してきました。
Unityの開発にはエラーはつきものです。
エラーが起きても慌てず、エラーログなどを活用してサクッと解決していきたいですね!