NinaLabo

個人ゲーム開発者の技術メモ

【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 (prefabObjas 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.

まさにこの人、ずばり言い当ててますね。