我有一个通过unity3d webGL运行的程序,它运行得很好,但我发现从程序中的人那里获得反馈正成为一个问题。
所以我创建了一个非常基本的表单,用户可以在程序中填写,按发送,它会发送给我。
我的问题是,通过的信息是一系列数字而不是消息。
以下是代码的各个部分,如果你发现了什么,请告诉我。
C#Unity3d表单代码
public void Send_help()
{
string the_date = DateTime.Now.ToString ("yyyy MMMMM dd");
string the_message = help_message.text;
string the_email = help_email.text;
Tcontroller.GetComponent<Trcontroller> ().Send_helpMessage (the_date,the_email,the_message);
Help_stuff.gameObject.SetActive (false);
audio.PlayOneShot (next);
}
Tcontroller中的Send_helpMessage
private static extern void Message_help(string d, string e, string m);
[DllImport("__Internal")] //The imported function in my pluggin
public void Send_helpMessage(string date, string email, string message)
{
Message_help (date, email, message);
}
插件代码
var talk = {
Message_help: function(d,e,m)
{
Send_message_help(d,e,m);
}
};
mergeInto(LibraryManager.library, talk);
网站代码
var this_date = '';
var this_email = '';
var this_message = '';
function Send_message_help(d,e,m)
{
this_date = d;
this_email = e;
this_message = m;
var Data = '&this_date='+this_date+'&this_email='+this_email+'&this_message='+this_message;
$.ajax({
url : "message.php",
type: "POST",
data : Data
});
};
最后是pHp代码
$MS = new mysqli ( $db_host, $db_username, $db_pass, $db_name );
$this_date = $_POST['this_date'];
$this_email = $_POST['this_email'];
$this_message = $_POST['this_message'];
$sqlupdate_user_message = "INSERT into contact(email, date, message) values('$this_email','$this_date','$this_message')";
mysqli_query ( $connMS, $sqlupdate_user_message );
mysqli_close($MS);
您可以输入任何类型的字符串值,输出到数据库的数字为
我知道WebGL仍然是新的,但它符合我的目的,除了这种形式之外,webgl和数据库之间的通信方面的一切都很好。提前感谢您的帮助。
答案 0 :(得分:0)
请在插件代码(* .jslib)中尝试:
var talk = {
Message_help: function(d,e,m)
{
var date = Pointer_stringify(d);
var email = Pointer_stringify(e);
var message = Pointer_stringify(m);
Send_message_help(date,email,message);
}
};
mergeInto(LibraryManager.library, talk);
当您从Unity WebGL向jslib发送字符串时,需要使用Pointer_stringify辅助函数将其更改回字符串。你可以在这里找到更多 link