Data flow
Output slot
Data can be output by declaring an output slot such as OutpotSlotInt.
Example script
Create a TestOutputSlotBehaviour script file and write the following code.
|
|
When this script is added to the state of ArborFSM, it becomes as follows.

Output slot class
- OutputSlotInt
- OutputSlotFloat
- OutputSlotBool
- OutputSlotGameObject
- OutputSlotString
- OutputSlotVector2
- OutputSlotVector3
- OutputSlotQuaternion
- OutputSlotRect
- OutputSlotBounds
- OutputSlotColor
- OutputSlotTransform
- OutputSlotRectTransform
- OutputSlotRigidbody
- OutputSlotRigidbody2D
- OutputSlotComponent
- OutputSlotLong
- OutputSlotCollider
- OutputSlotCollider2D
- OutputSlotCollision
- OutputSlotCollision2D
- OutputSlotRaycastHit
- OutputSlotRaycastHit2D
- OutputSlotUnityObject
- OutputSlotAny
Input slot
Data can be output by declaring an input slot such as InputSlotInt.
Example script
Create a TestInputSlotBehaviour script file and write the following code.
|
|
When this script is added to the state of ArborFSM, it becomes as follows.

Input slot class
- InputSlotInt
- InputSlotFloat
- InputSlotBool
- InputSlotGameObject
- InputSlotString
- InputSlotVector2
- InputSlotVector3
- InputSlotQuaternion
- InputSlotRect
- InputSlotBounds
- InputSlotColor
- InputSlotTransform
- InputSlotRectTransform
- InputSlotRigidbody
- InputSlotRigidbody2D
- InputSlotComponent
- InputSlotLong
- InputSlotCollider
- InputSlotCollider2D
- InputSlotCollision
- InputSlotCollision2D
- InputSlotRaycastHit
- InputSlotRaycastHit2D
- InputSlotUnityObject
- InputSlotAny
FlexibleField
FlexibleField is useful for not only input slots but also constant values and parameters.
Example script
Create a TestFlexibleFieldBehaviour script file and write the following code.
|
|
When this script is added to the state of ArborFSM, it becomes as follows.

FlexibleField related class
- FlexibleInt
- FlexibleFloat
- FlexibleBool
- FlexibleGameObject
- FlexibleString
- FlexibleEnumAny
- FlexibleVector2
- FlexibleVector3
- FlexibleQuaternion
- FlexibleRect
- FlexibleBounds
- FlexibleColor
- FlexibleTransform
- FlexibleRectTransform
- FlexibleRigidbody
- FlexibleRigidbody2D
- FlexibleComponent
- FlexibleLong
- FlexibleField
(Inherit and use it)
Type constraints of slots

For InputSlotAny and InputSlotComponent, you can specify type constraints with attributes.
Example script
Create TestConstraintSlotBehaviour script file and write the following code.
|
|
Available Attributes
Class | Attribute |
---|---|
OutputSlotAny | SlotTypeAttribute |
InputSlotAny | Class derived from ClassTypeConstraintAttribute SlotTypeAttribute |
InputSlotComponent | Class derived from ClassTypeConstraintAttribute SlotTypeAttribute It is also constrained to the Component class. |
InputSlotUnityObject | Class derived from ClassTypeConstraintAttribute SlotTypeAttribute It is also constrained to the UnityEngine.Object class. |
FlexibleComponent | Class derived from ClassTypeConstraintAttribute SlotTypeAttribute It is also constrained to the Component class. |
DataLink attribute

By using DataLink attribute, input from constant or data flow can be accepted even if there is no corresponding type InputSlot or FlexibleField.
Example script
Create ExampleDataLinkBehaviour script file and write the following code.
|
|
Notes
- It can only be used in the fields of classes that inherit NodeBehaviour (such as StateBehaviour and ActionBehaviour).
- It can not be used for arrays or lists.
Customize
Create data slot
You can also create a data slot of your own class.
For details, refer to “Scripting : Data Slot”.
Variable
If you also create a parameter, you can create it easily using Variable Generator.
For details, see “Scripting : Variable”.
Calculator node
You can also create scripts to use for calculator nodes.
For details, see “Scripting : Calculator”.