统一。下载后我的rawimage还是空白

Unity. After downloading my rawimage is still blank

您好我的场景名称是 game.In 我正在使用的那个场景主面板的名称是 ITEMCONTAINER。在项目容器中,我有一个名称为 ITEM 的面板。我在项目面板中附加了一个脚本。在该脚本中,我有一个游戏对象 public、一个原始图像、文本以及将继续循环的次数 public。 在游戏对象的地方,我附加了我的预制件,其中包含 1 个文本和 2 个原始图像。 代替文本,我附加了预制件的文本组件,就像原始图像一样。 当我 运行 游戏时,我得到的文本值是正确的,但 rawimage 在 runtime.Here 中显示为空白,我 运行 循环了 3 次,所有 3 次它都创建了我的预制面板的克隆小时候在 itempanel 我想要 运行 时间

的 rawimage 动态

输出

预制

  1. image= 在此图像中,它包含 output.here rawimage 是空白的,但文本 valuecoming 完美

  2. image = 这是我的预制件,预制件将在 运行 时间内被克隆,这里它显示图像但在 运行 时间期间,在克隆中它显示空白

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;   
    using UnityEngine.UI;    
    public class DynamicData : MonoBehaviour {      
    public GameObject prefab; 
    public Text name;       
    public int numberToCreate;
    
    public RawImage profile;
    
    
    void Start () {
    
        for (int i = 0; i < numberToCreate; i++)
        {
            name.text = "a"+i;
            StartCoroutine( ImageDownload( profile));
    
            Instantiate <GameObject>(prefab, transform);
        }
    
    }
    IEnumerator ImageDownload ( RawImage img) {
    
        WWW www = new WWW("https://www.w3schools.com/w3images/fjords.jpg");
    
        yield return www;
    
        Texture2D texure = new Texture2D (1, 1);
        texure.LoadImage (www.bytes);
        texure.Apply ();
        img.texture = texure;
    
    }
    

    }

您正在将下载的图像分配给配置文件变量,该变量不是来自实例化对象的变量。在循环中,您需要使用 transform.Find("profile") 获取每个实例化对象的子项,然后使用 GetComponent 获取附加到它的 RawImage 组件并将其传递给 ImageDownload 函数。

将您的 for 循环替换为:

for (int i = 0; i < numberToCreate; i++)
{
    name.text = "a" + i;

    GameObject instance = Instantiate<GameObject>(prefab, transform);
    //Get RawImage of the current instance
    RawImage rImage = instance.transform.Find("profile").GetComponent<RawImage>();
    StartCoroutine(ImageDownload(rImage));
}

请将 public Text name; 重命名为 public Text userName; 之类的其他名称,因为该名称已在 MonoBehavior 中声明,您的脚本源自该名称。