栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

[Unity-经验]Unity WebGL连接数据库(服务器部署php文件+C#连接php上传数据)

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Unity-经验]Unity WebGL连接数据库(服务器部署php文件+C#连接php上传数据)

项目场景:

Unity的WebGL至今存在许多如视频无法播放,数据库难以连接等多种问题,此处记录Unity的数据库连接问题,并附上实现代码,代码一共分为两个部分,一部分为php代码,用于部署在服务器端直接连接数据库,作为Unity和数据库中间的桥梁,协助数据交换;另一部分则为C#代码,在Unity项目当中,与服务器上的php文件进行连接上传和获取数据。


php部分

需要注意的是,php7.0以上已经停用mysql_connect,而是改用mysqli_connect,后面多了一个i,其他mysql函数也有类似的变化。同时一些函数的参数个数,参数位置也都有发生变化。此处采用的为较新版本的php。


    die("error");
}
//改成你自己的数据库名称
$result = mysqli_select_db($conn,"stu_data");
if(!$result)
{
    mysqli_close($conn);
    die("error");
}

$sql = "set names utf8";
//运行
mysqli_query($conn,$sql);

//写入数据库
$sql = "insert into stu_data(stu_name,stu_id,time,score) values('".$uname."','".$upass."','".$utime."',".$uscore.")";
//运行
$rs=mysqli_query($conn,$sql);
if(!$rs)
{
    mysqli_close($conn);
    die("error");
}
else
{
    echo "success";
}
 
//关闭数据库
mysqli_close($conn);
?>

在写完php文件之后,只需要把该php文件上传到服务器中,并获得该php文件的访问地址,如
"http://www.xxxxxx.xyz/xxxx.php"
之后会在Unity C#部分用到。


Unity C#部分
using MySql.Data.MySqlClient;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;

public class ResultController : MonoBehaviour
{
    private string Url = "http://www.xxxxxx.xyz/xxxx.php";
    void Start()
    {
        

        //--------------------建立连接语句——针对WebGL的情况-----------------------

        WWWForm form = new WWWForm();
        form.AddField("stu_name", "zff");
        form.AddField("stu_id", "123456");
        form.AddField("time", "01:01");
        form.AddField("score", 222);

        StartCoroutine(SendPost(Url, form));
    }

    IEnumerator SendPost(string url, WWWForm wForm)
    {
        UnityWebRequest www = UnityWebRequest.Post(Url, wForm);//新版的Unity已经摒弃了WWW,而改用UnityWebRequest
 
        yield return www.SendWebRequest();
        if (www.result==UnityWebRequest.Result.ConnectionError||www.result==UnityWebRequest.Result.ProtocolError)
        {
            Debug.Log(www.error);
        }
        else
        {
            Debug.Log("发送成功");
        }
    }
}



这里的变量,所传的值就可以根据自己的需要自由修改和传送了,在哪个生命周期执行也可以自行调整,只是注意两个地方,一个是using MySql.Data.MySqlClient; 需要自己去下载对应的包,详细操作和资源可以自行搜索;另一个是form.Addfield那里的名称要和php文件中的对应起来。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/898974.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号