Unityでゲームを作っていると、システムの複雑化に伴ってenum
を使いたくなる場面が増えてきます。
私が今作っているゲームでも、大量の要素を持たせたenum
を使う機会がありました。
たとえば、カテゴリやタグとして使うための列挙型を用意したら、あっという間に30項目以上になってしまい…。
最初は英語で書かれたenum
をそのままインスペクターに表示して、選んで使っていたのですが、これが意外と曲者でした。
私自身英語がかなり苦手ということもあり、英語表記が直感的でないため、選択ミスや設定ミスが頻発してしまったのです…!
似たような形の英単語や、同じアルファベット始まりの別単語を選んでいたりと、小さな混乱が積もり積もって地味にストレスに…。
日本語表示にすればいいじゃん
「どうにか日本語で表示できないかな…?」と調べてみたところ、なんとUnityではInspectorName
という属性を使うことで、インスペクター上の表示をカスタマイズできることがわかりました。
使い方はとてもシンプルです。
public enum DungeonTheme
{
[InspectorName("火山")] // InspectorName Attributeと表示したいテキストを記載
Volcano,
[InspectorName("氷の洞窟")]
Ice,
[InspectorName("闇の迷宮")]
Darkness
}
このようにenum
の各値に[InspectorName("表示名")]
を付けるだけで、インスペクター上では英語ではなく日本語が表示されます。

これが…

こうなります!
実際の表示もちゃんと「火山」「氷の洞窟」「闇の迷宮」となり、非常に見やすく、選び間違いの心配もグッと減りました。
(Volcano、Ice、Darknessの3つの例だとそこまで間違うことは無いのかなと思いますがw)
InspectorName Attribute
InspectorName Attribute
は Unity 2021.2 から追加された機能で、今一般的に使用されているUnityプロジェクトであれば基本的に使えます。
メリットとしては、コードは英語で管理しつつ、エディタでは日本語でわかりやすく扱えるということですかね。しかも簡単に。
注意点としては、逆に、インスペクターでの表示専用のようなので、ToString()
したときには上の例の場合だと「闇の迷宮」ではなく、「Darkness
」等の英語表記が返る感じですね。
むしろ、表示上だけ日本語にしたい、という条件であればバッチリあいますね。
今までずーっと、Unity2022 使ってたけど全然知りませんでした…
まとめ
Unityでは、enum
に[InspectorName]
属性を付けることで、インスペクター上の表示名を日本語に変更できます。
ちょっとした工夫ですが、使いやすさ・ミスの削減・開発効率の向上に繋がるおすすめテクニックですね。
今回のように、表示名を日本語にできると、タグや属性の選択ミスが減り、作業効率もアップ!…するはずw
今後は設定ミスでイライラする機会が減らせそうかなw
積極的に使っていきたいと思います!
—–
どうやら PropertyDrawer を使うパターンもあるようですが、そちらは 2021以前のバージョンでもいけるやり方らしい。
(とはいえ2022もサポート対象外になっている今では需要は無いのかな?)
コメント