# Service

By creating a Service script, you can add your own update processing etc. by describing the processing you want to do.

## Create Service script file

- Right click at the place you want to create from the Project window.
- From the right-click menu, select “Create> Arbor> Behavior tree> Service C# Script”.
- 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.

- OnAwake
  It is called the first time the node becomes active.
- OnStart
  It is called when the node becomes active.
- OnUpdate
  Called each time the node is active. For details about the execution timing, see Behavior tree's UpdateSettings.
  Arbor Reference : BehaviourTree
- OnAbort
  Called when the node is interrupted by the Decorator.
- OnEnd
  Called 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

- 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

You can edit it in Arbor Editor by declaring a field with public or SerializedField attribute added to the created script.

     1
     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("")]
    public class TestService : Service
    {
    	public string myName;
    	// The rest is omitted.
    }

## Data flow

It is possible to input / output values by data flow.

For details, see “Scripting: Data flow”.

Scripting : Data flow