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