аналог GetFiles() на android

Программирование на Юнити.

аналог GetFiles() на android

Сообщение xakmenpro 27 дек 2016, 22:41

всем привет. в папке StreamingAssets есть изображения, методом GetFiles() я спокойно получаю массив из .jpg и .png файлов в редакторе. как это сделать на андроиде?
xakmenpro
UNец
 
Сообщения: 21
Зарегистрирован: 13 фев 2016, 02:56

Re: аналог GetFilse() на android

Сообщение DbIMok 28 дек 2016, 01:40

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

Re: аналог GetFilse() на android

Сообщение xakmenpro 30 дек 2016, 18:02

DbIMok писал(а):https://docs.unity3d.com/Manual/StreamingAssets.html


Синтаксис:
Используется csharp
DirectoryInfo db_dir = new DirectoryInfo(@Application.dataPath + "/StreamingAssets/");
foreach (FileInfo file in db_dir.GetFiles())
{
if (file.Extension == ".jpg" || file.Extension == ".png")                  
     IMAGES.Add(file.Name);
}

-в редакторе работает
Синтаксис:
Используется csharp
DirectoryInfo db_dir = new DirectoryInfo(@"jar:file://" + Application.dataPath + "!/assets/");
foreach (FileInfo file in db_dir.GetFiles())
{
if (file.Extension == ".jpg" || file.Extension == ".png")                  
    IMAGES.Add(file.Name);
}

-на андроиде нет
xakmenpro
UNец
 
Сообщения: 21
Зарегистрирован: 13 фев 2016, 02:56

Re: аналог GetFiles() на android

Сообщение DbIMok 30 дек 2016, 19:25

On Android, the files are contained within a compressed .jar file (which is essentially the same format as standard zip-compressed files). This means that if you do not use Unity’s WWW class to retrieve the file, you need to use additional software to see inside the .jar archive and obtain the file.

На Android файлы содержатся в сжатом .jar-файле (который по сути того же формата, что стандартные zip-сжатые файлы). Это означает, что если Вы не используете класс Unity WWW, чтобы получить файл, то нужно использовать дополнительное программное обеспечение (ZIP библиотечку), чтобы увидеть внутри .jar архив и получить файл.
https://docs.unity3d.com/ScriptReferenc ... sPath.html
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.6k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: аналог GetFiles() на android

Сообщение xakmenpro 05 янв 2017, 16:53

DbIMok писал(а):
On Android, the files are contained within a compressed .jar file (which is essentially the same format as standard zip-compressed files). This means that if you do not use Unity’s WWW class to retrieve the file, you need to use additional software to see inside the .jar archive and obtain the file.

На Android файлы содержатся в сжатом .jar-файле (который по сути того же формата, что стандартные zip-сжатые файлы). Это означает, что если Вы не используете класс Unity WWW, чтобы получить файл, то нужно использовать дополнительное программное обеспечение (ZIP библиотечку), чтобы увидеть внутри .jar архив и получить файл.
https://docs.unity3d.com/ScriptReferenc ... sPath.html

это я читал, я просил рабочий пример. я нашел способ как получить файл с помощью www зная его имя, но я не могу получить это имя программно. мне нужно получить список всех изображений в папке в массив, а потом с помощью www я его загружаю туда куда мне нужно. не хотелось бы ради этого подключать стороннюю библиотеку, вот и ищу другой способ
xakmenpro
UNец
 
Сообщения: 21
Зарегистрирован: 13 фев 2016, 02:56

Re: аналог GetFiles() на android

Сообщение Cr0c 05 янв 2017, 17:14

Текстовик со списком файлов запихать в ассетсы?
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: аналог GetFiles() на android

Сообщение xakmenpro 05 янв 2017, 20:00

Cr0c писал(а):Текстовик со списком файлов запихать в ассетсы?

то есть?
у меня такая цель-запускаю прогу на андроиде и если программа была обновлена, сканирую папку "assets", она же StreamingAssets в юнити, если появились новые изображения, добавляю их имена в бд и после работаю уже с базой и извлекаю изображения с помощью WWW:
Синтаксис:
Используется csharp
IEnumerator loadImg(string name)
{
WWW www = new WWW("jar:file://" + Application.dataPath + "!/assets/" + name);
yield return www;
GetComponent<SpriteRenderer>().sprite = Sprite.Create(http://www.texture, new Rect(0.0f, 0.0f, http://www.texture.width, http://www.texture.height), new Vector2(0.5f, 0.5f), 100f);
}
нуно лишь получить список всех файлов в папке "assets", чтобы обновить базу, остальное все готово
xakmenpro
UNец
 
Сообщения: 21
Зарегистрирован: 13 фев 2016, 02:56

Re: аналог GetFiles() на android

Сообщение DbIMok 05 янв 2017, 20:50

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

Re: аналог GetFiles() на android

Сообщение xakmenpro 05 янв 2017, 22:29

DbIMok писал(а):Так вам и говорят, перед билдом поместите в StreamingAssets (или в Resources) list.txt и затем первым делом читайте его, а потом уже те имена, что в нем записаны.

понял. я таким принципом пользуюсь щас. добавляю изображения в папку, база автоматически перезаписывается при запуске проекта в юнити. я хотел облегчить работу, чтобы не запускать каждый раз проект перед билдом или не прописывать имена изображений вручную или программно, сделать это уже в самом билде. ну ладно, есть хотя бы такая функция в юнити - запустить скрипт перед сборкой? чтобы обновить базу. я использую sqlite
xakmenpro
UNец
 
Сообщения: 21
Зарегистрирован: 13 фев 2016, 02:56

Re: аналог GetFiles() на android

Сообщение Cr0c 05 янв 2017, 23:41

xakmenpro писал(а):
DbIMok писал(а):Так вам и говорят, перед билдом поместите в StreamingAssets (или в Resources) list.txt и затем первым делом читайте его, а потом уже те имена, что в нем записаны.

понял. я таким принципом пользуюсь щас. добавляю изображения в папку, база автоматически перезаписывается при запуске проекта в юнити. я хотел облегчить работу, чтобы не запускать каждый раз проект перед билдом или не прописывать имена изображений вручную или программно, сделать это уже в самом билде. ну ладно, есть хотя бы такая функция в юнити - запустить скрипт перед сборкой? чтобы обновить базу. я использую sqlite

dir *.* /s/b /a-d >list.txt
создаст текстовик со списком файлов со всеми поддиректориями без лишней информации.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: аналог GetFiles() на android

Сообщение DbIMok 06 янв 2017, 03:01

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

Re: аналог GetFiles() на android

Сообщение [bm] 10 янв 2017, 08:40

Я делаю так:
качаем https://www.dropbox.com/s/mn7iwpipot8ns ... y.dll?dl=0 и копируем в Plugins
и получаем все файлы в билде:
Синтаксис:
Используется csharp
using Ionic.Zip;
...
var path = Application.dataPath;
using (var zip = ZipFile.Read(path))
{
        foreach (var e in zip.Entries)
        {
                Debug.Log(e.FileName);
        }
}


те что содержат путь assets/ и есть файлы в StreamingAssets
Mafia Rush: universal iOS game _https://goo.gl/CKq4D Android _https://goo.gl/slFLXx
Shooter Ball: Android _https://goo.gl/21QyPw
skype: bmindfield
Аватара пользователя
[bm]
UNIверсал
 
Сообщения: 426
Зарегистрирован: 11 май 2010, 22:33
Откуда: Россия, Ижевск


Вернуться в Скрипты

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

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