服务器端迅速与蒸气 - 更新为蒸气4!

建立Web应用程序和API的最佳书籍,由蒸气创造者写。
为蒸气4完全更新 - 包括新章节。
自由开始阅读 - 今天!

首页 团结教程

统一教程第2部分:GameObjects

在我们统一教程系列的第二部分中,您将学习如何在划伤中与C#统一的第一场比赛:一个名为Bobblehead Wars的双棍射击者!

4.3/5 7评级

版本

  • C#7.2,Unity 2018.1,Unity

这是我们书的第1章“Hello Unity”的摘录 通过教程的团结游戏,新更新为Unity 2018.1,它通过从头开始创建四个Unity游戏 - 甚至向您展示如何为统一的VR开发。享受!

在里面 本系列的第一个教程,我们勇敢的英雄独自留下幻想在他几乎没有附加的爆炸中的幻想中。

在本教程中,您将使他的梦想成真。但是,首先,您必须理解一个至关重要的概念: GameObject.s..

笔记:本教程项目继续前面的教程暂停。如果您没有遵循,或者您想要开始新鲜,请下载此教程的材料,并使用那些作为您的起点。

介绍GameObjects.

在Unity中,游戏场景包含具有您永远不会猜到的名称的对象:GameObjects。 :]

您的播放器,外星人,屏幕上的子弹的GameObjects,实际水平几何 - 基本上,游戏本身的一切。

正如项目浏览器包含所有资产的那样,层次结构包含场景中的GameObject列表。

要看到这一点,你需要打开你的项目,如果它没有打开,那就这样做了。

笔记: Unity开放项目文件的方式有点奇怪。您可以导航您的文件系统并查找场景文件。双击场景,然后团结会打开Unity欢迎。从该屏幕中,您可以选择要打开的项目。

或者,如果您启动Unity或点击 文件\开放项目,您将看到一个项目列表。选择所需的项目,Unity将照顾其余部分。

如果未列出您的项目,请单击“ 打开 按钮要显示系统对话框。而不是搜索特定文件,尝试导航到Unity项目的顶级目录,然后单击 选择文件夹。该引擎将检测文件夹中的Unity项目并打开它。

当您打开较旧的Unity项目时,您可能会从Unity中获得警告,以旧版本的Unity创建该项目。所有这意味着统一可以重新进口所有资产。也就是说,它将为所有资产创建新的元数据。毋庸置疑,对于大型游戏,这一重新进口可能需要很长时间。此外,由于Unity正在更新您的项目,因此您应该先备份备份。

一旦您的项目开放,请查看您的层次结构并计算GameObjects。

你的第一个想法可能是 因为您在上一个教程中添加了三个GameObjects:太空海洋机身和太空海洋头部。

但是,还有另外两个GameObjects: 主摄像头定向光。请记住Unity如何默认创建这些?是的,这些也是GameObjects。

然而,有更多的GameObjects。您会注意到您导入的GameObjects左侧有披露三角形。

伸出了 alt按钮 在PC上,或 选项 在Mac上, 点击 每个 披露三角形.

你可以看到,你有 所以 many GameObjects:

要记住的三个重要观点:

  • GameObject.s.可以包含其他GameObjects。在基础级别,这种有用的行为允许组织和育种与彼此相关的GameObjects。更重要的是,对父gameObjects的更改可能会影响他们的孩子 - 更多的只是片刻。
  • 模型转换为GameObjects。 Unity为您的模型的各种部分创建GameObjects,您可以更改任何其他GameObject。
  • 层次结构中包含的所有内容都是GameObject。即使是相机和灯等的东西也是GameObjects。如果它在层次结构中,它是一个符合您的命令的GameObject。

我们的英雄是如此无聊,他正在用枪捡起鼻子。您需要让他移动,但首先,您需要重新定位您的GameObjects。

移动GameObjects.

在开始之前, 坍塌 通过单击“公开三角形”来完成所有GameObject树。

选择 Bobblearena 在层次结构中,花点时间观察 检查员,它提供有关所选GameObject的信息。

GameObject.s.包含许多组件,您可以将其视为小型功能。所有GameObjects包含一个组件包含: 转变 component.

转变组件包含GameObject的位置,旋转和比例。使用检查器,您可以将这些设置为特定数字,而不是必须依赖于您的眼睛。将鼠标悬停在轴名称上时,您将看到指针旁边出现的箭头。

按下 鼠标左键 鼠标左或向右调整这些数字。这个技巧是通过小增量调整值的简单方法。

Bobblearena 选择,集 位置 到 (6.624, 13.622, 6.35)。正如我开发这个游戏的那样,竞技场最终找到了这个职位。您可以将其放在游戏世界游戏的中心。设定 规模 到 (2.0, 2.0, 2.0)。这使玩家更多的空间来导航竞技场。

