Make an array of all visible objects

Hey Unitarians!

What I’m trying to do is on every frame, make an array of all the visible enemies in the scene. The way I’m trying to do this is by this code:

// Use this for initialization
	void Start () {
		Enemies = GameObject.FindGameObjectsWithTag("Enemy");
	}
	
	// Update is called once per frame
	void Update () {

		if(!player) { //There isn't a player to check distance with, so don't worry about it
			player = GameObject.FindWithTag("Player");
		} else {
			//There is a player - continue
			for(int i = 0 ; i < Enemies.Length ; i++) //See what enemies are visible
			{
				if(Enemies*.GetComponent<MeshRenderer>().renderer.isVisible == true) {*

VisibleEnemies = Enemies*;*
* }*
* }*

* if(VisibleEnemies.Length == 0) { //If there are no visible enemies*
* this.transform.position = new Vector3(0.5f, 0.5f, 0.0f);*
* } else { //There are visible enemy(s)*

* }*
* }*

* }*
And what it should do is this:
- In the start method, find all the enemies in the screen and store in an array
- On every update, it should go through every enemy in the Enemies array and check to see if they are visible from the camera’s perspective
- If they are, they are added to another array called VisibleEnemies
- Then the code checks to see if there are any enemies in the VisibleEnemies array. If there aren’t any, then the script holder gameobject reverts to a default state.
There are no errors int he code but when I run it I get this cryptic error:
> IndexOutOfRangeException: Array index is out of range.
(wrapper stelemref) object:stelemref (object,intptr,object)
Crosshair.Update () (at Assets/My Thingies/Scripts/Miscellaneous/Crosshair.cs:27)
For reference, line 27 says:
VisibleEnemies = Enemies*;*

I have no idea how to procede so any help would be greatly appreciated!

Nevermind solved it xD

Here’s my code for anyone who needs help later on:

void Start () {
		Enemies = GameObject.FindGameObjectsWithTag("Enemy");
	}
	
	// Update is called once per frame
	void Update () {

		if(!player) { //There isn't a player to check distance with, so don't worry about it
			player = GameObject.FindWithTag("Player");
		} else {
			//There is a player - continue
			for(int i = 0 ; i < Enemies.Length ; i++) //See what enemies are visible
			{
				if(Enemies*.GetComponent<MeshRenderer>().renderer.isVisible == true) {*

//VisibleEnemies = Enemies*;*
* System.Collections.Generic.List list = new System.Collections.Generic.List(Enemies);*
_ list.Remove(Enemies*);
VisibleEnemies = list.ToArray();
}
}*_

* if(VisibleEnemies.Length == 0) { //If there are no visible enemies*
* this.transform.position = new Vector3(0.5f, 0.5f, 0.0f);*
* } else { //There are visible enemy(s)*
* closestEnemy = FindClosestEnemy();*

* transform.position = Camera.main.WorldToViewportPoint(closestEnemy.transform.position);*
* }*
* }*

* }*