参照: http://sourceforge.jp/projects/mmd-for-unity/scm/svn/commits/149 ※r149が最新のコミットでもリリースされたものでもないので間違いないようおねがいします。
InspectorBase.cs で [CustomEditor(typeof(Object))] を引っ掛けて、PMDInspector/VMDInspector に振り分けています。もし、他のスクリプトなどでも [CustomEditor(typeof(Object))] を使っている場合は、どちらかが動かなくなってしまうので、動かさなくてもいいほうをコメントアウトするとよさそうです。 そのために、InspectorBase.cs の先頭あたりの#defineの1行をコメントアウトするだけで、InspectorBase.cs全体を無効化することができます。
PMDInspectorでは、PMDLoaderWindow相当の機能を提供しています。EditorGUILayoutを使ってGUIを組んで、PMDLoaderScriptに投げているだけですけれども。
VMDInspectorも大体同様で、VMDLoaderWindow相当の機能を。こちらもEditorGUILayout使ってGUIを組み上げ、MMDLoaderScriptに投げています。
ここまででInspectorの話はおわりまして、追加してみたMMD.Configの話を。
作った経緯としては、何度もインポート作業をするような場合、設定が毎回リセットされててつらぽよーとかなりそうなので作りました。ほんとうは、Inspectorを使うか使わないか、の設定を載せたかったのですが、そんな高等なことはできなさそうだったので無しです…
中身は、ScriptableObjectを継承したConfigクラスを中心に、あとは保存したいフィールドを用意しているだけです。なので、あとで設定が増えた、項目が変わった、といったことが起きても対応しやすい、と、思います。
Inspectorで表示したり共通設定を用意したりと、のために ConfigBase というクラスを用意しており、これを継承することで折りたたみがついているGUIを形成できます。やっていることは簡単なので、継承しなくてもいいと思いますが…(決してラムダ式を使ってみたかっただけ…ではないですよ、決して。ええ、戻り値をboolにしても行けますけど、まあ、はい。)
で、Configクラスのメンバで、このConfigBaseを継承したクラスを放り込むことで、保存、読み込み、Inspector表示、ができるわけです。
どこかで使うときは、Config.LoadAndCreate() で、得られます。
// Sample: PMDLoaderWindow 20 public PMDLoaderWindow() 21 { 22 // デフォルトコンフィグ 23 var config = MMD.Config.LoadAndCreate(); 24 shader_type = config.pmd_config.shader_type; 25 rigidFlag = config.pmd_config.rigidFlag; 26 use_mecanim = config.pmd_config.use_mecanim; 27 use_ik = config.pmd_config.use_ik; 28 }
保存は意図的に行わなくても、多分大丈夫です。多分。 Config.csと同じフォルダにConfig.assetとしてバイナリが保存されます。 Config.csファイルが他にもあると、そっちに保存されてしまう可能性があります。という部分だけ注意をしていただければ….(直したい
あとは….r149で追加したものはすべてMMD名前空間に放り込みました、というぐらいですか。 思えば、MMD.Editors とかの名前空間の方がよかったかも..?
他は…とくにないですかね。 追加したInspector周りにバグがあるっぽいので、上の件と合わせて検証して直します。