《游戏AI程序设计实战》作者

Github:onelei - Overview

Unity数据存储Sqlite的使用

是什么

Sqlite是是一个SQL数据库引擎。

为什么

之前的项目中基本都是使用PlayerPrefs来存储数据,但是由于后期数据结构复杂的情况下,比如存储一个List的结构数据,通常是自己控制写法添加逗号,分号来将数据分隔开。如果哪里写错了,整个数据就会错位导致数据错乱,维护起来非常麻烦。由于服务器的数据存储都是使用数据库SQL,因此打算在前端也使用数据库存储数据。

怎么做

前期准备

要在Unity中使用Sqlite需要将Mono.Data.Sqlite.dll,System.Data.dll, Sqlite3.dll 三个文件放入Plugins文件夹下。

Mono.Data.Sqlite.dll

在Unity的Editor安装目录下“ EditorDataMonolibmono2.0 Mono.Data.Sqlite.dll”

System.Data.dll

在Unity的Editor安装目录下“ EditorDataMonolibmono2.0 System.Data.dll”

Sqlite3.dll

在Sqlite的官网下载对应的版本即可“ https://www.sqlite.org/download.html ”

Unity IOS 用PlayerPrefs后数据丢失_java使用xml存储数据

实现

下载一个数据库查看软件Navicat Premium,通过它创建一个数据库database.db,将其放入Unity的“StreamingAssets”目录下。

Unity IOS 用PlayerPrefs后数据丢失_sqlite 下载哪个版本_02

Unity IOS 用PlayerPrefs后数据丢失_proj7.0对应sqlite哪个版本_03

数据库一般是增删改查这几项功能。

新建SqliteConnection,SqliteCommand,SqliteDataReader三个变量。

/// <summary>

建立数据库连接

/// <summary>

执行查询语句

/// <summary>

创建表格

/// <summary>

插入

/// <summary>

删除

/// <summary>

更新

/// <summary>

查找

/// <summary>

表格是否存在

/// <summary>

数据库在不同平台下的路径

public

由于数据在表格中,因此我们需要使用一个HashTable来存储这些数据,一开始先载入数据库,然后读取出里面的所有数据将其存入HashTable中,后面增删改查的时候不仅针对HashTable进行操作,还要针对数据库进行操作。

private

我们存储数据的时候不一定都是String类型,同时还需要Int,Long,Float等类型,因此需要预先设置好数据库的列名,同时还需要一个数据类型字段来表明存储的数据类型,具体如下

Unity IOS 用PlayerPrefs后数据丢失_proj7.0对应sqlite哪个版本_04

private

加载表格

public

设置Value

public

删除Value

public

关闭数据库

/// <summary>

整个数据库相关操作已经完成,新建一个SqlManager统一管理即可

using

由于使用的时候需要调用的函数名太长,可以新建一个工具类封装一下

Unity IOS 用PlayerPrefs后数据丢失_sqlite 下载哪个版本_05

新建一个测试函数

using

运行Unity,发现表格数据已经生成

Unity IOS 用PlayerPrefs后数据丢失_数据库_06

同时通过C#,也将数据读取了出来

Unity IOS 用PlayerPrefs后数据丢失_sqlite 下载哪个版本_07

具体源码可以通过Github查看: https:///onelei/SqlManager