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

时间:2017-10-01 09:21:37

标签: c# unity3d rawimage

嗨我的场景名称是一个游戏。在那个场景中我有一个主面板,其名称是ITEMCONTAINER。在项目容器中,我有一个名为ITEM的面板。我在ITEM PANEL中附上了一个脚本。在该脚本中,我将游戏对象公开,原始图像,文本以及循环将继续多少次公开。 在游戏对象的位置我附上了我的预制件,其中包含1个文本和2个rawimage。 代替文本我附加预制件的文本组件和原始图像相同。 当我运行游戏的文本值我得到正确但rawimage在运行时显示为空白。这是我运行我的循环3次和所有三次它创建克隆我的预制面板作为一个孩子在 itempanel 我想在运行时使用rawimage动态

输出

enter image description here

预制

enter image description here

  1. image =在此图片中,它包含output.here rawimage是空白但文本值得完美

  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;
    
    }
    

    }

1 个答案:

答案 0 :(得分:0)

您正在将下载的图像分配给配置文件变量,该变量不是实例化对象的变量。在循环中,您需要使用transform.Find("profile")获取每个实例化对象的子项,然后使用RawImage获取附加到其上的GetComponent组件,并将其传递给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中声明。