第一阶段unity基础

引言

注意:
1.重点:1.适用性(什么时候用,怎么用)<记脑子里>  2.作用(能够解决什么问题) 3.定义  4.操作/语法
2.每天练习必须会独立完成
3.形成笔记保存下来
4.课下抓紧练,不懂马上问

2D游戏:视角完全锁定,二维坐标
3D游戏:视角可以随意变化,三维坐标
在移动平台,Unity几乎成为3D游戏开发的标准工具
Virtual Reality
虚拟     现实

Augmented Reality
增强        现实

游戏引擎:程序的框架,一款游戏最最核心的代码。
*使用游戏引擎,开发者可以重用已有的核心技术,将精力集中在游戏逻辑和设计上,从而简单快速的创建游戏。

包含以下系统:渲染引擎、物理引擎、碰撞检测系统、音效、脚本引擎、动画系统、人工智能、网络引擎以及场景管理。

U3D特点:
1.简单易用   2.开发效率高   3.价格便宜   4.新手居多    5.跨平台(23个平台间自由迁移,出色的部署,完全的覆盖)
C#(C sharp):微软推出的编程语言

Unity引擎基础

-Unity环境搭建

-C# 语言基础

-Unity API

-3D数学基础

-物理引擎1

-UGUI

Unity小技巧

如果编辑器意外崩溃了,但场景未保存,这时可以打开工程目录,找到/Temp/_Backupscenes/文件夹,可以看到有后缀名为.Backup的文件,将该文件的后缀名改为.Unity拖拽到项目视图,即可还原编辑器崩溃前的场景。

好不容易才调好的坐标,结果发现是在运行模式下,如果退出运行模式就还原了怎么办?可以在检视面板右键点击组件名,在弹出界面中选择copy Component,然后退出运行模式后同样右键点击组件名,在弹出界面中选择paste Component Values即可。

分别按键盘键q、w、e、r、t可以依次切换界面上的小工具,除此之外,按数字键2或3还可以切换场景为2d模式或3d模式

所有数值类型的字段,都支持在检视面板中直接输入简单的数值表达式

右键点击检视面板下方的预览窗口即可让预览窗口跳出来,然后自己选择合适的地方停靠,这样切换模型查看就不会影响到其它面板。想让预览窗口回到原位,只需右键点击窗口,在弹出菜单中选择close Tab即可。

在层次视图的搜索框中输入完整的脚本或组件名称,即可找到所有绑定了该脚本或组件的对象。或者在搜索框中输入t:加上某个类别如light,即可找到使用同类组件的对象。

可以借助编辑器自带的标记功能为脚本分类,在检视面板中点击脚本图标下方的小三角,即可为脚本设置颜色或选择图标。

第一章 :Unity环境搭建

所用软件:Unity 5.4.0f3 (64-bit)

assets文件夹最重要

Scene场景面板

常用快捷键

1.按下鼠标滚轮拖动场景(或者拖动小手),滑动滚轮缩放场景

2.选择十字标,选定物体,按下F:居中,ALT+鼠标左键:围绕旋转  ALT+鼠标右键:缩放=滑动滚轮

3.右键加ASDWQE 场景漫游

4.按下十字标,选定物体,拖动轴:往前走=向着Z轴正方向,向右走=X轴正方向,向上走=Y轴正方向:反之负方向。拖动面:沿面移动。

5.按下双曲箭头标,是按轴旋转。

6.按下方框和四个箭头的标,是放大缩小,拖动中间白色小方框是整体按比例放大缩小。

inspector:检视面板(检查监视) 显示的属性可能不准,在右上角static上边的小三杠选择Debug可以查看隐藏属性,在里面找到要修改的属性的真正名称

transform 变换组件    reset 重置

Position :位置  X 0 Y 0 Z 0     unity世界原点

Rotation :角度 X 0 Y 0 Z 0     角度同世界一致

Scale:     比例 (一般 X 1   Y 1   Z 1)

