统一。下载后我的rawimage还是空白
Unity. After downloading my rawimage is still blank
您好我的场景名称是 game.In 我正在使用的那个场景主面板的名称是 ITEMCONTAINER。在项目容器中,我有一个名称为 ITEM 的面板。我在项目面板中附加了一个脚本。在该脚本中,我有一个游戏对象 public、一个原始图像、文本以及将继续循环的次数 public。
在游戏对象的地方,我附加了我的预制件,其中包含 1 个文本和 2 个原始图像。
代替文本,我附加了预制件的文本组件,就像原始图像一样。
当我 运行 游戏时,我得到的文本值是正确的,但 rawimage 在 runtime.Here 中显示为空白,我 运行 循环了 3 次,所有 3 次它都创建了我的预制面板的克隆小时候在 itempanel
我想要 运行 时间
的 rawimage 动态
输出
预制
image= 在此图像中,它包含 output.here rawimage 是空白的,但文本 valuecoming 完美
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
中声明,您的脚本源自该名称。
您好我的场景名称是 game.In 我正在使用的那个场景主面板的名称是 ITEMCONTAINER。在项目容器中,我有一个名称为 ITEM 的面板。我在项目面板中附加了一个脚本。在该脚本中,我有一个游戏对象 public、一个原始图像、文本以及将继续循环的次数 public。 在游戏对象的地方,我附加了我的预制件,其中包含 1 个文本和 2 个原始图像。 代替文本,我附加了预制件的文本组件,就像原始图像一样。 当我 运行 游戏时,我得到的文本值是正确的,但 rawimage 在 runtime.Here 中显示为空白,我 运行 循环了 3 次,所有 3 次它都创建了我的预制面板的克隆小时候在 itempanel 我想要 运行 时间
的 rawimage 动态输出
预制
image= 在此图像中,它包含 output.here rawimage 是空白的,但文本 valuecoming 完美
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
中声明,您的脚本源自该名称。