Объявление
public static bool IsMainAsset(Object obj);public static bool IsMainAsset(int instanceID);
Описание
Является ли ресурс основным в окне проекта?
Например, импортированная модель имеет игровой объект в качестве корня, а также несколько мешей и дочерних игровых объектов. в развернутом состоянии. Корневой игровой объект в этом случае является основным активом.
using UnityEditor;
using UnityEngine;
public class Scriptable : ScriptableObject
{
}
public class AssetDatabaseExamples : MonoBehaviour
{
[MenuItem("AssetDatabase/Is Main Asset Example")]
static void IsMainAssetExample()
{
var materialAsset = new Material(Shader.Find("Standard"));
//materialAsset все еще находится в памяти, поэтому это будет False
Debug.Log(AssetDatabase.IsMainAsset(materialAsset));
//Создать скриптовый объект
var scriptableAssetPath = "Assets/ScriptableObjects/NewObject.asset";
var mainAsset = ScriptableObject.CreateInstance();
AssetDatabase.CreateAsset(mainAsset, scriptableAssetPath);
//Add the MaterialAsset to the Scriptable object, so that the Material becomes a Sub Asset of the Scriptable object
AssetDatabase.AddObjectToAsset(materialAsset, scriptableAssetPath);
AssetDatabase.SaveAssets();
//This will be false because material asset has been added to the main Asset and is now a Sub AssetDebug.Log(AssetDatabase.IsMainAsset(materialAsset));
//Remove the subAsset from the Scriptable object and create it as an AssetAssetDatabase.RemoveObjectFromAsset(materialAsset);
AssetDatabase.CreateAsset(materialAsset, "Assets/Materials/New Mat0.mat");
//This will be True because the material is now the main AssetDebug.Log(AssetDatabase.IsMainAsset(materialAsset));
}
}