Unity3d 在客户端/服务器之间简单地发送数据

Unity3d 在客户端/服务器之间简单地发送数据,unity3d,server,client,multiplayer,Unity3d,Server,Client,Multiplayer,我试图在一个简单的多人游戏中发送数据,在本例中使用Var1和Var2。Var1应作为Var2发送并存储在其他用户的实例中 我的代码有点有效,除了我认为服务器正在向自己发送数据并覆盖它接收的数据,因为如果我加载客户端并初始化/发送数据,服务器就会看到它。然后,如果我转到服务器并初始化/发送数据,客户机就会看到它。但是如果我返回到客户机并发送数据,服务器将不再看到它。这就像服务器同时充当客户机和服务器一样。我在什么地方做错了什么吗 public class mouseController : Net

我试图在一个简单的多人游戏中发送数据,在本例中使用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;
    }
}
公共类mouseController:网络行为
{
配子环g;
void Start()
{
GameObject thePlayer=GameObject.Find(“主摄像机”);
g=thePlayer.GetComponent();
}
无效更新()
{
如果(!isLocalPlayer)
{
返回;
}
如果(isServer)
{
如果(g.var1>0)
{
Rpcsenddata(g.var1);
}
}
其他的
{ 
如果(g.var1>0)
{
Cmdsenddata(g.var1);
}
}
}
[命令]
void Cmdsenddata(int i)
{
g、 var2=i;
}
[客户端RPC]
公共无效Rpcsenddata(int i)
{
g、 var2=i;
}
}


(发送的数据是对手选择的牌。服务器在右边的窗口)

我想我通过添加一个!isLocalPlayer检查

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