
| ------ Oracle中文开发者社区 ------ | 
 
 
 
 如果你想要学习编程,关注本博客,持续获得技术支持,持续获得技术咨询
 java开发·企业官方账号 Oracle中国官方账号 Java中国管理部 全网粉丝30万+ 华为云享专家 阿里专家博主 CSDN内容合伙人 CSDN原力计划作者 51CTO专家博主 CSDN博客V账号 毕业于四川大学新闻与文学学院 精通java,Python,HTML,掌握了PHP,C语言,C++,C#,JavaScript,Visual Basic等二十余种编程语言的技巧,会分享一些编程心得、面试技巧和编程方法。 
 
其他链接
主页 官网 社区 论坛
文章目录
- 1. Unity简介
 - 2. 游戏组成
 - 3. Unity面板介绍
 - 3.1 Hierarchy(层级面板)
 - 3.2 Scene(场景面板)
 - 3.3 Game(游戏面板)
 - 3.4 Inspector(监视器面板)
 - 3.5 Project(工程面板)
 - 3.6 Console(控制台面板)
 
- 5. 一些3D模型中会用到的基础理论
 - 5.1 物体中心的概念
 - 5.2 坐标系(笛卡尔坐标系)的概念
 - 5.3 向量和标量的概念
 - 5.4 旋转的概念
 - 5.5 网格的概念(模型形状)
 - 5.6 材质的概念
 
1. Unity简介
- 简单介绍: 
- Unity提供Manual(引擎说明书)和Scripting API(代码,类和方法可以在这里查)两个文档,开发人员可以阅读这两个文档来了解Unity开发
 
 
2. 游戏组成
- 一个游戏由多个场景构成,场景又分为2D界面和3D场景
 - 在Unity中,界面和场景都称为场景,场景和场景之间可以相互切换
 - 场景中包含很多个游戏对象,游戏对象有: 
- 2D图片与文字
 - 3D模型(包含动画)与特效
 
 - 游戏对象具有的特性: 
- 所有游戏对象都是一样的(游戏对象就是一个外壳)
 - 游戏对象上挂载的组件不同,挂载的组件属性不同,导致游戏对象的功能不同(功能由组件完成)
 
 - 游戏对象包含各种组件,下面罗列几种组件: 
- 灯光组件(发光)
 - 声音组件(背景音乐)
 - 视频组件
 - 图片组件(显示图片)
 - 模型显示组件(渲染组件)
 - 特效组件
 - 导航组件
 - 物理组件
 - UI组件
 - 脚本组件(自己写的功能)
 - 组件就是一个对象,对象中包含各种属性
 - 组件名——类名
 - 一个类包含成员字段、成员属性、成员方法
 
 - 一个游戏总共分成四个部分,总结如下: 
- 一个游戏由多个场景组成,场景有2D场景和3D场景之分
 - 一个场景由对个游戏对象组成
 - 一个游戏对象由多个组件组成
 - 一个组件由多个属性组成
 
 
3. Unity面板介绍
- Layout:窗口布局样式
 - 带Unity图标的表示场景
 
3.1 Hierarchy(层级面板)
- 功能: 
- 显示当前场景中的所有游戏对象的名字
 - 描述游戏对象与游戏对象之间的层级关系(父子级关系)
 - 可以拖动游戏对象以形成层级
 
 
3.2 Scene(场景面板)
- 功能: 
- 显示当前场景中的所有游戏对象的模型/图标
 - 提供场景和游戏对象的基本操作
 - 在面板右上角存在坐标系,可以调整场景视角
 
 - 场景操作: 
- Q键:场景移动
 - Alt+鼠标左键:旋转场景视角,围绕场景中心点旋转视角
 - 鼠标右键:旋转场景视角,围绕当前观察者(鼠标位置)旋转视角
 - 鼠标滚轮:拉近拉远场景
 - F键:聚焦对象
 - 鼠标右键+WASD:场景漫游
 - Shift+Ctrl+F:游戏界面同步场景界面(用在摄像机上)
 
 - 在场景中选择好合适的视角
 - 选中摄像机对象
 - 同步视角,按下快捷键或者GameObject菜单栏下的Align With View
 - 游戏对象操作: 
