Доступ статического члена к другому классу не работает? - PullRequest
0 голосов
/ 07 ноября 2019

Я столкнулся с проблемой, когда я пытаюсь получить доступ к статическому члену, чтобы это сообщение отображалось в моей базе данных, когда пользователь выбирает этот конкретный объект. Кстати, мой интерфейс я использую в единстве. Итак, кто-нибудь может помочь мне решить эту проблему. Спасибо за помощь.

вот мой код:

     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();

            }


    }

TextDisplay:

    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!");
                    }
                }
            } 

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Прежде всего, Ошибка HTTP 404 означает, что указанный URL-адрес не найден. Это не имеет ничего общего с полем static.


Поскольку мы не видим, где / если вы присваиваете значение TextDisplay.Message, оно всегда может быть null. (Вы также подтвердили это, используя точку останова.) Я бы по крайней мере инициализировал ее пустым string, чтобы избежать исключений.

public static string Message;

Поскольку вы просили об этом:

Как сказано в комментариях, я бы предпочел использовать UnityWebRequest.Put, чтобы не блокировать весь поток, пока запрос не будет выполнен.

Это только пример (с небольшими правками) из API, ноЯ предполагаю, что это довольно просто, и вы должны быть в состоянии использовать его для своих целей*

Там было бы что-то вроде

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);
  }
}
0 голосов
/ 07 ноября 2019

Если вы получаете ошибку 404 из вашего веб-запроса, то это потому, что Firebase не может найти запрошенный вами ресурс. Убедитесь, что ваш URL (https://PROJECT_URL.firebaseio.com/brokenComp.json) правильный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...