public void AssignAddressableInformation() { List <AssetItem> SerializedItems = UMAAssetIndexer.Instance.UpdateSerializedList(); foreach (AssetItem ai in SerializedItems) { AddressableAssetEntry ae = AddressableUtility.GetAddressableAssetEntry(ai._Path); if (ae != null) { ai.AddressableAddress = ae.address; ai.IsAddressable = true; ai.AddressableGroup = ae.parentGroup.Name; ai._SerializedItem = null; ai.AddressableLabels = ""; foreach (string s in ae.labels) { ai.AddressableLabels += s + ";"; } } else { ai.AddressableAddress = ""; ai.AddressableGroup = ""; ai.IsAddressable = false; ai.AddressableLabels = ""; } } }
/// <summary> /// Removes the assent entry, if it exists /// </summary> /// <param name="ai"></param> private void ClearAddressableAssetEntry(AssetItem ai) { AddressableAssetEntry ae = AddressableUtility.GetAddressableAssetEntry(ai._Path, out AddressableAssetGroup group); if (group != null) { group.RemoveAssetEntry(ae); } }
public void AssignLabel(AssetItem ai, string Label) { AddressableAssetEntry ae = AddressableUtility.GetAddressableAssetEntry(ai._Path); if (ae != null) { if (ae.labels.Contains(Label)) { return; } ae.SetLabel(Label, true, true, true); } }
public bool AddRecipeGroup(UMATextRecipe recipe) { List <AssetItem> items = UMAAssetIndexer.Instance.GetAssetItems(recipe, true); List <AssetItem> UniqueItems = new List <AssetItem>(); foreach (AssetItem ai in items) { if (ai.IsAddressable) { AddressableAssetEntry ae = AddressableUtility.GetAddressableAssetEntry(ai._Path); if (ae != null && ae.parentGroup.Name == SharedGroupName) { continue; } UniqueItems.Add(ai); } } if (UniqueItems.Count == 0) { return(false); } // create the group. // add the non-unique items to the group // Set the addressable stuff; AddressableAssetGroup theGroup = AddressableUtility.AddressableSettings.FindGroup(recipe.name); if (theGroup != null) { AddressableUtility.AddressableSettings.RemoveGroup(theGroup); } theGroup = AddressableUtility.AddressableSettings.CreateGroup(recipe.name, false, false, true, AddressableUtility.AddressableSettings.DefaultGroup.Schemas); theGroup.GetSchema <BundledAssetGroupSchema>().BundleMode = BundledAssetGroupSchema.BundlePackingMode.PackTogether; foreach (AssetItem ai in UniqueItems) { ai.AddressableAddress = ""; // let the system assign it. ai.IsAddressable = true; ai.AddressableGroup = recipe.name; ai._SerializedItem = null; ai.AddressableLabels = recipe.AssignedLabel; AddAssetItemToGroup(theGroup, ai, recipe.name, recipe.AssignedLabel); #if INCL_TEXTURES if (IsOverlayItem(ai)) { OverlayDataAsset od = ai.Item as OverlayDataAsset; if (od == null) { continue; } foreach (Texture tex in od.textureList) { if (tex == null) { continue; } if (tex as Texture2D == null) { continue; } string Address = "Texture2D-" + tex.name + "-" + tex.GetInstanceID(); bool found = AssetDatabase.TryGetGUIDAndLocalFileIdentifier(tex.GetInstanceID(), out string texGUID, out long texlocalID); if (found) { AddItemToGroup(theGroup, tex, Address, recipe.AssignedLabel); } } } #endif } return(true); }