AssetDatabase.CanOpenAssetInEditor
Declaration
public static bool CanOpenAssetInEditor(EntityId entityId);Obsolete public static bool CanOpenAssetInEditor(int instanceID);Параметры
| Параметр | Описание |
|---|---|
| entityId | EntityId ассета. |
| instanceID | Экземпляр ID ассета. |
Возвращаемое значение
логическое Возвращает true, если Unity может успешно открыть ассет в Редакторе, в противном случае возвращает false.
Описание
Проверяет, может ли Unity открыть ассет в редакторе.
Проверяет, может ли Unity открыть заданный экземпляр ассета в Редакторе при выполнении AssetDatabase.OpenAsset. Примечание: Ассет должен быть записан на диск, иначе эта функция всегда возвращает false.
using UnityEditor; using UnityEditor.Callbacks; using UnityEngine;
[CreateAssetMenu(fileName = "MyObject", menuName = "ScriptableObjects/MyObject", order = 1)] public class MyObject : ScriptableObject { public string myData;
[OnOpenAsset] public static bool Open(EntityId entityId) { if (AssetDatabase.GetMainAssetTypeAtPath(AssetDatabase.GetAssetPath(entityId)) == typeof(MyObject)) { Debug.Log("Opening asset"); return true; } else return false; // This method doesn't handle opening of different asset types }
[OnOpenAsset(OnOpenAssetAttributeMode.Validate)] public static bool WillOpen(EntityId entityId) { if (AssetDatabase.GetMainAssetTypeAtPath(AssetDatabase.GetAssetPath(entityId)) == typeof(MyObject)) { // We can open MyObject asset using MyObject opening method Debug.Log("This asset can be opened by OnOpenAsset marked method"); return true; } else return false; // The passed instance doesn't belong to MyObject type asset so we won't be able to open it using opening method inside MyObject }
[MenuItem("Test/WillOpenInUnity")] public static void WillSelectionBeOpenedInUnity() { AssetDatabase.CanOpenAssetInEditor(Selection.activeObject.GetEntityId()); } }