static private void CreateSpriteLibrarySourceAssetMenu() { var action = ScriptableObject.CreateInstance <CreateSpriteLibrarySourceAsset>(); var icon = IconUtility.LoadIconResource("Sprite Library", "Icons/Light", "Icons/Dark"); ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, action, "SpriteLib.spriteLib", icon, null); }
/// <summary> /// Implementation of ScriptedImporter.OnImportAsset /// </summary> /// <param name="ctx"> /// This argument contains all the contextual information needed to process the import /// event and is also used by the custom importer to store the resulting Unity Asset. /// </param> public override void OnImportAsset(AssetImportContext ctx) { var spriteLib = ScriptableObject.CreateInstance <SpriteLibraryAsset>(); spriteLib.name = System.IO.Path.GetFileNameWithoutExtension(assetPath); var sourceAsset = UnityEditorInternal.InternalEditorUtility.LoadSerializedFileAndForget(assetPath); if (sourceAsset?.Length > 0) { var sourceLibraryAsset = sourceAsset[0] as SpriteLibrarySourceAsset; if (sourceLibraryAsset != null) { foreach (var cat in sourceLibraryAsset.library) { spriteLib.AddCategoryLabel(null, cat.name, null); foreach (var entry in cat.overrideEntries) { spriteLib.AddCategoryLabel(entry.spriteOverride, cat.name, entry.name); } } } if (!string.IsNullOrEmpty(sourceLibraryAsset.primaryLibraryID)) { var primaryAssetPath = AssetDatabase.GUIDToAssetPath(sourceLibraryAsset.primaryLibraryID); if (primaryAssetPath != assetPath) { ctx.DependsOnArtifact(AssetDatabase.GUIDToAssetPath(sourceLibraryAsset.primaryLibraryID)); m_PrimaryLibrary = AssetDatabase.LoadAssetAtPath <SpriteLibraryAsset>(primaryAssetPath); } } } ctx.AddObjectToAsset("SpriteLib", spriteLib, IconUtility.LoadIconResource("Sprite Library", "Icons/Light", "Icons/Dark")); }