Страница 1 из 1

Не работает вызов RPC Unity 4.6

СообщениеДобавлено: 27 мар 2017, 23:47
ASD
Через Network.Instantiate инстансятся игроки. Все подключаются, все у всех видны. На каждом есть скрипт и NetworkView. Задача - при нажатии кнопки в интерфейсе игрока который является сервером у всех началась игра. Делаю так

Синтаксис:
Используется csharp
        [RPC]
        void StartGame()
        {
                isGameStart = true;
        }

        void OnGUI()
        {
                if (Network.isServer && !isGameStart && networkView.isMine)
                {
                        if(GUI.Button(new Rect(240, 160, 80, 25), "Start Game"))
                        {
                                networkView.RPC("StartGame", RPCMode.All);
                       }
                }
                if (Network.isClient && !isGameStart && networkView.isMine)
                {
                        GUI.Label(new Rect(240, 160, 80, 25), "Waiting for players...");
                }
        }


При этом у игрока сервера игра начинается, а у игроков-клиентов нет, будто не происходит вызов функции StartGame. Клиенты все в этот момент подключены, игроки видны друг у друга на экранах, но переменная isGameStart у клиентов не становится true. В чём может быть проблема?

Re: Не работает вызов RPC Unity 4.6

СообщениеДобавлено: 28 мар 2017, 10:09
Tolking
[Comand]
CmdStartGame(){
RpcStartGame();
}

[RPC]
RpcStartGame(){
isGameStart = true;
}

GuiStartGame(){
CmdStartGame();
}

Re: Не работает вызов RPC Unity 4.6

СообщениеДобавлено: 28 мар 2017, 22:47
ASD
Насколько я понял, это применимо для юнити выше 5-й версии. В 4.6 [Command] нету

Re: Не работает вызов RPC Unity 4.6

СообщениеДобавлено: 29 мар 2017, 16:38
ASD
Разобрался. Оказывается вызывать RPC надо из того же скрипта или объекта где создавался сервер или коннект. Если же вызывать из объекта который создался сетевым инстансом - то не работает