LazyLoadReference<T0>
структура в UnityEngine
Выполнено в:UnityEngine.CoreModule
Описание
Сериализируемая ленивая ссылка на UnityEngine.Object, содержащуюся в файле ассета.
Разрешает ассету ссылаться на другой ассет, но задерживает загрузку ассета, на который сделана ссылка, до его использования, вместо загрузки при десериализации объекта ссылки.
Типичные случаи использования:
— Для настроек импортера, которые должны ссылаться на ассеты, но чтение настроек с диска не может загрузить ассеты, на которые сделана ссылка, поскольку они не могут быть импортированы и пока не доступны.
— Для сокращения времени, необходимого для открытия сцены, путем загрузки только ассетов, необходимых для первоначальной настройки или отображения, в режиме редактирования.
Примечания:
- Легкая ссылка имеет небольшую накладную на производительность по сравнению с прямой ссылкой.
- В автономном проигрывателе все ресурсы загружаются при загрузке проигрывателя или при загрузке пакетов ресурсов.
using UnityEditor.AssetImporters; using UnityEngine;
[ScriptedImporter(1, "foo")] public class FooImporter : ScriptedImporter { public LazyLoadReference<Material> m_DefaultMaterial;
public override void OnImportAsset(AssetImportContext ctx) { // At this point, 'm_DefaultMaterial' may refer to a material that has yet to be loaded into memory
Material mat; if (!m_DefaultMaterial.isSet) // 'isSet' Does not load the referenced material even if not in memory. { mat = new Material(Shader.Find("Transparent/Diffuse")); ctx.AddObjectToAsset("mat", mat); } else { mat = m_DefaultMaterial.asset; // Will load referenced material if it is not already in memory. }
var obj = GameObject.CreatePrimitive(PrimitiveType.Cube); obj.transform.GetComponent<MeshRenderer>().material = mat;
ctx.AddObjectToAsset("main", obj); ctx.SetMainObject(obj); } }
Свойства
| Свойство | Описание |
|---|---|
| asset | Доступ к ассету, на который сделана ссылка. |
| entityId | Возвращает EntityId для ассета, на который сделана ссылка. |
| isBroken | Свойство удобства, которое проверяет, нарушена ли ссылка: ссылка на объект, который либо недоступен, либо не загружается. |
| isSet | Определяет, является ли объект объектом назначения, независимо от того, доступен ли объект для загрузки. |
Конструкторы
| Конструктор | Описание |
|---|---|
| LazyLoadReference_1 | Построить новый LazyLoadReference. |
Операторы
| Оператор | Описание |
|---|---|
| LazyLoadReference<T> | Подразумеваемое преобразование из ссылки на ассет в LazyLoadReference. |
| LazyLoadReference<T> | Неявное преобразование из EntityId в LazyLoadReference. |