赞
踩
不会在Unity使用SQLite数据库可以看一下这篇文章Unity2021中使用SQLite数据库
将需要3个dll文件导入到 Plugins 文件夹中
mono.data.sqlite.dll,System.data.dll,sqlite3.dll
数据库保存的位置选择在项目里的 StreamingAssets 文件夹中
字段
数据
字段
数据
使用: 别的脚本只需要继承 Singleton脚本 并创造一个私有的构造函数即可
例:public class Test : Singleton<Test> // 继承 { private Test(){ } // 私有构造 } ```
- 1
- 2
- 3
- 4
- 5
- 6
- 7
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class Singleton<T> where T : class { private static T instance; public static T Instance { get { if(instance == null) { instance = (T)Activator.CreateInstance(typeof(T), true); } return instance; } } }
继承与 Singleton脚本, 别的脚本可以通过 SQLiteManager.Instance 来访问当前脚本的方法
封装的方法:
- 打开数据库
- 关闭数据库
- 非查询语句的执行
3-1. 插入语句
3-2. 更新语句
3-3. 删除语句- 查询单个数据的执行方法
- 查询多个数据的执行方法
using System.Collections; using System.Collections.Generic; using UnityEngine; using Mono.Data.Sqlite; public class SQLiteManager : Singleton<SQLiteManager> { protected SQLiteManager() { } private SqliteConnection con; private SqliteCommand command; private SqliteDataReader reader; // 打开数据库 public void OpenDatabase(string fileName) { if(!fileName.EndsWith(".db")) { fileName += ".db"; } string path = "Data Source=" + Application.streamingAssetsPath + "/" + fileName; con = new SqliteConnection(path); con.Open(); } // 关闭数据库 public void CloseDatabase() { if(reader != null) { reader.Close(); reader = null; } if(command != null) { command.Dispose(); command = null; } if(con != null) { con.Close(); con = null; } } // 非查询语句执行 private int NonQuery(string query) { if (command != null) { command.Dispose(); command = null; } command = con.CreateCommand(); command.CommandText = query; return command.ExecuteNonQuery(); } // 添加 public int Insert(string query) { return NonQuery(query); } // 更新 public int Update(string query) { return NonQuery(query); } // 删除 public int Delete(string query) { return NonQuery(query); } // 查询单个数据 public object SelectSingleData(string query) { if (command != null) { command.Dispose(); command = null; } command = con.CreateCommand(); command.CommandText = query; return command.ExecuteScalar(); } // 查询多个数据 public List<ArrayList> SelectMultipleData(string query) { if (command != null) { command.Dispose(); command = null; } if (reader != null) { reader.Close(); reader = null; } command = con.CreateCommand(); command.CommandText = query; reader = command.ExecuteReader(); List<ArrayList> result = new List<ArrayList>(); while(reader.Read()) { ArrayList list = new ArrayList(); for(int i = 0; i < reader.FieldCount; i++) { list.Add(reader.GetValue(i)); } result.Add(list); } return result; } }
封装的方法:
- 更新玩家身上的装备
- 获取玩家身上的装备
- 更新玩家属性到数据库中
- 玩家添加或移除装备属性
- 获取玩家的属性
- 获取装备属性
- 更新玩家的钱到数据库中
- 获取玩家身上的钱
- 获取装备价格
封装的方法:
// 更新玩家身上的装备 public void SetPlayerEquips(string playerName, string equips) { query = "update playertable set equips='" + equips + "' where name = '" + playerName + "'"; Update(query); } // 获取玩家身上的装备 public string GetPlayerEquips(string playerName) { query = "select equips from playertable where name = '" + playerName + "'"; object obj = SelectSingleData(query); if(obj == null) { return null; } return obj.ToString(); } // 更新玩家属性到数据库中 public void SetPlayerProperties(string playerName, int[] properties) { query = "update playertable set ad = " + properties[0] +
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。