【问题标题】:In swift, is it possible to create an SKSpriteNode by directly copying it from an array?快速,是否可以通过直接从数组中复制 SKSpriteNode 来创建它?
【发布时间】:2016-08-13 00:17:24
【问题描述】:

目前,我在 Swift 中的一个项目遇到了一些麻烦。我想知道你是否可以像这样创建一个全新的精灵节点:

var spriteNode : SKSpriteNode = nodes(3)

其中 nodes 是一个 SKSpriteNodes 的数组,并且在索引号 3 处有一个对象。以前,我曾在 Java 中工作过,我知道如果你要做这样的事情,它会简单地传递一个 sprite node 变量的引用而不是创建一个全新的精灵节点,但我不确定这是否会在 swift 中发生。

如果您不能以这种方式创建新的精灵节点,那么最好的方法是什么(在 Java 中,您只需创建一个新的精灵节点并逐字复制其所有值)?

【问题讨论】:

  • 你想克隆一个现有的精灵?有什么原因吗?
  • 是的 - 目前,我有一个包含三种不同类型精灵的数组,我想生成一个包含 20+ 个随机顺序的数组。我不知道这是否是解决此问题的正确方法,但我想先克隆原始数组中的精灵,然后再将其添加到更大的数组中

标签: arrays swift sprite-kit


【解决方案1】:

您可以使用此代码克隆SKSpriteNode

let sprite0 = SKSpriteNode()
let sprite1 = sprite0.copy() as! SKSpriteNode

如果你有一个精灵数组

let sprites: [SKSpriteNode] = [SKSpriteNode(), SKSpriteNode(), SKSpriteNode()]

您可以使用方括号访问值

let aSprite = sprites[0]

无论如何,在使用其他环境的模式/技术之前,我真的建议您阅读Sprite Kit Programming Guide。如果我们按照预期的方式使用工具,事情通常会变得更容易。

【讨论】:

  • @Jake:请阅读this
  • 如果我没记错的话,当使用 copy() 方法时,sprite 的物理主体不会被复制。某些属性的值与原始属性不同。我认为 SO 上已经有一篇关于这个的帖子,所以在复制这样的精灵时要小心。
  • @Whirlwind:谢谢,也许这个one
  • 就是这个。我最近没有测试过这个,但它可能和那时一样。
猜你喜欢
  • 2019-09-10
  • 1970-01-01
  • 2019-10-19
  • 1970-01-01
  • 2021-07-30
  • 2015-06-08
  • 1970-01-01
  • 2020-08-26
  • 2013-10-04
相关资源
最近更新 更多