unity3d - 用于跨服务器和客户端同步变量的 RPC 和命令调用或网络消息?
问题描述
我目前正在制作一个 Unity 多人游戏,它依赖于服务器和单个客户端之间的变量同步。我已经能够使用 [SyncVar] 将来自服务器的变量与客户端同步,但反之则不行。问题是,我没有在游戏中生成的玩家预制件。我还能进行命令和 RPC 调用吗?我在下面尝试了这段代码,当我玩游戏时它最终没有工作。网络消息会更适合我的情况吗?
bool officeBought = false;
void Update () {
if (!isServer)
{
CmdSendBuildingBought(officeBought);
}
}
[Command]
public void CmdSendBuildingBought(bool buildingBought)
{
buildingBought = true;
}
解决方案
正如 derHugo 所说,您需要在游戏中至少实例化一个 PlayerObject,但是:
如果您不想要它,您不必使用它,但您至少需要在场景中实例化一个以将“权限”分配给您想要进行 de CMD/RPC 调用的对象。
有关 Unet Authority 的更多信息,请点击此处: https ://docs.unity3d.com/Manual/UNetAuthority.html
还让我建议我对这个特定问题做出的另一个答案,因为我认为这将是您的下一步: 非玩家对象的权限转移问题
推荐阅读
- matlab - 是否有可能在增加时期数的同时降低准确性?
- r - 查找多个国家的匹配指标,使用 R 中的 OECD 软件包提取数据
- python - 栅格上的双线性插值以创建每日栅格文件
- azure - 如何使用 Azure CDN 规则引擎重写 URL 以删除 Azure 静态网站上的 .html 扩展名?
- laravel - 使用 laravel 查询生成器仅显示最新记录
- reactjs - 如何在不使用元掩码或雾的情况下将本地私有 geth 节点连接到网页?
- python - 使用 Pandas 访问字典
- discord - 使用 node-cron 为我的不和谐机器人运行计划提醒,遇到了一些问题
- azure-active-directory - 从 ADB2C 中的自定义策略返回简单的字符串声明
- java - 在模拟程序中更改不同对象时如何更新 SceneBuilder GUI?