FSM써서 보스패턴 만들려고 구글링해서 어찌어찌 틀은 만들었는데 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.AI;


public interface IState

{

    void OnEnter();

    void Update();

    void OnExit();

}

public class Idle : IState

{

    public void OnEnter()

    {


    }

    public void Update()

    {


    }

    public void OnExit()

    {


    }

}

public class Walk : IState

{

    public void OnEnter()

    {


    }

    public void Update()

    {

        agent.SetDestination(target.position);

        anim.SetBool("Walk", isWalk);

    }

    public void OnExit()

    {


    }

}


public class Run : IState

{

    public void OnEnter()

    {


    }

    public void Update()

    {


    }

    public void OnExit()

    {


    }

}


public class Attack : IState

{

    public void OnEnter()

    {


    }

    public void Update()

    {


    }

    public void OnExit()

    {


    }

}

public class Dead : IState

{

    public void OnEnter()

    {


    }

    public void Update()

    {


    }

    public void OnExit()

    {


    }

}


public enum state { Idle, Walk, Run, Attack, Dead }

public class BossPatternState : MonoBehaviour

{

    public Transform bossPos;

    public Transform target;

    public NavMeshAgent agent;

    public int checkRadius;

    public LayerMask targetLayer;

    public Animator anim;


    [Header("Animation")]

    public bool isWalk;

    public bool isRun;

    public bool isAttack;

    public bool isDeath;


    [Header("FSM")]

    IState _IState;

    state _state;



    void Start()

    {

        bossPos = GetComponent<Transform>();

        agent = GetComponent<NavMeshAgent>();

        anim = GetComponent<Animator>();

    }


    

    void Update()

    {

        _IState.Update();

    }

    

    public void ChangeState(state changedstate)

    {

        _IState.OnExit();


        _state = changedstate;


        switch (_state)

        {

            case state.Idle:

                _IState = new Idle();

                break;

            case state.Walk:

                _IState = new Walk();

                break;

            case state.Run:

                _IState = new Run();

                break;

            case state.Attack:

                _IState = new Attack();

                break;

            case state.Dead:

                _IState = new Dead();

                break;

        }


        _IState.OnEnter();

    }

    void CheckTarget()

    {

        Collider[] rangeChecks = Physics.OverlapSphere(transform.position, checkRadius, targetLayer);

        if (rangeChecks.Length != 0)

        {

            target = rangeChecks[0].GetComponent<Transform>();

        }

    }


    

}
이렇게 했는데 IState인터페이스 받은 클래스들이 BossPatternState에 있는 변수쓸려면 어떻게 해야하나요?
그냥 각 클래스한테 BossPatternState 인스턴스화 해서 넣어줘야하는건가요?

도와주세요 흑흑...