下面的代码在播放器上,成功更新了用于该播放器的几种材料的颜色。这在游戏中被调用以在生成后更改颜色,并再次调用以将玩家更改回原始颜色。
[Command]
public void CmdHandlePlayerColorChange(Color newColor)
{
foreach (MeshRenderer mr in meshes)
{
currColor = newColor;
mr.material.color = currColor;
}
}
但是,其他客户端不会拾取颜色变化(颜色保持与生成时设置的相同)。我尝试了 Command/ClientRpc(如下),但这导致另一个客户端崩溃。
[ClientRpc]
void RpcPlayerColorChange(Color newColor)
{
foreach (MeshRenderer mr in meshes)
{
currColor = newColor;
mr.material.color = currColor;
}
}
[Command]
public void CmdHandlePlayerColorChange(Color newColor)
{
RpcPlayerColorChange(newColor);
}
我感谢任何让其他客户接受颜色变化的建议。