【Unity】GameObjectをSetParentするとエラーになる件
エラー内容
Setting the parent of a transform which resides in a prefab is disabled to prevent data corruption.
この時点では何のことなのか、さっぱりわからず...
エラー箇所
gameObj.transform.SetParent (baseTransform);
子のゲームオブジェクト(gameObj)を、親(baseTransform)に設定している箇所
gameObj.transform.parent = baseTranform;
この書き方でも一緒のはず。昔はこう書いてましたね。
解決方法
結局単純なコーディングで、プレハブをInstantiateしていないだけでした...
以下のように、プレハブのオブジェクト(prefabObj)をInstantiateしたゲームオブジェクト(gameObj)を親に設定しているつもりでしたが...
GameObject gameObj = Instantiate (prefabObj) as GameObject;
prefabObjをそのまま親オブジェクトに設定しようとしていました...orz
以下の記事を見て、自分の凡ミスに気づきました。
From the error, it looks like you're not instantiating prefabs before you give them their parents. The error basically means that you can't change the parent of a non-instantiated prefab.
まさにこの人、ずばり言い当ててますね。