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

时间:2016-06-23 17:16:00

标签: c# unity3d

我正在为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");
    }
}

1 个答案:

答案 0 :(得分:4)

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