Полномочия клиента Unity UNet

Я делаю многопользовательскую игру и пытаюсь создать новый объект на клиенте. Объект должен контролироваться только этим игроком.

Я попробовал это, просто создав экземпляр на клиенте, а затем создав его:

public class Player : NetworkBehaviour
{
    [SerializeField]
    private Card _testCard;

    void Update()
    {
        if (!isLocalPlayer) return;

        if (Input.GetKeyDown(KeyCode.Space))
        {
            RaycastHit hit;
            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
            {
                var card = Instantiate(_testCard);
                card.transform.position = hit.point;
                card.Name = "Test";
                NetworkServer.Spawn(card.gameObject);
                //or call this from a command, shown below
            }
        }
    }

    /*[Command]
    void CmdPlayTestCard(string name, Vector3 position)
    {
        var card = Instantiate(_testCard);
        card.transform.position = position;
        card.Name = name;
        NetworkServer.Spawn(card.gameObject);
    }*/
}

Это порождает объект на клиенте, и он может им управлять, но не порождает на сервере.

Я также сделал то же самое в Command, и затем он создается везде, но клиент не может его контролировать. Однако сервер может контролировать это.

Каков правильный способ сделать это? Создавать объект, которым должен управлять один из игроков, а не сервер?

Я пробовал гуглить, но ничего не нашел.

Спасибо!


person The Oddler    schedule 03.07.2015    source источник


Ответы (2)


Я обнаружил, что это появится в Unity 5.2, в примечаниях к выпуску текущей бета-версии это указано как функция: «Сеть: добавлена ​​поддержка прав доступа на стороне клиента для объектов, не являющихся игроками».

Так что это будет в сентябре для всех.

person The Oddler    schedule 24.08.2015

Oddler, я не знаю ответа, но есть сообщество на irc.freenode.net в канале #unity3d-unet, которое могло бы!

Кроме того, некоторые ресурсы и фрагменты кода собираются здесь: https://goo.gl/UmBBpM.

person Arun Mikael Mehta    schedule 03.07.2015