Unity,从另一个预制件中生成一个预制件

时间:2017-05-12 05:49:37

标签: unity3d

我是Unity的新手。我有一个不可见的GameObject,称它为A,只有一个脚本,它多次实例化一个预制B。我需要B的产生克隆来引用A,我已经知道为了使它能够工作,A必须是一个预制本身(如果我错了,请纠正我)产生的B对象会对鼠标点击做出反应并调用A的方法问题是,在这个被调用的A方法中,A本身的变量具有我不期望的值,例如在Start()中初始化为0并且从未使用的某个变量具有的值12.似乎每个衍生对象B都有对其“自己”A的引用,而A的变量具有随机值。我错过了什么?

1 个答案:

答案 0 :(得分:3)

  

为了使这个工作,A必须是一个预制本身(如果我错了,请纠正我)

我假设您要在预制件B的脚本中将相关字段设置为A预制件,这不是您想要的。 A根本不必是预制件

预制件是一个序列化的GameObject,它包含特定的共享默认值,可通过编辑器和编辑器/游戏内脚本轻松管理GameObject。在处理大量类似物体时使用预制件;每个预制实例将与另一个预制实例类似,但少数修改后的属性除外。这允许在单击中对预制实例进行大规模实例化修改。例如,将枪弹射弹对象存储为预制件允许您通过单击修改所有枪弹的默认大小,同时允许基于每个实例进行属性自定义。您可以将预制件视为可用于实例化GameObject的模板。

通过B上的脚本(以下称为A)生成预制件ScriptA的实例时,只需在生成的实例上的脚本上设置必填字段的B(以下简称ScriptB)到gameObject的{​​{1}}(或其他)字段,如下所示:

ScriptA