読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】SpriteRenderer「モドキ」の試作

2D Unity 試作

昨日の記事の検証の為、テンションのままに作りこんでしまったSpriteRendererモドキです。せっかく作りましたし、そのうち何かに役立つかもしれないので公開します。

主にRenderTextureや独自Atlasからテクスチャを抜き出して、Spriteっぽく使える事を想定して作っていました………上手く作れば複数のTextureをSetPass1で…まぁ、多分行けるんじゃないですかね。

色々やってみると、それよりテクスチャのタイリングの方が個人的に需要があったりなかったりします。

機能

機能は大体こんな感じです。

  • 同一のマテリアルを使用していて、かつ描画が一括で完了するようならSetPassはマテリアル単位で纏まる
  • SortInLayerとOrderInLayerが使える
  • Textureと描画範囲を指定して描画する

f:id:tsubaki_t1:20160608024709j:plain

オマケの機能

  • textureのサイズに合わせてRectを調整する
  • CashShadowとかLightprobeを一括でOFFにする
  • Rectのアス比に合わせてQUAD(オブジェクト)のサイズを変更する

f:id:tsubaki_t1:20160608025017j:plain

使い方

使い方はこんな感じです。
整理すると手順多いですね。

  1. Create>GameObject>3D>QUADでQuadオブジェクトを作成する
  2. 作ったQuadオブジェクトにTextureSprite.csを設定する
  3. Quad MeshにQuadメッシュを設定する
  4. MeshRendererのMaterialsに設定するシェーダーをTransparentとかTextureに設定する
  5. 不要ならCastShadowとかRecieveShadowとかLightprobesをOFFにする。
  6. Textureに設定したいテクスチャを設定する
  7. RectのX/Yにオフセット、W/Hに幅と高さを設定する

f:id:tsubaki_t1:20160608032027j:plain

色々と遊んでみる。

UVが色々と自分で設定できるので、モンタージュ的な何か。

f:id:tsubaki_t1:20160608032141j:plain

スケールの分だけRectのWやHを引き延ばす事による、テクスチャのリピート的な奴。Spriteだとリピートするの少し面倒なので、少しだけ便利。

f:id:tsubaki_t1:20160608032519j:plain

前回の続きで、RenderTextureからUVとってSpriteのように描画。二人のTextureは別々の物から持ってきてますが、SetPassは1で済んでいます。その代りRenderTexture代のメモリを8MB(1024*1024 ARGB)程使いました。
1SetPassで収まるなら安い?高い?…どうでしょう。

f:id:tsubaki_t1:20160608033602j:plain

コード

長いのでリンクのみ。

スプライト描画機能の代わり。 · GitHub

これ、凄く特殊なケースでは使えるかもしれませんが、殆どのケースではあんまり使えない気がします。
ただ、タイリングしたいSpriteやUV指定で動かせるSpriteは割と欲しかったので、そういったケースで利用価値があるかもしれません。微粒子レベルで。

(2D9スライスとか入ったらお役御免ですね

関連

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp