void OnWizardCreate() { string atlasPath = getAtlasFilePath(path); string directory = Path.GetDirectoryName(atlasPath); string name = Path.GetFileNameWithoutExtension(path); SpritesByName spriteByName; Dictionary <string, GameObject> boneGOByName; Dictionary <string, Slot> slotByName; List <Skin> skins; AttachmentGOByNameBySlot attachmentGOByNameBySlot; if (File.Exists(path)) { try{ SpineMultiatlas spineMultiAtlas = SpineMultiatlas.deserializeFromFile(atlasPath); SpineData spineData = SpineData.deserializeFromFile(path); SpineUtil.updateImporters(spineMultiAtlas, directory, pixelsPerUnit, out spriteByName); GameObject rootGO = SpineUtil.buildSceleton(name, spineData, pixelsPerUnit, out boneGOByName, out slotByName); rootGO.name = name; SpineUtil.addAllAttahcmentsSlots(spineData, spriteByName, slotByName, zStep, pixelsPerUnit, out skins, out attachmentGOByNameBySlot); SkinController sk = SpineUtil.addSkinController(rootGO, spineData, skins, slotByName); if (animationImportType == AnimationImportType.MECANIM) { Animator animator = SpineUtil.addAnimator(rootGO); if (buildAvatarMask) { SpineUtil.builAvatarMask(rootGO, spineData, animator, directory, name); } } ModelImporterAnimationType modelImporterAnimationType = getModelImporterAnimationType(); if (spineData.animations != null && spineData.animations.Count > 0) { SpineUtil.addAnimation(rootGO, directory, spineData, boneGOByName, attachmentGOByNameBySlot, pixelsPerUnit, modelImporterAnimationType, updateResources); } sk.showDefaulSlots(); SpineUtil.buildPrefab(rootGO, directory, name); GameObject.DestroyImmediate(rootGO); } catch (SpineMultiatlasCreationException e) { Debug.LogException(e); } catch (SpineDatatCreationException e) { Debug.LogException(e); } catch (AtlasImageDuplicateSpriteName e) { Debug.LogException(e); } } }