我正在为学校建立一个在线测试系统,问题和答案保存在学校网站服务器上的xml文件中,问题是我不知道如何在服务器上保存xml文件我该怎么称呼它? 我的代码到现在为止
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.IO;
using System;
public class XMLSerializer : MonoBehaviour {
public string studentname;
public void fff() {
string path = "d:/" + "studentanswer"+ ".xml";
Debug.Log (path);
XmlSerializer serializer = new XmlSerializer (typeof(Level1));
Level1 ak47 = new Level1{ Items=new [] {new mainitems { Question = "a", Answer = "2" },new mainitems { Question="b",Answer="5"}}};
StreamWriter writer = new StreamWriter(path);
serializer.Serialize(writer, ak47);
writer.Close();
}
}
答案 0 :(得分:1)
您将需要某种数据层与数据库通信!
只是一些想要使用数据层的方法:
// This would probably be your fff() method.
public void SaveXml(string xmlData) {
StartCoroutine(DataLayer.SaveXml(xmlData));
}
然后我们的静态类将与数据库层对话:
using UnityEngine;
static class DataLayer
{
public static string url = "http://www.yourdomain.com/DatabaseLayer.php";
public static IEnumerator SaveXml(string xmlData)
{
WWWForm wwwForm = new WWWForm();
wwwForm.AddField("action", "save");
wwwForm.AddField("xmldata", xmlData);
WWW www = new WWW(url, wwwForm);
// Wait until the request has been sent and a response from the server been recieved:
yield return www;
if (www.error == null) {
// Success! Debug.Log what the server displays
Debug.Log(www.text);
}
}
然后是DatabaseLayer.php(我们之前在url
中引用)(不一定是php,它可以是您选择的任何语言,可以接收POST并与数据库通信Php设置起来非常简单)一个快速的例子,没有安全性的样子:
$con = new mysqli("your.host","your_user","your_pwd","your_db");
if ($con->connect_errno)
{
echo "Failed to connect to db: " . $con->connect_error;
}
// If xmlData has been sent and the POST parameter "action" == "save"
if ($_POST['xmlData'] && $_POST['action'] == "save")
{
$xmlData = $_POST['xmlData'];
$query = 'insert into YourTable (xmlDataColumnName) values ("' . $xmlData . '")';
if ($res = $con->query($query)) {
echo 'Level saved';
} else {
echo $con->error;
}
}
流程的简单概述是:
Unity MonoBehaviour游戏脚本 - >静态数据层类< - > Php - < - >数据库
如果您想了解如何使用协同程序以及在MonoBehaviour中完成协程时获取信息的更多信息和示例(在上面的概述中将“箭头”从静态数据层类添加回Unity MonoBehaviour游戏脚本){{3 }}!
关于从数据库获取信息,它是相同的,但不是只插入php层中的数据库,而是从数据库中选择并打印它,这将使我们在Static DataLayer类中接收到这些信息在www.text
。 www.text
是您要求的网站上显示的所有内容。
答案 1 :(得分:0)
您将需要Web服务器中的某些服务器端脚本(例如PHP),然后您可以使用WWW类调用这些脚本。
检查一些PHP + unity教程,你将有一个良好的开端