BP内のグラフ・関数・変数の名前には「_
(アンダーバー)」は使うべきではない。これらを使用すると見た目上の区別がつかなくなり混乱とバグを生むからだ。
間違い探しに挑戦!
まずは次のグラフを見てほしい。
A,B,C,Dの4つのブロック(関数ノード、Get変数ノードの組)がある。A,B,C,Dはすべて異なるノードで構成されている。さて、どの辺が違うのかよく見てほしい。
分かった人は次へ。分からない人も次へ。
答え合わせ
ブロック | 関数ノード名 | Get変数ノード名 |
---|---|---|
A | MyFunction | MyVar |
B | _MyFunction | _MyVar |
C | MyFunction_ | MyVar_ |
D | My_Function | My_Var |
- Aは特に
_
を使用していない - Bは語頭に
_
を使用。関数ノード名でスペースが多いことに気が付いた人もいるだろう。 - Cは語尾に
_
を使用 - Dは単語の区切りに
_
を使用
おそらく大半の人がBの関数ノード以外の違いを見分けられなかっただろう。
なんでこんなことがおきるのか?
グラフエディタ上では_
はスペースに変換される、という機能があるため。
元々UE4では名前の命名規則はPascalCaseが採用されている。

このPascalCaseを一般的な英文にして読みやすくするために単語の区切りに自動的にスペースを表示してくれる、というのがBPなどのグラフエディタの便利機能としてある。この時、略字と単語が続く(例:XMLAndHTML
)時などにどこからが区切りかわからないために区別がつくように_
で単語の区切りを示す書き方があり(例:XML_AndHTML
)、この書き方にも対応したために_
をスペースに表示する機能になった、と思われる。
なので本来はこれは便利な機能のはずなのだ。
問題が起きる条件
見た目でスペースと区別がつかない、という問題が起きる条件は次になる。
語頭(プレフィックス)に「_」
テキスト系のスクリプト言語ではグローバルな変数とローカルな変数の名前被りを避け、ローカルであることを明示するために語頭(プレフィックス)に_
を付けるルールを設けていることがしばしばある(JavaScriptやPythonなど)。
その感覚でローカルな関数や変数名の頭に_
を付けてしまうと、グローバルなものと区別がつかない、という残念なことが起きる。
語尾(ポストフィックス)に「_」
語頭の場合と異なり意識的につける文化などはないので大きく問題にはなりがちではないが、区別のつかなさでは語頭にあるよりも凶悪でまったく区別がつかない。
語頭にある場合、スペースの幅分でかろうじてわかることもあるが、語尾は無理!
混乱の危険性ではよりこちらのほうが上である。
大文字が続かない場合の語中の「_」
前述の通り、 略字などで単語の区切りなのに大文字が続く場合を除いて 、語中、特に単語の区切りに_
を入れては全く区別がつかなくなる。
余談:単語の区切りに「 (スペース)」
_
ではないが、自動でスペースが入力される位置にスペースを入力するのも危険。
UE4のBPのグラフ・関数・変数名にはスペースが入れられるためにこれも併せて要注意。
まとめ
- BPのグラフ・関数・変数名で次は危険なので避ける
- 語頭(プレフィックス)に「
_
」 - 語尾(ポストフィックス)に「
_
」 - 大文字が続かない場合の語中の「
_
」 - 単語の区切りに「 (スペース)」
- 語頭(プレフィックス)に「
Gamemakin UE4スタイルガイドにもこの辺は書いていないので要注意。
新しく始めるプロジェクトでは是非このルールを採用してほしい。
