gpt4 book ai didi

c# - 如何在使用 NetworkManager Unity 时触发 OnPlayerConnected?

转载 作者:太空宇宙 更新时间:2023-11-03 19:47:27 25 4
gpt4 key购买 nike

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

最佳答案

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

关于c# - 如何在使用 NetworkManager Unity 时触发 OnPlayerConnected?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43676173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com