解决方法
let copiednode = nodetocopy.copy() as! SKSpriteNode
您仍然需要将copiednode添加到场景中. copiednode还将继续运行nodetocopy正在运行的任何操作.您可以使用copiednode.removeAllActions()取消它们.
请注意,协议NScopying的文档准确读取:
Protocol
NScopying
A protocol that objects adopt to provide functional
copies of themselves.The exact meaning of “copy” can vary from class to class,but a copy
must be a functionally independent object with values identical to the
original at the time the copy was made…
实际上,在SKSpriteNode的情况下,Apple已经解释了这个想法,以便copy()函数“生成”项目的另一个实例,就像在任何游戏引擎中一样.
(因此,对于SKSpriteNode copy()的工作方式与Unity中的Instantiate相同,比方说.)
正如mogelbuster在下面指出的那样,Apple文档中没有任何地方声明“Apple中的spawn命令是copy()”但事实上他们已经解释了这个“复制”的确切含义因类而异“正是这种方式对于SKNode来说,因为它确实是一个游戏引擎,它是那里唯一有意义的复制感.
值得注意的是,在游戏中最常用的工作方式是:对于你说的rocketShips,你会有一个你的rocketShip“模型”,比如modelRocketShip.该模型只是位于屏幕外,或者可能标记为不可见或不活动.你永远不会在游戏中使用该模型,它只是坐在那里.当你产生rocketShips时,你只需要欺骗模型. (所以在Apple中的modelRocketShip.copy()然后设置位置等)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。