-
Creator 版本:
2.4.3 -
目标平台:
编辑器 -
需求:
- 有人物的Spine动画,希望在动画编辑器中,结合Spine动画去做其它Node的动画。
- Spine在编辑器中无法预览,尤其是无法在动画编辑器中,跟随当前时间线的位置预览。
- 问题:
- 有无类似 CC_EDITOR 的变量,可以判断当前是否在动画编辑状态下?
- 在动画编辑器状态下,有无什么办法,可以获取到当前时间线的位置?
Creator 版本:
2.4.3
目标平台:
编辑器
需求:
这个试试
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动画一致。