[英]Consuming a Quiz web service with C#
我目前正在Unity 3D中使用C#制作Quiz Web服務。 我對C#比較陌生。
我遇到了一個問題,我似乎無法自己解決。 我能夠一次從數據庫中檢索所有問題和可能的答案。 我的問題是我無法拆分它們,一次只能顯示一個問題和一組答案。 我不確定該怎么做!
這是我調用Web服務的方法:
public void retrieveQuizObject(){
QuizService service = new QuizService();
quizModel q = new quizModel();
quizModel[] quizArray = new quizModel[3];
List<quizModel> quizList = new List<quizModel>();
//consuming web service
object[] qArray = quizList.ToArray();
qArray = service.playQuiz();
foreach(object element in qArray)
{
quizArray[n] = (quizModel)element;
Debug.Log ("Array Size: " + quizArray.Length);
Debug.Log ("Questions: " + quizArray[n].question);//just checking to see questions returned
}
}
這是Web服務SQL:
"SELECT * from quiz ORDER BY RAND() LIMIT 3"
測驗表包含以下列:QuizId,問題,答案A,答案B,答案C,答案D。答案A永遠是正確的答案。 我打算稍后改組它們!
我想使用GUI界面一次顯示每個問題和四個可能的答案,而不是一次顯示所有問題(例如誰想要成為百萬富翁)。 當用戶選擇他們的選項時,將出現一個新問題。 我嘗試了多種循環,並嘗試僅在按下GUI按鈕但無法弄清楚時才遍歷循環。
我應該如何處理? 我應該使用哪個循環以及如何暫停它?
我非常感謝您的幫助! 謝謝!
我不確定上面的代碼是否是以偽形式實現的目標,或者您是否確實在運行服務/客戶端(如果沒有),看來您需要首先設置框架,然后才能了解表設計和游戲機制的細節。 。
我將開始圍繞Web API構建框架,如果您遵循一些不錯的教程,它們將非常簡單。
然后為了保持持久性,如果要使用SQL,則可以使用Use Entity Framework,或者使用NoSQL解決方案可能更有意義,例如Redis:
http://www.d80.co.uk/post/2011/05/12/Redis-Tutorial-with-ServiceStackRedis.aspx
暴露了端點之后,您將使用WWW在Unity3D中使用它
以下是我用來將游戲對象實例化為數據包的方法,該數據包在完成時會自行處理,您傳入一個接收字符串的回調函數,以便可以異步處理響應。
class CoroutineServiceAsync : IServiceAsync
{
public void SendRequest(string url, Action<string> callback, string data)
{
Debug.Log("Sending service call with data: " + data);
GameObject obj = new GameObject("ServiceCall: " + data);
CoRoutineRequest packet = obj.AddComponent<CoRoutineRequest>();
packet.SendRequest(url, callback, data);
}
}
class CoRoutineRequest : MonoBehaviour
{
void Start()
{
DontDestroyOnLoad(gameObject);
}
public void SendRequest(string url, Action<string> callback, string data)
{
StartCoroutine(StartSendRequest(url, callback, data));
}
IEnumerator StartSendRequest(string url, Action<string> callback, string data)
{
WWW www = new WWW(url + "/" + data);
yield return www;
if (callback != null)
callback(www.text);
Destroy(gameObject);
}
}
玩家回答或開始后,您將獲得“問答”行。 如果您不想一次全部彈出答案選項,那么當您循環/迭代答案選項時,將會有一個延遲。
我認為您唯一需要的循環是顯示答案選項,其余的則是基於玩家的輸入(當他們選擇答案時)以及當您的回叫出現問與答行數據包時觸發事件驅動的(這將觸發數據)在您的GUI中顯示)。
根據所需的安全性之王,您可能需要處理某些邏輯服務器端,因此需要管理會話。 我會從簡單開始,假設玩家的表現很好。
希望我正確理解了這個問題,並能提供一些幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.