[英]Accessing static member to another class not working?
我遇到了一個問題,當用戶選擇特定的 object 時,我試圖訪問 static 成員以使該消息顯示在我的數據庫中。 順便說一句,我的前端我正在統一使用它。 那么,誰能幫我解決這個問題。 謝謝您的幫助。
這是我的代碼:
public void NextButton()
{
if (highlightSet == true)
{
var httpWebRequest =
(HttpWebRequest) WebRequest.Create("https://PROJECT_URL.firebaseio.com/brokenComp.json");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "PUT";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string missingObjectCount = TextDisplay.Message;
streamWriter.Write(missingObjectCount);
}
var httpResponse = (HttpWebResponse) httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
}
}
文本顯示:
public class TextDisplay: MonoBehaviour
{
public static string Message;
}
更新的代碼
public void StartUpload()
{
StartCoroutine(Upload());
}
public void NextButton()
{
if (highlightSet == true)
{
IEnumerator Upload()
{
byte[] myData = System.Text.Encoding.UTF8.GetBytes(TextDisplay.Message);
using (UnityWebRequest www = UnityWebRequest.Put("https://PROJECT_URL.firebaseio.com/brokenComp.json", myData))
{
yield return www.Send();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Upload complete!");
}
}
}
如果您從 web 請求中收到 404 錯誤,那是因為 Firebase 無法找到您請求的資源。 確保您的 URL ( https://PROJECT_URL.firebaseio.com/brokenComp.json
) 是正確的。
首先HTTP 錯誤 404表示未找到提供的 URL。 這與static
字段無關。
由於我們看不到/如果您為TextDisplay.Message
分配值,它可能始終是null
。 (您還使用斷點確認了這一點。)我至少會使用空string
對其進行初始化以避免異常。
public static string Message;
既然你要求它:
正如評論中所說,我寧願使用UnityWebRequest.Put
在請求完成之前不阻塞整個線程。
這只是 API 中的示例(稍作修改),但我想它非常簡單,您應該可以將它用於您的目的
public class MyBehavior : MonoBehaviour
{
public void NextButton()
{
StartCoroutine(Upload());
}
IEnumerator Upload()
{
byte[] myData = System.Text.Encoding.UTF8.GetBytes(TextDisplay.Message);
using (UnityWebRequest www = UnityWebRequest.Put(YOUR_URL, myData))
{
yield return www.Send();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Upload complete!");
}
}
}
}
順便說一句,有什么阻礙你使用Firebase SDK嗎?
會有類似的東西
public class MyScript: MonoBehaviour {
void Start() {
// Set up the Editor before calling into the realtime database.
FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://YOUR-FIREBASE-APP.firebaseio.com/");
// Get the root reference location of the database.
reference = FirebaseDatabase.DefaultInstance.RootReference;
}
public void NextButton()
{
// ported the variable names from your latest question
mDatabaseRef.Child("messages").Child("message").SetValueAsync(TextDisplay.Message);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.