unity操作详细教程

一、Unity的特点

综合编辑
Unity简单的用户界面是层级式的综合开发环境,具备视觉化编辑、详细的属性编辑器和动态的游戏预览特性。由于其强大的综合编辑特性,因此,Unity也被用来快速地制作游戏或者开发游戏原型。
图形引擎
Unity的图形引擎使用的是Direct 3D(Windows)、OpenGL(Mac,Windows)和自由的APIs(Wii),可以支持Bump mapping、Reflection mapping、Parallax mapping、Screen Space Ambient Occlusion、动态阴影所使用的Shadow Map技术与Render-to-texture和全屏Post Processing效果。
资源导入
项目中的资源会被自动导入,并根据资源的改动自动更新。虽然很多主流的三维建模软件为Unity所支持,不过对3ds Max、Maya、Blender、Cinema 4D和Cheetah3D的支持比较好,并支持一些其他的三维格式。
一键部署
Unity可开发微软Microsoft Windows和Mac OS X的可执行文件,在线内容通过Unity Web Player插件支持Internet Explorer、Mozilla、Netscape、Opera和Camino、Mac OS X的Dashboard工具,但是Wii程序和iPhone应用程序的开发需要用户购买额外的授权,在价格上有所不同。
着色器
Shader编写使用ShaderLab语言,同时支持自由工作流中的编程方式或Cg.GLSL语言编写的Shader。Shader对游戏画面的控制力就好比在Photoshop中编辑数码照片,在高手手里可以营造出惊人的画面效果。
一个Shader可以包含众多变量及一个参数接口,允许Unity去判定参数是否为当前所支持并适配最适合参数,并选择相应的Shader类型以获得广大的兼容性。因此,Unity的着色器系统具有易用、灵活和高性能的特性。
地形编辑器
Unity内建强大的地形编辑器,支持地形创建和树木与植被贴片,还支持自动的地形LOD,而且还支持水面特效,尤其是低端硬件亦可流畅运行广阔茂盛的植被景观,还有Tree Create来编辑树木的各部位细节。
联网
现在大部分游戏都是联网的,令人惊喜的是,Unity内置了强大多人联网游戏引擎,具有Unity自带的客户端和服务器端,省去了并发、多任务等一系列繁琐而困难的操作,可以简单地完成所需的任务。其多人网络连线采用Raknet,可以从单人游戏到全实时多人游戏。
物理特效
物理引擎是一个计算机程序模拟牛顿力学模型,使用质量、速度、摩擦力和空气阻力等变量。其可以用来预测各种不同情况下的效果。Unity内置NVIDIA强大的PhysX物理引擎,可以方便、准确地开发出所需要的物理特效。
PhysX可以由CPU计算,但其程序本身在设计上还可以调用独立的浮点处理器(如GPU和PPU)来计算,也正因为如此,它可以轻松完成像流体力学模拟那样的大计算量的物理模拟计算。并且PhysX物理引擎还可以在包括Windows、Linux、Xbox360、Mac、Android等在内的全平台上运行。
音频和视频
音效系统基于OpenAL程式库,可以播放Ogg Vorbis的压缩音效,视频播放采用Theora编码,并支持实时三维图形混合音频流和视频流。
OpenAL的主要功能是在来源物体、音效缓冲和收听者中编码。来源物体包含一个指向缓冲区的指标,声音的速度、位置和方向,以及声音强度。收听者物体包含收听者的速度、位置和方向,以及全部声音的整体增益。缓冲里包含8位或16位元、单声道或立体声PCM格式的音效资料,表现引擎进行所有必要的计算,如距离衰减、多普勒效应等。
脚本
游戏脚本为基于Mono的Mono脚本,是一个基于.NET FrameWork 的开源语言,因此,程序员可用JavaScript、C#或Boo加以编写。
Unity资源服务器
Unity资源服务器具有一个支持各种游戏和脚本版本的控制方案,使用PostgreSQL作为后端。其可以保证在开发过程中多人并行开发,保证不同的开发人员使用不同版本的开发工具所编写的脚本能够顺利地集成。
真实的光影效果
Unity提供了具有柔和阴影与lightmap的高度完善的光影渲染系统。光照图是包含了视频游戏中面的光照信息的一种三维引擎的光强数据。光照图是预先计算好的,而且要用在静态目标上。

