Exemplo n.º 1
0
        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);
                }
            }
        }