Parent of RectTransform is being set with parent property. の警告対策

Unity5.5f3 にて uGUI を使用していると以下の警告が出た。


Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can prevent common UI scaling issues.



[原因]
uGUI のパーツは「Transform」ではなく「RectTransform」をコンポーネントに持っている。

それゆえ、普段のように

uguiObject.transform.parent = newParentObj;

とかしてしまうと「transform」で parent を決めるな!

RectTransform使え! と怒られるのである。




[対策]

警告の通り、

RectTransform を取得した上で「SetParent」メソッド+第二引数に「false」を設定して解決。

RectTransform rt = uguiObj.GetComponent();
if( rt )
rt.SetParent( newParentObj, false );