Задать вопрос
@Default_Nickname

Как загружать изображения/текст из папки с билдом игры?

Как сделать, чтобы после билда игры, она могла считывать картинки из отдельной папки, например в папке с билдом будет папка "Sprites", а в ней изображения с названиями "spr_0", "spr_1" и т.д. И игра загружала изображение из этой папки?
  • Вопрос задан
  • 45 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@SWA512
Gamedev
using System.IO;
using UnityEngine;
using UnityEngine.UI; // Если вы хотите отображать изображение на UI.

public class ImageLoader : MonoBehaviour
{
    public string folderName = "Sprites"; // Название вашей папки
    public string imageNamePrefix = "spr_"; // Префикс для названий изображений
    public int numberOfImagesToLoad = 2; // Сколько изображений вы хотите загрузить

    // Пример использования для отображения на Canvas
    public Image displayImage; // Присвойте это в инспекторе, если используете UI Image

    void Start()
    {
        LoadImagesFromFolder();
    }

    void LoadImagesFromFolder()
    {
        // Получаем путь к папке, где находится исполняемый файл игры
        string gamePath = Application.dataPath;

        // В билде Application.dataPath указывает на папку с данными (.exe_Data)
        // Нам нужно подняться на один уровень, чтобы найти папку рядом с .exe
        string parentFolder = Path.GetDirectoryName(gamePath);

        // Объединяем путь к родительской папке с названием вашей папки с картинками
        string fullPathToSpritesFolder = Path.Combine(parentFolder, folderName);

        if (!Directory.Exists(fullPathToSpritesFolder))
        {
            Debug.LogError("Папка '" + folderName + "' не найдена по пути: " + fullPathToSpritesFolder);
            return;
        }

        for (int i = 0; i < numberOfImagesToLoad; i++)
        {
            // Формируем полное имя файла (например, spr_0.png)
            string imageFileName = imageNamePrefix + i + ".png"; // или .jpg
            string fullImagePath = Path.Combine(fullPathToSpritesFolder, imageFileName);

            if (File.Exists(fullImagePath))
            {
                byte[] imageData = File.ReadAllBytes(fullImagePath);
                Texture2D texture = new Texture2D(2, 2); // Размеры будут скорректированы при загрузке

                // Загружаем изображение в Texture2D
                if (texture.LoadImage(imageData))
                {
                    Debug.Log("Изображение " + imageFileName + " успешно загружено!");

                    // Пример: отображение первого загруженного изображения на UI Image
                    if (i == 0 && displayImage != null)
                    {
                        Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
                        displayImage.sprite = sprite;
                    }
                    // Можете сохранить texture в список или использовать по мере необходимости
                }
                else
                {
                    Debug.LogError("Не удалось загрузить изображение: " + fullImagePath);
                }
            }
            else
            {
                Debug.LogWarning("Изображение не найдено: " + fullImagePath);
            }
        }
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы