コガネブログ

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

【Unity】【Odin - Inspector and Serializer】入門(翻訳)

目次

メモ

はじめに

  • Odin の具体的なクラスやメソッドについて知りたい場合は
    下記のドキュメントを参照してください
    http://sirenix.net/odininspector/documentation
  • Odin は Unity 5.3 以降でサポートされています Unity 5.2 以前では動作しません

インストール

  • Odin は .unity パッケージ形式なので簡単にインストールできます
  • パッケージを Unity プロジェクトに導入した後に、
    「Sirenix」フォルダの格納場所を変更しても大丈夫です
    デフォルトでは、「Plugins」フォルダに配置されます
  • ただし、「Sirenix」フォルダ内の構造を変更したり、
    フォルダ名を変更することは絶対に避けてください
    予期せぬ問題が発生する可能性があります

ソース管理システムで Odin を使用するには

  • Odin は一般的なソース管理システムと互換性があります
  • ただし、Odin には再生成したり変更したりするファイルがあります
    これらのファイルはソース管理システムに含めずに、
    無視ファイルとして保存することをオススメします
  • 該当するファイルは下記のモノになります
    • Sirenix/Assemblies/Editor
    • GeneratedOdinEditors.dll
    • GeneratedOdinEditors.mdb
  • また、meta ファイルが有効になっている Unity プロジェクトでは
    関連する .meta ファイルも無視する必要があります

シリアライズシステムを削除して成果物の容量を削減する

  • Odin のシリアライズシステムは、Windows ストア以外の
    すべてのプラットフォームでサポートされています
  • ただし、IL2CPP ビルドでは、シリアライズアセンブリで
    コードストリップが実行されないため、成果物の容量が増えてしまいます
  • Odin を .dill 形式で使用している場合は、すべてのビルドから
    Odin のシリアライズシステムを削除することができます
  • シリアライズシステムを削除するには、
    下記のファイルとフォルダを Odin から削除します
    • Sirenix/Assemblies/link.xml
    • Sirenix/Assemblies/NoEditor/Sirenix.Serialization.dll
    • Sirenix/Assemblies/NoEditor/Sirenix.Serialization.mdb
    • Sirenix/Assemblies/NoEditor/Sirenix.Serialization.pdb
    • Sirenix/Assemblies/NoEmitNoEditor/Sirenix.Serialization.dll
    • Sirenix/Assemblies/NoEmitNoEditor/Sirenix.Serialization.mdb
    • Sirenix/Assemblies/NoEmitNoEditor/Sirenix.Serialization.pdb
    • Sirenix/Demos/Odin Inspector

オーディンと共に

  • Odin をインストールすると、Inspector の可読性や操作性が向上します
  • 特に配列とリストにおいては、項目のドラッグが可能になり、
    要素数が多い場合はページングできるようになります
  • Inspector 内のパラメータを右クリックするとコンテキストメニューが表示され、
    コピーや貼り付け、プレハブの元の値へのリセットなどができるようになります
  • Unity メニューの「Window>Odin Inspector>Preferences」の「Editor Types」から
    設定の適用箇所を変更することができます
  • Odin には数十種類の Attribute と拡張性を備えており、
    Inspector の見た目や操作方法を設定するための選択肢をたくさん用意しています
  • さらに、SerializedMonoBehaviour のような特別なクラスを継承することで
    自作のクラスやインターフェイス、ジェネリックを Inspector に表示することができます