why can i see gameobject 'ball' in the scene editor, but not in the game?

I have spend literally all night searching the internet and trying lots of code to get the gameobject ‘ball’ to show in-game. I don’t know what it is, it might be rotation or something but i have searched all over the internet and now, if i just start doing trial-and-error, that would take me ages, so i have decided to ask someone who may know. The scenes that i am creating will be created completely at runtime (i am going to have about 105 scenes)so the scene editor looks completly different to the game. Linked below are some pics in scene edit mode and game mode. If you want the game to test i, i can give you a game folder with only the components you need. (maze scripts, prefabs and gameobjects set in the scene). Here is the maze generation script:

using UnityEngine; 
using System.Collections;
using System.Collections.Generic;

public class Mazegenerationspikywalls : MonoBehaviour {
	public Transform CellPrefab;
	public Vector3 Size;
	public Transform[,] Grid;
	GameObject objToSpawn;
	public accelerometermovementnormal sc;
	public Sprite ball;
	//Transform otherObject = "(0,0,0)"();	
	//public GameObject CubeManager;
	//public Material newMaterialRef;


	void Start () {
		//CubeManager = new GameObject();
		//CubeManager.name = "CubeManager";

		CreateGrid();

		SetRandomNumbers();

		SetAdjacents();

		SetStart();

		FindNext();
	}
	
	void CreateGrid(){
		Grid = new Transform[(int)Size.x,(int)Size.z];

		for(int x = 0; x < Size.x; x++){
			for(int z = 0; z < Size.z; z++){
				Transform newCell;
				newCell = (Transform)Instantiate(CellPrefab, new Vector3(x, 0, z), Quaternion.identity);
				newCell.name = string.Format("({0},0,{1})",x,z);
				newCell.parent = transform;
				newCell.GetComponent<CellScript>().Position = new Vector3(x, 0, z);
				Grid[x,z] = newCell;
			}
		}
		Camera.main.transform.position = Grid[(int)(Size.x/2f),(int)(Size.z/2f)].position + Vector3.up*20f;
		Camera.main.orthographicSize = Mathf.Max(Size.x/4, Size.z/4);
	}
	
	void SetRandomNumbers(){
		foreach(Transform child in transform){
			int weight = Random.Range(0,10);
			child.GetComponentInChildren<TextMesh>().text = weight.ToString();
			child.GetComponent<CellScript>().Weight = weight;
		}
	}
	
	void SetAdjacents(){
		for(int x = 0; x < Size.x; x++){
			for(int z = 0; z < Size.z; z++){
				Transform cell;
				cell = Grid[x,z];
				CellScript cScript = cell.GetComponent<CellScript>();
				if(x - 1 >= 0){
					cScript.Adjacents.Add(Grid[x-1,z]);
				}
				if(x + 1 < Size.x){
					cScript.Adjacents.Add(Grid[x+1,z]);
				}
				if(z - 1 >= 0){
					cScript.Adjacents.Add(Grid[x,z-1]);
				}
				if(z + 1 < Size.z){
					cScript.Adjacents.Add(Grid[x,z+1]);
				}
				cScript.Adjacents.Sort(SortByLowestWeight);
			}
		}
	}

	int SortByLowestWeight(Transform inputA, Transform inputB){
		int a = inputA.GetComponent<CellScript>().Weight; 
		int b = inputB.GetComponent<CellScript>().Weight; 
		return a.CompareTo(b);
	}

	public List<Transform> Set;

	public List<List<Transform>> AdjSet;
	
	void SetStart(){
		Set = new List<Transform>();
		AdjSet = new List<List<Transform>>();
		for(int i = 0; i < 10; i++){
			AdjSet.Add(new List<Transform>());	
		}
		Grid[0,0].GetComponent<Renderer>().material.color = Color.green;
		AddToSet(Grid[0,0]);
		objToSpawn = new GameObject("ball");
		objToSpawn.AddComponent<SpriteRenderer>();
		objToSpawn.GetComponent<SpriteRenderer> ().sprite = ball;
		objToSpawn.transform.position =  new Vector3(0, 1, 0);
		objToSpawn.transform.localScale += new Vector3(0F, 0, 0);

	}   

	
	void AddToSet(Transform toAdd){
		Set.Add(toAdd);
		foreach(Transform adj in toAdd.GetComponent<CellScript>().Adjacents){
			adj.GetComponent<CellScript>().AdjacentsOpened++;
			if(!Set.Contains(adj) && !(AdjSet[adj.GetComponent<CellScript>().Weight].Contains(adj))){
				AdjSet[adj.GetComponent<CellScript>().Weight].Add(adj);
			}
		}
	}
	
	void FindNext(){
		Transform next;
		do{
			bool empty = true;
			int lowestList = 0;
			for(int i = 0; i < 10; i++){
				lowestList = i;
				if(AdjSet*.Count > 0){*
  •  			empty = false;*
    
  •  			break;*
    
  •  		}*
    
  •  	}*
    
  •  	if(empty){* 
    
  •  		CancelInvoke("FindNext");*
    
  •  		Set[Set.Count-1].GetComponent<Renderer>().material.color = Color.red;*
    
  •  		objToSpawn.AddComponent<accelerometermovementnormal>();*
    
  •  		foreach(Transform cell in Grid){*
    
  •  			if(!Set.Contains(cell)){*
    
  •  				cell.Translate(Vector3.up);	*
    
  •  				cell.GetComponent<Renderer>().material.color = Color.black;//{*
    
  •  				//GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);*
    
  •  				//cube.transform.parent = CubeManager.transform;{*
    
  •  				//cube.transform.position = cell.position;*
    
  •  				//cube.transform.localScale = cell.transform.localScale;*
    
  •  				//GetComponent<Renderer>().material = newMaterialRef;*
    
  •  				//sc = gameObject.AddComponent<BoxCollider>() as BoxCollider;*
    
  •  			//}*
    
  •  		//}*
    
  •  	}*
    
  •  }*
    
  •  		return;*
    
  •  	}*
    
  •  	next = AdjSet[lowestList][0];*
    
  •  	AdjSet[lowestList].Remove(next);*
    
  •  }while(next.GetComponent<CellScript>().AdjacentsOpened >= 2);*
    
  •  next.GetComponent<Renderer>().material.color = Color.white;*
    
  •  AddToSet(next);*
    
  •  Invoke("FindNext", 0);*
    
  • }*
    }
    http://puu.sh/h6zVt.png
    http://puu.sh/h6zTW.png
    http://puu.sh/h6zXP.png

Rotate the sprite so it faces the game camera. Sprites are 2D objects and from your picture your sprite is generated on the xy plane which is why it can’t be seen from above. It should be rotate to be on the xz plane. Try adding the following to line 103

objToSpawn.transform.rotation=Quaternion.Euler(270, 0, 0);