簡體   English   中英

將 static 成員訪問到另一個 class 不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM