私のシーンには MainCamera と MiniMapCamera があります。また、現在両方のカメラで描画されている HUD もあります。MiniMapCamera から削除したいのですが、Camera.current.name
どのカメラがレンダリングされているかを確認するために使用すると機能しません。私はUpdate()
関数でこれをやっています。どこかで試してみるべきですか?
2 に答える
Jerdakの答えに加えて。各カメラがレンダリングするレイヤーを選択できます。
階層で選択すると、のインスペクタにCulling Maskコンボ ボックスが表示されます。Camera
カメラがレンダリングすることになっているレイヤーを確認できます。layer
したがって、GUI要素にaを割り当てて、MiniMapCamera
単にレンダリングしないようにすることができます。
カメラを切り替えるメカニズムがあると思いますか?その場合は、そのメカニズムを使用して、現在アクティブなカメラを追跡します。
これがまだ正しいかどうかはわかりませんが、 Unity のエディターCamera.current
でアプリケーションを実行したときに問題が発生していました。それでも問題が解決しない場合は、アプリをビルドして、返される値を確認してください。Camera.current.name
[アップデート]
または、カメラをゲームオブジェクトとして保存し、アクティブなカメラと保存されているカメラを比較して、どちらがアクティブかを判断することもできます。FindObjectsOfType
フレームごとに実行することはめったに良い考えではないため、このソリューションは断続的にのみ使用する必要があります。
public class CurrentCamera : MonoBehaviour {
public Camera minimapCamera;
public Camera mainCamera;
void FindActiveCamera(){
Camera[] cameras = FindObjectsOfType(typeof(Camera)) as Camera[];
foreach (Camera cam in cameras) {
if(Camera.main == mainCamera)Debug.Log("Found main camera");
if(Camera.main == minimapCamera)Debug.Log("Found minimap Camera");
}
}
void Update(){
FindActiveCamera();
if(Input.GetButtonDown("Fire1")){
minimapCamera.enabled = false;
mainCamera.enabled = true;
}
if(Input.GetButtonDown("Fire2")){
minimapCamera.enabled = true;
mainCamera.enabled = false;
}
}
}
【アップデート2】
Camera.main がカメラを正しく登録するには、カメラ オブジェクトTag
を に設定する必要がありますMainCamera
。複数を設定できますが、非アクティブなカメラMainCameras
のコンポーネントを必ず無効にしてください。そうしないと、レンダリングされたものがどれを使用するかわかりません。Camera