2017-01-12 2 views
0

Я пытаюсь переключить сцену по сети, и я хочу, чтобы каждый игрок локально загружал сцену Async, чтобы каждый мог получить экран загрузки. Я борюсь с вызовами Command и RPC. После смены сцены я хотел бы возродить нового игрока и связать его с клиентом.Respawn Player on Scene Change

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); 
} 

Все, что я пытался привело к коммутатору сцены, но ни один из игроков инстанцированы, как (нм = NetworkManager) nm.OnServerAddPlayer() и создать экземпляр тогда икра его через сервер. Помощь была бы очень признательна, заранее спасибо

ответ

0

Возможно, вам нужен статический игровой игрок с DontDestroyOnLoad (DDOL)? В основном то, что вы делаете:

1) Создайте сцену и поставить его первым в игре порядка сборки (так игра первой загрузки в него)

2) Создать пустой GameObject с GameManager сценарием , В Start() установите метод DontDestroyOnLoad.

3) В вашем сценарии, загрузите «первый» сцены (главное меню или заставки экрана или любой другой)

Это сделает объект вы положили ваш DDOL-скрипт, чтобы остаться даже между изменениями сцены, так вы можете обрабатывать экраны загрузки и икру игроков и т. д. в этом игровом объекте.

+0

В принципе, я хочу знать, как я могу вручную вручную создать сборщик файлов в Network Manager. Мне нужно, чтобы клиент загрузил сцену локально и попросил сервер повторно воспроизвести его игрока, которого вы знаете? – Ay0m3