自分用に作っていた機能をせっかくだからパッケージにして公開してみました。
探せばもっと良いのもあるのだろうけれど自身の研究と趣味のためのライブラリです。
Unity2022.3でのみテストしています。
(それ以降のUnityは触ったことなくって・・何が変わったのだろう)
●一つ目はNativeArrayのラッパーです。
NativeArrayをエディタ上で普通のc#で使うと配列よりも遅くて困ったので
内部的にポインタアクセスにして遅くならないようにしてみました。
ついでにusingで開放できるようdisposableにしたり、
通常の配列をピン止めしてNativeArrayとして使えるようにしたり。
解放忘れ時に取得時のスタックを表示してみたり。
速度のいるところではNativeArrayとしてBurst側に渡せば恩恵を受けられ、
通常はマネージコードとして簡単でそこそこ安全に使うことができます。
●次はUIから直接コンポーネントのプロパティを参照できるコンポーネント群です。
基本はUnityのuguiを元にしていて、スクリプトからアクセスするのではなく、
UI要素から直接ゲームオブジェクト、コンポーネント、プロパティを指定して
UI要素だけで完結できます。
はい、ただ怠惰なだけです。。
たとえばトグルボタンでは指定プロパティが指定の値のときのみチェック状態になるので
特にグループとか面倒くさいことなしにボタンを配置して参照設定するだけでOk。
プロパティが公開されていればコードを追加で書く必要がないです。
注意点としては値を常に監視することになるので大変重いです!
プロパティ名が変わったときとか再指定がめんどいです!
場合によってはプロパティがストリップされてしまう可能性も?その場合はpreserveを。
ちょっと変なことをしているので動作的に怪しいところもあるかも。
以前enumで悩んだりしていたのもこの機能のためだったのです。。
おまけで以前から作っていたピクセル強調のマテリアルを入れてあります。
シェーダーとしてはUIやスプライト描画用でフィルターを切り替えることができます。
ソフトにするものから、ポイント、リニア、エッジ、シャープ等。
エッジがピクセルパーフェクトでなくてもボケを減らす奴で、
ImageのスライスとかではPixelPerUnitMultiplierを0.5で使うのお勧め。
シャープは私が大昔から使っているアンシャープマスクもどき。
但しいずれもテクセル参照数が多いので重いです。
テクセルのセンターや上下の扱いでもしかしたらうまく動かない場合もあるかも。
テストはAMDのノートPCのみなので。
LazyUIにはサンプルも入れているので試してみてください。
●そして上記ライブラリを使ったのがこちら。
自作のボクセルエディタです!
Cubic8
公開半年でDL数5の大人気ツールです!
研究のために作成を始めてえらい時間が掛ったけれど自分的にはなっとくの出来。
ずーっと昔からMSX風のシンプルなピクセルエディタを作りたかったのが
やっとボクセルですが実現できました。
あえてデフォルトの色数とか制限してあります。
データフォーマットも当時風(笑)
動作もあえてもっさりするようにボクセルの更新時にウエイトを入れて
更新が目に見えるようにしてあります。
8ビット時代の感覚を楽しんでみてください。
あとUnityへの敬意を表して背景のデフォルトはUnityのスカイボックス!
いかにも初心者ががんばって作りました風でしょ!
(本当のところは私のセンスの問題ですけど)
MagicaVoxelがどうにも手になじまなかったので作ってみましたが、
作ってみてMagicaVoxelのすごさが良くわかりました。
最初c#とシェーダーのみで頑張ったけどどうにもパフォーマンスが出ず
Busrtにすることで劇的に、それこそ100倍近く性能が上がったので
なんとか完成させることができました。
256x256x256で一千万ものデータをゴリゴリするのでそりゃ重いよと。。
ちなみにボクセルはメッシュ化とかしないでレイマーチング風に
シェーダーで無理やり描いています。
大変重いです。(最悪数千ループです)
一人で一つの環境でしかテストしていないので動かなかったらごめんなさい。
ロートルの自己満足ですがご覧いただき有難うございました。