2016-11-03 3 views
1

Привет, Я пытаюсь создать свою первую игру в единстве, которую я хочу знать в сети, но я вызвал проблему с появлением сетевых предвалов. Вот мой код:Unity3d HLAPI, Unet, узнаваемая сеть

using UnityEngine; 
using System.Collections; 
using UnityEngine.Networking; 
public class Builder : NetworkBehaviour { 


    public GameObject preview; 
    public Transform currentPreview; 
    bool isPreviewing = false; 
    GameObject buildingPreview; 
    private NetworkIdentity networkId; 

    // Use this for initialization 
    void Start() 
    { 
     networkId = GetComponent<NetworkIdentity>(); 
    } 

    // Update is called once per frame 

    void ViewPreview() 
    { 
     buildingPreview = Instantiate(preview, transform.position, transform.rotation) as GameObject; 
     currentPreview = buildingPreview.transform; 
     isPreviewing = true; 
    } 
    void Update() 
    { 
     CmdBuild(); 
    } 

    void CmdBuild() 
    { 
     if (networkId.isLocalPlayer) 
     { 

     } 
     else 
     { return; } 
     if (Input.GetKeyDown(KeyCode.E)) 
     { 
      if (!isPreviewing) 
       ViewPreview(); 
      else 
      { 
       Destroy(buildingPreview); 
       isPreviewing = false; 
      } 
     } 
     if (isPreviewing) 
     { 
      Preview(); 
     } 
    } 

    [Command] 
    void CmdSpawnBuilding() 
    { 
     GameObject buildingPlaced = Instantiate(preview, currentPreview.position, currentPreview.rotation) as GameObject; 
     NetworkServer.Spawn(buildingPlaced); 
    } 

    void Preview() 
    { 
     currentPreview.position = transform.position + transform.forward * 3f; 
     currentPreview.rotation = transform.rotation; 
     if (Input.GetButtonDown("Fire1")) 
     { 
      CmdSpawnBuilding(); 
      isPreviewing = false; 
     } 
    } 

} 

компилятор говорит, что нет никаких проблем, но в единстве я получил такую ​​ошибку: «ошибка UNetWeaver: Script Builder использует [Command] CmdSpawnBuilding но не NetworkBehaviour UnityEngine.Debug:. LogError (Object) «Мой код работает отлично, без« [Command] »линии despite, это не известно сети. Кроме того, я знаю, что это немного испортилось, но я пытался понять, что случилось, и да, немного испорченный код.

+0

Возможный дубликат [Unity3d Unet мультиплеера - только хост-сервер может размещать здания сети известно] (http://stackoverflow.com/questions/40413680/Unity3D-Unet-мультиплеер только-сервер-хост-кан-топонимических здания-сети осведомленные) – Seoner

ответ

2

Ваш класс должен наследовать от NetworkBehaviour, как это:

public class Builder : NetworkBehaviour