Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 136
1

Добавление пользовательских файлов в проект

25.02.2015, 14:34. Показов 7807. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте сейчас у меня есть меню где игрок может выбрать себе аватарку из 10 доступных по умолчанию аватарок.

Я храню их в папке Assets/StreamingAssets/AvatarsPlayers
Но мне нужно как то добираться до этой папки при старте и загружать всё что есть в папке в массив.
Мне нужно чтобы игрок мог добавлять в эту папку свои аватарки или удалять те что в игре по умолчанию.
Раньше я хранил эти изображения в папке Resources.
И конечно же добирался до них с помощью Resources.LoadAll("").
Но когда проект компилировалься игрок не мог забросить в эту папку свои аватарки так как эти файлы от игрока скрыты и он не мог их удалить. Даже если забросить туда новые файлы игра их не видела. Поэтому по совету добрых людей я стал пользоваться папкой с именем StreamingAssets которая не шифруеться при компиляции проекта. Но как теперь добраться до этих файлов? Как задать им настройки которые я могу задавать для текстур импортированных в проект с помощью окна инспектора. Мне посоветовали добираться через WWW. Но после прочтения документации я так и не нашёл примеров как добраться до этих файлов и как поместить их в массив.

На данный момент есть вот такой код который конечно же не работает. потомучто я не понимаю как пользоваться www
C#
1
2
3
4
5
6
7
    void FindPlayersAvatars()
    {
        string FolderPath = Path.Combine( Application.streamingAssetsPath, "/AvatarsPlayers/FourthAvatar.png");
        WWW www = new WWW(FolderPath);
        StAv[0] = [url]www.texture;[/url]
        Debug.Log(FolderPath);
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2015, 14:34
Ответы с готовыми решениями:

Добавление .so файлов в проект Eclipse
Доброго времени суток! Может кто нибудь подскажет, как подключить к проeкту сторонние .so, чтобы...

Добавление в проект исполняемых файлов
Как добавить в проект файлы чтобы их можно было потом извлечь? Например добавить prog.exe и извлечь...

Добавление пользовательских ip маршрутов для Android и IOS
Необходимо на планшетах мобильных пользователей предприятия (Android и IOS) добавить статический...

Добавление пользовательских элементов управления по нажатию на кнопку
Создал UserControl с названием ProductPanel. Как добавить его по нажатию на кнопку. Есть метод: ...

11
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
25.02.2015, 18:30 2
Лучший ответ Сообщение было отмечено SERG__ZV как решение

Решение

Если хранить аватарки локально то Texture2D.LoadImage если на сервере WWW.texture. Для получения списка локальных файлов в определенной папке Directory.GetFiles. Для получения и загрузки файлов на сервер - надо писать свой бэк-энд
1
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 136
26.02.2015, 17:45  [ТС] 3
Спасибо буду пробовать.

Добавлено через 14 часов 50 минут
А разве Directory.GetFiles возвращает не имена файлов? Мне нужны сами файлы...

Добавлено через 4 часа 52 минуты
Почему когда я ищу с помощью getfiles путь к моим аватарам находиться по два типа одного и того же файла?
Обычный png и meta какой то..
D:/Other files/Unity files/Slide/Slide_v0.0.1_GUI(Legacy)/Assets/StreamingAssets/AvatarsPlayers/EightAvatar.png
D:/Other files/Unity files/Slide/Slide_v0.0.1_GUI(Legacy)/Assets/StreamingAssets/AvatarsPlayers/EightAvatar.png.meta

Добавлено через 5 минут
что это за meta и как его отфильтровывать при поиске?
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
26.02.2015, 18:30 4
1) при таком подходе тебе не надо их в проект класть, рядом в папочку отдельную, тогда не будет meta.
2) можешь грузить файлы из папки через WWW, только указав протокол file:// (file://D:/Other files...) либо через LoadImage и File.ReadAllBytes
1
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 136
27.02.2015, 10:43  [ТС] 5
Я гружу сейчас через WWW
C#
1
2
3
4
5
6
7
IEnumerator FindPlayersAvatars()
    {
        string FolderPath = "file:///" + Application.streamingAssetsPath + "/AvatarsPlayers/EightAvatar.png"; // Задаём путь переменной FolderPath
        WWW www = new WWW(FolderPath);  // Присваиваем переменной www путь FolderPath
        yield return www;               // когда фотография загрузиться
        StAv[0] = [url]www.texture;[/url]           // Загружаем в массив StAv текстуру
    }
