0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unity向け自作ライブラリを紹介

0
Last updated at Posted at 2025-05-25

自分用に作っていた機能をせっかくだからパッケージにして公開してみました。

自身の研究と趣味のためのライブラリです。
Unity2022.3でのみテストしています。
(それ以降のUnityは触ったことなくって・・何が変わったのだろう)

●一つ目はNativeArrayのラッパーです。

MyUnsafeUtil

NativeArrayをエディタ上で普通のc#で使うと配列よりも遅くて困ったので
内部的にポインタアクセスにして遅くならないようにしてみました。
ついでにusingで開放できるようdisposableにしたり、
通常の配列をピン止めしてNativeArrayとして使えるようにしたり。
解放忘れ時に取得時のスタックを表示してみたり。

速度のいるところではNativeArrayとしてBurst側に渡せば恩恵を受けられ、
通常はマネージコードとして簡単でそこそこ安全に使うことができます。

●次は指定プロパティを直接参照できるUIコンポーネントです。

LazyUI

基本はUnityのuguiを元にしていて、スクリプトからアクセスするのではなく、
インスペクタから直接ゲームオブジェクト、コンポーネント、プロパティを指定して
UI要素だけで完結できます。

たとえばトグルボタンでは指定プロパティが指定の値のときのみチェック状態になるので
特にグループとか面倒くさいことなしにボタンを配置して参照設定するだけでOk。
プロパティが公開されていればコードを追加で書く必要がないです。

注意点としては値を常に監視することになるので重いです!
プロパティ名が変わったときとか再指定がめんどいです!
もしかしたらプロパティがビルド時に削除されてしまう可能性も?その場合はpreserveをつけてください。

おまけで以前から作っていたピクセル強調のマテリアルを入れてあります。
シェーダーとしてはUIやスプライト描画用でフィルターを切り替えることができます。
ソフトにするものから、ポイント、リニア、エッジ、シャープ等。
エッジはピクセルパーフェクトでなくてもボケを減らすモードで、
ImageのスライスとかではPixelPerUnitMultiplierを0.5で使うのお勧め。
シャープは私が大昔から使っているアンシャープマスクもどき。

但しいずれもテクセル参照数が多いので重いです。
テクセルのセンターや上下の扱いでもしかしたらうまく動かない場合もあるかも。
テスト環境はAMDのノートPCのみなので。

LazyUIにはサンプルも入れているので試してみてください。

●そして上記ライブラリを使ったのがこちら。
自作のボクセルエディタです!
Cubic8

研究のために作成を始めてえらい時間が掛ったけれど自分的にはなっとくの出来。

ずーっと昔からMSX風のシンプルなピクセルエディタを作りたかったのが
やっとボクセルですが実現できました。

あえてデフォルトの色数とか制限してあります。
データフォーマットも当時風(笑)

8ビット時代の感覚を楽しんでみてください。

MagicaVoxelがどうにも手になじまなかったので作ってみましたが、
作ってみてMagicaVoxelのすごさが良くわかりました。

最初c#とシェーダーのみで頑張ったけどどうにもパフォーマンスが出ず
Busrtにすることで劇的に、それこそ100倍近く性能が上がったので
なんとか完成させることができました。
256x256x256で一千万ものデータをゴリゴリするのでそりゃ重いですよね。

ちなみにボクセルはメッシュ化とかしないでレイマーチング風に
シェーダーで無理やり描いています。
大変重いです。(最悪ピクセル毎に数千ループです)

一人で一つの環境でしかテストしていないので動かなかったらごめんなさい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?