1

私のシーンには MainCamera と MiniMapCamera があります。また、現在両方のカメラで描画されている HUD もあります。MiniMapCamera から削除したいのですが、Camera.current.nameどのカメラがレンダリングされているかを確認するために使用すると機能しません。私はUpdate()関数でこれをやっています。どこかで試してみるべきですか?

4

2 に答える 2

2

Jerdakの答えに加えて。各カメラがレンダリングするレイヤーを選択できます。

ここに画像の説明を入力

階層で選択すると、のインスペクタにCulling Maskコンボ ボックスが表示されます。Cameraカメラがレンダリングすることになっているレイヤーを確認できます。layerしたがって、GUI要素にaを割り当てて、MiniMapCamera単にレンダリングしないようにすることができます。

于 2013-06-12T07:31:35.960 に答える
1

カメラを切り替えるメカニズムがあると思いますか?その場合は、そのメカニズムを使用して、現在アクティブなカメラを追跡します。

これがまだ正しいかどうかはわかりませんが、 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

于 2013-06-11T23:43:04.997 に答える