首页 理论教育虚拟现实预设(Prefab)

虚拟现实预设(Prefab)

【摘要】:下面是精确的步骤:●在工程视图中,选择一个你要放置预设的文件夹●从主菜单中选择Assets→Create→Prefab,或者从工程视图的上下文菜单中选择Create→Prefab●命名该预设●在层次视图中,选择你要放入预设的游戏物体●将它们从层次使用中拖放到工程视图中在你执行了上述步骤后,游戏物体和它的子物体都将被拷贝到预设中。从菜单中选择Assets→Create→Prefab,或者从工程视图的上下文菜单中选择Create→Prefab●从层次视图中拖动该物体到预设上。

预设是一个存储在工程视图中可重用的游戏物体。预设可以被插入到任意数量的场景中,并可多次出现在同一场景中。当你添加一个预设到场景中,你就创建了一个它的实例。所有的预设实例都与原始的预设相关联并且本质上是它的一个克隆。

不论在你的工程中存在多少实例,当你对预设作了任何改变后你将看到这种改变被应用到所有的实例上。不论你的预设是单一的一个游戏物体或者是一组游戏物体,在预设的变换层次中所作的任何改变都建碑应用到它的实例上。为了创建预设,你需要一个新的空预设,如图7-36所示。这个空预设不包含任何物体,并且你不能创建它的一个实例。将一个新的预设想象为一个空的容器,等待使用游戏物体数据来填充。

图7-36 创建新的空预设

一个新的空预设,它不能被实例化,除非你使用游戏物体来填充它

为了填充预设,你需要使用在场景中已经创建的游戏物体。下面是精确的步骤:

●在工程视图中,选择一个你要放置预设的文件夹

●从主菜单中选择Assets→Create→Prefab,或者从工程视图的上下文菜单中选择Create→Prefab●命名该预设

●在层次视图(Hierarchy view)中,选择你要放入预设的游戏物体

●将它们从层次使用中拖放到工程视图中在你执行了上述步骤后,游戏物体和它的子物体都将被拷贝到预设中。现在,预设可以在多个实例中被重用。在层次中的原始物体现在已经成了该预设的一个实例。创建更多预设的实例是非常简单的。

图7-37 游戏物体被连接到(linked)预设后,工程视图中将使用蓝色的文本来显示

实例化预设为了在当前场景中创建一个预设的实例,从工程视图中拖动预设到场景(Scene)或层次视图中。这将从预设中拷贝所有父物体和所有的子物体。这些游戏物体被连接到(linked)预设,在工程视图中将使用蓝色的文本来显示它们,如图7-37。

其中三个物体是预设的实例

继承继承意味着当预设改变时,这些改变也将被应用到所有与之相连的物体上。例如,如果你添加一个脚本到一个预设,那么所有该预设的实例都将包含该脚本。然而你也可以修改单个实例的属性而不会破坏与预设的联系。一个链接物体检视面板(Inspector)中的所有公有属性都有一个复选框。这个复选框是一个重载标记(override flag)。如果该属性的重载标记被启用,表示该属性将不会受到预设改变的影响。

简单来说,这允许你修改实例物体并使得它们不同于它们的预设,而且又不会破坏它与预设之间的联系。

当你在检视面板中修改一个属性的时候,该属性的重载标记会自动启用。任何对已有属性的改变都不会打断与预设的联系。然而有一些改动将断开它,下面是保持预设连接的基本规则:

不能添加一个新的组件到一个实例上(www.chuimin.cn)

不能从一个实例上移除一个组件

不能使用其他游戏物体作为实例的子物体如果你这样做,你将看到一个警告消息出现并要求你确认。当一个实例与预设断开后,对预设的修改将不会影响到这个游戏物体。

如果你特意或是意外地断开了实例的连接,你可以应用你的改变到预设并重新建立该连接。这将使得预设和所有的实例都发生改变。

应用改变创建或编辑一个复杂预设的时候,你可以非常容易的在场景中实例化它们,编辑实例,并应用改变到预设。这种工作方式将允许你在场景视图中查看并修改预设。一旦你修改完成,选择该实例物体的根并从菜单中选择GameObject→Apply changes to Prefab。所有的改变都被拷贝到预设中,并应用到每个场景中所有的实例上。

将物体连接到预设可以将预设应用于现有的没有连接的物体上。这将添加所有该物体没有的组件到物体上并将其连接到预设。在某些场合这是非常有用的。为了连接任何已有的物体到到预设,按住Option并将预设从工程视图中拖放到层次视图的物体上。这个游戏物体将成为该预设的一个实例。这个操作不会改变预设本身,但是会在你刚连接的物体上添加或移除一些组件和子游戏物体。导入预设

图7-38 资源文件图示

当你放置了一个网格资源到你的资源文件夹中时,Unity将自动导入该文件并生成一些看起来与预设相似东西。但它们并不是预设,这只是简单的资源文件,如图7-38所示。

注意资源文件图标与预设图标是有点不同的

这个资源在场景中作为一个游戏物体被初始化。可以在该游戏物体上添加或移除组件。然而你不能将任何改变应用到资源自身上因为这需要添加一些数据到该资源物体上!如果要创建需要重用的物体,你应该将资源实例作为预设。

当你已经创建了一个资源实例,可以创建一个新的空预设并拖动游戏物体到该预设上。现在你拥有了一个连接到该物体的标准预设。

下面给出了一些详细的步骤:

●从工程视图中拖动一个资源文件到场景或层次视图中。

●修改该资源(例如,添加脚本,子物体,组件等等)

●创建一个新的空预设。从菜单中选择Assets→Create→Prefab,或者从工程视图的上下文菜单中选择Create→Prefab

●从层次视图中拖动该物体到预设上。