我正在尝试使用 SyncVar,但我不完全理解我做错了什么,如果我做错了。情况如下:
我有两个公共 SyncVar:redFunds 和 blueFunds 以及两个本地“旧”版本进行比较
我使用 Cmd_UpdateXxx 在 Start 中启动 SyncVar,它有效
我有两个按钮,每个 SyncVar 一个
在更新中,我比较了 SyncVar 与 oldXxxFunds。如果命中我会在现场显示
当我运行代码时,它确实在两个播放器(红色和蓝色)的场景上显示了正确的数字,但是在查看“公共”SyncVar 时,这并没有完全反映在编辑器中。当按下红色按钮时,它在编辑器中只反映在红色播放器上,而不是蓝色播放器上。
有人可以向我解释我在这里做错了什么吗?...如果我做错了什么。我不应该也看到编辑器中的更改吗?
[SyncVar] public int redFunds;
[SyncVar] public int blueFunds;
public int oldRedFunds;
public int oldBlueFunds;
private void Start ()
{
if (!isLocalPlayer)
return;
Cmd_UpdateRed (10);
Cmd_UpdateBlue (20);
}
// Button
void btn_Red ()
{
if (!hasAuthority)
return;
Cmd_UpdateRed (10000);
}
void btn_Blue ()
{
if (!hasAuthority)
return;
Cmd_UpdateBlue (20000);
}
[Command]
void Cmd_UpdateRed (int _value)
{
redFunds = _value;
}
[Command]
void Cmd_UpdateBlue (int _value)
{
blueFunds = _value;
}
void Update ()
{
if (redFunds != oldRedFunds)
{
txt_RedTotalFunds = GameObject.Find ("txt_RedTotalFunds").GetComponent<Text> ();
txt_RedTotalFunds.text = "$" + redFunds;
oldRedFunds = redFunds;
}
if (blueFunds != oldBlueFunds)
{
txt_BlueTotalFunds = GameObject.Find ("txt_BlueTotalFunds").GetComponent<Text> ();
txt_BlueTotalFunds.text = "$" + blueFunds;
oldBlueFunds = blueFunds;
}
}