第2章 Unity的世界和编辑器主要界面介绍

2.1 理解Unity的世界

2.1.1 虚拟的三维世界

和现实世界类似,Unity创造的世界空间上是三维的。其实,Unity只能创造三维的世界,尽管Unity也能创造二维的内容,但那只是看上去是二维的,其本质上还是三维的。对于虚数空间、高维空间,Unity就无能为力了,不过平行世界还是可以做到的。

Unity的虚拟世界使用的是左手坐标系,和一些3D软件使用的右手坐标系不一样,某些情况下在模型导入的时候需要注意。

左手坐标系和右手坐标系的简单区别就是,当X轴正方向朝右、Y轴正方向朝上的时候,左手坐标系的Z轴正方向是我们面向的方向,而右手坐标系正好相反,如图2-1所示。

图2-1

在Unity的虚拟世界中,长度单位是米,在实现增强现实(Augmented Reality,AR)和虚拟现实(Virtual Reality,VR)的时候要特别注意。

另外,Unity的虚拟世界在一定程度上支持牛顿力学三大定理,但是不支持万有引力,更不支持相对论。Unity的虚拟世界默认是地球重力,可以在“Project Settings”窗口修改,如图2-2所示。

图2-2

2.1.2 必须存在的转换

任何存在于现实世界的物体或者东西都有一个位置。例如,在地球范围,任何物体或东西的位置都可以用经度、纬度和海拔来确定。Unity虚拟世界也是类似的,任何东西都可以用(XYZ)来确定位置。

在Unity的虚拟世界里,任何物体或东西都有一个统称,叫游戏对象(GameObject)。每一个游戏对象都有一个转换(Transform),转换不光包含位置信息,还包含旋转和缩放信息,如图2-3所示。

图2-3

虽然每个游戏对象都有转换信息,但是对于开发者而言仅凭转换信息无法直观地了解到各个游戏对象)之间的位置关系,需要用“场景(Scene)”窗口来直观地了解并设置各游戏对象之间的位置关系。

2.1.3 层级的结构

现实中,很多东西都具有层级结构。例如,计算机由CPU、内存、输入输出等部件(或组件)组成,而CPU又由运算器、寄存器、控制器等部件组成。Unity的虚拟世界也是一样的,具有层级结构。每个游戏对象(GameObject)都可以有子游戏对象。上级游戏对象的转换(Transform)信息会影响到下级游戏对象。

Hierarchy(层级)窗口(见图2-4)就是用来查看并设置各游戏对象层级关系的。

图2-4

2.1.4 组件决定游戏对象

在现实世界中,不同的东西是由不同的物质或者元素组成的。Unity的虚拟世界也是类似的,只不过组成游戏对象(GameObject)的东西就被称为组件(Component)。不同的组件组成了不同的游戏对象,使其拥有了不同的功能。开发者编写的代码也就是脚本(Scripts),也是一种重要的组件。

Inspector(检查器)窗口(见图2-5)很重要的一个作用就是用来查看和设置游戏对象是由哪些组件所组成。

图2-5

2.1.5 场景和摄像机

要一次把一整个Unity的虚拟世界全部创造出来,很累,也没有必要,所以每次创造的都是Unity虚拟世界的一个碎片,这个碎片就叫场景(Scene)。Unity通过不同的场景来讲述或者展现被创造出来的一个或者几个虚拟世界。

场景中还存在一种特殊的游戏对象(GameObject),就是摄像机(Camera),现实世界必须通过摄像机才能看到场景中的内容。

所以,每个Unity的项目至少需要一个场景,否则不能发布成应用或者程序。在每个场景中,必须至少有一个摄像机,否则不能显示任何内容。