我使用下面的代碼來生成一個隨機的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問題的。 –