# Lezione 01 - Creare una Flow Machine

Una Flow Machine non è altro che uno script di Bolt che ci permette di inserire, all'interno di un grafo, una serie di azioni e collegarle tra di loro.

{% hint style="info" %}
Per questa lezione, si consiglia di utilizzare la scena **Lezione 01 - Creare una Flow Machine** inclusa [nel progetto di supporto](https://github.com/thebitcave/gitbook-guida-bolt/releases).
{% endhint %}

### Creare la Flow Machine

Per prima cosa andiamo a creare un oggetto in scena ed aggiungiamo uno di questi elementi:

* Aggiungiamo un gameobject vuoto (*GameObject > Create Empty*)
* Selezioniamo il gameobject e, nell'*Inspector*, aggiungiamo un componente cliccando il pulsante *Add Component*
* Selezioniamo *Bolt > FlowMachine* per aggiungere il componente
* Nel componente appena aggiunto, nel campo Source, selezioniamo *Embed*

![I componenti Flow Machine e Variables](https://3114886391-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKUGiR4TokVYSH1_yh6%2F-MLTMfI-A4aoXaVM8VFF%2F-MLTMotqVgCQ_CQmc3k3%2Fflow-machine-component.png?alt=media\&token=2538a292-dce0-4934-a8a1-8d5221e52356)

Noterete che è stato aggiunto anche un componente *Variables*: in seguito andremo a vedere il suo utilizzo.

### Modificare il Graph

Siamo ora pronti ad aggiungere il nostro script visuale:

* Clicchiamo sul pulsante *Edit Graph* nel componente *Flow Machine*
* Si aprirà una finestra con due elementi di colore verde: *Start* e *Update*

![Il Flow Graph](https://3114886391-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKUGiR4TokVYSH1_yh6%2F-MLTMfI-A4aoXaVM8VFF%2F-MLTOBdELOBYPjUolKr9%2Fflow-graph.png?alt=media\&token=4479e79c-5f72-446e-8f78-51b3f645c425)

* Selezioniamo l'elemento Update e, con il tasto destro del mouse, eliminiamolo (Delete): in questo esercizio non ci servirà&#x20;

### Aggiungere una Unità

Siamo ora pronti a scrivere un messaggio all'interno della *Console*: questa operazione, in Unity, si esegue tramite il comando [Debug.Log()](https://docs.unity3d.com/Manual/class-Debug.html).

* Clicchiamo il pulsante destro del mouse all'interno del *Flow Graph*
* nel campo di ricerca della finestra che si presenterà, inseriamo *Debug.Log*
* Selezioniamo *Debug.Log(message)* per aggiungere l'unità

![L'unità Debug.Log](https://3114886391-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKUGiR4TokVYSH1_yh6%2F-MLTMfI-A4aoXaVM8VFF%2F-MLTQOR4azrbkWHJSaU1%2Fflow-graph-02.png?alt=media\&token=2eb258f5-5b2c-4ce9-91f4-90de88c27ffd)

### Completare il Grafo

Ora che abbiamo il nodo per scrivere il messaggio dobbiamo fare in modo che questo venga eseguito (provate ad andare in *Play* e vedrete che non succede nulla) e mostrare un testo.

* Cliccate sul piccolo triangolo in uscita dallo *Start* e mantenendo il pulsante del mouse premuto andate sul triangolo in ingresso dell'unità *Debug.Log*
* Rilasciate il pulsante del mouse per completare il collegamento. Il nodo diventerà arancione perché gli manca il messaggio da mostrare

![Il collegamento dell'unità](https://3114886391-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKUGiR4TokVYSH1_yh6%2F-MLTMfI-A4aoXaVM8VFF%2F-MLTSvTb0__SjczBCSHp%2Fflow-graph-03.png?alt=media\&token=33bc41e1-858a-4391-b3e0-af17334527a0)

Dobbiamo ora aggiungere un messaggio:

* Cliccare sul *pin* di ingresso (cerchiolino bianco) di fianco al testo *message* e trascinare mantenendo il pulsante premuto
* Rilasciare il pulsante e selezionare *string Literal* (che ci permette di definire un testo). Verrà aggiunta una unità con un campo di inserimento testo vuoto
* Nel campo inserire un testo qualsiasi, ad esempio *Ciao Mondo!*

![Il grafo completo](https://3114886391-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKUGiR4TokVYSH1_yh6%2F-MLTMfI-A4aoXaVM8VFF%2F-MLTUPV_xTwn4My6KXzY%2Fflow-graph-04.png?alt=media\&token=016c11f4-f563-4a7a-8506-cd1926c015f9)

### Eseguire il codice

Siamo pronti ad eseguire il codice e tracciare il messaggio:

* Cliccare sul pulsante Play
* In Console dovrebbe apparire il messaggio *Ciao Mondo!*

### Esercizi Integrativi

Come esercizio addizionale, completare:

* L'**Esercitazione 01 - Completare una Flow Machine**
