Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 为什么Unity不允许我对预置应用某些更改?_Unity3d - Fatal编程技术网

Unity3d 为什么Unity不允许我对预置应用某些更改?

Unity3d 为什么Unity不允许我对预置应用某些更改?,unity3d,Unity3d,我在资源托盘中有一个名为square的预置,我将其拖动到场景中,以在层次结构中创建一个square预置的实例。它以蓝色高亮显示,并且在属性中有选择、还原和应用按钮。如果我移动/调整实例大小,然后按apply,则更改将应用于预设 但是,square预置有一个带有公共游戏对象的脚本。我将游戏对象从层次结构拖到实例属性选项卡中的插槽中,显示脚本现在正在引用实际的游戏对象。但是,当我按下apply时,这个更改不会应用到预置,预置的脚本仍然没有引用任何实际的游戏对象。将应用对预制件的所有其他更改 我已经尝

我在资源托盘中有一个名为square的预置,我将其拖动到场景中,以在层次结构中创建一个square预置的实例。它以蓝色高亮显示,并且在属性中有选择、还原和应用按钮。如果我移动/调整实例大小,然后按apply,则更改将应用于预设

但是,square预置有一个带有公共游戏对象的脚本。我将游戏对象从层次结构拖到实例属性选项卡中的插槽中,显示脚本现在正在引用实际的游戏对象。但是,当我按下apply时,这个更改不会应用到预置,预置的脚本仍然没有引用任何实际的游戏对象。将应用对预制件的所有其他更改

我已经尝试将实例拖到资源托盘中,以创建一个带有更改的新预制,但是,一旦我这样做,脚本就不再引用游戏对象


我不应该在每次向脚本添加公共变量时都创建一个全新的预置,那么为什么我不能应用此更改?

好的,您不能将实例拖动到预置中。根据经验法则,使用实例保留实例,使用预制保留预制。
相反,当这个实例被实例化时,我会使用findobjectoftype或gameobject.find之类的方法从预置中查找该实例。如果您想让我展开答案,请告诉我:预置只能引用其他预置,因为可能没有实例。将实际游戏对象制作成预置实例,并将预置应用到脚本中。预置是资产。您只能将其他资产引用到资产,而不能引用资产的实例。

但我肯定可以按apply。我不需要脚本来更改预设。您不能将预设资源与场景中的对象链接。假设您创建了一个新场景场景B,并将预置拖放到此场景中,您将拥有一个位于场景a中的对象引用,这是没有意义的。如果您尝试将实例引用拖动到预置中。想象一下,例如,您试图在另一个场景中实例化该预制,但该场景中没有您想要引用的实例,会发生什么?您可以将预制版本应用于该预制,但预制版本仍然是一项资产,而不是场景中的对象。