版本: Unity 6 (6000.0)
语言英语
  • C#

AssetDatabase.IsMainAsset

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交的内容,但我们会阅读用户提出的每项更改建议,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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