New Monobehaviour warning - instantiating unattached functions

Hello, the compiler is giving me warnings with the “map[x,z] = new Block();” section of code.

void BaseMap() {
	bool x_color = true;
	bool y_color = true;
	
	for(int x = 0; x < sizex; x++) {
		x_color = !x_color;
		for(int z = 0; z < sizez; z++){
			map[x,z] = new Block(); //Warnings
			if(z == 0){
				map[x,z].SetColor(x_color);
				y_color = x_color;
				
			}
			else{
				y_color = !y_color;
				map[x,z].SetColor(y_color);
				
			}
			map[x,z].SetPosition(x,z);
		}
	}
	
}

Essentially, I’m trying to procedurally populate a map in the checkerboard pattern and I’m doing it with an array of the Block function, which holds the colors and Vector3s of each block. The only solutions I’ve found through google requires attaching the script to an existing object, which is ass backwards of what I’m trying to accomplish, the Block object is meant to instantiate the cubes after all the relevant info has been set.

Can anyone advise? Is there a more Unity friendly way of doing what I’m trying to?

Never mind, I should have read the warning more carefully. Having Block inherit from ScriptableObject and instantiating with

map[x,z] = ScriptableObject.CreateInstance("Block") as Block;

fixed everything.