【发布时间】:2018-07-07 10:16:42
【问题描述】:
我目前正在使用 Unity 开发一款游戏,但我很难弄清楚如何管理不同的图块类型。
由于有很多不同类型的图块(容器、提取器、研究设备等),我需要一种以易于扩展的方式保存、加载和访问这些数据的方法。
我的第一个想法是使用继承:例如,作为容器 tile 的所有组件都派生自一个名为 ContainerTile 的类,该类派生自 TileBehaviour。如果玩家破坏了容器瓦片,播放器脚本将检查目标块上是否有任何 TileBehaviour 组件,然后使用破坏函数。如果他想打开一个容器,脚本将使用检查目标块上是否有任何ContainerTIle组件并使用打开功能。
这样做的主要缺陷是保存数据不能以这种方式工作:当将所有 containerTile 数据保存为 TileBehaviour 数据时,它只保存属于 tileBehaviour 类的数据,以及所有其他数据(比如哪些项目在容器)丢失了。
谁能告诉我我应该怎么做?
谢谢。
【问题讨论】:
-
顺便说一句,我不想简单地遍历每一种类型的组件,然后像这样保存/加载数据。
-
如果你想通过继承使用序列化,你需要使用
ScriptableObject(并自己实现更多),例如:answers.unity.com/questions/245604/…