场景变化的重生球员

时间:2017-01-12 20:12:55

标签: c# unity3d unet

我试图通过网络切换场景,我希望每个玩家在本地加载场景Async,这样每个人都可以获得加载屏幕。我正在努力进行Command和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()并实例化它然后通过服务器生成它。非常感谢帮助,提前谢谢

1 个答案:

答案 0 :(得分:0)

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

  

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

     

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

     

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

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

相关问题