我试图通过网络切换场景,我希望每个玩家在本地加载场景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()并实例化它然后通过服务器生成它。非常感谢帮助,提前谢谢
答案 0 :(得分:0)
也许你需要的是一个带有DontDestroyOnLoad(DDOL)的静态游戏管理器? 基本上你做的是:
1)创建一个场景并将其放在游戏构建顺序中(因此游戏首先加载到它中)
2)使用GameManager脚本创建一个空的GameObject。在Start()中放入DontDestroyOnLoad方法。
3)在您的脚本中,加载“第一个”场景(主菜单或启动画面或其他)
这将使您放置DDOL脚本的对象保持在场景更改之间,因此您可以处理该游戏对象中的加载屏幕和播放器生成等。