How to sync SetActive at NetworkServer.Spawn() ?

Hi there,

I am currently testing around with UNet.
Allthough I got a lot of small things working, I am still having problems with other (most likely) small things :slight_smile:

I don’t want the third child of my room-object to be enabled under certain circumstances.
The code below is cut to the minimum, not regarding these conditions.


[Command] void CmdProvideNewRoom(Transform room, Vector3 pos)
{
		Transform tempRoom = (Transform)Instantiate (room, pos, Quaternion.identity);
		NetworkServer.Spawn (tempRoom.gameObject);
		tempRoom.transform.GetChild(3).gameObject.SetActive(false);
}

The 3rd child is disabled on the Serverclient (is that a thing?), but not on the Client(-client). I already tried to swap the last two lines, result is the same.

It is probably something stupid and obvious, but still - I don’t get it.

Help? :slight_smile:

I managed to fix it myself.

As expected, it was an obvious error. All I needed to do was to add an ClientRPC function and call it inside that Command.

The Code looks like this:

[Command] void CmdProvideNewRoom(Transform room, Vector3 pos,)
{
	Transform tempRoom = (Transform)Instantiate (room, pos, Quaternion.identity);

	NetworkServer.Spawn (tempRoom.gameObject);
	tempRoom.transform.GetChild(3).gameObject.SetActive(false);
	RpcSetActivePortals(tempRoom);

}
[ClientRpc] void RpcSetActivePortals(Transform room)
{
	room.GetChild (2).gameObject.SetActive (false);
}