本期我们继续为大家进行小型太空射击游戏的后续教程
本篇教程重点
创建您的第一个实例
使用GameObjects
使用预制件
文章末尾可免费获取教程源代码
小型太空射击游戏教程篇幅较长,分为四篇,本篇为第二篇,有小伙伴没有看【小型太空射击游戏(一)】可以先去看一下
没有玩家的游戏是什么?从您先前下载的样本文件中查看models / player的内部。您会看到一个FBX文件以及一些图像文件。
FBX文件包含创建3D模型所需的所有数据,以及动画等其他内容。您将在本Unity教程中使用的播放器文件是ComboMash为他的游戏Hextraction创建的。
选择player文件夹中的所有文件,并将它们拖到“ 项目”窗口中“ Assets”文件夹的顶部。您将看到以下对话框:
一些图像文件传达了Unity的其他信息,但以标准图像格式保存。在这种情况下,p_pod_normal.jpg定义了表面的深度,无需提供其他几何图形即可提供表面照明信息。这称为 normal map.
但是,Unity认为它正在处理常规图像。单击立即Fix now以指示Unity将此文件视为法线贴图。
默认情况下,Unity将随您的模型一起导入摄像机。对于此游戏,您只需要一个摄像头:主摄像头。在“ 项目”窗口中选择hextraction_pod。在Inspector窗口中,确保选择了“ Model”选项卡。取消选中“Import Cameras.”
完成后,单击“Apply ”按钮。
导入播放器文件后,将hextraction_pod资产从“ 项目”窗口拖动到“ Scene view.”视图中。
很棒–您已经创建了模型的第一个 instance。Unity正确导入了纹理并将其应用于模型。
您还会注意到,Hierarchy现在列出了新的GameObject。
如本系列教程的第1部分所述,您的层次结构中的所有内容都是一种GameObject。GameObject本身包含所谓的transform,它具有有关GameObject的位置,比例和旋转的信息。
您可以通过向其添加组件来自定义GameObject。您可以将组件视为代表GameObject的行为和外观。
例如,您可以添加一个照明组件来照明您的GameObject。您可以添加一个音频源,以使您的GameObject发出声音。或者,您甚至可以将自己的组件编写为脚本并将其附加到GameObjects。
GameObjects也可以充当容器。按住Alt键,然后单击“disclosure triangle ”中hextraction_pod左侧的Hierarchy。这将扩展GameObject及其下面的所有级别。您将看到以下GameObjects集合:
其中许多是空的GameObject,它们代表模型的结构。导入模型时,Unity会创建这些GameObject。其他游戏对象(例如pod_mesh的子代)包含诸如Skinned Mesh Renderer之类的组件,以在屏幕上显示几何图形。
您会注意到,层次结构中的某些GameObjects用黑色标记,而另一些则用蓝色标记。
黑色表示它是标准的GameObject。蓝色文本告诉您GameObject是模型的实例,或者是否已通过Prefab连接到其他对象。有时,GameObjects也变成棕色。这意味着他们已经失去了预制连接。
您可以通过其图标告诉您模型的实例。
通常,您不想使用模型实例。最好使用预制件。预制件可以保存GameObject,因此可以使用代码或将新实例拖动到“场景”视图中轻松地复制它们。
预制件有点像使用砂模。除此以外,所有预制实例均已连接。更改Prefab时,实例也会更改。
在“场景”视图中拥有预制实例后,即可根据需要自定义它。有时您可能想要将这些更改推送到现有的预制件上(因为您喜欢它们),或者将实例重置为原始预制件的状态(因为您搞砸了)。
要创建一个预制,你从拖动游戏对象 Hierarchy和进入 Project window.
执行此操作时,将出现一个对话框,询问您是要创建新的预制件还是预制件的变体。
由于您没有预制件,因此单击Original Prefab button.
您会注意到您的图标将完全变成蓝色。这意味着您正在使用预制实例。
从层次结构中选择hextraction_pod。在“ Inspector ”窗口中,您将看到两个按钮:Open ”和“ Select”。还有一个名为Overrides的下拉列表:
Open可让您打开预制件并进行编辑。这使您可以只关注预制件。层次结构将仅显示选定的预制件。要返回正常编辑,请单击“Hierarchy”中的后退箭头。
选择可在项目窗口中找到预制件。当您将“预制件”放到“项目”窗口中的复杂文件夹结构中时,此功能特别有用。现在尝试一下,看看会发生什么。
当您对Prefab进行更改时,即在对Prefab的单个实例进行更改。用Unity语言来说,您将覆盖Prefab的各个部分。您可以将这些更改应用于其他预制件,还原更改,也可以将其保留不变。这是通过按“ Overrides ”下拉列表来完成的。
当前,玩家的船在其下方有一个平铺的网格,看起来有些奇怪。首先,您需要编辑预制件。
选择预制件,然后在“ Inspector”窗口中,单击“ Open”按钮。然后,从Hierarchy中选择tile_reference GameObject。这是hextraction_pod GameObject的直接子代。
在Windows上按Delete键或在macOS 上按Cmd-Delete删除网格。单击层次结构中的后退箭头以退出预制编辑。
退出预制模式时,系统将提示您保存更改。点击 Save.
接下来,在“ Hierarchy ”窗口中右键单击hextraction_pod,从出现的下拉菜单中选择“ 重命名 ”,然后将GameObject重命名为Spaceship。它应如下所示:
将GameObject拖到“项目”窗口中,即可将其转换为预制件,而无需您费力。通过将其从“项目”窗口拖到“场景”视图中,可以创建任意数量的太空飞船实例。
当前,这仅复制模型,但稍后它可能包含脚本,音频设置等。如您所见,预制件确实很有帮助。
(赶快来我那不可阻挡的宇宙飞船吧!哈哈哈!)
本期介绍就到这里,下期我们将对控制相机、物理入门等继续讲解
扫码领取素材和源码