/**
     * 修改皮肤
     * @param spine 人物骨骼组件
     * @param oldSkinName 旧皮肤名
     * @param newSkinName 新皮肤名
     * @returns 
     */
    export async function changeSkin(spine: sp.Skeleton, oldSkinName: string, newSkinName: string) {
        // 获取当前骨骼数据(包含所有换装数据)
        const skeletonData = spine.skeletonData.getRuntimeData();
        const needChangeSkin = skeletonData.findSkin(newSkinName);
        if (!needChangeSkin)
            return;

        // 创建新的皮肤
        // @ts-ignore
        const newSkin = new sp.spine.Skin(WHOLE_SKIN);

        // 拷贝换装前皮肤
        newSkin.copySkin(spine._skeleton.skin); // warning 这里报错，报错如下
        /*
    2022-07-27 14:18:15.314 13577-13620/com.test.spine E/jswrapper: ERROR: Uncaught ReferenceError: name is not defined, location: src/cocos-js/cc.js:0:0
    STACK:
     - [0]anonymous@src/cocos-js/cc.js:127605
     - [1]anonymous@src/cocos-js/cc.js:125567
     - [2]setSkin@assets/main/index.js:256
     - [3]onClickChangeSkin@assets/main/index.js:178
     - [4]emit@src/cocos-js/cc.js:54272
     - [5]emitEvents@src/cocos-js/cc.js:54240
     - [6]_onTouchEnded@src/cocos-js/cc.js:89528
     - [7]emit@src/cocos-js/cc.js:3575
     - [8]dispatchEvent@src/cocos-js/cc.js:41674
     - [9]dispatchEvent@src/cocos-js/cc.js:38800
     - [10]_handleTouchEnd@src/cocos-js/cc.js:41929
     - [11]_handleEventTouch@src/cocos-js/cc.js:41871
     - [12]dispatchEventTouch@src/cocos-js/cc.js:87828
     - [13]emit@src/cocos-js/cc.js:3575
     - [14]_frameDispatchEvents@src/cocos-js/cc.js:44649
     - [15]tick@src/cocos-js/cc.js:49478
     - [16]callback@src/cocos-js/cc.js:48917
     - [17]tick@jsb-adapter/jsb-builtin.js:601
        */

        // 移除旧皮肤
        const oldSkin = skeletonData.findSkin(oldSkinName);
        for (const skinEntry of oldSkin.getAttachments()) {
            const slot = skinEntry.slotIndex;
            const name = skinEntry.name;
            newSkin.removeAttachment(slot, name);
        }

        // 设置新皮肤
        for (const skinEntry of needChangeSkin.getAttachments()) {
            const slot = skinEntry.slotIndex;
            const name = skinEntry.name;
            const attachment = skinEntry.attachment;
            newSkin.setAttachment(slot, name, attachment);
        }

        if (skeletonData.skins[skeletonData.skins.length - 1].name = newSkin.name) {
            skeletonData.skins[skeletonData.skins.length - 1] = newSkin;
        } else {
            !sys.isNative ? skeletonData.skins.push(newSkin) : skeletonData.addSkin(newSkin)
        }

        // @ts-ignore
        spine.setSkinObject(newSkin);

        // 同步动画
        const syncEntry = spine.getCurrent(0);
        if (syncEntry) {
            const lastDuration = syncEntry.trackTime;
            spine.setAnimation(0, 'idle', true);
            spine.updateAnimation(lastDuration);
        } else {
            spine.setAnimation(0, "idle", true);
        }
    }