- W键:对象移动
 - E键:对象旋转
 - R键:对象缩放
 
 - 摄像机具有两个模式:透视模式(Perspective)和正交模式(Orthographic,一般2D会用到)
 - 搭建场景的时候,为了模型放置精准,可以按下面的顺序进行操作模型: 
- 模型先通过QWER设置好一个大概的位置旋转缩放
 - 通过模型在Inspector上的Transform组件里的position、rotation、scale去做微调,最好保持数值是一个整数或保留一位到两位小数
 - 放置模型,还可以采用位置贴边方式: 
- 调节物体位置时,可以按住V键,让当前模型的某个顶点与另一个模型的某个顶点重合,实现贴边
 - 原理: 
- 一个物体存在多个顶点,每三个顶点可构成一个三角形,多个三角形形成一个模型
 
 
 - V键可以让坐标系移动到模型顶点位置
 - 两个模型之间顶点和顶点重合,可以产生贴边效果
 - 当要创建一个复杂物体时,可以按照下面的步骤来创建: 
- 先创建一个空对象,作为父物体,创建好后,先Reset重置空对象Transform组件中的属性
 - 再去创建物体需要的源部件,作为子物体
 
 
 
3.3 Game(游戏面板)
- 功能: 
- 显示玩家所看到的画面
 - 开发中需要重点关注的视角
 - 调试和测试都需要看这个面板上的信息
 - 通过调整摄像机来调整完整能看到的视角
 - 手机游戏/电脑游戏中,玩家所能看到的画面会显示在屏幕(2D)上
 - VR(眼镜曲面屏)/AR中,主要是通过光学原理,让玩家产生视角错觉,在屏幕上所能看到的2D画面转变成3D画面
 - 在这个面板上,存在一个尺寸调整条,可以放大缩小所看到的画面
 - 游戏运行的状态信息(运行时占CPU大小,占多少内存,当前帧速率是多少等)可以在面板的右上角Stats中查看,用于后期的游戏调试
 
 
3.4 Inspector(监视器面板)
- 功能: 
- 主要用来监视游戏对象
 - 重点监视游戏对象上挂载的组件,可以在这个面板添加新组件
 - 监视游戏对象的基本信息(对象名字、是否静态、有哪些标签、属于哪一层级、激活状态)
 - 监视文件信息(材质文件等)
 - 监视工程设置
 
 
3.5 Project(工程面板)
- 功能: 
- 显示当前工程的所有资源文件
 - 根目录是Assets
 - 一个工程下有5个基础文件夹: 
- Assets:放置资源文件
 - Library:放置库文件(自动生成)
 - ProjectSettings:放置工程设置文件
 - Temp:放置临时文件
 - Package(UnityPackageManager):Unity包管理器
 
 
 
3.6 Console(控制台面板)
- 功能: 
- 显示控制台信息
 - 显示日志信息
 - 显示警告信息
 - 显示报错信息
 
 
- 地形系统(Terrain)
 
- Unity提供的一个地形组件
 - 一个游戏场景空间,采用地形+模型的方式搭建
 - 创建地形系统: 
- GameObject——>3DObject——>Terrain
 
 - 创建完成后,在Hierarchy面板中出现相应游戏对象,Project面板中出现地形系统文件(存储地形信息)
 - 初始坐标中心位于左下角(x轴表左右,y轴表上下,z轴表前后)
 - 编辑地形
 - 抬高/降低地形平面(可选择不同笔刷形成不同地形样式) 
