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