Preciso de ajuda na Unity usando c#

Estou desenvolvendo um jogo educativo no qual o objetivo é ensinar a logica de programação…

Eis que veio o problema, criei uma classe em c# que gera um tabuleiro no qual o personagem deve andar,
só que de bloco em bloco, porém não faço ideia de como poderei estar usando a classe jogador, a minha classe que gera terreno até consegue devolver um Transform[] com todos os cubos e suas posições para que a classe do jogador possa usar para se locomover, mas não consigo fazer com que o jogador o receba por construtor etc…

classe Terreno.cs:
using UnityEngine;
using System.Collections;

public class Terreno : MonoBehaviour {

public GameObject bloco ; 
public GameObject jogador;
protected GameObject blocoAux;
protected int[,] matrizTabuleiro;
protected int x = 10 ;
protected int y = 4 ;
protected Vector3 localizacaoCamera;
protected Vector3 localizacaoTerreno;
//protected Jogador jog;
protected Transform[] t;

// Use this for initialization
void Start () 
{
	print (x + " : " + y);
	matrizTabuleiro = new int[x, y];

	localizacaoCamera = new Vector3 ();
	localizacaoCamera.x = -0.46f;
	localizacaoCamera.y = 2.06f;
	localizacaoCamera.z = -13.78f;

	transform.position = localizacaoCamera;

	localizacaoTerreno = new Vector3();

	localizacaoTerreno.x =0;
	localizacaoTerreno.y =1;
	localizacaoTerreno.z = -7;

	t = new Transform[x*y]; // gera um vetor que vai alocar as posicoes dos bloco
	instanciaTabuleiro (matrizTabuleiro);

}

public Transform[] getTransform()
{
	return this.t;
}

// Update is called once per frame
void Update () 
{}

void instanciaTabuleiro(int[,] tabuleiro)
{
	int xx,zz,contador=0;

	for (xx = 0; xx < tabuleiro.GetLength (0); xx++)
	{
		for (zz = 0; zz < tabuleiro.GetLength (1); zz++)
		{
			blocoAux = Instantiate(bloco,localizacaoTerreno-
				bloco.transform.lossyScale.x*tabuleiro.GetLength(0)/2*transform.right+
				bloco.transform.lossyScale.z*tabuleiro.GetLength(1)/10*transform.forward-
				bloco.transform.lossyScale.y*3*transform.up+
				bloco.transform.lossyScale.x*xx*bloco.transform.right+
				bloco.transform.lossyScale.z*zz*bloco.transform.forward, transform.rotation)as GameObject;

			blocoAux.name = (xx + zz) + "S" + "X" + xx + "Z" + zz + ", cubo" + contador;

			t [contador] = blocoAux.transform;
			print (t[contador].position);
			contador++;



			if ((xx + zz) % 2 == 0)
			{
				blocoAux.GetComponent<Renderer> ().material.color = Color.black;	
			}
		}
	}
	//jog  = new Jogador (t, jogador);

}

}

classe jogador:
using UnityEngine;
using System.Collections;

public class Jogador : MonoBehaviour {

public GameObject jogador;
protected int casaAtual;
public Transform[] casas = new Transform[20];

// Use this for initialization
void Start () {
	casaAtual = 5;
}

// Update is called once per frame
void Update () {

	if (Input.GetKeyDown ("s")) {
	
		if (casaAtual == 19)
			print ("voce ganhou");
	
		else {
			casaAtual = casaAtual - 5;
			Vector3 novaPos = new Vector3 (casas [casaAtual].transform.position.x, casas [casaAtual].transform.position.y + 0.7f, casas [casaAtual].transform.position.z);
			jogador.transform.position = novaPos;
		}
	
	}

	if (Input.GetKeyDown ("w")) {

		if (casaAtual == 19)
			print ("voce ganhou");

		else {
			casaAtual = casaAtual + 5;
			Vector3 novaPos = new Vector3 (casas [casaAtual].transform.position.x, casas [casaAtual].transform.position.y + 0.7f, casas [casaAtual].transform.position.z);
			jogador.transform.position = novaPos;
		}

	}

	if (Input.GetKeyDown ("a")) {

		if (casaAtual == 19)
			print ("voce ganhou");

		else {
			casaAtual--;
			Vector3 novaPos = new Vector3 (casas [casaAtual].transform.position.x, casas [casaAtual].transform.position.y + 0.7f, casas [casaAtual].transform.position.z);
			jogador.transform.position = novaPos;
		}

	}

	if (Input.GetKeyDown ("d")) {

		if (casaAtual == 19)
			print ("voce ganhou");
		else {
			Vector3 novaPos = new Vector3 (casas [casaAtual + 1].transform.position.x, casas [casaAtual + 1].transform.position.y + 0.7f, casas [casaAtual + 1].transform.position.z);
			jogador.transform.position = novaPos;
			casaAtual++;
		}
	}
}

}

tentei até um construtor na classe jogador mas não consigo chamar na classe terreno ;-;