ScriptedImporter
класс в UnityEditor.AssetImporters
Наследуется от:AssetImporter
Описание
Абстрактный базовый класс для пользовательских импортёров ассетов.
Скриптовые импортеры — это скрипты, которые ассоциированы с определенными расширениями файлов. Они вызываются конвейером Asset Unity для преобразования содержимого ассоциированных файлов в Assets.
Используйте ScriptedImporterAttribute класс, чтобы регистрировать собственные импортёры в конвейере ассетов.
Поля C# в ScriptedImporter сериализируются точно так же, как и поля в MonoBehaviour. См. Сериализация скриптов Вы можете увидеть эти свойства в Inspector и использовать их для управления поведением импортера для каждого ассета. Для программного доступа к значениям свойств ассета используйте AssetImporter.GetAtPath и приведите возвращаемое значение к нужному классу, производному от ScriptedImporter. Изменив значения, запустите новый импорт вызовом EditorUtility.SetDirty а затем AssetImporter.SaveAndReimport.
using UnityEngine; using UnityEditor.AssetImporters; using System.IO;
[ScriptedImporter(1, "cube")] public class CubeImporter : ScriptedImporter { public float m_Scale = 1;
public override void OnImportAsset(AssetImportContext ctx) { var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); var position = JsonUtility.FromJson<Vector3>(File.ReadAllText(ctx.assetPath));
cube.transform.position = position; cube.transform.localScale = new Vector3(m_Scale, m_Scale, m_Scale);
// 'cube' is a GameObject and will be automatically converted into a Prefab // (Only the 'Main Asset' is eligible to become a Prefab.) ctx.AddObjectToAsset("main obj", cube); ctx.SetMainObject(cube);
var material = new Material(Shader.Find("Standard")); material.color = Color.red;
// Assets must be assigned a unique identifier string consistent across imports ctx.AddObjectToAsset("my Material", material);
// Assets that are not passed into the context as import outputs must be destroyed var tempMesh = new Mesh(); DestroyImmediate(tempMesh); } }
Открытые методы
| Метод | Описание |
|---|---|
| OnImportAsset | Этот метод должен быть переопределён в производном классе; конвейер ассетов вызывает его для импорта файлов. |
| SupportsRemappedAssetType | Переопределите этот метод, если ваш ScriptedImporter поддерживает пересопоставление определенных типов ассетов. |
Сообщения
| Сообщение | Описание |
|---|---|
| GatherDependenciesFromSourceFile | Статический обратный вызов, который вы можете реализовать, чтобы задать зависимости артефактов от других ассетов и оптимизировать порядок импорта ассетов. |
| OnValidate | Эта функция вызывается при загрузке импортера или изменении значения в Inspector. |
| Reset | Сброс значений по умолчанию. |
Унаследованные члены 4
Свойства
| Свойство | Описание |
|---|---|
| assetBundleName | Получить или установить имя AssetBundle. |
| assetBundleVariant | Получить или установить вариант AssetBundle. |
| assetPath | Имя пути ассета для данного импортера. (только для чтения) |
| importSettingsMissing | Значение true, если метафайл не предоставляется с импортированным ассетом. |
| userData | Получить или установить любые данные пользователя. |
| hideFlags | Должен ли объект быть скрытым, сохраняться с Scene или изменяться пользователем? |
| name | Имя объекта. |
Открытые методы
| Метод | Описание |
|---|---|
| AddRemap | Сопоставление субактива из импортированного ассета (например, файла FBX) с внешним ассетом того же типа. |
| GetExternalObjectMap | Получает копию сопоставления внешнего объекта, используемого AssetImporter. |
| RemoveRemap | Удаляет элемент из карты внешних объектов. |
| SaveAndReimport | Сохранить настройки импортера ассетов, если импортер ассетов загрязнен. |
| SetAssetBundleNameAndVariant | Установите имя и вариант AssetBundle. |
| GetInstanceID | Получает экземпляр ID объекта. |
| ToString | Возвращает имя объекта. |
Статические методы
| Метод | Описание |
|---|---|
| GetAtPath | Получает импортер ассета для ассета в пути. |
| GetImportLog | Получает журналы, созданные во время импорта ассета по пути. |
| Destroy | Удаляет GameObject, компонент или ресурс. |
| DestroyImmediate | Немедленно уничтожает указанный объект. Используйте с осторожностью и только в режиме редактирования. |
| DontDestroyOnLoad | Не уничтожать целевой Объект при загрузке нового Scene. |
| FindAnyObjectByType | Получает любой активный загруженный объект типа Type. |
| FindFirstObjectByType | Получает первый активный загруженный объект типа Type. |
| FindObjectsByType | Получает список всех загруженных объектов типа Type. |
| Instantiate | Клонирует исходный объект и возвращает клон. |
| InstantiateAsync | Захватывает моментальный снимок первоначального объекта (который должен быть связан с каким-либо GameObject) и возвращает AsyncInstantiateOperation. |
Операторы
| Оператор | Описание |
|---|---|
| bool | Существует ли объект? |
| оператор!= | Сравнивает, если два объекта ссылаются на разные объекты. |
| оператор == | Сравнение двух ссылок на объекты для определения того, относятся ли они к одному и тому же объекту. |