Acces an Awake variable

This is my code:

 public static void Awake()
         {
             Vector3 position1 = new Vector3(Random.Range(220.9f, 281.8f), -1.23f, Random.Range(282.25f, 295.43f));
             Vector3 position2 = new Vector3(Random.Range(281.8f, 315.6f), -1.23f, Random.Range(222.8f, 200.67f));
             Vector3 position3= new Vector3(Random.Range(280.1f, 223.8f), -1.23f, Random.Range(222.8f, 200.7f));
             Vector3 position4= new Vector3(Random.Range(214.8f, 197f), -1.23f, Random.Range(222.7f, 287.91f));
         }
     
 public static void Spawn1()
     {
         Instantiate (GameObject.FindWithTag("enemy"), position1, Quaternion.identity);
     }
     public static void Spawn3()
     {
         Instantiate (GameObject.FindWithTag("enemy"), position2, Quaternion.identity);
     }
     public static void Spawn3()
     {
         Instantiate (GameObject.FindWithTag("enemy"), position3, Quaternion.identity);
     }
     public static void Spawn4()
     {
         Instantiate (GameObject.FindWithTag("enemy"), position4, Quaternion.identity);
     }

Before writing this code, the Vector3 variables where not in the Awake function, but when I run the script I get an error saying that I need to put the Vector3 Variables into an Awake function.

So now, when I call one function (Spawn1(),Spawn2(), etc…) I get an error saying that I can’t acces the Vector3 variables because I need to turn them static. The problem is that Unity doesn’t let me write static / public before

 Vector3 position1 = new Vector3(Random.Range(220.9f, 281.8f), -1.23f, Random.Range(282.25f, 295.43f));

Thanks and sorry for my English :P.

EDIT: I had to put the variabels into the Awake function because the Random.Range can’t be called from MonoBehaviour.

You have several issues with your code, but the best advice I can give you is never, ever use static unless you’re absolutely sure you know what it is for.
You’ve made your Awake function static, which makes no sense because it can’t be called. Remo e the static modifier.

You’ve also declared local variables - position1, position2, position3 etc. in your Awake function that are never used and can’t be accessed anywhere else. They’d also be better stored as an array of Vector3. You have a lot of code duplication in your Spawn methods that could all be rewritten in one parameterised method, and you also should avoid using FindWithTag at runtime - it’s very slow.

@tanoshimi 's anwer has some very important points, but here’s an answer more specific to the problem at hand.

Your lines in Awake consist of two parts: The declaration and the initialization of a variable. The declaration:

Vector3 position1;

The initialization:

position1 = new Vector( ... );

Both together:

Vector3 position1 = new Vector( ... );

As you see here, you can do both in one line, but you can also split the whole thing.

The declaration, or rather where the variable gets declared, defines it’s “Scope”. The scope is where the variable can be used and when it will cease to exist.
If you declare a variable within a method, the scope will be that method and the variable cannot be used outside, aka in other methods.

So you need to declare the variable outside of the methods, inside the class:

private Vector3 position1;

As you stated, you want to use Random.Range, which you cannot use outside of a method. Luckily, you can put the initialisation into Awake even though the declaration is outside:

void Awake()
{
  position1 = new Vector( ... );
}

With that out of the way, @tanoshimi is absolutely right: If you have multiple variables that are called xy1, xy2 and so on, you’re doing something wrong. Declare an array instead:

private Vector3[] positions;

void Awake()
{
  positions = new Vector3[4]; // 4 vectors please
  positions[0] = new Vector3( ... );
  positions[1] = new Vector3( ... );
  positions[2] = new Vector3( ... );
  positions[3] = new Vector3( ... );
}