Creating the abstract FSM class
Next, we implement a generic abstract class to define the enemy tank AI class's methods. This abstract class will be the skeleton of our AI and represent a high-level view of what an enemy tank should do.
We can see the code of this class in the FSM.cs file:
using UnityEngine;
using System.Collections;
public class FSM : MonoBehaviour {
    protected virtual void Initialize() { }
   Â
    protected virtual void FSMUpdate() { }
   Â
    protected virtual void FSMFixedUpdate() { }
    // Use this for initialization
    void Start () {
        Initialize();
    }
    // Update is called once per frame
    void Update () {
        FSMUpdate();
    ...