クラスの変数名とインスペクタ上の表示

Unityでコンポーネントを作成した際、次のようなシリアライズ可能な変数はインスペクタ上に表示され、そこで値を変更することが可能です。

  • public修飾子
  • [SerializeField]属性

これにより、スクリプト内の変数をインスペクタ経由で手軽に設定できるようになります。

変数名の命名規則について

シリアライズされた変数の名前は、スクリプト作成者の好みや、会社・チームのコーディング規約によって異なります。代表的な命名パターンを以下に示します:

  1. value
    • シンプルにそのまま命名する方法。
  2. _value
    • 変数名の先頭にアンダースコアを付けることで、メンバー変数(クラス内のフィールド)であることを示します。
  3. m_value
    • m_を付けることで、明確に「メンバー変数」であることを表現します。
  4. kValue
    • kを付けることで、「定数(コンスタント)」または「特定の用途の変数」であることを明示する場合に用います。
public class ObjectNameTest : MonoBehaviour
{
    [SerializeField] private int value;
    [SerializeField] private int _value;
    [SerializeField] private int m_value;
    [SerializeField] private int kValue;
}

上記の様なコンポーネントを作成した場合、インスペクタ上の表示は以下になります。

何が何だか分かりませんが、

Unityで変数をインスペクタ上に表示する際、ObjectNames.NicifyVariableNameというメソッドが自動的に使用されているためです。

ObjectNames.NicifyVariableNameとは?

ObjectNames.NicifyVariableNameは、インスペクタ上で表示する変数名に対して変換を行い、

より見やすい名称にしてくれる便利なメソッドです。

具体的には、以下のような変換が行われます。

  • 大文字の前にスペースを挿入して単語を区切る例:MyVariableNameMy Variable Name
  • 接頭辞の_を削除
    • 例:_myVariableMy Variable
  • 接頭辞のm_を削除
    • 例:m_myVariableMy Variable
  • 接頭辞のkを削除
    • 例:kMyConstantMy Constant
  • 先頭の文字を大文字に変換
    • 例:exampleVariableExample Variable

これらの変換により、インスペクタ上での変数表示がより直感的でわかりやすくなります。

使い道は?

ObjectNames.NicifyVariableNameは、UnityEditor名前空間内にあるため、エディター上でのみ使用可能です。

そのため、主にエディタ拡張向けのスクリプトで活用されるメソッドです。

エディタ拡張を書く際には覚えておくと便利でしょう。

ObjectNamesクラスには他にも、以下のようなメソッドが用意されています。

  • GetClassName
  • GetInspectorTitle
  • SetNameSmart

これらも、特定の状況で役に立つかもしれません。

まとめ

今回は、私自身がたまに使うObjectNamesクラスとその中のNicifyVariableNameメソッドについて解説しました。

このメソッドは、エディタ拡張向けの機能なので、Unityでゲームやアプリケーションを作成する際に直接的に使用することはありません。

しかし、Unityに慣れてきて、独自のエディタ拡張を作成したいと考える際には、

きっと役に立つ場面があるでしょう。

🔗関連ページ