You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取SCNNode指定Key的动画?涉已弃用API无官方替代方案

获取SCNNode指定Key的CAKeyframeAnimation替代方案

当animation(forKey:)方法被弃用后,你可以通过SCNNode的animations属性来获取指定key的动画,这是当前官方隐含的替代方式,适配你用CAKeyframeAnimation添加自定义动画的场景。

实现步骤

  • 访问节点的animations属性,它返回可选的[String: Any]字典,存储了所有通过addAnimation(_:forKey:)添加的动画
  • 根据目标key从字典中取出对象,强转为CAKeyframeAnimation类型后即可进行修改操作

示例代码

// 替换为你的目标动画Key
let targetKey = "scaleAnimation"

if let animDict = yourSCNNode.animations,
   let keyframeAnim = animDict[targetKey] as? CAKeyframeAnimation {
    // 修改动画属性,比如调整时长、关键帧序列
    keyframeAnim.duration = 2.5
    keyframeAnim.values = [NSValue(scnVector3: SCNVector3(1,1,1)), NSValue(scnVector3: SCNVector3(2,2,2))]
    
    // 若动画处于运行状态,需先移除再重新添加以让修改生效
    yourSCNNode.removeAnimation(forKey: targetKey)
    yourSCNNode.addAnimation(keyframeAnim, forKey: targetKey)
}

注意事项

  • animations属性包含所有已添加的动画,无论这些动画是SceneKit内置类型还是你自定义的CAKeyframeAnimation
  • 直接修改运行中的动画属性可能无法实时生效,建议先移除原有动画,修改完成后再重新添加到节点上

内容的提问来源于stack exchange,提问作者codetiger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 15:46:03