游戏开发中经常要保存本地数据,SQLite相对于JSON有更好的性能,当修改部分数据时,不用像JSON一样序列化整个模块。
但是貌似网上关于Unity中使用SQLite的资料较少,而且都比较老。
目前找到的方案有三种:
我最终使用了比较均衡的方案3
1. SQLiteUnityKit
此方案使用了DllImport
的方式调用SQLite库提供的C函数。
优点:执行效率较高。
缺点:但是使用中发现,在添加TEXT
类型数据时,特殊字符(例如反单引号和各种转义字符)会导致SQL理解语义错误,需要预先手动处理文本,例如将文本中/
替换为//
。
2. SQLite4Unity3d
此方案是基于sqlite-net,使用反射可以直接读取C#对象。
优点:数据对象直接用C#语言编写,方便且直观。
缺点:C#反射的性能相对较差。
3. Mono.Data.Sqlite
配置方法原文:https://stackoverflow.com/questions/50753569/setup-database-sqlite-for-unity
不同平台的sqlite3.dll文件可以去SQLite4Unity3d中拿.
原文提供了完整的配置和使用方式,很赞。Mono.Data.Sqlite属于Xamarin Mono的一部分,十分成熟稳定。
优点:有良好的跨平台兼容性,比方案2的反射方法更好的性能,也没有方案1的语义问题。