【问题标题】:How to avoid this Unity Prefab Modifications behavior?如何避免这种 Unity Prefab Modifications 行为?
【发布时间】:2020-10-21 22:13:01
【问题描述】:

描述:

有一个带有列表数据的组件:

public class TestPrefab : MonoBehaviour
{
    public List<string> DataList;
}

然后我用这个组件创建一个预制件,如下所示:

然后我将预制件拖到场景中,像这样修改组件数据(“Data1”=>“Data1_Modified”)(我不会应用更改,因为我只想将其保留为预制件实例,它有一些变化来自原始预制)

然后回到预制阶段,删除第一条数据:

那么场景中的预制实例就到了:

这是怎么发生的?

unity 像这样保存这个修改:
所以unity只需将列表中的第一个数据更改为“Data1_Modified”,而不是将“Data1”更改为“Data1_Modified”。

问题:

有什么优雅的方法可以避免这种意外行为吗?

【问题讨论】:

  • 您是否为此使用了自定义编辑器?但是,是的,Unity 确实在存储覆盖的位置,而不是数据补丁。
  • @Immersive 是的,我用“Odin”来增强inspector,和这个问题无关。
  • 一切顺利。看起来像奥丁,确实没问题,但想确定一下????

标签: unity3d


【解决方案1】:

你应该在预制件上应用这个编辑,所以在你完成检查器菜单后按 overrides 然后 apply all


预制件是预制对象,因此要从场景窗口更新它们,您需要告诉编辑器将您的更改应用到预制件上。

【讨论】:

  • OP 已经对他希望保持在本地的预制件进行了本地覆盖,然后他对预制件进行了更改。问题是当它覆盖的列表项被删除时,为什么本地覆盖仍然存在。答案是 Unity 只跟踪覆盖的位置,而不是被覆盖的特定项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
相关资源
最近更新 更多