Unity 编辑器与预制件冲突

Unity editor conflicts with prefabs

所以我正在为 Unity 中的建筑物设计这个六边形网格系统。我制作了一个二维布尔数组来设置建筑物将占据网格的哪个区域。我做了一个自定义编辑器,所以我可以编辑它。 在我将其设置为预制件之前,一切都完美无缺。然后设置区域的网格将重置。有什么办法可以解决这个问题吗?

P. S. 奇怪的是,这是我在同一个脚本中设置滑块的时候。 Unity 可以毫无问题地记住滑块的数据。但是在预制件中更改它会导致它重置

我使用的是 Unity 版本 2018.3.0f2

自定义编辑器脚本有在播放、实例化或构建时丢失所有数据的习惯。您可以在编辑时保存数据,并在查看时将其反序列化回界面。 在声明中使用带有 [serializeField] 的自定义 [system.serializable] 类 会容易得多。 buildingRows 列表 类,由建筑物列表 类 组成,在您的情况下会很好。它只是看起来不像你想要的那么漂亮。

一个巧妙的解决方法是在检查器中使用 [mutiline] 字符串文本输入字段。 例如,建筑物可以是字符 "o" 或 "x"。当按换行符拆分时,这本质上是一个二维字符数组。 像这样:

o o o o x o o o o o 
o x o o x x o o o x 
o o o o o x o x x x 
o o o x o o o o o o 
o o o x o o o x o o 
o o o x o o o x o o 
o o o x o o o x o o 
x x x x o o o x o o 
x x x o o o o x o o 
o o o o o o o o o o