有2种方法来切换不同的摄像机,

先通过数组来存放已经在场景设置好的摄像机

1.改变摄像机的gameobject的active

2.改变摄像机的depth


Camera的Depth影响,摄像机之间切换的排序。都是0,或者是按照顺序0,1,2,3,4,5...进行排列。

如果Depth为-1则,Depth为0的摄像机会排在其前面。

两种查找方式,查找场景中所有带有Camera组件的物体,

1.可以通过判断其transform.tag的TAG的字符串来 找到所需的摄像机。

前提是得设置所有所需的摄像机的物体的TAG。

2.通过把所有摄像机放入一个空的物体中,如下图所示的空物体Cameras,找到这个空物体Cameras,就能遍历其子物体,找到摄像机。(下图所示的方法)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Test_Cameras : MonoBehaviour {/// <summary>/// 子物体为 摄像机的父物体/// </summary>public Transform cameras_trans;/// <summary>/// /// </summary>public List<Transform> cameras_trans_list= new List<Transform>();/// <summary>/// /// </summary>public Camera[] cameras_trans_list1;/// <summary>/// /// </summary>public Camera[] cameras_trans_list2;/// <summary>/// 索引/// </summary>public int index = -1;/// <summary>/// 摄像机的长度/// </summary>public int cameras_length;/// <summary>/// 上一个摄像机/// </summary>public Camera upCamera = null;// Use this for initializationvoid Start () {index = -1;findCameras();}/// <summary>/// /// </summary>private void findCameras(){cameras_trans_list1 = Resources.FindObjectsOfTypeAll(typeof(Camera)) as Camera[];//GameObject.FindObjectsOfTypeAll(typeof(Camera));//已经弃用if (cameras_trans != null){cameras_trans_list2 = cameras_trans.GetComponentsInChildren<Camera>();//遍历所有的子物体cameras_length = cameras_trans_list2.Length;}else{cameras_length = cameras_trans_list1.Length;}}/// <summary>/// 上一个摄像机/// </summary>public void UpCamera(){if (index == -1){index = 0;}if (index > 0&& index <= cameras_length){index = index - 1;}else if (index ==0){index = cameras_length-1;}if (cameras_trans_list2!=null&& cameras_trans_list2.Length >0){for (int i=0; i< cameras_trans_list2.Length; i++){//cameras_trans_list2[i].gameObject.SetActive(false);cameras_trans_list2[i].depth = -1;}//cameras_trans_list2[index].gameObject.SetActive(true);cameras_trans_list2[index].depth = 0;}}/// <summary>/// 下一个摄像机/// </summary>public void NextCamera(){if (index == -1&& cameras_trans_list2 != null&& cameras_trans_list2.Length > 0&& upCamera == null){index = 0;for (int i = 0; i < cameras_trans_list2.Length; i++){cameras_trans_list2[i].gameObject.SetActive(false);}cameras_trans_list2[index].gameObject.SetActive(true);}else{upCamera = cameras_trans_list2[index];upCamera.gameObject.SetActive(false);}/*if (cameras_trans_list2 != null&& cameras_trans_list2.Length > 0&& upCamera == null){for (int i = 0; i < cameras_trans_list2.Length; i++){cameras_trans_list2[i].gameObject.SetActive(false);}}else if (cameras_trans_list2 != null&& cameras_trans_list2.Length > 0&& upCamera != null&& upCamera.gameObject.activeSelf == true){for (int i = 0; i < cameras_trans_list2.Length; i++){cameras_trans_list2[i].gameObject.SetActive(false);}}*/if (cameras_trans_list2 != null&& cameras_trans_list2.Length > 0&& upCamera != null&& upCamera.gameObject.activeSelf == true){upCamera.gameObject.SetActive(false);}if (index >= 0&& index < (cameras_length - 1)){index = index + 1;}else if (index == (cameras_length - 1)){index = 0;}cameras_trans_list2[index].gameObject.SetActive(true);}
}