二、熟悉Unity界面与基本操作

任务描述
本任务将主要实现以下2个内容:
(1)了解Unity主界面;
(2)了解Unity基本操作。
知识学习

  1. Unity界面介绍
    Unity界面的默认布局一般分为6个部分,如图所示。
    unity操作详细教程_第1张图片
    unity操作详细教程_第2张图片

Unity常用的界面
(1)Hierarchy(层次视图)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210611153316910.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjA1MjM1![在这里插入图片描述](https://img-blog.csdnimg.cn/20210611153332291.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjA1Munity操作详细教程_第3张图片
层次视图(Hierarchy)包含了当前场景的所有游戏对象(GameObject),如图1-3-2所示。其中一些是资源文件的实例,如3D模型和其他预制物体(Prefab)的实例。开发者可以在层次结构视图中选择、创建、删除或者修改对象。
(2)Scene View(场景视图)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210611153431248.pngunity操作详细教程_第4张图片

场景视图(Scene View)是交互式沙盒,如图1-3-3所示。开发者可以在其中布置环境、玩家、摄像机、敌人和所有其他游戏对象。
在层次视图(Hierarchy)中选择某物体按F键(Frame Selected),可以在场景视图(Scene View)快速找到该物体。
(3)Project (工程/项目视图)
unity操作详细教程_第5张图片

工程视图
项目视图如图1-3-4所示。每个Unity的项目包含一个资源文件夹Assets。此文件夹的内容呈现在项目视图里。里面存放着游戏的所有资源,比如场景、脚本、三维模型、纹理、音频文件和预制组件等。
当需要从外部添加资源到项目中时,可以拖动操作系统的任何文件到项目视图,或者使用“Assets→Import New Asset”菜单命令来导入新资源。
有些游戏资源必须从Unity内部建立。可以使用项目视图中的Create下拉菜单,或在项目视图中通过右键唤出快捷菜单,然后使用Create命令来创建。
开发者可以在Windows系统中按F2键(Mac系统中为Enter键)重新命名任何资源/文件夹,或通过在资源名字上两次点击(不是双击)来重命名。如果按住Alt键的同时,展开或收起一个目录,所有子目录也将展开或收起。
(4)Inspector(检视面板)
unity操作详细教程_第6张图片
图1-3-5 检视面板
主相机的检视面板如图1-3-5所示。检视面板显示当前选定的游戏对象的所有附加组件(脚本属于组件)及其属性的相关详细信息。当选定不同游戏对象时,检视面板都会发生变化。
锁定模式让玩家在选择其他游戏对象时,保持锁定的面板始终在检视面板中。
Debug调试模式(可以在面板右上角下拉菜单选择)让开发者可以在检视视图中查看组件的私有变量。
Transform组件3行参数分别表示游戏对象在场景三维空间中的位置、旋转、缩放。因为所有游戏对象都身处三维空间,所以Transform组件是不可移除的。
最下方的“Add Component”用来添加其他组件。
组件名称右侧通常都会有2个图标和,前者可以打开官方的帮助文档,后者可以打开组件的快捷菜单。某些组件名称左侧会有标志,表示组件有效,当去掉对勾时,组件将失效。
(5)Game View(游戏视图)
unity操作详细教程_第7张图片
图1-3-6 游戏视图
游戏视图如图1-3-6所示。游戏视图显示发布游戏时的运行画面,通常开发者需要使用一个或多个摄像机来控制玩家在游戏时实际看到的画面。
控制条的第一个下拉菜单是Aspect外观菜单,在这里可以强制游戏窗口为不同的长宽比,用来测试游戏在不同长宽比的显示器中的不同情况。
(6)Toolbar (工具栏)
在这里插入图片描述

图1-3-7 播放、暂停、步进按钮
如图1-3-7所示的3个按钮分别为播放按钮、暂停按钮和步进按钮。它们用来控制编辑模式下游戏的运行。
单击播放“▶”按钮可立即运行游戏。
暂停按钮用于分析复杂的行为,游戏过程中(或暂停时)可以修改参数、资源、甚至是脚本。
步进按钮会让游戏逐帧运行。
注意:播放或暂停中修改的数据在停止后会还原到播放前的状态。
在这里插入图片描述

图1-3-8 变换工具
如图1-3-8所示的5个变换工具按钮是Unity中最基本的5种操作,用于场景视图改变左键功能。任何状态下滚轮为放大/缩小键,右键为旋转视角键。
手柄工具(快捷键Q):按住左键即可拖动视角。
移动工具(快捷键W):首先选择物体,物体会出现方向轴,拖动方向轴即可移动物体。
旋转工具(快捷键E):首先选择物体,物体会出现旋转轴,拖动旋转轴即可旋转物体。
缩放工具(快捷键R):首先选择物体,物体会出现缩放方向轴,拖动即可缩放物体大小。
编辑工具(快捷键T):首先选择物体,物体会出现一个面向视角的编辑框,拖动编辑框上的顶点即可改变物体大小。
在这里插入图片描述

图1-3-9 Layer和Layout快捷列表
如图1-3-9所示的是2个较为方便的小工具。
Layers可以根据游戏对象的layer属性选择性地显示场景视图中的物体。
Layout可以改变Unity的视图布局。开发者也可以将每个视图手动调至自己喜欢的位置和大小,在Layout下拉菜单中选择Save Layout命令保存布局。
2. Unity基本操作
(1)场景视图操作
场景视图的常见操作见表1-3-1。
表1-3-1 场景视图中的常见操作方法
操作名称 操作方法
平移视角 方法一:当光标落在场景视图上时,按住鼠标中键拖动,可平移视角。
方法二:选择抓取工具(或按Q键),按住鼠标左键拖动,可平移视角
缩放视角 方法一:当光标落在场景视图上时,滚动鼠标中键,可缩放视角。
方法二:当光标落在场景视图上时,按住Alt键再按住鼠标右键拖动,可缩放视角
旋转视角 方法一:当光标落在场景视图上时,按住鼠标右键拖动,可旋转视角。
方法二:当光标落在场景视图上时,按住Alt键再按住鼠标左键拖动,可旋转视角
飞行模式 当光标落在场景视图上时,按住鼠标右键,可以通过WASD进入飞行模式
(2)文件操作
文件的常见操作见表1-3-2。
表1-3-2文件的常见操作方法
操作名称 操作方法 快捷键
复制 选中物体,右键唤出快捷菜单,选择Copy命令或在主菜单栏中选择Edit→Copy命令 Ctrl+C
粘贴 选中物体,右键唤出快捷菜单,选择Paste命令或在主菜单栏中选择Edit→Paste命令 Ctrl+V
直接复制 选中物体,右键唤出快捷菜单,选择Duplicate命令或在主菜单栏中选择Edit→Duplicate命令 Ctrl+D
删除 选中物体,右键唤出快捷菜单,选择Delete命令或在主菜单栏中选择Edit→Delete命令 Delete
重命名 选中物体,再单击物体(并非双击物体) F2
移动 直接拖动物体到指定位置
查找 在搜索框中输入查找对象的名称或者输入“t:查找类型名称”用来查找某一类型的所有资源,例如t:camera Ctrl+F
全选 在主菜单栏中选择Edit→Select All命令 Ctrl+A
保存场景 在主菜单中选择File→Save Scene命令 Ctrl+S
新建场景 在主菜单中选择File→New Scene命令 Ctrl+N
(3)游戏对象操作
游戏对象的常见操作见表1-3-3。
表1-3-3 游戏对象的常见操作方法
操作名称 操作方法 快捷键
创建物体 在主菜单栏中的GameObject下拉菜单中选择要创建的物体,或通过Create列表选择需要创建的物体或通过右键唤出快捷菜单再选择要创建的物体 无
移动 在工具栏中选择移动命令,再通过鼠标左键编辑指示器 W
旋转 在工具栏中选择旋转命令,再通过鼠标左键编辑指示器 E
缩放 在工具栏中选择缩放命令,再通过鼠标左键编辑指示器 R
变换 在工具栏中选择变换命令,再通过鼠标左键编辑指示器 T
聚焦 双击某游戏对象,或者在主菜单中选择Edit→Frame Selected F
顶点捕捉 只有在移动模式下使用 V
对齐到视图 在主菜单中选择GameObject→Align With View Ctrl+Shift+F
移动到视图 在主菜单中选择GameObject→Move To View Ctrl+Alt+F
移动视图到选择对象 在主菜单中选择GameObject→Align View to Selected 无
取消激活 在主菜单中选择GameObject→Toggle Active State或在监视面板中关闭名称前面的对勾 Alt+Shift+A

三、学习图形界面模块

任务描述
本任务将主要实现以下2个内容:
(1)了解Unity照明系统。
(2)了解Unity材质系统。
知识学习
1. 照明
光源是每个场景的重要组成部分。光源决定了场景环境的明暗、色彩和氛围。合理使用光源可以创造完美的视觉效果。
(1)光源
在菜单栏中选择GameObject→Light选项可以创建光源。
Unity中提供了丰富多样的光源,见表1-4-1。
表1-4-1 光源类型
光源类型 描述
Directional Light
平行光 一个照亮整个场景的方向光,没有范围,没有衰减,常用来模拟天光,如图1-4-1所示
Point Light
点光 光源是一个点,照亮四周,有范围,可以有衰减,如图1-4-2所示
Spotlight
聚光灯 光源是一个点,以锥形照亮一片区域,有范围,可以有衰减,如图1-4-3所示
Area Light
区域光 光源是一个面,照亮面朝的方向,相当于有范围的平行光,有衰减,如图1-4-4所示
Reflection Probe
反射探针 记录一片区域的环境,当具有反射能力的物体进入区域时,会为其提供实时的反射影像
Light Probe Group
光探针组 记录一片区域的灯光信息,当有物体进入区域时,会为其提供实时光照
自发光 使物体本身具备发光能力,照亮四周,如图1-4-5所示
unity操作详细教程_第8张图片

图1-4-1 平行光
unity操作详细教程_第9张图片

图1-4-2 点光源
unity操作详细教程_第10张图片

图1-4-3 聚光灯
unity操作详细教程_第11张图片

图1-4-4 区域光
unity操作详细教程_第12张图片

图1-4-5 发光材质
(2)烘焙贴图
Unity可以计算复杂的静态照明效果,通过使用一种叫做全局照明(Global Illumination,简称GI)的技术,并将照明结果存储在一个名为灯光贴图(lightmap)的参考纹理图中。这个计算过程被称为烘烤(Bake)。
在烘焙贴图时,计算光源对场景中静态物体的影响,并将结果记录在灯光贴图上,最后将灯光贴图覆盖在纹理上,以产生照明效果,如图1-4-6所示,左边是一个简单的light映射场景,右边是由Unity产生的灯光贴图。
unity操作详细教程_第13张图片

图1-4-6 灯光贴图
这些灯光贴图可以记录直接照射到表面的光,也可以记录从其他物体或物体表面反射的间接光。灯光贴图可以与表面纹理(Albedo)以及凹凸纹理(Normal)一起使用。但是,灯光贴图在游戏中是无法改变的,因此被称为“静态的”。
开发者在游戏制作时就提前烘焙好灯光贴图,这样游戏中就可以不用实时渲染,便于节省性能,适用于移动平台。这样的处理灯光的方法被称为灯光预处理。
2. 材质(Material)、着色器(Shader)和纹理(Texture)
在Unity中渲染使用材质,着色器和纹理。它们三者有着密切的关系。
材质
材质定义了一个表面(surface)应该如何渲染,为其设置了纹理、平铺信息(Tiling and Offset)、颜色(Color Tints)等选项。材质具体的可用选项取决于它所使用的着色器。
着色器是一些小的脚本,它包含根据照明输入和材质配置得到每个像素的颜色所用到的计算过程和算法。
纹理是一批位图图像。着色器会在计算一个游戏对象的表面颜色时用到材质所引用的纹理。除了物体表面的基本颜色(Albedo),纹理还可以代表材质表面的许多其他方面,比如反射率或粗糙度。
对于大多数正常的渲染(例如渲染角色、场景、环境、固体和透明的游戏对象、硬的和软的表面),标准的着色器通常是最好的选择。这是一个高度可自定义的着色器,它能够以非常现实的方式呈现许多类型的表面,参数如图1-4-7所示。
unity操作详细教程_第14张图片

图1-4-7 Standard材质
在其他情况下,使用其他的内置着色器,甚至是自定义编写的着色器会比较合适(例如,液体、树叶、折射玻璃、粒子效应、卡通、说明性或其他艺术效果,或其他特殊效果,如夜视、热视觉或X射线视觉)。

四、学习物理碰撞模块

任务描述
本任务将主要实现以下5个内容:
(1)了解Unity中的刚体。
(2)了解Unity中的碰撞器。
(3)了解Unity中的物理材质。
(4)了解Unity中的触发器。
(5)了解检测碰撞的方法。
知识学习
1. 刚体(RigidBody)概述
刚体是使游戏物体(GameObject)拥有物理行为的主要组件(Component)。添加刚体时,物体会立即响应重力(gravity)。如果还添加了一个或多个碰撞器(Collider)组件,游戏物体将接受物理碰撞。Rigidbody组件如图1-5-1所示。
unity操作详细教程_第15张图片

图1-5-1 Rigidbody组件
由于RigidBody组件接管了它所附加的游戏物体的运动系统,所以不应该再在脚本中通过Transform属性来移动它。而应该使用力的作用去推动游戏物体,让物理引擎计算运动结果。
在某些情况下,开发者可能希望游戏物体拥有一个刚体,但物理引擎不去控制它的运动。例如,开发者可能希望直接从脚本代码控制角色,但仍然允许通过触发器(Trigger)来检测角色。由脚本产生的这种非物理性质的运动被称为Kinematic(动力学)运动。Rigidbody组件具有一个名为Is Kinematic的属性,该属性将其从物理引擎的控制中移除,并允许以脚本的方式移动它。开发者可以通过脚本将Is Kinematic的值更改为开启或者关闭,但这会带来性能开销,应谨慎使用。
实际上,Unity系统中有三维刚体(RigidBody组件)和二维刚体(RIgidBody2D组件)之分,读者可以自行了解它们的区别。
2. 碰撞器(Collider)
碰撞器(Collider)组件定义了物体在计算物理碰撞时的形状。碰撞器是不可见的,不需要与游戏对象的网格形状(Mesh Filter)完全相同。事实上,一个碰撞器的形状只需要粗略地近似游戏对象的网格形状,在游戏中往往发现不了区别而且更有效率。
最简单(和最低处理器损耗)的碰撞器是所谓的原始型碰撞器(Primitive Collider)。在3D系统中,它们是盒子碰撞器(Box Collider),球形碰撞器(Sphere Collider)和胶囊碰撞器(Capsule Collider),如图1-5-2、1-5-3、1-5-4所示。
unity操作详细教程_第16张图片
unity操作详细教程_第17张图片
unity操作详细教程_第18张图片

图1-5-2 Box Collider 图1-5-3 Sphere Collider 图1-5-4 Capsule Collider
在2D系统中,它们是二维盒形碰撞器(Box Collider 2D)和圆形碰撞器(Circle Collider 2D)。可以将多个原始型碰撞器添加到同一个游戏对象上来创建混合型碰撞器(compound colliders)。
混合型碰撞器往往可以通过仔细地定位和调节大小来得到近似物体的形状,这样可以使处理器开销水平较低。开发者也可以通过在子对象添加碰撞器来使碰撞更加灵活。如果这样做,应该只有一个刚体组件,而且需要放置在层次结构中的根(root)对象上。
注意,原始型碰撞器不能很好地适应游戏对象的变换,比如扭曲、旋转等。这意味着如果开发者使用复杂的动作和变换,产生的形状不再匹配原始形态,原始型碰撞器将无法正确表达。
然而某些情况下,即使混合型碰撞器也不够准确表达开发者需要的碰撞效果。在3D系统中,可以使用网格碰撞器(Mesh Collider)完全匹配对象的网格形状。在2D系统中,多边形碰撞器(Polygon Collider 2D)虽然不能完美匹配精灵图形(Sprite)的形状,但可以任意细化形状的细节。然而,这些碰撞器比原始型碰撞器更加损耗处理器性能,所以需要谨慎地使用它们以保持良好的性能。同时,网格碰撞器无法与另一个网格碰撞器碰撞(即它们不会检测到彼此)。在某些情况下,可以通过在检视面板中标记网格碰撞器为“凸面的(Convex)”来解决这个问题。这将产生形状为“凸面的”碰撞器,和原来的网格一样,但凹的地方被填补了。这样做的好处是,凸面网格碰撞器可以与其他网格碰撞器 发生碰撞。然而,普遍的规则是使用网格碰撞器来实现场景的几何形状,使用混合型碰撞器实现运动物体的近似形状。
碰撞器可以添加到没有刚体组件的游戏对象上,用来创造地板、墙壁和其他静止场景元素。这些被称为静态碰撞器(Static Colliders),一般来说不应该在脚本中对静态碰撞器进行变换处理,因为这将严重影响物理引擎的性能。碰撞器可以添加到有刚体组件的游戏物体上,此时被称为动态碰撞器(Dynamic Colliders)。静态碰撞器可以与动态碰撞器相互作用,但是如果两个碰撞器都没有刚体,它们将不响应碰撞事件。
3. 物理材质(Physics material)
当碰撞器相互作用时,它们的表面需要模拟它们所代表的物质的性质。例如,一块冰会很滑,而橡胶球则会产生很多摩擦力(Friction),而且非常有弹性(Bounciness)。虽然碰撞时碰撞器的形状并没有改变,但它们的摩擦和反弹可以用物理材质来配置。如图1-5-5所示。
unity操作详细教程_第19张图片

图1-5-5 物理材质
4. 触发器(Trigger)
当发生碰撞时,脚本系统可以检测到并触发OnCollisionEnter函数。然而,也可以使用物理引擎来检测当一个碰撞器进入另一个的空间而非产生碰撞的情况。一个碰撞器配置为触发器(使用Is Trigger属性)后并不表现为一个实体对象,只会让其他碰撞器通过。当碰撞器进入空间时,在触发对象的脚本上调用OnTriggerEnter函数。
5. 脚本操作上采取的碰撞
当发生碰撞时,物理引擎会在涉及对象的脚本上调用具有特定名称的某些函数。开发者可以将任何代码放置在这些函数中,以响应碰撞事件。例如,当一辆车撞到障碍物时,需要播放碰撞音效。
在探测到碰撞的第一帧,调用OnCollisionEnter函数。在保持接触后的每一帧,会调用OnCollisionStay。最后,OnCollisionExit表示这一帧离开接触。触发器碰撞器调用类似的OnTriggerEnter、OnTriggerStay和OnTriggerExit函数。注意,对于二维物理,有等价的函数,例如OnCollisionEnter2D。
在正常的非触发器碰撞中,有一个额外的细节,那就是涉及碰撞的对象中至少有一个必须具有非运动学刚体(即Is Kinematic必须关闭)。如果两个物体都是运动学刚体,OnCollisionEnter就不会被唤起。但是触发碰撞中并没有这种限制,运动学和非运动学刚体都将在进入触发碰撞器时调用OnTriggerEnter。

五、 学习UI模块

任务描述
本任务将主要实现以下5个内容:
(1)了解Unity中的UI画布;
(2)了解Unity中的UI事件系统;
(3)了解Unity中的RectTransform;
(4)了解Unity中的众多UGUI组件;
(5)了解UI事件触发的方法。
知识学习
自Unity 4.6版本开始至今,Unity中新的UGUI系统已经相当成熟,其在功能和易用性上一点也不逊于NGUI(Unity上一款流行的第三方UI插件)。使用最新的UGUI可以方便快速地建立UI界面。UGUI包括Canvas(画布)、EventSystem(事件系统)、Text(文本)、Image(图像)、Button(按钮)、Panel(面板)等多种元素。
1. Canvas(画布)
Canvas是所有UI组件的容器,所有UI组件都必须是画布的子物体。Canvas对应了3种Render Mode(渲染模式),具体见表1-6-1。
表1-6-1 Canvas对应的3种渲染模式
渲染模式 说明
Screen Space-Overlay UI元素相对于屏幕空间,以2D方式显示在任何相机画面的上面。这就是标准的UI模式
Screen Space-Camera UI元素相对于屏幕空间,由指定的相机负责显示,相机的参数会影响显示的结果,可以把Canvas理解为相机的子物体
World Space UI元素相对于世界空间,和其他场景里的物体一样,也有世界位置、遮挡关系,可以把界面当做3D空间中的面片
2. EventSystem事件系统
创建Panel后,Canvas和EventSystem都会被自动创建。EventSystem负责监听用户的输入,监听的内容包括键盘、鼠标和触摸屏幕。当需要屏蔽用户输入时,只要将EventSystem关闭即可。
3. RectTransform
RectTransform是UGUI元素所特有的组件,它继承自Transform,用于实现界面的布局和层次控制。相比于Transform,RectTransform增加了一些元素,具体见表1-6-2。
表1-6-2 RectTransform特殊属性
属性 说明
Pivot轴心 表示UI元素的中心,使用相对于自身矩形范围百分比表示的点位置,如默认的(0.5,0.5)表示正中心
Anchor锚点 锚点是UI对象相对于父矩阵中固定的量,在属性面板中用anchor.Min和anchors.Max表示UI对象各个边界的百分比位置
SizeDelta尺寸变化量 尺寸变化量sizeDelta是UI对象的尺寸变化量,可以将其理解为锚点固定UI对象的位置,sizeDelta将控制UI对象的尺寸
RectTransform组件还负责组织UI对象的层级关系,子级UI对象总是会覆盖父级UI对象。在层级相同的情况下,下方的UI对象将覆盖上方的UI对象。
4. 其他UGUI组件
因篇幅限制,本书不会逐一介绍,读者可以在Unity中尝试创建各种组件,了解其属性和作用。
5. 事件触发
如果界面上有按钮,一般单击按钮理应发生某种事情,这便会涉及UGUI的事件触发。触发事件可以有多种方法,下面先介绍一种“用Unity3D编辑器操作”的方法。以Button为例,属性面板中有OnClick()一栏,代表按钮被按下的事件,只要编写该按钮事件,然后设置OnClick()属性即可实现触发事件。

六、学习动画模块

任务描述
本任务将主要实现以下5个内容:
(1)了解Unity中的动画系统概述。
(2)了解Unity中的Mecanim工作流。
(3)了解Unity中的动画剪辑。
(4)了解Unity中的Animator组件。
(5)了解Unity中的Animator视图。
知识学习
1. 动画系统概述
Unity具有丰富而复杂的动画系统,称为Mecanim系统。它提供了:
为人形角色提供的简易的工作流和动画创建能力。
Retargeting(运动重定向)功能,即把动画从一个角色模型应用到另一个角色模型上。
针对Animation Clips(动画片段)的简易工作流,即针对动画片段以及它们之间的过渡和交互过程的预览能力。这样可以使动画师更加独立地进行工作,而不用过分地依赖于程序员,从而在编写游戏逻辑代码之前即可预览动画效果。
一个用于管理动画间复杂交互作用的可视化编程工具,如图1-7-1所示。
unity操作详细教程_第20张图片

图1-7-1 Animator视图
通过不同逻辑来控制不同身体部位运动的能力。
2. Mecanim工作流
Mecanim工作流被分割为3个主要阶段:
(1)资源的准备和导入
这一阶段由美术师或动画师通过第三方工具来完成,例如3ds Max或Maya。
(2)角色的建立,主要有以下两种方式
人形角色的建立。Mecanim通过扩展的图形操作界面和动画重定向功能,为人形模型提供了一种特殊的工作流,它包括Avatar的创建和对肌肉定义(Muscle Definitions)的调节。
一般角色的建立。这是为处理任意的运动物体和四足动物而设置的。动画重定向和IK功能对此并不适用。
(3)角色的运动
这里包括设置动画片段及其相互间的交互作用,也包括建立状态机和混合树、调整动画参数以及通过代码控制动画等。
3. 动画剪辑Animation Clip
动画剪辑是Unity动画系统的核心元素之一。
Unity支持从外部源导入动画,并且能够使用动画窗口在编辑器中从头创建动画剪辑。
从外部来源导入的动画剪辑可以包括:
从人形动画中捕捉。
由艺术家在外部3D应用程序(如3ds Max或Maya)中创建的动画。
来自第三方图书馆的动画集(比如Unity的商店)。
从导入的时间轴中切割出来。
Unity的Animation窗口也允许创建和编辑动画剪辑。
以下这些属性可以创建动画:
游戏对象的位置、旋转和缩放。
成分属性,如材料的颜色,光的强度,声音的体积。
开发者自己的脚本中的属性包括浮点数、整数、向量和布尔变量。
在开发者自己的脚本中调用函数的时间。
如图1-7-2所示的是Unity动画窗口的一个例子,用于调整一个点光的强度和范围。
unity操作详细教程_第21张图片

图1-7-2 Animation视图
4. Animator组件
任何一个拥有Avatar的游戏对象都同时需要有一个Animator组件,该组件是关联角色及其行为的纽带,如图1-7-3所示。
unity操作详细教程_第22张图片

图1-7-3 Animator组件
Animator组件中还引用了一个Animator Controller,它被用于为角色设置行为,这里所说的行为包括状态机、混合树(Blend Trees)以及通过脚本控制的事件(Events),具体包括:
Controller:关联到该角色的Animator控制器。
Avatar:该角色的Avatar。
Apply Root Motion:是使用动画本身还是使用脚本来控制角色的位置。
Update Mode:动画的更新模式。
Normal:同步更新,动画速度与运行速度相匹配,运行速度慢,动画慢。
Animate Physics:动画是有物理的相互作用时用此模式。例如,人物可以推动周围的刚体。
Unscaled Time:不成比例的时间,动画忽略当前的运行速度。
Culling Mode:动画的裁剪模式。
Always Animate:总是启用动画,不进行裁剪。
Cull Update Transforms:更新裁切。
Cull Completely:完全裁切。
5. Animator窗口
动画窗口允许创建、查看和修改动画控制的资源。在菜单栏选择Window→Animator可以打开Animator窗口。窗口有两个主要部分:主网格布局区域和左侧的层/参数面板,如图1-7-4所示。
unity操作详细教程_第23张图片

图1-7-4 Animator窗口
主网格布局中可以创建动画状态机,动画状态机可以是一个动画剪辑(Clip)也可以是一个动画混合树(Blend Trees)。每一个层中有唯一的默认动画状态机,作为整个动画的起点。动画状态机之间会有过渡来控制它们之间的切换。
参数视图允许开发者创建、查看和编辑动画控制器参数,这些参数可以被脚本调用,然后来控制动画状态机之间的过渡。
层视图允许开发者创建多个层。层常见的用法就是用一个层控制角色下半身的动画,一个层控制角色上半身的动画。

你可能感兴趣的:(笔记,unity3d)