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

Scene Management

-

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

  1. 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

Comments (49)

  1. 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.

  2. 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;

  3. TurgutHakki

    Dec 22, 2017 09:44

    NOT fixed. Still happening in 2017.3.0f3

  4. 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.

  5. 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... :)

  6. 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.

  7. 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.

  8. 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().

  9. DimaDDM

    Dec 07, 2017 21:09

    Have this problem in 2017.2.0f3

  10. 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

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.