‫Ehi, bentornato.
‫In questo video creeremo un timer per il conto alla rovescia in modo che il giocatore sappia quanto tempo
‫deve aspettare prima di poter iniziare a spostare il proprio carro armato e far esplodere le cose.
‫Quindi mostreremo il tempo rimasto nel conto alla rovescia fino all'inizio del gioco.
‫Quindi entriamo nell'editor e iniziamo a farlo.
‫Ora sono qui nel nostro Widget Blueprint, BP Start Game Widget, e questo è l'editor di widget come abbiamo
‫visto.
‫Ma potresti aver notato che in alto a destra ci sono due schede qui, una che dice designer.
‫Questo è ciò in cui ci troviamo in questo momento e uno che dice grafico.
‫E se fai clic sul grafico, sembra più un grafico di eventi del progetto con nodi di eventi e una scheda
‫del mio progetto qui con varie sezioni.
‫Ed è qui che possiamo fare la logica del progetto.
‫Ora abbiamo tre nodi qui.
‫Abbiamo un pre costrutto dell'evento.
‫Questo è simile a un costruttore in C++ e quindi abbiamo un costrutto di eventi che è simile per iniziare a giocare.
‫Quindi è qui che è più appropriato fare le cose all'inizio del gioco perché tutte le classi
‫rilevanti sono costruite a questo punto e quindi abbiamo un segno di spunta dell'evento.
‫E proprio come la funzione tick in C++, qui abbiamo accesso al tempo Delta.
‫Ora non useremo i primi due nodi, quindi li evidenzierò e li eliminerò e
‫useremo la tecnologia degli eventi.
‫Ora, il nostro obiettivo per questo video è mostrare quanto tempo è rimasto e ora abbiamo un conto alla
‫rovescia di tre secondi in C++.
‫Abbiamo creato un handle del timer e abbiamo utilizzato il world timer manager per avviare un timer.
‫Tutto ciò che facciamo qui nei progetti è indipendente da quello.
‫Stiamo creando un sistema logico completamente diverso qui e coinciderà semplicemente con quel timer che abbiamo
‫impostato in C++.
‫Quindi questo è tutto diverso e indipendente dal lato C++.
‫Ora qui nel widget di avvio del gioco WB, possiamo aggiungere variabili proprio come possiamo aggiungere variabili in C++ proprio qui.
‫Sotto il mio progetto, posso fare clic su aggiungi e seleziona variabile e ora ho una variabile chiamata new var
‫underscore zero.
‫E qui sotto nel pannello dei dettagli, che si trova in modo confuso sul lato sinistro, ora abbiamo il nome
‫e il tipo di variabile.
‫Ora è evidenziato per impostazione predefinita perché ci si aspetta solo che rinominerai le tue variabili non
‫appena le crei.
‫Quindi non abbiamo bisogno di questo nome predefinito.
‫Lo chiameremo con il nostro nome.
‫Lo chiamerò conto alla rovescia.
‫E Countdown sarà una variabile float Y perché terrà traccia di quanto tempo
‫ci resta.
‫Inizierò a 3 secondi e ad ogni fotogramma sottrarrò la quantità di tempo
‫trascorso dal fotogramma precedente.
‫Quindi otteniamo un conto alla rovescia che va da tre in giù.
‫Ora farò clic su Compila.
‫Ora, non appena faccio clic su Compila, posso assegnargli un valore predefinito scorrendo verso il basso nei dettagli.
‫Pannello, è impostato su zero per impostazione predefinita.
‫Lo imposterò su tre per impostazione predefinita poiché abbiamo un conto alla rovescia di tre secondi.
‫Ora così com'è, questo è solo un float chiamato Countdown con un valore di tre.
‫In realtà non l'abbiamo cambiato, ma ogni singolo fotogramma del gioco, vorrei sottrarre il tempo Delta, che è
‫la quantità di tempo che è trascorso dal fotogramma precedente.
‫E in questo modo, Countdown aggiornerà costantemente il decremento del tempo Delta in modo da avere un conteggio del tempo
‫di esecuzione.
‫Ora, ecco come possiamo farlo.
‫Prenderò un conto alla rovescia dalla nostra scheda Il mio progetto, fare clic e trascinarlo qui nel grafico dell'evento
‫e rilasciare.
‫Ora, non appena rilascio, ho due opzioni.
‫Ottieni il conto alla rovescia e imposta il conto alla rovescia.
‫Se faccio clic su Ottieni conto alla rovescia, ora ho la nota del conto alla rovescia e se faccio clic e trascino fuori dal
‫suo output, questo mi dà accesso al valore del conto alla rovescia.
‫Ora posso anche fare clic su Countdown, trascinare e fare clic su Imposta conto alla rovescia e abbiamo un nodo impostato.
‫Li abbiamo visti entrambi prima.
‫Nei video precedenti, il pin di input per il setter ci consente di inserire un valore float e quindi il conto alla rovescia
‫verrà impostato su quel valore.
‫Quindi, come possiamo effettivamente sottrarre il tempo Delta dal conto alla rovescia e quindi impostarlo sul valore del conto alla rovescia?
‫Bene, possiamo prendere il nostro nodo di conto alla rovescia qui e posso fare clic e trascinarlo via e digitare il
‫simbolo meno sulla mia tastiera e scegliere il nodo Sottrai.
‫Se lo seleziono, ora ho un float meno float o un nodo di sottrazione.
‫Vedrai che dice Target is Kismet Math Library.
‫Questo ti dice che Kismet Math Library è alla base di questo nodo.
‫Tutti i nodi hanno il codice C++ al loro interno.
‫Quindi quello che fa questo nodo è che richiede due input.
‫Richiede un input float.
‫E ci vuole un secondo input float.
‫Ora, non cambierà nessuna delle variabili che stiamo passando.
‫Eseguirà semplicemente un calcolo e restituirà quel valore che è il risultato della sottrazione.
‫Ora vorrei prendere il conto alla rovescia e sottrarre il tempo delta da esso in modo da poter prendere il pin di
‫uscita chiamato in tempo delta dal nodo del segno di spunta dell'evento e collegarlo direttamente al secondo input nel mio nodo di
‫sottrazione.
‫Quindi quello che sto facendo è prendere il conto alla rovescia meno delta time e poi questo ottiene il risultato.
‫Ora inizialmente il conto alla rovescia è di 3 secondi e il tempo delta è un valore molto piccolo.
‫È la quantità di tempo in secondi trascorsa dall'ultimo fotogramma.
‫Quindi questa sarebbe una piccola quantità.
‫Quindi ciò che risulterà la prima volta che viene eseguito è tre meno una piccola quantità.
‫E quello che vorrei fare è impostare il valore del conto alla rovescia uguale a quel risultato, ogni singolo fotogramma.
‫Quindi ogni conto alla rovescia dei fotogrammi viene sottratto a poco a poco.
‫E in questo modo manterrà il conto alla rovescia da 3 secondi verso il basso.
‫Quindi prenderò il risultato di ritorno da questo nodo di sottrazione e lo collegherò all'input per il nodo
‫del conto alla rovescia impostato.
‫Ora, questo non farà nulla se non collego il cavo di esecuzione dall'evento, spuntando il pin di esecuzione al
‫pin di input per impostare il conto alla rovescia.
‫Quindi ora ciò che sta facendo è che ogni singolo fotogramma sottrae il tempo delta dal conto alla rovescia, prendendo
‫quel risultato e impostando il conto alla rovescia su quel nuovo valore.
‫Ora possiamo vedere come si comporta con un nodo di stringa di stampa.
‫Quindi trascinerò la stringa di stampa del tipo setter e otterrò un nodo della stringa di stampa.
‫E poi vorrei stampare il valore del conto alla rovescia in modo da poter prendere il valore restituito dal setter, che
‫ci darà il nuovo valore del conto alla rovescia per ogni fotogramma e lo collegherà al nodo della stringa.
‫E nota che vedo un float convertito in stringa e se rilascio ora ottengo un nodo di conversione che prenderà
‫il mio float, lo convertirà in una stringa e ora possiamo stamparlo sullo schermo.
‫Ora vediamo cosa succede se premo play.
‫Verificalo.
‫Vediamo che il conteggio viene documentato in ogni fotogramma e stiamo inviando spam allo schermo con il valore del conto alla rovescia
‫e sta diventando sempre più negativo.
‫Quindi questo è il primo passo per far funzionare il nostro conto alla rovescia.
‫Lo chiuderò ora.
‫Abbiamo visto che stiamo stampando un valore float che ha un mucchio di punti decimali.
‫E una volta stampato il valore sullo schermo, non vogliamo punti decimali, vorremmo un numero intero.
‫Quindi mi piacerebbe vedere la quantità di secondi rimasti senza quelle cifre finali a destra del punto
‫decimale.
‫Quindi quello di cui ho bisogno è un numero intero.
‫Bene, quello che posso fare è eliminare questo nodo di conversione e prendere
‫il risultato del setter del conto alla rovescia e digitare C E I'll seal, che è l'abbreviazione di seal.
‫L'operazione di sigillatura prenderà un valore float e lo arrotonda per eccesso all'intero più vicino.
‫Quindi se siamo a tre, beh, non c'è bisogno di arrotondare.
‫Restituirà un numero intero con un valore tre.
‫Ma se siamo a 2. 9, ad esempio, il nodo sigillo lo arrotonda per eccesso a tre.
‫E man mano che quel valore diminuisce, continuerà a restituire tre finché non scendiamo a due.
‫Quindi otterremo sempre un numero intero.
‫Ora posso inserirlo nella stringa di stampa e vedrai che dice Converti intero in stringa.
‫Quindi ora il nodo seal sta prendendo un float, arrotondandolo all'intero più vicino e restituendo quel valore
‫intero.
‫Quindi ora se premo play, vedremo che otteniamo 3 a 1 e zero.
‫E ovviamente continua a diminuire perché non diciamo mai che questo si fermi davvero.
‫Ma questo è un ottimo inizio perché ora abbiamo accesso al numero di secondi rimasti
‫e possiamo stampare qualcosa in risposta sullo schermo.
‫Quindi, come stamperemo il messaggio corretto sullo schermo?
‫Quello che vorrei fare è quando mancano 3 secondi, vorrei che il widget dicesse: Preparati.
‫Quando mancano 2 secondi, vorrei che mostrassi il numero due.
‫Quando abbiamo ancora un secondo, vorrei mostrare il numero uno.
‫E quando mancano 0 secondi, vorrei che il testo dicesse Vai.
‫Bene, possiamo farlo con un nodo switch, i nodi switch possono attivare un numero di tipi diversi, incluso
‫INT.
‫Ora il modo in cui funziona un interruttore su int node è che ha un numero di casi per un numero di valori.
‫E in base al valore che passiamo a questo nodo switch, farà una di una serie di cose.
‫Ad esempio, se passiamo il valore intero tre, otteniamo il caso tre che risulterà
‫nell'esecuzione della cosa tre.
‫Quindi l'interruttore sul nodo finale ha più righe di esecuzione e ne eseguirà solo una in base a.
‫L'ingresso.
‫Ora possiamo usare un interruttore su int node e passare un intero, ad esempio il risultato del nostro nodo seal.
‫Quindi rimuoverò la stringa di stampa e trascinerò il nodo del conto alla rovescia e digiterò
‫switch on INT e selezione switch on int.
‫Ora nota che richiede un input di tipo intero.
‫Passerò il valore di ritorno dal nodo seal e noterò anche che abbiamo un'opzione per aggiungere pin.
‫Se facciamo clic su quello, vedrai che otteniamo un pin predefinito oltre all'output che dice zero.
‫Ciò che dice è che se colleghiamo una logica di progetto dal pin di esecuzione zero, quella logica
‫verrà eseguita.
‫Se il valore di input passato è zero e se non va bene, verrà impostato automaticamente questo pin di
‫esecuzione.
‫Ora possiamo fare di nuovo clic su aggiungi pin e ora abbiamo zero e uno.
‫Quindi possiamo avere due linee di esecuzione, una per zero e una per uno.
‫E quindi se l'input non è zero o uno, verrà eseguito tutto ciò che è collegato al valore predefinito.
‫Farò di nuovo clic su più altre due volte.
‫Quindi abbiamo casi da zero a tre e un caso predefinito.
‫Quindi ora sta a noi trascinare fuori questo e aggiungere un po 'di logica di progetto che vorremmo eseguita in
‫base al valore passato che stiamo ottenendo da questo nodo SEAL.
‫Ed è quello che vorrei che tu facessi per la tua sfida.
‫Vorrei che stampassi messaggi diversi per ogni caso usando un nodo di stringa di stampa per il valore tre che puoi
‫stampare preparati usando un nodo di stringa di stampa.
‫Per i due casi, puoi semplicemente stampare il valore due per un caso, puoi stamparne uno e per
‫il caso zero puoi stampare vai ora per il caso predefinito, stampa semplicemente avvia il gioco con il nostro nodo della stringa di
‫stampa.
‫Metti in pausa il video e aggiungi ora un intero gruppo di nodi di stringhe di stampa nel grafico degli eventi.
‫Bene.
‫Quindi vorrei andare avanti e utilizzare un nodo di stringa di stampa e inizierò qui in basso per
‫il caso predefinito e digiterò la stringa di stampa.
‫E la stringa che vorrei stampare è avviare il gioco.
‫Ora, ecco una scorciatoia.
‫Se non lo sapevi con il nodo della stringa di stampa selezionato, posso passare il mouse da
‫qualche altra parte nel grafico degli eventi e premere control dx e questo copierà il nodo che avevo selezionato.
‫Collegherò i tre casi a questo nodo della stringa di stampa e digiterò preparati.
‫Quindi, quando l'input per l'interruttore è tre, vedremo.
‫Preparati, stampato sullo schermo.
‫Ora controllerò di nuovo DX e lo collegherò ai due casi e per due ne stamperò semplicemente due ora
‫copierò il nodo della stringa di stampa e per uno stamperò il valore uno.
‫E infine, un ultimo nodo della stringa di stampa qui verrà collegato al caso zero e questo
‫dirà di andare.
‫Bene.
‫Quindi andiamo avanti e compiliamo questo e vado a premere play e ora vedo preparati, due, uno
‫e via.
‫E poi, ovviamente, vediamo l'inizio del gioco una volta che il tempo è scaduto.
‫Quindi sappiamo che il valore sta diminuendo e sta diventando sempre più negativo, ma questo è il caso predefinito per il
‫nostro switch ed è allora che sappiamo che possiamo effettivamente iniziare il gioco.
‫Quindi questo è il primo passo per mostrare il nostro conto alla rovescia nel nostro widget.
‫Non stiamo ancora cambiando del tutto il testo che dice Preparati, ma lo faremo presto.
‫Quindi in questo video abbiamo creato Countdown Logic e l'abbiamo aggiunto al nostro progetto di widget.
‫Abbiamo usato print string per mostrare i nostri valori di conto alla rovescia e stampare un messaggio diverso.
‫Basato sui nostri valori di conto alla rovescia.
‫Dobbiamo ancora impostare il testo nel widget e lo faremo nel prossimo video.
‫Ci vediamo presto.