こんにちは、SAT-BOXのコアラです。
ParticleSystemで、これ便利ですよね。
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から新しいものを作ったほうが楽な気がしました。
僕は諦めましたが、気になった方は試してみてください。そして出来たら教えてください!