Обеспечивает доступ к настройкам импорта и базовой функциональности для всех типов ассетов.
Хотя это базовый класс для всех импортёров ассетов, рекомендуется наследоваться от ScriptedImporter класс, если вы хотите написать новый собственный импортёр.
Каждый ассет, импортированный в проект, связан с соответствующим объектом импортера ассетов. Этот объект предоставляет доступ к настройкам, примененным во время процесса импорта ассетов. Эти настройки хранятся в файле .meta файл, расположены рядом с исходным файлом ассета. Они включают сведения о пакете ассетов, настраиваемые данные пользователя и любые внешние объекты, на которые зависит ассет.
Чтобы получить объект импортера ассетов, связанный с ассетом, используйте AssetImporter.GetAtPath метод.
Чтобы применить и сохранить любые изменения, внесенные в настройки, используйте AssetImporter.SaveAndReimport метод. Это действие повторно импортирует ресурс с обновленной конфигурацией.
Следующий пример итерирует все ассеты в проекте, выявляя те, у которых отсутствует имя пакета ассетов, путем проверки их соответствующих объектов импортера ассетов.
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEditor;
using UnityEngine;
public class AddUserData : MonoBehaviour
{
[MenuItem("Examples/Log Unbundled Assets")]
static void LogUnbundledAssets()
{
CreateAssets();
List<string> unbundledAssets = FindUnbundledAssets();
if (unbundledAssets.Count > 0)
{
Debug.Log("Unbundled assets:");
foreach (string asset in unbundledAssets)
Debug.Log(" " + asset);
}
else
{
Debug.Log("All assets are bundled.");
}
}
static List<string> FindUnbundledAssets()
{
// Fetch all the assets under Assets/ExampleAssets, excluding the
// folders.
string[] assets = AssetDatabase.GetAllAssetPaths()
.Where(path => path.StartsWith("Assets/ExampleAssets") &&
!Directory.Exists(path)) // Exclude directories
.ToArray();
// Unbundled assets do not have an asset bundle name set in their
// importer settings.
List<string> unbundledAssets = new List<string>();
foreach (string asset in assets)
{
AssetImporter importer = AssetImporter.GetAtPath(asset);
if (importer.assetBundleName == "")
{
unbundledAssets.Add(asset);
}
}
return unbundledAssets;
}
static void CreateAssets()
{
// Create a folder for the assets in this example.
if (!AssetDatabase.IsValidFolder("Assets/ExampleAssets"))
{
AssetDatabase.CreateFolder("Assets", "ExampleAssets");
}
// Create a folder for prefab assets.
if (!AssetDatabase.IsValidFolder("Assets/ExampleAssets/Prefabs"))
{
AssetDatabase.CreateFolder("Assets/ExampleAssets",
"Prefabs");
}
// Create a sphere asset.
GameObject sphere =
GameObject.CreatePrimitive(PrimitiveType.Sphere);
PrefabUtility.SaveAsPrefabAsset(
sphere, "Assets/ExampleAssets/Prefabs/Sphere.prefab");
// Create a text asset.
TextAsset text = new TextAsset("Hello, World!");
AssetDatabase.CreateAsset(text,
"Assets/ExampleAssets/Text.asset");
// Only the text assets has its asset bundle name set.
AssetImporter importer =
AssetImporter.GetAtPath("Assets/ExampleAssets/Text.asset");
importer.assetBundleName = "myBundle";
importer.SaveAndReimport();
// Create a material asset.
Material material = new Material(Shader.Find("Standard"));
AssetDatabase.CreateAsset(material,
"Assets/ExampleAssets/Material.mat");
}
}