I feel like this is a bug.
Basically I have two game objects, one at position -7,0,0 and one at 7,0,0
These two have a script on them that creates a Tile class script, which in turn creates a GameObject and sets the parent to the first object.
(tiles is an array of Tile, but when testing t was 0 and not in any kind of loop. SetSprite alone causes no issues. It is only when SetParent is called. SetParent is the last thing called.)
When the parent is set, the parent objects are moved on screen to the centre, but retain their positions. This means they are still -7,0,0 and 7,0,0 but they occupy the same space on screen.
They have no parents of their own, they are just at different positions while in the same position. I have to move them to -14,0,0 and 14,0,0 to get them back to where they should be. Their positions are completely independent of other objects in the game and I can’t see why.