# Grafi, Macro ed Embed

### Tipi di Grafo

Un _Grafo_ (_Graph_) rappresenta in Bolt in modo visuale il vostro "codice". Bolt permette di crearne di due tipi **Flow** o **State**.

#### **Flow Graph**

Con un _Flow Graph_ è possibile collegare delle unità che eseguono in un determinato ordine (chiamato _flow_). Questo tipo di grafo è il più comune e viene solitamente utilizzato per la "programmazione" della logica di un oggetto.

![Un esempio di Flow Graph](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)

#### **State Graph**

Con lo _State Graph_ è possibile creare una serie di _stati_ e connetterli tra di loro. Ogni stato deve essere pensato come una sorta di programma che viene eseguito. Questo tipo di grafo è più comunemente utilizzato quando si vogliono creare dei comportamenti di intelligenza artificiale, o strutture ad alto livello nella logica del vostro gioco

![Un esempio di State Graph](https://3114886391-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MKUGiR4TokVYSH1_yh6%2F-MLYRFUJ0JvKzd8t_fg0%2F-MLYU2J_gGTdidftMovE%2Fstate-machine.png?alt=media\&token=a7e05dfb-c339-4c7e-8c2c-a388ae9cdc7c)

### Macro ed Embed

Un Grafo può essere di tipo:

* **Macro**: il grafo è riutilizzabile e può essere aggiunto a differenti componenti. Dato che la Macro viene salvata nel progetto, non ha la possibilità di accedere direttamente agli oggetti presenti in una scena (dovrà prima andare a cercarli)
* **Embed**: il grafo è innestato direttamente nel componente e non può essere riutilizzato. Se l'oggetto che lo contiene è direttamente in scena (cioè non viene instanziato da un prefab), può accedere direttamente a tutti gli elementi in scena

