首页 > 数据库 >SQLite4Unity3d unity游戏数据库

SQLite4Unity3d unity游戏数据库

时间:2023-06-30 15:34:55浏览次数:47  
标签:ExpOther sheet 数据库 SQLite4Unity3d unity other SQLiteConnection public

 

 

SQLite4Unity3d是一种基于sqlite-net进行封装的unity包,适用在iOS,Mac,Android和Windows项目中工作,适用于中大型游戏

 

项目架构

传统unity序列化数据共有几种方案,包括使用本地持久化类 PlayerPrefs,使用Json方法、使用XMl方法,但以上几种方案有使用上限制,修改自由化,规模化使用限制等问题,而传统SQLite又存在各种限制,因此提供一种SQLite4Unity3d数据库的解决方案

 

SQLite4Unity3d使用有以下优点:

  1. 修改方便,由于使用SQLite,可使用db工具进行快速修改查询
  2. 使用场景广泛,建立好框架后,后续如果需要切换联网服务器模式,可轻松切换,无需重新建立框架
  3. 数据储存规范,适用于大型场景,多人协作交互方便

但由于SQLite本身特性,数据类型仅支持字符串,数字原始类型,因此如果像对结构类数据经常序列化储存,需要建立新的框架进行转换

 

搭建

GitHub - robertohuertasm/SQLite4Unity3d:SQLite make easy for Unity3d

下载数据包,将SQLite.cs存放在你得脚本文件夹中,之后的所有调用均调用此文件。将Plugins文件夹存放在assets目录下

使用以下代码进行创建及连接

string path = Application.streamingAssetsPath + "/data.db";
public SQLiteConnection SQLiteConnection;
SQLiteConnection = new SQLiteConnection(this.path, SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.Create);

 

SQLite4Unity3d建表非常简单,直接对类进行建表和封装

public class other_sheet
{
    [PrimaryKey, AutoIncrement]
    public int id { get; set; }
    public int hp { get; set; }
    public int level { get; set; }
    public int exp { get; set; }
    public string title { get; set; }
    public string arm_type { get; set; }
}
SQLiteConnection.CreateTable<other_sheet>();

 

即可在数据库中建立一个名称叫other_sheet的表

使用db工具可直接对表进行修改,非常方便

数据类型仅支持字符串,数字原始类型,如需要储存自定义类型,比如我需要建立一个武器类型,则只能使用数据库储存

因此建立一个运行类,用于进行数据处理和转换

public enum Armstype
{
    knife,
    Lightsaber,
    oilbarrel,
    m1,
    m4,
    m9
}


public class other_exp_sheet_GET : GET
{
    static public ExpOther _GET(int level)
    {
        ExpOther ExpOther = new ExpOther();
        var other_sheet = sQL_Sk5.SQLiteConnection.Table<other_sheet>().Where(_ => _.level == level).FirstOrDefault();
        ExpOther.level = other_sheet.level;
        ExpOther.hp = other_sheet.hp;
        ExpOther.exp = other_sheet.exp;
        ExpOther.title = other_sheet.title;
        ExpOther.arm_type = (Armstype)Enum.Parse(typeof(Armstype), other_sheet.arm_type);
        return ExpOther;
    }
}

 

 

这样对数据库使用other_sheet进行序列化,用other_exp_sheet_GET 进行反序列化,这样就可以储存自定义类型

 

简单的SQLite4Unity3d使用教程

筛选

 

Connection.SQLiteConnection.Table<数据元类>().Where(_ => _.id == id).FirstOrDefault();

数据提取后临时存放由TableQuery<T> 来存放,以下是常用方法

名称 解释
First 获得匹配的第一个
FirstOrDefault 获得匹配的第一个如果没有匹配到则返回第一个
Last 获得匹配的最后一个
LastOrDefault 获得匹配的最后一个如果没有匹配到则返回第一个
Count 获取所有匹配存在的数量
Take 获取匹配对象的前10个
ToList<>() 将获取的表按元类转换成列
 

插入

 Connection.SQLiteConnection.Insert(数据元类);

 

更新

说明:首先从数据库中提取数据,然后经过转换成游戏内部可以运行的数据,修改后再转换成数据元类进行储存,可以将转换过程写成方法,简化过程

