Unity 6.3
0 онлайн 70 гостей 3 в системе
Вход

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.