Unity学习-熟悉环境

Unity引擎基础

  • Unity环境搭建

  • C#基础

  • Unity API

  • 物理引擎1

  • 3D数学基础

  • UGUI

Unity环境

设置

  • layout–2 by 3
  • Project – 1 column

面板

  • Scene - 场景视图

  • Game - 游戏预览

  • Inspector 检视面板

  • Hierarchy - 结构视图

  • Project - 工程资源面板

操作

右键拖动-旋转

中拖动-移动

滚轮-前进后退

选中物体 按F – 居中

选中+Alt+左键—围绕旋转

选中Alt+右键—放大缩小

右键+QEWASD—下上前左后右

Ctrl + D 复制一个

Ctrl + 1 – Scene视图

Ctrl + 2 – Game视图

Ctrl + 3 Inspector视图

Ctrl + 4 Hierarchy视图

Ctrl + 5 Project视图

Ctrl + 6 Animation视图

Ctrl + 7 Profiler视图

顶点吸附-按住V键

Center/Pivot 改变轴心点位置

Local/Global 切换轴向

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pxkJ4eau-1635084898895)(image-20210407172136532.png)]

世界坐标:整个场景的固定坐标,不随物体旋转二改变

本地坐标:物体自身坐标,随物体旋转而改变

播放控件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A86X0zw9-1635084898898)(image-20210407172224505.png)]

Persp/Iso 正交观察/透视观察

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uEkrWTYu-1635084898899)(image-20210407173219193.png)]

场景-Scene

  • 一组相关联的游戏对象的集合,通常游戏中每个关卡就是一个场景,用于展现当前关卡中的所有物体

游戏对象-GameObject

  • 运行时出现在场景中的游戏物体
  • 是一个容器,可以挂载组件
  • 父、子物体–可以通过Hierarchy面板进行拖拽进行关联;子物体继承父物体的移动、旋转和缩放,但子物体不影响父物体

一般创建物体使,将一个空对象当父物体,所有行为赋予父物体,当需要换模型时,只需要换子物体即可,不需要担心行为需要重新制作

组件-Component

  • 是游戏对象的功能模块

  • 每一个组件都是一个类的实例

  • Transform 变换组件:决定物体的位置、旋转、缩放比—位置

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D2cbLf0A-1635084898900)(image-20210407175634356.png)]

  • Mesh Filter 网格过滤器:用于从资源中获取网格信息–形状

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zq3kDX9T-1635084898901)(image-20210407175451660.png)]

  • Mesh Renderer 网格渲染器:从网格过滤器中获得几何形状,在根据变化组件定义的位置进行渲染—颜色等

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GYajh2Ss-1635084898902)(image-20210407175520532.png)]

  • 网格过滤器与网格渲染器联合使用,使模型显示到屏幕上

  • Project-工程
    • Scene-场景
    • Scene
      • GameObject-物体
      • GameObject
        • Component-功能组件(脚本等等…)
        • Component

材质-Material

选择物体-MeshRenderer-materials

project-cteate-material

  • 材质,实际就是Shader的实例
  • Shader 着色器:专门用来渲染3D图形的技术,可以使纹理以某种方式展现。实际就是一段嵌入到渲染管线中的程序,可以控制GPU运算图像效果的算法
  • Texture 纹理:附加到物体表面的贴图
渲染模式
  • Opaque - 不透明,默认选项
  • Transparent - 透明,用于半透明和全透明物体,如玻璃
  • Cutout - 镂空,用于完全透明或完全不透明物体,如栅栏
  • Fade - 渐变,用于需要淡入淡出的物体
材质Shader-Standard
  • Albedo 基础贴图:决定物体表面纹理与颜色
  • Metalic 金属:使用金属特性模拟外观
  • Specular 镜面反射:使用镜面特性模拟外观
  • Smoothness 光滑度:设置物体表面光滑程度
  • Normal Map 法线贴图:描述物体表面的光滑程度
  • Emission 自发光:控制物体表面自发光颜色和贴图
    • None 不影响环境
    • Realtime 实时动态改变
    • Backed 烘焙生效
  • Tiling 平铺:沿着不同的轴,纹理平铺个数
  • Offset 偏移:滑动纹理

