UNET: командная функция CmdSpawnPlayer вызывается на сервере

Я получил сообщение об ошибке от Unity, пока выполнял команду для сервера. Ошибка:

Командная функция CmdSpawnPlayer вызывается на сервере.

UnityEngine.Debug:LogError(Объект)

NetworkHandler:CallCmdSpawnPlayer(Boolean) NetworkHandler:OnEnable() (в Assets/Scripts/Managers/NetworkHandler.cs:69)

UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()

Настоящим код, который я использую:

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

public class NetworkHandler : NetworkBehaviour
{
    public Player NetworkPlayer
    {
        get;
        private set;
    }

    public bool HasInternet
    {
        get
        {
            return Network.HavePublicAddress();
        }
    }

    public bool IsConnectedToServer
    {
        get
        {
            return networkManager.isNetworkActive;
        }
    }

    [SerializeField]
    private NetworkManager networkManager;

    [SerializeField]
    private GameObject playerPrefab, spectatorPrefab;

    public void StartClient()
    {
        networkManager.StartClient();
    }

    public void StartServer()
    {
        networkManager.StartServer();
    }

    [Command]
    private void CmdSpawnPlayer(bool isSpectator)
    {
        SpawnPlayer(isSpectator);
    }

    private void SpawnPlayer(bool isSpectator)
    {
        if (isSpectator)
        {
            NetworkServer.SpawnWithClientAuthority(Instantiate(spectatorPrefab), connectionToClient);
        }
        else
        {
            NetworkServer.SpawnWithClientAuthority(Instantiate(playerPrefab), connectionToClient);
        }
    }

    private void OnEnable()
    {
        if (IsConnectedToServer)
        {
            CmdSpawnPlayer(true);
            Game.CameraHandler.InstantiateMode();
        }
    }
}

Используется версия Unity 5.3.4f1.

Я надеюсь, что вы можете помочь мне решить эту проблему.

Скиттлуйер


person Skittluier    schedule 02.05.2016    source источник


Ответы (1)


Хорошо, ничего страшного. Кажется, я вызвал CmdSpawnPlayer(true); с сервера вместо LocalClient.

person Skittluier    schedule 02.05.2016