如何使用NetworkManager同步所有客户端的场景加载

kre*_*edj 5 c# unity-game-engine

我正在为iOS创建2D游戏.我的游戏使用主机和客户端方法为两个玩家与局域网中的游戏.主机在加载下一个场景后等待客户端.问题是两个玩家的场景加载都没有同步.场景比另一个更早开始.我想等待所有玩家在任何其他工作之前加载场景.

我的NetworkManager没有分配在线和离线场景.没有playerPrefab也因为它会动态添加.我正在使用ServerChangeScene().我是Unity和网络的新手,所以任何帮助都会受到赞赏.

public override void OnServerConnect (NetworkConnection conn)
{
    base.OnServerConnect (conn);

    print ("OnServerConnect");

    //not localclient(host)
    if (client != null && client.connection != conn) {
        ServerChangeScene ("PlayScene");
    }
}
Run Code Online (Sandbox Code Playgroud)

kre*_*edj 4

好吧,由于没有答案,我使用自定义消息处理了这个问题。我制作了一个加载屏幕,异步加载“PlayScene”并将其allowSceneActivation 设置为 false。当客户端调用 OnClientSceneChanged() 时,他将向服务器发送一条消息,表明场景加载完成。服务器将循环遍历所有客户端以检查是否所有客户端都已完成场景加载,并回复所有客户端现在已准备好激活场景。