我有一个SpriteKit动作文件,里面有一些动作。
要使用一个动作,我使用:
let action = SKAction(named: "Shake")
可以直接使用 MyActions.sks 文件中的名称? 类似:
let actions = SKScene(fileNamed: "MyActions.sks")`
let shakeAction = actions.listOfAction.Shake //this is my guess
如果我打印场景文件:
let actions = SKScene(fileNamed: "MyActions.sks")
print(actions)
输出为:
Optional({
"_info" = {
"_previewScenePath" = "PippiPompiere/GameScene.sks";
};
actions = {
PlayerIdle1 = "<SKGroup: 0x79e60ec0>";
PlayerMoveToHouse0 = "<SKGroup: 0x7b1ea010>";
PlayerMoveToHouse1 = "<SKGroup: 0x7b052cd0>";
PlayerMoveToHouse2 = "<SKGroup: 0x7b1ebbd0>";
Rotate360 = "<SKGroup: 0x79e61710>";
Shake = "<SKGroup: 0x79e60a10>";
SunShake = "<SKGroup: 0x7b1e8620>";
WaterJet = "<SKGroup: 0x7b1e8ce0>";
};
})
(lldb)
可以像数组一样进行操作吗?
感谢
答案 0 :(得分:2)
AFAIK,您可以从.sks
文件中获取操作字典。在这里,我有一个MyCustomActions.sks
文件,其中的操作为 Pulse 。
guard
let node = SKNode(fileNamed: "MyCustomActions"),
let actions = node.value(forKey: "actions") as? [String:SKAction],
let pulse = actions["Pulse"]
else { return }
print(pulse.duration) // 0.6 seconds
从这里开始,您可以从struct
词典中实现自己的actions
。
获取所有操作的名称,
let actionNames = actions.map { $0.key } // ["Pulse"]
答案 1 :(得分:0)
最简单的方法是创建一个动作文件(通过XCode模板选择器或在GameScene.sks文件中使用“ createAction-> NewFile”选项)。
操作文件的名称无关紧要;您在此类文件中创建的任何操作均可通过SKAction(name:)
获得 if let shake = SKAction(named: "Shake") {
myNode.run(shake)
}