我正在使用SpriteKit制作游戏。当两个特定类型的精灵碰撞时,我要记下其中一个精灵,然后稍后在游戏中更新该精灵。
使用指针,我基本上会执行以下操作。当两个对象发生碰撞时,我将设置一些全局指针,以指向要跟踪的精灵的地址。然后,稍后,当调用修改函数时,它将修改指向该地址的所有内容,从而实质上修改了碰撞的精灵。
不过,我宁愿不使用指针,因为Swift会阻止直接访问内存。我无法通过修改函数的引用来传递精灵,因为我的代码未调用修改函数(didSimulatePhysics)。
谢谢!
您可以使用.unshare()
和.copy()
这样的:
var valueA = [1,2,3,4]
var valueB = valueA
现在,如果您更改valueA,valueB也将更改:
valueA[1] = 4 // valueA and valueB are now equal to [1,4,3,4]
但是,如果我们使用.unshare()
方法:
valueB.unshare()
然后valueB是未共享的,因此如果我们更改valueA,则valueB不会更改:
valueA[1] = 2 \\ valueA == [1,2,3,4] && valueB == [1,4,3,4]
或者您可以使用.copy()
方法:
var valueC = valueA.copy()
等同于:
var valueC = valueA
valueC.unshare()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句