В данный момент игровой процесс включает в себя несколько уровней, и на каждом уровне есть секретный предмет (боб), который игрок сможет найти только один раз за уровень для каждого файла сохранения.Идея состоит в том, что если игрок может найти каждый секретный бин на каждом уровне, как только он доберется до конца игры, он получит бонус.Я отслеживаю, когда игрок обнаружил или не нашел секретный предмет на каждом уровне по умолчанию, он работает, но моя реализация ужасна, и мне нужна помощь.
Проблема в том, что я не могу обернуть своюОбдумайте эффективный способ сделать это за уровень.Чтобы отслеживать все это на уровне, я делаю это:
//Class gameScene variable this tracks per level if the player found the bean, if so then it's set to true and the bean will not load in the level if the player revisits
var foundBeanLevel1 = UserDefaults().bool(forKey: "FoundBeanLevel1")
var foundBeanLevel2 = UserDefaults().bool(forKey: "FoundBeanLevel2")
это в каждом уровне переопределения didMove (замените 1 на уровень X):
if foundBeanLevel1{
let secretBean: SKSpriteNode = childNode(withName: "SecretBean") as! SKSpriteNode
secretBean.removeFromParent()
}
_
//total count, if it's not the sum of the number of levels then the player didn't collect all beans
var secretBeanCount: Int = UserDefaults().integer(forKey: "SavedSecretBean") {
didSet {
//sets the increment to user defaults
UserDefaults().set(secretBeanCount, forKey: "SavedSecretBean")
}
}
//didContact
if node.name == SecretBean{
secretBeanCount += 1
if levelCheck == 1 {
UserDefaults().set(true, forKey: "FoundBeanLevel1")
} else if levelCheck == 2 {
UserDefaults().set(true, forKey: "FoundBeanLevel2")
}
}
, а затем, если они запускают новую игру:
UserDefaults().set(0, forKey: "SavedSecretBean")
UserDefaults().set(false, forKey: "FoundBeanLevel1")
UserDefaults().set(false, forKey: "FoundBeanLevel2")
Эта система работает как задумано, но я знаю, что она очень небрежная.Кроме того, чем больше уровней я получу, тем больше будет этих утверждений.Я знаю, что есть гораздо лучший способ сделать это, но я не уверен, что я ищу в этом отношении.Любой совет будет принята с благодарностью.