【发布时间】:2018-01-10 07:14:45
【问题描述】:
我想创建一个精灵池,我可以在屏幕上四处移动,而无需重新初始化并将它们一遍又一遍地添加到我的场景中。
为此,我想以一种可以轻松访问和改变对象的方式存储对象集合。
我最初的想法是使用数组,但当我引用数组时,Swift 似乎会传回一个对象的副本。
var nodes:[SKNodes] = SKNodes();
nodes.append(SKNode());
nodes[0].position = CGPoint(x: 100, y: 100) //doesn't work
创建这样的东西的最佳做法是什么?
编辑:
由于拼写错误,它无法正常工作,我很傻。出于某种原因,我认为它不起作用,因为 Swift 会按值传递,并且我会在数组中获取对象的副本,而不是对对象的引用。
我现在了解到 Swift 将 Objects 和 Functions 作为引用类型传递,并且基本上只有结构和枚举是按值传递的
Is Swift Pass By Value or Pass By Reference
var nodes:[SKNode] = SKNodes();
nodes.append(SKNode());
nodes[0].position = CGPoint(x: 100, y: 100) //Works!
【问题讨论】:
-
是不是忘记将数组中的节点添加到场景中?
标签: ios arrays swift collections sprite-kit