如果您缩小了场景视图,您可能会注意到空间船舶暂停在空中;大多数可能是,他对引力的假设质疑。你可以移动他的头然后他的身体,但如果你把身体部位分成一个GameObject,你的生活将更容易。

在层次结构中,单击此处 创造 按钮和选择 创建空.

一个 空的 是一个游戏,只有只有所有GameObjects所拥有的一个所需组件 - 转换组件,因为您早期学习。

笔记:您还可以通过单击创建一个空的GameObject GameObject.\创建空。这是为了诸如组件之类的其他事情。没有“首选”的方式来做事情 - 以及最适合您的工作流程的任何作品。

育儿太空海洋

在里面 Hierarchy, you’ll see your new GameObject creatively named: GameObject.. 单击GameObject. 并命名它 spacemarine..

您可以在GameObjects的名称中插入空格,例如Space Marine。但是,为了一致性,您将在本教程中使用Camel Casing进行名称。

Bobblemarine-bodyBobblearine-head. 进入 spacemarine. GameObject.

父级GameObjects时发生了一些事情。特别是,即使GameObjects不会移动,孩子们的位置值也会发生变化。此修改发生,因为GameObject位置始终相对于父GameObject。

选择 spacemarine. 在层次结构中。去吧 场景 查看和出版社 F 专注于它。机会是,竞技场正在阻止您的观点。

值得庆幸的是,您不需要在快速拨号上获得邓布利多。你可以让它消失!选择 Bobblearena 在层次结构中,在 检查员, 取消选中 GameObject左侧的框。这将使竞技场消失。

你现在应该只看到英雄。选择 spacemarine. GameObject。在检查员, 鼠标移到x位置标签 直到你看到洗涤器箭头。持有 鼠标左键 然后移动你的鼠标 左还是右。请注意所有GameObjects如何相对于父级移动。

正如您所看到的,父母确实有其优势。对任何无父母的神灵没有冒犯。

当您在另一个游戏中父致鼠标时,子GameObject的位置将不会更改。不同之处在于Shind GameObject的不同之处在于相对于父级定位。也就是说,将子组设置为(0,0,0)将孩子移动到父中心的中心,而不是游戏世界的中心。

你现在要这样做来组装你的海洋。

选择 Bobblemarine-body,在 检查员, 放 位置 到 (0, 0, 0)。去选择 Bobblearine-head. 和集合 位置 到 (1.38, 6.16, 1.05)在检查员。

恭喜!你的英雄被组装。

定位海洋

现在是时候将空间海洋放在正确的起始位置了。选择 Bobblearena,在检查员, 查看 要重新启用它的名称旁边的框。

选择 spacemarine.,以及在检查员中,设定它 位置 到 (4.9, 12.54, 5.87)。另外,设置 回转 到 (0, 0, 0)。你的海洋应该直接在舱口上结束。如果不是这种情况,那么直到案例才会随意调整值。

一旦英雄到位,按 F 在场景视图中,所以你可以看到他站得自豪。

英雄现在应该精确地定位在电梯上,准备摇滚。不幸的是,他的宏伟的摇滚党将很快降解到一个错误的狩猎中。

创建预制物

这款游戏具有令人毛骨悚然的艰巨的错误,就像英雄一样,他们由许多碎片组成。需要一些装配。

在层次结构中,单击此处 创造 按钮和选择 创建空 从下拉菜单。 单击 gameObject要命名它 外星人.

选择 外星人 在层次结构中,在检查员中,设置 位置 to: (2.9, 13.6, 8.41)。

从项目浏览器中,拖动 Bobbleenemy-Body. 来自 楷模 文件夹进入 外星人 GameObject..

Bobbleenemy-body位置 到 (0, 0, 0)。现在外星人和英雄应该在竞技场并排。

像外星人没有头部一样令人毛骨悚然,英雄需要比那些长的小框架射击更多。从项目浏览器中,拖动 Bobbleenemy-Head. 进入 外星人 GameObject.。放 位置 到 (0.26, 1.74, 0.31), 回转 到 (89.96, 0, 0) 和 规模 到 (100, 100, 100)。

这是一个激烈的小虫。他们一起去了,你可以把它们误认为是下一个巨星犯罪战斗二人类。

此时,您有一个父gameObject for Hero,另一个用于外星人。对于英雄来说,这很好,因为你只需要一个。对于外星人来说,你需要很多 - 所以,这么多。

你可以复制并粘贴外星人制作克隆,但他们都是个人。如果您需要对外星人的行为进行更改,则必须更改每个实例。

对于这种情况,最好使用a ,这是一个主副本,您可以根据需要使用尽可能多的单个副本。预制件是您的朋友,因为当您对它们的任何内容更改任何内容时,您可以对其余实例应用相同。