Добавлено через 2 минуты
Но раз при таком способе нужно указывать имя каждого файла вот мне и пригодилься метод Dirrectory.GetFiles
буду пихать имена в массив а потом в цикле перебирать и скармливать их WWW. Но сейчас он ищет половину лишних файлов. Я не понял как это ложить не в проект а в папку рядом? и как это поможет мне с meta? что это вообще такое?

Добавлено через 38 минут
Ура получилось можно фильтровать вот таким способом
NamesAv = Directory.GetFiles(Application.streamingAssetsPath + "/AvatarsPlayers/", "*.png");
Про подстановочные знаки нужно было в mdsn почитать.
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
27.02.2015, 10:54 6
.meta файл это файл с настройками импорта для ассета. создается для каждого файла и папки в проекте.
Цитата Сообщение от SERG__ZV Посмотреть сообщение
Я не понял как это ложить не в проект а в папку рядом
проект у тебя D:/Other files/Unity files/Slide/Slide_v0.0.1_GUI(Legacy)/, а папку с аватарами создаешь D:/Other files/Unity files/Slide/Avatars
1
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 136
27.02.2015, 11:42  [ТС] 7
Ага а игроки тоже после установки игры должны создавать отдельную папку для аватаров?

Добавлено через 1 минуту
Цитата Сообщение от arrjj Посмотреть сообщение
.meta файл это файл с настройками импорта для ассета. создается для каждого файла и папки в проекте.
спасибо буду знать а я то думал это png вместе с собой держит миникопию себя или чтото типо этого.
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
27.02.2015, 14:50 8
Цитата Сообщение от SERG__ZV Посмотреть сообщение
Ага а игроки тоже после установки игры должны создавать отдельную папку для аватаров?
если у тебя есть установщик, то это его силами можно сделать. хранить то что пользователь может менять в папке с игрой - плохой вариант, UAC/разделение между пользователями/ипр лучше использовать Application.persistentDataPath и не забыть установщику добавить чтоб он при удалении грохал это добро.
1
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 136
27.02.2015, 18:16  [ТС] 9
Почему плохой папка StreamingAssets для этого и нужна разве нет? Вот статья. http://docs.unity3d.com/ru/cur... ssets.html
Нет до установщика я к сожалению ещё не дошёл.

Добавлено через 8 минут
В общем всё работает спасибо за помощь.
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
27.02.2015, 19:29 10
Цитата Сообщение от SERG__ZV Посмотреть сообщение
Почему плохой папка StreamingAssets для этого и нужна разве нет?
Эта папка нужна для хранения ассетов, которые пользователь не будет менять, но которые доступны как обычные файлы.
Возможные проблемы при использовании этой папки:
1) когда ты завернешь игру в установщик и пользователь её поставит в Program Files (лучше конечно в D:\Games , но мало ли), он не сможет загрузить свои аватарки кроме как запуском игры от имени администратора.
2) когда несколько учетных записей на компьютере пользователи будут регулярно переписывать аватарки друг друга.
1
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 136
27.02.2015, 22:12  [ТС] 11
2) для этого у меня несколько профилей в игре предусмотрено. 50 аватарок на выбор 1 на каждый профиль которую потом можно сменить.
насчёт первого ни знаю думаю редкая проблема чтобы беспокоиться. У меня компьютер не просит права администратора я вырубил эту бесполезную функцию.
Но за критику спасибо всегда интересно мнение опытных людей в этом деле.
0
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
27.02.2015, 22:23 12
Цитата Сообщение от SERG__ZV Посмотреть сообщение
я вырубил эту бесполезную функцию
https://www.cyberforum.ru/viruses/
Цитата Сообщение от SERG__ZV Посмотреть сообщение
для этого у меня несколько профилей в игре предусмотрено.
ну такое себе, спорное решение, для инди сойдёт
1
27.02.2015, 22:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2015, 22:23
Помогаю со студенческими работами здесь

Добавление пользовательских элементов управления на форму, в частности, ButtonChrome
Скачал пользовательский ЭУ из FAQ (ButtonChrome). А как его на форму поставить? :wall:

Qt creator. Не удается добавить стороннюю библиотеку в проект cmake (добавление в проект boost/algorithm)
Собственно, весь вопрос в заголовке. Осваиваю cmake, не могу подключить "алгоритм" из буст. ...

Windows + регистрирование пользовательских форматов файлов
Здравствуйте! Помогите, пожалуйста!!!:) Есть у меня программа, которая использует собственный...

Как снести виндоус на hdd без потери пользовательских файлов и установить на ssd
Добрый день, скажите пожалуйста как полностью удалить виндоус 10 на hhd при этом не затрагивая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru