2.4.3 如何判断当前是否在动画编辑器中,以及获取当前的帧数?

  • Creator 版本:
    2.4.3

  • 目标平台:
    编辑器

  • 需求:

  • 有人物的Spine动画,希望在动画编辑器中,结合Spine动画去做其它Node的动画。
  • Spine在编辑器中无法预览,尤其是无法在动画编辑器中,跟随当前时间线的位置预览。
  • 问题:
  1. 有无类似 CC_EDITOR 的变量,可以判断当前是否在动画编辑状态下?
  2. 在动画编辑器状态下,有无什么办法,可以获取到当前时间线的位置?
1赞

这个试试
cc.engine._animatingInEditMode = 1
cc.engine.animatingInEditMode = 1

cc.engine.animatingInEditMode = 1

对Spine动画好像没什么用,不过研究发现想让Spine动画在编辑器预览可以用自定义脚本 executeInEditMode实现。

现在主要是不知道,怎么获取动画编辑器当前的时间线位置。

厉害了,大佬真的牛

目前还没有找到好办法,分享一个我的临时解决方案:

const { ccclass, property } = cc._decorator;

@ccclass
export default class EditorPreviewSpine extends cc.Component {

    skeleton!: sp.Skeleton;

    onLoad() {
        this.skeleton = this.getComponent(sp.Skeleton);
    }

    @property(cc.Integer)
    _curFrame: number = 0;
    get curFrame(): number {
        return this._curFrame;
    }
    @property(cc.Integer)
    set curFrame(v: number) {
        if (CC_EDITOR) {
            let state = this.skeleton.getState() as sp.spine.AnimationState;
            state.tracks[0].trackTime = v / 60;
            state.apply((this.skeleton as any)._skeleton);
        }

        this._curFrame = v;
    }

}

给Skeleton所在节点挂上这个组件,然后在动画编辑器里给这个组件的curFrame增加动画(按照实际帧数),就可以实现这个功能。
但需要人工确保动画编辑器里的帧数和原Spine动画一致。

1赞