2015-07-03 5 views
2

Я делаю многопользовательскую игру, и я пытаюсь создать экземпляр нового объекта на клиенте. Объект должен контролироваться одним игроком.Владение клиентом 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, а затем он был создан везде, но клиент не может его контролировать. Однако сервер может управлять им.

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

Я попытался найти его, но ничего не смог найти.

Спасибо!

ответ

1

Я обнаружил, что это пришедшее в Unity 5.2, список текущих ноты беты-релизе это как особенность: «Networking: Добавлена ​​поддержке на стороне клиента для не-игровых объектов. "

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

0

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

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