unity世界物体都是由小三角组成,物体越细腻小三角越多。

顶点吸附:按下V同时按下左键拖动,实现顶点吸附

视觉停留效应:0.02S以内视觉感受不到更新

2D视角:ISO 正交模式 3D视角:Persp  透视模式

基础概念

坐标

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

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

场景scene

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

游戏对象 gameobject

-运行时出现在场景中的游戏物体。-是一种容器,可以挂载组件。

组件 component(例:transform版块)

-是游戏对象的功能模块

网格过滤器:过滤形状      网格渲染器:显示形状

Ctrl+S 保存场景

Ctrl+D 复制物体

为物体添加颜色等要为物体的MeshRenderer下的material添加材质,默认材质无法修改。

Ctrl+1  切换到scene视图  Ctrl+2切换到Game视图   Ctrl+3切换到Inspector视图  Ctrl+4切换到Hierarchy视图

在播放模式下,用户对游戏场景做的所有修改都是临时的,所有的修改在退出游戏预览模式后都会被还原。

(*重要)project(项目)包含很多scene(场景),scene包含很多gameobject(游戏对象),gameobject包含很多component(组件)<开发重点>

打组,一般先创建一个空物体(empty),然后再创建子物体。位置角度比例都是相对父的。

mesh  renderer  更改渲染    初始粉紫色,名为材质丢失

metallic 金属的    albedo 反射系数

material 材质:物体的质地,指色彩、纹理、光滑度、透明度、反射率、折射率、发光度等。实际就是shader(着色)的实例。简单来说是物体的外观。

透明要把渲染模式rendering medo改为transparent(透明),再调albedo(反射率)里的A

渐变要把渲染模式改为fade(渐变),再调albedo里的A

去底镂空要把渲染模式改为cut out(镂空),再调albedo里的A

RGBA图片可使用CUT OUT去底,RGB不可以

shader着色器:专门用来渲染3D图形的技术,可以使纹理以某种方式展现。

材质相当于shader的面板,shader是程序。

texture纹理:附加到物体表面的贴图。

(*重要)shader-->material-->MeshRenderer(网格渲染)     meterial-->texture纹理

-->color

shader要借助material才能作用到物体

摄像机

天空盒skybox

围绕整个场景的包装器,用于模拟天空的材质。

windos-->lighting灯光-->environment lighting环境灯光(scene会受到skybox的影响)

Tag标签  layer层    作用:分类

摄像机可以选择看见哪个层或者不看见哪个层,层也可以自己添加。

游戏是3D还是2D需要设置摄像机的视角为透视perspective或正交orthogonality

摄像机的far是视野范围

viewport rect  : W,H调整屏幕宽和高   X,Y调整屏幕在水平竖直方向的位置。

若两个摄像机视野重叠,则depth深度值,大的盖住小的

选中摄像机,按Ctrl+Shift+F,可快速让摄像机定位到当前位置,并且角度同视角一致。也可以定位别的物体。(要把输入法关闭)

让摄像机跟着模型走:创建一个空物体player,然后把模型model和摄像机作为player的子物体,并且务必把模型的transform重置,同player一致。

创建小地图:在天空放置一个摄像机向下看,然后设置该摄像机深度值depth大于模型摄像机,然后设置成2D(orthogonality)

做人物标记:在人物头顶创建一个平面,然后载入三角图片。由于主摄像机不能看见三角平面标记,则给该平面设置一个层,给摄像机设置成不看见这个层。

把摄像机属性skybox更改为depth only ,则只显示摄像机看得见的,其余部分会消失。

instantOC(面试重点)

:一个插件,包括occlusion culling 和LOD

包括一、渲染管线,二、occlusion culling,三、LOD

一、渲染管线

渲染管线:图形数据在GPU上经过运算处理,最后输出到屏幕的过程。

绘制调用Draw Call:每次引擎(CPU)准备数据并通知GPU的过程。通俗讲:每帧调用显卡渲染物体的次数。(在starts里Batches后边显示的数字)

