system
1
NetworkLobbyManager spawns a temporary player into the play scene, which I want to replace with user chosen player prefab.
temporary player has a following script
public class ReplacePlayer_Net : NetworkBehaviour
{
public int chosenCharacter;
public GameObject[] characters;
public void ReplacePlayerButton()
{
chosenCharacter = //whatever character user choses
CmdReplacePlayer(characters[chosenCharacter]);
// is called after 1 sec because calling it on start gives "This Mesh Collider requires the mesh to be marked as readable in order to be usable with the given transform." error
}
[Command]
public void CmdReplacePlayer(GameObject newPrefab)
{
NetworkConnection conn = this.connectionToClient;
GameObject NewPlayer = Instantiate(newPrefab, transform.position, transform.rotation);
NetworkServer.Spawn(NewPlayer);
NetworkServer.Destroy(gameObject);
NetworkServer.ReplacePlayerForConnection(conn, NewPlayer, 0);
if (Debug.isDebugBuild)
{
Debug.Log("Player Replaced");
}
}
it does destroy old prefabs on both client and host side but new prefabs are only visible on host side, client side stays empty.
how do I call the change on client side ?
system
2
I’m retarded. I spent 2 days on this. turns out I forgot to add prefabs to registered spawnable prefabs.