无法在 Unity 中将 Texture2D 分配给 RawImage (C#) - NullReferenceException

Can't assign Texture2D to RawImage in Unity (C#) - NullReferenceException

提问人:Carl44 提问时间:3/18/2023 更新时间:3/18/2023 访问量:528

问:

我在 Unity 中使用 API 调用来获取图像(来自 Google 街景 API)。 我不想立即渲染图像,而是将其存储在文件夹中。 我已经浏览并尝试了许多不同的代码示例,但一直卡在同一个问题上:当我尝试将纹理分配给它时,会出现 NullReferenceException。 Texture2D 不是 null,在编辑器中它显示它包含图像。 这是我的代码:

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

public class API : MonoBehaviour
{
    public string URL;
    public RawImage mapImage;
    public Texture2D APItexture;

    void Start()
    {
        URL = "working API url";
        StartCoroutine(DownloadImage(URL));
    }

    IEnumerator DownloadImage(string url)
    {
        {
            UnityWebRequest request = UnityWebRequestTexture.GetTexture(url);
            yield return request.SendWebRequest();
            if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
            {
                Debug.Log(request.error);
            }
            else
            {
                APItexture = DownloadHandlerTexture.GetContent(request);
                mapImage.texture = APItexture;    // <- the error occurs here
            }
        }
    }
}

在编辑器中,图像是可见的

我试图立即分配纹理,例如:但无济于事。 该代码与在线任何其他示例没有什么不同,因此我不确定问题可能出在哪里。 在为RawImage数据分配纹理之前,是否需要对RawImage数据执行某些操作?mapImage.texture = DownloadHandlerTexture.GetContent(request);

我对 unity 和 stackoverflow 都没有什么经验,对于任何错误,我深表歉意。

unity-game-engine nullreferenceexception 原始图像

评论

0赞 Max Play 3/18/2023
这回答了你的问题吗?什么是 NullReferenceException,如何修复它?

答:

0赞 Kleverson Paixão 3/18/2023 #1

你对问题的推理方式存在一些错误。NullReferenceException 与 Texture2D 无关,而是与代码中的 mapImage 有关。

您正在尝试将 Texture2D 分配给原始图像,但没有 mapImage,因此,您无法为其分配纹理。是 RawImage 的一个属性,除非您之前引用或创建过它,否则此调用将始终引发异常。mapImage.texture = APItexture;.texture

您自己的图像显示 mapImage 是空的,其中包含标签。首先需要一个 mapImage 才能工作。请查看有关 NullReferenceException 的 Max 注释。none