客户端错误时调用了RPC函数RpcClienteRecibio

时间:2018-06-27 18:38:20

标签: c# unity3d unity3d-unet

我正在尝试从服务器向客户端发送一个简单的字符串,反之亦然,但是即使我在服务器上调用该函数,也会出现此错误,但我不知道我的代码有什么问题,我不知道不知道我使用的是Unet的过时版本还是什么版本,但是目前我不知道该怎么办。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class Client : MonoBehaviour
{
    void OnGUI()
    {
    Clase clase = new Clase();
    clase.Servidor();
    clase.Cliente();
}
}
public class Clase
{
public string IP = "127.0.0.1", RespuestaCliente, RespuestaServidor;
public int Port = 4444;

public void Servidor()
{
    if (Network.peerType == NetworkPeerType.Disconnected)
    {
        if (GUI.Button(new Rect(100, 125, 100, 25), "Start Server"))
        {
            bool useNat = !Network.HavePublicAddress();
            Network.InitializeServer(20, Port, useNat);
        }
    }
    else
    {
        if (Network.peerType == NetworkPeerType.Server)
        {
            GUI.Label(new Rect(100, 100, 100, 25), "Server");
            if (GUI.Button(new Rect(100, 125, 100, 25), "Mandar Mensaje"))
            {

                    GameObject go1 = new GameObject();
                    MensajesServidor msg1 = go1.AddComponent<MensajesServidor>();
                if (Network.isServer)
                {
                    msg1.RpcClienteRecibio("Este es un mensaje del servidor");
                }
                else
                {
                    Debug.Log("Estas intentando mandar información de manera erronea");
                }

            }
            GUI.Label(new Rect(100, 150, 100, 25), "Connections " + Network.connections.Length);
            GUI.Label(new Rect(100, 175, 600, 25), "Mensaje del Cliente: " + RespuestaServidor);
            if (GUI.Button(new Rect(100, 200, 100, 25), "Logout"))
            {
                Network.Disconnect(250);
            }
        }
    }
}

public void Cliente()
{
    if (Network.peerType == NetworkPeerType.Disconnected)
    {
        if (GUI.Button(new Rect(100, 100, 100, 25), "Start Client"))
        {
            Network.Connect(IP, Port);
        }
    }
    else
    {
        if (Network.peerType == NetworkPeerType.Client)
        {
            GUI.Label(new Rect(100, 100, 100, 25), "Client");
            if (GUI.Button(new Rect(100, 125, 100, 25), "Mandar Mensaje"))
            {
                GameObject go2 = new GameObject();
                MensajesCliente msg2 = go2.AddComponent<MensajesCliente>();
                if (Network.isClient)
                {
                    msg2.CmdMensajeDeCliente("Este es un mensaje del Cliente");
                }
                else
                {
                    Debug.Log("Estas intentando mandar información de manera erronea");
                }
            }
            GUI.Label(new Rect(100, 175, 600, 25), "Mensaje del Servidor: " + RespuestaCliente);
            if (GUI.Button(new Rect(100, 150, 100, 25), "Logout"))
            {
                Network.Disconnect(250);
            }
        }
    }
}

}
public class MensajesCliente : NetworkBehaviour
{

//Mensaje del Cliente
[Command]
public void CmdMensajeDeCliente(string mensaje)
{
    ServidorRecibio(mensaje);
}

public void ServidorRecibio(string Mensaje2)
{
    Clase cliente = new Clase();
    cliente.RespuestaServidor = Mensaje2;
}
}

public class MensajesServidor : NetworkBehaviour
{
//Mensaje del Servidor
[ClientRpc]
public void RpcClienteRecibio(string Mensaje2)
{

    MensajeDeServidor(Mensaje2);
}

public void MensajeDeServidor(string mensaje)
{

    Clase servidor = new Clase();
    servidor.RespuestaCliente = mensaje;

}
}

0 个答案:

没有答案