2017-04-07 11 views
0

私はSceneKitでアニメーション "DAE" モデルを実行しようとしている:SceneKit Swift3コンパイラ・エラー

let url = Bundle.main.url(forResource: "art.scnassets/Player(walking)", withExtension: "dae") 
    let sceneSource = SCNSceneSource(url: url!, options: [SCNSceneSource.LoadingOption.animationImportPolicy: SCNSceneSource.AnimationImportPolicy.playRepeatedly]) 
    let animationIds: NSArray = sceneSource?.identifiersOfEntries(withClass: CAAnimation) 

    for eachId in animationIds { 
     let animation: CAAnimation = (sceneSource?.entryWithIdentifier(eachId as! String, withClass: CAAnimation.self))! 
     animations.add(animation) 
    } 
    character?._walkAnimations = animations 

しかし、コンパイラそれはライン上でスロー:

はanimationIdsを聞かせて:NSArrayの= sceneSource?。 identifiersOfEntries(withClass:CAAnimation)

とエラーを書き込みます。

をvに変換できません。 '[String]型の値を返す指定された型 'NSArray'

この問題を解決するのを手伝ってください。

ありがとうございます。

答えて

0

あなたはNSArrayから[String]?を変換し、再度Stringに各要素を変換しているなぜ、それの必要は単にスウィフトネイティブArrayを使用していないとif letまたはguard letで任意の値を包みました。

guard let animationIds = sceneSource?.identifiersOfEntries(withClass: CAAnimation) else { 
    return 
} 
for eachId in animationIds { 
    if let animation = sceneSource?.entryWithIdentifier(eachId, withClass: CAAnimation.self) { 
     animations.add(animation) 
    } 
} 
character?._walkAnimations = animations 
+0

ありがとうございました。 –