Version: Unity 7.0 Alpha (7000.0)
LanguageEnglish
  • C#

AssetDatabase.IsMainAsset

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Declaration

public static bool IsMainAsset(Object obj);

Parameters

Parameter Description
obj The asset object to check.

Returns

bool True if the asset is a main asset. Otherwise, false.

Description

Checks whether an asset object is the main asset of its file in the Project window.

A file can contain several assets, but only one of them is the main asset. For example, an imported model contains a root GameObject, meshes, and child GameObjects. The root GameObject is the main asset.

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 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)); } }

Declaration

public static bool IsMainAsset(EntityId entityId);

Parameters

Parameter Description
entityId The EntityId of the asset to check.

Returns

bool True if the asset is a main asset. Otherwise, false.

Description

Checks whether the asset with the specified EntityId is the main asset of its file in the Project window.

A file can contain several assets, but only one of them is the main asset. For example, an imported model contains a root GameObject, meshes, and child GameObjects. The root GameObject is the main asset.


Obsolete Please use IsMainAsset(EntityId) with the EntityId type instead.

Declaration

public static bool IsMainAsset(int instanceID);

Parameters

Parameter Description
instanceID The instance ID of the asset to check.

Returns

bool True if the asset is a main asset. Otherwise, false.

Description

Checks whether the asset with the specified instance ID is the main asset of its file in the Project window.

This overload is obsolete. Use the overload that takes an EntityId instead.

Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961