Shader - 材质 - 物体 - 设置材质

物理着色器
  • 基于物理特性的Shader(Unity5.x)。Physically Based Shading PBS
  • 遵从物理的能量守恒定律,可以创建出在不同光照环境下都接近真实的效果

摄像机

  • 附加了摄像机Camera组件的游戏对象(GameObject)
  • 是向玩家捕获和显示世界的设备
  • 场景中摄像机的数量不受限制
默认摄像机
  • 组件

    • Transform:变化组件
    • Camera摄像机:向玩家捕获和显示世界
      • clear Flag:处理画面空白处如何显示(Sky box、Solid color、Depth only、Don’t clear)
      • Culling Mask:摄像机可视图层[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4KbcvQPb-1635084898902)(image-20210408213129539.png)]
      • Projection:设置摄像机画面是2D还是3D
      • Field of View:设置视距(只有3D画面才有)、2D设置Size属性
      • Clipping Planes:可视距离(Near近、Far远)
      • Viewport Rect:W、H:设置画面大小、X、Y:设置画面位置
      • Depth:深度值,当有多个摄像机时,设置画面显示层级
    • Flare Layer耀斑层:激活可显示光源耀斑—(新版无)
    • GUI Layer:激活可渲染二维GUI元素-------(新版无)
    • Audio Listener 音频监听器:接收场景输入的音频源Audio Source并通过计算机的扬声器播放声音
    • 天空盒:摄像机添加skybox组件 || 使用Lighting窗口设置skybox
    • 6-sided:6个图片围成的天空盒模式
    • skybox/Procedual Shader:
      • Sun:太阳模式 -None、Simple、HightQuality
      • Atmosphere:大气层高度
      • Ground:地面颜色
案例-游戏画面
  1. 将摄像机与玩家模型绑定and绑定其在地图摄像机的显示对象
  2. 新的摄像机创建一个小地图–建议渲染模式为2D–摄像机clearflag设置为depthonly可以去除多余空白
  3. 移除其他摄像机的音频监听
  4. 设置不同摄像机的渲染图层

渲染管线

  • 图形数据在GPU上经过运算处理,最后输出到屏幕的过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ej8vP1cj-1635084898903)(image-20210409104146340.png)]

顶点处理
  • 接收模型顶点数据
  • 坐标系转换-将坐标转换为屏幕的2D坐标显示
图元装配
  • 组装面:连接相邻的顶点,绘制为三角面
光栅化
  • 计算三角面上的像素,并为后面着色阶段提供合理的插值参数
像素处理
  • 对每个像素区域进行着色
  • 写入到缓存中
缓存
  • 一个存储像素数据的内存块,最重要的缓存是帧缓存与深度缓存
  • 帧缓存:存储每个像素的色彩,即渲染后的图像。帧缓存常常在显存中,显卡不断读取并输入到屏幕中
  • 深度缓存(z-buffer):存储像素的深度信息,即物体到摄像机的距离。光栅化时便已计算好各像素的深度值,如果新的像素的深度值比现有值更近,则像素颜色被写到帧缓存,并替换深度缓存。

Occlusion Culling - 即时遮挡剔除

  • 即时遮挡剔除 Instant Occlusion Culling
  • 遮挡剔除:当物体被送进渲染水线之前,将摄像机视角内看不到的物体进行剔除,从而减少了每帧渲染数据量,提高渲染性能
  • Unity自带的遮挡剔除无法进行实时剔除(即无法剔除通过代码添加进去的物体);可导入第三方插件
