在客户端/服务器之间轻松发送数据

时间:2018-09-30 17:43:41

标签: unity3d server client multiplayer

我正在尝试在一个简单的多人游戏上发送数据,在此示例中使用Var1和Var2。应该发送Var1,并将其作为Var2存储在另一个用户的实例中。

除了我认为服务器正在向自身发送数据并覆盖其接收的数据外,我的代码可以正常工作,因为如果我加载客户端并初始化/发送数据,服务器就会看到它。然后,如果我转到服务器并初始化/发送数据,客户端将看到它。但是,如果我回到客户端并发送数据,服务器将不再看到它。就像服务器同时充当客户端和服务器一样。我在某处做错了吗?

public class mouseController : NetworkBehaviour
{
    GameLoop g;
void Start()
{
    GameObject thePlayer = GameObject.Find("Main Camera");
    g = thePlayer.GetComponent<GameLoop>(); 
}
void Update()
{

    if (!isLocalPlayer)
    {
        return;
    }

    if (isServer)
    {
        if (g.var1 > 0)
        {
            Rpcsenddata(g.var1);
        }
    }
    else
    { 
        if (g.var1 > 0)
        {
            Cmdsenddata(g.var1);
        }
    }
 }
    [Command]
    void Cmdsenddata(int i)
    {
        g.var2 = i;
    }
    [ClientRpc]
    public void Rpcsenddata(int i)
    {
        g.var2 = i;
    }
}

https://gyazo.com/b77e2ce35ec5f4d47147894c9430da03

(发送的数据是对手选择的卡。服务器是右侧的窗口)

1 个答案:

答案 0 :(得分:1)

我想我通过添加!isLocalPlayer检查来修复了它

[ClientRpc]
public void Rpcsenddata(int i)
{
    if (!isLocalPlayer) {  
        g.ehandSelected = i;
    }
}