注1:游戏《坦克大战》的所有素材均来自网上,仅作学习交流使用。有不妥之处,欢迎在下方评论指出。
注2:《坦克大战》是小白根据网上的教学视频来模仿制作而成,SQL SERVER数据库的连接仅作为学习用途,可能毫无商业上或者实际开发中的意义。
先来看看成品:
本文着重介绍如何连接数据库,关于游戏整体的控制及UI制作过程会在另外一篇博客中介绍。
废话不多说,直接开始我们的实验:
###第一步:正确配置你的SQL SERVER
在这里小白使用的是SQL SERVER2012版本,2008以上的版本差别不大。
我们先使用window验证方法登录我们的数据库
选择对象资源管理器中你本地的数据库(也就是第一项),右键属性,在安全性下选择SQL SERVER和WINDOWS身份验证模式
顺便在本地数据库中建立一个用于你的游戏的数据库,表的建立需要根据你的游戏实际需要开发什么功能而定
然后打开你的SQL Server 配置管理器,并把Browser启动
把TCP/IP打开,右键属性,正确配置你的1433端口(IP1、IP10、IPALL全部填1433,活动和已启用都选是)
不清楚的同学可以参考这篇博文:SQL Server 2012开启TCP/IP登录,并且启用默认的1433端口
重新启动SQL SERVER,至此我们已经配置完成啦~
###第二步,用VS编写代码连接我们的数据库
写代码之前,把这几个文件的引用搜索出来(不然发布游戏之后将不能连接上数据库)
具体路径在:安装目录:\Unity3d\Editor\Data\Mono\lib\mono\2.0
然后把这四个文件的引用放到Asset下:
接着在脚本中编辑我们的代码:
注意:ip是本地的ip地址,默认为127.0.0.1;用户名密码默认为sa和123456,若修改过该值以修改值为准!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Data;
using System.Data.SqlClient;
public class 类名: MonoBehaviour {
private string ip = "127.0.0.1";
private SqlConnection connection ;
private string databaseName = "Unity3d DataBase"; //数据库的名字
private string ID = "sa"; //用户的账号
private string pwd = "123456"; //用户的密码
private string sqlString;
// Use this for initialization
void Start()
{
//连接SQL
sqlString = @String.Format("server = {0};database = {1};uid = {2};pwd = {3};", ip, databaseName, ID, pwd);
}
}
封装SQL的增删改查方法,注意每次调用方法都要实例化一个SqlConnection的实例并调用open()方法,否则会出现空指针异常!
public void ToSqlConnect()
{
//每次进行sql操作都要创建并打开一个sqlConnection,防止sqlConnection被占用
connection = new SqlConnection(sqlString);
connection.Open();
}
//插入采用全匹配形式(插入的内容必须完全匹配表格的列名)
public DataSet sqlInsert(string values,string tablename)
{
ToSqlConnect();
string sentense = " insert into " + tablename + " values (" + values + ")";
SqlDataAdapter _adapter = new SqlDataAdapter(sentense, connection);
DataSet ds = new DataSet();
_adapter.Fill(ds, tablename);
return ds;
}
//无条件的查询语句
public DataSet sqlCheck(string something,string tablename)
{
ToSqlConnect();
string sentense = " select "+something+" from "+tablename;
SqlDataAdapter _adapter = new SqlDataAdapter(sentense, connection);
DataSet ds = new DataSet();
_adapter.Fill(ds, tablename);
return ds;
}
//有条件的查询语句
public DataSet sqlCheck_Condition(string something, string tablename,string condition)
{
ToSqlConnect();
string sentense = " select " + something + " from " + tablename+" where "+condition;
SqlDataAdapter _adapter = new SqlDataAdapter(sentense, connection);
DataSet ds = new DataSet();
_adapter.Fill(ds, tablename);
return ds;
}
public DataSet sqlDelete_Condition(string tablename,string condition)
{
ToSqlConnect();
string sentense = "delete from " + tablename + " where " + condition;
SqlDataAdapter _adapter = new SqlDataAdapter(sentense, connection);
DataSet ds = new DataSet();
_adapter.Fill(ds, tablename);
return ds;
}
public DataSet sqlUpdate_Condition(string something,string tablename,string condition)
{
ToSqlConnect();
string sentense = "update " + tablename + " set " + something + " where " + condition;
SqlDataAdapter _adapter = new SqlDataAdapter(sentense, connection);
DataSet ds = new DataSet();
_adapter.Fill(ds, tablename);
return ds;
}
如果需要输出DataSet里面的结果,调用 DataSet的实例.Tables[0].Rows[xx行][xx列]
就可以了!
就是这样,我们成功在U3D连接上了SQL SERVER数据库了!
小白还用它来做了个注册和登录系统,看看我的成品:
上述方法有任何不妥的地方欢迎在下方的评论区指出哦,谢谢!