Я хочу загрузить несколько изображений, которые я загрузил на сервер, и показать в моей сцене в галерее или в слайд-шоу. Я сделал код ниже, чтобы загрузить изображения, но я могу показать только одно изображение. Как я могу сделать, чтобы показать несколько изображений, загруженных с сервера?
public void DownloadtheFiles()
{
List <string> photolist = ES2.LoadList<string>("myPhotos.txt");
for (int i = 0; i < photolist.Count; i++) {
new GetUploadedRequest()
.SetUploadId(photolist[i])
.Send((response) =>
{
StartCoroutine(DownloadImages(response.Url));
} );
}
}
public IEnumerator DownloadImages(string downloadUrl)
{
var www = new WWW(downloadUrl);
yield return www;
downloadedImages = new Texture2D(200, 200);
www.LoadImageIntoTexture(downloadedImages);
imageLoaded.texture = downloadedImages as Texture;
}
ОБНОВЛЕНИЕ 1: с помощью приведенного ниже кода я показываю, как я хотел бы показать их, но он получает изображения из пути к папке, и мне нужно показать изображения, которые я загружаю с сервера. Как я могу интегрировать этот код, чтобы сделать слайд-шоу с загруженными изображениями?
public class ImageLoader : MonoBehaviour
{
[SerializeField]
[Tooltip("The folder where images will be loaded from")]
private string imagePath;
[SerializeField]
[Tooltip("The panel where new images will be added as children")]
private RectTransform content;
private List<Texture2D> textures;
private void Start()
{
Application.runInBackground = true;
StartCoroutine(LoadImages());
}
public IEnumerator LoadImages()
{
textures = new List<Texture2D>();
DirectoryInfo di = new DirectoryInfo(imagePath);
var files = di.GetFiles("*.png");
foreach (var file in files)
{
Debug.Log(file.FullName);
yield return LoadTextureAsync(file.FullName, AddLoadedTextureToCollection);
}
CreateImages();
}
private void AddLoadedTextureToCollection(Texture2D texture)
{
textures.Add(texture);
}
private void CreateImages()
{
foreach(var texture in textures)
{
GameObject imageObject = new GameObject("Image");
imageObject.transform.SetParent(content);
imageObject.AddComponent<Image>().sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);
}
}
public IEnumerator LoadTextureAsync(string originalFileName, Action<Texture2D> result)
{
string fileToLoad = GetCleanFileName(originalFileName);
Debug.Log("Loading Image from path: " + fileToLoad);
WWW www = new WWW(fileToLoad);
yield return www;
Texture2D loadedTexture = new Texture2D(1, 1);
www.LoadImageIntoTexture(loadedTexture);
result(loadedTexture);
}
private static string GetCleanFileName(string originalFileName)
{
string fileToLoad = originalFileName.Replace('\\', '/');
if (fileToLoad.StartsWith("http") == false)
{
fileToLoad = string.Format("file://{0}", fileToLoad);
}
return fileToLoad;
}
}
ОБНОВЛЕНИЕ 2: Я создал ScrollView и HorizonatalLayoutGroup и применил ImageLoader.cs ОБНОВЛЕНИЯ 1. Я добавил 4 изображения в папку, и это скриншоты иерархии и результат:
Он отлично работает в качестве теста, но источником изображений является папка на моем компьютере, и я хочу загрузить изображения с сервера. Как я могу это сделать?