のしメモ アプリ開発ブログ

Unityアプリとかロボットとか作ってるときに困ったこととかメモ

【小ネタ】Live2Dの描画処理を軽くする

Live2D(UnitySDK版)はOnRenderObject( )を使ってモデルの描画していますが、
このOnRenderObject()はScene上にカメラが複数台あるとその分処理が実行されてしまいます
Model数 x カメラ数でCPU負荷が結構かかります。

Culling Mask等の設定をしていても、UI用のカメラ等でも実行されてしまうので、OnRenderObject()内に処理を加える必要があります。
これにより、Live2Dのモデル更新、描画を1カメラに特定させることができます。

実際に処理を入れるのは下記のコードです。

void OnRenderObject ()
{
	// メインカメラ以外は処理を実行しない
	if (Camera.current.tag != "MainCamera") {
		return;
	}

	// ....以下、描画処理やら

「Camera.current」で実行しているカメラの取得をしているので、
実際にLive2Dを描画しているカメラ以外はreturnさせちゃえ〜っていう感じです。
tagチェックじゃなくても、オブジェクト名チェック等でも問題ないです。

実際にScene上にカメラを3つ置いているプロジェクトにこのコードを適用したら、
下記のような感じで負荷軽減できているみたいです。
Before

After