Unity Networkserver.SpawnwithclientAuthroity не работает на хосте - PullRequest
0 голосов
/ 21 октября 2018

Я следовал руководству Youtube https://www.youtube.com/watch?v=afz2An4X0vw по использованию сетей Unity.Суть в том, чтобы объект с компонентом идентификатора сети порождал игрока, и для управления игроком нам нужно дать клиенту возможность порождать игрока над этим игроком.

Однако, сделав точно так же, какв видео каждый раз, когда я размещаю игру (с помощью HUD для единой сети), hasAuthority возвращает false, а не true только на хосте.

Возвращает true на всех других клиентах (как и должно быть).Мне кажется, что принимающий человек видит себя не клиентом, а только сервером, но этого не происходит в приведенном выше видео.

Как заставить проигрыватель хостинга возвращать значение true наhasAuthority, поскольку он отказывается сделать это с помощью приведенного ниже кода?

Сценарий объекта (создается при подключении клиента):

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

public class ThePlayerScript : NetworkBehaviour 
{

    public GameObject abigail;
    public GameObject abigailN;

    void Start () 
    {

        if(isLocalPlayer == false)
        {
            return;
        }
        CmdSpawnPlayer();
    }

    void Update () { }

    [Command]
    void CmdSpawnPlayer()
    {
        abigailN = Instantiate(abigail);
        NetworkServer.SpawnWithClientAuthority(abigailN, connectionToClient);
    }
}

Код на проигрывателе, который создаетсяgameobject:

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

public class Abigail : NetworkBehaviour 
{

    public GameObject mainCamera;
    Vector3 myLocation;
    Vector3 cameraView;

    // Use this for initialization
    void Start () 
    {
        if(hasAuthority == false)
        {
            Destroy(this);
            return;
        }
        mainCamera = GameObject.Find("Main Camera");
    }
}

(я удалил функцию Update в классе Abigail, так как она не имеет значения, так как не выполняется.)

1 Ответ

0 голосов
/ 27 октября 2018

Я обнаружил, что hasAuthority в этом случае будет возвращать только false в методе Start ().Если вы используете его в методе Update (), он вернёт true правильно, если вы назначите полномочия просто, как вы делаете это в «ThePlayerScipt» с:

NetworkServer.SpawnWithClientAuthority(abigailN, connectionToClient);

Надеюсь, что поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...