当我运行此代码时,我没有收到任何错误,但唯一的问题是我尝试了一种“init”方法来随机化对象纹理。我使用了init方法,因为在我遇到实例变量randomizer变量的问题之前,不能在类型'Gamescene'上使用。但是现在,随机数发生器不再随机化了。
class GameScene: SKScene, SKPhysicsContactDelegate {
struct randomize {
var randomizer: Int
init() {
randomizer = Int(arc4random_uniform(3))
}
}
var r = randomize()
var object = SKSpriteNode()
override func update(currentTime: CFTimeInterval) {
if object.position.y < 25 {
object.texture = SKTexture(imageNamed: "object\(r.randomizer)")
}
答案 0 :(得分:1)
启动此结构时会生成“randomizer”变量,但在尝试访问它时不会再次随机化。为了在每次访问时获得不同的值,您需要为“randomizer”创建一个getter并在那里生成一个值。
struct randomize {
var randomizer: Int {
return Int(arc4random_uniform(3))
}
init() {
}
}
答案 1 :(得分:0)
正如@ knight0fdragon评论的那样,你真的不应该使用这个结构,应该使用一个函数。
你的结构:
struct randomize {
var randomizer: Int
init() {
randomizer = Int(arc4random_uniform(3))
}
}
应该只是功能:
func randomizer() -> Int{
return Int(arc4random_uniform(3))
}
您只需致电:
randomizer() // new value
如果您想使用该结构,则应该是:
struct randomize {
var randomizer: Int!
init() {
randomizeR()
}
mutating func randomizeR(){
randomizer = Int(arc4random_uniform(3))
}
}
你这样使用的地方:
var r = randomize()
print(r.randomizer) // initial value
print(r.randomizer) // initial value
r.randomizeR()
print(r.randomizer) // new value
甚至更简单:
struct randomize {
var randomizer: Int {
return Int(arc4random_uniform(3))
}
}
你这样使用的地方:
var r = randomize()
print(r.randomizer) // initial value
print(r.randomizer) // new value
print(r.randomizer) // new value