欢迎大家继续学习 Unity 游戏编程基础 本节我们讲述 Unity
中与游戏对象相关的概念和使用方法 本节将采用
PPT 讲解加项目演示的方式,讲解游戏对象相关的知识
在项目演示环节,我们演示了游戏对象的相关的知识 在《多米诺骨牌》项目中的应用。
大家可以根据自己的专业基础和学习能力情况 从以下学习方法中选择一种来学习。
第一种方法,先看 PPT 讲解,对相关知识有一个系统的了解 然后观看项目演示视频,学习知识点的应用
第二种方法,先看项目演示视频,了解知识点的具体应用 再回到 PPT
讲解阶段,有针对性地学习相关的知识点 第三种方法,跳过 PPT 讲解,直接进入项目演示
通过理解项目中的知识点的运用,完成相关知识点的学习,不需要回顾 PPT 讲解 下面我们进入 PPT 讲解阶段。
游戏场景中存在的物体都可以称为游戏对象 游戏对象是一个非常广泛的概念,场景中的物体、
环境元素、 特效等都是游戏对象。
本页 PPT 场景视图中 场景中的摄像机、 光源、
立方体都是游戏对象 下面讲解游戏对象的创建步骤
游戏对象的创建,可以有两种方式 其中一种方式,选择
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 对象下一层
我们发现 Cube 与 Sphere 在 Inspector 视图中的显示变成右图的形式
这表示 Cube 与 Sphere 中原本的相互的独立的关系变成父子关系
其中 Cube 是 SPhere 的父对象,Sphere 是 Cube 的子对象
接下来我们观察场景视图中的 Cube与 Sphere 将 Scene
视图中的 Cube 向右平移 我们发现子对象 Sphere
跟随父对象 Cube 同时移动 它们之间的相对位置保持不变
Transform 组件 的 Position,Rotation,Scale
属性是相对于游戏对象,父对象的属性值 因此,当游戏对象的父对象发生改变,该游戏对象 Transform
属性也会发生相应的改变 在游戏开发过程中,我们可以反复修改游戏对象的属性
如果场景中存在多个相同的游戏对象时,如我们的 《多米诺骨牌》项目中的很多个多米诺骨牌,该如何处理?
一种简单的方法就是对所有的游戏对象进行相同的操作 但这种方法过于繁琐,同时容易产生错误
另一种方法就是使用预制件来管理所有的相同的游戏对象 预制件的英文名叫 Prefab。
我们可以使用预制件快速地创建 相同的游戏对象,我们也可以利用预制件批量地修改相同的游戏对象的属性
下面我们讲解预制件的概念与使用方法 预制件 Prefab
是一种资源类型,存储在 Project 项目视图中的 游戏对象原型。
预制件可以多次放到多个场景中 当你拖拽一个预制件到场景中,就可以在该场景创建一个预制件的一个实例
所有的预制件实例都链接到预制件
当你对预制件进行任何修改,这些更改都可以自动化的应用到所有的预制件的实例
下面我们使用具体的实例来讲解预制件是如何管理 由它创建的预制件实例。
首先,我们在 Hierarchy 视图中创建一个 Sphere 实例 把它拖入到
Project 项目视图中,成为 Sphere 的预制件 并利用该 Sphere
预制件,在 Hierarchy 层次视图中创建两个新的 Sphere
预制件实例 此时,Hierarchy 视图中的三个 Sphere
游戏对象名称显示为蓝色 表示这三个 Sphere 是某个预制件的实例。
选中任意一个 Sphere 游戏对象 可以在 Inspector 视图中观察到 Prefab
的选项 这同样表明 Sphere 对象是某个预制件的实例 下面把 Sphere
预制件的颜色修改为淡红色 修改完成后我们会发现,场景中所有的预制件实例都变为淡红色
实际效果如图所示 这是预制件的修改直接应用到预制件实例的一个具体的例子
接下来看第二种情况 我们只对场景中的一个
Sphere 实例对象进行修改 修改完成后可以发现,只有该实例变成淡红色 而其他实例与预制件均未变成淡红色
实际效果 如图所示,我们只对某个预制件实例进行修改
并没有对预制件进行修改,因此由该预制件生成的其他预制件实例对象也不会发生相应的变化
接下来看最后一种情况 我们首先把
Sphere 对象修改为淡红色,并点击该实例对象中的 Prefab 中的 Apply
按钮 点击之后我们发现,预制件与所有的预制件实例均变为淡红色 实际效果如图所示。
当我们修改完实例以后,并 点击 Apply,该预制件实例的修改也应用于 Project
视图中的预制件 因为预制件发生了变化,所以由该预制件生成的预制件所有的实例也发生了相同的变化
以上就是预制件的使用原理与方法。
在完成场景中 基本游戏对象的创建后,我们需要在场景中模拟真实世界的物理效果,下节我们讲解
Unity 引擎中的物理系统 最后我们进入演示环节,向场景中
添加游戏对象,同时设置游戏对象的标签及其位置