To create your first state machine go to Create -> FSMC -> Controller in your assets window.
With your state machine asset created, double click it or select Open Editor in inspector window to start working with graph editor.
In parameters window you can create 4 different types of parameters, rename them, set initial values and use search bar to find specific parameters. These parameters are used to determine logic of transitions between states.
Initialy state machine consists of two nodes, "start" and "any," where "start" represents the starting point and "any" is an imaginary state that applies transitions to all other states.
To create new state right click anywhere in editor and select Create state.
This will automatically create transition from a "start" node with which you can't interact, it is there only to inform you which state is a starting one. To create transitions between states right click on them, select Create Transition and click on a destination state to connect them.
Now you can fully map out logic for you state machine.
By selecting a transition on a graph or double clicking it in state inspector you can view the logic of that transition. Here you can add sets of conditions describing when this transitions should fire. For it to happen all conditions in at least one alternative group must be true at a given frame.
Have in mind that the order in which transitions appear in a state inspector dictates the priority, so feel free to change it if necessary.
In order to add funcionality to a state you need to create behaviour for it first. To do it select Create -> FSMC -> Behaviour in assets window and open it with your code editor.
*If you just imported FSMC package, script template for a Behaviour won't show in create menu until you restart Unity.
Here you can fill 4 methods to achieve desired funcionality.
All methods provide refference to a state machine as well as executer, which is a MonoBehaviour script living in a scene and managing state machine controller.
Having implemented behaviour now you can attach it to your states by clicking Add Behaviour in state inspector window and select desired one.
Now to make use of controller you have created give any game object in your scene a FSMC_Executer component and assign your controller to it.
Any other scripts can access getters and setters for parameters in your state machine through refference to FSMC_Executer component. For more optimized approach you can use Hashes instead of Names for the parameters, just use FSMC_Controller.StringToHash or Animator.StringToHash method (they work the same) to cache it.