Можно ли перемещать файлы в streamingassets из кода?

148
13 января 2020, 21:20

Появилась необходимость динамически создавать материалы. Мне посоветовали делать через streamingassets. В unity пишется, что вроде как доступ к Application.StreamingAssetsPath только для чтения. То есть, мы можем получать файлы, но не можем их загружать. Если через streamingassets никак, то может есть способ из директории брать картинку, из нее делать материал? Кто-нибудь может сталкивался с таким?

Answer 1

Для хранения и загрузки пользовательских данных на устройстве можно использовать Application.persistentDataPath. Это уникальный путь до локального хранилища вашего проекта на устройстве. В него можно записывать что угодно и оно не будет чиститься при обновлении приложения, но пользователь всё ещё сможет почистить его вручную.

Работа с ним осуществляется, как с простой папкой - можете писать туда через методы класса File.

После уточнения вопроса дополняю: Чтобы создать из загруженной текстуры материал можно осуществить следующие действия:

[SerializeField]
MeshRenderer _renderer; //ссылка на рендерер, в который будем устанавливать текстуру
//Допустим, где-то снаружи вы загрузили текстуру(режим Default у картинки) из нужного вам места и передали в этот метод
private void SetTexture(Texture tex)
{
    //Ищем шейдер для вашего материала по имени - я закинул для примера мобильный дефьюз. 
    var shader = Shader.Find("Mobile/Diffuse");       
    //Создаём новый материал под шейдер
    var mat = new Material(shader);    
    //Устанавливаем в поле шейдера _MainTex свою текстуру. Поле ищется по имени и в большинстве шейдеров поле под текстуру называется так.
    mat.SetTexture("_MainTex", tex);
    //Назначаем текстуру в рендерер
    _renderer.material = mat;    
}
READ ALSO
Как добавить form в вкладку tabControl? Windows Form

Как добавить form в вкладку tabControl? Windows Form

Я нашел в интернете такой код но он добавляет по индексу но мне нужно с добавлением и переводом на новую вкладку для пользователя

145
Заставить Input.MousePosition проходить через ноль

Заставить Input.MousePosition проходить через ноль

Имеется код, который таскает UI объект за мышкой по клеточкам,каждая клеточка 25 юнити метров

126
DataGridViewAutoFilter и BindingList

DataGridViewAutoFilter и BindingList

Вот так заполняю грид:

115
Как сделать поиск массиве и отображение в компоненте ComboBox?

Как сделать поиск массиве и отображение в компоненте ComboBox?

Как сделать поиск массиве и отображение в компоненте ComboBox? По примеру поисковика Google

131