unity3D多相机的切换

 

Unity3D管理多相机很是繁琐,"Camera Preview"着实解决了相机的切换,然而窗口小,比例不能调整,并且在多个相机中禁用启用设置相机视角也很不方便,所以也不是很实用。

Security Camera就简化了这个过程。以下是Security Camera脚本的使用说明:

1、将SecurityCameraEditor放在Editor中,其脚本为:

// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

using UnityEngine;
using UnityEditor;
using System.Collections;

[CustomEditor(typeof(SecurityCamera))]
public class SecurityCameraEditor : Editor
{
	SecurityCamera _target = null;
	
	void OnEnable(){
		if(_target == null && !Application.isPlaying){
			_target = (SecurityCamera)target;
			_target.camera.depth = 999999;
		}
	}
	
	void OnDisable(){
		if (!Application.isPlaying && _target != null) {
			_target.camera.depth = -999999;
		}
	}
}


2、将SecurityCamera脚本和CameraSwap脚本放在Camera Script文件夹下,其中SecurityCamera脚本要加在每个相机上(主相机MainCamera的Tag为MainCamera,其他相机如Camera1,Camera2,Camera3),CameraSwap脚本加在GameObject(或者其他的物体上)。

SecurityCamera脚本:

using UnityEngine;
using System.Collections;

public class CameraSwap : MonoBehaviour
{
    void Update ()
    {
        //pressing 0, 1, 2, and 3 will swap before the cameras named "Main Camera",
        //"Camera 1", "Camera 2", and "Camera 3" which have Security Camera added:
        if (Input.GetKeyDown(KeyCode.Alpha0)) {
            SecurityCamera.ChangeCamera("Main Camera");
        }
        if (Input.GetKeyDown(KeyCode.Alpha1)) {
            SecurityCamera.ChangeCamera("Camera1");
        }
        if (Input.GetKeyDown(KeyCode.Alpha2)) {
            SecurityCamera.ChangeCamera("Camera2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha3)) {
            SecurityCamera.ChangeCamera("Camera3");
        }
    }
}


 

CameraSwap脚本为:

using UnityEngine;
using System.Collections;

public class CameraSwap : MonoBehaviour
{
    void Update ()
    {
        //pressing 0, 1, 2, and 3 will swap before the cameras named "Main Camera",
        //"Camera 1", "Camera 2", and "Camera 3" which have Security Camera added:
        if (Input.GetKeyDown(KeyCode.Alpha0)) {
            SecurityCamera.ChangeCamera("Main Camera");
        }
        if (Input.GetKeyDown(KeyCode.Alpha1)) {
            SecurityCamera.ChangeCamera("Camera1");
        }
        if (Input.GetKeyDown(KeyCode.Alpha2)) {
            SecurityCamera.ChangeCamera("Camera2");
        }
        if (Input.GetKeyDown(KeyCode.Alpha3)) {
            SecurityCamera.ChangeCamera("Camera3");
        }
    }
}

其文件组织格式如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值