通过脚本动态修改在动画编辑器中预先设置好的属性值

v3.8 官方文档(功能模块 - 动画系统 - 使用动画编辑器 - 程序化编辑动画剪辑)中,assignSorted 本来应该是一个方法,但在实际使用中,assignSorted 只是一个属性,当调用它时,编辑器会报错:This expression is not callable.

本人使用的 Cocos Creator 编辑器版本是 v3.8.8。

由于上述原因,本人想通过 assignSorted 来对在动画编辑器中预先设置的属性值进行修改已经无法实现。

通过进一步研究某一通道(以 position 属性的 x 通道为例进行说明)下 curve 属性中的 times(), values() 等方法得知,以 values() 方法为例,调用此方法会得到一个迭代器,对此迭代器使用 for…of 循环即可获取在每帧中预先设置好的 position.x 的值。伪代码如下:

for ( const val of x.curve.values() )
{
const newVal = 100;

( val as RealKeyFrameValue ).value = newVal;

}

如上代码所示,我的需求是改变上述 val 的值,由于 typescript 无法自动推导出 val 的类型,所以我使用 as 来直接指定 val 的类型。接下来,我只要用一个我所需要的新值 newVal 对 val 的 value 属性进行赋值即可。

赋值完毕后,调用动画对象的 play() 方法即可看到预期效果。

目前的情况下 这些功能都会由ai+ mcp来完成。。。。。。。。。。。。。