我刚刚开始学习结构,我认为它可以通过使用结构来解决,但我不确定。
案例:我有一个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")
}
}
正如你所看到的,我必须一遍又一遍地重复我的代码,并且加班很多。我确信有更快的方法,除了我没有知识,我可以更快地解决这个问题。
问题:如何缩短此代码以使其有效?
答案 0 :(得分:2)
//有多少成就?
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")
}
}
}
然后,当他们解锁成就时,您可以确定他们的成绩。然后设置achievements[level+1] = true
//(If you use levels starting at 1)