Представим типичную ситуацию при работе с ассетами: у вас куча ассетов с одним и тем же лейблом и вы хотите их загрузить разом. А ассеты могут быть разного типа, поэтому в дженерик вы передаёте тип Object. Что же происходит в этом случае с картинками? Загрузятся они как спрайты? Или как текстуры? Что ж…Добавим в проект картинку и навесим Label.Теперь попробуем загрузить её по имени лейбла.public class Tests : MonoBehaviour { void Start() { LoadByLabel<Object>("test"); } public void LoadByLabel<T>(string label) { Addressables.LoadResourceLocationsAsync(label).Completed += obj => { if (obj.Status != AsyncOperationStatus.Succeeded) return; if (obj.Result == null) return; foreach (var irl in obj.Result ) { AsyncOperationHandle loadHandle = Addressables.LoadAssetAsync<T>(irl.PrimaryKey); loadHandle.Completed += asset => { Debug.LogWarning($"LoadByLabel: {irl.PrimaryKey} => {irl.ResourceType}, {asset.Result.GetType().FullName}]"); }; } }; } }Увидим такой лог:LoadByLabel: Dolan => UnityEngine.Texture2D, UnityEngine.Texture2D] LoadByLabel: Dolan => UnityEngine.Sprite, UnityEngine.Texture2D]Во-первых, одна и та же картинка загрузилась два раза.Но проблема тут в том, что оба объекта имеют разный ResourceType, но при этом тип у объектов одинаковый.suvitruf.ruUnity и Addressables: спрайт или текстура? Оба!#unity
Хоба!
Люблю дорогу на Эльдорадо)
Время загрузки разное? А что по памяти?)
Да в памяти то и спрайт, и текстура будут в любом случае. Но в зависимости от того, что грузишь, будет по-разному выглядеть очистка памяти.
Подозреваю, что это даже в каком-то смысле правильное поведение. Мне кажется, что спрайт на самом деле является не ассетом, а просто рантайм контейнером для текстуры из-за чего и возникает эта проблема