Unity工具—Mono.Data.Sqlite 使用(集成SQLite数据库)

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,架构根据版本选择

Unity工具—Mono.Data.Sqlite 使用(集成SQLite数据库)

Unity工具—Mono.Data.Sqlite 使用(集成SQLite数据库)

Unity工具—Mono.Data.Sqlite 使用(集成SQLite数据库)

Windows 环境配置

Windows 需额外添加 sqlite3.dll 可从官网下载

Unity工具—Mono.Data.Sqlite 使用(集成SQLite数据库)

Unity工具—Mono.Data.Sqlite 使用(集成SQLite数据库)

疑问

  1. System.Data.dll 没用到

网上很多文章(甚至 Xamarin 官方 )提到需将与 Mono.Data.Sqlite 同目录下的 System.Data.dll 一同添加到 Plugin 中(或全平台或仅 Android 平台)以保证版本同一,但实际测试发现,没有导入也可正常运行

  1. 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

Unity工具—Mono.Data.Sqlite 使用(集成SQLite数据库)

Original: https://blog.csdn.net/weixin_39114763/article/details/120668207
Author: AD_喵了个咪
Title: Unity工具—Mono.Data.Sqlite 使用(集成SQLite数据库)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816284/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球