游戏开发平台:Unity 2019.4.23f1以上 编程平台:Visual Studio 2019 编程语言:C#
为什么选择使用数据库?答:数据库作为数据管理的库,便于游戏开发者管理角色数据,如调整、增加、修改等操作,省去了繁琐的定位到某一脚本修改参数变量。对运维管理,利于保存玩家数据,如交易道具,仓库存储,身份UID。联网类游戏更是记录玩家的登录账号和密码检查登入者是否为玩家本人等情况。
扩展程序依赖在Unity平台上连接使用SQL数据库,避免不了扩展程序的依赖。如下所示:
- Microsoft.Data.Sqlite.dll 由微软官方提供的针对数据库连接的程序包
- Mono.Data.Sqlite.dll 点我官网下载 由Mono提供的针对数据库连接的程序包,于2018年停止更新。早期Unity版本使用的编译器为MonoBehavior平台,自2017版本以来,Unity与微软合作后推荐选用Visual Studio。
- System.Data.Sqlite.dll 由下载安装Visual Studio自动下载的
准备依赖工具
Vs内部下载:
- Visual Studio 项目 -> 管理NuGet程序包 -> 搜索并下载对应.dll
外部导入:
- Visual Studio 右键项目依赖项 -> 添加依赖项
private SqliteConnection connection;
private SqliteCommand cmd;
private SqliteDataReader dataReader;
SqliteConnection
:连接行为SqliteCommand
:SQLite命令内容,如 SELECT * FROM dataSqliteDataReader
:数据库中的数据内容
2.1 连接数据库
public void OpenSQLConnection(string dbObject)
{
try
{
connection = new SqliteConnection(dbObject);
connection.Open();
//Debug.Log("数据库:" + dbObject + "连接成功");
}
catch (Exception e)
{
//Debug.LogError("异常错误:" + e.ToString());
}
}
SqliteConnection
:连接数据库Open()
:打开数据库try...catch
:捕获异常信息以助于更好了解
public void CloseSQLConnection()
{
if (cmd != null)
{
//清空cmd命令内容
cmd.Dispose();
cmd = null;
}
if (dataReader != null)
{
dataReader.Dispose();
dataReader = null;
}
if (connection != null)
{
connection.Dispose();
connection = null;
}
Debug.Log("数据库已断开连接!");
}
Dispose()
:断开数据库连接(断开后不可再次连接,且需断开后设置对象为null)Close()
:断开数据库连接(断开后可多次连接与断开,无需断开后设置对象null)cmd
命令、dataReader
数据读取、connection
数据库连接 是访问数据库数据不可缺少的对象。 通过connection
实现对数据库文件(.db)的连接服务; 通过dataReader
读取数据库的数据内容; 通过cmd
执行查询、增加、删除、更新数据库内数据;
public SqliteDataReader ExecuteCommand(string sqlQuery)
{
cmd = connection.CreateCommand();
cmd.CommandText = sqlQuery;
dataReader = cmd.ExecuteReader();
return dataReader;
}
SqliteDataReader
:数据库数据读取CreateCommand()
:创建SQL命令对象CommandText
:SQL命令内容,这里的指令来自于局部参数sqlQuery
ExecuteReader()
:执行SQL命令dataReader
:数据库数据,这里指通过SQL命令查询到的数据内容
public SqliteDataReader QuaryData(string tableName)
{
string query = "SELECT * FROM " + tableName;
return ExecuteCommand(query);
}
tableName
:SQLite数据表名"SELECT * FROM " + tableName
:SQLite命令格式,详细参考数据库相关书籍
public SqliteDataReader QuaryData(string tableName, string fieldName)
{
string query = "SELECT " + fieldName + " FROM " + tableName;
return ExecuteCommand(query);
}
tableName
:SQLite数据表名fieldName
:元素名
public SqliteDataReader QuaryData(string tableName, string[] fieldName)
{
string query = "SELECT ";
for (int i = 0; i
关注
打赏
热门博文
- 【解决】MissingReferenceException: The object of type ‘GameObject‘ has been destroyed...
- 【解决吧】DontDestroyOnLoad only works for root GameObjects or components on root GameObjects.
- 【解决】Can‘t add ‘UniversalAdditionalCameraData‘ to SceneCamera because a ‘UniversalAdditionalCamera...
- 【解决】关于 Unity Hub 获取许可证失败 或 无响应导致无法开发的问题
- 【解决】UnityWebRequest 下请求 EXCEL数据 返回 PK 结果的解决方案
- 【解决】旧 Unity InputSystem 下的按键未响应的解决方案
- 【解决】修改子物体Transform信息导致变换不对称、异常问题的解决方案
- 【案例设计】模拟 视线 影响玩家移动规则的设计演变思路
- 【案例设计】Free Camera 设计与实现思路
- 【Unity 题型】变量和数据类型