- Home /
Can I delay the instantiation of the network objects?
I want to connect to a server, get from it a data that specifies the name of the scene to load, load this scene and after all that, load the objects instantiated on the server. But the problem is that when I try to load a scene (after getting the string containing the name of it) the objects had already been loaded and the scene changing destroys them. I don't wanna use the DontDestroyOnLoad() method because I don't want them to appear before a specific scene is loaded.
Can I delay the instantiation of the network objects?
You could use some workaround. OnNetworkInstantiate, have instantiated objects pass their reference to some data structure and then disable themselves. Aftere scene is loaded, enable all object held in the structure. This should do the trick.
Answer by asafsitner · Jan 04, 2015 at 07:11 AM
Don't use Network.Instantiate, and instead write your own RPC-based implementation.
You can then queue the instantiation requests and defer the execution until after the scene has finished loading.
This way you also have a 'flood control' mechanism that you can later use to prevent frame-rate drops when instantiating many objects at once (you can add the frame delay to your lag compensation logic so it's unnoticeable).
By the way, this will also help you with displaying a progress bar showing the percent of objects created. :)
You can then queue the instantiation requests and defer the execution until after the scene has finished loading.
Is it done using network groups?
No. Use Network.is$$anonymous$$essageQueueRunning. Set it to false when you get the RPC to load another scene and make extra sure you set it to true when the client finished loading.
Your answer
Follow this Question
Related Questions
Photon PUN, HTC Vive camera prefab over network instantiation 0 Answers
How can I get "!networkView.isMine" to function properly? 1 Answer
Client to client Serialization 1 Answer
How do I separate network views? 0 Answers
What is Send rate? 1 Answer