public static bool IsMainAsset (Object obj);
public static bool IsMainAsset (int instanceID);

Description

Является ли ассет главным ассетом в окне проекта?

For example an imported model has a game object as its root and several Meshes and child game objects in expanded state. The root game object is the main asset in this case.

using UnityEditor;
using UnityEngine;

public class Scriptable : ScriptableObject { }

public class AssetDatabaseExamples : MonoBehaviour { [MenuItem("AssetDatabase/IsMainAssetExample")] static void IsMainAssetExample() { var materialAsset = new Material(Shader.Find("Standard"));

//materialAsset is still in memory, therefore this will be False Debug.Log(AssetDatabase.IsMainAsset(materialAsset));

//Create a Scriptable object var scriptableAssetPath = "Assets/ScriptableObjects/NewObject.asset"; var mainAsset = ScriptableObject.CreateInstance<Scriptable>(); AssetDatabase.CreateAsset(mainAsset, scriptableAssetPath);

//Add the Material Asset 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 Asset Debug.Log(AssetDatabase.IsMainAsset(materialAsset));

//Remove the subAsset from the Scriptable object and create it as an Asset AssetDatabase.RemoveObjectFromAsset(materialAsset); AssetDatabase.CreateAsset(materialAsset, "Assets/Materials/New Mat0.mat");

//This will be True because the material is now the main Asset Debug.Log(AssetDatabase.IsMainAsset(materialAsset)); } }
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961