Я следовал руководству 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, так как она не имеет значения, так как не выполняется.)