>>858
これは質問スレで指摘する事じゃないかもしれないけど、

> public GameObject prefab; // objって名前はよろしくないので改名
> public GameObject yourCanvasObject; // Canvasオブジェクトをinspectorで指定しておく

インスペクタ上からアタッチする変数は、ぱっと見て分るようにするべきと、俺は考える
例えばアンダースコアを変数名の先頭に付けて _prefab とか、guiAttachedCanvasとかね
絶対そうした方がいいと思うんだよな