CPU准备数据            顶点处理:中间有坐标系的转换

游戏-->图形API-->CPU(决定视锥以内哪些物体需要渲染)à)与GPU(显卡)分界线-->顶点处理-->图元装配(连接相邻的点组成三角面)-->光栅化(计算三角面上的像素)-->像素处理(对每个像素区域进行着色)-->缓存(一个存储像素数据的内存块,最重要的是帧缓存(常在显卡中)与深度缓存z-buffer(物体距离摄像机的距离)。)

一个物体不渲染,CPU与GPU性能都会提高。物体越多、物体精度越高,CPU与GPU性能越低。

二、occlusion culling

即时遮挡剔除occlusion culling:在物体被渲染前,将摄像机视角内看不见的物体进行剔除,从而减少了每帧渲染数据量,提高渲染性能。(笔试考)

默认:摄像机视锥内物体都会被渲染,即使看不见也会被渲染。

插件samples:每帧摄像机发射的射线数目,数量多会导致CPU性能降低,通常在150-500之间。

FOV :视场<-->摄像机中filed of view          View视野<-->摄像机中far

hide delay延迟隐藏:射线发射次数。建议50帧-100帧之间。  PreCull Check,建议勾选。

遮挡剔除同时,要为物体设置一个盒子碰撞器(绿色物理边界)。为物体加一个组件-->box collider。

注意:不设置碰撞器射线射不到。

遮挡剔除优点:减少渲染量。  (功能上没有损失)  缺点:CPU(射线)需要消耗额外性能。

场景里物体较多且分布较密集(被遮挡的物体多)时使用遮挡剔除。

三、LOD

LOD(Level of Detail多细节层次):指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

不会降低draw call

优点:降低非重要物体的面数与精度,从而获得高效率的渲染运算

缺点:CPU总需要判断距离,变换模型

适用性:1.场景中需要存在高精度模型  2.距离需要变化

步骤:1.创建层

2.创建空物体并将模型添加到其中,模型命名:Lod_0,Lod_1,Lod_2(精度由高到低)

3.为父物体指定层与标签

4.父物体或子物体添加碰撞器组件

5.摄像机附加脚本IOCcam

Lod1 distance:摄像机到物体距离小于当前距离时,使 用Lod_0模型。

Lod2 distance:摄像机到物体距离大于Lod1且小于当前 距离时,使用Lod_1模型,大于当前值使用Lod_2模型。

 

光照系统

GI(Global illumination),即全局光照。能够计算直接光、间接光、环境光(ambient)以及反射光(reflection)的光照系统。通过GI算法可以使渲染出来的光更加真是丰富。

直接光照

直接光照:directional平行光和位置无关和角度有关。point点光源相当于一个灯泡,range:范围。sport聚光灯:由一个点像一个椎体照射,相当于手电筒。

物体阴影在光源选项组件里。硬阴影性能比软阴影好。阴影很消耗性能,所以需要阴影剔除。

shadow distance(阴影距离):如果等于40则等于距离摄像机40米以内渲染阴影,40米以外不渲染阴影。

选中个别物体,可以在组件中选择关闭阴影

环境光照

环境光照ambient source:所有物体都能感受到的光照。

作用于场景内所有物体的光照,通过Environment Lighting 中Ambient 控制。

•Ambient Source 环境光源

--Skybox 通过天空盒颜色设置环境光照

--Gradient 梯度颜色

Sky 天空颜色、Equator 地平线颜色、Ground 地面颜色

--Ambient Color 纯色

•Ambient Intensity 环境光强度

•Ambient GI  环境光GI模式

--Realtime实时更新,环境光源会改变选择此项。

--Backed 烘焙,环境光源不会改变选择此项。

反射光照

反射光照resolution source:从天空盒中取色。

根据天空盒或立方体贴图计算的作用于所有物体的反射效果,通过Environment Lighting 中Reflection 控制。

•Reflection Source 反射源

--Skybox 天空盒

