小例子
Json解析
先把保存下来的.json后缀名改成.txt,然后放到工程里
using System;
using UnityEngine;
[System.Serializable]
public class NewsData{
public NewsResult result;
public int error_code;
}
[System.Serializable]
public class NewsResult{
public NewsContent[] data;
}
[System.Serializable]
public class NewsContent{
public string title;
public string date;
public string category;
public string author_name;
}
public class JsonParseHomework : MonoBehaviour {
//unity内置 专门存txt文档的
public TextAsset jsonText;
//拿到预设体
public GameObject itemPrefab;
private void Start(){
//解析
NewsData data = JsonUtility.FromJson<NewsData>(jsonText.text);
for(int i = 0; i < data.result.data.Length; i++){
//生成
GameObject item = Instantiate(itemPrefab);
//显示标题
item.transform.GetChild(0).GetComponent<Text>().text =
data.result.data[i].title;
//显示作者
item.transform.GetChild(1).GetComponent<Text>().text =
data.result.data[i].author_name;
//显示日期
item.transform.GetChild(2).GetComponent<Text>().text =
data.result.data[i].date;
//预设体放到Content里面
item.transform.SetParent(transform);
}
}
}
数据库
数据库分本地数据库与网络数据库
本地数据库用的轻量级数据库Sqlite
网络游戏都是放在服务器里的 后端
Sqlite
Design 设计
Data 数据
SQL
表头(字段)
Type类型 TEXT文本 INTEGER整形 VARCHAR变长的 FLOAT浮点数
Constrains限制 Primary Key主键(是唯一标识 不能重复) Not NULL不能为空 Unique其他字段也可以不重复
关系型数据库框架
SQL语句
SQL语句里面关键词不区分大小写
增加
Insert 插入
插入全数据 (有几个字段插入几个) Insert Into 表格名称 Values(这里有几个值写几个值 数的话直接写,字符串引起来 引号的话双引号单引号都可以 一般都用单引号)
插入部分数据(有的插入没有的空着) Insert Into 表格名称 (添加要输入的字段名称) Values (前面写几个字段这里写几个值)
修改
Set 设置
Where 限制
Update 表格名称 Set 字段=新值 Where 字段=某值
查询
Select 查询
Select 字段名字 From 表格名称 Where 列名=某值
删除
Delete From 表格名称 Where 条件
通过代码对数据库进行增删改查
先导入dll
将DLL导⼊⼯程Plugins⽂件夹
Mono.Data.Sqlite Unity\Editor\Data\Mono\lib\mono\2.0\Mono.Data.Sqlite.dll 这两个从Unity原文件里找
System.Data UnityEditor\Data\Mono\lib\mono\2.0\System.Data.dll
Sqlite3 https://www.sqlite.org/download.html (这个只有在windows里用得到 Linux和Mac不用)
using UnityEngine;
using Mono.Data.Sqlite;//引用命名空间
public class SQLDemo : MonoBehaviour {
//数据库连接对象
private SqliteConnection con;
//数据库指令对象
private SqliteCommand command;
//路径
private string connectionStr;
private SqliteDataReader reader;
private void Start(){
//数据源路径
connectionStr = "Data Source = " + Application.StreamingAssetsPath + "/HeroDatabase.sqlite";
//实例化连接对象
con = new SqliteConnection(connectionStr);
//打开连接
con.Open();
//创建指令对象
command = con,CreateCommand();
//执行操作
//SQLInsert();
//SQLUpdate();
//SQLSelectSingleData();
//SQLSelectMutipleData();
}
//查多个
private void SQLSelectMutipleData(){
command.CommandText = "Select * From HeroTable";
//执行SQL语句返回所有查询到的结果到读取器
reader = command.ExecuteReader();
//读取下一行 没有下一行false,否则true
reader.Read();
while(reader.Read()){//读取行数
Debug.Log(reader.FieldCount);//列数
for(int i = 0; i < reader.FieldCount; i++){
//读取当前第i行的值
object val = reader.GetValue(i);
Debug.Log(val);
}
}
//关闭读取器
reader.Close();
}
//查询一个
private void SQLSelectSingleData(){
command.CommandText = "Select HeroAD From HeroTable Where HeroName='aaa'";
//执行SQL语句 返回查询到的第一个结果【适用于查询一个结果(一行一列)】
object selectResult = command.ExecuteScalar();
Debug,Log(selectResult);
}
//修改
private void SQLUpdate(){
command.CommandText = "Update HeroTable Set HeroLevel=2 Where HeroName='aaa'";
int rows = command.ExecuteNonQuery();
}
//增加
private void SQLInsert(){
//设置SQL语句
command.CommandText = "Insert Into HeroTable Values ('aaa', 1, 1, 1)";
//执行SQL语句返回受影响的行数【适用于增删改】
int rows = command.ExecuteNonQuery();
}
//关闭应用程序执行一次
private void OnApplicationQuit(){
//释放
command.Dispose();
//关闭连接
con.Close();
}
}