J'ai juste commencé à apprendre Swift comme mon premier langage de codage. Mon défi actuel consiste à essayer d'automatiser les transitions à partir d'une configuration de niveau actuelle comme LevelOne.sks vers un autre niveau également créé dans l'éditeur de niveau Xcode sous le nom LevelTwo.sks. Ce que je tente de faire est de déclencher une transition vers le niveau suivant avec l'ensemble de code suivant.Le code suivant fonctionne quand je passe manuellement la valeur mais échoue quand je déballe la valeur
Dans ma scène de base que j'ai cette fonction pour envoyer le joueur au niveau suivant
private func goToNextLevel(nextLevel: String) {
//When hard coding the arguments as...
//loadScene(withIdentifier: .levelTwo)
//The level two scene loads and is playable...however,
//When trying to change the level argument in code
// by passing a nextLevel variable
// the optional unwraps nil and crashes the app.
loadScene(withIdentifier: SceneIdentifier(rawValue: nextLevel)!)
}
Il est ensuite passé à un fichier SceneLoadManager
enum SceneIdentifier: String {
case levelOne = "LevelOne"
case levelTwo = "LevelTwo"
// case levelThree = "LevelThree"
}
private let sceneSize = CGSize(width: 768, height: 1024)
protocol SceneManager { }
extension SceneManager where Self: SKScene {
func loadScene(withIdentifier identifier: SceneIdentifier) {
let reveal = SKTransition.flipHorizontal(withDuration: 0.5)
let nextLevel = SKScene(fileNamed: identifier.rawValue)
nextLevel?.scaleMode = .aspectFill
self.view?.presentScene(nextLevel!, transition: reveal)
}
Je pense que cela a quelque chose à voir avec comment j'essaie de définir nextLevel. Actuellement, je suis cette mise en place comme suit un peu de chance
let nxtLvl = String?
nxtLvl = ".levelOne"
goToNextLevel(nextLevel: nxtLvl)
vous pouvez comprendre ce que je suis en train de réaliser et que je suis au moins près d'être sur la bonne voie. Toute aide serait grandement appréciée. Merci!
Ne pas inclure des choses comme "(Supprimé ma dernière réponse bc c'était faux)", car cela n'améliore pas la réponse. –
'SceneIdentifier (rawValue:" LevelOne ")! = SceneIdentifier.levelOne' c'est une instruction incorrecte. Ils sont, en fait, égaux. –
Merci Allen le "!" était une faute de frappe je l'ai corrigé – Leo