我使用下面的代码来生成一个随机的SKTexture并将它分配给一个SKSpriteNode。给多个SKNode随机生成SKTexture给出相同的输出
var spriteTexture = [(SKTexture, String)]()
spriteTexture.append((SKTexture(imageNamed: "red"), "red"))
spriteTexture.append((SKTexture(imageNamed: "blue"), "blue"))
spriteTexture.append((SKTexture(imageNamed: "green"), "green"))
let rand = Int(arc4random_uniform(UInt32(spriteTexture.count)))
let chosenSprite = spriteTexture[rand].0 as SKTexture
let spriteName = spriteTexture[rand].1
let spriteSkin = chosenSprite
我使用此代码将SKTexture分配给SKSpriteNode。
let Sprite1 = SKSpriteNode(texture: spriteSkin)
let Sprite2 = SKSpriteNode(texture: spriteSkin)
该代码工作正常,并始终生成随机图像...但是,Sprite1和Sprite2总是具有相同的随机图像!
如何确保每个SKSpriteNode都有自己的“随机”图像?
感谢:d
这是完美的!但我需要“let spriteName = spriteTexture [rand] .1”代码,因为我使用它来为我的SKSpriteNode指定名称。 – Questions
@Questions检查我的更新 –
此代码有两个问题: 1)每次启动getRandomSkinNode时生成一个新的SKSpriteNode,所以它只是不改变纹理,但改变了所有的精灵:如果你已经定制了你的节点,你失去了所有的属性。 2)这个代码每个节点只启动一次函数,所以它是一样的张贴在OP问题的。 –