運営者情報

運営してるひと: @sters9

       

妻と猫と横浜あたりに住んでいる。最近は Go や Kubernetes や GCP をしています。 PHP や JavaScript もすこし。

プライバシーポリシー

tools.gomiba.co

アーカイブ

2021/02 (12) 2021/01 (8)

2020/05 (2) 2020/04 (2) 2020/02 (2) 2020/01 (1)

2019/12 (3) 2019/11 (2) 2019/10 (5) 2019/09 (3) 2019/07 (6) 2019/06 (4) 2019/04 (3) 2019/01 (2)

2018/12 (6) 2018/10 (4) 2018/09 (6) 2018/08 (7) 2018/07 (16) 2018/06 (7) 2018/05 (7) 2018/04 (5) 2018/03 (3) 2018/02 (10) 2018/01 (6)

2017/12 (8) 2017/11 (6) 2017/10 (10) 2017/09 (12) 2017/08 (12) 2017/07 (3) 2017/06 (1) 2017/01 (4)

2016/12 (5) 2016/10 (3) 2016/09 (1) 2016/07 (2) 2016/06 (1) 2016/04 (1) 2016/02 (1) 2016/01 (2)

2015/12 (1) 2015/10 (1) 2015/09 (3) 2015/06 (1) 2015/01 (1)

2014/08 (2) 2014/07 (3) 2014/05 (1) 2014/01 (7)

2013/12 (2) 2013/11 (4) 2013/10 (1) 2013/09 (1) 2013/08 (3) 2013/07 (4) 2013/06 (5) 2013/05 (2) 2013/04 (7) 2013/03 (1)

終・Inspector拡張の話、MFUのコンフィグの話

この記事は公開されてから1年以上経過しており、情報が古くなっている可能性があります。

参照: 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周りにバグがあるっぽいので、上の件と合わせて検証して直します。