提问人:Carl44 提问时间:3/18/2023 更新时间:3/18/2023 访问量:528
无法在 Unity 中将 Texture2D 分配给 RawImage (C#) - NullReferenceException
Can't assign Texture2D to RawImage in Unity (C#) - NullReferenceException
问:
我在 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 都没有什么经验,对于任何错误,我深表歉意。
答:
0赞
Kleverson Paixão
3/18/2023
#1
你对问题的推理方式存在一些错误。NullReferenceException 与 Texture2D 无关,而是与代码中的 mapImage 有关。
您正在尝试将 Texture2D 分配给原始图像,但没有 mapImage,因此,您无法为其分配纹理。是 RawImage 的一个属性,除非您之前引用或创建过它,否则此调用将始终引发异常。mapImage.texture = APItexture;
.texture
您自己的图像显示 mapImage 是空的,其中包含标签。首先需要一个 mapImage 才能工作。请查看有关 NullReferenceException 的 Max 注释。none
评论