Ich erstelle eine HoloLens App mit Unity, die Daten aus einer REST API nehmen und anzeigen muss. Ich verwende derzeit den WWW-Datentyp, um die Rückgabeanweisung für Daten und Yield in einer Coroutine abzurufen, die von der Funktion Update() aufgerufen wird. Wenn ich versuche, den Code auszuführen, erhalte ich die neuesten Daten von der API, aber wenn jemand neue Daten auf die API drückt, erhält er nicht automatisch die neuesten Daten in Echtzeit und ich muss die App neu starten, um die zu sehen neueste Daten. Mein Code:WWW/UnityWebRequest POST/GET Anfrage wird nicht die neuesten Daten von Server/URL
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.IO;
public class TextChange : MonoBehaviour {
// Use this for initialization
WWW get;
public static string getreq;
Text text;
bool continueRequest = false;
void Start()
{
StartCoroutine(WaitForRequest());
text = GetComponent<Text>();
}
// Update is called once per frame
void Update()
{
}
private IEnumerator WaitForRequest()
{
if (continueRequest)
yield break;
continueRequest = true;
float requestFrequencyInSec = 5f; //Update after every 5 seconds
WaitForSeconds waitTime = new WaitForSeconds(requestFrequencyInSec);
while (continueRequest)
{
string url = "API Link goes Here";
WWW get = new WWW(url);
yield return get;
getreq = get.text;
//check for errors
if (get.error == null)
{
string json = @getreq;
List<MyJSC> data = JsonConvert.DeserializeObject<List<MyJSC>>(json);
int l = data.Count;
text.text = "Data: " + data[l - 1].content;
}
else
{
Debug.Log("Error!-> " + get.error);
}
yield return waitTime; //Wait for requestFrequencyInSec time
}
}
void stopRequest()
{
continueRequest = false;
}
}
public class MyJSC
{
public string _id;
public string author;
public string content;
public string _v;
public string date;
}
Sie sollten keine Koroutine Funktion in der Update-Funktion anrufen, wie Sie in Ihrer Frage haben. Das ist, als ob man 60+ Anfragen in einer Sekunde erledigt. Ich habe das in Ihrer Frage angesprochen, indem Sie es durch einen Code ersetzen, der wartet und dann erneut eine Anfrage macht. Wenn das Ihr Problem nicht löst, sehen Sie meine Antwort. – Programmer
Haben Sie die Lösung versucht? – Programmer
Ja, und es hat wie ein Charme funktioniert .... –