创建spine在ide没运行跟运行时表现不一样?

图1:这是运行场景后,拉了一个spine进来,spine图能显示但animation读不到

图2:没运行场景状态拉一个spine进来是可以识别到animation的

表现的问题是代码动态读取spine后播放spine的animation无法播放 :12:

111111111111111顶顶顶顶顶顶

有大佬遇到过吗,动态加载的spine播放动画无效

顶顶顶顶顶顶dddddddddddd

救命救命救命救命救命救命救命救命救命救命

运行状态是无法读取到spine的animation的,你动态加载是怎么写的?

https://forum.cocos.org/t/topic/153565/2

那你动画设置呢?这个只是加载代码

这边是我获取spine的方法,里面夹了写对象池复用可以忽略,spine要先设置skin再设置animation
getSPAni(parent: Node, path: string, skin?: string, aniName?: string, loop: boolean = true, cacheMode: sp.AnimationCacheMode = sp.AnimationCacheMode.PRIVATE_CACHE): AniCall {

    return new AniCall((resolve) => {

        let setSpine = (spine: sp.Skeleton) => {

            loop = loop ? true : false;

            spine.premultipliedAlpha = false;

            skin = skin || "default";

            spine.setSkin(skin);

            spine.enableBatch = true;

            spine.setAnimation(0, aniName || "animation", loop);

        }

        if (this.pool[path] && this.pool[path].length > 0) {

            let node = this.pool[path].pop();

            node.setParent(parent);

            node.layer = parent.layer;

            let spine = node.getComponent(sp.Skeleton);

            setSpine(spine);

            resolve(node);

        } else {

            let node = new Node("SP");

            node.layer = parent.layer;

            node.setParent(parent);

            let spine = node.addComponent(sp.Skeleton);

            let skePath = "animation/" + path;

            resources.load(skePath, sp.SkeletonData, (error, skeAsset) => {

                if (error) {

                    return;

                }

                this.addSpineRef(skeAsset);

                if (!node.isValid) {

                    this.decSpineRef(skeAsset);

                    return;

                }

                spine.setAnimationCacheMode(cacheMode);

                spine.skeletonData = skeAsset;

                if (!node.hasEventListener(Node.EventType.NODE_DESTROYED, this.spineDestroyedEvent)) {

                    node.on(Node.EventType.NODE_DESTROYED, this.spineDestroyedEvent, this);

                }

                setSpine(spine);

                resolve(node);

            });

        }

    });

}

大佬我试了

            var data = node.addComponent(sp.Skeleton)
            data.skeletonData = skData;
            data.setSkin("default");

咋这个还是没识别到呢 :joy:

可以了,跟skin也没啥关系,真艹了,要先node插进根节点后再addspine的组件 :3:

  resources.load("spineboy-pro", sp.SkeletonData, function (err, skData) {
        if (err) {
            console.log("createRes:" + err);
            return;
        }
        else {
            var node = new Node();
            var data = node.addComponent(sp.Skeleton)
            node.parent = this.node;
            data.skeletonData = skData;
           // data.setSkin("default");
            data.setAnimation(0, "idle", true);
            node.layer = Layers.Enum.UI_2D;
            return node;
        }
    }.bind(this))

如果

node.parent = this.node;

放在最后就不行,并且跑起来ide右侧栏animation还是显示为null

,但动画能正常放了