Я хочу сделать png-изображение StreamingAssets текстурой материала - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу сделать изображение, существующее в Streaming Assets, текстурой для 3D-объекта. Однако текстура _Material становится красной "меткой опроса".

Метка допроса Это неверно.

Как получить правильное изображение?

Material _Material;
IEnumerator LoadPlayerTexture()
{
    string url = Path.Combine(Application.streamingAssetsPath, "front.png");

#if UNITY_EDITOR
    url = "file://" + url;
#endif

    byte[] imgData;
    Texture2D tex = new Texture2D(2, 2);

    //Check if we should use UnityWebRequest or File.ReadAllBytes
    if (url.Contains("://") || url.Contains(":///"))
    {
        UnityWebRequest www = UnityWebRequest.Get(url);
        yield return www.SendWebRequest();
        imgData = www.downloadHandler.data;
    }
    else
    {
        imgData = File.ReadAllBytes(url);
    }

    //Load raw Data into Texture2D 
    tex.LoadImage(imgData);

    _Material.SetTexture("_MainTex", tex);
}

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

Почему бы вам не использовать UnityWebRequestTexture.GetTexture вместо этого?

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

Небольшое ограничение (это не влияет на ваш вариант использования)

Примечание: поддерживаются только форматы JPG и PNG.

Material _Material;
IEnumerator LoadPlayerTexture()
{
    var url = Path.Combine(Application.streamingAssetsPath, "front.png");

    // UnityWebRequest can also be used for reading local files
    // also from streaming assets
    using(var uwr = UnityWebRequestTexture.GetTexture(url))
    {
        yield return uwr.SendWebRequest();

        if (uwr.isNetworkError || uwr.isHttpError)
        {
            Debug.Log(uwr.error);
        }
        else
        {
            // Get downloaded texture
            var texture = DownloadHandlerTexture.GetContent(uwr);
            _Material.SetTexture("_MainTex", texture);
        }
    }
}
0 голосов
/ 18 апреля 2020

Я создал текстуру со стандартным Windows программным обеспечением "Paint". Это была проблема. Проблема была решена путем экспорта текстуры, созданной с помощью «paint», с помощью «GIMP».

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