调用函数并可以编码的SKAction?

SKAction that calls function and can be encoded?

我正在使用 SpriteKit 和 swift 制作游戏。我的一些节点具有调用函数的 runBlock 操作:

SKAction.runBlock(someFunction)

当我使用 NSCoder 对我的场景进行编码和解码时,我在控制台中打印了这条消息

SKAction: Run block actions can not be properly encoded,
Objective-C blocks do not support NSCoding.

Swift 不支持选择器 SKActions,我该如何解决这个问题。

长话短说: 如何制作调用函数且可编码的 SKAction?

非常感谢任何帮助:)

你不能,也别无选择。块无法编码。

您可以做的是尝试让您的代码在没有块操作的情况下工作,如果这是可能的话。

SKAction performSelector可以搞定,虽然有点乱

主要的烦恼是:

  1. 向选择器传递参数;和

  2. 正在替换 customActionWithDuration:runBlock.

为了解决这两个问题,我将选择器调用包装在一个轻量级对象中,该对象与其对应的 SKAction.

一起被编码

我的结果正在进行中。我正在记录关于 Whosebug 问题的工作 (如果我看到它,我会用你的,抱歉!)。

我的代码(实现轻量级包装器对象)是 here