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

C# 如何使用NetworkManager为所有客户端同步场景加载,c#,unity3d,C#,Unity3d,我正在为iOS创建一个2D游戏。我的游戏使用主机和客户端的方法,在局域网中进行两人对战。 主机在加载下一个场景后等待客户端。问题是两个玩家的场景加载没有同步。场景比另一个场景开始得早。我想等待所有玩家加载场景,然后再进行其他工作 我的NetworkManager未分配联机和脱机场景。没有PlayerRefab也是因为它将被动态添加。我正在使用ServerChangeScene()。 我对Unity和人际网络还比较陌生,所以非常感谢您的帮助 public override void OnServe

我正在为iOS创建一个2D游戏。我的游戏使用主机和客户端的方法,在局域网中进行两人对战。 主机在加载下一个场景后等待客户端。问题是两个玩家的场景加载没有同步。场景比另一个场景开始得早。我想等待所有玩家加载场景,然后再进行其他工作

我的NetworkManager未分配联机和脱机场景。没有PlayerRefab也是因为它将被动态添加。我正在使用ServerChangeScene()。 我对Unity和人际网络还比较陌生,所以非常感谢您的帮助

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

    print ("OnServerConnect");

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

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

我认为这应该是解决方案,但我也希望其他人会有更好的解决方案。