var searchIndex = [
    
    {
        "uri": "/manual/behaviourtree/customize/actionbehaviour.html",
        "title": "Customize ActionBehaviour",
        "tags": [],
        "description": "",
        "summary": "You can create an ActionBehaviour script and add the original action by describing what you want to do.\nCreate an ActionBehaviour script file  Right click at the place you want to create from the Project window. From the right-click menu, select \u0026ldquo;Create \u0026gt; Arbor \u0026gt; Behavior tree \u0026gt; ActionBehaviour C# Script\u0026rdquo;.\n\r  Enter the file name and confirm  Function to be called If you add the ActionBehavior you created to the Behavior Tree graph, each function of the script will be called.",
        "content": " You can create an ActionBehaviour script and add the original action by describing what you want to do.\nCreate an ActionBehaviour script file  Right click at the place you want to create from the Project window. From the right-click menu, select \u0026ldquo;Create \u0026gt; Arbor \u0026gt; Behavior tree \u0026gt; ActionBehaviour C# Script\u0026rdquo;.\n\r  Enter the file name and confirm  Function to be called If you add the ActionBehavior you created to the Behavior Tree graph, each function of the script will be called.\n OnAwake\nIt is called the first time the action node becomes active. OnStart\nCalled when the action node becomes active. OnExecute\nIt is called when the action node is executed.\nFor the execution timing, see UpdateSettings and ExecutionSettings in BehaviourTree.\nArbor Reference : BehaviourTree OnAbort\nCalled when the node is interrupted by the Decorator. OnEnd\nCalled when the action node exits.  Call order \r  You can also use the callback method of MonoBehaviour other than OnEnable and OnDisable, but please be aware that Start () will be called after OnExecute().  Declaring variables \r You can edit it in Arbor Editor by declaring a field with public or SerializedField attribute added to the created script.\n1 2 3 4 5 6 7 8 9 10 11 12  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor; using Arbor.BehaviourTree;[AddComponentMenu(\u0026#34;\u0026#34;)] public class TestActionBehaviour : ActionBehaviour { public string myName; // The rest is omitted. }    You can also use CalculatorSlot and Flexible classes as well as StateBehaviour.\nFinish Execute It can be terminated by calling FinishExecute(bool result) in the OnExecute method.\n1 2 3 4  if (Input.GetKey(KeyCode.Space) ) { FinishExecute(true); }  \n"
    },
    {
        "uri": "/manual/behaviourtree/howtouse.html",
        "title": "How to use Behaviour Tree",
        "tags": [],
        "description": "",
        "summary": "Add BehaviourTree component To use the behaviour tree you need the BehaviourTree component.\nThere are two ways to add the BehaviourTree component.\nCreate GameObject with BehaviourTree component  Click the Create button in the Hierarchy window or right click in the window Select \u0026ldquo;Arbor / BehaviourTree\u0026rdquo;  \r Add BehaviourTree component to already existing GameObject  In the Hierarchy window, select GameObject to which BehaviourTree is added Click the \u0026ldquo;Add Component\u0026rdquo; button in the Inspector window Select \u0026ldquo;Arbor / BehaviourTree\u0026rdquo;  \r Open BehaviourTree graph in Arbor Editor window To edit BehaviourTree You need to open a BehaviourTree graph in the Arbor Editor window.",
        "content": " Add BehaviourTree component To use the behaviour tree you need the BehaviourTree component.\nThere are two ways to add the BehaviourTree component.\nCreate GameObject with BehaviourTree component  Click the Create button in the Hierarchy window or right click in the window Select \u0026ldquo;Arbor / BehaviourTree\u0026rdquo;  \r Add BehaviourTree component to already existing GameObject  In the Hierarchy window, select GameObject to which BehaviourTree is added Click the \u0026ldquo;Add Component\u0026rdquo; button in the Inspector window Select \u0026ldquo;Arbor / BehaviourTree\u0026rdquo;  \r Open BehaviourTree graph in Arbor Editor window To edit BehaviourTree You need to open a BehaviourTree graph in the Arbor Editor window.\n In the Hierarchy window, select GameObject with BehaviourTree component. Click \u0026ldquo;Open Editor\u0026rdquo; button of BehaviourTree component editor in Inspector window.  \r Also, if the Arbor Editor window is already open, it will switch if you select GameObjet with BehaviourTree component in the Hierarchy window.\nCreate Composite Node  Right-click the position of the graph where you want to create a node Select \u0026ldquo;Create Composite\u0026rdquo; in the menu Select the composite you want to create in the Composite Selection window.  \r Create Action Node  Right-click the position of the graph where you want to create a node Select \u0026ldquo;Create Action\u0026rdquo; in the menu Select the action you want to create in the Action Selection window.  \r For creating action script here\nCustomize ActionBehaviour\nConnecting nodes Route nodes, composite nodes, action nodes can connect parent-child relationships.\nConnect to existing node  Drag the connection slot at the top or bottom of the node Drop to the destination slot  \r Create a new node and connect  Drag the connection slot at the top or bottom of the node Drop at the position in the graph where you want to create the node Select \u0026ldquo;Create Composite\u0026rdquo; or \u0026ldquo;Create Action\u0026rdquo; from menu Select the script you want to create with various script selection menus  \r Disconnect node  Right-click on the connection line or connection slot you want to disconnect Select \u0026ldquo;Disconnect\u0026rdquo; from the menu  \r Changing the priority of nodes The priority order is determined by the positional relationship of the nodes between the siblings having the same parent.\n If you want to lower the priority, drag the node and move it to the right. If you want to increase the priority, drag the node and move it to the left.  \r Delete node  Select the node you want to delete Select \u0026ldquo;Delete\u0026rdquo; from the right-click menu in the graph, or press the Delete key  \r Replace Composite You can replace only composites later, leaving the node\u0026rsquo;s location and connection state intact.\n Click the gear icon in the node header section or right click on the header section Select \u0026ldquo;Replace Composite\u0026rdquo; Select a composite from the composite selection menu.  \r Replace Action You can replace only actions later, leaving the node\u0026rsquo;s location and connection state intact.\n Click the gear icon in the node header section or right click on the header section Select \u0026ldquo;Replace Action\u0026rdquo; Select a action from the action selection menu.  \r Add Decorator Decorators can be added to composite nodes or action nodes.\n Click the gear icon in the node header section or right click on the header section Select \u0026ldquo;Add Decorator\u0026rdquo; Select the decorator you want to add from the decorator selection menu.  \r For creating decorator script here\nCustomize Decorator\nInsert Decorator You can insert a decorator at an arbitrary position.\n Mouseover near the center between the node header and main behavior.\nOr mouse-over over the center of the separator between the decorators at the position you want to insert. Click \u0026ldquo;Insert Decorator\u0026rdquo; button Select \u0026ldquo;Add Decorator\u0026rdquo; Select the decorator you want to add from the decorator selection menu.  \r Delete Decorator  Click the gear icon in the title bar of the decorator or right click on the title bar section Select \u0026ldquo;Delete\u0026rdquo; from the menu  \r Add Service Service can be added to composite node or action node.\n Click the gear icon in the node header section or right click on the header section Select \u0026ldquo;Add Service\u0026rdquo; Select the service you want to add from the service selection menu.  \r Since there is no built-in script in the service, it is necessary to prepare the service script beforehand.\nFor creating service script here\nCustomize Service\nInsert Service You can insert a service at an arbitrary position.\n Mouseover near the center between main behavior and node footer. Or mouse-over the center of the separator between services at the position you want to insert. Click \u0026ldquo;Insert Service\u0026rdquo; button Select \u0026ldquo;Add Service\u0026rdquo; Select the service you want to add from the service selection menu.  \r Delete Service  Click the gear icon in the title bar of the service or right click on the title bar section Select \u0026ldquo;Delete\u0026rdquo; from the menu  \r About menus Graph menu Right-click the graph to display the menu.\n\r    Item Contents     Create Composite Create a composite node.   Create Action Create a action node.   Create Calculator Create a Calculator node.   Create Group Create a group.   Create Comment Create a comment.   Cut Cut the selected nodes.   Copy Copy the selected nodes.   Paste Paste the copied nodes.   Duplicate Duplicate the selected nodes.   Delete Delete the selected nodes.   Expand All Expand all the selected node\u0026rsquo;s behaviour.   Collapse All Collapse all the selected node\u0026rsquo;s behaviour.    Composite node menu Right-click the header part of the node or click the gear icon to display the menu.\n\r    Item Contents     Rename Change the name of the node.   Show Comment Switch the display of the node comment field.\r    Replace Composite Replace it with another composite script.   Add Decorator Add a decorator.   Add Service Add a service.   Paste Decorator As New Paste the copied decorator.   Paste Service As New Paste the copied service.   Expand All Expand all the behaviour of the node.   Collapse All Collapse all the behaviour of the node.   Cut Cut the node.   Copy Copy the node.   Duplicate Duplicate the node.   Delete Delete the node.    Composite menu Right-click the title bar or click the gear icon to display the menu.\n\r    Item Contents     Copy Copy the composite.   Paste Values Overwrite it with the value of the copied composite.(Only valid for the same type)   Edit Script Open the script editor.    Action node menu Right-click the header part of the node or click the gear icon to display the menu.\n\r    Item Contents     Rename Change the name of the node.   Show Comment Switch the display of the node comment field.\r    Replace Action Replace it with another action script.   Add Decorator Add a decorator.   Add Service Add a service.   Paste Decorator As New Paste the copied decorator.   Paste Service As New Paste the copied service.   Expand All Expand all the behaviour of the node.   Collapse All Collapse all the behaviour of the node.   Cut Cut the node.   Copy Copy the node.   Duplicate Duplicate the node.   Delete Delete the node.    Action menu Right-click the title bar or click the gear icon to display the menu.\n\r    Item Contents     Copy Copy the action.   Paste Values Overwrite it with the value of the copied action.(Only valid for the same type)   Edit Script Open the script editor.    Decorator menu Right-click the title bar or click the gear icon to display the menu.\n\r    Item Contents     Move Up Move the order up.   Move Down Move the order down.   Copy Copy the Decorator.   Paste Values Overwrite it with the value of the copied decorator(Only valid for the same type)   Delete Delete the Decorator.   Edit Script Open the script editor.    Service menu Right-click the title bar or click the gear icon to display the menu.\n\r    Item Contents     Move Up Move the order up.   Move Down Move the order down.   Copy Copy the Service.   Paste Values Overwrite it with the value of the copied service(Only valid for the same type)   Delete Delete the Service.   Edit Script Open the script editor.    Connection line menu Right-click on the connection line to display the menu.\n\r    Item Contents     Go to Parent Node Scroll to the position of the parent node.   Go to Child Node Scroll to the position of the child node.   Disconnect Disconnect it.    Debug menu Click on the \u0026ldquo;Debug\u0026rdquo; button on the toolbar to display it.\n\r    Item Contents     Show all data values Change to show the current value of all of the data line.   Hide all data values Change to hide the current value of all of the data line.    "
    },
    {
        "uri": "/manual/customize/statebehaviour.html",
        "title": "Customize StateBehaviour",
        "tags": [],
        "description": "",
        "summary": "To customize StateBehaviour, you need to create a script file for StateBehaviour and describe what you want to do.\nCreate StateBehaviour script file  Right-click on the location you want to create from the Project window. From the right-click menu, and select \u0026ldquo;Create\u0026gt; Arbor \u0026gt; State Behaviour C# Script\u0026rdquo;.\n\r  Determined to enter the file name  Function to be called By assigning the created StateBehaviour to the state in ArborEditor, each function of the script will be called.",
        "content": " To customize StateBehaviour, you need to create a script file for StateBehaviour and describe what you want to do.\nCreate StateBehaviour script file  Right-click on the location you want to create from the Project window. From the right-click menu, and select \u0026ldquo;Create\u0026gt; Arbor \u0026gt; State Behaviour C# Script\u0026rdquo;.\n\r  Determined to enter the file name  Function to be called By assigning the created StateBehaviour to the state in ArborEditor, each function of the script will be called.\n OnStateAwake\nIt is called when it first enters the state. OnStateBegin\nIt is called when transitioning to state. OnStateUpdate\nIt will be called every frame at the timing of Update() of MonoBehaviour. OnStateLateUpdate\nIt will be called every frame at the timing of LateUpdate() of MonoBehaviour. OnStateEnd\nIt is called when leaving the state. MonoBehaviour message functions\nFor details, please see the MonoBehaviour Messages of Unity ScriptReference.  Execution Order \r  OnStateAwake / OnStateBegin / OnStateUpdate / OnStateLateUpdate / OnStateEnd is called in order from the top attached to the state node in Arbor Editor. MonoBehaviour messages are invoked according to the order of execution by Unity.\nFor details, refer to Execution Order of Event Functions in Unity Manual.  Variables and Arbor Editor \r You can edit it in Arbor Editor by declaring a variable with public or SerializeField attribute added to the created script.\n1 2 3 4 5 6 7  using UnityEngine; using System.Collections; using Arbor; public class TestBehaviour : StateBehaviour { public string myName; }    State connection \r Add field By declaring StateLink with the public or SerializeField attribute added to the created script, connection slots will be displayed in Arbor Editor.\n1 2 3 4 5 6 7 8  using UnityEngine; using System.Collections; using Arbor; public class TestBehaviour : StateBehaviour { public StateLink nextState; // Hereinafter abbreviated }    Transition to connection destination It is referred to as the Transition in the transition you want to timing.\n1 2 3  Transition( nextState );    Data input slot \r Add field An input slot is displayed by declaring InputSlotInt, InputSlotFloat etc. with public or SerializeField attribute added to the created script.\nPlease refer to the script reference for available InputSlot.\n1 2 3 4 5 6 7 8  using UnityEngine; using Arbor; public class TestBehaviour : StateBehaviour { public InputSlotInt slotInt; // Hereinafter abbreviated }    Get value To get the value we use the GetValue method.\n1 2 3 4  int data = 0; slotInt.GetValue(ref data); Debug.Log(\u0026#34;Value \u0026#34; + data);    Flexible version data input \r Add field If you declare FlexibleInt, FlexibleFloat etc. with public or SerializeField attribute added to the script you created, Flexible data setting fields will be displayed.\nPlease refer to the script reference for available classes.\n1 2 3 4 5 6 7 8  using UnityEngine; using Arbor; public class TestBehaviour : StateBehaviour { public FlexibleInt flexible; // Hereinafter abbreviated }    If you select Calculucator in ArborEditor window accepts an input from the calculator node.\nGet value To retrieve the value, use the value property.\n1 2  Debug.Log(\u0026#34;Value \u0026#34; + flexible.value);    Data output slot \r Add field Output slots are displayed by declaring OutputSlotInt, OutputSlotFloat etc. with public or SerializeField attribute added to the created script.\nPlease refer to the script reference for available OutputSlot.\n1 2 3 4 5 6 7 8  using UnityEngine; using Arbor; public class TestBehaviour : StateBehaviour { public OutputSlotInt slotInt; // Hereinafter abbreviated }    Setting value To set the value to use the SetValue method. 1 2  slotInt.SetValue(10);   \n"
    },
    {
        "uri": "/manual/getting-started.html",
        "title": "Getting Started",
        "tags": [],
        "description": "",
        "summary": "Information \u0026ldquo;Arbor 3: FSM \u0026amp; BT Graph Editor\u0026rdquo;  I want to make games using finite state machines and behavior trees! However, I want to code my behavior that depends on game logic! A graph editing window of a finite state machine and a behavior tree that can be used at such time,\nIt is a simple graph editor asset that allows you to write scripts according to the behavior you want to create.",
        "content": " \r Information \u0026ldquo;Arbor 3: FSM \u0026amp; BT Graph Editor\u0026rdquo;  I want to make games using finite state machines and behavior trees! However, I want to code my behavior that depends on game logic! A graph editing window of a finite state machine and a behavior tree that can be used at such time,\nIt is a simple graph editor asset that allows you to write scripts according to the behavior you want to create.  What is finite state machine (FSM)?  The finite state machine, and behavior in a certain state, it is a mechanism for transition from the state to another. For example, switches and lights.  The switch and the lamp there is a state of ON and OFF, will also be ON lamp if the ON switch. Switch is switched to ON If you press, is the behavior to switch to OFF and press again. Electric light will be the behavior to put the lights if ON.   \r For details, please refer to \u0026ldquo;State machine\u0026rdquo;.\nWhat is a Behaviour Tree (BT)?  It is a tree structure of behaviors that makes it possible to handle the priority of action and the condition for doing actions as a set. For example, consider enemy AI.  The behavior approaching the player is done if the distance to the player is short. In other cases, it will cycle around a fixed route. Behaviors approaching players can be said to have a higher priority than behaviors traveling on certain routes.   \r For details, see \u0026ldquo;Behaviour Tree\u0026rdquo;.\nGet the Arbor  Preparation for using Arbor Project creation If you do not have a project that uses Arbor, you need to create a new project.\n\r For details on how to create a project, see Getting started in the Unity Manual.\nBy choosing Arbor from the \u0026ldquo;Asset packages\u0026rdquo; button, you can skip importing work later.\n\r If you can not find the Arbor package in the list, see \u0026ldquo;Importing Arbor\u0026rdquo; below.\nFinally, press the \u0026ldquo;Create Project\u0026rdquo; button to create the project.\nArbor import This task is necessary if you did not import the Arbor package in \u0026ldquo;Create Project\u0026rdquo; or if you want to import Arbor into an already existing project.\nTo import Arbor, first display the AssetStore window.\nFrom the menu, select \u0026ldquo;Window \u0026gt; Asset Store\u0026rdquo; or press Ctrl + 9 on the shortcut.\n\r When the AssetStore window is displayed, click the\u0026rdquo;My Downloads\u0026rdquo; button on the toolbar to switch to download list.\nClick \u0026ldquo;My Purchased\u0026rdquo; and find the Arbor package from the list.\n\r If \u0026ldquo;Download\u0026rdquo; button is displayed, click to start downloading.\nClick on the \u0026ldquo;Import\u0026rdquo; button to display the Import Unity Package window.\n\r Import is completed by clicking the Import button at the lower right of the window.\nHow to use State Machine ArborFSM is a component that controls the state machine.\nYou can combine in-game logic by adding ArborFSM to GameObject and setting nodes such as State in the ArborEditor window.\n How to use State Machine  Behaviour Tree Behaviour Tree is a component that controls the behavior tree.\nYou can combine in-game logic by adding BehaviourTree to GameObject and setting nodes such as ActionNode in the ArborEditor window.\n How to use Behaviour Tree  Common usage of graph The name change of node  Double click on the header part at the top of the inside of the node frame, select \u0026ldquo;Rename\u0026rdquo; from right click or setting icon.\nEnter in the displayed text box.\n\r   Delete Node  Click to select nodes. Right-click on an empty area and select \u0026ldquo;Delete\u0026rdquo;, or press the Delete key.\n\r   Open the Behaviour manual For built-in scripts and scripts with BehaviorHelp attribute, the help icon to open the manual is displayed.\n Click the help icon next to the title bar of various behaviors\n\r   Script Reference : BehaviourHelp\nChoose how to specify the value  If there is a field next to mark of each property, you can choose how to specify the value by clicking.\n\r  Unlike the choice depending on the type of value, it is as follows for the Lord.  Constant\nSpecify a fixed value Parameter\nRefer to the parameter. For details on parameters, see \u0026ldquo;About ParameterContainer\u0026rdquo; below. Random\nGet at random from within the specified range. Calculator\nIt accepts the input from the operation node.\nFor details about calculator nodes, see \u0026ldquo;About calculator node\u0026rdquo; below.   Data flow Arbor has a function to pass data between nodes.\nYou can also use calculator nodes to perform simple calculations.\nFor details, refer to the \u0026ldquo;Data flow\u0026rdquo; page.\nManual : Data flow\nAbout Parameter container ParameterContainer is a component used to share data between graphs.\nFor details, refer to the \u0026ldquo;ParameterContainer\u0026rdquo; page.\nManual : ParameterContainer\nCoding You can prepare the behavior and the processing of your own to create a script of C#, JavaScript,Boo.\nCreating a script file  Right-click on the location you want to create from the Project window. From the right-click menu, and select \u0026ldquo;Create\u0026gt; Arbor \u0026gt; State Behaviour C# Script\u0026rdquo;.\n\r  Determined to enter the file name  State Connection \r  Declare StateLink wearing a public or SerializeField attribute to the script that you have created.\nThe declaration automatically become editable Arbor Editor if.\n1 2 3 4 5 6 7  using UnityEngine; using Arbor; public class TestBehaviour : StateBehaviour { public StateLink nextState; // Approximately }    It is referred to as the Transition in the transition you want to timing. 1 2 3  Transition( nextState );     Input from the calculator node \r  Declare and InputSlotInt and InputSlotFloat wearing a public or SerializeField attribute to create scripts.\n(For InputSlot generic class can not be serialized on the Unity of the specification, please use the class was always inherited)\nAutomatically become editable Arbor Editor if the declaration.\n1 2 3 4 5 6 7 8  using UnityEngine; using Arbor; public class TestBehaviour : StateBehaviour { public InputSlotInt slotInt; // Approximately }   To get the value is to use the GetValue method. 1 2 3 4 5 6  int data = 0; slotInt.GetValue(ref data); if (data == 10) { Debug.Log(\u0026#34;Test\u0026#34;); }     Input from the calculator node(Flexible) \r  Declare and FlexibleInt and FlexibleFloat wearing a public or SerializeField attribute to create scripts. 1 2 3 4 5 6 7 8  using UnityEngine; using Arbor; public class TestBehaviour : StateBehaviour { public FlexibleInt flexible; // Approximately }    To get the value is to use the value property. 1 2 3 4  if (flexible.value == 10) { Debug.Log(\u0026#34;Test\u0026#34;); }    Output to the calculator node \r  Declare and OutputSlotInt and OutputSlotFloat wearing a public or SerializeField attribute to create scripts.\n(For OutputSlot generic class is not serialized on the Unity of the specification, please use the class was always inherited)\nAutomatically become editable Arbor Editor if the declaration. 1 2 3 4 5 6 7 8  using UnityEngine; using Arbor; public class TestBehaviour : StateBehaviour { public OutputSlotInt slotInt; // Approximately }    To set the value to use the SetValue method. 1 2  slotInt.SetValue(10);     Editor extension  Such as available inspector extension and PropertyDrawer is I can also be used to StateBehaviour in Unity  Important point  For enabled of MonoBehaviour are used internally already for execution control, please use the behaviourEnabled to be a substitute.  To the next step  ArborEditor window\nI explains the ArborEditor window. StateMachine\nI explain StateMachine. BehaviourTree \nI explain BehaviourTree added from Arbor 3. ParameterContainer\nI explain ParameterContainer. Data flow\nI will explain passing data by data slot.  Tutorial There is also a tutorial that you can practice basic usage of Arbor.\nTutorial\n"
    },
    {
        "uri": "/manual/arboreditor.html",
        "title": "ArborEditor Window",
        "tags": [],
        "description": "",
        "summary": "This is a window for editing the node graph.\nOpen ArborEditor window Open Window directly  Select \u0026ldquo;Window\u0026gt; Arbor Editor\u0026rdquo; from the menu\n\r   Open from graph  Select GameObject with graph. Click the \u0026ldquo;Open Editor\u0026rdquo; button in the Inspector window.\n\r   UI description \r １．Toolbar \u0026ldquo;Create\u0026rdquo; drop down \r Create a GameObject with the selected graph in the scene.",
        "content": " \r This is a window for editing the node graph.\nOpen ArborEditor window Open Window directly  Select \u0026ldquo;Window\u0026gt; Arbor Editor\u0026rdquo; from the menu\n\r   Open from graph  Select GameObject with graph. Click the \u0026ldquo;Open Editor\u0026rdquo; button in the Inspector window.\n\r   UI description \r １．Toolbar \u0026ldquo;Create\u0026rdquo; drop down \r Create a GameObject with the selected graph in the scene.\n   Menu Contents     ArborFSM Create a GameObject with ArborFSM in the scene   BehaviourTree Create a GameObject with BehaviourTree in the scene    Graph selection field \r This is a field for selecting a graph.\nToggle button on side panel \r Switch the display of the side panel.\n\u0026ldquo;Live Tracking\u0026rdquo; toggle \r Toggle active node tracking during play.\n\u0026ldquo;View\u0026rdquo; drop down \r Show menu related to View.\n   Menu Contents     Expand All Expand all collapsed behavior   Collapse All Collapse all deployed behaviors    \u0026ldquo;Debug\u0026rdquo; drop down \r Displays the debug related menu of the graph.\n   Menu Contents     Show all data values Change to show the output values of all data lines to during play   Hide all data values Change to hide the output values of all data lines    Refer to the manual of each graph for menu items by graph.\n How to use State Machine How to use Behaviour Tree  Capture button \r Save the entire graph view in the image. (Maximum size is up to 16384 x 16384)\nNotification button \r This button will be displayed when a new version is released.\nHelp button \r A menu for opening a manual etc. is displayed.\nSetting button \r Open the window for setting.\n   Item Contents     Language Select language to display   Show Logo Switch Arbor logo display to graph view   Zoom Setting amount to zoom out   Mouse Wheel Mode Selection of mouse wheel behavior to zoom or scroll   Docking Open Toggle docking when opening ArborEditor window   Live Tracking Hierarchy Switching tracking of graph hierarchy during live tracking   Show Grid Toggle grid display in graph view   Snap Grid Toggle to snap when dragging in graph view   Grid Size Setting the grid width displayed in the graph view   Grid Splin Num Setting the number of split grid sizes   Reset Revert the grid setting to default   Version The version of Arbor you are importing    ２．Side Panel Graph \r The graph name setting and the switching button of the parent graph and child graph are displayed.\n Name Graph name edit field Parent Graph Button to display the parent graph in the graph view Children Button to display child graph in graph view (Displayed when there is SubStateMachine or SubBehaviourMachine)  Node List \r A list of nodes that are placed in the graph.\n(Only displayed nodes are nodes involved in graph state)\nMethod of operation    Operation Windows Mac     Select Left mouse button Left mouse button   Additional selection Deselect Ctrl + Left mouse button   Sequential node selection Shift + Left mouse button shift ⇧ + Left mouse button    ３．Graph View \r Display node graph.\nMethod of operation    Operation Windows Mac     Scroll Mouse middle button drag Mouse middle button drag    Alt + Mouse left button drag option ⌥ + Mouse left button drag    Operation with scroll bar Operation with scroll bar    Wheel scroll(Switch by setting) Wheel scroll(Switch by setting)   Zoom out(Unity2017.3.0 or later) Wheel scroll(Switch by setting) Wheel scroll(Switch by setting)    Alt + Mouse right button drag option ⌥ + Mouse right button drag   Rectangle selection of nodes Mouse left button drag Mouse left button drag   Move node Mouse left button drag on node Mouse left button drag on node   Context menu Mouse right button click Mouse right button click    For details on how to create nodes etc. please refer to the manual of each graph.\nShortcut key    Operation Windows Mac     Copy node Ctrl + C key command ⌘ + C key   Cut node Ctrl + X key command ⌘ + X key   Paste node Ctrl + V key command ⌘ + V key   Duplicate node Ctrl + D key command ⌘ + D key   Delete node Delete key Delete key   Scroll to position of selected node F key F key   Select all nodes Ctrl + A key command ⌘ + A key    ４．Graph Path \r This is the path to the graph currently displayed in the graph view.\n"
    },
    {
        "uri": "/manual/behaviourtree/customize/decorator.html",
        "title": "Customize Decorator",
        "tags": [],
        "description": "",
        "summary": "You can add original condition judgment and loop processing by creating a Decorator script and describing what you want to do.\nCreating a Decorator script file  Right click at the place you want to create from the Project window. From the right-click menu, select \u0026ldquo;Create\u0026gt; Arbor\u0026gt; Behavior tree\u0026gt; Decorator C# Script\u0026rdquo;.\n\r  Enter the file name and confirm  Function to be called If you add the created Decotarot to the composite node or action node, each function of the script will be called.",
        "content": " You can add original condition judgment and loop processing by creating a Decorator script and describing what you want to do.\nCreating a Decorator script file  Right click at the place you want to create from the Project window. From the right-click menu, select \u0026ldquo;Create\u0026gt; Arbor\u0026gt; Behavior tree\u0026gt; Decorator C# Script\u0026rdquo;.\n\r  Enter the file name and confirm  Function to be called If you add the created Decotarot to the composite node or action node, each function of the script will be called.\n OnAwake\nIt is called the first time the node becomes active. OnStart\nIt is called when the node becomes active. OnAbort\nCalled when the node is interrupted by the Decorator. OnEnd\nCalled when the node exits. HasConditionCheck\nIt is called to determine whether ConditionCheck is done or not.\nIf ConditionCheck is not done, please override and return false.\nDefault is true. OnConditionCheck\nIt is called when condition judgment is performed.\nPlease return true if it matches the condition, false if it does not match.\nWhether to abort or not is ultimately determined by AbortFlags. OnRepeatCheck\nIt is called to determine whether to repeat if the node terminates normally.\nTo repeat please return true.\nDefault is false. OnFinishExecute\nIt is called to change the execution result.\nBy default, it returns the received result as it is.  Call order \r  If more than one Decorator is added to the node, it is called in order from the top. You can also use the callback method of MonoBehaviour other than OnEnable and OnDisable, but please be aware that Start () will be called after OnConditionCheck () etc.  Declaring variables \r You can edit it in Arbor Editor by declaring a field with public or SerializedField attribute added to the created script.\n1 2 3 4 5 6 7 8 9 10 11 12  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor; using Arbor.BehaviourTree;[AddComponentMenu(\u0026#34;\u0026#34;)] public class TestDecorator : Decorator { public string myName; // The rest is omitted. }    You can also use CalculatorSlot and Flexible classes as well as StateBehaviour.\n"
    },
    {
        "uri": "/manual/behaviourtree/customize.html",
        "title": "Customize",
        "tags": [],
        "description": "",
        "summary": "You can also customize it by writing a script in Behavior Tree.\n Customize ActionBehaviour\nI will explain the customization by the script assigned to the action node. Customize Decorator\nI will explain the customization by decorator script. Customize Service\nI will explain the customization by service script.  ",
        "content": "You can also customize it by writing a script in Behavior Tree.\n Customize ActionBehaviour\nI will explain the customization by the script assigned to the action node. Customize Decorator\nI will explain the customization by decorator script. Customize Service\nI will explain the customization by service script.  "
    },
    {
        "uri": "/manual/customize/calculator.html",
        "title": "Customize Calculator",
        "tags": [],
        "description": "",
        "summary": "To customize a calculator node, you need to create a script file for the calculator node and describe the process you want to do.\nCreate a Calculator script file  Right-click on the location you want to create from the Project window. From the right-click menu, and select \u0026ldquo;Create\u0026gt; Arbor \u0026gt; Calculator C# Script\u0026rdquo;.\n\r  Determined to enter the file name  Function to be called By assigning the created Calculator to a calculator node in ArborEditor, each function of the script will be called.",
        "content": " To customize a calculator node, you need to create a script file for the calculator node and describe the process you want to do.\nCreate a Calculator script file  Right-click on the location you want to create from the Project window. From the right-click menu, and select \u0026ldquo;Create\u0026gt; Arbor \u0026gt; Calculator C# Script\u0026rdquo;.\n\r  Determined to enter the file name  Function to be called By assigning the created Calculator to a calculator node in ArborEditor, each function of the script will be called.\n OnCalculate\nIt is called when calculation is required.\nDescribe the operation process here and output the data with OutputSlot.SetValue. OnCheckDirty\nIt is called to determine if recalculation is necessary. Please override as necessary.\nPlease return whether necessary data for calculation has been changed and recalculation is necessary.\nIt is not necessary to be conscious of recalculation depending on the connection state of the input slot because it is judged internally by Arbor.\n(It should be true to handle external object values, such as Transform.position) MonoBehaviour message functions\nFor details, please see the MonoBehaviour Messages of Unity ScriptReference.  Flow of calculation  Call InputSlot.GetValue () as necessary. OnCheckDirty is called to determine if recalculation is necessary.\n(If the value was changed beforehand by OutputSlot.SetValue, recalculation will be performed regardless of the result of OnCheckDirty) On recalculation is required OnCalculate is called.  Call InputSlot.GetValue () as necessary in OnCaluculate. Below, we will trace InputSlot to get the value until recalculation is no longer needed.   Variables and Arbor Editor Basically, as with StateBehaviours Variables and Arbor Editor, declaring variables makes it displayable in Arbor Editor and editable.\n"
    },
    {
        "uri": "/manual/statemachine.html",
        "title": "State Machine",
        "tags": [],
        "description": "",
        "summary": "What is a State Machine? A state machine refers to a mechanism that changes the state according to the condition with the behavior as one state.\nIn Arbor, you can use state machine by adding ArborFSM component to GameObject.\nExample: Switch and light Consider the switch and electric light.\n If the switch is off, the light goes out. If the switch is on, the light turns on. The state of the light switches with the switch as a condition.",
        "content": " What is a State Machine? A state machine refers to a mechanism that changes the state according to the condition with the behavior as one state.\nIn Arbor, you can use state machine by adding ArborFSM component to GameObject.\nExample: Switch and light Consider the switch and electric light.\n If the switch is off, the light goes out. If the switch is on, the light turns on. The state of the light switches with the switch as a condition.  Temporarily assembling with ArborFSM results in the following.\n\r When a Destroy message is sent, a behavior to give an explosion effect and to destroy the light is temporarily assembled.\nWe will do detailed comment later.\nNode component Start state \r This is the first state to be executed when ArborFSM starts.\nOne graph requires one starting state.\nState \r It is a normal state. It is executed by transitioning from the start state or another state.\nResident state \r It is a state that is always executed regardless of the running node.\nPerform some kind of interrupt judgment.\nAlso, because it is always running, it is possible to transition from resident state to other states, but can not transition from other state to resident state.\nReroute Node \r It is a node for adjusting the connection line route.\nIt is used when connecting lines cross and it is difficult to see.\nThe direction of the line can also be adjusted with this node.\nStateBehaviour scripts \r It is a script for handling state behavior.\nIt can be set to all states of start state, normal state, resident state.\nSince you can add more than one StateBehavior to a state, you can combine behaviors to create states.\nFor creating StateBehaviour script here.\nCustomize StateBehaviour\nBuilt-in StateBehaviour Pre-built behaviors such as ActivateGameObject and OnTriggerEnterTransition in examples are also described in the StateBehaviour script.\nFor reference on the built-in StateBehavior see here.\nArborReference : StateBehaviours\nAbout StateLink \r Use StateLink to do state transitions.\nWhen you declare a StateLink field in StateBehaviour, the field appears in the Arbor Editor.\nBy connecting, state transitions are performed at the time of execution according to the description of the StateBehaviour script.\nMethod of operation    Operation Method     Connect Drag \u0026amp; Drop\r    Disconnect Right click on the connection line and select \u0026ldquo;Disconnect\u0026rdquo;.\r     TransitionTiming The transition timing is not instantaneous, but it follows the specification of TransitionTiming.\nTransitionTiming can be done by clicking on the StateLink gear icon with the setting window that opens.\n\r The behavior of TransitionTiming is as follows.\n   Item Contents     Late Update Overwrite Reserve to transition when LateUpdate.If the transition is already reserved in the same frame, overwrite it.   Immediate Transit instantaneously at transition call.If the transition is looping, there is a possibility of infinite looping, so use with caution.   Late Update Dont Overwrite Reserve to transition when LateUpdate. (Default)If the transition is already reserved within the same frame, do not overwrite it.    Explanation of examples Let\u0026rsquo;s take a look at the previous example again.\n\r  \u0026ldquo;Light Off\u0026rdquo; state\n\r  First, it starts from the Light Off state of the start state. ActivateGameObect changes the Spotlight object to inactive.\nArbor Reference : ActivateGameObject OnTriggerEnterTransition transitions to the Light On state when an object of the Player tag enters.\nArbor Reference : OnTriggerEnterTransition\n(In order to use OnTriggerEnterTransition, you need to set Collider etc. on GameObject with ArborFSM)  \u0026ldquo;Light On\u0026rdquo; state\n\r  ActivateGameObect changes the Spotlight object to active. By OnTriggerExitTransition, when an object of the Player tag comes out, it transits to the Light Off state.\nArbor Reference : OnTriggerExitTransition\n(In order to use OnTriggerExitTransition, you need to set Collider etc. on GameObject with ArborFSM)  \u0026ldquo;Wait Trigger\u0026rdquo; state\n\r  Since it is resident state, it is always executed regardless of which state is being executed. By TriggerTransition, when a Destroy message comes, it transits to the Explosion \u0026amp; Destroy state.\nArbor Reference : TriggerTransition  To send the Trigger message, use SendTrigger.\nArbor Reference : SendTrigger\nIt uses a SendTrigger from another FSM and indirectly issues a transition instruction.   \u0026ldquo;Explosion \u0026amp; Destroy\u0026rdquo; statea\n\r  InstantiateGameObject instantiates prefab.\nArbor Reference : InstantiateGameObject\n(It is an assumption that you set up particles etc., although nothing is set for the temporary set) DestroyGameObject destroys the LightFSM object (its own GameObject).\nArbor Reference : DestroyGameObject   I think that I understand the flow that combines behaviors into state and transitions when it matches the transition condition.\nIf it is a simple example like this one, I think some people may find it easier to write MonoBehaviour directly,\nWhen multiple states become confused, it will be a great advantage to visualize in graph form.\nHow to use State Machine For details on how to use, please click here\nHow to use State Machine\nScript customization For details on script customization, please see here\nCustomize StateBehaviour\n"
    },
    {
        "uri": "/manual/behaviourtree/customize/service.html",
        "title": "Customize Service",
        "tags": [],
        "description": "",
        "summary": "By creating a Service script, you can add your own update processing etc. by describing the processing you want to do.\nCreate Service script file  Right click at the place you want to create from the Project window. From the right-click menu, select \u0026ldquo;Create\u0026gt; Arbor\u0026gt; Behavior tree\u0026gt; Service C# Script\u0026rdquo;.\n\r  Enter the file name and confirm  Function to be called When you add the created Service to the Composite node or Action node, each function of the script will be called.",
        "content": " By creating a Service script, you can add your own update processing etc. by describing the processing you want to do.\nCreate Service script file  Right click at the place you want to create from the Project window. From the right-click menu, select \u0026ldquo;Create\u0026gt; Arbor\u0026gt; Behavior tree\u0026gt; Service C# Script\u0026rdquo;.\n\r  Enter the file name and confirm  Function to be called When you add the created Service to the Composite node or Action node, each function of the script will be called.\n OnAwake\nIt is called the first time the node becomes active. OnStart\nIt is called when the node becomes active. OnUpdate\nCalled each time the node is active. For details about the execution timing, see Behavior tree\u0026rsquo;s UpdateSettings.\nArbor Reference : BehaviourTree OnAbort\nCalled when the node is interrupted by the Decorator. OnEnd\nCalled when the node exits.  Call order \r  If more than one service is added to the node, it is called from the top in order. You can also use the callback method of MonoBehaviour other than OnEnable and OnDisable, but please be aware that Start() will be called after the first OnUpdate().  Declaring variables \r You can edit it in Arbor Editor by declaring a field with public or SerializedField attribute added to the created script.\n1 2 3 4 5 6 7 8 9 10 11 12  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor; using Arbor.BehaviourTree;[AddComponentMenu(\u0026#34;\u0026#34;)] public class TestService : Service { public string myName; // The rest is omitted. }    You can also use CalculatorSlot and Flexible classes as well as StateBehaviour.\n"
    },
    {
        "uri": "/manual/customize/dataslot.html",
        "title": "Customize Data Slot",
        "tags": [],
        "description": "",
        "summary": "This section explains how to create your own data slot.\nAs an example I will explain how to make data until you exchange data through simple player data creation.\nCreate PlayerData script file Create a script file.\n Select \u0026ldquo;Create\u0026gt; C # Script\u0026rdquo; from the Project window right-click menu. This time we will name PlayerData.  Write in PlayerData.cs as follows.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  using UnityEngine; using System.",
        "content": " This section explains how to create your own data slot.\nAs an example I will explain how to make data until you exchange data through simple player data creation.\nCreate PlayerData script file Create a script file.\n Select \u0026ldquo;Create\u0026gt; C # Script\u0026rdquo; from the Project window right-click menu. This time we will name PlayerData.  Write in PlayerData.cs as follows.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  using UnityEngine; using System.Collections; using Arbor;[System.Serializable] public class PlayerData { public int maxHP; public int hp; }[System.Serializable] public class OutputSlotPlayerData : OutputSlot\u0026lt;PlayerData\u0026gt; { }[System.Serializable] public class InputSlotPlayerData : InputSlot\u0026lt;PlayerData\u0026gt; { }    Code explanation Create PlayerData class This time we are simply creating a class with maximum HP and current HP.\nCreating the OutputSlotPlayerData class We are creating a class for outputting PlayerData class.\nAll processing is provided in OutputSlot\u0026lt;T\u0026gt;, so you do not need to write anything in particular.\nWe are preparing to avoid the Unity specification that the generic class can not be serialized.\nCreating the InputSlotPlayerData class We are creating a class to enter PlayerData class.\nSince processing necessary for InputSlot\u0026lt;T\u0026gt; is also prepared here, there is no need to describe contents in particular.\n"
    },
    {
        "uri": "/manual/customize/variable.html",
        "title": "Customizing parameters with Variable",
        "tags": [],
        "description": "",
        "summary": "This section explains how to register your own parameters in ParameterContainer.\nCreating a Variable script file Generate script with Variable Generator Create a script for your own parameters.\n Select \u0026ldquo;Create \u0026gt; Arbor \u0026gt; Variable C# Script\u0026rdquo; from the Project window right-click menu.\n\r  Enter the parameter class name in the \u0026ldquo;Variable Name\u0026rdquo; field of the Variale Generator window Create a script by pressing \u0026ldquo;Create\u0026rdquo; button.\n\r  If it is a name that can not be used, an error box will be displayed, so please correct the Variable Name.",
        "content": " This section explains how to register your own parameters in ParameterContainer.\nCreating a Variable script file Generate script with Variable Generator Create a script for your own parameters.\n Select \u0026ldquo;Create \u0026gt; Arbor \u0026gt; Variable C# Script\u0026rdquo; from the Project window right-click menu.\n\r  Enter the parameter class name in the \u0026ldquo;Variable Name\u0026rdquo; field of the Variale Generator window Create a script by pressing \u0026ldquo;Create\u0026rdquo; button.\n\r  If it is a name that can not be used, an error box will be displayed, so please correct the Variable Name. When the OpenEditor check box is checked, the script editor opens after pressing the \u0026ldquo;Create\u0026rdquo; button.   Example of creation Script example created by entering \u0026ldquo;EnableInfo\u0026rdquo; in \u0026ldquo;Variable Name\u0026rdquo; and pressing \u0026ldquo;Create\u0026rdquo; button 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[System.Serializable] public class EnemyInfo { // Declare Serialize Fields }[System.Serializable] public class FlexibleEnemyInfo : FlexibleField\u0026lt;EnemyInfo\u0026gt; { public FlexibleEnemyInfo(EnemyInfo value) : base(value) { } public FlexibleEnemyInfo(AnyParameterReference parameter) : base(parameter) { } public FlexibleEnemyInfo(InputSlotAny slot) : base(slot) { } public static explicit operator EnemyInfo(FlexibleEnemyInfo flexible) { return flexible.value; } public static explicit operator FlexibleEnemyInfo(EnemyInfo value) { return new FlexibleEnemyInfo(value); } }[System.Serializable] public class InputSlotEnemyInfo : InputSlot\u0026lt;EnemyInfo\u0026gt; { }[System.Serializable] public class OutputSlotEnemyInfo : OutputSlot\u0026lt;EnemyInfo\u0026gt; { }[AddComponentMenu(\u0026#34;\u0026#34;)] public class EnemyInfoVariable : Variable\u0026lt;EnemyInfo\u0026gt; { }  \nCommentary  EnemyInfo\nA class of parameters to make by yourself.\nBy adding a field for serialization, you can set your own parameters with ParameterContainer. FlexibleEnemyInfo\nClass for making it possible to refer to by switching between Constant, Parameter, and Calculator. InputSlotEnemyInfo\nClass for the input slot of EnemyInfo. OutputSlotEnemyInfo\nClass for EnemyInfo output slot. EnemyInfoVariable\nVariable class to register to ParameterContainer.\nThe class name and the script file name must match.  Add field Add a field to the generated script.\nAs an example, let\u0026rsquo;s add some fields to EnemyInfo.\n1 2 3 4 5 6 7  [System.Serializable] public class EnemyInfo { // Declare Serialize Fields \tpublic string displayName; public Sprite icon; }   \nAddition to ParameterContainer Add the created Variable to ParameterContainer.\n Please create ParameterContainer in advance. Press the \u0026ldquo;+\u0026rdquo; button and select \u0026ldquo;Variable\u0026gt; Created Variable Name\u0026rdquo;.\n\r  Parameters are added\n\r   Reference to Variable parameter FlexibleField You can refer to it by giving StateBehaviour etc a class of Flexible + Variable Name defined in the generated script file.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)] public class EnemyInfoBehaviour : StateBehaviour { public FlexibleEnemyInfo enemyInfo; // Use this for enter state \tpublic override void OnStateBegin() { EnemyInfo value = enemyInfo.value; Debug.Log(value.displayName); } }   \r AnyParameterReference Use AnyParameterReference when referring directly to Parameter. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)] public class EnemyInfoBehaviour2 : StateBehaviour {[ClassExtends(typeof(EnemyInfo))] public AnyParameterReference enemyInfo = new AnyParameterReference(); // Use this for enter state \tpublic override void OnStateBegin() { Parameter enemyInfoParameter = enemyInfo.parameter; if (enemyInfoParameter != null) { EnemyInfo value = enemyInfoParameter.value as EnemyInfo; Debug.Log(value.displayName); } } }   \n\r "
    },
    {
        "uri": "/manual/behaviourtree.html",
        "title": "Behaviour Tree",
        "tags": [],
        "description": "",
        "summary": "What is a Behaviour Tree?  Behaviour tree is a tree structure for clarifying behaviour priorities and conditions and facilitating control. Let\u0026rsquo;s consider an enemy AI, for example.  It approaches if the distance between the enemy and the player is within 10 meters. Otherwise, it moves on a fixed route.  Behavior to approach the player can be said to have a high priority in comparison with the behavior of moving the fixed route.",
        "content": " What is a Behaviour Tree?  Behaviour tree is a tree structure for clarifying behaviour priorities and conditions and facilitating control. Let\u0026rsquo;s consider an enemy AI, for example.  It approaches if the distance between the enemy and the player is within 10 meters. Otherwise, it moves on a fixed route.  Behavior to approach the player can be said to have a high priority in comparison with the behavior of moving the fixed route. Temporarily assembling with Arbor\u0026rsquo;s Behaviour Tree will be as follows.\n\r (Commentary later)  The higher the priority of the node on the left, the lower the priority on the right. Also, by adding a script called Decorator to the node, we judge the condition and control the node to be executed.   Node component Root Node \r It is the first active node to run the behavior tree.\nYou can connect with one child node.\nComposite Node \r It has one or more child nodes and controls which child nodes to execute.\nHow to control is described in CompositeBehaviour script.\nYou can also add Decorator scripts and Service scripts to be described later.\nBuilt-in CompositeBehaviour  Selector\nExecute the child nodes in order from the left, terminate when the child node returns success , and return success.\nIf all child nodes return failure, it returns failure.\nIt is used when you want to find a successful node in order from the left and you do not want to run subsequent nodes. Sequencer\nExecute the child nodes in order from the left, terminate when the child node returns failure , and return a failure.\nIf all child nodes return success, success is returned.\nIt is used when you want to execute all as long as the child node returns success.  For reference on the built-in CompositeBehaviour see here.\nArbor Reference : Built-in CompositeBehaviour\nAction Node \r The node that performs the action.\nWrite the ActionBehaviour script to see what action to take.\nAlso, we can add Decorator script and Service script here as well.\nFor reference on built-in ActionBehavior see here.\nArbor Reference : Built-in ActionBehaviour\nFor creating ActionBehaviour script, click here.\nCustomize ActionBehaviour\nDecorator script \r It is a script that can perform condition judgment, suspend or interrupt an executing node, repeat judgment at the end timing.\nThis script is used in addition to composite nodes and action nodes.\nFor reference of the built-in Decorator, please refer to here.\nArbor Reference : Built-in Decorator\nFor creating Decorator script, click here.\nCustomize Decorator\nAbout AbortFlags Abort or interrupt target is controlled by AbortFlags.\n Self\nPerforms condition determination while its node or its subordinate node is executing.\nIf the result of condition judgment is false, abort and return failure to the parent node. LowerPriority\nA node with a lower priority on the right side than its own node performs a condition determination during execution.\nIf the result of the condition judgment is true, the currently executing node is suspended, and its own node becomes active.  It can be set by combining the above two flags.\nAlso, regardless of AbortFlags, condition judgment is performed once when its own node becomes active, and if it is false, it will be returned as a failure as it is.\nService script Service scripts can be added to composite nodes and action nodes, scripts that can do something while the node is active.\nAlthough it is not used in the example Behaviour Tree, For example, it is suitable for describing auxiliary processing such as adding a Service that stores the distance to the player in Parameter to the Selector node.\nFor creating Service script, click here.\nCustomize Service\nExplanation of execution Let\u0026rsquo;s take a look at the previous example again.\n\r  Beginning with the root node. With the Selector node, we will look for the successful node of the child node and execute it from left to right.\n\r  In the Agent Move To Transform node, since the ParameterCheck decorator has been added, judgment is made on the condition of Parameter.\n\r  As an example, the distance to the player is created assuming that it is stored in the Distance parameter.\n\r  Assuming Distance is 15, the ParameterCheck decorator returns false, so the Agent Move To Transform node fails and returns to Selector. The Selector executes the next Agent Move On Waypoint node because the Agent Move To Transform node failed.\n\r  The Agent Move On Waypoint action continues to run repeatedly unless an interruption or the like occurs because Type is set to Cycle. Let\u0026rsquo;s set the Distance parameter to 10 or less.\n\r  Agent Move To Transform interrupts the current node because it matches the ParameterCheck condition of the node.\n\r  Again by making the Distance parameter greater than 10 you can see that the Agent Move To Transform node is interrupted and the Agent Move On Waypoint node becomes active.\n\r How the active node changes by Distance parameter  As you can see, the execution priority gets lower as going to the right, and you can see that interrupts etc. can be done by Decorator of the node with high priority.\nEven if it is a simple example like this time, even a finite state machine can be assembled without making it particularly complicated,\nIn the case where the number of states is large and the condition is likely to be complicated, it becomes possible to combine state transitions that are easier to maintain because the condition tree can be described on the execution node side without the transition lines crossing in the behavior tree in the behavior tree.\nHow to use Behaviour Tree For details on how to use, please click here\nHow to use Behaviour Tree\nScript customization For customization with various scripts, please see here\nCustomize\n"
    },
    {
        "uri": "/manual/customize/behaviourattribute.html",
        "title": "Behaviour attributes",
        "tags": [],
        "description": "",
        "summary": "Some scripts such as StateBehaviour, Calculator, and ActionBehaviour have several usable attributes.\nTarget scripts The scripts that can be used for the attributes introduced below are as follows.\n StateBehaviour Calculator ActionBehaviour Decorator Service  AddBehaviourMenu Attribute that can specify the path in the add behaviour menu.\nScript Reference : AddBehaviourMenu\nExample Script Create a script named TestAddBehaviourMenu and write the following code.\n1 2 3 4 5 6 7 8 9 10  using UnityEngine; using System.",
        "content": " Some scripts such as StateBehaviour, Calculator, and ActionBehaviour have several usable attributes.\nTarget scripts The scripts that can be used for the attributes introduced below are as follows.\n StateBehaviour Calculator ActionBehaviour Decorator Service  AddBehaviourMenu Attribute that can specify the path in the add behaviour menu.\nScript Reference : AddBehaviourMenu\nExample Script Create a script named TestAddBehaviourMenu and write the following code.\n1 2 3 4 5 6 7 8 9 10  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[AddBehaviourMenu(\u0026#34;ManualExample/TestAddBehaviourMenu\u0026#34;)] [AddComponentMenu(\u0026#34;\u0026#34;)] public class TestAddBehaviourMenu : StateBehaviour { }    Operation check Click \u0026ldquo;Add Behavior\u0026rdquo; of the state and check it in the add behaviour menu window.\n\r HideBehaviour Attribute to hide in add behaviour menu.\nScript Reference : HideBehaviour\nExample Script Create a script named TestHideBehaviour and write the following code.\n1 2 3 4 5 6 7 8 9 10  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[HideBehaviour] [AddComponentMenu(\u0026#34;\u0026#34;)] public class TestHideBehaviour : StateBehaviour { }    Operation check Click \u0026ldquo;Add Behaviour\u0026rdquo; in the state and check that it is hidden in the behavior added menu window.\n\r If not specified, there should be only one TestHideBehaviour in the Scripts group, but since the TestHideBehaviour is hidden, the Scripts group is no longer displayed.\nBehaviourTitle Specify the name displayed in the behaviour\u0026rsquo;s title bar.\nScript Reference : BehaviourTitle\nExample Script Create a script named TestBehaviourTitle and write the following code.\n1 2 3 4 5 6 7 8 9 10  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[BehaviourTitle(\u0026#34;Manual Example\u0026#34;)] [AddComponentMenu(\u0026#34;\u0026#34;)] public class TestBehaviourTitle : StateBehaviour { }   Operation check Select \u0026ldquo;Scripts / TestBehaviourTitle\u0026rdquo; from the \u0026ldquo;Add Behaviour\u0026rdquo; of the state and check the title bar of the behavior.\n\r BehaviourHelp This attribute specifies the URL to be opened by clicking the help button of the behaviour title bar.\nScript Reference : BehaviourHelp\nExample Script Create a script named TestBehaviourHelp and write the following code.\n1 2 3 4 5 6 7 8 9 10  using UnityEngine; using System.Collections; using System.Collections.Generic; using Arbor;[BehaviourHelp(\u0026#34;https://www.assetstore.unity3d.com/#!/content/112239\u0026#34;)] [AddComponentMenu(\u0026#34;\u0026#34;)] public class TestBehaviourHelp : StateBehaviour { }    Operation check Select \u0026ldquo;Scripts / TestBehaviourHelp\u0026rdquo; from \u0026ldquo;add behavior\u0026rdquo; of state and click the help button displayed in the behaviour title bar.\n\r "
    },
    {
        "uri": "/manual/parametercontainer.html",
        "title": "ParameterContainer",
        "tags": [],
        "description": "",
        "summary": "ParameterContainer is a component used to perform data sharing etc. between graphs.\nAdd ParameterContainer to GameObject and set various types of parameters.\nAdd ParameterContainer Create GameObject Click Hierarchy\u0026rsquo;s Create button, or \u0026ldquo;Create\u0026rdquo; in the right-clicked menu,\nIf you select \u0026ldquo;Arbor \u0026gt; ParameterContainer\u0026rdquo;, you can create a GameObject with ParameterContainer added.\n\r Add to GameObject  Select the GameObject you want to apply. Select \u0026ldquo;Menu \u0026gt; Component \u0026gt; Arbor \u0026gt; ParameterContainer\u0026rdquo;.",
        "content": " ParameterContainer is a component used to perform data sharing etc. between graphs.\nAdd ParameterContainer to GameObject and set various types of parameters.\nAdd ParameterContainer Create GameObject Click Hierarchy\u0026rsquo;s Create button, or \u0026ldquo;Create\u0026rdquo; in the right-clicked menu,\nIf you select \u0026ldquo;Arbor \u0026gt; ParameterContainer\u0026rdquo;, you can create a GameObject with ParameterContainer added.\n\r Add to GameObject  Select the GameObject you want to apply. Select \u0026ldquo;Menu \u0026gt; Component \u0026gt; Arbor \u0026gt; ParameterContainer\u0026rdquo;. \r  Or choose Inspector\u0026rsquo;s \u0026ldquo;Add Component button \u0026gt; Arbor \u0026gt; ParameterContainer\u0026rdquo;.\n\r   Edit ParameterContainer Add Parameter  Click the + button at the lower right of \u0026ldquo;Parameters\u0026rdquo;.\nSelect the type you want to add.   \r Edit Parameter  Select name, value and edit.   \r Delete Parameter  Select the parameter and click the - button.  \r Type of parameter    Type Inspector Description     Int \r  Signed 32 bit integer   Float \r  Signed 32 bit floating point number   Bool \r  Boolean   GameObject \r  Reference to GameObject   String \r  String   Vector2 \r  2 dimensional vector   Vector3 \r  3 dimensional vector   Quaternion \r  Quaternion   Rect \r  2D rectangle   Bounds \r  An axis aligned bounding box.   Color \r  Color   Transform \r  Reference to Transform component   RectTransform \r  Reference to RectTransform component   Rigidbody \r  Reference to Rigidbody component   Rigidbody2D \r  Reference to Rigidbody2D component   Component \r  Referece to Component (typable)   Long \r  Signed 64 bit integer   Variable  Parameter type that can be built by you    Abount Variable With Variable you can create your own parameters.\nFor details, see \u0026ldquo;Customizing parameters with Variable\u0026rdquo;.\nCustomizing parameters with Variable\nHow to reference parameters ParameterReference By declaring the ParameterReference association class in the field, you can refer to the parameter.\nExample script 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  using UnityEngine; using Arbor; public class TestParameterReference : MonoBehaviour { public IntParameterReference intParameter; void Start () { if (intParameter.parameter != null) { Debug.Log(intParameter.parameter.name + \u0026#34; : \u0026#34; + intParameter.parameter.intValue); } } }    When you add this script to GameObject, it becomes as follows.\n\r    Field Name Description     Container Reference ParameterContainer   Parameter Parameters to be referred to    For the getted Parameter, refer to the script reference.\nScript Reference : Parameter\nParameterReference related class  IntParameterReference FloatParameterReference BoolParameterReference GameObjectParameterReference StringParameterReference Vector2ParameterReference Vector3ParameterReference QuaternionParameterReference RectParameterReference BoundsParameterReference ColorParameterReference TransformParameterReference RectTransformParameterReference RigidbodyParameterReference Rigidbody2DParameterReference ComponentParameterReference LongParameterReference AnyParameterReference\n(Used to refer to Variable parameter)  FlexibleField Using the FlexibleField association class, you can select and reference constant values, parameter reference, or data flow input.\nExample script 1 2 3 4 5 6 7 8 9 10 11 12 13 14  using UnityEngine; using Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)] public class TestFlexibleFieldBehaviour : StateBehaviour { public FlexibleInt flexibleInt; public override void OnStateBegin() { Debug.Log(\u0026#34;flexibleInt : \u0026#34; + flexibleInt.value); } }    When this script is added to the state of ArborFSM, it becomes as follows.\n\r You can change the reference method by clicking the button at the right end of the field.\n\r By selecting \u0026ldquo;Parameter\u0026rdquo;, you can refer to it like Parameter Reference.\n\r FlexibleField related class  FlexibleInt FlexibleFloat FlexibleBool FlexibleGameObject FlexibleString FlexibleVector2 FlexibleVector3 FlexibleQuaternion FlexibleRect FlexibleBounds FlexibleColor FlexibleTransform FlexibleRectTransform FlexibleRigidbody FlexibleRigidbody2D FlexibleComponent FlexibleLong FlexibleField\n(Used to refer to Variable parameter)  Type of constraints that reference AnyParameterReference and ComponentParameterReference can constrain referencing types by specifying attributes.\nExample script 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42  using UnityEngine; using Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)] public class TestConstraintReferenceBehaviour : StateBehaviour {[ClassExtends(typeof(AudioSource))] public ComponentParameterReference audioSource = new ComponentParameterReference();[ClassExtends(typeof(AudioSourceCurveType))] public AnyParameterReference audioSourceCurveType = new AnyParameterReference(); public FlexibleAnimationCurve curve = new FlexibleAnimationCurve(AnimationCurve.Linear(0, 0, 1, 1)); // Use this for enter state \tpublic override void OnStateBegin() { AudioSource source_ = null; Parameter audioSourceParameter = audioSource.parameter; if (audioSourceParameter != null) { source_ = audioSourceParameter.objectReferenceValue as AudioSource; } AudioSourceCurveType curveType_ = AudioSourceCurveType.CustomRolloff; Parameter curveTypeParameter = audioSourceCurveType.parameter; if (curveTypeParameter != null) { curveTypeParameter.GetVariable\u0026lt;AudioSourceCurveType\u0026gt;(ref curveType_); } AnimationCurve curve_ = curve.value; if (source_ == null) { return; } source_.SetCustomCurve(curveType_, curve_); } }    Example of adding a script\n\r Example ParameterContainer\n\r (AudioSourceCurveType created Variable and registered it)\nAvailable Attributes    Class Attributes     AnyParameterReference Class derived from ClassTypeConstraintAttributeSlotTypeAttribute   ComponentParameterReference Class derived from ClassTypeConstraintAttributeSlotTypeAttributeIt is also constrained to the Component class.   FlexibleComponent Class derived from ClassTypeConstraintAttributeSlotTypeAttributeIt is also constrained to the Component class.    About GlobalParameterContainer GlobalParameterContainer is a component to use when there are parameters that you want to keep even if you change the scene.\nAddition of GlobalParameterContainer  Choose you want to apply GameObject Select \u0026ldquo;menu\u0026gt; Component\u0026gt; Arbor\u0026gt; GlobalParameterContainer\u0026rdquo;. \r  Alternatively, select the \u0026ldquo;Add Component button\u0026gt; Arbor\u0026gt; GlobalParameterContainer\u0026rdquo; of Inspector.\n\r  Also, you can create a GameObject with GlobalParameterContainer attached from Hierarchy\u0026rsquo;s Create button \u0026ldquo;Arbor\u0026gt; GlobalParameterContainer\u0026rdquo;.\n\r   Setting GlobalParameterContainer  ParameterContainer with parameters to be shared between scenes is created in advance and Prefabized.\n\r  Select GameObject to which GlobalParameterContainer is added. Specify Prefab of ParameterContainer created in Prefab of Inspector.\n\r   Reference parameters via GlobalParameterContainer By specifying GlobalParameterContainer in the Container field of ParameterReference, parameters can be referred.\nAssociated built-in script We will introduce some of the built-in script.\nStateBehaviour    Class Attribute     CalcParameter Calculate and change the value of Parameter.   SetBoolParameterFromUIToggle Set the value of Toggle to Parameter.   SetFloatParameterFromUISlider Set the value of Slider to Parameter.   ParameterTransition It determines the value of Parameter and makes a transition.    Decorator    Class Attribute     ParameterCheck Check Parameter   ParameterConditionalLoop Loop by Parameter condition.    In addition, there are many built-in scripts that get values using FlexibleField, so please refer to the reference.\nArbor Reference\n"
    },
    {
        "uri": "/manual/dataflow.html",
        "title": "Data flow",
        "tags": [],
        "description": "",
        "summary": "Arbor has a function to pass data between nodes of the graph.\nData flow Connecting data input / output slots allows you to take advantage of data flow.\nExample In the example using the built-in script, the following data flow can be easily assembled.\n\r  InstantiateGameObject instantiated prefab. Output instantiated GameObject. Get the Rigidbody component with Rigidbody.Get. Add force with AddForceRigidbody to the received Rigidbody.  Data flow can be used in BehaviourTree as well.",
        "content": " Arbor has a function to pass data between nodes of the graph.\nData flow Connecting data input / output slots allows you to take advantage of data flow.\nExample In the example using the built-in script, the following data flow can be easily assembled.\n\r  InstantiateGameObject instantiated prefab. Output instantiated GameObject. Get the Rigidbody component with Rigidbody.Get. Add force with AddForceRigidbody to the received Rigidbody.  Data flow can be used in BehaviourTree as well.\nReference link  StateBehaviour : InstantiateGameObject StateBehaviour : AddForceRigidbody Calculator : Rigidbody.Get  How to use data slots Connect  Drag the data slot field. Drop into a pair of slots of the same type.  \r Diconnect  Right click on the connection line. Select \u0026ldquo;Disconnect\u0026rdquo;  \r FlexibleField In the fields of the FlexibleField related class, you can select multiple reference methods, so you can flexibly set values.\nSelection type  Click the button next to the field. Select type.  \r Types \r    Item Contents     Constant Constant value.   Parameter Refer to parameters. For parameters, see theManual : ParameterContainer.   Random(Numeric type only) Randomly obtain from the specified range.   DataSlot Input slot of data.    Reroute node Using the reroute node makes it easier to organize the data flow lines.\nCreate a reroute node and connect  Drag the data slot field. Drop at the position in the graph where you want to create a reroute node Select \u0026ldquo;reroute\u0026rdquo; in the menu  \r Insert reroute node  Right-click the position where you want to create a reroute node on the connection line. Select \u0026ldquo;reroute\u0026rdquo; in the menu.  \r Change direction of reroute node  Select reroute node to change direction Drag the direction icon to change it.  \r About connection line Show Value If you hover over the connection line while playing, the current value will be displayed.\n\r Also, if you select \u0026ldquo;Always show data value\u0026rdquo; from the right-click menu of the connection line, it will be displayed even without mouseover.\nIf you want to display the values of all the connection lines, selecting \u0026ldquo;Show all data values\u0026rdquo; from the \u0026ldquo;Debug\u0026rdquo; menu on the toolbar will toggle.\n\r Right click menu Right-click on the connection line to display the menu.\n\r    Item Contents     Always show data values Always show data values when playing.   Reroute Insert the reroute node.   Disconnect Disconnect it.    About calculator node A calculator node is a node for calculation with data input / output.\nYou can do numerical calculations and access fields for output.\nCreating a calculator node  Right-click the appropriate position of Arbor Editor. Click on the \u0026ldquo;Create Calculator\u0026rdquo;. Select the calculator node you want to create from the list.\n\r   Built-in Calculator Calculator nodes that are used frequently are prepared from the beginning.\nArbor Reference : Calculator Reference\nScripting Output slot Data can be output by declaring an output slot such as OutpotSlotInt.\nExample script Create a TestOutputSlotBehaviour script file and write the following code.\n1 2 3 4 5 6 7 8 9 10 11 12 13  using UnityEngine; using Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)] public class TestOutputSlotBehaviour : StateBehaviour { public OutputSlotInt outputSlot; public override void OnStateBegin() { outputSlot.SetValue(Random.Range(100, 200)); } }   When this script is added to the state of ArborFSM, it becomes as follows.\n\r 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.\nExample script Create a TestInputSlotBehaviour script file and write the following code.\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  using UnityEngine; using Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)] public class TestInputSlotBehaviour : StateBehaviour { public InputSlotInt inputSlot; public override void OnStateBegin() { int intValue = 0; if (inputSlot.GetValue(ref intValue)) { Debug.Log(\u0026#34;inputSlot : \u0026#34; + intValue); } else { Debug.LogWarning(\u0026#34;inputSlot : not connected.\u0026#34;); } } }    When this script is added to the state of ArborFSM, it becomes as follows.\n\r 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.\nExample script Create a TestFlexibleFieldBehaviour script file and write the following code.\n1 2 3 4 5 6 7 8 9 10 11 12 13  using UnityEngine; using Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)] public class TestFlexibleFieldBehaviour : StateBehaviour { public FlexibleInt flexibleInt; public override void OnStateBegin() { Debug.Log(\u0026#34;flexibleInt : \u0026#34; + flexibleInt.value); } }    Add this script to the ArborFSM state and set the reference type to Calculator as follows.\n\r FlexibleField related class  FlexibleInt FlexibleFloat FlexibleBool FlexibleGameObject FlexibleString FlexibleVector2 FlexibleVector3 FlexibleQuaternion FlexibleRect FlexibleBounds FlexibleColor FlexibleTransform FlexibleRectTransform FlexibleRigidbody FlexibleRigidbody2D FlexibleComponent FlexibleLong FlexibleField\n(Inherit and use it)  Type constraints of slots \r For InputSlotAny and InputSlotComponent, you can specify type constraints with attributes.\nExample script 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36  using UnityEngine; using Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)] public class TestConstraintSlotBehaviour : StateBehaviour {[ClassExtends(typeof(AudioSource))] public InputSlotComponent audioSource = new InputSlotComponent();[ClassExtends(typeof(AudioClip))] public InputSlotUnityObject audioClip = new InputSlotUnityObject();[ClassExtends(typeof(AudioSourceCurveType))] public InputSlotAny audioSourceCurveType = new InputSlotAny(); public FlexibleAnimationCurve curve = new FlexibleAnimationCurve(AnimationCurve.Linear(0, 0, 1, 1)); public override void OnStateBegin() { AudioSource source_ = audioSource.GetValue\u0026lt;AudioSource\u0026gt;(); AudioClip clip_ = audioClip.GetValue\u0026lt;AudioClip\u0026gt;(); AudioSourceCurveType curveType_ = AudioSourceCurveType.CustomRolloff; audioSourceCurveType.GetValue\u0026lt;AudioSourceCurveType\u0026gt;(ref curveType_); AnimationCurve curve_ = curve.value; if (source_ == null || clip_ == null) { return; } source_.clip = clip_; source_.SetCustomCurve(curveType_, curve_); } }    Available Attributes    Class Attribute     OutputSlotAny SlotTypeAttribute   InputSlotAny Class derived from ClassTypeConstraintAttributeSlotTypeAttribute   InputSlotComponent Class derived from ClassTypeConstraintAttributeSlotTypeAttributeIt is also constrained to the Component class.   InputSlotUnityObject Class derived from ClassTypeConstraintAttributeSlotTypeAttributeIt is also constrained to the UnityEngine.Object class.   FlexibleComponent Class derived from ClassTypeConstraintAttributeSlotTypeAttributeIt is also constrained to the Component class.    Customize Create data slot You can also create a data slot of your own class.\nFor details, refer to \u0026ldquo;Customize Data Slot\u0026rdquo;.\nManual : Customize Data Slot\nVariable If you also create a parameter, you can create it easily using Variable Generator.\nFor details, see \u0026ldquo;Customizing parameters with Variable\u0026rdquo;.\nManual : Customizing parameters with Variable\nCalculator node You can also create scripts to use for calculator nodes.\nFor details, see \u0026ldquo;Customize Calculator\u0026rdquo;.\nManual : Customize Calculator\n"
    },
    {
        "uri": "/manual/customize.html",
        "title": "Customize",
        "tags": [],
        "description": "",
        "summary": "Arbor can be freely customized by writing a script.\n Customize StateBehaviour \nThis section explains customization of scripts assigned to states. Customize Calculator\nThis section describes customization of scripts assigned to calculator nodes. Customize Data Slot\nThis section explains the customization of Slot which exchanges data between state and operation nodes. Customizing parameters with Variable \nI will explain how to make my own parameters. Behaviour attributes\nThis section explains the attributes that can be set in the behavior script.",
        "content": "Arbor can be freely customized by writing a script.\n Customize StateBehaviour \nThis section explains customization of scripts assigned to states. Customize Calculator\nThis section describes customization of scripts assigned to calculator nodes. Customize Data Slot\nThis section explains the customization of Slot which exchanges data between state and operation nodes. Customizing parameters with Variable \nI will explain how to make my own parameters. Behaviour attributes\nThis section explains the attributes that can be set in the behavior script.  "
    },
    {
        "uri": "/",
        "title": "Home",
        "tags": [],
        "description": "",
        "summary": "Let\u0026rsquo;s visually create state transition diagrams such as game progress and AI using Arbor.\nArbor can be purchased from the Unity Asset Store.\n Arbor Documentation provides support to learn how to use Arbor.\nYou can read the manual as a whole, or you can use it only as a reference as a reference.\nIf you are using Arbor for the first time, please read Manual : Getting Started.",
        "content": " Let\u0026rsquo;s visually create state transition diagrams such as game progress and AI using Arbor.\nArbor can be purchased from the Unity Asset Store.\n Arbor Documentation provides support to learn how to use Arbor.\nYou can read the manual as a whole, or you can use it only as a reference as a reference.\nIf you are using Arbor for the first time, please read Manual : Getting Started.\nDocument  Manual\nYou can learn about the main usage of Arbor. Arbor Reference\nIt is a reference about components that can be used in Arbor. Script Reference\nIt is a reference for a script that can be used in the Arbor.  Further sources of information  Tutorial\nYou can learn how to use Arbor in practical form. Arbor Forum\nAsk questions about how to use or post feature requests.  "
    },
    {
        "uri": "/search.html",
        "title": "Search",
        "tags": [],
        "description": "",
        "summary": "",
        "content": ""
    },
    {
        "uri": "/manual/statemachine/howtouse.html",
        "title": "How to use State Machine",
        "tags": [],
        "description": "",
        "summary": "Adding ArborFSM component The ArborFSM component is required to use the state machine.\nThere are the following methods for adding ArborFSM components.\nCreate button in Hierarchy window  Click the Create button in the Hierarchy window or right click in the window Select \u0026ldquo;Arbor / ArborFSM\u0026rdquo; A GameObject with ArborFSM is created.  \r ArborEditor window toolbar  Open the ArborEditor window and click the \u0026ldquo;Create\u0026rdquo; button on the toolbar Select ArborFSM A GameObject with ArborFSM is created.",
        "content": " Adding ArborFSM component The ArborFSM component is required to use the state machine.\nThere are the following methods for adding ArborFSM components.\nCreate button in Hierarchy window  Click the Create button in the Hierarchy window or right click in the window Select \u0026ldquo;Arbor / ArborFSM\u0026rdquo; A GameObject with ArborFSM is created.  \r ArborEditor window toolbar  Open the ArborEditor window and click the \u0026ldquo;Create\u0026rdquo; button on the toolbar Select ArborFSM A GameObject with ArborFSM is created.  \r Unselected menu of ArborEditor window  Open the ArborEditor window and click the \u0026ldquo;Create ArborFSM\u0026rdquo; button in the menu displayed when graph is not selected A GameObject with ArborFSM is created.  \r Inspector window \u0026ldquo;Add Component\u0026rdquo; button  Select the GameObject you want to add ArborFSM in the Hierarchy window Click the \u0026ldquo;Add Component\u0026rdquo; button in the Inspector window Select \u0026ldquo;Arbor / ArborFSM\u0026rdquo;. ArborFSM is added to GameObject.  \r Open ArborFSM graph in Arbor Editor window To edit ArborFSM you need to open the ArborFSM graph in the Arbor Editor window.\n In the Hierarchy window, select GameObject with ArborFSM component. Click \u0026ldquo;Open Editor\u0026rdquo; button of ArborFSM component editor in Inspector window.  \r Also, if the Arbor Editor window has already been opened, it will switch if you select GameObjet with ArborFSM component in the Hierarchy window.\nCreate State  Right-click the position of the graph where you want to create a state. Select \u0026ldquo;Create State\u0026rdquo; in the menu. Input the name of the state and decide with the Enter key.  \r Create Resident State  Right-click the position of the graph where you want to create a resident state. Select \u0026ldquo;Create Resident State\u0026rdquo; in the menu. Input the name of the state and decide with the Enter key.  \r Delete State  Select the node you want to delete Select \u0026ldquo;Delete\u0026rdquo; from the right-click menu in the graph, or press the Delete key  \r Set to start state  Click the gear icon or right click in the node header section. Select \u0026ldquo;Set Start State\u0026rdquo;.  \r Add Behaviour You need to add a StateBehaviour in order for the state to work.\n Click the gear icon or right click in the node header section. Select \u0026ldquo;Add Behaviour\u0026rdquo; Select the StateBehaviour you want to add from the StateBehaviour selection menu.  \r Insert Behaviour To insert StateBehaviour in an arbitrary position, add it from the \u0026ldquo;Insert Behaviour\u0026rdquo; button.\n Mouse over near the center of the separator between behaviors in the state. Click the displayed \u0026ldquo;Insert Behaviour\u0026rdquo; button. Select \u0026ldquo;Add Behaviour\u0026rdquo; Select the StateBehaviour you want to add from the StateBehaviour selection menu.  \r Drag Behaviour Move By dragging and dropping StateBehaviour, you can switch the order of behavior and move to another node.\n Drag the title bar of behaviour Drop to the other node on the same node or to another node  \r Copy Hold Ctrl (Win) / Option (Mac) while dragging and dropping it to copy.\n Drag the title bar of behaviour Hold Ctrl (Win) / Option (Mac) and drop it to another position on the same node or to another node  \r Delete Behaviour  Click the gear icon or right click in the title bar. Select \u0026ldquo;Delete\u0026rdquo; from the menu  \r Connect State Connect to existing node  Drag the StateLink field in StateBehaviour Drop to the connected state  \r Connect And Create a new state  Drag the StateLink field in StateBehaviour Drop at the position in the graph where you want to create the state Select \u0026ldquo;Create State\u0026rdquo; in the menu. Input the name of the state and decide with the Enter key.  \r Connect Reroute Node Connect And Create a new Reroute node  Drag the StateLink field in StateBehaviour Drop at the position in the graph where you want to create the state Select \u0026ldquo;Reroute\u0026rdquo; in the menu.  \r Insert Reroute node  Right-click the position where you want to create a reroute node on the connection line. Select \u0026ldquo;Reroute\u0026rdquo; in the menu.  \r Change direction of reroute node  Select reroute node to change direction Drag the direction icon to change it.  \r Disconnect State  Right-click on the connection line you want to disconnect Select \u0026ldquo;Disconnect\u0026rdquo; from the menu  \r StateLink settings Click on the StateLink gear icon to display the setting window.\n\r    Item Contens     Name Name of StateLink. When inputting, the display name of the StateLink field is changed.   Transition Timing Setting of transition timing.   Line Color Connection line color    TransitionTiming    Item Contens     Late Update Overwrite Reserve to transition when LateUpdate.If the transition is already reserved in the same frame, overwrite it.   Immediate Transit instantaneously at transition call.If the transition is looping, there is a possibility of infinite looping, so use with caution.   Late Update Dont Overwrite Reserve to transition when LateUpdate. (Default)If the transition is already reserved within the same frame, do not overwrite it.    About each menu Graph menu Right-click the graph to display the menu.\n\r    Item Contens     Create State Create a normal state.   Create Resident State Create a resident state.   Create Calculator Create a Calculator node.   Create Group Create a group.   Create Comment Create a comment.   Cut Cut the selected nodes.   Copy Copy the selected nodes.   Paste Paste the copied nodes.   Duplicate Duplicate the selected nodes.   Delete Delete the selected nodes.   Expand All Expand all the selected node\u0026rsquo;s behaviour.   Collapse All Collapse all the selected node\u0026rsquo;s behaviour.    State menu Right-click the header part of the state or click the gear icon to display the menu.\n\r    Item Contens     Rename Change the name of the state.   Show Comment Switch the display of the node comment field.\r    Set Start State Set it to the start state.   Breakpoint Toggle breakpoint setting.\r    Add Behaviour Add StateBehaviour.   Paste Behaviour Paste the copied StateBehaviour.   Expand all Expand all the behaviors added to the node.   Collapse all Collapse all the behaviors added to the node.   Cut Cut the node.   Copy Copy the node.   Duplicate Duplicate the node.   Delete Delete the node.   Transition (Valid only during play) If you select while playing, it forcibly transits.    StateBehaviour menu Right-click the title bar of StateBehaviour or click the gear icon to display the menu.\n\r    Item Contens     Move Up Move the order up.   Move Down Move the order down.   Copy Copy the StateBehaviour.   Paste Overwrite the copied StateBehaviour (valid only for the same type)   Delete Delete the StateBehaviour.   Edit Script Open the script editor.    Connection line right click menu Right-click on the connection line to display the menu.\n\r    Item Contens     Go to Previous State Scroll to the state of the transition source.   Go to Next State Scroll to the state of the transition destination.   Go to Previous Node Scroll to the previous node (displayed only if there is a reroute node)   Go to Next Node Scroll to the next node (displayed only if there is a reroute node)   Reroute Create a reroute node at the clicked position.   Disconnect Disconnect it.   Settings Opens the StateLink settings window.    Debug menu Click on the \u0026ldquo;Debug\u0026rdquo; button on the toolbar to display it.\n\r    Item Contens     Show all data values Change to show the current value of all of the data line.   Hide all data values Change to hide the current value of all of the data line.   Set Breakpoints Sets the breakpoint of the selected states.   Release Breakpoints Releases the breakpoint in the selected states.   Release all Breakpoints Release breakpoints of all states.   Clear Count (Valid only during play) Change the state transition count to 0.    "
    },
    {
        "uri": "/manual.html",
        "title": "Manual",
        "tags": [],
        "description": "",
        "summary": "Here Ask me how to use and detailed reference for Arbor. Please more information, see from the following link.\n Getting Started\nFor those who want to use for the first time Arbor You are a basic overview and operation. ArborEditor window\nI explains the ArborEditor window. StateMachine\nI explain StateMachine. BehaviourTree \nI explain BehaviourTree added from Arbor 3. ParameterContainer\nI explain ParameterContainer. Data flow\nI will explain passing data by data slot.",
        "content": "Here Ask me how to use and detailed reference for Arbor. Please more information, see from the following link.\n Getting Started\nFor those who want to use for the first time Arbor You are a basic overview and operation. ArborEditor window\nI explains the ArborEditor window. StateMachine\nI explain StateMachine. BehaviourTree \nI explain BehaviourTree added from Arbor 3. ParameterContainer\nI explain ParameterContainer. Data flow\nI will explain passing data by data slot. Customize\nI will explain how to customize using scripts. Arbor Reference\nReference on main Component, built-in Behavior, built-in Calculator Script Reference\nThe reference for script  "
    },
    {
        "uri": "/categories.html",
        "title": "Categories",
        "tags": [],
        "description": "",
        "summary": "",
        "content": ""
    },
    {
        "uri": "/tags.html",
        "title": "Tags",
        "tags": [],
        "description": "",
        "summary": "",
        "content": ""
    }
];