- 您有SQL专业知识吗?
- 没有
- …
对于任何自重的博客作者,创建一个有关在Unity中设置SQLite的帖子都是一个值得的目标。尽管如此,由于某种原因,本文介绍了社区中流行的第三方产品提供的数据存储方法,并假定技术说明使您考虑了项目的体系结构。同样,在互联网上可以很容易地找到关于设置任何所述电路的说明。
显然为什么游戏会保存数据,所以让我们快速对其进行描述。
游戏是出于某种目的更改源数据的动作。
社区通常认为-在Unity中创建源数据的方法是准备Prefabs,ScriptableObjects和Scenes的集合以及用于在编辑器中进行管理的工具。 不需要其他配置类型。
Prefabs,ScriptedObjects和Scenes的更改无法保存,因此,重新加载场景后,所有内容将分别返回其原始状态,任何需要保存的状态都需要一些数据存储。示例:如果可以将表中的搅拌器放入库存,则必须保存有关它的信息。
在Unity中存储数据的唯一现成方法是PlayerPrefs。 这是社区有关存储内容的答案中的一种普遍解决方案。
优点:
弊:
结果,这个名字不言而喻。 它是用于存储设置和其他不是很大且不重要的信息的工具。
所有其他方法都需要序列化,让我们概述其中最受欢迎的方法:
显而易见的方法很容易实现,问题始于大量文件,可管理性和性能都在下降。
唯一的候选人将是:
资产存储中还有其他选项,包括名称中的首字母缩写SQL,但它们看起来非常像同一SQLite上的包装器。有一些ORM解决方案可简化生活,例如sqlite-net。因此,如果需要关系数据库,那么寻找其他东西就没有意义。
过去十年中的热门话题,因此有多种选择:
当前,选择NoSql解决方案已成为标准,几乎没有人提供不使用它们的借口。显然,SQLite似乎是这里最受欢迎的解决方案,而其余解决方案的渗透率不到1%。
最近,有很多关于Realm.io和类似解决方案的提及,这些解决方案使您可以配置本地和外部数据库的同步,从而省去了开发人员的大部分工作。不幸的是,尽管Realm.io声称支持.Net Standard 2.0,但它不想在最新版本的Unity下启动,因此仍可以期望其新所有者MongoDb将注意力转向游戏行业。
另类:
当然,这些是用于企业级任务以及下一个Hearthstone并理解为什么需要它的人的解决方案。
一方面,本文不应该给出杀死所有项目的灵丹妙药。另一方面,社区提供的选项的选择不是那么广泛,并且一切都通过binary/json+file/sqlite解决方案以旧方式解决。 由于其他性能问题,社区似乎在这个主题上是如此容易。 但是,如果您想冒险,可以使用LiteDb和FlatBuffers。 我一定会尝试,但这将是一个完全不同的职位。下次见!^_^