unity3d 相机切换程序思想:为所有的相机设置相同的tag,这样可以使用FindGameObjectsWithTag来获得所有的相机。然后循环遍历关闭所有相机:XXX.GetComponent<Camera>().enabled = false。再把需要打开的相机打开,场景里唯一的相机讲作为mainCamera,u3d引擎会自动移动过去。
也可以获得相机对象后 直接设置其active属性为true/false来实现。
也可以获得相机对象后 直接设置其active属性为true/false来实现。
public class CameraSwap : MonoBehaviour
{
GameObject[] gameObjectsCamera;
// Use this for initialization
void Start () {
gameObjectsCamera = GameObject.FindGameObjectsWithTag("cam");
}
// Update is called once per frame
void Update () {
if (Input.GetKey(KeyCode.Alpha1))
{
swapCamera(1);
}
if (Input.GetKey(KeyCode.Alpha2))
{
swapCamera(2);
}
if (Input.GetKey(KeyCode.Alpha3))
{
swapCamera(3);
}
}
void swapCamera(int index)
{
foreach (var item in gameObjectsCamera)
{
item.GetComponent<Camera>().enabled = false;
}
string name = "Camera" + index.ToString();
GameObject.Find(name).GetComponent<Camera>().enabled = true;
}
}