Чтобы получить доступ к TextureImporter, можно использовать класс AssetImporter:
using UnityEngine;
using UnityEditor;
// ...
// Загружаем текстуру
Texture2D texture = AssetDatabase.LoadAssetAtPath<Texture2D>("Assets/MyTexture.png");
// Получаем импортер ассетов для текстуры
TextureImporter textureImporter = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(texture)) as TextureImporter;
// Проверяем корректность импортера текстуры
if (textureImporter != null)
{
// Задаем настройки листа спрайтов
textureImporter.textureType = TextureImporterType.Sprite;
textureImporter.spriteImportMode = SpriteImportMode.Multiple;
textureImporter.mipmapEnabled = false;
textureImporter.isReadable = true;
// Задаем метаданные листа спрайтов
TextureImporterSettings settings = new TextureImporterSettings();
textureImporter.ReadTextureSettings(settings);
List<SpriteMetaData> metadata = new List<SpriteMetaData>();
// Add sprite sheet frames here
settings.spriteMetaData = metadata.ToArray();
textureImporter.SetTextureSettings(settings);
// Импортируем текстуру
AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(texture), ImportAssetOptions.ForceUpdate);
}
Код импортирует ресурс текстуры в виде листа спрайтов с указанными метаданными кадра. Для свойства isReadable будет установлено значение true, можно использовать Texture2D.GetPixel() для доступа к пиксельным данным текстуры.
Чтобы код еще и работал при запуске игры нужно получить доступ к пиксельным данным текстуры во время выполнения, нужно будет установить свойство Read/Write Enabled в настройках импорта текстуры в редакторе Unity перед импортом текстуры.