Hi, I am trying to custom spawn a player in the game by instantiating the player prefab and calling SpawnAsPlayerObject(). I read this has to be done in the server code so I call a ServerRpc function to perform this action.
However, despite all my efforts the ServerRpc function is not getting run. I even set RequireOwnership = false on the function.
This function is in a class that derives from NetworkBehavior. The class is attached to an object in my scene so it is created at runtime before it’s called.
Here is the code. Any clues what I am doing wrong?
public class ServerManager : NetworkBehaviour
{
public GameObject PlayerPrefab { get; set; }
[ServerRpc(RequireOwnership = false)]
public void SpawnPlayerServerRpc(ServerRpcParams serverRpcParams = default)
{
Debug.Log("SpawnPlayerServerRpc");
ulong clientId = serverRpcParams.Receive.SenderClientId;
GameObject newPlayer = (GameObject)Instantiate(this.PlayerPrefab);
NetworkObject networkObject = newPlayer.GetComponent<NetworkObject>();
newPlayer.SetActive(true);
networkObject.SpawnAsPlayerObject(clientId, true);
}
public void SpawnPlayer()
{
Debug.Log("SpawnPlayer");
SpawnPlayerServerRpc();
}
}
Thank you,
–Mike