>public GameObject obj;
>void Update () {
>Instantiate(obj,new Vector3(0.0f, 0.0f, 0.0f),Quaternion.identity );
>obj.transform.SetParent (Canvas.transform ,false); // エラーって全部この行ででてないかい?
>}
ここだけで間違いが3つ
1:Instantiateの戻り値を捨てている
2:obj.transform.SetParent〜 では元のPrefabへの変更になる
3:Canvas.transformなんてクラス変数は無いんじゃないかな?、Canvasを手当したGameObjectの参照の名前は何処?

public GameObject prefab; // objって名前はよろしくないので改名
public GameObject yourCanvasObject; // Canvasオブジェクトをinspectorで指定しておく
void Update() {
GameObject child = (GameObject) Instantiate(prefab, Vector3.zero, Quaternion.identity ); // GameObjectをInstantiateしても戻り値はobject型なのでキャストする
child.transform.SetParent(yourCanvasObject.transform, true); // instantiateしたchildオブジェクトの親を指定
}

とりあえずエラーのある行をゆっくり観察してエラーが持つ意味をちゃんと理解しないと先に進むのは難しいと思うよ。