Transform[] Array - fill it from another Script

Hello! I got two Scripts: 1 Enemy_mob script, with the Array on it, to search for new enemies on the fixed Update(). My Goal is to fill the enemy Array in the Start () of Script 2:

	public Transform[] monsterArray;
	private PlayerScript opponent;
private Transform player;

	void Start () {
		player = GameObject.FindWithTag ("Player").transform;
		opponent = player.GetComponent<PlayerScript>();
	}

	void Update () {

		atktime += Time.deltaTime;
		if (player != null) {
			if (!isDead ()) {
				if (!inRange ()) {
					chase ();
				} else {
					attack ();
				}
				//	transformArray = GameObject.FindGameObjectsWithTag ("Player").Select (go => go.transform).ToArray ();
			} else {
				dieMethod ();
			}

		} else {
			if (!newTarget ())
				{
				//player = GetNewTarget ();
				player = GetClosestEnemy (monsterArray);
				}
		}

	}

	Transform GetClosestEnemy(Transform[] enemies)
	{
		Transform bestTarget = null;
		float closestDistanceSqr = Mathf.Infinity;
		Vector3 currentPosition = transform.position;

		foreach(Transform potentialTarget in enemies)
			
		{
			Vector3 directionToTarget = potentialTarget.position - currentPosition;
			float dSqrToTarget = directionToTarget.sqrMagnitude;

			if(dSqrToTarget < closestDistanceSqr)
			{
				closestDistanceSqr = dSqrToTarget;
				bestTarget = potentialTarget;
				player = bestTarget;
				opponent = player.GetComponent<PlayerScript>();

			}
		}
		return bestTarget;

	}

	void attack()
	{
		if (atktime >= 3) 
		{
			Debug.Log(monsterArray);
			atktime = 0;
			Debug.Log("Angriff_opponent");
			opponent.getHit(damage);
			//	impacted = true;
		}
	}

	bool newTarget()
	{
		if (atktime >= 4) 
		{
//			monsterArray = GameObject.FindWithTag ("Player").transform;
			//Debug.Log("newTargetBoolTrue");
			return true;
		} else 
		{
			//Debug.Log("FALSE");
			return false;
		}
	}

and Script 2, where I actually want to fill the monsterArray

	private MonsterScript opponent;
	private Transform enemy;

void Start () {
		opponent.monsterArray[] += this.gameObject; 		//put this gameobj. in the monsterArray of MonsterScript
		enemy = GameObject.FindWithTag ("Enemy").transform;
		opponent = enemy.GetComponent<MonsterScript>();
	}

If new Monster spawn, it will check in it’s Start() to get put into monsterArray, so it will get a Focus if it is in nearest Range. Untill now the monsterArray is empty

@Flowered
I am assuming that your classes look something like below (because of your remark I changed Update to FixedUpdate)

public class MonsterScript : MonoBehaviour
{
    public Transform[] monsterArray;
    private PlayerScript opponent;
    private Transform player;

    void Start ()
    {
        player = GameObject.FindWithTag ("Player").transform;
        opponent = player.GetComponent<PlayerScript>();
    }

    void FixedUpdate ()
    {
        atktime += Time.deltaTime;
        if (player != null)
        {
            if (!isDead ())
            {
                if (!inRange ())
                {
                    chase ();
                }
                else
                {
                    attack ();
                }
                //    transformArray = GameObject.FindGameObjectsWithTag ("Player").Select (go => go.transform).ToArray ();
            }
            else
            {
                dieMethod ();
            }

        }
        else
        {
            if (!newTarget ())
            {
                //player = GetNewTarget ();
                player = GetClosestEnemy (monsterArray);
            }
        }
    }

    Transform GetClosestEnemy(Transform[] enemies)
    {
        Transform bestTarget = null;
        float closestDistanceSqr = Mathf.Infinity;
        Vector3 currentPosition = transform.position;

        foreach(Transform potentialTarget in enemies)

        {
            Vector3 directionToTarget = potentialTarget.position - currentPosition;
            float dSqrToTarget = directionToTarget.sqrMagnitude;

            if(dSqrToTarget < closestDistanceSqr)
            {
                closestDistanceSqr = dSqrToTarget;
                bestTarget = potentialTarget;
                player = bestTarget;
                opponent = player.GetComponent<PlayerScript>();
            }
        }
        return bestTarget;
    }

    void attack()
    {
        if (atktime >= 3) 
        {
            Debug.Log(monsterArray);
            atktime = 0;
            Debug.Log("Angriff_opponent");
            opponent.getHit(damage);
            //    impacted = true;
        }
    }

    bool newTarget()
    {
        if (atktime >= 4) 
        {
            //            monsterArray = GameObject.FindWithTag ("Player").transform;
            //Debug.Log("newTargetBoolTrue");
            return true;
        }
        else 
        {
            //Debug.Log("FALSE");
            return false;
        }
    }
}

and

public class EnemyMobScript : MonoBehaviour
{
    private MonsterScript opponent;
    private Transform enemy;

    void Start ()
    {
        opponent.monsterArray[] += this.gameObject;         //put this gameobj. in the monsterArray of MonsterScript
        enemy = GameObject.FindWithTag ("Enemy").transform;
        opponent = enemy.GetComponent<MonsterScript>();
    }
}

The first problem is that in EnemyMobScript the opponent variable is never initialized when you try to access it like so

opponent.monsterArray[] += this.gameObject;         //put this gameobj. in the monsterArray of MonsterScript

I am surprised that you are not getting an error. But it should look more like

public class EnemyMobScript : MonoBehaviour
{
    private MonsterScript opponent;
    private Transform enemy;

    void Start ()
    {
        enemy = GameObject.FindWithTag ("Enemy").transform; // find the first Enemy GameObject
        if ((enemy != null) && (enemy.GetComponent<MonsterScript>() != null))
        {
            opponent = enemy.GetComponent<MonsterScript>();     // get the MonsterScript attached to the Enemy GameObject
            opponent.monsterArray[] += this.gameObject;         // put this gameobj. in the monsterArray of MonsterScript
        }
    }
}

Unless you only have one Enemy in the game you will most likely always be getting the same Enemy with

enemy = GameObject.FindWithTag ("Enemy").transform; // find the first Enemy GameObject

which may be OK but you may still need to worry about circular reference.