Как я могу вызвать OnPlayerConnected при использовании NetworkManager Unity?

Я использую компонент UNet и NetworkManager. Я пытаюсь, когда игрок, подключенный к серверу, просто говорит мне: «Я подключен». Я должен сериализовать это. Я использую NetworkBehaviour, думаю, это может привести к сбою. Но как я могу сериализовать это?

Вот мой код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEngine.Networking;
public class MultiPlayerOyunKontrol : NetworkBehaviour
{

    void OnPlayerConnected(NetworkPlayer player)
    {
        Debug.Log("Player  baglandi"+this.transform.name);
    }
}

person NurullahCelik    schedule 28.04.2017    source источник


Ответы (1)


Функция OnPlayerConnected даже не является частью UNet API. Это часть устаревшего сетевого API Unity. Вот как нужно было использовать:

public class MultiPlayerOyunKontrol : MonoBehaviour 
{
    void OnPlayerConnected(NetworkPlayer player)
    {
        Debug.Log("Player  baglandi"+this.transform.name);
    }
}

нет

public class MultiPlayerOyunKontrol : NetworkBehaviour
{

    void OnPlayerConnected(NetworkPlayer player)
    {
        Debug.Log("Player  baglandi"+this.transform.name);
    }
}

По сути, OnPlayerConnected не имеет ничего общего с NetworkBehaviour, поэтому он не будет работать, если вы не используете старый сетевой API Unity, которым вы не являетесь.

Ниже приведен правильный способ увидеть, когда клиент подключен или отключен с помощью UNet:

void Start()
{
    NetworkServer.Listen(9000);
    NetworkServer.RegisterHandler(MsgType.Connect, OnConnected);
    NetworkServer.RegisterHandler(MsgType.Disconnect, OnDisconnected);
    NetworkServer.RegisterHandler(MsgType.Error, OnError);
}

public void OnConnected(NetworkMessage netMsg)
{
    Debug.Log("Client Connected");
}

public void OnDisconnected(NetworkMessage netMsg)
{
    Debug.Log("Disconnected");
}

public void OnError(NetworkMessage netMsg)
{
    Debug.Log("Error while connecting");
}
person Programmer    schedule 28.04.2017
comment
Спасибо!! NetworkServer.Listen(9000); это номер порта, конечно, не так ли? - person NurullahCelik; 28.04.2017
comment
Вы. Это номер порта, с которым вы создаете сервер. Вы можете использовать любой номер, который свободен на автомате. Кроме того, если вы не уверены в чем-то, проверьте документ. Например, NetworkServer.Listen док. - person Programmer; 28.04.2017
comment
@veereshkumbar Пожалуйста, создайте новый вопрос со своим сценарием и опишите, что не работает - person Programmer; 08.09.2017
comment
@Programmer Я следую тому, что вы описали для Unet, но не работает. То, что я хотел, такое же, как у NurullahCelik, я хочу знать, когда клиент подключается к серверу, пожалуйста, помогите - person veeresh kumbar; 08.09.2017
comment
Как я уже сказал, эта проблема решаема. Создайте новый вопрос с полным сценарием и объясните, что не работает. Я посмотрю на это. Проблема ОП была связана с OnPlayerConnected. Ваша проблема в том, что OnConnected не работает. Без вашего сценария я не смогу вам помочь. - person Programmer; 08.09.2017