制作预制是简单的。选择 外星人 GameObject. 它进入了 预制文件夹 在项目浏览器中。

一些事情发生了变化。您的预制文件夹中有一个新条目,旁边是一个图标。您还会注意到层次结构中的GameObject的名称现在是蓝色的。您还会注意到该文件夹​​中已有预制物。这些是您与其余资产导入的预制。

笔记: 您不必将模型拖动到该特定文件夹中以创建预制 - 所需的所有文件夹 - 所有所需的都将拖动到GameObject 任何 项目浏览器中的文件夹。拥有预制文件夹只是良好的家务。

蓝色表示GrailObject已从预制物或模型中实例,例如Bobblearena。选择 外星人 GameObject在层次结构中,查看检查器。你会注意到一些额外的按钮。

以下是这些新按钮的细分:

  • 选择 将在项目浏览器中选择预制物。当您有大量文件并且希望轻松访问预制以进行更改时,这很有用。
  • 恢复 将撤消您对实例所做的更改。例如,您可能会在尺寸或颜色上播放,但最终有一些可怕的东西,就像一个温和的粉红色蜘蛛。您可以单击恢复按钮以还原Sanity。
  • 申请 将应用您对该实例所做的任何更改。所有预制的所有实例都将更新。

创建预制实例非常简单。选择 外星人 预制项目浏览器和 拖着它 在场景视图中的其他外星人旁边。

You can also drag an instance to the Hierarchy. As you can see, creating more aliens is as easy as dragging the 外星人 prefab 来自 Project Browser. But you don’t need droves of aliens yet, so 删除 来自层次结构的所有外星人。在层次结构中选择它,然后在键盘上删除删除,删除游戏机,(命令删除 在Mac)上,或者您可以右键单击它并选择 删除.

修复模型

下一个待办事项正在修复您的一些型号。在这种情况下,Unity导入了您的模型,但丢失了对纹理的引用。您将通过向素材添加纹理来解决此问题。

在统一中,材料是具有附加的程序的纹理,称为着色器。您可以编写自己的着色器,这超出了本教程的范围。着色器确定纹理的样子。例如,您可以编写着色器以使石头纹理看起来坚韧不拔或金属纹理看起来有光泽。值得庆幸的是,Unity伴随着自己的着色器来为您做到这一点。

在里面 楷模 项目浏览器的文件夹,拖动a Bobblearena-tolumn. 进入场景视图。你会发现一个沉闷的白色材料。

如果源包中的材料名称或纹理名称更改,Unity将丢失与该材料的连接。它试图通过为您创建新材料但没有附加纹理来解决此问题。

要解决此问题,您必须为材料分配新的纹理。在项目浏览器中,选择 楷模 子文件夹,然后扩展 Bobblearena-tolumn. 查看所有子对象。

接下来,选择 立方体_001 在项目浏览器中,并在检查员中, 单击披露三角形 为了 主要的_材料 shader.

你会看到有很多选择!这些选项配置此材料的外观。

例如,金属滑块确定材料的金属状质量。高价值金属值意味着质地将反映光的光很像金属。您将注意到大部分属性左侧的灰色框。这些盒子是纹理的。

在这种情况下,您想要的只是模型上的图像。在“项目浏览器”中,选择“纹理”文件夹。 单击并拖动Bobble Wars海洋纹理 到了 Albedo. 属性框位于着色器属性中。

Albedo.属性是纹理,但你也可以在那里放大颜色。一旦执行此操作,您的列现在将具有纹理。

竞技场也遭受了纹理问题。

在层次结构中,扩展 Bobblearena 然后扩展 地面。选择 地面_.

在检查员中,您会注意到两块材料附着在地板上。这 Bobblearena-Main_质地 材料没有分配给它的纹理。你可以告诉,因为材料预览都是白色的。

就像你为列一样,选择 纹理 项目浏览器中的文件夹。 单击并拖动Bobble Wars海洋纹理 到了 Albedo. 属性框位于着色器属性中。

你的地板现在将获得边界。怎么样式!

您还会注意到,不仅仅是一个,而且所有地板部分都收购了边界。这是因为它们都使用相同的材​​料。

添加障碍

既然您有模型修复,它是时候向竞技场添加一堆列。您将共有七列,您将使用预制物为此任务。

笔记: 每当你似乎应该做出一个游戏object的重复时,请使用预制物 - 这是另一个最佳实践。一些Unity开发人员坚持为所有人使用预制物,即使是唯一的对象。

思考是创建预制物更容易,并且要重复,它将将一组现有的GameObjects转换为预制实例。前一种方法需要最小的工作,而后者要求您将共性提取到预制物中,同时为每个实例维持任何唯一的更改。这导致了很多工作。

在层次结构中,拖动 Bobblearena-tolumn. 进入你的 预制物 文件夹将其转换为预制件。

