unity3d - 在客户端/服务器之间简单发送数据
问题描述
我试图在一个简单的多人游戏中发送数据,在这个例子中使用 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
(正在发送的数据是你对手选择的牌。服务器是右边的窗口)
解决方案
我想我通过添加一个 !isLocalPlayer 检查来修复它
[ClientRpc]
public void Rpcsenddata(int i)
{
if (!isLocalPlayer) {
g.ehandSelected = i;
}
}
推荐阅读
- asp.net-core - 在 Visual Studio 中调试 ASP.NET Core 应用程序
- python - 未找到 Mongod.service => 从空双端队列弹出 => 身份验证失败
- spring - 如何使用 RestTemplate 传递标头值?
- cookies - 为什么浏览器对我的表单显示不同的 CSRF 值
- mysql - 自动增量不是从多列主键的定义值开始
- amazon-lex - Amazon connect - 使用 Lex 机器人和 DTMF 获取客户输入块 - 处理用户输入重试
- python - 在 JSON 中分别选择对应字符串的记录
- javascript - 从反应自定义钩子返回 3 个数组
- javascript - S3 listObjects递归节点
- python - 如何切割连接到低于pyvista中某个值的点的顶点和面?