Unity3D教程:Unity3D与Sqlite数据库直连
使用Unity开发3D游戏的基础教程
使用Unity开发3D游戏的基础教程第一章:Unity的介绍和安装Unity是一款强大的跨平台游戏开发引擎,可用于开发2D和3D游戏。
它拥有直观易用的界面和丰富的功能,适用于初学者和经验丰富的开发者。
在本章中,我们将介绍Unity的基础知识并帮助您安装和配置开发环境。
Unity支持多种平台,包括Windows、MacOS和Linux。
在开始之前,请确保您的计算机满足Unity的最低系统要求。
您可以从Unity官方网站下载并安装Unity Hub,它是一个用于管理Unity项目和版本的工具。
安装Unity之后,您可以通过Unity Hub打开编辑器。
Unity编辑器的界面分为多个窗口,如场景视图、资源视图、检查器视图和层次视图,从而使您能够轻松管理和操作游戏对象。
第二章:创建场景和游戏对象在Unity中,您可以创建场景来构建游戏世界。
场景是游戏中的虚拟空间,您可以在其中放置游戏对象和元素。
游戏对象是可以在场景中实例化的实体,如人物、道具、地形等。
要创建一个新场景,您可以在Unity编辑器中单击“File”菜单,然后选择“New Scene”。
接下来,您可以将游戏对象拖放到场景中,或使用Unity提供的创建工具来生成对象。
对于每个游戏对象,您可以在检查器视图中设置其属性和组件。
组件是游戏对象的功能模块,如碰撞器、脚本和动画控制器。
通过添加适当的组件,您可以控制游戏对象的行为和外观。
第三章:使用脚本编写游戏逻辑脚本是Unity中编写游戏逻辑的重要工具。
脚本是一种编程语言,可用于控制游戏对象的行为和交互。
在Unity中,您可以使用C#或Unity的自有语言UnityScript来编写脚本。
要创建一个新的脚本,您可以在Unity编辑器中单击“Assets”菜单,然后选择“Create”>“C# Script”。
然后,您可以使用Unity内置的脚本编辑器来编写和编辑脚本。
在脚本中,您可以定义类和方法来实现所需的游戏逻辑。
Unity中使用本地数据库
Unity使用本地数据库一、环境和前提1、使用的类首先你需要得到Mono.Data.Sqlite.dll 文件与System.Data.dll文件。
(如果你在Mac 操作系统下使用Unity,可能找不到这两个文件)。
可在Windows下的Unity安装路径中找到了它。
然后将Mono.Data.Sqlite.dll 文件与System.Data.dll文件放在Unity工程中的Assets文件夹中的Plugins文件夹中。
2、修改Player settingEdit-Project Setting-PlayerSetting请先在PlaySettings中修改Api Compatibility Level 改成.NET 2.0,如果不修改会报错注意:Error building Player: Extracting referenced dlls failed3、脚本结构二、建立数据库1、脚本通过unity创建数据库,并在其中建立数据表,见脚本createDbExample.cs usingUnityEngine;usingSystem.Collections;public class createDbExample : MonoBehaviour{void Start (){//创建数据库名称为xuanyusong.dbDbAccessdb = new DbAccess("data source=myUnityDb.db");//创建数据库表,与字段db.CreateTable("table_Select",newstring[]{"ID","name","qq","email","blog"}, new string[]{"INTEGER PRIMARY KEY","text","text","text","text"});//关闭对象db.CloseSqlConnection();}}2、建立的数据库在程序文件夹的根目录下3、可用Navicat Premium打开并修改该数据表(新建连接)三、insert插入操作1、数据表的设计建议所有数据表,第一个字段设置为ID,integer,自增,且为主键。
unity与数据库交互的方法
unity与数据库交互的方法Unity是一个用于开发游戏和应用程序的跨平台游戏引擎。
在开发过程中,常常需要与数据库进行交互,以实现数据的存储、读取和更新等操作。
本文将介绍一些常见的Unity与数据库交互的方法。
1. 使用SQLite数据库SQLite是一种轻型的关系型数据库,可以嵌入到应用程序中使用。
在Unity中,可以使用SQLite作为本地数据库进行数据存储和管理。
首先,需要下载SQLite的Unity插件,然后在代码中引用相关的命名空间,并使用SQLite提供的API进行数据库的创建、表的建立和数据的增删改查等操作。
2. 使用MySQL数据库MySQL是一种常用的关系型数据库,可以通过网络连接进行数据交互。
在Unity中,可以使用MySQL Connector/NET这样的插件来实现与MySQL数据库的交互。
首先,需要下载并安装MySQL Connector/NET插件,然后在代码中引用相关的命名空间,并使用MySQL提供的API进行数据库的连接、查询和更新等操作。
3. 使用MongoDB数据库MongoDB是一种面向文档的NoSQL数据库,适用于大规模数据存储和高性能读写操作。
在Unity中,可以使用MongoDB的Unity插件来实现与MongoDB数据库的交互。
首先,需要下载并导入MongoDB的Unity插件,然后在代码中引用相关的命名空间,并使用MongoDB提供的API进行数据库的连接、文档的插入和查询等操作。
4. 使用Firebase数据库Firebase是一种基于云的实时数据库,适用于实时数据同步和移动应用程序开发。
在Unity中,可以使用Firebase SDK来实现与Firebase数据库的交互。
首先,需要在Firebase控制台中创建项目,并获取到项目的密钥,然后在Unity中导入Firebase SDK,并使用Firebase提供的API进行数据库的连接、数据的读写和实时数据的同步等操作。
Unity3d 连接 MySQL 数据库(使用DataSet)
using MySql.Data.MySqlClient;
public class CMySql : MonoBehaviour {
// Global variables
public static MySqlConnection dbConnection;//Just like MyConn.conn in StoryTools before
DataSet ds = new DataSet();
try
{
MySqlDataAdapter da = new MySqlDataAdapter(sqlString, dbConnection);
da.Fill(ds);
}
catch (Exception ee)
{
throw new Exception("SQL:" + sqlString + "\n" + ee.Message.ToString());
}
}
2.導入dll
同先前的帖子 , 將MySql.data.dll Import至Assets底下 , 然後再到Unity\Editor\Data\Frameworks\Mono.framework 中
將System.Data.dll 也一起Import至Assets內 , 當然 , 如果想顯示中文的話 , 請參考中文視頻教學 , 建立一個GUISkin與字型
先前有人發了一篇如何連接 MySQL 數據庫的帖子
而我這篇是接著先前的帖子用DataSet方式將數據庫的內容呈現出來 , 當然 , 內容有做了些許的修改
Unity连接Mysql数据库增删改查(分时间段取数据)
Unity连接Mysql数据库增删改查(分时间段取数据)1.unity连接数据库(mysql)需要的dll⽂件下载链接: 直接复制下载即可如果是android端需要全部放⼊,并且需要对应unity版本,去unity安装⽬录下找到拖进去即可,如果是PC端只需要⼀个Mysql.data.dll ⽂件就⾏ ,我的版本是Unity2019.4.5f1的, 设置⾥⾯.net设置成4.x,不然会报错下⾯上代码两个脚本都能连接成功并读取添加修改(别同时挂载,同时在应该会出BUG,可以分开试验)1.using MySql.Data.MySqlClient;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class Connect_Mysql{public bool login_success = false;public bool register_success = false;//数据库表中的数据名字必须是⼀样的要不然上传不上去public int id;public string username;public string password;//登录验证public void Click_login(string username, string password){// server连接地址 port端⼝号 database表单名 user⽤户名 password数据库密码// ⽤户名⼀般都是root 你修改了就换成你修改的名称跟密码string sqlSer = "server =127.0.0.1;database = tool;user = root;password =123456;";//string sqlSer = "server = localhost" +// "port = 3306;" +// "database = tool;" +// "user =root;" +// "password =123456;";MySqlConnection conn = new MySqlConnection(sqlSer);try{conn.Open();Debug.Log("------连接成功------");//user 表名string sqlQuary = "select * from user where username =@paral1 and password = @paral2";MySqlCommand comd = new MySqlCommand(sqlQuary, conn);comd.Parameters.AddWithValue("paral1", username);comd.Parameters.AddWithValue("paral2", password);MySqlDataReader reader = comd.ExecuteReader();if (reader.Read()){Debug.Log("------⽤户存在,登录成功!------");//进⾏登⼊成功后的操作,例如进⼊新场景。
unity sqlite 方法
unity sqlite 方法SQLite is a lightweight, disk-based database management system that doesn't require a separate server process. It allows users to store data in a local database file without the need for a standalone server.SQLite是一款轻量级的基于磁盘的数据库管理系统,不需要单独的服务器进程。
它允许用户在本地数据库文件中存储数据,无需单独的服务器。
In the context of Unity, SQLite can be utilized to store game data such as user profiles, scores, and game progress. This allows for offline gameplay and provides a way to save and retrieve game-related information locally on the user's device.在Unity中,SQLite可以用于存储游戏数据,如用户配置文件、得分和游戏进度。
这允许离线玩游戏,并提供一种在用户设备上本地保存和检索与游戏相关的信息的方式。
One of the advantages of using SQLite in Unity is the ease of integration. There are numerous plugins and assets available that simplify the process of incorporating SQLite databases into Unityprojects. These tools provide an easy-to-use interface for managing databases and executing SQL queries within the Unity environment.在Unity中使用SQLite的优势之一是易于集成。
unity3d中文教程pdf
unity3d中文教程pdfunity3d是一款运行于 Windows平台的一款高性能嵌入式操作系统,是目前唯一支持Windows Logic和X86平台的嵌入式操作系统。
unity3d能够为用户提供全面、完整以及专业的软件开发和支持。
它可以为开发人员提供更加强大的图形界面和分布式系统环境,包括图形显示、用户界面、运行模式支持和安全措施等功能。
我们可以通过它来简化软件开发过程,提高应用程序效率。
可以使用各种设备获取您所需的文件,并且可以在 windows设备上运行。
系统还允许你使用多个操作系统来访问多个应用程序。
它也能够支持多种操作系统的扩展(包括 Windows、Linux OS/Unix)以及 Windows Phone应用软件!通过系统命令在整个软件包中调用到更小资源。
下面就给大家详细介绍下如何使用unity3d教程来进行安装和调试?1、将Unity3d安装到电脑上安装程序步骤如下:使用下载好的文件进行安装(电脑上没有Unity3d,所以使用win10操作系统的朋友需要重启电脑来进行安装);双击软件安装文件目录下的安装位置;双击鼠标右键点击“安装”,并选择“运行”,在“运行”中输入一个带有“config”的安装命令;输入“upsupport”将Unity3d安装到电脑上;请注意:在安装Unity3d前建议不要使用其他操作系统,以免影响到其他 OS应用程序;以免安装过程中出现意外情况导致不能正常运行;另外注意检查是否已成功进入安装状态(如果不完成安装就退出)!2、打开一个文件夹,里面有一个目录,可以查看是否有关于该文件的全部资料如果没有,可以右键点击当前文件夹,在弹出的窗口中选择文件夹名称。
如果已经找到这个名称,打开后需要对其重新命名,或者添加其他信息!如果还没有找到. dll文件夹,可以把. dll文件添加到该文件夹中,添加完后如果发现有文件,同样需要重新命名!如图:如果没有找到. dll文件夹名,我们就会找到. file目录下的文件夹,找到后可以删除文件夹中的. file 文件。
unity 3d 教程
unity 3d 教程Unity 3D 是一款由Unity Technologies开发的跨平台游戏引擎,广泛用于开发各种类型的游戏,包括电脑、手机、平板电脑等设备上的游戏。
本文将为大家介绍Unity 3D的基础知识和一些常用的教程,帮助读者入门和掌握Unity 3D的开发技能。
首先,为了开始使用Unity 3D,读者需要下载并安装Unity软件。
Unity官方网站提供了最新版的Unity软件,并且支持Windows、Mac和Linux等不同操作系统。
安装完成后,读者可以打开Unity软件并创建一个新项目。
Unity 3D的用户界面相对直观友好,主要分为场景视图、层次视图、检查器视图和项目视图等窗口。
场景视图用于显示当前场景的3D场景模型,层次视图用于管理场景中的各个游戏对象,检查器视图用于对所选的游戏对象进行属性和组件的设置,项目视图用于管理项目中的资源文件。
这些窗口可以自由调整大小和位置,以适应不同的需求。
在Unity 3D中,游戏对象是最基本的单位,可以运动、旋转、缩放等。
游戏对象可以添加不同的组件来实现各种功能,如碰撞器、刚体、粒子系统等。
Unity 3D提供了丰富的组件库和资源库,可以方便地创建各种复杂的游戏效果。
Unity 3D使用C#作为主要的编程语言,读者需要有一定的编程基础,以便能够编写游戏逻辑代码。
Unity官方网站提供了丰富的教程和文档,方便读者学习和查阅。
在编写代码时,读者需要熟悉Unity的API(应用程序编程接口),以便能够调用不同的函数和方法来实现所需的功能。
对于初学者来说,掌握Unity 3D的基础知识并不难,可以通过学习一些基础的教程来入门。
例如,可以学习如何创建和管理场景、如何在场景中添加和控制游戏对象、如何使用碰撞器和刚体来处理碰撞和物理效果等。
在掌握了基础知识后,读者可以尝试更高级的教程,如实现人物控制、制作动画效果、添加音效等。
总结起来,Unity 3D是一款功能强大且易于学习的游戏引擎,适合各类游戏开发者。
Unity3d连接SQLServer数据库的技巧
{ //连接字符串 SqlConnection connstr = new SqlConnection(“Data Source=.;Initial Catalog=Exam;uid=sa;pwd=123”); SqlCommand cmd = new SqlCommand(); cmd.Connection = connstr; mandType = mandType.Text; //设置 sql 连接语句 mandText = “select * from Users”; SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.SelectCommand.Connection.Open(); string strtemp = sda.SelectCommand.ExecuteScalar().ToString(); sda.SelectCommand.Connection.Close();
Unity3d 连接 SQLServer 数据库的技巧
我们为大家收集整理了关于 Unity3d 连接 SQLServer 数据库,以方便大 家参考。 在编写代码之前需要: 1.引入程序集 System.Data.dll,位置在 C:Program FilesUnityEditorDataMonolibmonounity(我 unity 默认装在 C 盘)。 2.把 System.Data.dll 文件复制到当前 Unity 项目文件下,即 Assets 文件夹下 就可以了。 虽然在 unity 里面可以运行但是发布为 web 或者 exe 后还是连接不上,这 就还需要另外三个 dll 文件 I18N.dll,I18N.West.dll,I18N.CJK.dll ,这三个 文件和 System.data.dll 在同一个目录下,要把这个 4 个 dll 文件一起放在 Assets 文件下最后发布出来也可以连接上数据库了。 public class ConnectionSqlserver : MonoBehaviour { + strtemp); } } 希望大家学业有成,工作顺利
Unity中对SQL数据库的操作
Unity中对SQL数据库的操作在Unity中,我们有时候需要连接数据库来达到数据的读取与储存。
⽽在.NET平台下,为我们提供了公开数据访问服务的类。
客户端应⽤程序可以使⽤来连接到数据源,并查询,添加,删除和更新所包含的数据。
对于,需要了解到Connection,Command,DataReader,DataAdapter,DataSet这⼏个对象,他们是操作数据库的重要对象。
下⾯简要得介绍下这⼏个对象的作⽤以及功能(以SQL为例)。
1、Connection:它是建⽴应⽤程序与数据库之间的连接通道,起到连接数据库的功能。
其访问形式根据数据库的类型⽽定。
以SQL为例,则连接类型为SqlConnection。
这种连接需要引⼊相应数据库的命名空间,这⾥我们需要引⼊System.Data.SqlClient。
想要引⼊这个命名空间还需要System.Data.dll⽂件,就在Unity安装源⽬录下即可找到,复制导⼊Unity的Asset即可。
写法如下://声明⼀个字符串⽤于存储连接数据库字符串string s = "server=localhost;database=hasion;uid=sa;pwd=hasion";SqlConnection con = new SqlConnection(s);con.Open();这样数据库的连接就打开了。
2、Command:当应⽤程序建⽴与数据源的连接后,就需要Command对象来执⾏命令并从数据源中返回结果。
它是⼀个数据命令对象,主要功能就是向数据库发送查询、更新、删除、修改操作的SQL语句。
这边需要讲下它执⾏SQL的⼏种⽅法:ExecuteNonQuery⽅法,该⽅法是返回受影响的⾏数可⽤于统计,(如需进⾏存储过程则需更改CommandType的属性)。
写法如下://声明⼀个字符串⽤于存储连接数据库字符串string s = "server=localhost;database=hasion;uid=sa;pwd=hasion";SqlConnection con = new SqlConnection(s);con.Open();//创建SqlCommand对象,并指定其使⽤con连接数据库SqlCommand cmd = new SqlCommand();cmd.Connection = con;//设置CommandText,设置其执⾏SQL语句mandText="update Table_1 set 资产=1000 where 性别='⼥'";int i = Convert.ToInt32 (cmd.ExecuteNonQuery ());print ("查询到"+i+"个⼥性");ExecuteScalar⽅法,返回结果集合的第⼀⾏的第⼀列,常⽤语统计数据数量,⽤法如下://声明⼀个字符串⽤于存储连接数据库字符串string s = "server=localhost;database=hasion;uid=sa;pwd=hasion";SqlConnection con = new SqlConnection(s);con.Open();//创建SqlCommand对象,并指定其使⽤con连接数据库SqlCommand cmd = new SqlCommand();cmd.Connection = con;//设置CommandText,设置其执⾏SQL语句mandText="select * from Table_1 where 性别='⼥'";int i = Convert.ToInt32 (cmd.ExecuteScalar ());print ("查询到"+i+"个⼥性");ExecuteReader⽅法,返回⼀个SqlDataReader对象,可进⾏数据的读取,其⽤法如下://声明⼀个字符串⽤于存储连接数据库字符串string s = "server=localhost;database=hasion;uid=sa;pwd=hasion";SqlConnection con = new SqlConnection(s);con.Open();//创建SqlCommand对象,并指定其使⽤con连接数据库SqlCommand cmd = new SqlCommand();cmd.Connection = con;//设置CommandText,设置其执⾏SQL语句mandText="select * from Table_1";SqlDataReader st = cmd.ExecuteReader ();while (st.Read()){print(st[0].ToString());}cmd.Dispose ();上⾯的功能就是输出表格第⼀列的所有内容。
Unity3DSDK接入教程
Unity3DSDK接⼊教程请选中您要保存的内容,粘贴到此⽂本框使⽤简述本⽂档介绍了GVoice游戏语⾳C#接⼝SDK的接⼊⽅法,适⽤于Unity3D引擎开发的游戏。
GVoice游戏语⾳⽬前提供了实时语⾳(Real-Time)、语⾳消息 (Message)两⼤功能。
实时语⾳能够让多名玩家进⾏实时语⾳聊天。
语⾳消息为⽤户提供快速录制并向其他玩家发送⼀段语⾳消息的能⼒。
实时语⾳分为⼩队语⾳、国战语⾳两种模式。
如果⼀个房间内同时聊天的玩家⼩于20⼈,则使⽤⼩队语⾳模式,这时玩家可以⾃由发⾔(该模式常⽤于队友间沟通)。
当⼀个房间内语⾳聊天的玩家⼤于20⼈时,则使⽤国战语⾳模式,在国战语⾳中,允许开发者控制发⾔权限,同时说话⼈数不得超过5⼈(该模式常⽤于团战指挥、主播)。
GVoice 客户端SDK接⼝主要分成三个部分:基本API、以及语⾳消息API。
开通服务⾸先登录注册⽤户并创建应⽤,然后按照如下步骤开通语⾳服务:开通完成后,可以获得对应GameID和GameKey,这对组合值在后⾯的接⼝中需要使⽤系统配置开通服务后可以在管理界⾯上下载SDK安装包,下载地址SDK下载。
下载SDK包解压后,⽬录结构如下: iOS系统配置将压缩包中的 dist\Unity3D\Plugins\iOS\ GCloudVoice.bundle 整个⽂件夹拷贝到⾃⼰的⼯程MyProj\Assets\Plugins\iOS ⽬录下。
链接发布包中静态库dist\Unity3D\Plugins\iOS\libGCloudVoice.a,,在Unity3d导出的Xcode ⼯程中,同时需要链接如下6个系统库: Android系统将压缩包中的 dist\Unity3D\Plugins\Android ⽬录下的 GCloudVoice、assets 两个⽂件夹拷贝到⾃⼰的⼯程MyProj\Assets\Plugins\Android⽬录下。
unity3d官方教程
unity3d官方教程
Unity3D是一款游戏开发引擎,提供了一整套专业且易用的工具,帮助开发者快速构建出高质量的游戏。
为了让新手能够快速入门,Unity官方提供了一系列的教程,本文将为大家介绍Unity3D官方教程。
Unity3D官方教程是由官方团队编写和制作的,具有权威性和可靠性。
官方教程提供了几个不同的学习路线,从基础知识到高级技巧,旨在帮助开发者逐步提升自己的技能。
官方教程的内容丰富多样,涵盖了Unity3D引擎的各个方面。
首先,官方教程从游戏对象的创建开始,讲解了如何在
Unity3D中构建游戏世界。
通过学习官方教程,开发者可以了解到游戏对象的不同属性和组件,以及如何通过脚本实现对象的交互和动态效果。
其次,官方教程介绍了Unity3D的图形渲染技术,包括材质、着色器和光照等内容。
通过学习这些知识,开发者可以掌握如何创建出逼真且精美的游戏场景。
另外,官方教程还提供了关于碰撞检测、物理模拟和动画控制等方面的内容。
这些知识对于创建具有真实感和互动性的游戏非常重要。
在官方教程的学习过程中,开发者还可以学习到一些常用的工具和技术。
比如,官方教程详细介绍了Unity编辑器的使用方法和功能,让开发者能够更加高效地开发游戏。
总结而言,Unity3D官方教程为开发者提供了一条系统、全面
的学习路径,帮助他们快速入门并提升自己的技术水平。
通过学习官方教程,开发者可以了解到Unity3D引擎的各个方面,并掌握相关的工具和技术。
无论是对于入门者还是有经验的开发者来说,Unity3D官方教程都是一份非常有价值的学习资源。
unity 3d 教程
unity 3d 教程Unity 3D是一种强大的游戏开发引擎,可用于创建各种类型的游戏和应用程序。
在本教程中,我们将学习如何使用Unity 3D 来创建一个简单的平台游戏。
第一步:创建新项目在Unity 3D编辑器中,点击"New Project"按钮创建一个新项目。
给项目起一个适合的名字,选择一个保存路径并确定。
然后点击"Create"按钮开始创建新项目。
第二步:导入角色模型在项目窗口中,右键点击"Assets"文件夹,选择"Import New Asset"。
在文件浏览器中,找到你的角色模型文件并选择导入。
确保选择正确的文件类型和路径,然后点击"Import"按钮导入角色模型。
第三步:创建地图在游戏场景中创建地图,你可以使用Unity 3D编辑器的工具和功能来创建地形、添加纹理和场景物体。
尽量创造一个有趣和挑战的环境,以让玩家有更好的游戏体验。
第四步:添加角色控制器在游戏场景中,拖动角色模型到合适的位置。
然后向场景中添加角色控制器组件,以便玩家可以控制角色的移动和操作。
你可以自定义控制器的参数来调整角色的行为和动作。
第五步:添加游戏逻辑通过使用Unity 3D提供的脚本编程功能,你可以为游戏添加各种逻辑和功能。
例如,你可以编写脚本来处理玩家的输入、碰撞检测、计分等。
使用C#或JavaScript语言编写脚本并将其附加到游戏对象上。
第六步:测试和调试在Unity 3D编辑器中,你可以使用播放模式来测试和调试你的游戏。
通过模拟玩家的输入和场景中的交互,你可以发现和修复游戏中可能存在的问题和错误。
第七步:优化和发布在游戏开发完成后,你可以进行一些优化来提高游戏的性能和质量。
例如,压缩纹理、合并物体、减少多边形数量等。
当游戏准备好发布时,你可以在Unity 3D编辑器中选择合适的平台和配置进行导出。
unity3d中连接数据库
/*在unity3d中连接数据库收藏1.C#代码:*/using UnityEngine;using System;using System.Collections;using System.Data;using MySql.Data.MySqlClient;public class CMySql : MonoBehaviour {// Global variablespublic static MySqlConnection dbConnection;//Just like MyConn.conn in StoryTools beforestatic string host = "192.168.1.100";static string id = "mysql";//这里是你自己的数据库的用户名字,我一开始想用root,发现不行,后来添加了新的用户才可以static string pwd = "123456";static string database = "test";static string result = "";private string strCommand = "Select * from unity3d_test ORDER BY id;";public static DataSet MyObj;void OnGUI(){host = GUILayout.TextField( host, 200, GUILayout.Width(200));id = GUILayout.TextField( id, 200, GUILayout.Width(200));pwd = GUILayout.TextField( pwd, 200, GUILayout.Width(200));if(GUILayout.Button("Test")){string connectionString = string.Format("Server = {0}; Database = {1}; User ID = {2}; Password = {3};",host,database,id,pwd);openSqlConnection(connectionString);MyObj = GetDataSet(strCommand);}bel(result);}// On quitpublic static void OnApplicationQuit() {closeSqlConnection();}// Connect to databaseprivate static void openSqlConnection(string connectionString) {dbConnection = new MySqlConnection(connectionString);dbConnection.Open();result = dbConnection.ServerVersion;//Debug.Log("Connected to database."+result);}// Disconnect from databaseprivate static void closeSqlConnection() {dbConnection.Close();dbConnection = null;//Debug.Log("Disconnected from database."+result);}// MySQL Querypublic static void doQuery(string sqlQuery) {IDbCommand dbCommand = dbConnection.CreateCommand();mandText = sqlQuery;IDataReader reader = dbCommand.ExecuteReader();reader.Close();reader = null;dbCommand.Dispose();dbCommand = null;}#region Get DataSetpublic DataSet GetDataSet(string sqlString){//string sql = UnicodeAndANSI.UnicodeAndANSI.UnicodeToUtf8(sqlString);DataSet ds = new DataSet();try{MySqlDataAdapter da = new MySqlDataAdapter(sqlString, dbConnection); da.Fill(ds);}catch (Exception ee){throw new Exception("SQL:" + sqlString + "\n" + ee.Message.ToString()); }return ds;}#endregion}using UnityEngine;using System;using System.Collections;using System.Data;public class DataBaseTest : MonoBehaviour {public GUISkin myGUISkin = new GUISkin();string strID = "";string strName = "";string strSex = "";int Index = 1;// Use this for initializationvoid Start () {}void OnGUI(){GUI.skin = myGUISkin;if (GUI.Button(new Rect(100,320,100,100),"Click Me")) {foreach(DataRow dr in CMySql.MyObj.Tables[0].Rows) {if (Index.ToString() == dr["ID"].ToString()){strID = dr["ID"].ToString();strName = dr["Name"].ToString();strSex = dr["Sex"].ToString();break;}}Index++;if(Index > 5){Index = 1;}}bel(new Rect(320,100,150,70),"DataBaseTest"); bel(new Rect(300,210,150,70),strID);bel(new Rect(300,320,150,70),strName);bel(new Rect(300,430,150,70),strSex);}}2.導入dll同先前的帖子, 將MySql.data.dll Import至Assets底下, 然後再到Unity\Editor\Data\Frameworks\Mono.framework 中將System.Data.dll 也一起Import至Assets內 , 當然 , 如果想顯示中文的話 , 請參考中文視頻教學 , 建立一個GUISkin與字型3.建立數據庫內容主要是因為代碼中的這段內容static string host = "192.168.1.100";static string id = "mysql";static string pwd = "123456";static string database = "test";private string strCommand = "Select * from unity3d_test ORDER BY id;";其中host ,id , pwd 請自行設定 , 簡單的說就是連進你的MySQL啦~然後建立一個名為test的Database , 在這個test下建立一張table , 取名為unity3d_test ,接下來就為這張unity3d_test建立3個欄位 : ID , Name , Sex (記得將ID設定為primary key 且默認值為1)再來自行填入5筆資料(5筆資料的原因是腳本那邊是設定成5筆資料一個循環 , 使用者可以自行更改腳本試試)4.建立GameObject建立完GameObject後將上面兩個腳本掛上去 , 如果有建立GUISkin , 記得指定GUISkin5.執行執行後先按Test按鈕來連接數據庫 , 然後再按"Click Me"來顯示數據庫內的內容。
unity3d怎么连接sqlserver数据库
unity3d怎么连接sqlserver数据库
虽然在Unity3D中能够通过PlayerPrefs类来保存和读取数据,但是⼀旦数据量增⼤,仅仅通过代码的⽅式存取数据,这样的⼯作量是⾮常⼤的。
那么如何通过使⽤Sql Server数据库来存取数据呢?其实过
程也⾮常简单,过程如下:
1、找到System.Data.dll⽂件,默认的地址是在C:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity,这个根据你所安装的路径有关。
2、将该⽂件复制到你的⼯作空间下的Asset⽂件夹内
3、在你的编辑器中添加引⽤,我⽤的是VS
4、在命名空间内增加程序集
using System;
using System.Data;
using System.Data.SqlClient;
5、编写连接数据库代码
SqlConnection con = null; SqlDataAdapter sda = null; void Start() { string s = @"server=.;database=ConnectTest;uid=sa;pwd=123456"; //注意,这⾥必须使⽤SQL Server和Windows验证模式,否则会报错 con = new SqlConnection(s); con.
6、实验结果。
U3DSQLite数据库
U3DSQLite数据库SQLite数据库SQLite 是⼀款轻型的数据库SQLite 的设计⽬标是嵌⼊式的SQLite 占⽤资源低SQL 指结构化查询语⾔SQL 使我们有能⼒访问数据库SQL 是⼀种 ANSI 的标准计算机语⾔可视化SQLite操作:数据⼤多以表的形式存储在数据库中,创建数据库就是将有所关联数据存储到⼀张表格中,所以可视化数据库操作就是在创建⼀个个的表格。
在这⾥使⽤到SQLiteManagerSQL语法(创建、增、删、查、改)创建表格create table if not exists 表名(字段⼀约束 1...,字段⼆约束,...)往表格中插⼊⼀⾏数据insert into 表名 values(值1,值2,。
)在插⼊数据时赋值的数量必须与创建表格时的变量个数类型保持⼀致insert into 表名 (字段1,字段2,。
) values(值1,值2,。
)在插⼊数据时,可⾃由控制插⼊数据的变量的个数,未赋值的变量会⾃动赋NULL删除delete from 表名 where 条件删除表中所有数据delete from Student查找select 字段名 from 表名查找名字和IDselect s_name,s_id from Student查找表中所有信息select * from 表名修改update 表名 set 字段1=新值1 where 条件update 表名 set 字段1=新值1 where 条件 and 条件(两个条件都成⽴)update 表名 set 字段1=新值1 where 条件 or 条件(两个条件有⼀个成⽴)Unity使⽤SQLite数据库准备⼯作:导⼊mono.data.sqlite.dll⽂件到Assets ⽂件夹下在脚本中添加 using Mono.Data.Sqlite;命名空间//1、找到Unity⼯程中Sqlite⽂件string sqlStr = "Data Source =" + Application.streamingAssetsPath + "/UnityCheDui.sqlite";//streamingAssets在Assets⽂件夹下要创建⼀个相同名字的⽂件夹,将要解析的数据⽂件放到该⽂件夹下//2、创建数据库连接对象SqliteConnection connection = new SqliteConnection (sqlStr);//3、创建数据库指令对象SqliteCommand command = connection.CreateCommand ();//4、打开数据库connection.Open ();//5、编写要执⾏的sqlite语句string sql = "select * from Student";//6、将要执⾏的SQL语句赋值给数据库指令对象mandText = sql;//7、执⾏SQL语句SqliteDataReader reader = command.ExecuteReader ();//8、处理执⾏结果判断是否执⾏成功while (reader.Read ()) {//reader.Read ()表⽰每次只读取⼀条数据(⼀个记录),如果读取成功返回为真,否则返回为假,并且⼀次往后执⾏,直到取到最后⼀条 //获取查询结果的条数int count = reader.FieldCount;//遍历输出for (int i = 0; i < count; i++) {Debug.Log ("字段为:" + reader.GetName (i) + "值为:" + reader.GetValue (i));}}//关闭读取和连接reader.Close ();connection.Close ();在Unity脚本中执⾏SQL语句的三中⽅式:int ExecuteNonQuery()返回受影响的⾏数(常⽤于执⾏增删改操作)object ExecuteScaler()返回查询到的第⼀个值(常⽤于只查询⼀个结果)SqliteDataReader ExecuteReader()返回所有的查询结果在数据库中,对表的字段命名的时候,最好不要将字段对应的外界的变量名与表中字段名字相同,这样的话会出现语法错误。
Unity3 D与数据库通信方法的研究
Unity3 D与数据库通信方法的研究张利利;李仁义;李晓京;马进;惠铎铎【期刊名称】《计算机技术与发展》【年(卷),期】2014(000)003【摘要】基于Unity3D实现系统与两种关系型数据库之间的连接。
随着虚拟仿真技术在各领域的广泛应用,虚拟仿真过程中海量数据的实时性已经成为当前研究的热点。
文中主要研究基于Unity3D的Monodevelop编辑器下,采用C#编程语言实现系统与数据库的连接,并完成海量数据的传输和存储,从而达到系统与数据库的双向交互。
文中给出了具体的代码实现,并结合实际开发过程中遇到的问题给出了具体可行的解决方法。
实践结果表明,通过这种方法连接数据库具有简单、高效等特点。
%The connection between system and two relational databases based on Unity3D is implemented. With the wide application of virtual simulation technology,the real-time of mass data in the virtual simulation has been the hotspot in this field. Mainly research the connection of system and database by C# language,based on Monodevelop ofUnity3D,completing the transmission and storage of massdata,consequently reaching bidirectional alternation. It also shows the detailed code realization and gives the concrete solution with the practical process. The result shows this is simple and efficient.【总页数】4页(P229-232)【作者】张利利;李仁义;李晓京;马进;惠铎铎【作者单位】第四军医大学航空航天医学教育部重点实验室,陕西西安710032;西安热工研究院有限公司,陕西西安710032;第四军医大学航空航天医学教育部重点实验室,陕西西安710032;第四军医大学航空航天医学教育部重点实验室,陕西西安710032;第四军医大学航空航天医学教育部重点实验室,陕西西安710032【正文语种】中文【中图分类】TP301【相关文献】1.基于Unity3 D的工业机器人跨平台可移动离线编程系统的研究和开发 [J], 岑洎涛;张平;何超杰;张振普2.基于Unity3 d的铁路信号设备虚拟现实系统研究 [J], 王文润;王阳萍;雍玖3.Domino/Notes与关系数据库系统的通信方法及实现 [J], 郭小和4.基于Unity3 D的化工设备虚拟培训系统研究 [J], 相茂英;马纯永;韩勇;霍鹏;王春5.数据库应用系统中的数据通信方法 [J], 曹蓉蓉;刘同因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Unity3D教程:Unity3D与Sqlite数据库直连Posted on 2013年01月10日 by U3d / Unity3D 基础教程/被围观 475 次环境介绍:Windows7,Unity3D,SQLite Expert Personal 3开发语言:JavaScript需要的dll文件:Mono.Data.Sqlite.dll和sqlite3.dll,dll文件位置,截图:Unity3D教程:Unity3D与Sqlite数据库直连一定要在这个目录下,请保持一致。
如果需要将编译好的程序发布成功的话,需要改一些地方,具体见下面的截图:Unity3D教程:Unity3D与Sqlite数据库直连要改动的地方已用红色标记,注意这个要改成.NET2.0,这样才能够发布的。
系统默认的不是.NET2.0,这一点要注意!!!下面来看下代码吧,先看下如何创建数据库的代码,这一篇代码是不用挂到任何对象上面去的,你只用把它当成一个工具即可。
如下所示:/* Javascript class for accessing SQLite objects.To use it, you need to make sure you COPY Mono.Data.SQLiteClient.dll from wherever it lives in your Unity directoryto your project's Assets folderOriginally created by dklompmaker in 2009/threads ... sier-Database-StuffModified 2011 by Alan Chatham *///#pragma strict/*代码描述*本代码是为了在Windows环境下运行unity3d和Sqlite数据库而写的;实现的基本功能是unity3d能够与数据库之间进行基本的通信,比如说:在数据库中的数据被改变了以后,unity3d中得到的数据也会在刷新了之后跟着改变;这只是一个基本的核心的技术,为的是能够应用在大型的unity3d项目中,能够存储场景中的项目的属性,在需要改变对象的属性或增加、减少等对象时能够很方便的用得上。
要实现本代码。
首先需要一些dll文件,一个是Mono.Data.SQLiteClient.dll,另外一个是sqlite3.dll,这些文件都能够在unity3d的安装目录中找得到。
除此之外,还需要把这两个文件放在你的项目的这个路径下面:\Assets\Plugins\,没有Plugins文件夹就必须创建这个文件夹,然后将这两个dll文件放在该文件夹写。
当然,如果你想能够在PC上面发布成可执行文件,还需要改动一些地方。
在unity3d中的Play Setting ->Other Setting 中将Api Compatibility的等级改为.NET 2.0;那么这些操作做完了以后,如果你的代码写得没有问题,那么你就可以成功了。
细解释代码:**/import System.Data; // we import our data class 我们先导入我们的数据集import Mono.Data.Sqlite; // we import sqlite 我们导入sqlite数据集,也就是Plugins 文件夹下的那个dll文件class dbAccess {// variables for basic query accessprivate var connection : String; //数据库的连接字符串,用于建立与特定数据源的连接private var dbcon : IDbConnection; //IDbConnection的连接对象,其实就是一个类对象private var dbcmd : IDbCommand; //IDbCommand类对象,用来实现操作数据库的命令:注解:我在网上资料看到的如何实现对数据库执行命令://首先创建一个IDbConnection连接对象,然后将一条数据库命令赋值给一个字符串,利用这个字符串和连接对象//就可以创建(new)一个IDbCommand对象了,然后使用提供的方法就可以执行这个命令了。
private var reader : IDataReader; //reader的作用就是读取结果集的一个或多个只进结果流function OpenDB(p : String){connection = "URI=file:" + p; // we set the connection to our databasedbcon = new SqliteConnection(connection);dbcon.Open(); //打开数据库连接操作}function BasicQuery(q : String, r : boolean){ // run a baic Sqlite querydbcmd = dbcon.CreateCommand(); // create empty commandmandText = q; // fill the commandreader = dbcmd.ExecuteReader(); // execute command which returns a reader 返回IDataReader的对象,创建IDataReader的对象if(r){ // if we want to return the readerreturn reader; // return the reader 返回读取的对象,就是读到了什么东西}}// This returns a 2 dimensional ArrayList with all the// data from the table requestedfunction ReadFullTable(tableName : String){var query : String;query = "SELECT * FROM " + tableName;dbcmd = dbcon.CreateCommand();mandText = query;reader = dbcmd.ExecuteReader();var readArray = new ArrayList();while(reader.Read()){var lineArray = new ArrayList();for (var i = 0; i < reader.FieldCount; i++)lineArray.Add(reader.GetValue(i)); // This reads the entries in a row readArray.Add(lineArray); // This makes an array of all the rows}return readArray; // return matches}// This function deletes all the data in the given table. Forever. WATCH OUT! Use sparingly, if at allfunction DeleteTableContents(tableName : String){var query : String;query = "DELETE FROM " + tableName;dbcmd = dbcon.CreateCommand();mandText = query;reader = dbcmd.ExecuteReader();}function CreateTable(name : String, col : Array, colType : Array){ // Create a table, name, column array, column type arrayvar query : String;query = "CREATE TABLE " + name + "(" + col[0] + " " + colType[0];for(var i=1; i<col.length; i++){query += ", " + col + " " + colType;}query += ")";dbcmd = dbcon.CreateCommand(); // create empty commandmandText = query; // fill the commandreader = dbcmd.ExecuteReader(); // execute command which returns a reader}function InsertIntoSingle(tableName : String, colName : String, value : String){ // single insertvar query : String;query = "INSERT INTO " + tableName + "(" + colName + ") " + "VALUES (" + value + ")";dbcmd = dbcon.CreateCommand(); // create empty commandmandText = query; // fill the commandreader = dbcmd.ExecuteReader(); // execute command which returns a reader}function InsertIntoSpecific(tableName : String, col : Array, values : Array){ // Specific insert with col and valuesvar query : String;query = "INSERT INTO " + tableName + "(" + col[0];for(var i=1; i<col.length; i++){query += ", " + col;}query += ") VALUES (" + values[0];for(i=1; i<values.length; i++){query += ", " + values;}query += ")";dbcmd = dbcon.CreateCommand();mandText = query;reader = dbcmd.ExecuteReader();}function InsertInto(tableName : String, values : Array){ // basic Insert with just valuesvar query : String;query = "INSERT INTO " + tableName + " VALUES (" + values[0];for(var i=1; i<values.length; i++){query += ", " + values;}query += ")";dbcmd = dbcon.CreateCommand();mandText = query;reader = dbcmd.ExecuteReader();}// This function reads a single column// wCol is the WHERE column, wPar is the operator you want to use to compare with,// and wValue is the value you want to compare against.// Ex. - SingleSelectWhere("puppies", "breed", "earType", "=", "floppy")// returns an array of matches from the command: SELECT breed FROM puppies WHERE earType = floppy;function SingleSelectWhere(tableName : String, itemToSelect : String, wCol : String, wPar : String, wValue : String){ // Selects a single Itemvar query : String;query = "SELECT " + itemToSelect + " FROM " + tableName + " WHERE " + wCol + wPar + wValue;dbcmd = dbcon.CreateCommand();mandText = query;reader = dbcmd.ExecuteReader();var readArray = new Array();while(reader.Read()){readArray.Push(reader.GetString(0)); // Fill array with all matches}return readArray; // return matches}function CloseDB(){reader.Close(); // clean everything up reader = null;dbcmd.Dispose();dbcmd = null;dbcon.Close();dbcon = null;}}7、如何在Unity3D中使用这个数据库的代码://#pragma strict/* Script for testing out SQLite in Javascript 2011 - Alan ChathamReleased into the public domainThis script is a GUI script - attach it to your main camera.It creates/opens a SQLite database, and with the GUI you can read and write to it. */// This is the file path of the database file we want to use// Right now, it'll load TestDB.sqdb in the project's root folder.// If one doesn't exist, it will be automatically created.public var DatabaseName : String = "TestDB.sqdb";// This is the name of the table we want to usepublic var TableName : String = "TestTable";var db : dbAccess;function Start(){// Give ourselves a dbAccess object to work with, and open itdb = new dbAccess();db.OpenDB(DatabaseName);// Let's make sure we've got a table to work with as well!var tableName = TableName;var columnNames = new Array("firstName","lastName");var columnValues = new Array("text","text");try {db.CreateTable(tableName,columnNames,columnValues);}catch(e){// Do nothing - our table was already created判断表是否被创建了//- we don't care about the error, we just don't want to see it}}// These variables just hold info to display in our GUIvar firstName : String = "First Name";var lastName : String = "Last Name";var DatabaseEntryStringWidth = 100;var scrollPosition : Vector2;var databaseData : ArrayList = new ArrayList();// This GUI provides us with a way to enter data into our database// as well as a way to view itfunction OnGUI(){GUI.Box(Rect (25,25,Screen.width - 50, Screen.height - 50),"Data"); GUILayout.BeginArea(Rect(50, 50, Screen.width - 100, Screen.height - 100)); // This first block allows us to enter new entries into our table GUILayout.BeginHorizontal();firstName = GUILayout.TextField(firstName, GUILayout.Width (DatabaseEntryStringWidth));lastName = GUILayout.TextField(lastName, GUILayout.Width (DatabaseEntryStringWidth));//lastName = GUILayout.TextField();GUILayout.EndHorizontal();if (GUILayout.Button("Add to database")){// Insert the dataInsertRow(firstName,lastName);// And update the readout of the databasedatabaseData = ReadFullTable();}// This second block gives us a button that will display/refresh the contents of our databaseGUILayout.BeginHorizontal();if (GUILayout.Button ("Read Database"))databaseData = ReadFullTable();if (GUILayout.Button("Clear"))databaseData.Clear();GUILayout.EndHorizontal();bel("Database Contents");scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.Height(100)); for (var line : ArrayList in databaseData){GUILayout.BeginHorizontal();for (var s in line){bel(s.ToString(), GUILayout.Width(DatabaseEntryStringWidth));}GUILayout.EndHorizontal();}GUILayout.EndScrollView();if (GUILayout.Button("Delete All Data")){DeleteTableContents();databaseData = ReadFullTable();}GUILayout.EndArea();}// Wrapper function for inserting our specific entries into our specific database and table for this filefunction InsertRow(firstName, lastName){var values = new Array(("'"+firstName+"'"),("'"+lastName+"'"));db.InsertInto(TableName, values);}// Wrapper function, so we only mess with our table.function ReadFullTable(){return db.ReadFullTable(TableName);}// Another wrapper function...function DeleteTableContents(){db.DeleteTableContents(TableName);}运行结果:Unity3D教程:Unity3D与Sqlite数据库直连这是在Unity3D中运行的结果,数据的操作结果如下:Unity3D教程:Unity3D与Sqlite数据库直连我们看见了数据的操作能够成功,经过测试,其他的Button也都能出现相对应的效果,那我们再看看这个到底有没有生成我们想要的数据库文件:Unity3D教程:Unity3D与Sqlite数据库直连Unity3D教程:Unity3D与Sqlite数据库直连文件当中数据:经测试,我们在对数据库中的数据进行操作的时候,我们的Unity3D 中的数据也会发生相应的改变了!。