0

我正在尝试通过网络切换场景,我希望每个玩家都在本地异步加载场景,以便每个人都可以获得加载屏幕。我正在为命令和 RPC 调用而苦苦挣扎。场景更改后,我想重生一个新玩家并将其与客户端相关联。

public void changeLevel(string name)
{
    CmdChangeLevel(name);
    //nm.ServerChangeScene(name); -> This doesnt change the scene Async
}

void changeScene(string name)
{
    SceneManager.LoadScene(name);

    //Stuff to re-Instantiate the player
}

[Command]
void CmdChangeLevel(string name)
{
    SceneManager.LoadScene(name);
    RpcChangeLevel(name);
}

[ClientRpc]
void RpcChangeLevel(string name)
{
    changeScene(name);
}

我尝试的一切都导致了场景切换,但没有实例化玩家,例如 (nm = networkManager) nm.OnServerAddPlayer() 并实例化它,然后通过服务器生成它。帮助将不胜感激,在此先感谢

4

1 回答 1

0

也许您需要的是带有DontDestroyOnLoad (DDOL) 的静态游戏管理器?基本上你要做的是:

1)创建一个场景并将其放在您的游戏构建顺序中(因此游戏首先加载到其中)

2) 使用 GameManager 脚本创建一个空的 GameObject。在 Start() 中放置 DontDestroyOnLoad 方法。

3)在您的脚本中,加载您的“第一个”场景(主菜单或启动屏幕或其他)

这将使您放置 DDOL 脚本的对象即使在场景更改之间也保持不变,因此您可以处理该游戏对象中的加载屏幕和玩家生成等。

于 2017-01-13T12:01:39.007 回答