Единство. После загрузки мой rawimage остается пустым

Привет, моя сцена называется игрой. В этой сцене у меня есть главная панель с именем ITEMCONTAINER. В контейнере товара у меня есть панель, имя которой - ПУНКТ. Я прикрепил скрипт в ПУНКТЕ. В этом скрипте у меня есть публичный игровой объект, необработанное изображение, текст и сколько раз цикл будет продолжаться. Вместо игрового объекта я прикрепил свой префаб, который содержит 1 текст и 2 rawimage. вместо текста я прикрепил текстовый компонент prefab и такой же, как необработанное изображение. Когда я запускаю игру, текстовое значение я получаю правильно, но rawimage показывает пустое время выполнения. Здесь я запускаю свой цикл 3 раза, и все три раза он создает клон моей сборной панели как дочерний элемент в itempanel. время выполнения

выход

панэльный

  1. image = на этом изображении, он содержит выходные данные. Здесь 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 ответ

Решение

Вы присваиваете загруженное изображение переменной профиля, которая не является переменной из экземпляра 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 Вы получили свой сценарий от.

Другие вопросы по тегам