我刚刚开始学习结构,我认为它可以通过使用Structures来解决,但我不确定.
案例:我有一个VC,有很多成就,玩家可以解锁.
每项成就都有:
1.成就图像和文字周围的边界图像
2.成就图像(每个成就都有一个简单的“锁定”图像,表示成就被锁定)
3.成就文本
4.一个布尔值来确定成就的状态(false = locked,true = unlocked)
在玩游戏时,可以完成一些成就.这样,布尔值将设置为true.当玩家返回成就VC时,必须将成就图像设置为该成就的正确图像.
问题:我现在的代码如下:
func SetImagesForPowerUps()
{
if UnlockedAchievement1 == true
{
Achievement1Text.textColor = UIColor.greenColor()
Achievement1Image.image = UIImage(named: "Achievement1Unlocked")
}
if UnlockedAchievement2 == true
{
Achievement2Text.textColor = UIColor.greenColor()
Achievement2Image.image = UIImage(named: "Achievement2Unlocked")
}
}
正如你所看到的,我必须一遍又一遍地重复我的代码,并且加班很多.我相信有更快的方法,除了我没有知识,我可以更快地解决这个问题.
问题:如何缩短此代码以使其正常工作?
最佳答案 //有多少成就?
var achievements:[Bool] = []
var achievementText:[UILabel] = [] //I am not sure what achievementText Parent class is
var achievementImage:[UIImage] = [] //AchievementImage is subclass of UIImage? Not sure what achievementImage parent class is.
for index in 0 ..< x
//Where x is the number of possible achievements, default all achievements to false at the very beginning of the app or wherever.
achievements.append(false)
}
func SetImagesForPowerUps() {
for index in 0 ..< achievements.count {
if(achievements[index]) {
achievementText[index].textColor = UIColor.greenColor()
achievementImage[index].image = UIImage(named: "AchievementUnlocked")
}
}
}
然后,当他们解锁成就时,您可以确定他们处于什么级别.然后设置成就[等级1] =真//(如果你使用从1开始的等级)