名古屋でアプリ・VR開発を行っています
ワクワクできるゲームをガンガン開発リリース中!

【Unity】MinMaxCurveをInspectorで設定したかった

こんにちは、SAT-BOXのコアラです。

ParticleSystemで、これ便利ですよね。
f:id:sat-box:20180717173920p:plain
Random Between Two Curves。名前が長いので、以下「これ」で行きます。

これは、多分ParticleSystemでしか使われてないんですが、視覚的に分かりやすく調整しやすいですよね。

これを他のところでも使いたいなーって思って調べてみたんですが、結果としては僕ではできませんでした。


誰かに作ってもらう魂胆で書き残します。


まず、あれ(これと言っていたもの)は、MinMaxCurveというC#の構造体(struct)をInspectorで変えれるようにしたものです。たぶん。
そして、MinMaxCurveはParticleSystemクラスの中にあります。


次に、ParticleSystemでMinMaxCurveをどうやってInspectorに表示しているかですが、エディタ内部のソースコードに書いてあります。

内部なんでUnityからは見れないんですが、あるときからUnityのC#ソースコードがここに公開されました。
github.com

細かく書くと長くなるので、MinMaxCurveのInspector表示処理をどこでやってるかだけ書きます。

GitHubからzipをダウンロードして、
UnityCsReference-master\Editor\Mono\ParticleSystemEditor\ParticleSystemModules\
ModuleUIHelpers.csの中のGUIMinMaxCurveという関数がおそらく、MinMaxCurveの表示をしています。ParticleSystemでMinMaxCurveを使っているいろんなところがこの関数を呼んでます。

その関数使えばいけるんじゃね?と思いましたが、関係するものほとんどがinternalなものだったので断念しました。
AnimationCurveを2つ使って1から新しいものを作ったほうが楽な気がしました。


僕は諦めましたが、気になった方は試してみてください。そして出来たら教えてください!