[Unity][摄像机视角]多个摄像机之间切换相关推荐

  1. unity中3dUI或者模型始终面向摄像机,跟随摄像机视角旋转丨视角跟随丨固定视角

    视角跟随 本脚本为一个目标跟随 unity中3dUI或者模型始终面向摄像机,跟随摄像机视角旋转 使用方法超级简单,对于一个资深的Ctrl+cv程序极为友好 不多讲解直接上代码 代码模块 public ...

  2. 【Unity3D】单个按键控制两个摄像机画面之间切换

    做赛车游戏小课设碰到的小问题,琢磨了一下找到一个比较偷懒的暴力解决方法. 说明一下需求: 1.一个第一视角摄像机.一个第三视角摄像机,两个摄像机画面用键盘输入控制切换 2.只使用一个按键进行切换. 打 ...

  3. [UE5]在多个固定摄像机视角间切换,切换多个摄像机,显示不同摄像机所看内容

    [UE5]在多个固定摄像机视角间切换,切换多个摄像机,显示不同摄像机所看内容 1.写在前面 01.作者碎碎念 02.结果 演示截图 演示视频 视频教程 源码链接 03.实现思路 实现思路 04.同步的 ...

  4. Unity实现2D模式下的摄像机视角控制

    效果: Code: using UnityEngine; /// <summary> /// 摄像机视角 /// 鼠标滚轮实现缩放,按住鼠标滚落拖动平移 /// </summary& ...

  5. Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换

    Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换 *版本要求Unity2017.1及以上. 参考资料: [官方] Unity 2017.1正式版发布 Cinemachine插 ...

  6. unity vr是加一个摄像机就行吗_Unity实时光线追踪功能演示项目创作过程

    今年3月,Unity宣布提供针对NVIDIA RTX实时光线追踪技术的支持,实时光线追踪技术为Unity的高清晰渲染管线HDRP加入了逼真的光照质量,给Unity的视觉功能赋予新的潜力. Unity中 ...

  7. 摄像机标定中四大坐标系之间的关系

    一.四个坐标系简介和转换 相机模型为以后一切标定算法的关键,只有这边有相当透彻的理解,对以后的标定算法才能有更好的理解.本人研究了好长时间,几乎每天都重复看几遍,最终才会明白其推导过程.      我 ...

  8. UE4 限制玩家摄像机视角旋转角度

    UE4 限制玩家摄像机视角旋转角度 功能:玩家可以用鼠标旋转视角观察角色,但限制旋转的角度 网上找了很多没找到,于是自己实现了一种方式 先在弹簧臂组件里勾上使用pawn控制旋转,这样相机的旋转就跟玩家 ...

  9. Unity Scene窗口 平行网格/透视网格 切换

    Unity Scene窗口 平行网格/透视网格 切换 之前在网上找了半天,解答都是摄像机的正交与透视切换. 而我的问题是这样的! 现在没有立体感,我想要变回的效果是这样的! 最后终于找到了变换视图的方 ...

  10. android脚步---不同界面之间切换

    对于一个app,可能需要多个界面,使用Button或者其他控件在不同界面之间切换,那么如何做到呢 首先必须明确,一般一个activity.java文件一般只对应一个界面即一个layout.xml文件, ...

最新文章

  1. 【C++】多线程与并发【一】
  2. 10.3 在线学习与 MapReduce-机器学习笔记-斯坦福吴恩达教授
  3. 令人叫绝的EXCEL函数功能
  4. windows 安装openssh服务端_Git神器| SourceTree安装使用教程
  5. 【Leetcode819】最常见的单词
  6. 完整的可按年份和月份查询数据并显示
  7. 带你了解两种线性规划的方法:稀疏矩阵存储和预处理
  8. react中对于key值的理解
  9. 三菱控制器 梯形图 c语言 转换,三菱plc程序设计控制器系列软件功能简介
  10. mysql 导出表结构或表数据的操作
  11. Hexo 好看且实用的主题推荐
  12. Photoshop学习(二十):画面的浮雕效果
  13. xampp mysql远程连接_远程访问xampp
  14. 两步开发.NET Core剪裁器,并且开源它
  15. 教你快速入门Excel-宏与VBA(下)
  16. mac安装win10_AMD黑苹果+win10双系统安装
  17. matlab newff函数弃用了,matlab里面的newff函数怎么回事
  18. 【IDL代码模块】提取文件名中的部分字符串
  19. Vue笔记(天禹)后四章
  20. 如何把团队拉回到敏捷正轨︱瑞友科技项目群经理徐天岗

热门文章

  1. MacOS 制作 Linux U盘启动盘
  2. python改变当前工作目录_在python中更改当前工作目录
  3. Lora入门(1)—— PingPong测试(CubeMX篇)
  4. 无法解析 taglibs:standard:1.1.2
  5. 实施ERP系统软件的十个好处,你造吗?
  6. ERROR: Cannot uninstall ‘PyYAML’. It is a distutils installed project and thus we cannot accurately
  7. mkv转mp4,mkv转换mp4格式
  8. 第二章--第二节:注释
  9. 解决:Windows打开文件时选择打开方式-》选择其他应用-》时出现无效应用。
  10. java字符串替换空格_特殊的空格(Java无法替换字符串中的空格)