【问题标题】:Why isn't Unity allowing me to apply certain changes to a prefab?为什么 Unity 不允许我对预制件应用某些更改?
【发布时间】:2017-06-05 09:24:09
【问题描述】:

我在资源托盘中有一个名为 square 的预制件,我将它拖到场景中以创建方形预制件的实例(在层次结构中,它以蓝色突出显示,并且在属性中具有选择、恢复和应用按钮)。如果我移动/调整实例大小然后按应用,则更改将应用​​于预制件。

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

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

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

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    好吧,你不能真正将实例拖到预制件上。根据经验,将实例与实例一起保存,将预制件与预制件一起保存。 当实例化这个实例时,我会从预制件中找到实例,使用类似 findobjectoftype 或 gameobject.find 的方法。如果您希望我扩展答案,请告诉我

    【讨论】:

    • 但我当然应该可以按应用。我不需要脚本来更改预制件。
    • 您无法将 Prefab 资源与场景中的对象链接。假设您创建了一个新场景(场景 B)并将预制件拖放到该场景中,您将获得一个位于场景 A 中的对象的引用,这是没有意义的。
    • 如果您尝试将实例的引用拖到预制件上。想象一下,例如,您试图在没有获得您想要引用的实例的不同场景中实例化该预制件,会发生什么?
    【解决方案2】:

    已解决:预制件只能引用其他预制件,因为可能没有实例。将实际的游戏对象制作成预制件的实例并将预制件应用于脚本

    【讨论】:

    • 您可以将预制版本应用到预制,但预制版本仍然是资产,而不是场景中的对象。
    【解决方案3】:

    预制件是资产。您只能将其他资产引用到资产,而不能引用资产的实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 2016-06-09
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      相关资源
      最近更新 更多