4.自定义shader、摄像机

一、自定义Shader

假如需要这样一种功能,当准星对准敌人攻击时,对敌人进行描边,这种unity没有的属性就可以用自定义的shader完成。

1.shader文件

一种后缀为shader的代码文件,一般可以用代码编辑器编辑,拥有属性property,里面可能会有诸如MainColor之类的属性值,在property中设置了什么,这个shader放到unity中就会有什么可以设置的数值。还有一些其他的代码来控制,暂且不表。

2.导入自定义shader并应用

1.直接把装有数个自定义shader的shaders拖进project,shaders文件夹和Scenes文件夹平级
2.新建一个材质Material
3.直接把shader文件拽到新建的Material上
4.将材质给到物体并进行对应属性的设置

二、物理着色器Physically Based Shading,PBS

可以根据现实物理特性来物体在不同光照下的真实效果,在Unity 5.0后提供。使用unity的standard模式即可。

三、摄像机

附加了Camera组件的游戏物体,摄像机是可以自创的,只要有camera组件就可以,数量不受限制。
默认的camera有如下组件
Tansform:摄像机不能缩放,一般使用的是旋转
Camera:捕捉玩家看到的画面
Audio Listener:接收场景内的音频源Audio Source(也是一个组件,放出声音的组件)并通过计算机的扬声器放出声音。
在这里插入图片描述

四、摄像机属性

1.Clear flags:

屏幕空白部分的处理,空白部分就是没有GameObject的地方。

天空盒:skybox

显示为天空。天空盒会围绕整个场景的包装器,模拟天空的材质。天空盒本身就是一种材质,有2种常用shader模式
在这里插入图片描述

6sided:6个面的天空贴图,用来自定义的
procedural:默认天空盒,可以做些简单属性设置
使用天空盒:
第一种:摄像机添加组件天空盒,然后把天空盒拽进来
在这里插入图片描述
在这里插入图片描述

第二种:光照窗口,windows-Rendering-Lightning-Environment-skybox
可以作为反射源将天空色彩反射到场景中的物体上,优先用这种,有环境光。
在这里插入图片描述

除了天空盒以外还有solid color(纯色),depth only(仅深度,画中画效果时,小画面摄像机选择这项可以清除屏幕部分空信息,只保留物体颜色信息,即仅渲染有物体的部分), don’t clear(不清楚任何颜色或者深度缓存)。

2.Background:

所有元素绘制以后,没有天空盒的屏幕部分的颜色

3.Culling Mask:选择遮罩

选择遮罩的意思,将物体设置在某个layer,然后设置摄像机不显示这个layer,在这个layer的物体在game内就会被隐藏。
每个物体都有两个属性,tag和layer,Culling Mask和Layer有关。
在这里插入图片描述

我们现在已经有一个粉色的方块,可以给这个粉色方块选择一个层,或者新建一个层,这里我们新建一个层叫MyLayer,并设置cube的层为MyLayer。
在这里插入图片描述

此时,我们可以在game面板和scene面板内看到这个粉色的方块
在这里插入图片描述此时,将main camera的Culling Mask点开,将MyLayer前面的√去掉。
然后在game面板中就不再能看到粉色方块,但在scene内还能看到,即粉色方块仍存在但看不到,unity对看不到的物体不会进行渲染。

在这里插入图片描述

4.Projection

模式:
perspective:透视的,3D
orthographic:正交的,2D
3D模式下设置为第二个game里看到的会变成平面图,2D会默认为第二个。
如果设置为perspective的话,会有一个属性叫Field of View,可以调整镜头远近,类似开镜和收镜。数值变小就拉进了,数值变大就拉远。
orthographic就只有size,控制摄像机视锥大小。

5.Clipping Planes:剪裁面

相机开始渲染到结束渲染的距离。
有两个属性,far和near。far控制的的是摄像机能看到最远距离,near控制的是摄像机能看到的最近距离。控制的是一个区间,一般3D默认是0.03-200
控制渲染距离可以节约性能。
在这里插入图片描述

6.Viewport Rect:视觉窗口

设置窗口占屏幕的大小,可以应用于单独做一个摄像机,显示一个小窗口,或者是做小地图、双人游戏时候分屏。
W:宽 H:高,范围就是0-1之间,1表示100%,0.5就是50%,W=0.5,H=0.5就表示各占屏幕一半,X Y表示的是这个视口在屏幕上的位置。
在这里插入图片描述

在这里插入图片描述
如果场景中有多个摄像机,可能会用到Depth属性,该属性是控制渲染优先级的,Depth数值大的摄像机后渲染,数值小的摄像机先渲染,例如我们拥有一个小地图摄像机,如果希望小地图永远在屏幕上,则小地图摄像机的Depth要大于主摄像机。
渲染先后的原理相当于上颜色,后上的颜色会把先上的颜色覆盖。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值