private static void HandleInitialize() { EditorApplication.delayCall -= HandleInitialize; // Also ensures the addressable settings are created. settings = UnityEditor.AddressableAssets.AddressableAssetSettingsDefaultObject.GetSettings(true); }
private bool IsBeingUsedByAddressableSystem() { #if USING_UNITY_ADDRESSABLES UnityEditor.AddressableAssets.Settings.AddressableAssetSettings settings = UnityEditor.AddressableAssets.AddressableAssetSettingsDefaultObject.Settings; string buildPath = this.GetType().FullName + "." + nameof(BuildPath); if (settings == null) { return(false); } foreach (var group in settings.groups.Where(x => x.entries.IsNullOrEmpty() == false)) { foreach (var schema in group.Schemas.OfType <UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema>()) { if (schema?.BuildPath?.GetValue(settings) == buildPath) { return(true); } } } #endif return(false); }
protected T EditorLoad <T>(string address) where T : UnityEngine.Object { if (address == null || address == "") { return(null); } #if UNITY_EDITOR string subAddress = null; if (address.Contains("[")) { subAddress = address.Split('[', ']')[1]; address = address.Split('[', ']')[0]; } UnityEditor.AddressableAssets.Settings.AddressableAssetSettings settings = UnityEditor.AddressableAssets.AddressableAssetSettingsDefaultObject.Settings; List <UnityEditor.AddressableAssets.Settings.AddressableAssetEntry> allEntries = new List <UnityEditor.AddressableAssets.Settings.AddressableAssetEntry>(settings.groups.SelectMany(g => g.entries)); UnityEditor.AddressableAssets.Settings.AddressableAssetEntry foundEntry = allEntries.FirstOrDefault(e => e.address == address); if (foundEntry != null) { if (subAddress != null) { UnityEngine.Object[] objects = UnityEditor.AssetDatabase.LoadAllAssetRepresentationsAtPath(foundEntry.AssetPath); //loads all sub-assets from one asset if (objects.Length > 0) { for (int i = 0; i < objects.Length; i++) // loop on all sub-assets loaded { if (objects[i].name == subAddress && objects[i].GetType() == typeof(T)) // if the name AND the type match we found it { return((objects[i]) as T); } } } } else { return(UnityEditor.AssetDatabase.LoadAssetAtPath <T>(foundEntry.AssetPath)); } } return(null); #else Debug.LogError("Can't load addressable asset with editor load option!"); return(null); #endif }
private static bool IsBeingUsedByAddressableSystem() { UnityEditor.AddressableAssets.Settings.AddressableAssetSettings settings = UnityEditor.AddressableAssets.AddressableAssetSettingsDefaultObject.Settings; string buildPath = typeof(UploadAddressableToAzureSettings).FullName + "." + nameof(BuildPath); if (settings == null) { return(false); } foreach (var group in settings.groups.Where(x => x.entries.IsNullOrEmpty() == false)) { foreach (var schema in group.Schemas.OfType <UnityEditor.AddressableAssets.Settings.GroupSchemas.BundledAssetGroupSchema>()) { if (schema?.BuildPath?.GetValue(settings) == buildPath) { return(true); } } } return(false); }