- Brush Size:笔刷大小
 - Opacity:笔刷硬度,值大小表示抬高/降低地形速度
 
 - 平滑地形
 - 凹陷地形(可制作平台)
 - 在Unity2020版本中,选择设置高度后,Space处要选择Local才可以在一定高度地形上设置平台
 - 整体设置中可以调整地形大小、高度等
 - 高度限制抬高地形最高点
 - 按住shift键,做相反操作
 - 搭建地形时,要注意,第一个物体的坐标尤为关键,关系到地形上放置模型的坐标值计算是否方便
 - 能放在原点,尽量放在原点位置
 - 不能放在原点,尽量保持坐标是一个整数,或保留一位小数
 
5. 一些3D模型中会用到的基础理论
5.1 物体中心的概念
- Pivot(模型设计师设计的)
 - 单个物体:显示物体出产中心
 - 多个物体:显示当前这个物体的中心
 - Center(对象边界框的中心点)
 - Unity物理计算中心
 - 通过快捷键Z切换两个中心点
 - 物体中心点的选择不同会影响到旋转效果不同
 
5.2 坐标系(笛卡尔坐标系)的概念
- 2D笛卡尔(XY轴可以定一个平面上物体位置)
 - 3D笛卡尔 
- 左手坐标系——计算机、Unity中使用 
- 掌心向外, 大拇指与食指成90度
 - X轴向右,Y轴向上,Z轴向前
 
 - 右手坐标系——一般在数学中使用 
- 掌心向内, 大拇指与食指成90度
 - Z轴与左手坐标系相反,指向“自己”
 
 
 - 左手坐标系——计算机、Unity中使用 
 - Unity坐标系 
- 世界坐标方位
 - 世界的东南西北
 - 永远不会改变
 - 本地坐标方位
 - 物体的前后左右
 - 会随时发生改变,例如,旋转物体时,物体的本地坐标也会跟着旋转
 
 - 用快捷键X切换两个坐标,即切换方位(世界方位/自身方位)
 
5.3 向量和标量的概念
- 标量:有大小无方向
 - 向量:有大小有方向(Unity中常用)
 - 计算两点之间形成的向量:终点坐标-起点坐标
 - 向量加法:首尾相连,一个向量起点指向另一个向量终点
 - 向量减法:起点相连,减数终点指向被减数终点(被减数-减数=差)
 - 向量点积:结果是一个标量 
- 根据点乘结果来判断两个游戏对象之间的方位关系
 - 通常用于判断敌人在前还是在后
 
 - 向量叉乘 :(利用UnityAPI中的Cross函数即可得到计算结果) 
- 结果是一个向量(法向量,垂直于两个向量平面),左手坐标系计算
 - 法向量指向上方,表示b向量指向a向量右边;指向下方,则相反
 - 通常用于判断敌人在左还是在右
 
 
5.4 旋转的概念
- 欧拉角(EularAngle):——结构体
 - 物体绕XYZ轴(世界的)旋转的角度
 - 优点:好理解,好操作
 - 缺点:容易出现多个欧拉角的值表示一个旋转
 - 四元数:(用得较多,较精准)——类
 - 由XYZW四个值组成,由一堆算法算出来
 - 优点:避免万向锁(同一个旋转角度,欧拉角描述会有不同的值出现)问题
 - 缺点:不好理解,不好操作
 
5.5 网格的概念(模型形状)
- 用一堆三角形组成
 - 模型分为粗模(低模)和细模(高模)两种
 - 模型纹理:网格贴图(将2D贴图上的像素点对应到3D模型中粘贴)
 - 会用到组件有Mesh Filter(网格选择器)和Mesh Renderer(网格渲染器)
 
5.6 材质的概念
- 用于渲染网格的文件
 - 用Shader(着色器)来编程实现(渲染方案)
 - 控制材质球如何渲染的脚本
 - 使用CG语言
 - 可以编辑特效等
 - 需要物理中的光学知识和线性代数中的矩阵知识
 - 帧速率(FPS)的概念 
- 每秒刷新多少次数
 - 作用: 
- FPS越高,播放越流畅,性能消耗越大
 - FPS越低,播放越不流畅,性能消耗越小
 
 - 人眼分别的帧数是每秒24帧
 - 通过Game面板中的Stats来了解游戏的帧速率
 
 
| ------- THE END ------- | 

















