NetworkServer/NetworkClient 간의 단일화 네트워킹 작업을하고 있습니다. NetworkManager를 사용하지 않습니다.GameObject를 전송하는 Unity NetworkServer/NetworkClient
다음은 클라이언트 코드의 일부입니다.
public void StartPaintClient()
{
client = new NetworkClient();
client.Connect(host, port);
client.RegisterHandler(NetworkMeta.PaintPrefabId, OnMouseButtonDown);
}
public void OnMouseButtonDown(NetworkMessage netMsg)
{
var receivedPrefab = netMsg.ReadMessage<NetworkMeta.PaintPrefab>();
GameObject prefab = Instantiate(receivedPrefab.p);
prefab.name = "" + index++;
}
여기는 서버 코드의 일부입니다.
public GameObject prefab;
public void StartPaintServer()
{
if (NetworkServer.active)
{
Debug.Log("Server is already acitve");
return;
}
NetworkServer.Listen(port);
}
void Update()
{
if(Input.GetMouseButtonUp(0))
{
prefab = Instantiate(Line_Prefab);
var newPrefab = new NetworkMeta.PaintPrefab();
newPrefab.p = prefab;
NetworkServer.SendToAll(NetworkMeta.PaintPrefabId, newPrefab);
}
}
두 가지 질문이 있습니다.
- 내가 대신
NetworkServer.Spawn(obj)
의NetworkServer.SendToAll(msgType, msg)
이 전혀 콘솔 오류가 없었다하더라도 일을하지 않았다되어 사용 이유. 그 이유는 무엇입니까? - 위의 코드도 문제가 있습니다. colsole 오류 MSG 때마다
NetworkServer.SendToAll(mspType, msg)
는
ArgumentException이 발생합니다 인스턴스화 할 개체가 null입니다.
나는 newPrefab.p 네트워크 프로그래밍 초보자를위한 모든 아이디어 널 .... 왜 이해하지?
클라이언트 코드와 서버 코드를 구분하려면 어떻게해야합니까? 그 조립식은 어디에 보관해야합니까? 양쪽에서 (그것은 좋은 것처럼 보이지 않는다)? –