Потребляя веб-сервисы RESTful в Unity3d, не можете преобразовать из 'System.Collections.IEnumerable' в 'string' ... как конвертировать или обойти? - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь использовать веб-службы RESTful в Unity3d с помощью сетевого интерфейса Unity Engine. После этого видео https://youtu.be/TrOLTrIX9Yk?t=289 Но я получаю «Аргумент 1: невозможно преобразовать из« System.Collections.IEnumerable »в« строку »» https://i.imgur.com/Q0ltU6X.png

Попытка «использования веб-служб RESTful вUnity3d и узнайте, как использовать Unity Engine Networking API ", используя мой собственный Rest Api, следуя этому видео https://www.youtube.com/watch?v=TrOLTrIX9Yk, на этом этапе видео https://youtu.be/TrOLTrIX9Yk?t=289 Я заблудился

Попробовал посмотреть,это была моя версия Unity, поэтому я скачал 2018.1.1f1 (которую Дилмер использовал в своем видео). Произошла та же ошибка.

//RestClient.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class RestClient : MonoBehaviour
{
    private static RestClient _instance;

    public static RestClient Instance 
    {
        get
        {
            if (_instance == null)
            {
                _instance = FindObjectOfType<RestClient>();
                if (_instance == null)
                {
                    GameObject go = new GameObject();
                    go.name = typeof(RestClient).Name;
                    _instance = go.AddComponent<RestClient>();
                    DontDestroyOnLoad(go);
                }
            }
            return _instance;
        }
    }

    public IEnumerable Get(string url)
    {
        using (UnityWebRequest www = UnityWebRequest.Get(url))
        {

            yield return www.SendWebRequest();

            if (www.isNetworkError)
            {
                Debug.Log(www.error);
            }
            else
            {
                if (www.isDone)
                {
                    string jsonResult = System.Text.Encoding.UTF8.GetString(www.downloadHandler.data);
                    Debug.Log(jsonResult);
                }
            }

        }
    }


}

//Game_URL.cs

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Game_URL : MonoBehaviour
{
    public string WEB_URL = "";

    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine(RestClient.Instance.Get(WEB_URL));
    }

}

Ожидаемый фактический результат при получении вывода консоли моего MeshData simular в:

https://i.imgur.com/5RcDt2H.png https://i.imgur.com/FheOSWL.png

1 Ответ

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

Ошибка, которую вы получаете, вводит в заблуждение, потому что ваша IDE предполагает, что вы пытаетесь вызвать другую перегрузку StartCoroutine, которая принимает имя метода (строку) в качестве первого аргумента.

Ваш фактическийпроблема в том, что StartCoroutine ожидает IEnumerator, а не IEnumerable. Измените тип возврата вашего Get метода на IEnumerator (как в видео), и он должен работать.

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