unity版本:2020.1.0f1
1. unity与数据库的通信方法
Mysql版本若是8,要想连上数据库需要更改Mysql的配置文件my.ini,将其默认的[mysql]解码方式换成下面的语句,之后在重启电脑,重启电脑,重启电脑。(我就是没有重启电脑导致配置不生效浪费好多时间)
default_authentication_plugin = mysql_native_password
using System.Collections
using System.collections.Generic
using UnityEngine;
using UnityEngine.UI;
using MySql.Data.MySqlClient;
using System;
using System.Data;
public class connectToMySql:MonoBehaviour
{
//数据库设置
private MySqlConnection connection;
private string server="127.0.0.1";
private string port="3306";
private string database="数据库名称";
private string userName = "登入数据库的用户名";
private string password = "登入数据库的密码";
//连接数据库
void Start()
{
string connectionString = string,Format("server={0};port={1};database={2};user={3};password={4};",server,port,database,user,password);
connection = new MySqlConnection(connectionString);
try
{
connection.Open();
Debug,Log("连接成功");
}
catch(Exception ex)
{
Debug.Log("连接失败"+ex.Message);
}
connection.Close();
}
}
以上代码只实现了在unity中连接数据库,当项目导出其他格式后就无法连接数据库了。
2. 导出webGL格式后网页与unity的通信方法
步骤如下:
一、在Assets文件夹下创建Plugins文件夹,在创建以.jslib为后缀的js文件
mergeInto(LibraryManager.library),{
//此处写unity在网页中调用的函数
Hello:function(){
Consloe.log('hello,world')
}
二、在Script文件夹下创建unity传给网页所执行方法的文件,我取名为UnityCallWeb
using System.Collections
using System.collections.Generic
using UnityEngine;
using System.Runtime.InteropServices;
public class UnityCallWeb:MonoBehaviour
{
[DllImport("_internal")]
private static extern void hello();
void Start()
{
hello();
}
}
三、在Script文件夹下创建网页传数据给Unity的文件,我取名为WebCallUnity
using System.Collections
using System.collections.Generic
using UnityEngine;
using UnityEngine.UI;
public class WebCallUnity:MonoBehaviour
{
//我需要讲传入的字符串用~分开,形成数组,在赋值给unity中的showText
public Text[] showText;
public void Receive(string s)
{
string[] words = s.Splite('~');
for (int i = 0;i<showText.Length;i++)
{
showText[i].text = words
}
}
}
四、将WebCallUnity脚本挂载在canvas中(也可挂载在其他位置),在unity项目中给showText绑定元素
五、将项目导出成WebGL格式,在生成的index.html文件中做如下修改。
//找到文件的.then(unityInstance)=>{}在这个函数里面添加要传给unity的数据,也就是添加下面这行语句
//其中canvas是挂载了WebCallUnity的物件,需要根据自己挂载脚本的位置做出相应改变
//receive是在unity中执行的函数,对传给unity的数据做处理。
//abc~def~ghi~jko~是传给unity的字符
unityInstance.SendMessage("canvas",,"receive","abc~def~ghi~jko~")
3. webGL、unity与数据库的通信方法
实现了从html文件中传输数据到unity之后,要想实现unity项目导出后与数据库连接,只需在导出后的html上获取从数据库得到的数据,在数据其传输给unity即可。即对导出后的html文件进行二次开发
由于代码太多了,公司不能连外网就不敲了,太多了。