Я пытаюсь создать функцию, которая создает дамп всех данных о ресурсах в игре Unity в файл и может выводить видео, аудио, имена сценариев и изображения на экране из текущей загруженной сцены.
Я застрял при попытке сделать то же самое для данных шейдера, таких как текстуры и матрицы, векторы и значения типа int и float. Я знаю, что могу получить это образование с помощью функций Material.GetXXX
.
Например, в настоящее время я могу получить основной Texture
из стандартного шейдера, который имеет свойство типа текстуры с именем _MainTex
с помощью:
Material mat = gameObject.GetComponent<MeshRenderer>().material;
Texture mat1Tex = mat.GetTexture("_MainTex");
SaveTex(mat1Tex);
Проблема заключается в том, что мне нужно знать имена свойств и их тип, например Текстура, Матрица, Плавающее, Цвет и т. Д., Прежде чем я смогу получить их значения во время выполнения
Я ожидаю, что многие шейдеры из сторонних источников будут в проекте, и было бы сложно вручную просмотреть каждый шейдер, скопировать имена их свойств и тип, чтобы я мог получить данные.
Есть ли способ получить свойство шейдера и тип, необходимый для получения их значений с помощью функций Material.GetXXX
? Если это невозможно, есть ли способ выгрузить данные шейдера по отдельности?
Примечание
Это не функция сохранения, и я не ищу способ сохранить и загрузить состояние игры. Этот плагин используется для анализа и устранения неполадок в играх Unity.