Unity и iOs

Программирование для iPhone & Android

Unity и iOs

Сообщение pavdevelop 20 май 2020, 22:36

Всем добрый день, впервые работаю с Unity под iOS и столкнулся с проблемой, динамически создаю меню по нажатию с кнопки. Меню создается из prefab. В данном меню размещаются его элементы в зависимости от количества файлов в папке ресурсов нужного расширения. В Image загружается спрайт соответственно картина из папки ресурсов которые я искал. Отлаживаю в Unity все работает отлично, меню открывается и в него добавляются элементы с загруженными картинками, собираю проект для iOS и когда компилирую его в Xcode то на мобильном по нажатии кнопки открытия меню открывается только само меню и элементы в нем отсутствуют. Честно я даже не представляю в каком направлении искать решение данной проблемы. Надеюсь на вашу помощь ребята.

Синтаксис:
Используется csharp
Класс загрузки файлов
using System;
using System.IO;
using System.Collections.Generic;
using UnityEngine;

public class FileProcessor
{
    static public List<string> fileNames;
    public FileProcessor(string path)
    {

    }
    public static void ProcessDirectory(string targetDirectory)
    {
        fileNames = new List<string>();
        string[] fileEntries = Directory.GetFiles(targetDirectory, "*.jpg");
        foreach (string fileName in fileEntries)
        {
            ProcessFile(fileName);
        }    
    }
    public static void ProcessFile(string path)
    {
        string str_path = path;
        str_path = str_path.Replace(".jpg", "");
        str_path = str_path.Replace("Assets/Resources/", "");
        fileNames.Add(str_path);
        Debug.Log(str_path + " найден");
    }
}
Соответственно код обработчика нажатия на кнопку открытия меню:
void ClickOnLeftMenu()
    {
        leftMenu = Instantiate(Resources.Load<GameObject>("Prefabs/LeftPanel"));
        leftMenu.GetComponent<Transform>().SetParent(gui.GetComponent<Transform>(), false);
        Transform topPanel = leftMenu.transform.Find("topPanel");
        Button closeButton = topPanel.Find("btnClose").GetComponent<Button>();
        closeButton.onClick.AddListener(ClickOnCloseMenu);
        Transform bodyPanel = leftMenu.transform.Find("bodyPanel");
        Image content = bodyPanel.Find("content").GetComponent<Image>();
        int i = 1;
        foreach (string floorsNames in FileProcessor.fileNames)
        {
            foorItem = Instantiate(Resources.Load<GameObject>("Prefabs/FloorItem"));
            foorItem.GetComponent<Transform>().SetParent(content.GetComponent<Transform>(), false);
            foorItem.GetComponent<Transform>().Find("Title").GetComponent<Text>().text = "Этаж " + i++;
            Transform floorMask = foorItem.transform.Find("Body");
            Image floorImage = floorMask.Find("FloorImage").GetComponent<Image>();
            Debug.Log("ОТЛАДКА ИМЯ ФАЙЛА И ПУТЬ "+floorsNames);
            floorImage.sprite = Resources.Load<Sprite>(floorsNames);
            floorItems.Add(foorItem);  
        }
    }

 
pavdevelop
UNец
 
Сообщения: 1
Зарегистрирован: 20 май 2020, 22:26

Re: Unity и iOs

Сообщение DbIMok 21 май 2020, 17:10

Directory.GetFiles(targetDirectory, "*.jpg");

с Resources это не работает. в билде все что было в этой папке подготовлено и упаковано. ни папки ни файлов в нем нет
если нужны прям файлы, используют StreamingAssets. если нет, то список ресурсов перед билдом можно собрать в ScriptableObject (тогда им необязательно и в папке Resources находиться) или если все же хочется Resources и имена то в текстовый файл.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.6k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05


Вернуться в iPhone & Android

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2