Network.Destroy problem

Hello. I am having the problems with Network.Destroy(). it works fine, but when i am reconnecting to server, all destroyed objects are back. What do i have to do?

Well, the simple answer is: Don’t use buffered RPCs :wink: That means don’t use Network.Instantiate. Network.Instantiate sends a buffered RPC to all clients to create an object, Network.Destroy doesn’t. So each creation is “stored” so when a new client connects, all Network.Instantiate calls are executed, but since Network.Destroy calls aren’t buffered those objects doesn’t get destroyed. Beside this behaviour if you run your server for hours there will be thousands (or ten / hundred thousand) of Instantiate calls which get all send and executed on new players.

Network.Instantiate is easy to use, but it’s actually not well implemented since you can’t really remove the instantiate call except when you remove all buffered RPCs from a player or a group.

An alternative is to instantiate the objects “manually” and keep track of what objects are there on the server. When a new client connects you just send him the objects that are currently there.

There’s no “easy fix” for your problem.

There used to be an issue with networkView.RemoveRPCs(networkView.viewID) not removing the buffered Network.Instantiate call.

I do believe this has been fixed since 4.3.x (not sure which).

I currently use a simple:

public void RemoveFromGame() {
		Network.RemoveRPCs(this.networkView.viewID);
		Network.Destroy(this.gameObject);
}

And it seems to work fine, for players currently in the game and later joiners…