Я работаю над созданием единой сети между NetworkServer/NetworkClient. Я не использую NetworkManager
Вот часть моего кода client.
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++;
}
Вот часть моего кода server.
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.SendToAll(msgType, msg)
вместоNetworkServer.Spawn(obj)
, вообще не работает, даже если не было ошибки консоли. Каковы возможные причины этого? - Коды выше также имеют проблемы. Сообщение об ошибке colsole всякий раз, когда
NetworkServer.SendToAll(mspType, msg)
вызывает
ArgumentException: объект, который вы хотите создать, имеет значение null.
Я не понимаю, почему newPrefab.p имеет значение null... Любая идея для новичка в сетевом программировании?