コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】プロジェクト全体(シーンのゲームオブジェクトや ScriptableObject などのアセット)に含まれる問題を検出できる「Odin Project Validator」の基本的な使い方

はじめに

「Odin Project Validator」は「Odin Inspector」と連携して使用できる検証ツールです

Unity 再生時、ビルド時、Unity プロジェクト起動時に
シーン内のゲームオブジェクトにアタッチされているコンポーネントや
ScriptableObject などのアセットに含まれている警告やエラーなどの問題を検出できます
もちろん、手動で問題を検出することも可能です

Asset Store ではなく公式サイトから購入できます

基本的な使い方

手動で検出

f:id:baba_s:20190721201230p:plain

Unity メニューの「Tools > Odin Project Validator」を選択します

f:id:baba_s:20190721201233p:plain

表示されたウィンドウで、問題を検出する対象を選択します

項目 内容
Scan Entire Project Unity プロジェクト全体
Scan All Assets すべてのアセット
Scan All Scenes すべてのシーン
Scan Open Scene 現在開いているシーン
Scan Senes From Build Options Build Settings で設定されているシーン
using Sirenix.OdinInspector;
using UnityEngine;

public class MyComponent : MonoBehaviour
{
    [Required] public string     m_text;
    [Required] public GameObject m_prefab;

    [ValidateInput( "@m_power <= 100", "Power は 100 以下にしてください" )]
    public int m_power;
}

例えば、上記のように Odin Inspector の
「Required」「ValidateInput」などの属性を使用したスクリプトを作成して

f:id:baba_s:20190721201613p:plain

現在開いているシーンのゲームオブジェクトに設定したものの、
正しくパラメータを設定していない場合に
先ほどのウィンドウで「Scan Open Scene」を選択して

f:id:baba_s:20190721201237p:plain

「Run Scan Open Scenes」を選択すると

f:id:baba_s:20190721201241p:plain

問題のあるコンポーネントの一覧がリストアップされます

f:id:baba_s:20190721201857p:plain

コンポーネントを選択すると、その場で問題を修正することができます

自動で検出

f:id:baba_s:20190721202430p:plain

先ほどのウィンドウで「Automate Validation」を選択すると

f:id:baba_s:20190721202436p:plain

Unity 再生時、ビルド時、Unity プロジェクト起動時に
自動で問題を検出するかどうかを設定できます

項目 内容
On Play Unity 再生時
On Build ビルド時
On Project Startup Unity プロジェクト起動時

f:id:baba_s:20190721202442p:plain

各項目を開いて、

f:id:baba_s:20190721202727p:plain

「Actions」の項目を変更すると、問題が検出された場合にどうするかを設定できます

項目 内容
None 問題が見つかっても何もしない
Open Validator If Error エラーが見つかったらこのウィンドウを開く
Open Validator If Warning 警告が見つかったらこのウィンドウを開く
Stop Hook Event On Error エラーが見つかったら操作をキャンセルする
Stop Hook Event On Warning 警告が見つかったら操作をキャンセルする
Log Error エラーが見つかったらログに出力する
Log Warning 警告が見つかったらログに出力する

この機能を使用することで、ゲームオブジェクトのコンポーネントや
ScriptableObject などのアセットに警告やエラーが含まれたまま
Unity を再生したりビルドしたりしてしまう問題を防ぐことができます