Bobblearena-tolumn. 实例仍然在层次结构视图中选择,转到Inspector并设置 位置 到 (1.66, 12.83, 54.48)。放 规模 到 (3.5, 3.5, 3.5)。你 希望所有预制件为相同的规模,所以点击 申请 button.

现在是时候让你做出剩下的列了。

从项目到项目在场景视图中拖动一列可能有点繁琐,特别是在有几个实例。通过在层次结构中选择一个并按压力来重复列 Ctrl-D. 在PC或 命令D. on Mac.

共创建六个重复项,并给予它们以下位置:

  • 第1列:(44.69, 12.83, 28.25)
  • 第2栏:(42.10, 12.83, 30.14)
  • 第3栏:(8.29, 12.83, 63.04)
  • 第4栏:(80.40, 12.83, 13.65)
  • 第5栏:(91.79, 12.83, 13.65)
  • 第6栏:(48.69, 12.83, 33.74)

您现在应该在竞技场中有七列。

竞技场看起来很好,但是层次结构有点凌乱。点击来整理它 创建按钮 并选择 创建空。将GameObject重命名为 并将每个列拖入其中。

您会注意到列具有类似的名称,其中包含唯一的数字。由于它们基本上充当一个实体,因此他们分享名称很好。持有 转移 钥匙 选择所有列 在层次结构中。在检查员, 更改名称柱子.

笔记: 正如您所看到的,可以一次为一堆GameObjects更改一个共同属性。

创造产卵点

除非他们以质量批量生产,否则嗜血外星人是什么好的?在本节中,您将建立产卵点,以产生敌人,以保持我们的英雄对他的脚趾。

到目前为止,您可以使用您希望播放器查看的GameObjects组装游戏。谈到产卵点时,你不希望有人看到它们。然而,重要的是 know where they lay.

您可以创建一个3D立方体并将其放入场景中以表示生成点,然后在游戏开始时删除它,但这是一种笨重的方法。 Unity提供了一种更简单的机制 标签,这是在场景视图中可见的GameObjects,但在游戏过程中不可见。要在操作中查看它们,您将创建一堆类似于您创建列的不同产卵点。

点击 创造 层次结构中的按钮并选择 创建空。给它名字 产卵 和集合 位置 到 (5.44, 13.69, 90.30)。

在检查员, 点击彩色立方体 在复选标记旁边。将出现一个与所有不同标签样式的弹出。点击 蓝色胶囊.

看看你的场景视图;你会看到它已经用产卵点注释了。

您可能无法在场景中看到标签。如果是这种情况,您需要增加标签的大小。为此,请单击 Gizmos. 在场景视图中的按钮和 3d图标滑块 最右边。这将增加标签的大小,因此您可以在缩小时看到它们。

您需要创建10个更多的产卵点。通过执行以下操作更容易地放置:

  1. 在场景视图中, 点击 在这一点 中心立方体场景gizmo. 切换到等距模式的场景视图。
  2. 点击 绿色y轴箭头 所以你瞧不起现场。

现在继续复制和重新定位10个更多的产卵点。

不要担心如果你没有得到它们完全相同的 - 游戏设计更像是一个艺术而不是科学!

完成后,单击 创造 层次结构中的按钮,选择 创建空 并命名它 产卵Points.。将所有生物点拖入其中。 批量重命名 他们喜欢你用列 产卵.

恭喜!您的游戏现在已正确设置。确保 保存!

然后去哪儿?

在这一点上,你有你的英雄,他的敌人是外星人和竞技场,他们将与死亡进行战斗。你甚至为小型箱子创造了产卵点。当你设置的东西时,你了解到:

  • GameObject.s. 为什么他们在与团结合作时非常重要。
  • 预制物 因为当您想要创建单个GameObject的许多实例时。
  • 标签 帮助您注释游戏开发而不干扰游戏。

你的游戏中仍然没有动作,但这很好。你准备学习如何让你的游戏生命的呼吸并带走它(通过太空船上的宏伟的机枪)。

在本教程迷你系列的下一部分中,您将为此游戏添加一些操作,了解如何与组件合作,让您的太空海洋火灾遗嘱!

如果您享受本辅导系列并希望了解更多,您应该肯定退房 通过教程的团结游戏.

这本书教你在统一中建造游戏需要了解的一切,无论您是初学者还是更有经验的游戏开发人员。在这本书中,你将建造四场伟大的比赛:

  • 一个3d双棍子射手
  • 经典的2D平台
  • 3D塔防御游戏(虚拟现实模式!)
  • 第一人称射手

在这里查看这本书的拖车:

如果您对本教程有疑问或意见,请在下面的讨论中留下它们!

平均评级

4.3/5

为此内容添加评级

7 ratings

更像这样的

贡献者

注释