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 :)
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? :)
Answer by Dritter · Aug 22, 2015 at 11:39 PM
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);
}
Your answer
Follow this Question
Related Questions
[uNET] Network objects spawned not spawn in new clients 1 Answer
[UNET] Transform sycing problem,[UNET] TRANSFORMATION SYCING PROBLEMS 0 Answers
Problem with instantiating and declaring objects in Netcode on client 0 Answers
Cannot Spawn networkbehaviour gameobject 0 Answers
unet game spawning player at spawn points not working 0 Answers