- 546
- 91
- CPU
- Ryzen 7 7700x
- Dissipatore
- DeepCool LT720
- Scheda Madre
- MSI B650 TOMAHAWK
- HDD
- Crucial P3 PLUS 1TB, WD Blue 1TB, Toshiba P300 3TB
- RAM
- CORSAIR Vengeance 32Gb 6000MHz
- GPU
- Asus Dual RTX 4070 Super
- Monitor
- Asus TUF VG32V, Acer KA240HQ
- PSU
- MSI A750GL
- Case
- LianLi Lancool III
- OS
- Windows10 pro
Ciao a tutti! Come avete potuto leggere dal titolo sto cercando di programmare il mio primo gioco. Ho fatto tutto da autoditatta quindi alcune cosa ancora devo capirle bene anche se credo di aver fatto un buon lavoro fino ad ora e viste le conoscenze che ho. Comunque parlando del problema che mi sta tenendo impegnato da due giorni ormai, non riesco a capire come mai non funzioni e sto impazzendo. Il mio gioco è molto simile a flappy bird se lo conoscete, solo che è in 3D, ci sono ostacoli e percorsi diversi e vari livelli. La prima scena è il menù iniziale dove se si preme il pulsante "Start" si passa alla seconda scena ovvero la selezione dei livelli. Ovviamente volevo fare in modo che inizialmente si potesse giocare solo il primo livello quindi ho messo un trigger alla fine di ogni livello che man mano sblocca i vari pulsanti per i livelli successivi. Il problema è che se si ritorna al menù i progressi non vengono salvati e i livelli dal 2 in poi sono di nuovo bloccati. Informandomi ho visto che in unity (e si sto usando Unity, mi sono scordato di dirlo) ci sta la possibilita di usare " PlayerPrefs" per salvare poche cose. L'ho gia usato per salvare le cose che si possono acquistare in game tramite delle monete nei livelli, e lì funziona perfettamente, ma se devo salvare il fatto di aver completato un livello non va. Vi spiego cosa ho fatto: Ho creato un int livello1Complete e ho fatto in modo che il suo valore iniziale fosse 0, mettendo nella funzione void start nel menù "PlayerPrefs.SetInt("Livello1Complete", 0)". Nello script del trigger del primo livello ho usato la funzione void OnTriggerEnter e ho messo "PlayerPrefs.SetInt("Livello1Complete", 1)", così che quando il mio player passa attraverso il trigger l'int diventi = 1. Poi nel mio script dove tengo tutte le funzione che regolano il gioco (tipo il restart del livello quando si muore, le particelle sempre quando si muore e dove tenevo anche la funzione per attivare il bottone quando completavo un livello) ho meso nella funzione void start il fatto che grazie al PlayerPrefs si prenda l'int con GetInt e con una funzione if ho detto che se l'int è = 1 il bottone del livello 2 si deve attivare e con "else" ho detto che deve rimanere disattivato. Non so se sono riuscito a spiegarmi Senza dover mettere gli script in questione perchè sono molto disordinati e non so se si riesce a capire e penso sia più semplice se vi spiego io cosa ho fatto, ma se serve ditemelo che li metto. Se non sono riuscito a spiegarmi o non capite qualcosa ditemelo senza problemi. Ringrazio già chi si cimenterà nel cercare di capire questa cosa :cav: