Search Issue Tracker
Fixed in 2018.1.X
Fixed in 5.6.X, 2017.1.X, 2017.2.X, 2017.3.X
Votes
36
Found in
5.6.3p3
Issue ID
953068
Regression
Yes
Game object transform.position is incorrect after Object.Instantiate after Awake() function call
How to reproduce:
1. Download attached project files and open "test" Scene
2. Enter Play mode. Notice now the world-space location in Awake is printing the prefab location as opposed to the location passed to instantiate:
Parent(Clone): World-space location: (-10.0, 20.0, 0.0)
Child: World-space location: (-10.0, 20.0, 0.0)
Not reproduced:
1. Open project with Unity 5.6.3p2 and hit "play". Notice that "World-space location" printed in SpawnLog.Awake now outputs location as expected according to SpawnPrefab-script:
Parent(Clone): World-space location: (50.0, 100.0, 0.0)
Child: World-space location: (50.0, 100.0, 0.0)
Actual result: Instantiate(Prefab, new Vector3(50, 100, 0), Quaternion.identity) applies world position incorect in Debug.Log(transform.postion) after Awake() function call
Reproduced with: 5.6.3p4, 2017.1.1p3, 2017.2.0f1, 2017.3.0b2
Not reproduced with: 5.6.3p2, 2017.1f1, 2017.2.0b8, 2017.3.0a5
Regression since: 5.6.3p3
---------------------------------------------------------------------------------------
Fixed in 2017.1.2p3, 2017.2.0p1, 2017.3.0b5
-
Damjan-Mozetic
Dec 27, 2017 07:19
NOT resolved. Still happening to me in 2017.3.0f3. Unless I put a delay in, setting a transform position on an Instantiate-d game object does not work.
-
DoctorMobius
Dec 24, 2017 17:58
Same behaviour using 2017.3.0f3 and trying to add buttons to a canvas using:
GameObject button = Instantiate (buttonPrefab, canvas.transform.position + buttonOffset, Quaternion.identity, canvas.transform);However doing the same thing over two lines works:
GameObject button = Instantiate (buttonPrefab, canvas.transform);
button.transform.position = canvas.transform.position + buttonOffset; -
TurgutHakki
Dec 22, 2017 09:44
NOT fixed. Still happening in 2017.3.0f3
-
shadiradio
Dec 14, 2017 18:07
@manutoo - Definitely, that's what I was intending to do. However I spoke too soon - this is also broken over the network, so NetworkServer.Spawn(...) won't spawn remotely registered prefabs in the fixed server-location, but in the broken local client prefab location. Rather than refactor all of my instantiation code, I'll wait for Unity's fix. Apparently it may be in an update tomorrow (5.6.5) according to a developer on the forums.
-
manutoo
Dec 14, 2017 12:56
@shadiradio,
possibly, you can backup all your prefab values at game start (or on 1st instantiation), and then restore the values on game exit (or simpler, only reset all prefab positions & rotations to 0 on game exit), so version control won't get too ugly... :) -
shadiradio
Dec 13, 2017 23:41
@manutoo - Thanks again, it does work. It's pretty ugly with version control (as every single prefab is touched/modified), especially since I use a prefab object pooler for a lot of FX. But at least it's playable again.
-
shadiradio
Dec 13, 2017 20:37
@manutoo - Much appreciated! I wasn't aware that you can modify the prefab transform information before instantiating and they would be passed through. I'll give it a shot today - thanks.
-
manutoo
Dec 11, 2017 14:25
@shadiradioI,
there's an easy workaround ; change from :
GameObject Obj = GameObject.Instantiate(m_FxPrefab, Pos, Rot) as GameObject;
to :
m_FxPrefab.transform.position = Pos;
m_FxPrefab.transform.rotation = Rot;
GameObject Obj = GameObject.Instantiate(m_FxPrefab) as GameObject;If for some reason, you need the original prefab position & rotation somewhere else, then backup them & either use the saved values or restore them after the call to Instantiate().
-
DimaDDM
Dec 07, 2017 21:09
Have this problem in 2017.2.0f3
-
shadiradio
Dec 07, 2017 18:40
Unfortunately, it's not in the patch notes for 5.6.4p4. I'm not sure how many weeks (months?) I'll have to delay my upcoming patch. Unity - if you think I'm being annoying, try making a game without knowing object positions.
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Prefab override popup is cropped/positioned incorrectly when more than one display is used and a higher display Scale is set
- Opening a dropdown on a small screen results in its instant closing when mouse cursor is pressed where the dropdown is going to be opened
- Only "ArgumentNullException: Value cannot be null" is displayed instead of all the actual errors when opening a project with numerous compilation errors
- MultiColumnListView and MultiColumnTreeView do not change selection on first input when focus is set by code
- SerializedProperty.DataEquals is returning false when SerializedProperty.EqualContents return true
karl_jones
Jan 12, 2018
The fix for this will be available in the following patches:
5.6.5p1
2017.1.2p3
2017.2.0p1
2017.3.0b5