Cooooding!!

Unity(C#)を使ったゲーム開発関連Tipsなど

ProCamera2Dのカメラが別のシーンに移動してしまう問題を解決する【Unity】

概要

ProCamera2Dのカメラを配置したシーンをAdditiveでロードすると何故かカメラが遷移前のシーンに移動してしまうことがありました。これはProCamera2Dの振動機能(ProCamera2DShake)などを使ったときにカメラの親GameObject (ProCamera2DShakeContainer)が自動で作られる処理の問題のようだったので対策を調べてみました。

f:id:nyama41:20190608160958p:plain

対処方法1: カメラを別GameObjectの子にする

簡単な対処はカメラをルートに置かないことです。ProCamera2DShakeContainerがカメラの親GameObject(CameraContainer)の子になるので同じシーンになります。

f:id:nyama41:20190608161730p:plain

対処方法2: ソースコードを修正する

カメラをルートに置きたい場合はソースコードの修正が必要になりそうです。ProCamera2DShake.csの82行目で"ProCamera2DShakeContainer"という名前のGameObjectをnewしているところを変更します。

変更後のコード

var obj = new GameObject("ProCamera2DShakeContainer");
UnityEngine.SceneManagement.SceneManager.MoveGameObjectToScene(obj, ProCamera2D.gameObject.scene);
_shakeParent = ProCamera2D.transform.parent = obj.transform;

開発者の方も問題を認識してはいるようなのでいずれこういう修正をしなくても済むようになるかもしれません。

環境

  • Unity 2018.4.0f1
  • ProCamera2D 2.6.10
  • VisualStudio 2019