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 结束衰减距离

Unity学习-熟悉环境相关推荐

  1. unity 学习_宣布全新的学习平台Unity学习

    unity 学习 Experience a whole new way to access our award-winning learning courses, projects and tutor ...

  2. Unity学习路线是什么样的?

    Unity学习路线是什么样的?我们来看看Unity3D程序开发基础: 1)C#语法基础 2)OOP(面向对象) 3)网络通信 4)内存管理从基础讲解C#语言,熟悉字段.属性.接口.委托.事件,掌握C# ...

  3. visual studio学习python_python3从零学习-开发环境搭建之Visual Studio Code篇

    开发环境搭建之Visual Studio Code篇 上一节讲了Python环境的安装和开发环境的安装,本节再重点讲下Visual Studio Code的配置.安装 请看我上一篇文章<pyth ...

  4. Unity学习2:如何实现个性化渲染平面(图文详细)

    Unity学习2:如何实现个性化渲染平面(图文详细) AR Plane Manager(平面追踪对象管理器) 可视化平面 个性化渲染平面 AR Plane Manager(平面追踪对象管理器) 平面管 ...

  5. 基于AI的计算机视觉识别在Java项目中的使用(三) —— 搭建基于Docker的深度学习训练环境

    深度学习在哪里? 我们已然生活在数字时代,一天24小时我们被数字包围.我们生活中的方方面面都在使用数字来表达.传递.存储.我们无时无刻不在接收数字信息,而又无时无刻不在生产数字信息. 在数字世界中,可 ...

  6. Unity学习之Human fall flat创意工坊地图制作

    Unity学习笔记之Human fall flat 主要参考<人类一败涂地>官方教程 Unity版本 详细教程获取 开始工程导入 素材包介绍 界面介绍 工具简介 常用组件简介 多人游戏组件 ...

  7. 常用增强学习实验环境 II (ViZDoom, Roboschool, TensorFlow Agents, ELF, Coach等)

    原文链接:http://blog.csdn.net/jinzhuojun/article/details/78508203 前段时间Nature上发表的升级版Alpha Go - AlphaGo Ze ...

  8. [Unity 学习] Unity 入门学习及第一个游戏

    [Unity 学习] Unity 入门学习及第一个游戏 跟着教程做的一个小游戏,基本上说就算我这样的零基础,两个小时就能实现. 主要就是熟悉一下 C#和 Unity,做一个能跑的东西. 简单的 Dem ...

  9. 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

    [Unity学习笔记][Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲+记录了部分价讲解和我自己的理解的代码存在这 原 ...

最新文章

  1. mysql数据库的打开失败_MySQL数据库启动失败解决
  2. linux分屏显示文件命令:more(less)
  3. 1195C. Basketball Exercise
  4. python web框架基础
  5. 预测:小程序入口预测汇总(8种可能)
  6. ExtraPhrase:一种针对抽象式(生成式)摘要的数据增强方法
  7. 为什么少有人在Windows电脑上安OS X?
  8. Android安全补丁程序下载,2017年一月win7安全补丁更新包官方下载-2017Win7安全更新补丁包64位下载-西西软件下载...
  9. 河南初中信息技术测试软件,中学信息技术考试练习系统——河南省版
  10. 《Spring Recipes》第三章笔记3:Specifying Aspect Preced...
  11. 发票识别 表格票据识别
  12. C++:重载、重写、重定义
  13. 智能推荐--协同过滤
  14. Smartbi报表工具的学习笔记,如何学好报表分析?
  15. 一个口 光纤 两条线 交换机 上 光纤 两条线 双纤 单纤 尾纤 分光器 双纤 双纤转单纤 接 分光器
  16. Package javax.script
  17. 如何做好一名软件实施顾问
  18. 飞鸽传书linux运行,Linux下如何安装IPtux飞鸽传书
  19. 我的2013年总结--北京 深圳
  20. 南华大学计算机科学学院,南华大学计算机科学与技术学院研究生导师简介-万亚平...

热门文章

  1. ExifTool如何格式化日期和时间信息以进行书写
  2. 05 CSS从原理到熟练 - 1
  3. 解决windows 2003 sp1下安装arcsde 9.0 for sql server 2000 sp4概要方案
  4. pytorch训练FER2013模型
  5. Webots学习笔记 1.创建自己的仿真机器人模型
  6. KubeVela 1.3 发布:开箱即用的可视化应用交付平台,引入插件生态、权限认证、版本化等企业级新特性
  7. php判断百度来路,判断是否通过百度搜索进入你的网站 - 小俊学习网
  8. 2016年前端技术观察
  9. linux vnc登陆,vnc登陆,4个步骤教你vnc登陆Linux
  10. Mac终端解压缩命令大全