var searchIndex = [
    
    {
        "uri": "/manual/extra/package.html",
        "title": "Use with PackageManager",
        "tags": [],
        "description": "",
        "summary": "Describes how to use Arbor from PackageManager.\nInstallation procedure  Copy Assets/Plugins/Arbor folder to any folder\n（Here, the placed Arbor folder called the Arbor package folder）\n Register in PackageManager. There are the following ways to register.\n Registration in PackageManager window  Open PackageManager window and select \u0026ldquo;Add package from disk \u0026hellip;\u0026rdquo; from + button. Select package.json in the Arbor package folder.  Direct change of manifest.json  Open {project folder}/Packages/manifest.",
        "content": " Describes how to use Arbor from PackageManager.\nInstallation procedure  Copy Assets/Plugins/Arbor folder to any folder\n（Here, the placed Arbor folder called the Arbor package folder）\n Register in PackageManager. There are the following ways to register.\n Registration in PackageManager window  Open PackageManager window and select \u0026ldquo;Add package from disk \u0026hellip;\u0026rdquo; from + button. Select package.json in the Arbor package folder.  Direct change of manifest.json  Open {project folder}/Packages/manifest.json in code editor Add \u0026ldquo;com.caitsithware.arbor\u0026rdquo; to \u0026ldquo;dependencies\u0026rdquo; as below    { \u0026#34;dependencies\u0026#34;: { \u0026#34;{Other package}\u0026#34; : \u0026#34;{Other package}\u0026#34;, \u0026#34;com.caitsithware.arbor\u0026#34;: \u0026#34;file:{Arbor package folder path}\u0026#34; } }  When updating, delete the Arbor package folder once and relocate the latest Arbor folder, or arrange the Arbor package folder separately for each version.  Notes  If unintended behavior or exceptions occur in ArborEditor immediately after installation, please reopen the project once.\n If you change the location of Arbor package folder after registering to PackageManager, it is necessary to redo \u0026ldquo;Installation procedure 2.\u0026rdquo;\n About version control\n If you register from PackageManager window, please note that the absolute path is written to manifest.json.\nPlace the Arbor package folder in repository management, and set its relative path in manifest.json. PackageManager also supports git, but the act of publishing this asset to a public git server is a violation of the EULA.\nIf you want to create a repository for packages on git, set the repository to private and ask for access using features such as personal access tokens.  For more information about PackageManager, refer to Unity Manual: PackageManager.\n  "
    },
    {
        "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 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.    Reroute Node You can use the reroute node to bundle the state connection lines and change the direction.\nConnect 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  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  Select reroute node to change direction Drag the direction icon to change it.  \r Delete while keeping connection  Right click on the reroute node Select \u0026ldquo;Delete (Keep Connection)\u0026rdquo;.  \r "
    },
    {
        "uri": "/manual/arboreditor/nodes.html",
        "title": "Nodes common to graphs",
        "tags": [],
        "description": "",
        "summary": "Comment node \r It is a node for leaving comments.\nHow to create  Right-click where you want to create a comment node. Select \u0026ldquo;Create Comment\u0026rdquo;.  \r Group node \r It is a node for grouping multiple nodes.\nHow to create  Right-click where you want to create a group node. Select \u0026ldquo;Create Group\u0026rdquo;.  \r Auto Alignment This function automatically adjusts the position in the vertical or horizontal direction so that the nodes in the group node do not overlap.",
        "content": " Comment node \r It is a node for leaving comments.\nHow to create  Right-click where you want to create a comment node. Select \u0026ldquo;Create Comment\u0026rdquo;.  \r Group node \r It is a node for grouping multiple nodes.\nHow to create  Right-click where you want to create a group node. Select \u0026ldquo;Create Group\u0026rdquo;.  \r Auto Alignment This function automatically adjusts the position in the vertical or horizontal direction so that the nodes in the group node do not overlap.\n Click the gear icon and select \u0026ldquo;Settings\u0026rdquo;. Set \u0026ldquo;Auto Alignment\u0026rdquo;  \r Calculator node \r It is a calculation node usable in data flow.\nFor detailed usage, please refer to Data flow.\n"
    },
    {
        "uri": "/manual/scripting/behaviourtree/actionbehaviour.html",
        "title": "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.  Important point  For enabled of MonoBehaviour are used internally already for execution control, please use the behaviourEnabled to be a substitute.  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. }    Finish 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); }  \nData flow It is possible to input / output values by data flow.\nFor details, see \u0026ldquo;Scripting: Data flow\u0026rdquo;.\nScripting : Data flow\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\nScripting : 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\nScripting : 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\nScripting : 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 "
    },
    {
        "uri": "/manual/scripting/statebehaviour.html",
        "title": "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.  Important point  For enabled of MonoBehaviour are used internally already for execution control, please use the behaviourEnabled to be a substitute.  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 flow It is possible to input / output values by data flow.\nFor details, see \u0026ldquo;Scripting: Data flow\u0026rdquo;.\nScripting : Data flow\n"
    },
    {
        "uri": "/manual/updateguide/update3_6.html",
        "title": "Updating to Arbor 3.6",
        "tags": [],
        "description": "",
        "summary": "When updating from Arbor 3.5.x or earlier to 3.6.0 or later, a compile error may occur.\nCheck and correct the following items.\nFlexibleField handling scene objects I changed to FlexibleSceneObjectType where I used FlexibleType.\nMake sure that the following code is written in your script, and correct it.\n1 2  //flexible.type == FlexibleType.Constant // Error\rflexible.type == FlexibleSceneObjectType.Constant // Fix this way.   Applicable FlexibleField class  FlexibleGameObject FlexibleComponent FlexibleTransform FlexibleRectTransform FlexibleRigidbody FlexibleRigidbody2D  asmdef file name Fixed a typo in the Arbor.",
        "content": " When updating from Arbor 3.5.x or earlier to 3.6.0 or later, a compile error may occur.\nCheck and correct the following items.\nFlexibleField handling scene objects I changed to FlexibleSceneObjectType where I used FlexibleType.\nMake sure that the following code is written in your script, and correct it.\n1 2  //flexible.type == FlexibleType.Constant // Error\rflexible.type == FlexibleSceneObjectType.Constant // Fix this way.   Applicable FlexibleField class  FlexibleGameObject FlexibleComponent FlexibleTransform FlexibleRectTransform FlexibleRigidbody FlexibleRigidbody2D  asmdef file name Fixed a typo in the Arbor.BuiltInBehaviours.asmdef file name.\n If you have defined your own asmdef that references Arbor.BuiltInBehaviours.asmdef, modify the name to Arbor.BuiltInBehaviours.\n(If Use GUIDs is enabled in Unity 2019.1 or later, this is not necessary because it is not a reference by name)  Also, along with this correction, you may receive an error that the asmdef can not be found only once immediately after the update, but there is no problem in operation.\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;Add Asset Package\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 ArborEditor Window The Arbor Editor window is a window for editing graphs of state machines and behavior trees.\n ArborEditor Window  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  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\nScripting You can prepare your own behavior and calculation process by creating C# script.\nSee \u0026ldquo;Scripting\u0026rdquo; for details.\nScripting\nTo 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/statemachine/menu.html",
        "title": "About each menu",
        "tags": [],
        "description": "",
        "summary": "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.",
        "content": " 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.   Edit Editor Script Open the Editor script (only when there is an Editor script)    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 always Always display data values regardless of display setting of individual data lines   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.    Reroute Node menu \r    Item Contens     Settings Opens the StateLink settings window.   Cut Cut the node.   Copy Copy the node.   Duplicate Duplicate the node.   Delete Delete the node.   Delete (Keep Connection) Delete only the rerout node while keeping the connection.    "
    },
    {
        "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.\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   Node Comment \r NormalShow according to the setting of each node.Show AllShow all node comments.Show Commented OnlyShow only node comments that have been written.Hide AllHide all node comments.   DataSlot \r Show Outside NodeDisplay data slots outside the frame of a node.Show Inside NodeDisplay data slots in the frame of the node.    \u0026ldquo;Debug\u0026rdquo; drop down \r Displays the debug related menu of the graph.\n   Menu Contents     Show all data values always Always display data values regardless of display setting of individual data lines   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(Unity 2017.2 or later)   Mouse Wheel Mode Selection of mouse wheel behavior to zoom or scroll(Unity 2017.2 or later)   Comment affects zoom Set whether node comment is affected by zoom (Unity 2017.2 or later)   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   Restore default grid settings Revert the grid setting to default   Version The version of Arbor you are importing    ２．Side Panel Toggle button on side panel \r Switch the display of the side panel.\nGraph tab Tab about the basic data of the graph.\nGraph \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    Parameters Tab This is a tab about the parameters in the graph.\nCreate a ParameterContainer Create a ParameterContainer directly attached to the graph.\n Open the Parameters tab and click the \u0026ldquo;Create\u0026rdquo; button.  \r Edit parameters You can edit parameters like ParameterContainer.\nFor details, refer to ParameterContainer.\n３．Graph View \r Display node graph.\n４．Graph Path \r This is the path to the graph currently displayed in the graph view.\nCommon usage of graph For details on how to use, please click here.\nCommon usage of graph\n"
    },
    {
        "uri": "/manual/arboreditor/howtouse.html",
        "title": "Common usage of graph",
        "tags": [],
        "description": "",
        "summary": "Basic operation method    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   Resize note Mouse left button drag edge of node Mouse left button drag edge of node   Context menu Mouse right button click Mouse right button click    For details on how to create nodes etc.",
        "content": " Basic operation method    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   Resize note Mouse left button drag edge of node Mouse left button drag edge of 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    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   Scripting : BehaviourHelp\n"
    },
    {
        "uri": "/manual/scripting/behaviourtree/decorator.html",
        "title": "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.  Important point  For enabled of MonoBehaviour are used internally already for execution control, please use the behaviourEnabled to be a substitute.  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. }    Data flow It is possible to input / output values by data flow.\nFor details, see \u0026ldquo;Scripting: Data flow\u0026rdquo;.\nScripting : Data flow\n"
    },
    {
        "uri": "/manual/scripting/behaviourtree.html",
        "title": "BehaviourTree",
        "tags": [],
        "description": "",
        "summary": "You can also customize it by writing a script in Behavior Tree.\n ActionBehaviour\nThis section explains the scripts assigned to the action node. Decorator\nThis section eexplain the decorator script. Service\nThis section eexplain the service script.  ",
        "content": "You can also customize it by writing a script in Behavior Tree.\n ActionBehaviour\nThis section explains the scripts assigned to the action node. Decorator\nThis section eexplain the decorator script. Service\nThis section eexplain the service script.  "
    },
    {
        "uri": "/manual/behaviourtree/menu.html",
        "title": "About each menu",
        "tags": [],
        "description": "",
        "summary": "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.",
        "content": " 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    Breakpoint Toggle breakpoint setting.\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.   Edit Editor Script Open the Editor script (only when there is an Editor script)    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    Breakpoint Toggle breakpoint setting.\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.   Edit Editor Script Open the Editor script (only when there is an Editor script)    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.   Edit Editor Script Open the Editor script (only when there is an Editor script)    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.   Edit Editor Script Open the Editor script (only when there is an Editor script)    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 always Always display data values regardless of display setting of individual data lines   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.    "
    },
    {
        "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.\nScripting : 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\nScripting : StateBehaviour\n"
    },
    {
        "uri": "/manual/scripting/behaviourtree/service.html",
        "title": "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.  Important point  For enabled of MonoBehaviour are used internally already for execution control, please use the behaviourEnabled to be a substitute.  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. }    Data flow It is possible to input / output values by data flow.\nFor details, see \u0026ldquo;Scripting: Data flow\u0026rdquo;.\nScripting : Data flow\n"
    },
    {
        "uri": "/manual/scripting/calculator.html",
        "title": "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.\nData flow It is important to input and output values by data flow in order to utilize compute nodes.\nFor details, see \u0026ldquo;Scripting: Data flow\u0026rdquo;.\nScripting : Data flow\n"
    },
    {
        "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.\nScripting : 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.\nScripting : 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.\nScripting : 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\nScripting\n"
    },
    {
        "uri": "/manual/scripting/behaviourinterface.html",
        "title": "Behaviour interfaces",
        "tags": [],
        "description": "",
        "summary": "There are several interfaces available for scripts such as StateBehaviour, Calculator, and ActionBehaviour.\nTarget scripts The target script is as follows.\n StateBehaviour Calculator ActionBehaviour Decorator Service  INodeBehaviourSerializationCallbackReceiver An interface for receiving serialization callbacks in the node\u0026rsquo;s behaviour script.\nScriptReference: INodeBehaviourSerializationCallbackReceiver\nSince the Unity standard ISerializationCallbackReceiver is used internally, please use this if you want to receive a callback.\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  using UnityEngine;\rusing System.",
        "content": " There are several interfaces available for scripts such as StateBehaviour, Calculator, and ActionBehaviour.\nTarget scripts The target script is as follows.\n StateBehaviour Calculator ActionBehaviour Decorator Service  INodeBehaviourSerializationCallbackReceiver An interface for receiving serialization callbacks in the node\u0026rsquo;s behaviour script.\nScriptReference: INodeBehaviourSerializationCallbackReceiver\nSince the Unity standard ISerializationCallbackReceiver is used internally, please use this if you want to receive a callback.\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  using UnityEngine;\rusing System.Collections.Generic;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class ExampleSerializationCallback : StateBehaviour, INodeBehaviourSerializationCallbackReceiver\r{\rpublic List\u0026lt;int\u0026gt; _keys = new List\u0026lt;int\u0026gt; { 3, 4, 5 };\rpublic List\u0026lt;string\u0026gt; _values = new List\u0026lt;string\u0026gt; { \u0026#34;I\u0026#34;, \u0026#34;Love\u0026#34;, \u0026#34;Unity\u0026#34; };\rpublic Dictionary\u0026lt;int, string\u0026gt; _myDictionary = new Dictionary\u0026lt;int, string\u0026gt;();\rpublic void OnBeforeSerialize()\r{\r_keys.Clear();\r_values.Clear();\rforeach (var kvp in _myDictionary)\r{\r_keys.Add(kvp.Key);\r_values.Add(kvp.Value);\r}\r}\rpublic void OnAfterDeserialize()\r{\r_myDictionary = new Dictionary\u0026lt;int, string\u0026gt;();\rfor (int i = 0; i \u0026lt; Mathf.Min(_keys.Count, _values.Count); i++)\r_myDictionary.Add(_keys[i], _values[i]);\r}\rpublic override void OnStateBegin()\r{\rforeach (var kvp in _myDictionary)\r{\rDebug.Log(\u0026#34;Key: \u0026#34; + kvp.Key + \u0026#34; value: \u0026#34; + kvp.Value);\r}\r}\r}   INodeGraphContaiiner An interface to use when a node\u0026rsquo;s behavior script contains subgraphs.\nScriptReference: INodeGraphContaiiner\n"
    },
    {
        "uri": "/manual/scripting/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/subgraph.html",
        "title": "Hierarchy of graph",
        "tags": [],
        "description": "",
        "summary": "Using graph hierarchy makes it easier to combine flexible AI etc. because you can split graph with rough behavior and detailed behavior.\nCreate a subgraph When using a subgraph, please create a state or action with the behavior script below.\nSubStateMachine \r Have the child state machine and execute when the node becomes active.\n ArborReference : SubStateMachine(StateBehaviour) ArborReference : SubStateMachine(ActionBehaviour)  SubStateMachineReference \r Execute an external state machine such as prefab as a child state machine.",
        "content": " Using graph hierarchy makes it easier to combine flexible AI etc. because you can split graph with rough behavior and detailed behavior.\nCreate a subgraph When using a subgraph, please create a state or action with the behavior script below.\nSubStateMachine \r Have the child state machine and execute when the node becomes active.\n ArborReference : SubStateMachine(StateBehaviour) ArborReference : SubStateMachine(ActionBehaviour)  SubStateMachineReference \r Execute an external state machine such as prefab as a child state machine.\n ArborReference : SubStateMachineReference(StateBehaviour) ArborReference : SubStateMachineReference(ActionBehaviour)  SubBehaviourTree \r Have a child a behaviour tree and execute it when the node becomes active.\n ArborReference : SubBehaviourTree(StateBehaviour) ArborReference : SubBehaviourTree(ActionBehaviour)  SubBehaviourTreeReference \r Execute an external behaviour tree such as prefab as a child behaviour tree.\n ArborReference : SubBehaviourTreeReference(StateBehaviour) ArborReference : SubBehaviourTreeReference(ActionBehaviour)  Argument of the graph \r Parameters can be exchanged between the parent graph and the child graph.\nCreating parameters to pass  Open the child graph in ArborEditor. Open the Parameters tab of the side panel. Create parameters for passing to and from the parent graph. Change the visible settings of Get and Set as necessary.  \r Receive parameters in child graph  Drag and drop the received parameters into the graph view. Select Get from the menu. Output values from the output slot of GetParameter, and use values at other nodes.  \r Parameter setting in child graph  Drag and drop parameters to be set to graph view. Select Set from the menu. Connect the setting value to the input slot.  \r Pass parameters from the parent graph  Open the parent graph in ArborEditor. Add parameters to be passed to the argument list of the subgraph. Set values from fixed values and input slots.  \r Receives parameters from the child graph  Add the parameters you want to receive in the argument list of the subgraph. Output values from the output slot and use values at other nodes.  \r Argument update timing You can specify when to update parameters.\n Click the update timing field. Select timing.  \r Update timing    Name Description     Enter When the node becomes active and the child graph is updated when it starts playing   Execute Updated every frame, when the child graph is executed    Argument setting For arguments, Get and Set can be set visually.\nPlease use it when you do not want to overwrite the parameter value without setting.\n Click the gear icon of the argument Argument setting in the setting window.  \r Argument setting window \r    Label Description     Set Visible setting of input field   Get Visible setting of output field    When the child graph to be executed has not been confirmed If the child graph to be executed by SubStateMachineReference etc. is not confirmed, it is necessary to specify the parameter name and type to be passed.\n Click the + button in the argument list. In the argument creation window, create an argument by inputting a parameter name and type.  \r Argument creation window \r    Label Description     Parameter Name Name of the parameter.It must have the same name as the parameter of the child graph.   Parameter Type Type of the parameter.\nIt must be of the same type as the parameters of the child graph.   Reference Type\n(Parameter Type is Enum, Component, Variable only) Value type of parameter\nIt must be of the same type as the parameters of the child graph.   Set Visible setting of input field   Get Visible setting of output field    Argument setting window \r    Label Description     Parameter Name Name of the parameter.It must have the same name as the parameter of the child graph.   Parameter Type Type of the parameter.\nIt must be of the same type as the parameters of the child graph.   Reference Type\n(Parameter Type is Enum, Component, Variable only) Value type of parameter\nIt must be of the same type as the parameters of the child graph.   Set Visible setting of input field   Get Visible setting of output field    "
    },
    {
        "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 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 Search Parameter  Enter a name in the search bar to search.\nYou can also filter by type by selecting the search type.  \r Type of parameter \r    Type Inspector Description     Int \r  Signed 32 bit integer   Long \r  Signed 64 bit integer   Float \r  Signed 32 bit floating point number   Bool \r  Boolean   String \r  String   Enum \r  enum type (typable)   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   GameObject \r  Reference to GameObject   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)   Variable  Parameter type that can be built by you    About Variable With Variable you can create your own parameters.\nFor details, see \u0026ldquo;Scripting : Variable\u0026rdquo;.\nScripting : Variable\nAccess to parameters Create Access Node You can create access nodes by dragging and dropping parameters into the graph view.\n Drag the parameter\u0026rsquo;s drag area. Drop at the position you want to create in the graph view. From the menu, select Get or Set.\n(For Set node, execution nodes of various graphs are created. Please connect so that it will be executed after creation.)  \r Access by ParameterReference In scripts with ParameterReference related classes, you can set parameters that handle values.\nSetting by ParameterReference field  Set ParameterContainer with the parameter you want to refer to. Set parameters from drop down.  \r Input from data slot The Container field also supports input from data slots.\n Create nodes that output ParameterContainer type data in advance. Click button in the Container field. Select DataSlot. Connect data input slot. The parameter name to be referred to in the Parameter field is set as a string. (Depending on the behaviour, you also need to set the type of Parameter)  \r For data slots, refer to Data Flow.\nDrag and drop parameters  Drag the drag area of the parameter you want to set. Drop to the ParameterReference you want to reference.  \r Create a script that references parameters You can refer to parameters from your own script.\nFor details, see \u0026ldquo;Scripting : Parameter Reference\u0026rdquo;.\nScripting : Parameter Reference\nAbout 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/scripting/parameterreference.html",
        "title": "Parameter Reference",
        "tags": [],
        "description": "",
        "summary": "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;\rusing Arbor;\rpublic class TestParameterReference : MonoBehaviour\r{\rpublic IntParameterReference intParameter;\rvoid Start ()\r{\rif (intParameter.parameter != null)\r{\rDebug.Log(intParameter.parameter.name + \u0026#34; : \u0026#34; + intParameter.parameter.intValue);\r}\r}\r}    When you add this script to GameObject, it becomes as follows.",
        "content": " 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;\rusing Arbor;\rpublic class TestParameterReference : MonoBehaviour\r{\rpublic IntParameterReference intParameter;\rvoid Start ()\r{\rif (intParameter.parameter != null)\r{\rDebug.Log(intParameter.parameter.name + \u0026#34; : \u0026#34; + intParameter.parameter.intValue);\r}\r}\r}    When you add this script to GameObject, it becomes as follows.\n\r    Field Name Description     Container Reference ParameterContainerBy clicking button you can select Constant or DataSlot.(However, DataSlot can not be used except for script for Arbor node)   Parameter Parameters to be referred toWhen Container type is DataSlot, name designation by character string.    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;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestFlexibleFieldBehaviour : StateBehaviour\r{\rpublic FlexibleInt flexibleInt;\rpublic override void OnStateBegin()\r{\rDebug.Log(\u0026#34;flexibleInt : \u0026#34; + flexibleInt.value);\r}\r}    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 FlexibleEnumAny 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;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestConstraintReferenceBehaviour : StateBehaviour\r{[ClassExtends(typeof(AudioSource))]\rpublic ComponentParameterReference audioSource = new ComponentParameterReference();[ClassExtends(typeof(AudioSourceCurveType))]\rpublic AnyParameterReference audioSourceCurveType = new AnyParameterReference();\rpublic FlexibleAnimationCurve curve = new FlexibleAnimationCurve(AnimationCurve.Linear(0, 0, 1, 1));\r// Use this for enter state\r\tpublic override void OnStateBegin()\r{\rAudioSource source_ = null;\rParameter audioSourceParameter = audioSource.parameter;\rif (audioSourceParameter != null)\r{\rsource_ = audioSourceParameter.objectReferenceValue as AudioSource;\r}\rAudioSourceCurveType curveType_ = AudioSourceCurveType.CustomRolloff;\rParameter curveTypeParameter = audioSourceCurveType.parameter;\rif (curveTypeParameter != null)\r{\rcurveTypeParameter.GetVariable\u0026lt;AudioSourceCurveType\u0026gt;(ref curveType_);\r}\rAnimationCurve curve_ = curve.value;\rif (source_ == null)\r{\rreturn;\r}\rsource_.SetCustomCurve(curveType_, curve_);\r}\r}    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.    "
    },
    {
        "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 Reference types FlexibleType Type that can be selected by FlexibleVector3 etc.\n{\u0026lt; img_fluid src=\u0026ldquo;images/FlexibleField_FlexibleType.png\u0026rdquo; \u0026gt;}}\n   Item Contents     Constant Constant value.   Parameter Refer to parameters. For parameters, see theManual : ParameterContainer.   DataSlot Input slot of data.    FlexiblePrimitiveType A type that can be selected by a numeric type such as FlexibleInt.\n\r    Item Contents     Constant Constant value.   Parameter Refer to parameters. For parameters, see theManual : ParameterContainer.   Random Randomly obtain from the specified range.   DataSlot Input slot of data.    FlexibleSceneObjectType A selectable type of scene object type such as FlexibleGameObject.\n\r    Item Contents     Constant Constant value.   Parameter Refer to parameters. For parameters, see theManual : ParameterContainer.   DataSlot Input slot of data.   Hierarchy Reference from the graph hierarchy.SelfReferences the GameObject that owns the graph.RootGraphIf you are hierarchizing the graph, refer to the GameObject that owns the root graph.If the self graph is a root, it refers to the GameObject of the self graph.    Drag and drop settings Regardless of the selected type, Parameter and DataSlot (GameObject and Component are also acceptable for scene object types) can be set by direct drag and drop.\n Drag the parameters you want to set. Drop to Drop field.  \r DataLink attribute For fields using DataLink attributes, you can use constant or input from data flow. Also, when entering from the data flow, you can specify at what timing the value should be updated.\nSpecifying timing  When an input slot is connected to another output slot, a timing specification field is displayed. Specify the type. (If it is not displayed, you can not change it because the script has specified the timing.)  \r Timing type \r    Item Contents     Noting Do not update.   Everything Always update.   Enter Update when entering a node.   Execute Update when the node is executed.   Manual Update from script to arbitrary timing.    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 You can also use data flow from your own scripts.\nFor details, see \u0026ldquo;Scripting : Data flow\u0026rdquo;.\nScripting : Data flow\n"
    },
    {
        "uri": "/manual/scripting/dataflow.html",
        "title": "Data flow",
        "tags": [],
        "description": "",
        "summary": "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;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestOutputSlotBehaviour : StateBehaviour\r{\rpublic OutputSlotInt outputSlot;\rpublic override void OnStateBegin()\r{\routputSlot.SetValue(Random.Range(100, 200));\r}\r}   When this script is added to the state of ArborFSM, it becomes as follows.",
        "content": " 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;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestOutputSlotBehaviour : StateBehaviour\r{\rpublic OutputSlotInt outputSlot;\rpublic override void OnStateBegin()\r{\routputSlot.SetValue(Random.Range(100, 200));\r}\r}   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;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestInputSlotBehaviour : StateBehaviour\r{\rpublic InputSlotInt inputSlot;\rpublic override void OnStateBegin()\r{\rint intValue = 0;\rif (inputSlot.GetValue(ref intValue))\r{\rDebug.Log(\u0026#34;inputSlot : \u0026#34; + intValue);\r}\relse\r{\rDebug.LogWarning(\u0026#34;inputSlot : not connected.\u0026#34;);\r}\r}\r}    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;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestFlexibleFieldBehaviour : StateBehaviour\r{\rpublic FlexibleInt flexibleInt;\rpublic override void OnStateBegin()\r{\rDebug.Log(\u0026#34;flexibleInt : \u0026#34; + flexibleInt.value);\r}\r}    When this script is added to the state of ArborFSM, it becomes as follows.\n\r FlexibleField related class  FlexibleInt FlexibleFloat FlexibleBool FlexibleGameObject FlexibleString FlexibleEnumAny 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 Create TestConstraintSlotBehaviour script file and write the following code. 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;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class TestConstraintSlotBehaviour : StateBehaviour\r{[ClassExtends(typeof(AudioSource))]\rpublic InputSlotComponent audioSource = new InputSlotComponent();[ClassExtends(typeof(AudioClip))]\rpublic InputSlotUnityObject audioClip = new InputSlotUnityObject();[ClassExtends(typeof(AudioSourceCurveType))]\rpublic InputSlotAny audioSourceCurveType = new InputSlotAny();\rpublic FlexibleAnimationCurve curve = new FlexibleAnimationCurve(AnimationCurve.Linear(0, 0, 1, 1));\rpublic override void OnStateBegin()\r{\rAudioSource source_ = audioSource.GetValue\u0026lt;AudioSource\u0026gt;();\rAudioClip clip_ = audioClip.GetValue\u0026lt;AudioClip\u0026gt;();\rAudioSourceCurveType curveType_ = AudioSourceCurveType.CustomRolloff;\raudioSourceCurveType.GetValue\u0026lt;AudioSourceCurveType\u0026gt;(ref curveType_);\rAnimationCurve curve_ = curve.value;\rif (source_ == null || clip_ == null)\r{\rreturn;\r}\rsource_.clip = clip_;\rsource_.SetCustomCurve(curveType_, curve_);\r}\r}   \nAvailable 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.    DataLink attribute \r By using DataLink attribute, input from constant or data flow can be accepted even if there is no corresponding type InputSlot or FlexibleField.\nScriptReference : DataLink\nExample script Create ExampleDataLinkBehaviour script file and write the following code. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  using UnityEngine;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\rpublic class ExampleDataLinkBehaviour : StateBehaviour\r{[System.Serializable]\rpublic class ExampleData\r{\rpublic string name = \u0026#34;Test\u0026#34;;\rpublic float power = 100f;\r}[DataLink]\rpublic ExampleData exampleData;\r}  \nNotes  It can only be used in the fields of classes that inherit NodeBehaviour (such as StateBehaviour and ActionBehaviour). It can not be used for arrays or lists.   Customize Create data slot You can also create a data slot of your own class.\nFor details, refer to \u0026ldquo;Scripting : Data Slot\u0026rdquo;.\nScripting : Data Slot\nVariable If you also create a parameter, you can create it easily using Variable Generator.\nFor details, see \u0026ldquo;Scripting : Variable\u0026rdquo;.\nScripting : Variable\nCalculator node You can also create scripts to use for calculator nodes.\nFor details, see \u0026ldquo;Scripting : Calculator\u0026rdquo;.\nScripting : Calculator\n"
    },
    {
        "uri": "/manual/scripting/dataslot.html",
        "title": "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/scripting.html",
        "title": "Scripting",
        "tags": [],
        "description": "",
        "summary": "Arbor can be freely customized by writing a script.\n StateBehaviour\nThis section explains the scripts assigned to states. BehaviourTree\nThis section explains the scripts assigned to BehaviourTree. Calculator\nThis section explains the scripts assigned to calculator nodes. Behaviour interfaces\nThis section explains the interface that can be used in the behavior script. Behaviour attributes\nThis section explains the attributes that can be set in the behavior script. Parameter Reference",
        "content": " Arbor can be freely customized by writing a script.\n StateBehaviour\nThis section explains the scripts assigned to states. BehaviourTree\nThis section explains the scripts assigned to BehaviourTree. Calculator\nThis section explains the scripts assigned to calculator nodes. Behaviour interfaces\nThis section explains the interface that can be used in the behavior script. Behaviour attributes\nThis section explains the attributes that can be set in the behavior script. Parameter Reference\nThis section explains how to reference parameters from a script. Data flow\nThis section explains how to reference data flow from script. Data Slot\nThis section explains how to create a data slot yourself. Variable\nThis section explains how to create your own parameters.  Editor extension Such as available inspector extension and PropertyDrawer is I can also be used to StateBehaviour in Unity\n Multilingual editor support\nThis section explains how to perform a multi-lingual Arbor when the editor extension.  "
    },
    {
        "uri": "/manual/scripting/variable.html",
        "title": "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/extra.html",
        "title": "Extra",
        "tags": [],
        "description": "",
        "summary": "It will introduce extra features to further convenient use of the Arbor.\n Use with PackageManager  ",
        "content": "It will introduce extra features to further convenient use of the Arbor.\n Use with PackageManager  "
    },
    {
        "uri": "/manual/scripting/localization.html",
        "title": "Multilingual editor support",
        "tags": [],
        "description": "",
        "summary": "Behavior attributes and editor extensions can support multiple languages.\nPreparing language files In order to support multiple languages, it is necessary to add each language file.\nAlso, register the folder where the language file is placed.\nSince language files can only be used in the editor, place them in the Editor folder.\nLanguagePath Placing a language file To register a folder, place the LanguagePath asset in a folder.\n Select the folder to place in the Project window and click \u0026ldquo;Create\u0026rdquo; button.",
        "content": " Behavior attributes and editor extensions can support multiple languages.\nPreparing language files In order to support multiple languages, it is necessary to add each language file.\nAlso, register the folder where the language file is placed.\nSince language files can only be used in the editor, place them in the Editor folder.\nLanguagePath Placing a language file To register a folder, place the LanguagePath asset in a folder.\n Select the folder to place in the Project window and click \u0026ldquo;Create\u0026rdquo; button. Select \u0026ldquo;Arbor / Editor / LanguagePath\u0026rdquo;. As there are no particular restrictions on the name, please give me the name you like.  \r Create language file If you create a file of \u0026ldquo;Language name.txt\u0026rdquo; in the folder where the LanguagePath asset is placed, it will be recognized as a language file.\n\u0026ldquo;Language name\u0026rdquo; must have the same name as the value of the SystemLanguage enumerator.\nUnity ScriptReference : SystemLanguage\nWriting a language file In the language file, write it in the format of \u0026ldquo;word key: display character string\u0026rdquo; line by line.\nAlso, if the line head is \u0026ldquo;//\u0026rdquo; it is regarded as a comment and that line is ignored.\nFor example, create English.txt and fill in as follows. 1 2 3 4  // Boss behavior related\rMenu_ExampleBossAttack: Localization/Boss\u0026#39;s attack\rExampleBossAttack: Boss\u0026#39;s attack\rExampleBossDefense: Boss\u0026#39;s defense  \nExample of folder structure  Assets  Editor  Languages  LanguagePath.asset English.txt Japanese.txt     Language word reference Reference from editor extension To reference from an editor extension, use ArborEditor.Localization.GetWord() or GetTextContent().\nExample script 1 2  EditorGUILayout.LabelField(Localization.GetWord(\u0026#34;ExampleBossAttack\u0026#34;));\rEditorGUILayout.LabelField(Localization.GetWord(\u0026#34;ExampleBossDefense\u0026#34;));   Display example \r References in behavior attributes If you set the localization field to true on AddBehaviourMenu or Behavior Title, it will be referenced from the language file.\nExample script 1 2 3 4 5 6 7 8 9  using UnityEngine;\rusing Arbor;[AddComponentMenu(\u0026#34;\u0026#34;)]\r[AddBehaviourMenu(\u0026#34;Menu_ExampleBossAttack\u0026#34;,localization=true)]\r[BehaviourTitle(\u0026#34;ExampleBossAttack\u0026#34;,localization =true)]\rpublic class ExampleBossAttackBehaviour : StateBehaviour\r{\r}   Display example English \r Japanese \r "
    },
    {
        "uri": "/manual/updateguide.html",
        "title": "Update Guide",
        "tags": [],
        "description": "",
        "summary": "When updating to the latest version, please refer to the following guide.\nUpdate procedure  Please be sure to make a backup of the project before the update. If you are opening an existing scene, create a new scene from “File / New Scene” in the menu. If you are opening the Arbor Editor window, close it once. Already Removed Arbor folder that have been imported. Import a new version of Arbor.",
        "content": " When updating to the latest version, please refer to the following guide.\nUpdate procedure  Please be sure to make a backup of the project before the update. If you are opening an existing scene, create a new scene from “File / New Scene” in the menu. If you are opening the Arbor Editor window, close it once. Already Removed Arbor folder that have been imported. Import a new version of Arbor.  Version update guide  Updating to Arbor 3.6  "
    },
    {
        "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.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. Scripting\nI will explain how to customize using scripts. Extra\nIt will introduce extra features to further convenient use of the Arbor. UpdateGuide\nWhen updating to the latest version, please refer to this guide. 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": ""
    }
];