【第43回】〜Odin – Inspector and Serializer〜インスペクターを劇的に使いやすくするエディタ拡張

Odin – Inspector and Serializerとは


Sirenix
よりリリースされている、

インスペクターをさらに使いやすくすることができるアセット

ゲーム内部には影響しませんが、エディタ拡張によりゲーム製作が捗る機能を追加したりすることができます。

どんな人にオススメ?

  • インスペクターがもっとみやすくなるといい・・・
  • デバッグがもっとやりやすくなるといい・・・
  • 誤って変更してしまわないように編集できない様にしておきたい
  • メソッドを実行するボタンが欲しい
  • Unityに慣れてきたけどもっと効率よく作業したい

使ってみた

Unityを始めた時から、

必須レベルのアセットとしてよく紹介されているこのアセット。

素材などとは違ってエディタ拡張ということで、

Unityの各エディタとかコードもよく分かっていなく必要性が感じられなかったので、

しばらく手を出せていなかったのですが、

これは超便利ですね!!!

早速使っていきます。

まずはインポート。

機能がたくさんあって、サンプルシーンをみてもぱっと見どうしたらいいか分からんので、

実際使う時どうするのかをチェックしてみたいと思います。

まずOdinを使う際には、

using Sirenix.OdinInspector;

これをスクリプト作成時に使う必要があります。

一番上のUnityEngineとかある部分ですね。

まず機能を調べて一番いいじゃん!って思ったボタンをやってみたいです。

まずこのようにスクリプトを用意しました↓

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Sirenix.OdinInspector; //←これを追加

public class OdinTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    
	[Button("ここを押す")] //←[Button("ラベル名")]
	public void OnButton(){
		Debug.Log("押した!");
	}
}

関数の上に[Button(“ラベル名")]を記入します。

そしてこのスクリプトをとりあえず空のオブジェクトにアタッチしてインスペクターを見てみましょう。↓

”ここを押す”ボタンが出てきました!

それでは押してみると・・・

ログが表示されました!

関数が実行されたということですね!

あとは変数をグループでまとめて表示するやつですかね。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Sirenix.OdinInspector;

public class OdinTest : MonoBehaviour
{
	
	[BoxGroup("スコア")] //←[BoxGroup("グループ名")]
	public int playerHp;
	[BoxGroup("スコア")]
	public int enemyHp;
	
	
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    
	[Button("ここを押す")]
	public void OnButton(){
		Debug.Log("押した!");
	}
}

[BoxGroup(“グループ名")]と変数の上に記入。

別の変数にも同じグループ名を割り振ると・・・

スコアというグループがつくられて、

その中に2つの変数が入っています!

これはコードの書き方がぐちゃぐちゃの自分にはこれだけでもかなりストレス減りそうです。

どんどん思いついたら書き足していくので、

インスペクターを見た時に非常に見づらかったりしてたんですよね。

あとは変数名の表示を任意で変えれます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Sirenix.OdinInspector;

public class OdinTest : MonoBehaviour
{
	
	[BoxGroup("スコア")] 
	public int playerHp;
	[BoxGroup("スコア")]
	public int enemyHp;
	
	[LabelText("ぶーる")] //←[LabelText("ラベル名")]
	public bool a;
	
	
	
	
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    
	[Button("ここを押す")]
	public void OnButton(){
		Debug.Log("押した!");
	}
}

[LabelText(“ラベル名")]で、その変数をインスペクターで何というラベルで表示するかを決めれます。

通常だと変数の名前が出ると思うんですが、

「ぶーる」になってますね。

日本語で設定できるので、時間置いたりした時にインスペクターを見て思い出しやすい名前にしておいたりできますね。

あとは、配列をつかってインスペクターで編集したりもよくするのですが、

なにも割り当てずとも通常通り配列を宣言しただけでインスペクターでの表示も変わっています!

右の+を押すと要素が追加されて、

左のタブをドラッグすれば並べ替えもできちゃいます。

普段自分はよくGame Creatorというビジュアルスクリプティングを使っているのですが、

それもこうやってインスペクターで設定がしやすい仕様になっていて、

それに近い使用感です!

自分のスクリプトでこうやってインスペクターを使いやすくしてあげると、

アップデートで変更したい時とか、

後からの調整もしやすくなると思います!

機能がありすぎてご紹介しきれないのですが

↓のリンクが公式のドキュメントになってます!

https://odininspector.com/documentation/

という感じで個人的にとっつきやすく便利そうな機能をサッと試してみました!笑

まとめ

いかがでしたでしょうか?

気になった方は是非アセットストアでチェックしてみてください!

こちら↓

というわけでこれは便利そう!っていうのを一部試してみたのですが、

まだまだ機能があります。

エディタ拡張自体は自分でやったりとかいう技術は今の自分にはないので、

より深い機能は使いこなせないと思うのですが、

インスペクターの拡張だけでもかなり使えそうです。

始めたばかりの方も、ある程度コードが書けるようになって自分でゲームを1からやってみます!っていうときに、このアセットにも慣れておくと今後のゲーム製作で効率アップ率が全然変わってきそうです。

今回はこんな感じで!

それでは💤