unity3d发布webgl读取MySQL

unity3d可以直接读取MySQL,但是打包成webgl网页格式之后便会受到限制。 我各种翻墙,从网上查找各种文章,都没有找到完整的技术解决方案。只好自己淌着水过河,终于找到了一个通过PHP解决的方法。 PHP读取MySQL,然后unity加载PHP的返回。

首先是用的体unity加载PHP的代码,由于加载可以传参,但是返回只能是字符串格式,因此,需要给解析的变量名编入数组,再加上分隔符,收到返回后然后再用正则表达式分割字符串。

这里是php去读取MySQL然后编成字符串的代码。

<?php

header("Access-Control-Allow-Credentials: true");
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Allow-Headers: Accept, X-Access-Token, X-Application-Name, X-Request-Sent-Time');

if (!empty($_POST["sql"]))
{
    $sql = $_POST["sql"];
    $table = $_POST["table"];
	$name = $_POST["name"];
}

$servername = "10.1111111";
$username = "aaa";
$password = "aaa";
 
$name1 = explode('@',$name); 
 
$conn=mysql_connect($servername,$username,$password) or die("error connecting") ; //连接数据库
 
mysql_query("set names 'utf8'"); //数据库输出编码 应该与你的数据库编码保持一致.南昌网站建设公司百恒网络PHP工程师建议用UTF-8 国际标准编码.
 
mysql_select_db($table); //打开数据库
 
 
$result = mysql_query($sql,$conn); //查询

//echo $name;

while($row = mysql_fetch_array($result))
{
	for($i=0;$i<count($name1);$i++)
	{
		$name2=$name1[$i];
		//echo $name1;
		//echo $name2;
		if(array_key_exists($name2,$row))
		{
			echo $row[$name2];
			if($i<(count($name1)-1))
			{
				echo "###";
			}	
		}

	}
	
echo "@@";
}


	

?>

这是C#加载PHP的返回的代码,将参数传递进去,www加载PHP。

     /// <summary>
     /// 调取mysql 中KKS
     /// sql 语句   表库名  变量名列表
     /// </summary>
     public IEnumerator getKKSWithPHP(string sql, string table, List<string> nameList,Action< List<string>,string> callBack)
     {
         yield return new WaitForSeconds(0.5f);
         WWWForm form = new WWWForm();
         string name = "";
         for (var i = 0; i < nameList.Count; i++)
         {
             name += nameList[i];
             if (i < nameList.Count - 1)
             {
                 name += "@";
             }
         }

         form.AddField("sql", sql);
         form.AddField("table", table);
         form.AddField("name", name);

         WWW www = new WWW("http://11.11.11.11/index0.php", form);

         yield return www;
         if (string.IsNullOrEmpty(www.error))
         {
             //Debug.LogError(Time.time);
             callBack(nameList,www.text);
         }
         else
         {
             Debug.LogError(www.error);
             callBack(null, null);
         }
     }

此时,根据解析完的字符串,遍历变量的数组,使用反射获取值。

注意,php代码需要部署在服务器,否则加载完不会运行,只是当做一段txt。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Unity3D是一款功能强大的游戏引擎,可以用来开发各种类型的游戏和应用程序。其中,导出WebGL格式是Unity3D的一个重要功能,它使得我们可以将游戏或应用程序直接发布Web上,让用户可以通过浏览器来访问和体验。 使用Unity3D导出WebGL格式非常简单。首先,我们需要确保在Unity中我们的项目已经设置好了所需的场景、模型、材质和脚本等。然后,我们可以选择菜单栏中的"Build Settings"选项,打开一个设置窗口。 在"Build Settings"窗口中,我们需要选择"WebGL"作为目标平台,并设置一些导出选项。例如,我们可以选择导出的文件名和保存的路径。我们还可以选择是否需要压缩文件,以及是否需要在导出过程中进行连接和优化操作。 当我们设置好导出选项后,只需点击"Build"按钮,Unity3D将开始导出我们的项目为WebGL格式。这个过程可能需要一些时间,具体取决于我们的项目大小和计算机性能。 完成导出后,Unity将生成一个文件夹,其中包含所有导出的WebGL文件。我们可以将这个文件夹上传到Web服务器上,然后用户可以通过使用任何兼容的浏览器访问我们的游戏或应用程序。 使用Unity3D导出WebGL格式,我们可以将我们的项目变成一个跨平台的应用程序,用户可以通过使用不同设备上的Web浏览器来访问和播放。这种格式的导出不仅便于使用,而且还可以保留游戏或应用程序的许多功能和性能,使其在Web上的运行效果更加流畅和逼真。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值