var temp = Connection.SQLiteConnection.Table<数据元类>().Where(_ => _.id == id).FirstOrDefault();

Connection.SQLiteConnection.Update(_TODB(数据元类));


static public 数据元类 _TODB(数据运行类 player_info){}

 

删除

Connection.SQLiteConnection.Delete<数据元类>();

 

标签:ExpOther,sheet,数据库,SQLite4Unity3d,unity,other,SQLiteConnection,public
From: https://www.cnblogs.com/xyfbj/p/17516881.html

相关文章

  • 数据库SqlServer迁移PostgreSql实践
    SqlServer属于商业数据库,不可能像Mysql等数据库一样,去解析相关的数据库binlog,从而实现增量数据的回放,结合应用属性,最后确定采用离线迁移方式,从SqlServer中将表数据全部读出,然后将数据写入到pg中,采用此种方案的弊病就是程序端需停止写入(应用可将部分数据缓存到本......
  • python连接mysql数据库
    连接mysql方式很多,这里先只介绍pymysql库连接mysql数据库。1.安装pymysqlpipinstallpymysql-ihttps://pypi.tuna.tsinghua.edu.cn/simple2.  建立mysql数据表 安装好mysql数据库之后,建立表并插入数据后如下: 表的结构:3.连接数据库连接数据......
  • 事务全攻略,MySQL数据库必学知识!
    前言从今天开始,健哥就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深,全面讲解数据库体系。非常适合零基础的小伙伴来学习。全文大约【1707】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文......
  • 用dotLucene为数据库内容建立索引
    //建立索引的类publicclassIndexer{privateIndexWriterwriter;Documentdoc=newDocument();publicIndexer(stringDirectory){InitializeIndex(Directory);}......
  • 一个sqlite的例子,将图片存入sqlite数据库
          最近学习sqlite,在看了一些资料后,写了一个例子,可能对初学sqlite或者学习将图片插入数据库等的有用,把源码发出来,给需要参考的。也欢迎大家提出建议。         包含常用的sql操作,增删改查,同时也在例子中说明,sqlit的sql语句使用参数,可以用@也可以用$。     ......
  • mongodb数据库操作备忘
    db.SMU_REALDATA_PARAMETERS.update({},{$rename:{"interfaceID":"INTERFACEID"}},false,true); 修改field,字段名,不是修改值哟。 网上搜索mongodb语言和CheatSheet手册。https://www.mongodb.com/developer/products/mongodb/cheat-sheet/navcate工具和下面工具都可以。 ......
  • Linux 中重置数据库的 root 密码的技巧
    其中一项是设置数据库root帐户的密码-你必须保持私密,并仅在绝对需要时使用。如果你忘记了密码或需要重置密码(例如,当数据库管理员换人或被裁员!),这篇文章会派上用场。如果你是第一次设置MySQL或MariaDB数据库,你可以直接运行mysql_secure_installation来实现基本的安......
  • 清除SQL Server数据库日志(ldf文件)的几种方法
    随着系统运行时间的推移,数据库日志文件会变得越来越大,这时我们需要对日志文件进行备份或清理。  随着系统运行时间的推移,数据库日志文件会变得越来越大,这时我们需要对日志文件进行备份或清理。  解决方案1-直接删除本地ldf日志文件:(比较靠谱方案!)  1.......
  • mybatis-plus框架配合数据库表时间字段自动更新问题
    背景在项目开发前的设计阶段,我们会根据需求分析、业务梳理的结果进行领域建模。通常有2种方式:实体设计优先数据库设计优先无论哪种方式,最终会创建数据库、数据表。通常在每一张表,会设计2个时间自动,创建时间和修改时间,这样在查询数据时能够清晰的看到数据行是什么时候创建......
  • C# ModbusRtu或者TCP协议上位机源码,包括存储,数据到SQL SERVER数据库,趋势曲线图,数据报
    C#ModbusRtu或者TCP协议上位机源码,包括存储,数据到SQLSERVER数据库,趋势曲线图,数据报表,实时和历史报警界面,有详细注释,需要哪个协议版本原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/655313350668.html......