Resolution 分辨率Compression 是否压缩

--Custom 自定义

Cubemap立方体贴图

•Reflection Intensity 反射强度

•Reflection Bounces 使用Reflection Probe 后允许不同游 戏对象间来回反弹的次数。

间接光照

间接光照:物体表面在接受光照后反弹出来的光。(特别消耗性能)

通过Light 组件中Bounce Intensity 反弹强度控制。

可以通过Scene 面板Irradiance 模式查看间接光照。

注意:只有标记Lightmaping Static的物体才能产生间接光。

实时GI

一、Realtime GI 实时GI:在运行期间任意修改光源,效果实时更新。(需要预计算)

实时GI在手游里慎用,太消耗性能。

1.把场景里不动的物体标记为Static(静态的)

2.勾选precomputed(预计算) Realtime GI

3.调整好物体点击Build(取消勾选Auto)

烘焙GI

二、烘焙GI(Baked GI)将光照效果做成图片贴到物体上。

当场景包含大量物体时,实时光照和阴影对游戏性能有很大影响。使用烘焙技术,可以将光线效果预渲染成贴图再作用到物体上模拟光影,从而提高性能。   适用于在性能较低的设备上运行程序。

需要把不动的物体设置为静态,只烘焙不动的物体。

步骤:

1. 游戏对象设置为LightmapingStatic。
2. 设置Light组件Baking属性。
3. 启用Lighting 面板的Baked GI。
4. 点击Build按钮。(在Lightling-->Scene中)(如果勾选Auto 编辑器会自动检测场 景的改动修复光照效果)
Light 组件Baking 属性:烘焙模式
--Realtime仅实时光照时起作用。
--Baked仅烘焙时起作用。
--Mixed 混合,烘焙与实时光照都起作用。
可以通过Scene 面板Baked 模式查看光照贴图。

光源侦测

三、光源侦测

由于LightMapping只能作用于static 物体,所以导致运 动的物体与场景中的光线无法融合在一起,显得非常不真 实。而Light Probes 组件可以通过Probe (侦测)收集光影信息, 然后对运动物体邻近的几个Probe 进行插值运算,最后将 光照作用到物体上。

probe不宜太少也不宜太多,太少有光变化的地方侦测不到,太多消耗性能。在光有明暗变化的地方必须要有probe探针。

声音

声音分为2D、3D两类

3D声音:有空间感,近大远小。

2D声音:适合背景音乐。

· 在场景中产生声音,主要依靠两个重要组件:

Audio Listener 音频监听器:接收场景中音频源Audio Source(音频源)发出的声音,通过计算机的扬声器播放声音。

Audio Source 音频源

音频监听器在摄像机组件中,场景中只能有一个音频监听器。如果有多个摄像机,那只能留一个,要把别的摄像机的音频监听器组件移除remove。

一般游戏里声音都放在一个sounds文件夹里面。

声音组件中要勾选play on awake (运行时播放)启用声音

3D sound settings  3D声音的设置

音量衰减 linear线性曲线(常用)    X轴:单位 米。Y轴:音量

min distance :最小距离(距离之内无衰减)  max distance:最大距离(超过距离就没有声音)

