首页 > 解决方案 > 用于跨服务器和客户端同步变量的 RPC 和命令调用或网络消息?

问题描述

我目前正在制作一个 Unity 多人游戏,它依赖于服务器和单个客户端之间的变量同步。我已经能够使用 [SyncVar] 将来自服务器的变量与客户端同步,但反之则不行。问题是,我没有在游戏中生成的玩家预制件。我还能进行命令和 RPC 调用吗?我在下面尝试了这段代码,当我玩游戏时它最终没有工作。网络消息会更适合我的情况吗?

bool officeBought = false;

void Update () {
    if (!isServer)
    {
        CmdSendBuildingBought(officeBought);
    }
}

[Command]
public void CmdSendBuildingBought(bool buildingBought)
{

    buildingBought = true;
}

标签: unity3dnetworking

解决方案


正如 derHugo 所说,您需要在游戏中至少实例化一个 PlayerObject,但是:

如果您不想要它,您不必使用它,但您至少需要在场景中实例化一个以将“权限”分配给您想要进行 de CMD/RPC 调用的对象。

有关 Unet Authority 的更多信息,请点击此处: https ://docs.unity3d.com/Manual/UNetAuthority.html

还让我建议我对这个特定问题做出的另一个答案,因为我认为这将是您的下一步: 非玩家对象的权限转移问题


推荐阅读