Единство. После загрузки мой rawimage остается пустым
Привет, моя сцена называется игрой. В этой сцене у меня есть главная панель с именем ITEMCONTAINER. В контейнере товара у меня есть панель, имя которой - ПУНКТ. Я прикрепил скрипт в ПУНКТЕ. В этом скрипте у меня есть публичный игровой объект, необработанное изображение, текст и сколько раз цикл будет продолжаться. Вместо игрового объекта я прикрепил свой префаб, который содержит 1 текст и 2 rawimage. вместо текста я прикрепил текстовый компонент prefab и такой же, как необработанное изображение. Когда я запускаю игру, текстовое значение я получаю правильно, но rawimage показывает пустое время выполнения. Здесь я запускаю свой цикл 3 раза, и все три раза он создает клон моей сборной панели как дочерний элемент в itempanel. время выполнения
выход
панэльный
image = на этом изображении, он содержит выходные данные. Здесь 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; }
}
1 ответ
Вы присваиваете загруженное изображение переменной профиля, которая не является переменной из экземпляра Object. В цикле вам нужно получить дочерний элемент каждого экземпляра объекта с 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
Вы получили свой сценарий от.