unity 入门
- 游戏引擎功能模块:
- 游戏中实时光影绘制;
- 动画系统;
- 物理模拟系统;
- 游戏场景渲染机制;
- 网络通信、AI系统;
- 平台移植功能。
界面视图
- Project(项目)视图是整个项目的资源汇总,包含了游戏项目中的场 景、模型、材质、脚本、外部导入的网格模型等所有资源文件。
- Hierarchy(层级)视图包含了当前场景中所有的游戏对象。
- Inspector(检视)视图用于显示当前选定的游戏对象的详细信息 包括游戏对象的名称、标签、几何属性以及其他组件信息,也可用 于显示Edit菜单栏中与项目相关的参数设置。
- Scene(场景)视图用于显示场景中所有模型、光源、摄像机、材 质、音效等游戏对象。在场景视图中,可以通过可视化的方式对场 景中的游戏对象进行编辑。
- Game(游戏)视图是游戏预览窗口,用于预览完整的游戏效果 游戏视图不支持直接编辑,对场景视图中的元素进行操作才能达到 编辑的效果。
位图与矢量图
- 位图是直接量化的原始信号,通常由扫描仪、 数码相机、 摄像机、 录像机、 光盘及其它的数字化设备生成。(放大会看到很多像素点)
- 矢量图是由软件生成的、 抽象的成果 其次是构成图形的基本元素。(放大不会模糊)
游戏对象( GameObject )
- 游戏场景中存在的物体都可以称为游戏对象(GameObject)。
- 游戏对象是一个非常广泛的概念,场景中的物体、环境元素、特效等都是游戏对象。
标签 ( Tag )
- 游戏对象标签可以方便我们区分一些特殊种类的游戏对象
- 标签的设置方法:选中目标游戏对象->Inspector视图->Tag
组件( Component )
- 在游戏场景中,游戏对象之间的表现与行为存在差异。
- Unity使用组件( Component )来表示游戏对象的某种属性或 行为。
- 给游戏对象添加组件
- Hierarchy视图中选择游戏对象->Component菜单>...
- Hierarchy视图中选择游戏对象->Inspector视图->Add Component
Transform组件
- 用于设置游戏对象在场景中的位置朝向以及尺寸。
- 绝大部分游戏对象(UI游戏对象除外 )都包含Transform组件。
- Transform 组件无法手动添加或删除创建游戏对象时自带的组件。
- Position:游戏对象相对于其父对象的坐标位置
- Rotation:游戏对象相对于其父对象的x、y、z轴的旋转角度(顺时针为正)
- Scale:游戏对象相对于其父对象在x、y、z轴方向的缩放倍数(1表示原始长度)
预制件( Prefab )
- 场景中存在许多个相同的游戏对象,该如何进行管理?
- 方法1:对相同的游戏对象进行相同的操作(繁琐、易出错
- 方法2:预制件
- 方便地进行相同游戏对象的创建;
- 相同游戏对象的修改可以批量进行;
- 预置件(Prefab)是一种资源类型——存储在Project( 项目)视图中的游戏对象原型。
- 预置件可以多次放入到多个场景中。
- 当你拖曳一个预置件到场景中,就在该场景中创建了该预制件的一个实例。所有的预置件实例链接到原始预置件。
- 当你对预置件进行任何更改,这些更改都会自动应用于所有预置件实例。
物理系统(Physics)与图形系统(Graphics)
物理系统
- 在虚拟世界中使用物理引擎,运用物理算法对游戏对象的运动进行模拟,例如重力、摩擦力、碰撞等,使游戏更加真实。
物理系统组件
- 刚体(Rigidbody)
- 刚体是物理学中一个重要的概念,它是指一个物体在受力的情况下其外形、尺寸、内部结构组织等都不受影响的一个特性。
- 在Unity中,刚体用于模拟游戏世界中物体受力之后的行为
- 添加刚体:选中游戏对象->Add Component->Physics->Rigidbody
- 每个游戏对象只能添加一个刚体组件。
- 刚体组件:
- Mass:对象的质量
- Drag:对象运动时的阻力
- Angular Drag:对象旋转时的角阻力
- Use Gravity:是否应用重力(默认勾选,应用重力)
- Constraints:刚体约束
- Freeze Position:受力后某轴不发生位移
- Freeze Rotation:受力后绕某轴不发生旋转
- 恒定力(Constant Force)
- 添加刚体组件后的游戏对象不仅受重力作用,还可以根据实际的开发需求添加其他作用力。
- Unity物理组件中包含恒定力组件,用于给游戏对象添加恒定力
- 添加恒定力:选中游戏对象->AddComponent->Physics->Constant Force
- 在游戏模拟的场景中,作用力通常是通过游戏对象之间的交互产生的;同时,作用力也不一定是恒定力。
- 因此我们通常使用游戏脚本,给游戏对象添加作用力;
- 碰撞体(Collider)
- 碰撞体定义了对象在物理系统中的碰撞形状,对象的碰撞形状用于物理模拟中的碰撞检测。当两个对象都有碰撞体组件时,物理引擎才会计算碰撞,否则物体会相互穿过。
- Unity中的内置对象(如Cube、Sphere等)都默认添加了缺省形状的碰撞体组件,若无特殊要求我们不需要为其添加新的碰撞体组件。
- 添加碰撞体:选中游戏对象->Add Component->Physics->XXX Collider
- 常用属性:
- Edit Collider:碰撞体形状编辑按钮,点击后可在Scene( 场景)视图中编辑碰撞体的形状
- Is Trigger:该碰撞体是否为触发器(默认不选,不是触发器)
- 碰撞体变成触发器后,不再有碰撞体的功能。
- Material:碰撞体的物理材质,设置游戏对象受力后的响应
- 一个物体(游戏对象)可以拥有多个碰撞体
- 物理材质( Physic Material )
- 是一种项目资源
- 创建物理材质:Project(项目)视图鼠标右击Create->Physic Materia
- Dynamic Friction:动摩擦力
- Static Friction:静摩擦力
- Bounciness:弹力
- Friction/Bounce Combine:定义两个碰撞体之间的摩擦 力/弹力如何相互作用。
- 物理系统管理器(Physics Manager)
- 管理整个项目中物理系统的默认参数值。
- Edit菜单->Project Settings->Physics
- Gravity:设置物理系统中的重力
- Default Material:碰撞体组件默认使用的物理材质
- Bounce Threshold:弹性阈值,两个碰撞体相对速度小于该阈值,不会因为碰撞而弹开。
- Default Contact Offset:两个对象发生碰撞的距离即当两个对象的距离小于该距离时才会发生碰撞
图形系统
三维物体渲染
- 网格( Mesh )
- 游戏中的三维物体使用网格来描述自身的形状和尺寸。一个模型由若干网格面组成,每一个面由若千个三角形组成。
- 在计算机图形学中,经常使用三角形网格来描述物体的几何信息,可以采用图形卡GPU对三角形网格有关的计算进行加速
- 网格过滤器( Mesh Filter )
- 网格过滤器(Mesh Filter)存放游戏对象的网格信息,并把网格信息传递到网格渲染器中,最后将网格渲染到屏幕中。此组件的目的主要用于确定模型的形状与尺寸。
- 网格渲染器( Mesh Renderer )
- 网格渲染器从网格过滤器中获得几何形状,用于染场景中的模型。
- Cast Shadows:是否产生阴影
- Receive Shadows:是否接受阴影
- Materials:网格所用的材质组
- 网格渲染器从网格过滤器中获得几何形状,用于染场景中的模型。
- 网格过滤器与网格渲染器必须成对使用,缺少任意一 个都会导致游戏对象的渲染失败。我们可以把网格过滤器看作一个人的骨骼,把网格渲染器看作一个人的血肉。前者决定了游戏对象的几何形状,后者决定了游戏对象的外貌、颜色等表面特质。
- 材质( Material )
- 网格只绘制物体的形状与尺寸,物体表面的颜色、质感特性则需要用材质(Material)来呈现,材质在物体的网格染器中设置。
- 材质的创建:Project(项目)视图->鼠标右击->Create->Material
- 可以选择着色器(Shader),进行调试视觉效果。
- 着色器 ( Shader )
- 着色器主要用于图像的渲染过程。它具有可编辑性,不受显卡的固定渲染管线限制,可以实现丰富的图像效果。这极大地提高了图像的品质。
- 我们可以使用着色器语言来编写相应的着色器脚本,以实现图像渲染的不同效果。
- 标准着色器 ( Standard Shader )
- 对于大多数表面效果的渲染(包括人物、风景、环境等),Unity内置的标准着色器(Standard Shader)通常是最好的选择。
- 标准着色器(Standard Shader)是一个高度可定制的着色器,它能够呈现多种类型的表面效果。
- 渲染模式(Rendering Mode)
- Opaque:不透明。
- Transparent:制作头盔、玻璃等透明效果。
- Fade:制作淡入淡出效果。
- Cutout:允许透明、不透明的效果同时存在并有明显的边界
- Albedo:表示光的反照率,描述物体的基本颜色。
- NormalMap:法向贴图,可以通过改变光的反射角度,使物体显得凹凸不平。
- Emission:自发光,使得物体看起来“自发光”。
- 天空盒( Skybox )
- 除了标准着色器(Standard)外,天空盒(Skybox)也是一种常用的着色器类型,它用于设置场景中的天空背景图案。
- Skybox/6 Sided:一种常用天空盒类型,其通常由x+、X-、y+、y-、z+、z-六个方向的贴图构成。
光源( Light )
- 光源是场景的重要组成部分,它决定了场景的明暗、色彩和氛围。
- Hierarchy视图->鼠标右键->Light>...
- Type:光源类型
- 方向光(Directional):模拟极远处的光照,如,地球上的太阳光。
- 点光源(Point):模拟光源向四周发出均匀的光线,例如,日常生活中灯泡。
- 聚光灯(Spot):模拟光源向某个方向发出圆锥体光线,例如,手电筒、路灯
- 面光源(Area):无法模拟实时光照,用于光照烘焙。
- Color:光源颜色
- Intensity:光照强度
- Bounce Intensity:反射光强度
- Type:光源类型
- 环境光
- 除了光源对象外,场景中还存在环境光,环境光奠定了一个场景的基本色调环境光的效果在Lighting视图中设置。
- Window菜单栏->Lighting
- Skybox:场景天空盒设置
- Ambient Source:环境光来源
- 天空盒(Skybox):若Skybox材质设置,使用该材质所产生的光效果;若Skybox没有选定材质,效果同单色光(Color)
- 梯度光(Gradient):拥有Sky、Equator、Ground三个颜色参数,分别对应天空、赤道、地面的光颜色,两两之间光颜色呈梯度分布
- 单色光(Color):根据选定的颜色作为环境光颜色
- Ambient Intensity:环境光强度
摄像机(Camera)
- 在Unity的场景中,必须有一个摄像机用于绘制场景。
- 引擎对摄像机可以看到的游戏世界中的空间区域进行渲染,生成最终的游戏画面。
- 摄像机类型
- 摄像机视角的不同:
- 第一人称
- 第三人称
- 摄像机显示个数:
- 单人模式
- 多人模式,比如,同一个屏幕里出现两个画面。
- 摄像机视角的不同:
- 其他摄像机行为
- 赛车游戏中的后视镜
- 射击游戏中人物死亡后的摄像机切换
- 摄像机创建:
- 默认会有一个Main Camera
- Hierarchy(层级)视图->鼠标右键->Camera
- 摄像机组件常用属性
- Clear Flags:摄像机清除标记,摄像机未绘制时的图像显示。
- Skybox(预设):以天空盒作为摄像机的清除标记
- Solid Color:以某种颜色作为摄像机的清除标记
- Depth Only:以深度值较低的摄像机渲染的图案作为该摄像机的清除标记,用于多个摄像机的同时绘制。高深度值摄像机未绘制的区域由低深度值摄像机绘制的图案填充。
- Don't Clear:不清除,摄像机的清除标记为上次渲染过的图像
- Projection:摄像机投射方式
- Perspective:透视,在该模式下,摄像机显示的场景画面为我们日常生活中所看到的远小近大现象。
- Orthographic:正交,在该模式下,场景中的物体大小不会因为与摄像机的距离不同而发生大小变化。
- Field of View:摄像机视角
- Clipping Planes:摄像机远近剪切平面
- Depth:摄像机深度值
- Clear Flags:摄像机清除标记,摄像机未绘制时的图像显示。
音频(Audio)
- 音频在游戏中的地位至关重要,它给游戏添加听觉效果 优质恰当的音频使得场景更加生动。
音频监听( AudioListener )
- AudioListener采集场景当中的声音并播放。
- 摄像机对象中预置了AudioListener组件;我们也可以通过添加 组件的方式,给游戏对象添加音频监听组件。
- 当场景中存在多个AudioListener时,Unitv编辑器会随机选择其中一个AudioListener生效,其余均保持静默。
- 添加AudioListener组件:选择游戏对象->Add Component->Audio->Audio Listener
音频源( AudioSource )
- 音频源(Audio Source)在场景中播放音频片段(Audio Clip);
- 添加AudioSource组件:选择游戏对象->Add Component->Audio->AudioSource
- 常用属性:
- AudioClip:音频片段
- Mute:是否静音(默认不勾选,不静音)
- Play On Awake:是否自动播放(默认选)
- Loop:是否循环(默认不勾选,不循环 )
- Volume:音量大小
- Pitch:音调高低
音频系统管理器( AudioManager )
- 音频系统管理器:管理整个项目中音频系统的相关参数;
- 打开方式:Edit菜单->Project Settings->Audio
- GlobalVolume:全局音量大小设置
- Disable Unity Audio:是否停用Unity的音频系统(预设为 不勾选,即不停用音频系统)
项目部署(Pc &移动平台)
项目构建( Build )
- 当Unity项目制作完毕,需要对Unity项目进行构建,才能使Unity项目脱离Unity编辑器独立运行。
- 项目构建:File菜单栏->Build Settings
- 项目构建的步骤:
- 把场景(Scene)添加到构建列表
- 打开需要构建的场景
- 点击Add Current按钮
- 选择项目发布的平台
- Switch Platform
- 设置平台参数
- Player Settings
- Resolution and Presentation:分辨率与演示设置
- Icon:项目图标设置
- Splash Image:项目启动图像设置
- Other Settings:其他设置
- Player Settings
- 生成游戏项目
- Build
- 把场景(Scene)添加到构建列表
Android移动平台的项目构建
- Android SDK与JDK的下载与设置
- SDK( Software Development Kit )软件开发工具包,是软件开发工程师用于为特定的软件包、软件架构、硬件平台、操作系统等建立应用软件的开发工具的集合。
- Android SDK 指的是Android专属的软件开发工具包
- JDK:(Java Development Kit)是Java 语言的软件开发工具包
- 在Unity Perferences设置SDK与JDK的目录
- Edit菜单->Preferences->External Tools
- Android项目参数设置
- Resolution and Presentation
- Orientation:设置屏幕默认朝向
- Status Bar
- Status Bar Hidden:状态栏隐藏
- Other Settings
- Identification
- Bundle Identifier:Android应用的标识符,用 于区别该应用与其他应用。
- Identification
- Resolution and Presentation
- Android手机连接设置