You have invoked spawn within the call of spawn.
Your code goes fully reentrant .. creating objects every one to two seconds infinitely on top of each other ... HENCE THE FLASHING
Look at your hierarchy tab you get ever increasing numbers of spawn
Here is you code step by step
1.) Procedure start calls spawn
2.) spawn Instantiates a copy of a random object from the obj list
3.) Spawn then says to invoke itself (spawn) 1 - 2 seconds later
4.) 1-2 seconds passes spawn is called (AKA goto step 2)
So random objects are being created repeatedly every 1-2 seconds all instantiated on the same point being transform.position AKA the position of the object holding this script.
That what the script says to do and that many objects all ontop of each other will make the screen flash. I suspect you don't want them ontop of each other or at least don't want infinite amount of them which is what happens at the moment.
Lets at least stop the infinity by adding a count which you can set
using UnityEngine;
using System.Collections;
public class SpawnScript : MonoBehaviour
{
public GameObject[] obj;
public float spawnMin = 1f;
public float spawnMax = 2f;
public int objCount = 0;
void Start()
{
Spawn();
}
void Spawn()
{
Instantiate(obj[Random.Range(0, obj.GetLength(0))], transform.position, Quaternion.identity);
if (objCount < 10) Invoke("Spawn", Random.Range(spawnMin, spawnMax));
objCount++;
}
}