HideInInspector の罠

public class Abc : MonoBehaviour
{
public GameObject mObj;
...
}
みたいな変数を作る。
インスペクタでGUI的に mObj に値を割り当てた後に
やっぱりインスペクタでこのあたりを設定するのはやめよう、と思い
スクリプトだけを以下のように修正する。(この時インスペクタには触らない)
{
[HideInInspector] GameObject mObj;
}
すると、
mObjに値が設定されているがインスペクタからは見えないようになってしまう。

.sceneファイルをテキストエディタで開いたら、
↓こんな感じの記述が残っているのが確認できるはず。

mObj: {fileID: 2020468654}

こうなってしまうとインスペクタや、C#のソースをいくら眺めても値を設定していないように見えるが、シーンファイルにて値が設定されてしまっているので何か変な挙動を行うことがあるはず。

注意したい。

なんでこんなのを見つけたかというと、
大人気アセット「NGUI (version3.0.2)」のサンプル「Popup List」がそうなっていて読み解くのに時間がかかってしまったから。