別クラスから呼び出した関数の中でtransformを参照しようとしたらエラーが出るんですが、
何が問題なのかを教えていただきたく。
NullReferenceException: Object reference not set to an instance of an object

単純にC#の初歩的な手続きミスな気がしますがスマートな解決法がよくわからず

■ファイル1
public class Hoge1 : MonoBehaviour{
Hoge2 hoge2;
void Start ()
{
hoge2=new Hoge2();
hoge2.hogehoge2();//ファイル2のhogehoge2( )を呼び出し
}
}

■ファイル2
public class Hoge2 : MonoBehaviour{
public Transform tr;
void Start ()
{
tr = GameObject.Find ("player").transform;
}
public void hogehoge2{
//ここでTransform tr=GameObject.Find ("player").transform;と宣言するとエラーは出ないがよく使う関数なので事前にキャッシュしときたい
a.transform=new Vector3(tr.position.x,tr.position.y+1.8f,tr.position.z);;//ここでエラーが出る!!
}
}

※ファイル1、2の両方とも同じ空のゲームオブジェクトにAddしてます
※GameObject.Find ("player").transformと書いてますがthis.transformのことです、
  他のクラスから呼び出すとthisの位置が不明になるのかと思いわざわざこう書いてます