Unity を検索

ツールを作るためのツール:Odin で生産性を向上させるためのヒント

2021年9月16日 カテゴリ: ゲーム | 5 分 で読めます
Odin
Odin
シェア

Is this article helpful for you?

Thank you for your feedback!

This blog was created in partnership with a third-party Verified Solutions partner to share information that may be useful to Unity users. These professional-caliber tools, plug-ins, SDKs, and other technical solutions have been reviewed and verified by Unity engineers for compatibility with Unity.

Unity の公認ソリューションパートナー(VSP)である Odin は、皆さんの次のプロジェクトでの生産性を向上させるためのさまざまな製品を提供しています。ワークフローを合理化する 100 を超える属性を搭載する Odin Inspector を使うと、パワフルでカスタマイズされた、ユーザーに分かりやすいエディターの恩恵を、カスタムのエディターコードをまったく書くことなしに受けることができます。一方、パワフルで拡張性の高い Odin Serializer と、作品に潜む問題をスキャンする Odin Validator の組み合わせも、同様に皆さんの野心に溢れる試みを支えてくれます。 

Odin を最大限に活用してみませんか?ここでは、時間を節約し、効率を最大化し、プロセス全体を改善するための 5 つのヒントをご紹介します。

Menu 6

グループ属性で散らかったインスペクターを整理する

多くのインスペクター変数を持つ大規模なスクリプトは、視覚的に見栄えが悪いだけでなく、内容を追いかけるのも困難です。この問題を解決するために Odin のグループが存在します。グループは、関連するプロパティを組み合わせて、さまざまな方法で描画することができるので(ラベル付きボックス、ドロップダウン、複数ページを持つタブなど)、インスペクターをすっきりとした管理可能な状態に保つことができます。

しかし、実際にグループはどのように機能するのでしょうか。同じ名前の属性の関連付けを通じて、関連するメンバーと組み合わせることができます。下の GIF は、Odin の有効・無効を切り替えて、グループ属性を使うとインスペクターの見栄えがどのように良くなるかを示したものです。

Menu 5

属性の中に C# 式を直接書く

多くの属性では、メンバーを便利に参照したり、評価の対象となる C# 式を含む文字列パラメーターを含めることができます。これにより、インスペクターに基本的なロジックを簡単に注入することができます。

属性式は、「@」記号で始まる文字列で示されるもので、非常に柔軟性があります。これにより、追加メンバーを無数に作成することなく、Odin のあらゆる属性にカスタムロジックや動作を追加することができます。下の例では、こうした動作がいかにシンプルな式で実現できるかを示しています。

C# expressions

バグの発生を防ぐための検証属性の使用

コンポーネントがどのように動作するかを知らないと、誤って無効な値を設定したり、必要な値の割り当てを忘れたりして、ミスが発生することがあります。多くの場合、開発者はこの問題を解決するために、設定を行うためのユーザーに分かりやすいカスタムエディターを手動で記述しようとします。

Odin には、このような開発者がやろうとすることを支援する多くの属性があらかじめ用意されています。下の GIFは、ChildGameObjectsOnlyValidateInputRequired といった、よく使われる属性の一部を示しています。

Validation attributes to avoid introducing bugs

プロジェクトにカスタムのグローバル検証ルールを導入して、Odin Inspector にそれを反映させることもできます。

これらの機能を集約しているのが、Odin Validator アドオンです。このアドオンは、プロジェクトをスキャンするように促し、未解決のエラーがあれば警告を表示します。たとえば、プロジェクト内の何千もの場所に置かれたアセットについて、新しい(予期せず誤った)要件を導入したとします。Odin Validator は、こうした問題を検出して警告を出し、問題の修正を支援してくれます。

属性を使用したカスタム Unity エディターのウィンドウの構築

継承する Odin のクラスには、OdinEditorWindow と OdinMenuEditorWindow の 2 種類があることに注意してください。ここでは、OdinEditorWindow について書きます。

プロジェクトを概観したり、大規模なデータセットを処理したり、カスタムツールを作成したりと、エディターウィンドウはプロジェクトの制作ワークフローを扱いやすく、効率の良いものにするために役立ちます。

具体的には、OdinEditorWindow クラス 1 つだけを継承すれば、Odin の描画システム全体にアクセスすることができます。EditorWindow ではなく OdinEditorWindow を継承することで、エディター GUI のカスタムコードを書くことなく、フィールド、プロパティ、メソッドを効果的にレンダリングすることができます。下の GIF は、いま紹介したプロセスがいかに簡単であるかを示しています。

Menu 3

SerializedScriptableObject を継承し、ポリモーフィックなデータ構造をシリアライズする

Unity がシンプルで効率的なシリアライズを優先していることは周知の事実です。しかし、辞書、継承、デリゲートなど、より複雑なデータ構造や機能を利用することが推奨される、あるいは必要とされる場合もあります。 

Odin Serializer は、インスペクターへの保存とレンダリングを最初からサポートしているので、こうした複雑な要素に取り組むことができます。実際、[SerializeReference] を使うと、最近追加されたポリモーフィック(継承)シリアライズ機能のサブセットをインスペクター内で利用することができます。以下の例では、シリアライズとインスペクターの機能の一部を紹介しています。

Menu 1

Odin には、あらゆるプロジェクトの生産性を高め、ワークフローを改善するための適切なツールが用意されています。この記事でご提案した内容が皆さんの活動に役立てば幸いです。また、年内に予定されている Validator のメジャーアップデートを含むエキサイティングな新機能にもご期待ください。

Odin の使用を開始するには、Unity アセットストアから個人用のライセンスをダウンロードしてください。皆さんのプロジェクトでエンタープライズソリューションが必要な場合については、こちらで詳細をご確認ください。その他のヒントについては、Odin の YouTube チャンネルをご覧ください。

2021年9月16日 カテゴリ: ゲーム | 5 分 で読めます

Is this article helpful for you?

Thank you for your feedback!

関連する投稿