unity3d开发基础-游戏对象

本篇是本人学习courera课程unity3d编程基础 课程笔记,想学习可以直接报名哦。文章版权归本人所有,转载请谨慎。

游戏对象

游戏中的元素都可以称为游戏对象,这一章,主要讲解unity常用的对象。

常用的unity对象大概这么几类:

  • 摄像机
  • 光源
  • 立方体

游戏对象的创建,可以有两种方式

其中一种方式,选择 GameObject 菜单栏 点击需要创建的游戏对象,即可以完成游戏对象的创建。
以创建游戏对象立方体 Cube 为例,首先在 Hierarchy 层级视图点击鼠标右键,选择 3D Object 中的 Cube 即可以完成立方体 Cube 的创建。

立方体 Cube 创建后,我们在 Hierarchy 层级视图看到新创建的 Cube 对象。同时在 Scene 场景视图中出现了立方体,表明游戏对象 Cube 创建成功。

游戏对象的详细信息

在 Hierarchy 视图中选择 Cube 游戏对象 即可以在 Inspector 视图中查看 Cube 游戏对象的详细信息。下面介绍游戏对象的详细信息。

首先是 游戏对象的名称,对应 Hierarchy 视图中该游戏对象的名称。其次是游戏对象的标签 Tag,我们使用标签来区分某一类游戏对象。最后是游戏对象的各个组件 Component。

Tag 和Component

游戏对象标签 Tag 的概念。我们可以给游戏对象设置特殊的标签,以区分某些特殊的游戏对象。例如我们可以把玩家对象的标签设置为 Player 我们可以使用脚本,根据游戏对象的标签来寻找某一类的游戏对象。除了图中几种默认的标签外,我们也可以定义游戏对象标签 通过点击 Tag 下拉框中的 Add Tag,我们可以在 Inspector 视图中管理游戏对象的自定义标签。

下面介绍组件的概念。在游戏场景中,游戏对象之间的表现与行为存在差异,这主要是因为游戏对象包含不同的组件。 Unity 使用组件 Component 来表示游戏对象的某种属性或行为。

我们在 Hierarchy 视图中选择游戏对象。在 Inspector 视图中查看该游戏对象所包含的组件,除了创建游戏对象时,游戏对象自带的一些组件外,我们可以根据实际需求,为游戏对象添加新的组件。

给游戏对象添加组件有两种方式

第一种方式,使用 Component 菜单,在 Hierarchy 视图中选择游戏对象 点击 Component 菜单栏,选择需要添加的组件,完成组件的添加。

另一种方式在 Inspector 视图中完成 首先在 Hierarchy 视图中选择游戏对象,并点击 Inspector 视图中的 Add Component 按钮 在弹出的 Component 下拉框中,选择需要添加的组件,完成组件的添加 Unity 中包含多种组件类型 游戏对象根据自身的需求添加相应的组件。

Transform 组件

它用于设置游戏对象在场景中的位置、 朝向和尺寸,绝大部分游戏对象,除了 UI 游戏对象外,都包含 Transform 组件,实际上 UI 的游戏对象也包含了特殊的一种 Transform 组件 即 Rig Transform。Transform 组件无法手动添加和删除,它是游戏对象创建时自带的组件,Position 表示游戏对象相对于其父对象的坐标位置,Rotation 表示游戏对象相对于其父对象 x、 y、 z 三个轴的旋转角,以顺时针方向为正方向。 Scale 表示游戏对象 相对于其父对象在 x、 y、 z 轴方向的缩放系数。其中 1 表示没有缩放,在讲解 Transform 属性时,我们提到了父对象的概念 这是游戏对象之间的一种依赖关系。

游戏对象的父子关系

图一

通常情况下,游戏对象之间不存在依赖关系 如该 Hierarchy 视图中的 Cube 与 Sphere 游戏对象,Cube 与 Sphere 之间相互独立,不存在父子关系。 接下来我们观察 Scene 场景视图中的 Cube 与 Sphere。

将 Cube 向右平移 Cube 的位置发生了改变,而 Sphere 的位置未发生改变。

下面我们将 Sphere 对象拖至 Cube 对象下一层。

图1-2

我们发现 Cube 与 Sphere 在 Inspector 视图中的显示变成右图的形式 这表示 Cube 与 Sphere 中原本的相互的独立的关系变成父子关系。其中 Cube 是 SPhere 的父对象,Sphere 是 Cube 的子对象。接下来我们观察场景视图中的 Cube与 Sphere 。将 Scene 视图中的 Cube 向右平移。我们发现子对象 Sphere 跟随父对象 Cube 同时移动 。它们之间的相对位置保持不变 Transform 组件 的 Position,Rotation,Scale 属性是相对于游戏对象,父对象的属性值。因此,当游戏对象的父对象发生改变,该游戏对象 Transform 属性也会发生相应的改变。

Prefab对象的制作

在游戏开发过程中,我们可以反复修改游戏对象的属性 如果场景中存在多个相同的游戏对象时,该如何处理?

一种简单的方法就是对所有的游戏对象进行相同的操作 但这种方法过于繁琐,同时容易产生错误 另一种方法就是使用预制件来管理所有的相同的游戏对象 预制件的英文名叫 Prefab。 我们可以使用预制件快速地创建 相同的游戏对象,我们也可以利用预制件批量地修改相同的游戏对象的属性 。

图1

预制件 Prefab 是一种资源类型,存储在 Project 项目视图中的 游戏对象原型。 预制件可以多次放到多个场景中,当你拖拽一个预制件到场景中,就可以在该场景创建一个预制件的一个实例。所有的预制件实例都链接到预制件。当你对预制件进行任何修改,这些更改都可以自动化的应用到所有的预制件的实例

图2
我们使用具体的实例来讲解预制件是如何管理,由它创建的预制件实例。

首先,我们在 Hierarchy 视图中创建一个 Sphere 实例。把它拖入到 Project 项目视图中,成为 Sphere 的预制件,并利用该 Sphere 预制件,在 Hierarchy 层次视图中创建两个新的 Sphere 预制件实例。此时,Hierarchy 视图中的四个 Sphere 游戏对象显示为灰色,表示这四个 Sphere 是某个预制件的实例。选中任意一个 Sphere 游戏对象。

可以在 Inspector 视图中观察到 Prefab 的选项。这同样表明 Sphere 对象是某个预制件的实例。下面把 Sphere 预制件的颜色修改为灰色 修改完成后我们会发现,场景中所有的预制件实例都变为灰色。实际效果如图所示 这是预制件的修改直接应用到预制件实例的一个具体的例子。

图3

接下来看第二种情况 我们只对场景中的一个 Sphere 实例对象进行修改 修改完成后可以发现,只有该实例变成淡红色, 而其他实例与预制件均未变成绿色 实际效果如图所示,我们只对某个预制件实例进行修改。并没有对预制件进行修改,因此由该预制件生成的其他预制件实例对象也不会发生相应的变化。

图4

接下来看最后一种情况,我们首先把 Sphere 对象修改为绿色,并点击该实例对象中的 Prefab 中的 Apply 按钮 点击之后我们发现,预制件与所有的预制件实例均变为淡红色 实际效果如图所示。当我们修改完实例以后,并 点击 Apply,该预制件实例的修改也应用于 Project 视图中的预制件。因为预制件发生了变化,所以由该预制件生成的预制件所有的实例也发生了相同的变化,以上就是预制件的使用原理与方法。

在完成场景中 基本游戏对象的创建后,我们需要在场景中模拟真实世界的物理效果,下节我们讲解 Unity 引擎中的物理系统。