You can reparent widgets just fine, provided you are doing so from one panel to another. You can't randomly unparent widgets and leave them in the middle of nowhere. All widgets need a panel on a parent object somewhere. Also, after changing the parent, call NGUITools.MarkParentAsChanged(objectYouReparented);