我正在尝试在一个简单的多人游戏上发送数据,在此示例中使用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
(发送的数据是对手选择的卡。服务器是右侧的窗口)
答案 0 :(得分:1)
我想我通过添加!isLocalPlayer检查来修复了它
[ClientRpc]
public void Rpcsenddata(int i)
{
if (!isLocalPlayer) {
g.ehandSelected = i;
}
}