|
I've got a networked situation where a projectile is being spawned on a server, then the client is told to spawn it as well. The server spawns it with the correct orientation, but on the client it spawns with a bad rotation. I think this is due to the projectile's Start() method being called before the transform data being passed into Instantiate() is copied to the projectile. (the network code path kicks off during a Start() call on a component of the projectile, so the uninitialized transform would be coming across potentially). I can't seem to find any information on order of operation within Instantiate, does anyone know when the transform (rotation more specifically) is copied to the new data object vs. when Start is called?
(comments are locked)
|
|
Start is called much later. OnEnabled and Awake are called inside Instantiate. You can add Debugs to see the order.
(comments are locked)
|

If you want to be sure about this, add an yield delay inside Start - but use a boolean flag to hold periodic functions like Update:
var delay = true; // nobody moves while delay is on! function Start(){ yield; // wait for one frame... yield WaitForSeconds(0.5); // or wait for 0.5 seconds // your Start code goes here delay = false; // delay finished } function Update(){ if (delay) return; // do nothing until delay finished // Update code goes here }I would say it is better to find out than to defend against the unknown.