クラスの変数名とインスペクタ上の表示
Unity
でコンポーネントを作成した際、次のようなシリアライズ可能な変数はインスペクタ上に表示され、そこで値を変更することが可能です。
public
修飾子[SerializeField]
属性
これにより、スクリプト内の変数をインスペクタ経由で手軽に設定できるようになります。
変数名の命名規則について
シリアライズされた変数の名前は、スクリプト作成者の好みや、会社・チームのコーディング規約によって異なります。代表的な命名パターンを以下に示します:
value
- シンプルにそのまま命名する方法。
_value
- 変数名の先頭にアンダースコアを付けることで、メンバー変数(クラス内のフィールド)であることを示します。
m_value
m_
を付けることで、明確に「メンバー変数」であることを表現します。
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
は、インスペクタ上で表示する変数名に対して変換を行い、
より見やすい名称にしてくれる便利なメソッドです。
具体的には、以下のような変換が行われます。
- 大文字の前にスペースを挿入して単語を区切る例:
MyVariableName
→My Variable Name
- 接頭辞の
_
を削除- 例:
_myVariable
→My Variable
- 例:
- 接頭辞の
m_
を削除- 例:
m_myVariable
→My Variable
- 例:
- 接頭辞の
k
を削除- 例:
kMyConstant
→My Constant
- 例:
- 先頭の文字を大文字に変換
- 例:
exampleVariable
→Example Variable
- 例:
これらの変換により、インスペクタ上での変数表示がより直感的でわかりやすくなります。
使い道は?
ObjectNames.NicifyVariableName
は、UnityEditor
名前空間内にあるため、エディター上でのみ使用可能です。
そのため、主にエディタ拡張向けのスクリプトで活用されるメソッドです。
エディタ拡張を書く際には覚えておくと便利でしょう。
ObjectNames
クラスには他にも、以下のようなメソッドが用意されています。
- GetClassName
- GetInspectorTitle
- SetNameSmart
これらも、特定の状況で役に立つかもしれません。
まとめ
今回は、私自身がたまに使うObjectNames
クラスとその中のNicifyVariableName
メソッドについて解説しました。
このメソッドは、エディタ拡張向けの機能なので、Unityでゲームやアプリケーションを作成する際に直接的に使用することはありません。
しかし、Unityに慣れてきて、独自のエディタ拡張を作成したいと考える際には、
きっと役に立つ場面があるでしょう。