下記の実行時エラーが出たときの対処法。
------------------------------------------
ArgumentException: The thing you want to instantiate is null.
at UnityEngine.Object.CheckNullArgument (System.Object arg, System.String message) [0x00000] in
at UnityEngine.Object.Instantiate (UnityEngine.Object original) [0x00000] in
at [自作クラス].Start () [0x00000] in
------------------------------------------
■原因 ※C# で記述しています
・Instantiate() を呼ぶときに、引数にプレファブを渡す
・このプレファブが「public GameObject xxx;」と宣言されていた
■対処
・Instantiate() に渡すプレファブについて、Resources/ 以下にプレファブを置いて、そこを参照するように変更した
■プログラム ※必要部分だけ抜粋
【誤】
public GameObject [プレファブ名];
void Start() {
GameObject obj = Instantiate("[プレファブ名]") as GameObject;
}
【正】
void Start() {
GameObject obj = Instantiate(Resources.Load("[プレファブ名]")) as GameObject;
}
でも、どうしてエディタ上でOKで、実機ではダメなんだろう。。。
■参考
http://hissi.org/read.php/gamedev/20120216/WEVXK2RUYTI.html