![見出し画像](https://assets.st-note.com/production/uploads/images/31030742/rectangle_large_type_2_30ed2a7d0861cf4ab9599c8756cedd09.png?width=1200)
Unityで必須と思うアセット:Odin
こんにちは、P&M Entertainmentです!
今回は、最近導入したアセットについてです。
『Odin』(オーディン)というアセットがあります。
これはどういうものかというと、『デフォルトのUnityがサポートしていないC#のデータ型でもインスペクターに表示してくれる』というものです。
ある程度Unityを触った人なら、Unityはスクリプト内でint型やstring型の変数を定義すると、インスペクターから視覚的に編集可能なのはご存知でしょう。
しかし、ゲームをストレスなく、大規模になっても効率よく作れるようになるために必須なデータ型があります。それはDictionary型のリストです。
一番親和性を発揮するのは、Unityのアニメーション機能との連携です。
アニメーションには、イベントというスクリプトの関数を呼び出す機能があります。この時、関数に渡すパラメータ(引数)を指定することができます。
しかし、ここで指定できるパラメータも、int型やstring型といった基本的な型だけです。
例えば、キャラクターからエフェクトを生成するCreateEffect()という関数があるとしましょう。そして、キャラクターは生成すべきエフェクトのプレハブを自身に保持しているとします。
通常の機能で、例えばint型の場合、GameObject型の配列番号を指定することになります。しかし、ゲーム製作において番号で管理するのは非常に効率が悪いです。ゲームにおいて、各要素は増えたり減ったり、途中に追加したりすることがままあるからです。
こうは考えないでしょうか? 『エフェクトの名前を文字列で指定したら、それに対応するエフェクトのプレハブを生成してくれたらなぁ』と。
そこで登場するのが辞書型です。これは、文字列などのキーを指定すると、それに対応する型のデータを教えてくれるものです。
つまり、CreateEffect("FireBall")とすると、FireBallという名前で管理されたゲームオブジェクトを生成してくれるのです。
なんなら、英語にする必要すらありません。CreateEffect("ファイアボール")でもいいわけです。
そして、冒頭で紹介したOdinを導入すると、こうした仕様を実現できるのです。
Odinの使い方は、下記の記事に譲ります。
Odinは、ちょっとややこしい設定をしないと辞書型のリストを表示してくれないので注意が必要です。
値段は、2020年7月24日現在$50ほどですが、わたしは中規模以上のゲームを作るなら必須、破格だと考えています。