accesing a unknown GameObject from a script

I want to be able to see the statts of the Tile I am standing on througth scribt, but I dont know how to do it.

This is my script :

var startPoint : Vector3;  
var endPoint : Vector3;  
var speed : float;  
private var increment : float;  
var isMoving : boolean;  
var tileSpace : float;  
var tileOn : String;  
var tile : GameObject [];  
var tileStatts : Tile;  
var walkedDir : Vector3;  











function Start () {

	startPoint =  transform.position;
	endPoint = transform.position; 


}

function Update () {
	
	
	var pos = transform.position;
	
	calculateTileOn ();
	
	
	if(tileOn == "Tree" || tileOn == "Stone" ){
		increment = 0;
		isMoving = true;
			switch (walkedDir){
			case Vector3.up :
			startPoint = transform.position;
			endPoint = new Vector3(transform.position.x, transform.position.y - tileSpace, transform.position.z );
			break;
			case Vector3.down :
			startPoint = transform.position;
			endPoint = new Vector3(transform.position.x, transform.position.y + tileSpace, transform.position.z );
			break;
			case Vector3.left :
			startPoint = transform.position;
			endPoint = new Vector3(transform.position.x - tileSpace, transform.position.y, transform.position.z );
			break;
			case Vector3.rigth :
			startPoint = transform.position;
			endPoint = new Vector3(transform.position.x + tileSpace, transform.position.y - tileSpace, transform.position.z );
			break;
			
		}
			
	}
	
	
	
	
	if(increment <=1 && isMoving == true){
		increment += speed/100;
		}
	else{
		isMoving = false;
	
	}
	if(isMoving){
		transform.position = Vector3.Lerp(startPoint, endPoint, increment);
		
	}
	if(Input.GetButton("forward") && isMoving == false){
		increment = 0;
		isMoving = true;
		startPoint = transform.position;
		endPoint = new Vector3(transform.position.x, transform.position.y + tileSpace, transform.position.z );
		walkedDir = Vector3.up;
		
	}	
	
	if(Input.GetButton("backward") && isMoving == false){
		increment = 0;
		isMoving = true;
		startPoint = transform.position;
		endPoint = new Vector3(transform.position.x, transform.position.y - tileSpace, transform.position.z );
		walkedDir = Vector3.down;
	}	
	
	if(Input.GetButton("left") && isMoving == false){
		increment = 0;
		isMoving = true;
		startPoint = transform.position;
		endPoint = new Vector3(transform.position.x - tileSpace, transform.position.y, transform.position.z );
		walkedDir = Vector3.left;
	}	
	
	if(Input.GetButton("rigth") && isMoving == false){
		increment = 0;
		isMoving = true;
		startPoint = transform.position;
		endPoint = new Vector3(transform.position.x + tileSpace, transform.position.y, transform.position.z );
		walkedDir = Vector3.rigth;
	}	
	




}	





function calculateTileOn() {
	
	
	 var hit: RaycastHit2D = Physics2D.Raycast(transform.position, -Vector2.up);
		
		if(1 == 1){
			tileOn = hit.collider.gameObject.tag;
			tile =  GameObject.FindGameObjectsWithTag (tileOn);
			tileStatts = (tile).Tile;
			
			
			
		}
		
		
		
			
}

I am cheking this in my calculateTile function.

Overall you should probably use one base tile class, that all tiles will have or derive from. That way, when you investigate a tile, you can just grab the base tile class in a GetComponent<>() call. If that call fails (it won’t return something, so you can test it in an if()), then you don’t care about whatever your raycast hit, but if it does then you can go from there. You can try multiple if() statements to see if it’s a child class based on base tile, if you need to, however depending on how in depth you go with your base tile class you may not need to in most situations.

To determine if your tile is a tree, stone, or whatever you want, you should just make an enum TileType, that has those things, and then you can set the TileType for each prefab of tile. That way, everything is under one parent script that you can use to do whatever you need to do.

EX:
public enum TileType {Tree, Stone, Water, Path}; //etc.

Then you can reference it with TileType.Tree (or whatever you need).