在处理 Unity 项目时,可能会花费大量时间创建复杂的游戏对象,如果下次需要再次使用它们?是不是会造成严重浪费时间,那么在 Unity 中解决这种方式是通过预制件。

预制件可以解决在场景中重复添加多个组件和脚本,可以将这些对象一遍又一遍地重复使用,让场景搭建工作爽到极点。
那什么是预制件呢?预制件是一种将游戏对象存储在项目面板中的方法,以便可以通过代码再次使用它,或者只是将其拖放到场景面板中。
事实上,预制件比你想象中的要强大,它们可用于存储游戏对象和组件的层次结构,并通过一次调用将它们实例化。
如果你需要在 Unity 中创建一个新的预制件,在项目面板新建一个空的游戏对象,然后将所有需要的游戏对象拖拽至该对象下。

然后将游戏对象从 Hierarchy 视图拖放到资产中,你会发现在 Hierarchy 颜色将从灰色变为蓝色。
那么这就是游戏对象的保存版本,可以拖动预制件放到场景视图中,而且可以一遍又一遍地执行此操作以创建超级多的实例。
在 Inspector 面板顶部有新的可用按钮行,打开、选择、还原和应用。

选择按钮将选择在项目面板中实例化此游戏对象的原始预制件,如果对此实例进行了任何更改并想要恢复到预制件,则使用还原按钮,如果对要应用到预制件的特定实例进行了更改,则使用应用按钮。

由于预制件是从它实例化的对象的父级,因此可以在项目面板中选择预制件并更改其属性,这将更改从该预制件实例化的所有对象的属性。
当从预制件实例化的游戏对象在 Inspector 面板中更改其参数时,参数将以粗体文本显示。

只是为了说明该参数与预制件中的值不同步,可以单击恢复重新分配预制件中的值或单击应用保存对预制件的更改。
无论哪种方式,参数都不会以粗体文本显示,除非它们包含预制件外部的游戏对象。
!!重要的是要了解只有预制件能够定位的项目才能存储为预制件的参数。
例如…
如果场景中有一个灯光对象,将其添加到从预制件实例化的对象上的公共脚本变量中,则该特定游戏对象可以看到灯光,但预制件的任何未来实例化都不会知道要引用哪个灯光。
所以具有非公共脚本变量的游戏对象,如需重复使用都应当转换为预制件。
最后,相信大家已经理解了 Unity 预制件的神奇之处在哪了,将它当做一种动画集或 Maya 的组都行,将所有可重用的动画/模型放在一个层/组里面,之后可以随时随地的重复使用。
只是…在游戏引擎里面,形容它为模板可能会更加合适吧。