InstantOC-插件
  • 步骤
    • 创建层
    • 为游戏物体指定层(将参与遮挡剔除)与标签(将自动附加IOClod脚本)
    • 物体添加碰撞器Collider组件
    • 摄像机附加脚本IOCcam
  • 属性
    • Layer mask:参与遮挡剔除的游戏对象层
    • IOC Tag :将为指定标签的游戏对象自动添加IOClod脚本对象
    • Sample:每帧摄像机发射的射线数目。数量多剔除效果好,但性能开销大。通常在150-500之间。
    • Rays FOV:射线视野,应大于摄像机 视野Field of View
    • View Distance:视图距离,射线长度,将影响摄像机Clipping Planes --Far数值
    • Hide Delay:延迟隐藏,当物体被剔除时延迟的帧数,建议50-100之间
    • PreCull Check:检查采集信息,建议勾选,可以提高剔除效率
    • RealTime Shadows:实时阴影,如果场景需要实时阴影,建议启用,确保剔除物体显示正常的阴影
  • 优缺点:剔除消耗性能,所以建议在物体较密集,有较多物体被遮挡的情况下使用遮挡剔除,否则,如果只有少量物体被遮挡时使用遮挡剔除,会消耗性能但提升不了效率

LOD - 多层次细节

  • LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5qiIyfw1-1635084898903)(image-20210409204759866.png)]

  • 步骤
    • 创建层
    • 创建空物体并将模型添加其中,并命名为LOD_0,LOD_1,LOD_2
    • 为父物体指定层与标签
    • 父物体或子物体添加碰撞器组件
    • 摄像机附加脚本IOCcam

性能分析

windows-analysis-profiler

光照系统

Global Illumination
  • 简称GI,全局光照
  • 能够计算直接光、间接光、环境光以及反射光的光照系统
  • 通过GI算法可以使渲染出来的光照效果更为真实丰富
直接光
  • 从光源直接发出的光,通过Light组件实现
  • Type类型:灯光对象的当前类型
    • Directional Light 平行光:平行发射光线,可以照射场景中的所有物体,用来模拟太阳
    • Point Light:点光源:在灯光位置上向四周发射光线,可以照射其范围内所有对象,用于模拟灯泡
    • Spot Light 聚光灯:在灯光位置上向圆锥区域发射光线,只有在这个区域内的物体才会受到光线照射,用于模拟探照灯
    • Area Light 区域光:由一个面向一个方向发射光线,只照射该区域内的物体,仅烘焙时有效,用在光线较为集中的区域
  • Shadow Type:阴影类型 Hard硬阴影、Soft软阴影
    • Strength 硬度:阴影的黑暗程度
    • Resolution 分辨率:设置阴影的细节程度
    • Bias 偏移:物体与阴影的偏移
  • 通过Mesh Renderer组件启用/禁用阴影
    • Cast/Receive Shadows 当前物体是否投射/接收阴影
    • Off 不投射阴影,On 投射阴影, Two Sided 双面阴影 , Shadows Only 隐藏物体只投射阴影
  • 阴影剔除:设置显示阴影的距离
    • Edit-Project Settings-Quality-Shadows Distance
间接光
  • 物体表面在接受光照后反射出来的光
  • 通过Light组件中Bounce Intensity反弹强度控制
  • 可以通过Scene面板Irradiance模式查看间接光照
  • 只有标记Lightmaping Static的物体才能产生间接反射光照
  • 间接光非常耗性能,所以要预先标记静态物体,进行预计算
环境光照
  • 作用于场景内所有物体的光照,通过Environment Lighting中Ambient控制
  • Ambient Source 环境光源
    • Skybox 通过天空盒颜色设置环境光照
    • Gradient 梯度颜色 Sky天空颜色、Equator地平线颜色、Ground地面颜色
    • Ambient Color 纯色
  • Ambient Intensity 环境光强度
  • Ambient GI 环境光GI模式
    • Realtime 实时更新,环境光源会改变 就选择此项
    • Backed 烘焙,环境光源不会改变 就选择此项
反射光-Environment Reflections
  • 根据天空盒或立方体贴图计算的作用于所有物体的反射效果,通过Lighting-Environment Reflections控制
  • Reflection Source 反射源
    • Skybox 天空盒 Resolution分辨率 Compression是否压缩
    • Custom 自定义 Cubemap立方体贴图
  • Reflection Intensity 反射强度
  • Reflection Bounces 使用Reflection Probe后不允许不同游戏对象间濑户反弹的次数
