我是Swift和制作游戏的新手(以及一般的编码新手),我目前想在两个Gamescene
之间传递一个变量。在做了一些研究后,我得出结论我需要一个struct
[int]()
来保存我想要的数字,因为我无法将值分配给我的整数数组{{1 }}
我的结构:
generatedSequenceArray
在我的struct generatedSequenceForGameScene {
static var generatedSequenceArray = [Int]()
}
课程中,我初始化了GameScene
generatedSequenceForGameScene
个对象:
struct
我呼吁的方法是:
var generatedSequence = generatedSequenceForGameScene()
在尝试从每个func pickNumbers(){
for var x = 0; x < highLevel; ++x{
generatedSequence.generatedSequenceArray.append(Int(arc4random_uniform(10)))
print(generatedSequence.generatedSequenceArray)
}
}
移动变量之前,我的代码是:
变量:
GameScene
方法:
func pickNumbers(){
var generatedSequence = [Int]()
这给了我想要的结果。
注意: for var x = 0; x < highLevel; ++x{
generatedSequence.append(Int(arc4random_uniform(10)))
print(generatedSequence)
}
}
方法在名为pickNumber
的方法中调用,该方法放在程序中的loadView()
方法中
答案 0 :(得分:0)
这里有几点需要注意。
首先,结构中的static
关键字使generatedSequenceArray
成为静态属性。这意味着它在你称之为的地方都是一样的。这不是你想要的。
其次,除非您计划在结构中添加更多属性,否则它没有理由存在。为什么要把它包装在一个结构中呢?为什么不直接传递整数数组(你选择的数字)?
第三,类型名称应该是正确的情况。因此generatedSequenceForGameScene
应为GeneratedSequenceForGameScene
)。
答案 1 :(得分:0)
我不确定究竟是什么不适合你。我猜你在从一个游戏场景到另一个游戏场景中共享一个序列时遇到了麻烦。如果这是问题所在,可能会有以下帮助:
struct Sequence {
var seqArray = [Int]()
mutating func pickNumbers() {
for var x = 0; x < 10; ++x {
seqArray.append(Int(arc4random_uniform(10)))
}
print( "picked: \(seqArray)" )
}
}
class GameScene {
var s = Sequence()
}
var g1 = GameScene()
var g2 = GameScene()
g1.s.pickNumbers()
g2.s.seqArray = g1.s.seqArray
print( g2.s.seqArray )