Unity 6.3
0 онлайн 13 гостей 3 в системе
Вход

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