Question by
NamkyunKim · Aug 02, 2021 at 08:59 AM ·
networkingcharacterspawnclient
MLAPI Client Character Spawning Problem
I try to spawn "Ch03_nonPBR" as a HOST Character, and "Ch22_nonPBR" as a CLIENT Character. With codes below, succeeded spawn host character, but, "Ch03_nonPBR" character is spawned instead of "Ch22_nonPBR" as client character. I can not find any problems or ideas to solve this problem. Please help me to solve this. Thanks.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MLAPI;
using MLAPI.Spawning;
using MLAPI.Transports.UNET;
public class MenuScript : MonoBehaviour
{
public GameObject menuPanel;
public string ipAddress = "127.0.0.1";
UNetTransport transport;
private string playerClassHost;
private string playerClassClient;
public void Host()
{
playerClassHost = "Ch03_nonPBR";
ulong prefabHash = NetworkSpawnManager.GetPrefabHashFromGenerator(playerClassHost);
NetworkManager.Singleton.ConnectionApprovalCallback += ApprovalCheck;
NetworkManager.Singleton.StartHost(GetRandomSpawn(), Quaternion.identity, true, prefabHash, null);
menuPanel.SetActive(false);
}
private void ApprovalCheck(byte[] connectionData, ulong clientID, NetworkManager.ConnectionApprovedDelegate callback)
{
Debug.Log("ApprovalCheck()");
playerClassClient = System.Text.Encoding.ASCII.GetString(connectionData);
ulong prefabHash = NetworkSpawnManager.GetPrefabHashFromGenerator(playerClassClient);
callback(true, prefabHash, true, GetRandomSpawn(), Quaternion.identity);
}
public void Join()
{
Debug.Log("Join()");
transport = NetworkManager.Singleton.GetComponent<UNetTransport>();
transport.ConnectAddress = ipAddress;
playerClassClient = "Ch22_nonPBR";
NetworkManager.Singleton.NetworkConfig.ConnectionData = System.Text.Encoding.ASCII.GetBytes(playerClassClient);
NetworkManager.Singleton.StartClient();
menuPanel.SetActive(false);
}
public Vector3 GetRandomSpawn()
{
float x = Random.Range(-10f, 10f);
float y = Random.Range(0, 10f);
float z = Random.Range(-10f, 10f);
return new Vector3(x, y, z);
}
public void IPAddressChanged(string newAddress)
{
this.ipAddress = newAddress;
}
}
Comment
Your answer
Follow this Question
Related Questions
Networking - Host can spawn objects but client cant 0 Answers
Networking - How do i spawn an object with client authority? 1 Answer
Unet NetworkServer.spawn, correcting my workflow: Found no behaviour for incoming Command 1 Answer
Spawning Dynamically Created Object (Network) 1 Answer
Problem with instantiating and declaring objects in Netcode on client 0 Answers