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

渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きく慣れるように。。。 ※所属団体とは一切関係がありません

なぜドローコールバッチングされないか、理由を知る方法

f:id:esakun:20150730215258g:plain

Unity5.6からフレームデバッガに現在の描画と1つ前の描画が、ドローコールバッチングされない場合にヒントが表示されるようになりました。

ちなみにドローコールバッチングとは、複数のメッシュまとめて、1回のドローコールで描画することを指します。
※全ての状況で当てはまるわけではないですが、ドローコールを抑えることがパフォーマンスの向上につながる事があります

続きを読む

UnityでOSCを使って通信する

f:id:esakun:20150730215258g:plain

UnityでOSCやってみます。

ググればこういった先人たちのありがたい情報が出てきますが、本ブログは知らないこと・分からないことは自分で書いてやってみることを重視しているので、参考にさせて頂きつつ自分で動かしてみます。

今回はOSCを使ってiPhoneアプリからMacのUnityを動かすという事をやってみます。

成果物はコチラ

続きを読む

LINQとfor文のコスト検証

f:id:esakun:20150730215258g:plain

C#を使う上でLINQは非常に便利な機能なのは言うまでもありません。

しかし、実際のプロダクトへ組み込む際の負荷は知っておくべきということで、改めて調べてみたという記事です。

今回の検証対象は使用頻度が高いフィルタ系関数です。

  • FirstOrDefault
  • Any
  • Where
続きを読む

Unityエディットモード中にコルーチン処理を走らせる

f:id:esakun:20150730215258g:plain

エディットモード中(再生していない状態)にサーバーからファイルをダウンロードしてゴニョゴニョしたいことがあります。

例えば、特定のキャラクター情報を保持したJSONをダウンロードして、ローカルに保存し、それを元にキャラクターのアニメーションや設定を調整したりなどなど。

UnityではWWWクラスを使うと簡単に通信ができます。

var www = new WWW("http://sample.co.jp/huga.json");
yield return www;
Debug.Log(www.text);

この数行で実現できます。

しかし、このようにコルーチンを使った処理になるため、ExecuteInEditModeを設定してもエディットモード中は動きません。

そこでエディタ拡張してコルーチンを動かしてみます。

成果物はこちら

続きを読む

Unityシェーダのマクロとマルチコンパイル

f:id:esakun:20150730215258g:plain

シェーダ内で#define マクロ名(引数) 処理という文法でマクロを書くことが出来ます。
マクロとはCやC++でよく出てくるインラインで展開されるアレです。

UnityCG.cgincの中身を眺めているとよく出てきます。

眺めることはあっても書いたことはなかったので、試してみました。
またマクロとコンボ技で使用されるマルチコンパイルについても検証しています。

続きを読む