- Home /
[Command] and [ClientRpc] works, but not the way they're supposed to ?
Alright, guise. So I've been working with the new Unity Networking, and have managed to get a lobby functional, with players transferring customization data from their local game, to the lobby, and into the game "online" scene (which is networked, of course).
When they enter the game, the gameplayer prefab is instantiated. On it, is a script, which requests their visual model from the server, according to settings in the script.
At this point, from what I've gathered and SEEN WORK from Mike Geig's tutorials, it's supposed to go like this:
Player sends a [Command] to server, in which it INSTANTIATES the shipmodel LOCALLY, and then does NetworkServer.Spawn() on it. Only problem is, this doesn't work - the shipmodel isn't spawned on the network. (The gameplayer prefab has the LocalPlayer authority, the script that spawns the model is on this root object as well, so has access to the client authority, and should be able to send the command)
The way it's working NOW however, is the player sends a [Command], which triggers a [ClientRpc], which then distributes the shipmodel to all Clients on the Network. And I can sort of understand that logic.
But I don't get why it's then working for Mike ? This is both in his Unity networking live tutorials, as well as a video on YouTube on channel ByteCrafter I found. He only does the local instantiate with a [Command] and NetworkServer.Spawn() - and it works.
I'm thinking I'm doing something wrong, somewhere, which'll migrate into other bugs in the future, which I'd like to avoid. Please halp!
Answer by Clavus · Nov 16, 2016 at 10:55 AM
Did you add your prefab to the NetworkManager's list of spawnable prefabs?
Yes, and it also has a NetworkIdentity
Edit: It also has a NetworkTransform
Answer by Westland · Nov 22, 2016 at 01:20 PM
I think I solved it..
Came back one day, deleted everything, and wrote 3 lines, which apparently worked. I THINK it's because NetworkServer.Spawn() only works for INSTANTIATED objects - I was trying to get the object to instantiate/spawn from object pooling I'd done previously, which was a no-go. Ahh, mondays.