第一阶段unity基础相关推荐

  1. 《循序渐进学运维》第一阶段Linux基础

    前言 循序渐进学运维系列,第一阶段的内容已经全部更新完毕.包含学习方法篇,和基础入门课程. 所有内容均在csdn存档. 想要学习的可以按照这个步骤进行学习,有不完善的地方欢迎在留言区留言,一起交流. ...

  2. java怎么开始学dos,第一阶段-Java基础知识:【第一章 DOS命令与开发环境的配置 + 第一个程序HelloWorld】...

    加油Ideal星河滚烫  你是人间理想 第一阶段 JAVA基础知识 第一章 开发环境的配置 Dos 命令 在正式进入Java学习之前我们来了解一个看起来B格很高的东西--Dos命令 DOS命令,计算机 ...

  3. 黑马程序员C++学习笔记<第一阶段_基础篇>

    配套视频网址: 黑马程序员:http://yun.itheima.com/course/520.html?bili B站:https://www.bilibili.com/video/BV1et411 ...

  4. 《第一阶段 java基础 Day02笔记》————————第二讲Java基本语法

    第二讲Java基本语法 课程大纲 课程内容 学习效果 掌握目标 Java基本语法 注释.关键字.标识符 掌握 熟练掌握Java的注释方式 熟练掌握Java中的关键字 熟练掌握标识符概念 数据类型.常量 ...

  5. 《第一阶段 Java基础 Day01笔记》————————第一讲 Java入门

    第一讲 Java入门                                                       1.爪哇岛(印尼)                 Java之父   ...

  6. 黑马程序员C++ 第一阶段 C++基础语法入门

    B站黑马C++内容,自己手动敲了一遍代码,文章之间也加入了一些我个人的理解,仅供学习和参考用,程序代码均来自黑马程序员 . 一.C++基础入门 1.1第一个c++程序 (输出一个hello world ...

  7. 老男孩线上Linux运维课程第一阶段(Linux基础入门总结)学习笔记

    第一章  说部分 1.1解释下什么是GPL,GNU,自由软件 GNU由斯托曼开发,代替unix GNU is not unix GPL是一个守则,即通用公共许可 1.所有人可以自由传播开源的软件 2. ...

  8. 第一阶段C++基础语法入门(最详细笔记)

    黑马程序员视频的学习笔记和总结 黑马程序员视频链接:01 课程安排_哔哩哔哩_bilibili 课程安排 main是一个函数的入口,每个程序都必须有这么一个函数,有且仅有一个. const修改的变量称 ...

  9. 黑马程序员C++学习笔记(第一阶段:基础)

    目录 起步:hello c++ 常量(不可修改):#define ,const 关键字 标识符(常量,变量) 数据类型: 给变量分配合适的内存空间 整型:short,int,long,long lon ...

最新文章

  1. 初学markdown
  2. java试用(1)hello world
  3. python version 2.7 required,which was not found
  4. python虚拟环境管理app_pyenv虚拟环境管理python多版本和软件库
  5. git报错:Pull is not possible because you have unmerged files解决方法
  6. SQLite.NET提供程序的选择
  7. if java_Java 条件语句
  8. HTML学习笔记06-连接
  9. 屌炸天,Oracle 发布了一个全栈虚拟机 GraalVM,支持 Python
  10. Mybatis 在 insert 之后想获取自增的主键 id,但却总是返回1
  11. CenterOS7安装redis
  12. 如何去掉图片上的文字?
  13. Maven系列(四):Maven内置属性,pom属性
  14. 表示颜色的英语单词(图)
  15. 计算机右键无法新建excel2007,电脑桌面右键新建菜单中没有Word/Excel/PPT等文档怎么办?...
  16. 拼多多店铺类型区别介绍
  17. Python使用opencv打开笔记本摄像头时遇到的问题及解决办法
  18. PSTN与VoIP相关知识
  19. 产品思维训练 | 面试题探讨:提高旅游产品评论数量的解决方案
  20. wordpress php缓存,wordpress自带的缓存功能使用介绍

热门文章

  1. 今晚直播 | 微软亚洲研究院徐毅恒:预训练时代下的文档智能
  2. ​ICML 2021 Long Oral | 顺序不可知的交叉熵函数
  3. ICCV 2019 | 通过多标签相关性研究提升神经网络视频分类能力
  4. Nature论文解读:深度学习助力毫秒之间识别癌细胞
  5. python 支付宝个人账单_解析2018年度三大用户数据报告——网易云音乐、支付宝、微信...
  6. Spring注释详解
  7. springboot+springsecurity+mybatis plus之用户授权
  8. jQuery获取时间,一位数则补零
  9. 大学阶段总结——大二
  10. Spring Boot——一种包含分页和排序参数的接收方法DEMO