实时GI
  • 指在运行期间任意修改光源,所有的变化可以立即更新
  • 操作步骤
    • 游戏对象设置为Lightmaping Static
    • 启用Lighting面板的Precomputed Realtime GI
    • 点击Build按钮(如果勾选Auto编辑器会自动检测场景的改动修复光照效果)
  • Realtime Resolution:实时计算分辨率
  • CPU Usage:CPU利用率,值越大实时渲染效率越高
烘焙GI
  • 烘焙:将光线效果预渲染成贴图再作用到物体上模拟光影,从而提高性能,适用于在性能较低的设备上运行的程序(手机端)
  • 步骤
    • 游戏对象设置为 Lightmaping Static
    • 设置Light组件Baking属性
    • 启用Lighting面板的Baked GI
    • 点击Build按钮(如果勾选Auto编辑器会自动检测场景的改动修复光照效果)
    • Light组件Baking属性:烘焙模式
      • Realtime 仅实时光照时起作用
      • Baked 仅烘焙时起作用
      • Mixed 混合,实时光照不会对被烘焙的物体作用
    • 可以通过Scene面板Baked模式查看光照贴图
  • Baked GI
    • Baked Resolution:烘焙光照贴图分辨率,建议比实时GI分辨率高10倍
    • Baked Padding:光照贴图中各形状间距,取值2-200
    • Compressed:是否压缩光照贴图,压缩则提高性能,缩小容量,但画质会降低
    • Ambient Occlusion:环境遮挡表面的相对亮度,值越高遮挡处和完全曝光处区别越大,建议为1
    • Final Gather:选中后提高烘焙质量,但是会消耗更多的时间
    • Atlas Size:光照贴图尺寸
General GI
  • 常规GI设置,同时适用于实时GI和烘焙GI
  • Directional Mode 定向模式:
    • Non Directional:无定向模式,使用1中光照贴图存储光照信息
    • Directional:定向模式,使用2中光照贴图存储光照信息,效果更好,但空间占用更大
    • Direction Specular 定向反射模式,使用4中光照贴图存储光照信息,效果最好,空间最大
  • 除无定向模式外,必须运行在GLES2.0与SM2.0以上的设备。GLES指OpenGL ES针对移动端,从iPhone5s开始支持;SM指Shader Model针对PC端,目前大部分显卡支持
  • Indirect Intensity 最终间接光照、反射光照的强度,1位默认强度,小于1降低,大于1增大
  • Bounce Boost 增强间接光照
  • Default Parameters 高级GI参数
    • Default 默认
    • Default-HighResolution 高分辨率
    • Default-LowResolution 低分辨率
    • Default-VeryLowResolution 非常低的分辨率
光源侦测
  • 由于LightMapping智能作用于static物体,所以导致运动的物体与场景中的光线无法融合在一起,显得非常不真实。而Light Probes组件可以通过Probe收集光影信息,然后对运动物体邻近的几个Probe进行插值运算,最后将光照作用到物体身上。
  • 步骤
    • 创建游戏对象Light Probe Group
    • 添加侦测小球 Add Probe
    • 点击Build按钮
    • 勾选需要侦测物体的MeshRenderer组件的Use Light Probes属性

声音

  • Unity支持的音频文件格式
    • Mp3、ogg、wav、aif、mod、it、s3m、xm
  • 声音分为2D、3D
    • 2D:适合背景音乐
    • 3D:有空间感,金达院校
  • 在场景中产生声音,主要依靠两个重要组件
    • Audio Listener 音频监听器:接收场景中音频源Audio Source发出的声音,通过计算机的扬声器播放声音
    • Audio Source 音频源
      • Audio Clip 音频剪辑:需要播放的音频资源
      • Mute 静音:如果启用,播放音频没有声音
      • Play On Awake 唤醒播放:勾选后场景启动时自动播放
      • Loop 循环:循环播放音频
      • Volume 音量
      • Pitch 音调:通过改变音调调节音频播放速度。1为正常播放
      • Stereo Pan:2D声音设置左右声道
      • Spatial Blend:2D与3D声音切换
  • 3D声音设置
    • Volume Rolloff 音量衰减方式
    • Min Distance 开始衰减距离
    • Max Distance 结束衰减距离
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CI_FAN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值