2014-04-26 9 views
6

Sto creando un gioco e voglio che abbia una scena con livelli da selezionare, quindi avere i livelli per giocare. Mi stavo chiedendo come fare per creare i livelli e salvare quando un utente è arrivato a quel livello. Stavo pensando di creare un BOOL nel ViewController.h e chiamarlo in ogni scena, ad esempio LevelCompleted = YES; quindi utilizzare tale bool quando il giocatore sta cercando di giocare un nuovo livello o di riprodurre un livello precedenteCreazione di livelli in un gioco iOS Sprite Kit

Oppure,

Ho un BOOL in ogni scena, quindi importare file di intestazione di ogni scena nella scena di livello-navigazione e usa un BOOL per mostrare se il livello è sbloccato o meno.

Inoltre, per salvare il valore di BOOL quando l'app è chiusa, si usa NSUserDefaults?

Ho cercato molto per i tutorial su questo e non riesco a trovare alcuno. Se sono necessarie ulteriori informazioni, per favore fatemelo sapere.

+0

Sei completamente perplesso su questo o hai provato alcune soluzioni possibili? – sangony

+0

@sangony completamente stordito, ho provato a giocarci ma niente sembra funzionare, dovrei avvicinarmi in modo diverso? è una BOOL la cosa sbagliata da usare? – user3576196

+0

Potresti ottenere risposte migliori se mostri qualcosa che hai provato e spieghi perché non funziona come ti aspetti. –

risposta

2

Ci sono un paio di modi per fare quello che vuoi. Ti darò alcuni suggerimenti e suggerimenti per creare il codice adatto al tuo gioco.

Ricordare innanzitutto che MyScene è un SKScene che viene chiamato per impostazione predefinita dal controller di visualizzazione in un modello di progetto SpriteKit. Quindi puoi creare tutte le classi SKScene che vuoi avere i livelli. Ogni classe SKScene può essere di un livello.

Puoi trasformare il tuo primo SKScene, MyScene, nel tuo menu principale e aggiungere l'elenco di livelli che l'utente può selezionare qui. Per raggiungere un livello selezionato dal menu principale (myscene) è possibile utilizzare qualcosa di simile:

SKScene *gameLevel1 = [[Level1 alloc] initWithSize:self.size]; 
SKTransition *reveal = [SKTransition doorsOpenVerticalWithDuration:1.0]; 
[self.view presentScene:gameLevel1 transition:reveal]; 

Level1 sarebbe il nome della classe SKScene per il primo livello. Ci sono anche una serie di grandi transizioni tra cui scegliere. Puoi anche includere una proprietà scaleMode in base alle tue esigenze.

Come già spiegato da LearnCocos2D, è possibile utilizzare un array o un dizionario per memorizzare i dati del lettore, quali elementi, stato e livelli raggiunti. A meno che tu non abbia una grande quantità di dati che devi salvare, NSUserDefaults è la tua migliore opzione. Ecco un esempio su come archiviare i dati con NSUserDefaults:

NSString *valueToSave = @"Level 5"; 
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"levelReached"] 
[[NSUserDefaults standardUserDefaults]synchronize]; 

Per leggere un valore memorizzato in NSUserDefaults si può fare questo:

NSString *highLevel = [[NSUserDefaults standardUserDefaults] stringForKey:@"levelReached"]; 

Puoi inserire nuovi dati a NSUserDefaults in qualsiasi momento. Quindi, se il giocatore ha appena terminato un livello, scriverlo su NSUserDefaults.

+0

Prego. Buona programmazione! – sangony

+0

@sangony useresti NSNotification tra le scene per far sì che la scena di livello sapesse che un nuovo livello è stato raggiunto? (solo per il mio sistema di livello) –

+0

Questo dipende molto da come è stata impostata la logica di gioco. Di solito lo faccio alla fine del livello una volta che il giocatore ha raggiunto l'uscita o qualche altro obiettivo che segnala che il livello è stato completato. Suppongo che tu possa usare NSNotification ma a mio avviso complicherebbe il tuo codice un po 'più di quello che ti serve davvero. Ma ancora, dipende tutto dal tuo codice. – sangony

Problemi correlati