CompressedTexture2D
Texture2D из результата импорта с явной загрузкой файла.
Обычный путь использования — ResourceLoader.Load<Texture2D>("asset://art/icon.png"): загрузчик применяет import remap и возвращает ресурс нужного типа. CompressedTexture2D.Load принимает уже созданный .ctex, а не выполняет импорт PNG. Название класса не гарантирует VRAM block compression: проверенный Lossless-импорт возвращает доступные пиксельные данные.
Полный проверенный помощник создаёт независимый экземпляр через CacheMode.Ignore. Он полезен для независимой загрузки; не вызывайте загрузку и GPU-readback каждый кадр вместо хранения ресурса:
using System;
using Reckfell;
public static class IndependentImportedTexture
{
public static CompressedTexture2D Load(string projectPath)
{
var texture = ResourceLoader.Load<Texture2D>(projectPath, cacheMode: ResourceLoader.CacheMode.Ignore);
if (texture is CompressedTexture2D imported) return imported;
texture?.Dispose();
throw new InvalidOperationException("Expected an imported CompressedTexture2D resource.");
}
}GetLoadPath/LoadPath обозначают внутренний импортированный файл; ResourcePath может оставаться путём исходного ассета. Прямой Load не присваивает ResourcePath. Повторный успешный Load сохраняет RID и вызывает Changed. Setter LoadPath не предоставляет Error, поэтому для обработки ошибки используйте метод. Действующий RID может быть placeholder даже до загрузки.
Известное несоответствие текущей реализации: HasAlpha() возвращает false даже для проверенного прозрачного RGBA-пикселя. Этот дефект воспроизведён; движок не исправлялся. Не используйте HasAlpha как единственный тест фактической альфы. Сброс alpha cache при повторном Load работает: Sprite2D.IsPixelOpaque правильно обновился после замены прозрачного изображения на непрозрачное. Корректно работала и отдельная загрузка нового экземпляра.
Проверены реальные Lossless-импорт, GPU-readback, пути, события, RID и повторная загрузка в Windows/Vulkan. Shader draw, качество графики, VRAM/Basis/Lossy, mipmapped/streamed imports и другие backend не проверены.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
CompressedTexture2DКонструктор
public CompressedTexture2D();Создаёт незагруженную текстуру: ширина/высота 0 и пустой LoadPath. До обращения к RID GetImage возвращает null. GetRid может создать placeholder, поэтому действующий RID сам не подтверждает загрузку файла.
Свойства1
LoadPathСвойство
public string LoadPath { get; set; }Чтение возвращает импортированный путь; назначение вызывает Load, но setter не возвращает его Error. Для обработки результата вызывайте Load явно. Ожидается .ctex, не исходный PNG/JPEG. Не привязывайте логику ассетов к изменяемым хешированным путям кэша импорта.
Методы2
GetLoadPathstring
public string GetLoadPath();Возвращает путь последнего успешно прочитанного импортированного файла. Это не обязательно ResourcePath исходного PNG и не новый импорт изображения.
stringСохранённый импортированный путь либо пустая строка до загрузки.
LoadError
public Error Load(string path);Читает файл результата импорта .ctex и обновляет GPU-данные этого экземпляра. Это не импорт произвольного изображения: обычные проектные PNG/JPEG загружайте через ResourceLoader. При успешной повторной загрузке RID сохраняется и испускается Changed, включая повтор того же пути. ResourcePath не переназначается. Проверяйте возвращённый Error и журнал. Внутренний читатель сбрасывает alpha cache перед чтением; обновление Sprite2D.IsPixelOpaque после замены изображения подтверждено тестом.
| Имя | Тип | По умолчанию |
|---|---|---|
path | string | — |
pathПуть к существующему результату импорта .ctex нужного типа; не путь к исходному PNG.
ErrorРезультат Error. Проверяйте Error.Ok и состояние ресурса; метод не является тестом визуального качества.