I am trying to load PlayerPrefabs manually. My game starts in a MainMenu scene, first player hosts, server starts, a new scene loads, player prefab spawns in and everything seems to work fine. When I join as a client, I can’t get the second player prefab to spawn, but I do connect and see the 1st player moving around. I am running this script in an object placed in the scene.
public class GameSceneManager : NetworkBehaviour
{
private void Start()
{
// get spawn points
_spawnPoints = GameObject.FindGameObjectsWithTag("playerSpawn");
SpawnPlayerServerRpc();
}
private Transform GetSpawnPoint()
{
if (_spawnPoints.Length == 0) { return null; }
if (NetworkManager.Singleton.IsHost)
{
return _spawnPoints[0].transform;
}
else
{
ulong id = NetworkManager.Singleton.LocalClientId;
int count = (int)(id - 1);
return _spawnPoints[count].transform;
}
}
[ServerRpc]
public void SpawnPlayerServerRpc(ulong clientId)
{
Transform spawn = GetSpawnPoint();
GameObject go = Instantiate(_playerPrefab, spawn.position, spawn.rotation);
go.GetComponent<NetworkObject>().SpawnAsPlayerObject(OwnerClientId);
ulong objectId = go.GetComponent<NetworkObject>().NetworkObjectId;
SpawnClientRpc(objectId);
}
[ClientRpc]
private void SpawnClientRpc(ulong objectId)
{
NetworkObject player = NetworkSpawnManager.SpawnedObjects[objectId];
}
I get this error:
Trying to destroy object 0 but it doesn’t seem to exist anymore!
UnityEngine.Debug:LogWarning (object)
MLAPI.Spawning.NetworkSpawnManager:OnDestroyObject (ulong,bool) (at Library/PackageCache/com.unity.multiplayer.mlapi@0.1.0/Runtime/Spawning/NetworkSpawnManager.cs:660)
MLAPI.NetworkObject:OnDestroy () (at Library/PackageCache/com.unity.multiplayer.mlapi@0.1.0/Runtime/Core/NetworkObject.cs:366)