手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Camera使用常识:解决场景内容显示不正常问题

时间:2024-10-21 14:53:02

1、首先搭建Unity环境(此时系统默认生成一个Main Camera),创建一个Cube;加入直线光;导入Character Controller资源包,创建一个第一人称控制器,为了以示区别,更改第一人称控制器的相机名字为FPS-Camera;导入NGUI资源包,创建一个Control - Colored Button,这是系统自动生成一个UIRoot和Camera(如果没有NGUI也没有关系,我们只是通过三个不同的途径,在场景中生成了三个摄像机而已,如果你愿意,你可以直接通过Hierarchy面板的Creat-Camera来创建)

Camera使用常识:解决场景内容显示不正常问题

2、运行一下,你会发现系统提示了一个警告:"There are 2 audio listeners in the scene. Please ensure there is always exactly one audio listener in the scene.".这是因为Main Camera 和FPS-Camera均带有一个Audio Listener音频侦听器组件,场景中只能存在一个,所以我们选择其中的一个删除就可以了.下面学习Camera的三个常用属性参数,如图所示

Camera使用常识:解决场景内容显示不正常问题

3、注意Game视图会显示优先级最高的摄像机能看到的内容.相机的Tag属性如果设为Main Camera,系统将会默认将这个相机能看到的景象显示在Game视图中.Depth深度属性决定了相机的优先级,数值越大,优先级越高,.取消UIRoot的活性,我们先来比较Main Camera相机和FPS-Camera的优先级.这两个相机的Tag默认值均为MainCamera,但Main Camera相机的默认深度为-1,FPS-Camera相机的默认深度为0.此时Game视图显示FPS-Camera相机所示内容

Camera使用常识:解决场景内容显示不正常问题

4、更改Main Camera相机的默认深度为0.此时Tag和Depth两个属性与FPS-Camera均相同.注意!Main Camera相机优先级高!这是我们在实际工程中需要注意的.这时我们可以在Game视图中看到第一人称控制器的胶囊体了

Camera使用常识:解决场景内容显示不正常问题

5、现在来看CullingMask属性.我们把UIRoot的活性激活(即打勾),取消MainCamera的活性.令FPS-Camera优先级最高.此时FPS-Camera与UIRoot中的Camera的Depth均为0.还记得我们前面说过的吗,深度相同,但FPS-Camera相机的Tag为MainCamera,所以知识后Game视图只能显示FPS-Camera中的内容,看不到UIRoot的内容.仔细看,FPS-Camera相机是可以看到按钮图标的

Camera使用常识:解决场景内容显示不正常问题

6、为方便区分,哪个按钮是FPS-Camera看到的,哪个是UIRoot的相机Camera自己显现的,我们把FPS-Camera深度设置为-1.UIRoot的相机Camera深度依然为0

Camera使用常识:解决场景内容显示不正常问题

7、因为每个相机的拍摄角度都是不同的,所以会出现看到的相同的物体但画面是不一样的,你希望你的界面上出现不相干或是重复的影响吗?No,这不是我们想要的.CullingMask属性要发挥重要作用了

Camera使用常识:解决场景内容显示不正常问题
Camera使用常识:解决场景内容显示不正常问题
Camera使用常识:解决场景内容显示不正常问题

8、设置好后,看看Game视图,这才是我们想要的,2D的UIRoot画面与3D的FPS画面完全不冲突,而且都是完全真实的展现

Camera使用常识:解决场景内容显示不正常问题
© 手抄报圈