最近、構造体を使用して達成度を定義する変数を保持し、アクセスしやすくしました。下図のように:変数を使用してSKSpriteNodeイメージを変更しようとしています
struct Achieve {
var aName:String = ""
var aDes:String = ""
var aImage:String = ""
var aAmount:Int = 0
var aRequired:Int = 0
}
をだから私はそうのような 'ACH1' と呼ばれる変数に定義:
var Ach1 = Achieve(aName: "No. Games", aDes: "Games Played", aImage: "locked", aAmount: 0, aRequired: 10)
、その後、私は以下の機能を使用してSKSpriteNodeを作成しました:
func generateShopItems (location: CGPoint, page:SKSpriteNode, tex: String) -> SKSpriteNode {
let node = SKSpriteNode(imageNamed: tex)
node.position = location
page.addChild(node)
return node
}
それから私を次のような別の関数でSKSpritenodeを定義するとき、Ach1変数のaImageプロパティをtex文字列として使用しました。
Achievements.append(generateShopItems(CGPointMake(-120, 200), page:(page1ScrollView), tex: Ach1.aImage))
初めてゲームを実行したときにテクスチャがきれいに出ますが、Ach1変数のaImageプロパティを変更したときに画像が変化することはありません。
} else if (node == Achievements[7]) {
Ach1.aImage = "diamondicon"
print("working")
}
私はゲームをプレイしている間SKSpriteNodeの画像を変更できるようにする必要があります。誰かが私が間違っていることを教えてもらえますか?
EDIT
var Ach1 = Achieve(node: SKSpriteNode?, aName: "No. Games", aDes: "Games Played", aImage: "locked", aAmount: 0, aRequired: 10)
Ach1変数を定義する際にエラーが発生するのは、SKSpriteNodeを除いて何を置くべきか分からないノードに何かを設定するように求めているからです。私はその答えを編集しました。 – Astrum
@Astrumああ私はそれを忘れていました。ちょうど 'nil'を入れてください。 – Sweeper
ありがとうございました。ノード変数を作成せずにそれを行う別の方法がありましたか?画像を変更するために更新機能を使用するようなのでしょうか? – Astrum