Unity编辑器:2019.2.0f1、2018.4.16f1、2017.4.37f1
获取 Mono.Data.Sqlite.dll
想在 Unity 中使用 Sqlite 需要使用 Mono.Data.Sqlite.dll
,该库为C# API,可直接从 Unity 客户端中获取
以 Mac 为例,大部分网上提供的目录为 /Unity.app/Contents/MonoBleedingEdge/lib/mono/2.0-api/Mono.Data.Sqlite.dll
但实际使用会发现该目录下的 dll 会出现版本无法兼容、提示加载失败等问题
后发现 /Unity.app/Contents/Mono/lib/mono/2.0/Mono.Data.Sqlite.dll
更加稳定,经测试 2019.2.0f1、2018.4.16f1、2017.4.37f1 之间可互相使用,无异常
另外其他博文有提到不同版本 Unity 会包含不同版本的 Mono.Data.Sqlite.dll
,会引发兼容性问题,使用时注意 PlayerSetting 中 Api Compatibility Level
需选择 .NET Standard 2.0
,但本文测试设置为 .NET 4.x
也能正常运行
iOS 与 macOS 环境配置
无需额外配置,直接使用即可
Android 环境配置
Android 还需 libsqlite3.so
,该库为 sqlite3 由 C 编译得来,为适配不同的 Android 架构可下载
armeabi-v7a 放入 Assets/Plugins/Android/libs/armeabi-v7a目录
arm64-v8a 放入 Assets/Plugins/Android/libs/arm64-v8a目录
x86 放入 Assets/Plugins/Android/libs/x86目录
x86_64 
放入 Assets/Plugins/Android/libs/x86_64目录
对应 so 文件放入目录后选中,于 Inspector 的 platform 仅选择 Android,架构根据版本选择
Windows 环境配置
Windows 需额外添加 sqlite3.dll 可从官网下载
疑问
System.Data.dll
没用到
网上很多文章(甚至 Xamarin 官方 )提到需将与 Mono.Data.Sqlite
同目录下的 System.Data.dll
一同添加到 Plugin 中(或全平台或仅 Android 平台)以保证版本同一,但实际测试发现,没有导入也可正常运行
sqlite3.dll
仅用于 Windows 平台
另有说法,Android 需添加 sqlite3.dll
到 Plugin,但实际测试没添加也能正常运行
但是 Android需要添加 libsqlite3.os库文件到Plugin/Android/这里 ,如下图
在Unity3D中的使用
1.准备工作:
1.首先在Plugins文件夹下放入三个dll,一个.so他们分别是
sqlLite3: 从官网上下载你的Unity3D对应的版本(x86 -32) https://www.sqlite.org/download.html
拖入unity3D后Apply
从自己的安装目录中去搜索
Mono.Data.Sqlite
Editor\Data\Mono\lib\mono\2.0
Systen.Data
也在Editor\Data\Mono\lib\mono\2.0
libsqlite3.so
(不想自己下源码编译的,可以用别人的,比较新的推介:github,https://github.com/Busta117/SQLiteUnityKit)
下载libsqlite3.so到assets-plugins-android下面
2.特别注意:
异常:DllNotFoundException
PC: Mono.Data.Sqlite 下载64位
Android平台:下载libsqlite3.so到assets-plugins-android下面
异常:System.InvalidCastException: Specified cast is not valid.
要解决这个问题:采用Convert.ToInt64既可以解决。 这个convert.to方法为我们提供了快速精确或
将sqlite3_column_int 替换为 sqlite3_column_int64
Original: https://blog.csdn.net/weixin_39114763/article/details/120668207
Author: AD_喵了个咪
Title: Unity工具—Mono.Data.Sqlite 使用(集成SQLite数据库)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816284/
转载文章受原作者版权保护。转载请注明原作者出处!