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

Unity 5 uNet - нужна помощь[РЕШЕНО]

СообщениеДобавлено: 27 ноя 2016, 20:04
NeroXT
Добрый день. Появилась необходимость перейти на WebGL, в которой я так понял поддерживается только новая uNet, поэтому поможете олдфагу с некоторыми вопросами? (popcorn1)
1. Как получить калбаки при подключении/отключении от сервера от NetworkManager?
2. Что пришло взамениу RPC? Знаю что есть аттрибуты Command, Server, Client, ServerCallback, ClientCallback,ClientRPC и др., но как поступить в таких случаях:
а)Нужно отправить данные серверу, с RPC реализовывал так:
Синтаксис:
Используется csharp
networkView.RPC("SendToServer",RPCMode.Server,myData)

б)Сервер должен отправлять данные клиентам, включая тех, которые подключаться намного позже отправки(т.е. сохраняя в буфер)
Синтаксис:
Используется csharp
networkView.RPC("SendToClients",RPCMode.OthersBuffered,myData)

в)Отправить сообщение (в чате напрмер) всем
Синтаксис:
Используется csharp
networkView.RPC("SendToAll",RPCMode.All,myData)

Прошу любой помощи. :ymhug:

Re: Unity 5 uNet - нужна помощь

СообщениеДобавлено: 28 ноя 2016, 08:38
IDoNotExist
NeroXT писал(а):Появилась необходимость перейти на WebGL, в которой я так понял поддерживается только новая uNet

Поняли не правильно, в WebGL используется протокол Websocket а сеть можно использовать любую, главное чтобы она его поддерживала, тот же фотон вполне себе поддерживает.

Re: Unity 5 uNet - нужна помощь

СообщениеДобавлено: 28 ноя 2016, 16:43
NeroXT
IDoNotExist писал(а):
NeroXT писал(а):Появилась необходимость перейти на WebGL, в которой я так понял поддерживается только новая uNet

Поняли не правильно, в WebGL используется протокол Websocket а сеть можно использовать любую, главное чтобы она его поддерживала, тот же фотон вполне себе поддерживает.

Да, но писать на старом Network в новом Unity неохото, поэтому хотелось бы узнать как реализовать все с uNet.

Re: Unity 5 uNet - нужна помощь

СообщениеДобавлено: 28 ноя 2016, 20:36
NeroXT
Ок, в общем пришлось разобраться на англоязычных форумах.
1. Для создания каллбаков пересоздаем NetworkManager и переопределяем функции OnServerConnected и т.д.
Синтаксис:
Используется csharp
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
//Скрипт для перехвата всяческих серверных функций
public class OwnNetManager : NetworkManager {

        public override void OnServerReady(NetworkConnection conn)
        {
                base.OnServerReady(conn);
        }
        public override void OnClientConnect(NetworkConnection conn)
        {
                base.OnClientConnect(conn);
        }
        public override void OnServerDisconnect(NetworkConnection conn)
        {
                base.OnServerDisconnect(conn);
        }
        public override void OnClientDisconnect(NetworkConnection conn)
        {
        }
        public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
        {
                base.OnServerAddPlayer(conn, playerControllerId);
        }
}
 



2. Придется отправлять сначала серверу а через него клиентам.
Синтаксис:
Используется csharp
static string messages = "";
void SendMessage(){
   CmdSendText(input.text);
   input.text = "";
}
[Command]
void CmdSendText(string s){
   messages += s;
   RpcSendToAll(s);
}
[ClientRpc]
void RpcSenToAll(string s){
   messages += s;
}
 

Для буферизации просто, сохраняем данные на сервере и отправляем тем, кто подключился.