我正在学习Unity中的联网。我对如何从客户端向服务器发送消息或事件感到困惑。我已经有了这些脚本,可以成功地将客户端连接到服务器。
这是我的服务器脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class ServerNetwork : MonoBehaviour {
void Start()
{
SetupServer();
}
// Create a server and listen on a port
public void SetupServer()
{
NetworkServer.Listen(4444);
NetworkServer.RegisterHandler(MsgType.Connect, OnClientConnected);
Debug.Log("Server is running");
}
void OnClientConnected(NetworkMessage netMsg)
{
Debug.Log("Client connected");
Debug.Log(netMsg.msgType);
}
}
这是我的客户端脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class ClientNetwork : MonoBehaviour {
NetworkClient myClient;
public bool isClientConnected = false;
void Start()
{
SetupClient();
}
// Create a client and connect to the server port
public void SetupClient()
{
myClient = new NetworkClient();
myClient.RegisterHandler(MsgType.Connect, OnConnected);
myClient.Connect("127.0.0.1", 4444);
isClientConnected = true;
}
// client function
public void OnConnected(NetworkMessage netMsg)
{
Debug.Log("Connected to server");
}
}
服务器脚本附加到ServerScene上的“ NetworkManager”对象上
客户端脚本已附加到ClientScene上的“ NetworkManager”对象上
我仅构建了ClientScene作为客户端运行,并在编辑器中运行ServerScene
有了这些脚本,我已经可以将客户端连接到服务器了。由此,如何从客户端到服务器进行通信?
这里的目的是每秒将实时分数从客户端发送到服务器。
谢谢
答案 0 :(得分:0)
您必须使用[SyncVars]
属性。简而言之,它所做的是将变量从客户端同步到服务器。这是Unity3d
文档中的一个简单示例。
[SyncVar]
int health;
public void TakeDamage(int amount)
{
if (!isServer)
return;
health -= amount;
}
另一种方法是使用Unity3D的自定义WebSocket
实现。 GitHub上有一些非常好的。也请看看文档Unity3d