【问题标题】:How can I trigger OnPlayerConnected while using NetworkManager Unity?如何在使用 NetworkManager Unity 时触发 OnPlayerConnected?
【发布时间】:2017-04-28 18:05:29
【问题描述】:

我正在使用 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);
    }
}

【问题讨论】:

    标签: c# unity3d unity-networking


    【解决方案1】:

    OnPlayerConnected 函数甚至不是 UNet API 的一部分。它是 Unity 遗留网络 API 的一部分。应该是这样使用的:

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

    基本上,OnPlayerConnectedNetworkBehaviour 无关,因此除非您使用旧的 Unity 网络 API,否则它不会工作。

    以下是查看客户端何时与 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");
    }
    

    【讨论】:

    • 谢谢!! NetworkServer.Listen(9000);当然是端口号,不是吗?
    • 是的。它是您创建服务器的端口号。您可以使用机器上免费的任何号码。此外,当您不确定某事时,请查看文档。例如,NetworkServer.Listendoc.
    • @veereshkumbar 请用你的脚本创建一个新问题并描述什么不起作用
    • @Programmer 我正在按照您为 Unet 描述的方式进行操作,但无法正常工作。我想要的和 NurullahCelik 一样,我想知道客户端何时连接到服务器请帮忙
    • 就像我说的,这个问题已经解决了。用你的完整脚本创建一个新问题并解释什么不起作用。我会看看它。 OP 的问题是关于 OnPlayerConnected。您的问题是关于 OnConnected 不起作用。没有你的剧本,我帮不了你。
    猜你喜欢
    • 1970-01-01
    • 2019-11-04
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 2012-09-28
    相关资源
    最近更新 更多